14 use fckit_configuration_module,     
only: fckit_configuration
 
   19 use oops_variables_mod
 
   34 #define LISTED_TYPE fv3jedi_state 
   37 #include "oops/util/linkedList_i.f" 
   49 #include "oops/util/linkedList_c.f" 
   54            bind(c,name=
'fv3jedi_state_create_f90')
 
   57 integer(c_int), 
intent(inout)  :: c_key_self
 
   58 integer(c_int), 
intent(in)     :: c_key_geom
 
   59 type(c_ptr), 
value, 
intent(in) :: c_vars
 
   63 type(oops_variables)         :: vars
 
   70 vars = oops_variables(c_vars)
 
   71 call self%create(geom, vars)
 
   80 integer(c_int), 
intent(inout) :: c_key_self
 
   96 integer(c_int), 
intent(in) :: c_key_self
 
  109 integer(c_int), 
intent(in) :: c_key_self
 
  110 integer(c_int), 
intent(in) :: c_key_rhs
 
  117 call self%copy(other)
 
  126 integer(c_int), 
intent(in) :: c_key_self
 
  127 real(c_double), 
intent(in) :: c_zz
 
  128 integer(c_int), 
intent(in) :: c_key_rhs
 
  138 call self%accumul(zz,rhs)
 
  145            bind(c,name=
'fv3jedi_state_add_incr_f90')
 
  148 integer(c_int), 
intent(in) :: c_key_geom
 
  149 integer(c_int), 
intent(in) :: c_key_self
 
  150 integer(c_int), 
intent(in) :: c_key_rhs
 
  159 call self%add_incr(geom,rhs%fields)
 
  166            bind(c,name=
'fv3jedi_state_change_resol_f90')
 
  169 integer(c_int), 
intent(in) :: c_key_state
 
  170 integer(c_int), 
intent(in) :: c_key_geom
 
  171 integer(c_int), 
intent(in) :: c_key_rhs
 
  172 integer(c_int), 
intent(in) :: c_key_geom_rhs
 
  182 call self%change_resol(geom, other, geom_other)
 
  189            bind(c,name=
'fv3jedi_state_read_file_f90')
 
  192 integer(c_int), 
intent(in) :: c_key_state
 
  193 type(c_ptr), 
intent(in)    :: c_conf
 
  194 type(c_ptr), 
intent(inout) :: c_dt
 
  195 integer(c_int), 
intent(in) :: c_key_geom
 
  198 type(datetime) :: fdate
 
  200 type(fckit_configuration) :: f_conf
 
  204 call c_f_datetime(c_dt, fdate)
 
  205 f_conf = fckit_configuration(c_conf)
 
  207 call self%read(geom, f_conf, fdate)
 
  214            bind(c,name=
'fv3jedi_state_analytic_init_f90')
 
  217 integer(c_int), 
intent(in) :: c_key_state
 
  218 integer(c_int), 
intent(in) :: c_key_geom
 
  219 type(c_ptr), 
intent(in)    :: c_conf
 
  220 type(c_ptr), 
intent(inout) :: c_dt
 
  224 type(datetime) :: fdate
 
  225 type(fckit_configuration) :: f_conf
 
  229 call c_f_datetime(c_dt, fdate)
 
  230 f_conf = fckit_configuration(c_conf)
 
  231 call self%analytic_IC(geom, f_conf, fdate)
 
  238            bind(c,name=
'fv3jedi_state_write_file_f90')
 
  241 integer(c_int), 
intent(in) :: c_key_state
 
  242 type(c_ptr), 
intent(in) :: c_conf
 
  243 type(c_ptr), 
intent(in) :: c_dt
 
  244 integer(c_int), 
intent(in) :: c_key_geom
 
  247 type(datetime) :: fdate
 
  249 type(fckit_configuration) :: f_conf
 
  253 call c_f_datetime(c_dt, fdate)
 
  254 f_conf = fckit_configuration(c_conf)
 
  256 call self%write(geom, f_conf, fdate)
 
  265 integer(c_int), 
intent(in) :: c_key_state
 
  266 real(c_double), 
intent(inout) :: prms
 
  282            bind(c,name=
'fv3jedi_state_getnfieldsncube_f90')
 
  285 integer(c_int), 
intent(in)  :: c_key_self
 
  286 integer(c_int), 
intent(out) :: c_number_fields
 
  287 integer(c_int), 
intent(out) :: c_cube_size
 
  293 c_number_fields = self%nf
 
  294 c_cube_size = self%npx-1
 
  301            bind(c,name=
'fv3jedi_state_getminmaxrms_f90')
 
  304 integer(c_int),               
intent(in)    :: c_key_self
 
  305 integer(c_int),               
intent(in)    :: c_f_num
 
  306 integer(c_int),               
intent(in)    :: c_f_name_len
 
  307 character(len=1,kind=c_char), 
intent(inout) :: c_f_name(c_f_name_len)
 
  308 real(c_double),               
intent(inout) :: c_minmaxrms(3)
 
  311 character(len=field_clen) :: field_name
 
  316 call self%minmaxrms(c_f_num, field_name, c_minmaxrms)
 
  318 do n = 1,c_f_name_len
 
  319   c_f_name(n) = field_name(n:n)
 
  329 integer(c_int), 
intent(in) :: c_key_self
 
  330 integer(c_int), 
intent(inout) :: inc_size
 
  338   inc_size = inc_size + (self%fields(var)%iec-self%fields(var)%isc+1)*&
 
  339                         (self%fields(var)%jec-self%fields(var)%jsc+1)*&
 
  348            bind(c,name=
'fv3jedi_state_serialize_f90')
 
  353 integer(c_int),
intent(in) :: c_key_self
 
  354 integer(c_int),
intent(in) :: c_vsize
 
  355 real(c_double),
intent(out) :: c_vect_inc(c_vsize)
 
  361 call self%serialize(c_vsize,c_vect_inc)
 
  368            bind(c,name=
'fv3jedi_state_deserialize_f90')
 
  373 integer(c_int),
intent(in) :: c_key_self
 
  374 integer(c_int),
intent(in) :: c_vsize
 
  375 real(c_double),
intent(in) :: c_vect_inc(c_vsize)
 
  376 integer(c_int), 
intent(inout):: c_index
 
  383 call self%deserialize(c_vsize,c_vect_inc,c_index)