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)