10 use atlas_module,
only: atlas_fieldset, atlas_functionspace_pointcloud
11 use fckit_configuration_module,
only: fckit_configuration
12 use fckit_mpi_module,
only: fckit_mpi_comm
14 use oops_variables_mod,
only: oops_variables
25 #define LISTED_TYPE soca_geom
28 #include "oops/util/linkedList_i.f"
38 #include "oops/util/linkedList_c.f"
43 subroutine soca_geo_setup_c(c_key_self, c_conf, c_comm) bind(c,name='soca_geo_setup_f90')
44 integer(c_int),
intent(inout) :: c_key_self
45 type(c_ptr),
intent(in) :: c_conf
46 type(c_ptr),
value,
intent(in) :: c_comm
54 call self%init(fckit_configuration(c_conf), fckit_mpi_comm(c_comm) )
61 integer(c_int),
intent(in) :: c_key_self
62 type(c_ptr),
intent(in),
value :: c_afieldset
65 type(atlas_fieldset) :: afieldset
68 afieldset = atlas_fieldset(c_afieldset)
70 call self%set_atlas_lonlat(afieldset)
77 bind(c,name=
'soca_geo_set_atlas_functionspace_pointer_f90')
78 integer(c_int),
intent(in) :: c_key_self
79 type(c_ptr),
intent(in),
value :: c_afunctionspace
85 self%afunctionspace = atlas_functionspace_pointcloud(c_afunctionspace)
92 & bind(c,name=
'soca_geo_fill_atlas_fieldset_f90')
94 integer(c_int),
intent(in) :: c_key_self
95 type(c_ptr),
value,
intent(in) :: c_afieldset
98 type(atlas_fieldset) :: afieldset
101 afieldset = atlas_fieldset(c_afieldset)
103 call self%fill_atlas_fieldset(afieldset)
110 integer(c_int),
intent(inout) :: c_key_self
111 integer(c_int),
intent(in) :: c_key_other
119 call self%clone(other)
126 integer(c_int),
intent(inout) :: c_key_self
139 integer(c_int),
intent(inout) :: c_key_self
152 integer(c_int),
intent( in) :: c_key_self
153 integer(c_int),
intent(out) :: ist, iend, jst, jend
168 bind(c, name=
'soca_geo_get_num_levels_f90')
169 integer(c_int),
intent(in) :: c_key_self
170 type(c_ptr),
value,
intent(in) :: c_vars
171 integer(c_size_t),
intent(in) :: c_levels_size
172 integer(c_size_t),
intent(out) :: c_levels(c_levels_size)
175 type(oops_variables) :: vars
177 character(len=:),
allocatable :: field_name
181 vars = oops_variables(c_vars)
183 do i = 1,vars%nvars()
184 field_name = vars%variable(i)
185 field = self%fields_metadata%get(field_name)
186 select case(field%levels)
190 if (field_name == field%getval_name_surface)
then
193 c_levels(i) = self%nzo
196 call abor1_ftn(
'ERROR in c_soca_geo_get_num_levels, unknown "levels" '//field%levels)
C++ interfaces for soca_geom_mod::soca_geom.
subroutine soca_geo_get_num_levels_c(c_key_self, c_vars, c_levels_size, c_levels)
C++ interface to get number of levels for soca_geom.
subroutine soca_geo_set_atlas_functionspace_pointer_c(c_key_self, c_afunctionspace)
C++ interface to get atlas functionspace pointr from soca_geom_mod::soca_geom.
subroutine soca_geo_clone_c(c_key_self, c_key_other)
C++ interface for soca_geom_mod::soca_geom::clone()
subroutine soca_geo_delete_c(c_key_self)
C++ interface for soca_geom_mod::soca_geom::end()
subroutine soca_geo_start_end_c(c_key_self, ist, iend, jst, jend)
C++ interface to return begin and end of local geometry in soca_geom.
type(registry_t), public soca_geom_registry
Linked list interface - defines registry_t type.
subroutine soca_geo_gridgen_c(c_key_self)
C++ interface for soca_geom_mod::soca_geom::gridgen()
subroutine soca_geo_setup_c(c_key_self, c_conf, c_comm)
Linked list implementation.
subroutine soca_geo_set_atlas_lonlat_c(c_key_self, c_afieldset)
C++ interface for soca_geom_mod::soca_geom::set_atlas_lonlat()
subroutine soca_geo_fill_atlas_fieldset_c(c_key_self, c_afieldset)
C++ interface for soca_geom_mod::soca_geom::fill_atlas_fieldset()