14 use fckit_configuration_module,
only: fckit_configuration
17 use atlas_module,
only: atlas_fieldset
22 use oops_variables_mod
45 bind(c,name=
'fv3jedi_increment_create_f90')
48 integer(c_int),
intent(inout) :: c_key_self
49 integer(c_int),
intent(in) :: c_key_geom
50 type(c_ptr),
value,
intent(in) :: c_vars
54 type(oops_variables) :: vars
55 type(fckit_configuration) :: f_conf
62 vars = oops_variables(c_vars)
63 call self%create(geom, vars, .true.)
72 integer(c_int),
intent(inout) :: c_key_self
88 integer(c_int),
intent(in) :: c_key_self
101 integer(c_int),
intent(in) :: c_key_self
112 bind(c,name=
'fv3jedi_increment_dirac_f90')
115 integer(c_int),
intent(in) :: c_key_self
116 type(c_ptr),
intent(in) :: c_conf
117 integer(c_int),
intent(in) :: c_key_geom
123 call self%dirac(c_conf,geom)
132 integer(c_int),
intent(in) :: c_key_self
143 & bind(c,name=
'fv3jedi_increment_set_atlas_f90')
146 integer(c_int),
intent(in) :: c_key_self
147 integer(c_int),
intent(in) :: c_key_geom
148 type(c_ptr),
value,
intent(in) :: c_vars
149 type(c_ptr),
intent(in),
value :: c_afieldset
153 type(oops_variables) :: vars
154 type(atlas_fieldset) :: afieldset
158 vars = oops_variables(c_vars)
159 afieldset = atlas_fieldset(c_afieldset)
161 call self%set_atlas(geom, vars, afieldset)
168 & bind(c,name=
'fv3jedi_increment_to_atlas_f90')
171 integer(c_int),
intent(in) :: c_key_self
172 integer(c_int),
intent(in) :: c_key_geom
173 type(c_ptr),
value,
intent(in) :: c_vars
174 type(c_ptr),
intent(in),
value :: c_afieldset
178 type(oops_variables) :: vars
179 type(atlas_fieldset) :: afieldset
183 vars = oops_variables(c_vars)
184 afieldset = atlas_fieldset(c_afieldset)
186 call self%to_atlas(geom, vars, afieldset)
193 & bind(c,name=
'fv3jedi_increment_from_atlas_f90')
196 integer(c_int),
intent(in) :: c_key_self
197 integer(c_int),
intent(in) :: c_key_geom
198 type(c_ptr),
value,
intent(in) :: c_vars
199 type(c_ptr),
intent(in),
value :: c_afieldset
203 type(oops_variables) :: vars
204 type(atlas_fieldset) :: afieldset
208 vars = oops_variables(c_vars)
209 afieldset = atlas_fieldset(c_afieldset)
211 call self%from_atlas(geom, vars, afieldset)
220 integer(c_int),
intent(in) :: c_key_self
221 integer(c_int),
intent(in) :: c_key_rhs
228 call self%copy(other)
235 bind(c,name=
'fv3jedi_increment_self_add_f90')
238 integer(c_int),
intent(in) :: c_key_self
239 integer(c_int),
intent(in) :: c_key_rhs
246 call self%self_add(rhs)
253 bind(c,name=
'fv3jedi_increment_self_schur_f90')
256 integer(c_int),
intent(in) :: c_key_self
257 integer(c_int),
intent(in) :: c_key_rhs
264 call self%self_schur(rhs)
271 bind(c,name=
'fv3jedi_increment_self_sub_f90')
274 integer(c_int),
intent(in) :: c_key_self
275 integer(c_int),
intent(in) :: c_key_rhs
282 call self%self_sub(rhs)
289 bind(c,name=
'fv3jedi_increment_self_mul_f90')
292 integer(c_int),
intent(in) :: c_key_self
293 real(c_double),
intent(in) :: c_zz
300 call self%self_mul(zz)
307 bind(c,name=
'fv3jedi_increment_axpy_inc_f90')
310 integer(c_int),
intent(in) :: c_key_self
311 real(c_double),
intent(in) :: c_zz
312 integer(c_int),
intent(in) :: c_key_rhs
322 call self%accumul(zz,rhs)
329 bind(c,name=
'fv3jedi_increment_axpy_state_f90')
332 integer(c_int),
intent(in) :: c_key_self
333 real(c_double),
intent(in) :: c_zz
334 integer(c_int),
intent(in) :: c_key_rhs
344 call self%accumul(zz,rhs)
352 bind(c,name=
'fv3jedi_increment_dot_prod_f90')
355 integer(c_int),
intent(in) :: c_key_inc1, c_key_inc2
356 real(c_double),
intent(inout) :: c_prod
363 call self%dot_prod(inc2,zz)
372 bind(c,name=
'fv3jedi_increment_diff_incr_f90')
375 integer(c_int),
intent(in) :: c_key_lhs
376 integer(c_int),
intent(in) :: c_key_x1
377 integer(c_int),
intent(in) :: c_key_x2
378 integer(c_int),
intent(in) :: c_key_geom
390 call self%diff_incr(x1%fields,x2%fields,geom)
393 self%calendar_type = x1%calendar_type
394 self%date_init = x1%date_init
401 bind(c,name=
'fv3jedi_increment_change_resol_f90')
404 integer(c_int),
intent(in) :: c_key_inc
405 integer(c_int),
intent(in) :: c_key_geom
406 integer(c_int),
intent(in) :: c_key_rhs
407 integer(c_int),
intent(in) :: c_key_geom_rhs
417 call self%change_resol(geom, other, geom_other)
424 bind(c,name=
'fv3jedi_increment_read_file_f90')
427 integer(c_int),
intent(in) :: c_key_inc
428 type(c_ptr),
intent(in) :: c_conf
429 type(c_ptr),
intent(inout) :: c_dt
430 integer(c_int),
intent(in) :: c_key_geom
433 type(datetime) :: fdate
435 type(fckit_configuration) :: f_conf
439 call c_f_datetime(c_dt, fdate)
440 f_conf = fckit_configuration(c_conf)
441 call self%read(geom, f_conf, fdate)
448 bind(c,name=
'fv3jedi_increment_write_file_f90')
451 integer(c_int),
intent(in) :: c_key_inc
452 type(c_ptr),
intent(in) :: c_conf
453 type(c_ptr),
intent(in) :: c_dt
454 integer(c_int),
intent(in) :: c_key_geom
457 type(datetime) :: fdate
459 type(fckit_configuration) :: f_conf
463 call c_f_datetime(c_dt, fdate)
464 f_conf = fckit_configuration(c_conf)
465 call self%write(geom, f_conf, fdate)
474 integer(c_int),
intent(in) :: c_key_inc
475 real(c_double),
intent(inout) :: prms
493 integer(c_int),
intent(in) :: c_key_self
494 integer(c_int),
intent(inout) :: inc_size
502 inc_size = inc_size + (self%fields(var)%iec-self%fields(var)%isc+1)*&
503 (self%fields(var)%jec-self%fields(var)%jsc+1)*&
512 bind(c,name=
'fv3jedi_increment_serialize_f90')
517 integer(c_int),
intent(in) :: c_key_self
518 integer(c_int),
intent(in) :: c_vsize
519 real(c_double),
intent(out) :: c_vect_inc(c_vsize)
525 call self%serialize(c_vsize,c_vect_inc)
532 bind(c,name=
'fv3jedi_increment_deserialize_f90')
537 integer(c_int),
intent(in) :: c_key_self
538 integer(c_int),
intent(in) :: c_vsize
539 real(c_double),
intent(in) :: c_vect_inc(c_vsize)
540 integer(c_int),
intent(inout):: c_index
547 call self%deserialize(c_vsize,c_vect_inc,c_index)
555 bind(c,name=
'fv3jedi_increment_getpoint_f90')
560 integer(c_int),
intent(in) :: c_key_self
561 integer(c_int),
intent(in) :: c_key_iter
562 integer(c_int),
intent(in) :: values_len
563 real(c_double),
intent(inout) :: values(values_len)
571 call self%getpoint(iter, values)
578 bind(c,name=
'fv3jedi_increment_setpoint_f90')
583 integer(c_int),
intent(inout) :: c_key_self
584 integer(c_int),
intent(in) :: c_key_iter
585 integer(c_int),
intent(in) :: values_len
586 real(c_double),
intent(in) :: values(values_len)
594 call self%setpoint(iter, values)
601 bind(c,name=
'fv3jedi_increment_getnfieldsncube_f90')
604 integer(c_int),
intent(in) :: c_key_self
605 integer(c_int),
intent(out) :: c_number_fields
606 integer(c_int),
intent(out) :: c_cube_size
612 c_number_fields = self%nf
613 c_cube_size = self%npx-1
621 bind(c,name=
'fv3jedi_increment_getminmaxrms_f90')
624 integer(c_int),
intent(in) :: c_key_self
625 integer(c_int),
intent(in) :: c_f_num
626 integer(c_int),
intent(in) :: c_f_name_len
627 character(len=1,kind=c_char),
intent(inout) :: c_f_name(c_f_name_len)
628 real(c_double),
intent(inout) :: c_minmaxrms(3)
631 character(len=field_clen) :: field_name
636 call self%minmaxrms(c_f_num, field_name, c_minmaxrms)
638 do n = 1,c_f_name_len
639 c_f_name(n) = field_name(n:n)