SOCA
soca_getvalues.interface.F90
Go to the documentation of this file.
1 ! (C) Copyright 2020-2021 UCAR
2 !
3 ! This software is licensed under the terms of the Apache Licence Version 2.0
4 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
5 
6 ! ------------------------------------------------------------------------------
7 !> C++ interfaces for soca_getvalues_mod::soca_getvalues
9 
10 use datetime_mod, only: datetime, c_f_datetime
11 use iso_c_binding
12 use ufo_geovals_mod_c, only: ufo_geovals_registry
13 use ufo_geovals_mod, only: ufo_geovals
14 use ufo_locations_mod, only: ufo_locations
15 
16 ! soca modules
17 use soca_geom_mod, only: soca_geom
21 use soca_state_mod, only: soca_state
25 
26 implicit none
27 private
28 
29 
30 ! ------------------------------------------------------------------------------
31 contains
32 ! ------------------------------------------------------------------------------
33 
34 
35 ! ------------------------------------------------------------------------------
36 !> C++ interface for soca_getvalues_mod::soca_getvalues::create()
37 subroutine soca_getvalues_create_c(c_key_self, c_key_geom, c_locs) &
38  bind(c, name='soca_getvalues_create_f90')
39 integer(c_int), intent(inout) :: c_key_self !< Key to self
40 integer(c_int), intent(in) :: c_key_geom !< Key to geometry
41 type(c_ptr), value, intent(in) :: c_locs
42 
43 type(soca_getvalues), pointer :: self
44 type(soca_geom), pointer :: geom
45 type(ufo_locations) :: locs
46 
47 ! Create object
48 call soca_getvalues_registry%init()
49 call soca_getvalues_registry%add(c_key_self)
50 call soca_getvalues_registry%get(c_key_self, self)
51 
52 ! Others
53 call soca_geom_registry%get(c_key_geom, geom)
54 locs = ufo_locations(c_locs)
55 
56 ! Call method
57 call self%create(geom, locs)
58 
59 end subroutine soca_getvalues_create_c
60 
61 
62 ! --------------------------------------------------------------------------------------------------
63 !> C++ interface for soca_getvalues_mod::soca_getvalues::delete()
64 subroutine soca_getvalues_delete_c(c_key_self) bind (c, name='soca_getvalues_delete_f90')
65 integer(c_int), intent(inout) :: c_key_self !< Key to self
66 
67 type(soca_getvalues), pointer :: self
68 
69 ! Get object
70 call soca_getvalues_registry%get(c_key_self, self)
71 
72 ! Call method
73 call self%delete()
74 
75 ! Remove object
76 call soca_getvalues_registry%remove(c_key_self)
77 
78 end subroutine soca_getvalues_delete_c
79 
80 
81 ! --------------------------------------------------------------------------------------------------
82 !> C++ interface for soca_getvalues_mod::soca_getvalues::fill_geovals()
83 subroutine soca_getvalues_fill_geovals_c(c_key_self, c_key_geom, c_key_state, c_t1, c_t2, &
84  c_locs, c_key_geovals) &
85  bind(c, name='soca_getvalues_fill_geovals_f90')
86 
87 integer(c_int), intent(in) :: c_key_self
88 integer(c_int), intent(in) :: c_key_geom
89 integer(c_int), intent(in) :: c_key_state
90 type(c_ptr), value, intent(in) :: c_t1
91 type(c_ptr), value, intent(in) :: c_t2
92 type(c_ptr), value, intent(in) :: c_locs
93 integer(c_int), intent(in) :: c_key_geovals
94 
95 type(soca_getvalues), pointer :: self
96 type(soca_geom), pointer :: geom
97 type(soca_state), pointer :: state
98 type(datetime) :: t1
99 type(datetime) :: t2
100 type(ufo_locations) :: locs
101 type(ufo_geovals), pointer :: geovals
102 
103 ! Get objects
104 call soca_getvalues_registry%get(c_key_self, self)
105 call soca_geom_registry%get(c_key_geom, geom)
106 call soca_state_registry%get(c_key_state, state)
107 call c_f_datetime(c_t1, t1)
108 call c_f_datetime(c_t2, t2)
109 locs = ufo_locations(c_locs)
110 call ufo_geovals_registry%get(c_key_geovals, geovals)
111 
112 ! Call method
113 call self%fill_geovals(geom, state, t1, t2, locs, geovals)
114 
115 end subroutine soca_getvalues_fill_geovals_c
116 
117 
118 ! --------------------------------------------------------------------------------------------------
119 !> C++ interface for soca_getvalues_mod::soca_getvalues::fill_geovals()
120 subroutine soca_getvalues_fill_geovals_tl_c(c_key_self, c_key_geom, c_key_incr, c_t1, c_t2, &
121  c_locs, c_key_geovals) &
122  bind(c, name='soca_getvalues_fill_geovals_tl_f90')
123 
124 integer(c_int), intent(in) :: c_key_self
125 integer(c_int), intent(in) :: c_key_geom
126 integer(c_int), intent(in) :: c_key_incr
127 type(c_ptr), value, intent(in) :: c_t1
128 type(c_ptr), value, intent(in) :: c_t2
129 type(c_ptr), value, intent(in) :: c_locs
130 integer(c_int), intent(in) :: c_key_geovals
131 
132 type(soca_getvalues), pointer :: self
133 type(soca_geom), pointer :: geom
134 type(soca_increment), pointer :: incr
135 type(datetime) :: t1
136 type(datetime) :: t2
137 type(ufo_locations) :: locs
138 type(ufo_geovals), pointer :: geovals
139 
140 ! Get objects
141 call soca_getvalues_registry%get(c_key_self, self)
142 call soca_geom_registry%get(c_key_geom, geom)
143 call soca_increment_registry%get(c_key_incr, incr)
144 call c_f_datetime(c_t1, t1)
145 call c_f_datetime(c_t2, t2)
146 locs = ufo_locations(c_locs)
147 call ufo_geovals_registry%get(c_key_geovals, geovals)
148 
149 ! Call method
150 call self%fill_geovals(geom, incr, t1, t2, locs, geovals)
151 
153 
154 
155 ! --------------------------------------------------------------------------------------------------
156 !> C++ interface for soca_getvalues_mod::soca_getvalues::fill_geovals_ad()
157 subroutine soca_getvalues_fill_geovals_ad_c(c_key_self, c_key_geom, c_key_incr, c_t1, c_t2, &
158  c_locs, c_key_geovals) &
159  bind(c, name='soca_getvalues_fill_geovals_ad_f90')
160 
161 integer(c_int), intent(in) :: c_key_self
162 integer(c_int), intent(in) :: c_key_geom
163 integer(c_int), intent(in) :: c_key_incr
164 type(c_ptr), value, intent(in) :: c_t1
165 type(c_ptr), value, intent(in) :: c_t2
166 type(c_ptr), value, intent(in) :: c_locs
167 integer(c_int), intent(in) :: c_key_geovals
168 
169 type(soca_getvalues), pointer :: self
170 type(soca_geom), pointer :: geom
171 type(soca_increment), pointer :: incr
172 type(datetime) :: t1
173 type(datetime) :: t2
174 type(ufo_locations) :: locs
175 type(ufo_geovals), pointer :: geovals
176 
177 ! Get objects
178 call soca_getvalues_registry%get(c_key_self, self)
179 call soca_geom_registry%get(c_key_geom, geom)
180 call soca_increment_registry%get(c_key_incr, incr)
181 call c_f_datetime(c_t1, t1)
182 call c_f_datetime(c_t2, t2)
183 locs = ufo_locations(c_locs)
184 call ufo_geovals_registry%get(c_key_geovals, geovals)
185 
186 ! Call method
187 call self%fill_geovals_ad(geom, incr, t1, t2, locs, geovals)
188 
190 
191 end module soca_getvalues_mod_c
C++ interfaces for soca_geom_mod::soca_geom.
type(registry_t), public soca_geom_registry
Linked list interface - defines registry_t type.
Geometry module.
C++ interfaces for soca_getvalues_mod::soca_getvalues.
subroutine soca_getvalues_create_c(c_key_self, c_key_geom, c_locs)
C++ interface for soca_getvalues_mod::soca_getvalues::create()
subroutine soca_getvalues_delete_c(c_key_self)
C++ interface for soca_getvalues_mod::soca_getvalues::delete()
subroutine soca_getvalues_fill_geovals_tl_c(c_key_self, c_key_geom, c_key_incr, c_t1, c_t2, c_locs, c_key_geovals)
C++ interface for soca_getvalues_mod::soca_getvalues::fill_geovals()
subroutine soca_getvalues_fill_geovals_ad_c(c_key_self, c_key_geom, c_key_incr, c_t1, c_t2, c_locs, c_key_geovals)
C++ interface for soca_getvalues_mod::soca_getvalues::fill_geovals_ad()
subroutine soca_getvalues_fill_geovals_c(c_key_self, c_key_geom, c_key_state, c_t1, c_t2, c_locs, c_key_geovals)
C++ interface for soca_getvalues_mod::soca_getvalues::fill_geovals()
Getvalues module.
registry for soca_getvalues_mod::soca_getvalues instances for use in Fortran/C++ interface of soca_ge...
type(registry_t), public soca_getvalues_registry
Linked list interface - defines registry_t type.
Increment fields.
registry for soca_increment_mod::soca_increment instances for use in Fortran/C++ interface of soca_in...
type(registry_t), public soca_increment_registry
Linked list interface - defines registry_t type.
State fields.
registry for soca_state_mod::soca_state instances for use in Fortran/C++ interfaces of soca_state_mod...
type(registry_t), public soca_state_registry
Linked list interface - defines registry_t type.
Geometry data structure.
Interpolation between model and observation locations.