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)