10 use atlas_module, 
only: atlas_fieldset, atlas_functionspace_pointcloud
 
   13 use fckit_mpi_module,           
only: fckit_mpi_comm
 
   14 use fckit_configuration_module, 
only: fckit_configuration
 
   28 #define LISTED_TYPE fv3jedi_geom 
   31 #include "oops/util/linkedList_i.f" 
   43 #include "oops/util/linkedList_c.f" 
   51 type(c_ptr), 
intent(in)        :: c_conf
 
   52 type(c_ptr), 
value, 
intent(in) :: c_comm
 
   54 type(fckit_mpi_comm)        :: f_comm
 
   55 type(fckit_configuration)   :: f_conf
 
   59 f_conf = fckit_configuration(c_conf)
 
   60 f_comm = fckit_mpi_comm(c_comm)
 
   69                                bind(c, name=
'fv3jedi_geom_setup_f90')
 
   74 integer(c_int),     
intent(inout) :: c_key_self
 
   75 type(c_ptr),        
intent(in)    :: c_conf
 
   76 type(c_ptr), 
value, 
intent(in)    :: c_comm
 
   77 type(c_ptr), 
value, 
intent(in)    :: c_fields_meta
 
   80 type(fckit_configuration)   :: f_conf
 
   81 type(fckit_mpi_comm)        :: f_comm
 
   92 f_conf            = fckit_configuration(c_conf)
 
   93 f_comm            = fckit_mpi_comm(c_comm)
 
   98 call self%create(f_conf, f_comm, f_fields_metadata)
 
  108 integer(c_int),     
intent(inout) :: c_key_self
 
  109 integer(c_int),     
intent(in)    :: c_key_other
 
  110 type(c_ptr), 
value, 
intent(in)    :: c_fields_meta
 
  128 call self%clone(other, f_fields_metadata)
 
  138 integer(c_int), 
intent(inout) :: c_key_self
 
  161 integer(c_int), 
intent(in)    :: c_key_self
 
  162 integer(c_int), 
intent(inout) :: c_cube
 
  172 c_cube = self%npx - 1
 
  179                                            bind(c,name=
'fv3jedi_geom_set_atlas_lonlat_f90')
 
  184 integer(c_int), 
intent(in) :: c_key_self
 
  185 type(c_ptr), 
intent(in), 
value :: c_afieldset
 
  188 type(atlas_fieldset) :: afieldset
 
  196 afieldset = atlas_fieldset(c_afieldset)
 
  200 call self%set_atlas_lonlat(afieldset)
 
  207                                                           bind(c,name=
'fv3jedi_geom_set_atlas_functionspace_pointer_f90')
 
  209 integer(c_int), 
intent(in)     :: c_key_self
 
  210 type(c_ptr), 
intent(in), 
value :: c_afunctionspace
 
  220 self%afunctionspace = atlas_functionspace_pointcloud(c_afunctionspace)
 
  227                                               bind(c,name=
'fv3jedi_geom_fill_atlas_fieldset_f90')
 
  231 integer(c_int),     
intent(in) :: c_key_self
 
  232 type(c_ptr), 
value, 
intent(in) :: c_afieldset
 
  235 type(atlas_fieldset) :: afieldset
 
  240 afieldset = atlas_fieldset(c_afieldset)
 
  244 call self%fill_atlas_fieldset(afieldset)
 
  251                                     bind(c, name=
'fv3jedi_geom_start_end_f90')
 
  255 integer(c_int), 
intent( in) :: c_key_self
 
  256 integer(c_int), 
intent(out) :: ist, iend, jst, jend, npz
 
  275                                     bind(c, name=
'fv3jedi_geom_verticalCoord_f90')
 
  279 integer(c_int),    
intent( in) :: c_key_self
 
  280 integer(c_int),    
intent( in) :: npz
 
  281 real(c_double), 
intent( in) :: psurf
 
  282 real(c_double), 
intent(out) :: vc(npz)