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)