SOCA
soca_increment.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 !> C++ interfaces for soca_increment_mod::soca_increment
8 
9 use atlas_module, only: atlas_fieldset
10 use datetime_mod, only: datetime, c_f_datetime
11 use fckit_configuration_module, only: fckit_configuration
12 use iso_c_binding
13 use kinds, only: kind_real
14 use oops_variables_mod, only : oops_variables
15 
16 ! soca modules
20 use soca_geom_mod, only: soca_geom
23 use soca_state_mod, only : soca_state
25 
26 implicit none
27 private
28 
29 contains
30 
31 
32 ! ------------------------------------------------------------------------------
33 !> C++ interface for soca_increment_mod::soca_increment version of
34 !! soca_fields_mod::soca_fields::create()
35 subroutine soca_increment_create_c(c_key_self, c_key_geom, c_vars) bind(c,name='soca_increment_create_f90')
36  integer(c_int), intent(inout) :: c_key_self !< Handle to field
37  integer(c_int), intent(in) :: c_key_geom !< Geometry
38  type(c_ptr),value, intent(in) :: c_vars !< List of variables
39 
40  type(soca_increment),pointer :: self
41  type(soca_geom), pointer :: geom
42  type(oops_variables) :: vars
43 
44  call soca_geom_registry%get(c_key_geom, geom)
45  call soca_increment_registry%init()
46  call soca_increment_registry%add(c_key_self)
47  call soca_increment_registry%get(c_key_self,self)
48 
49  vars = oops_variables(c_vars)
50  call self%create(geom, vars)
51 
52 end subroutine soca_increment_create_c
53 
54 
55 ! ------------------------------------------------------------------------------
56 !> C++ interface for soca_increment_mod::soca_increment version of
57 !! soca_fields_mod::soca_fields::delete()
58 subroutine soca_increment_delete_c(c_key_self) bind(c,name='soca_increment_delete_f90')
59  integer(c_int), intent(inout) :: c_key_self
60 
61  type(soca_increment), pointer :: self
62 
63  call soca_increment_registry%get(c_key_self,self)
64  call self%delete( )
65  call soca_increment_registry%remove(c_key_self)
66 
67 end subroutine soca_increment_delete_c
68 
69 
70 ! ------------------------------------------------------------------------------
71 !> C++ interface for soca_increment_mod::soca_increment version of
72 !! soca_fields_mod::soca_fields::ones()
73 subroutine soca_increment_ones_c(c_key_self) bind(c,name='soca_increment_ones_f90')
74  integer(c_int), intent(in) :: c_key_self
75 
76  type(soca_increment), pointer :: self
77 
78  call soca_increment_registry%get(c_key_self,self)
79  call self%ones()
80 
81 end subroutine soca_increment_ones_c
82 
83 
84 ! ------------------------------------------------------------------------------
85 !> C++ interface for soca_increment_mod::soca_increment version of
86 !! soca_fields_mod::soca_fields::zeros()
87 subroutine soca_increment_zero_c(c_key_self) bind(c,name='soca_increment_zero_f90')
88  integer(c_int), intent(in) :: c_key_self
89 
90  type(soca_increment), pointer :: self
91 
92  call soca_increment_registry%get(c_key_self,self)
93  call self%zeros()
94 
95 end subroutine soca_increment_zero_c
96 
97 
98 ! ------------------------------------------------------------------------------
99 !> C++ interface for soca_increment_mod::soca_increment::dirac()
100 subroutine soca_increment_dirac_c(c_key_self,c_conf) bind(c,name='soca_increment_dirac_f90')
101  integer(c_int), intent(in) :: c_key_self
102  type(c_ptr), intent(in) :: c_conf !< Configuration
103 
104  type(soca_increment), pointer :: self
105 
106  call soca_increment_registry%get(c_key_self,self)
107  call self%dirac(fckit_configuration(c_conf))
108 
109 end subroutine soca_increment_dirac_c
110 
111 
112 ! ------------------------------------------------------------------------------
113 !> C++ interface for soca_increment_mod::soca_increment::random()
114 subroutine soca_increment_random_c(c_key_self) bind(c,name='soca_increment_random_f90')
115  integer(c_int), intent(in) :: c_key_self
116 
117  type(soca_increment), pointer :: self
118 
119  call soca_increment_registry%get(c_key_self,self)
120  call self%random()
121 
122 end subroutine soca_increment_random_c
123 
124 
125 ! ------------------------------------------------------------------------------
126 !> C++ interface for soca_increment_mod::soca_increment version of
127 !! soca_fields_mod::soca_fields::copy()
128 subroutine soca_increment_copy_c(c_key_self,c_key_rhs) bind(c,name='soca_increment_copy_f90')
129  integer(c_int), intent(in) :: c_key_self
130  integer(c_int), intent(in) :: c_key_rhs
131 
132  type(soca_increment), pointer :: self
133  type(soca_increment), pointer :: rhs
134 
135  call soca_increment_registry%get(c_key_self,self)
136  call soca_increment_registry%get(c_key_rhs,rhs)
137 
138  call self%copy(rhs)
139 
140 end subroutine soca_increment_copy_c
141 
142 
143 ! ------------------------------------------------------------------------------
144 !> C++ interface for soca_increment_mod::soca_increment version of
145 !! soca_fields_mod::soca_fields::add()
146 subroutine soca_increment_self_add_c(c_key_self,c_key_rhs) bind(c,name='soca_increment_self_add_f90')
147  integer(c_int), intent(in) :: c_key_self
148  integer(c_int), intent(in) :: c_key_rhs
149 
150  type(soca_increment), pointer :: self
151  type(soca_increment), pointer :: rhs
152 
153  call soca_increment_registry%get(c_key_self,self)
154  call soca_increment_registry%get(c_key_rhs,rhs)
155 
156  call self%add(rhs)
157 
158 end subroutine soca_increment_self_add_c
159 
160 
161 ! ------------------------------------------------------------------------------
162 !> C++ interface for soca_increment_mod::soca_increment::schur()
163 subroutine soca_increment_self_schur_c(c_key_self,c_key_rhs) bind(c,name='soca_increment_self_schur_f90')
164  integer(c_int), intent(in) :: c_key_self
165  integer(c_int), intent(in) :: c_key_rhs
166 
167  type(soca_increment), pointer :: self
168  type(soca_increment), pointer :: rhs
169 
170  call soca_increment_registry%get(c_key_self,self)
171  call soca_increment_registry%get(c_key_rhs,rhs)
172 
173  call self%schur(rhs)
174 
175 end subroutine soca_increment_self_schur_c
176 
177 
178 ! ------------------------------------------------------------------------------
179 !> C++ interface for soca_increment_mod::soca_increment version of
180 !! soca_fields_mod::soca_fields::sub()
181 subroutine soca_increment_self_sub_c(c_key_self,c_key_rhs) bind(c,name='soca_increment_self_sub_f90')
182  integer(c_int), intent(in) :: c_key_self
183  integer(c_int), intent(in) :: c_key_rhs
184 
185  type(soca_increment), pointer :: self
186  type(soca_increment), pointer :: rhs
187 
188  call soca_increment_registry%get(c_key_self,self)
189  call soca_increment_registry%get(c_key_rhs,rhs)
190 
191  call self%sub(rhs)
192 
193 end subroutine soca_increment_self_sub_c
194 
195 
196 ! ------------------------------------------------------------------------------
197 !> C++ interface for soca_increment_mod::soca_increment version of
198 !! soca_fields_mod::soca_fields::mul()
199 subroutine soca_increment_self_mul_c(c_key_self,c_zz) bind(c,name='soca_increment_self_mul_f90')
200  integer(c_int), intent(in) :: c_key_self
201  real(c_double), intent(in) :: c_zz
202 
203  type(soca_increment), pointer :: self
204  real(kind=kind_real) :: zz
205 
206  call soca_increment_registry%get(c_key_self,self)
207  zz = c_zz
208 
209  call self%mul(zz)
210 
211 end subroutine soca_increment_self_mul_c
212 
213 
214 ! ------------------------------------------------------------------------------
215 !> C++ interface for soca_increment_mod::soca_increment version of
216 !! soca_fields_mod::soca_fields::axpy()
217 subroutine soca_increment_accumul_c(c_key_self,c_zz,c_key_rhs) bind(c,name='soca_increment_accumul_f90')
218  integer(c_int), intent(in) :: c_key_self
219  real(c_double), intent(in) :: c_zz
220  integer(c_int), intent(in) :: c_key_rhs
221 
222  type(soca_increment), pointer :: self
223  real(kind=kind_real) :: zz
224  type(soca_state), pointer :: rhs
225 
226  call soca_increment_registry%get(c_key_self,self)
227  call soca_state_registry%get(c_key_rhs,rhs)
228  zz = c_zz
229 
230  call self%axpy(zz,rhs)
231 
232 end subroutine soca_increment_accumul_c
233 
234 
235 ! ------------------------------------------------------------------------------
236 !> C++ interface for soca_increment_mod::soca_increment version of
237 !! soca_fields_mod::soca_fields::axpy()
238 subroutine soca_increment_axpy_c(c_key_self,c_zz,c_key_rhs) bind(c,name='soca_increment_axpy_f90')
239  integer(c_int), intent(in) :: c_key_self
240  real(c_double), intent(in) :: c_zz
241  integer(c_int), intent(in) :: c_key_rhs
242 
243  type(soca_increment), pointer :: self
244  real(kind=kind_real) :: zz
245  type(soca_increment), pointer :: rhs
246 
247  call soca_increment_registry%get(c_key_self,self)
248  call soca_increment_registry%get(c_key_rhs,rhs)
249  zz = c_zz
250 
251  call self%axpy(zz,rhs)
252 
253 end subroutine soca_increment_axpy_c
254 
255 
256 ! ------------------------------------------------------------------------------
257 !> C++ interface for soca_increment_mod::soca_increment version of
258 !! soca_fields_mod::soca_fields::dot_prod()
259 subroutine soca_increment_dot_prod_c(c_key_fld1,c_key_fld2,c_prod) bind(c,name='soca_increment_dot_prod_f90')
260  integer(c_int), intent(in) :: c_key_fld1, c_key_fld2
261  real(c_double), intent(inout) :: c_prod
262 
263  type(soca_increment), pointer :: fld1, fld2
264  real(kind=kind_real) :: zz
265 
266  call soca_increment_registry%get(c_key_fld1,fld1)
267  call soca_increment_registry%get(c_key_fld2,fld2)
268 
269  call fld1%dot_prod(fld2,zz)
270 
271  c_prod = zz
272 
273 end subroutine soca_increment_dot_prod_c
274 
275 
276 ! ------------------------------------------------------------------------------
277 !> C++ interface for subtracting two soca_increment_mod::soca_increment
278 !! using soca_state_mod::soca_state::diff_incr()
279 subroutine soca_increment_diff_incr_c(c_key_lhs,c_key_x1,c_key_x2) bind(c,name='soca_increment_diff_incr_f90')
280  integer(c_int), intent(in) :: c_key_lhs
281  integer(c_int), intent(in) :: c_key_x1
282  integer(c_int), intent(in) :: c_key_x2
283 
284  type(soca_increment), pointer :: lhs
285  type(soca_state), pointer :: x1
286  type(soca_state), pointer :: x2
287 
288  call soca_increment_registry%get(c_key_lhs,lhs)
289  call soca_state_registry%get(c_key_x1,x1)
290  call soca_state_registry%get(c_key_x2,x2)
291  call x1%diff_incr(x2, lhs)
292 
293 end subroutine soca_increment_diff_incr_c
294 
295 
296 ! ------------------------------------------------------------------------------
297 !> C++ interface for soca_increment_mod::soca_increment::convert()
298 subroutine soca_increment_change_resol_c(c_key_fld,c_key_rhs) bind(c,name='soca_increment_change_resol_f90')
299  integer(c_int), intent(in) :: c_key_fld
300  integer(c_int), intent(in) :: c_key_rhs
301 
302  type(soca_increment), pointer :: fld, rhs
303 
304  call soca_increment_registry%get(c_key_fld,fld)
305  call soca_increment_registry%get(c_key_rhs,rhs)
306 
307  ! TODO (Guillaume or Travis) implement == in geometry or something to that effect.
308  if ( size(fld%geom%lon,1)==size(rhs%geom%lon,1) .and. &
309  size(fld%geom%lat,2)==size(rhs%geom%lat,2) .and. &
310  fld%geom%nzo==rhs%geom%nzo ) then
311  call fld%copy(rhs)
312  else
313  call fld%convert(rhs)
314  endif
315 
316 end subroutine soca_increment_change_resol_c
317 
318 
319 ! ------------------------------------------------------------------------------
320 !> C++ interface for soca_increment_mod::soca_increment::set_atlas()
321 subroutine soca_increment_set_atlas_c(c_key_self,c_key_geom,c_vars,c_afieldset) &
322  & bind(c,name='soca_increment_set_atlas_f90')
323 
324  implicit none
325  integer(c_int), intent(in) :: c_key_self
326  integer(c_int), intent(in) :: c_key_geom
327  type(c_ptr), value, intent(in) :: c_vars
328  type(c_ptr), intent(in), value :: c_afieldset
329 
330  type(soca_increment), pointer :: self
331  type(soca_geom), pointer :: geom
332  type(oops_variables) :: vars
333  type(atlas_fieldset) :: afieldset
334 
335  call soca_increment_registry%get(c_key_self,self)
336  call soca_geom_registry%get(c_key_geom, geom)
337  vars = oops_variables(c_vars)
338  afieldset = atlas_fieldset(c_afieldset)
339 
340  call self%set_atlas(geom, vars, afieldset)
341 
342 end subroutine soca_increment_set_atlas_c
343 
344 
345 ! ------------------------------------------------------------------------------
346 !> C++ interface for soca_increment_mod::soca_increment::to_atlas()
347 subroutine soca_increment_to_atlas_c(c_key_self,c_key_geom,c_vars,c_afieldset) &
348  & bind(c,name='soca_increment_to_atlas_f90')
349 
350  implicit none
351  integer(c_int), intent(in) :: c_key_self
352  integer(c_int), intent(in) :: c_key_geom
353  type(c_ptr), value, intent(in) :: c_vars
354  type(c_ptr), intent(in), value :: c_afieldset
355 
356  type(soca_increment), pointer :: self
357  type(soca_geom), pointer :: geom
358  type(oops_variables) :: vars
359  type(atlas_fieldset) :: afieldset
360 
361  call soca_increment_registry%get(c_key_self,self)
362  call soca_geom_registry%get(c_key_geom, geom)
363  vars = oops_variables(c_vars)
364  afieldset = atlas_fieldset(c_afieldset)
365 
366  call self%to_atlas(geom, vars, afieldset)
367 
368 end subroutine soca_increment_to_atlas_c
369 
370 
371 ! ------------------------------------------------------------------------------
372 !> C++ interface for soca_increment_mod::soca_increment::getpoint()
373 subroutine soca_increment_from_atlas_c(c_key_self,c_key_geom,c_vars,c_afieldset) &
374  & bind(c,name='soca_increment_from_atlas_f90')
375 
376  implicit none
377  integer(c_int), intent(in) :: c_key_self
378  integer(c_int), intent(in) :: c_key_geom
379  type(c_ptr), value, intent(in) :: c_vars
380  type(c_ptr), intent(in), value :: c_afieldset
381 
382  type(soca_increment), pointer :: self
383  type(soca_geom), pointer :: geom
384  type(oops_variables) :: vars
385  type(atlas_fieldset) :: afieldset
386 
387  call soca_increment_registry%get(c_key_self, self)
388  call soca_geom_registry%get(c_key_geom, geom)
389  vars = oops_variables(c_vars)
390  afieldset = atlas_fieldset(c_afieldset)
391 
392  call self%from_atlas(geom, vars, afieldset)
393 
394 end subroutine soca_increment_from_atlas_c
395 
396 
397 ! ------------------------------------------------------------------------------
398 !> C++ interface for soca_increment_mod::soca_increment version of
399 !! soca_fields_mod::soca_fields::read()
400 subroutine soca_increment_read_file_c(c_key_fld, c_conf, c_dt) bind(c,name='soca_increment_read_file_f90')
401  integer(c_int), intent(in) :: c_key_fld !< Fields
402  type(c_ptr), intent(in) :: c_conf !< Configuration
403  type(c_ptr), intent(inout) :: c_dt !< DateTime
404 
405  type(soca_increment), pointer :: fld
406  type(datetime) :: fdate
407 
408  call soca_increment_registry%get(c_key_fld,fld)
409  call c_f_datetime(c_dt, fdate)
410  call fld%read(fckit_configuration(c_conf), fdate)
411 
412 end subroutine soca_increment_read_file_c
413 
414 
415 ! ------------------------------------------------------------------------------
416 !> C++ interface for soca_increment_mod::soca_increment version of
417 !! soca_fields_mod::soca_fields::write()
418 subroutine soca_increment_write_file_c(c_key_fld, c_conf, c_dt) bind(c,name='soca_increment_write_file_f90')
419  integer(c_int), intent(in) :: c_key_fld !< Fields
420  type(c_ptr), intent(in) :: c_conf !< Configuration
421  type(c_ptr), intent(in) :: c_dt !< DateTime
422 
423  type(soca_increment), pointer :: fld
424  type(datetime) :: fdate
425 
426  call soca_increment_registry%get(c_key_fld,fld)
427  call c_f_datetime(c_dt, fdate)
428  call fld%write_rst(fckit_configuration(c_conf), fdate)
429 
430 end subroutine soca_increment_write_file_c
431 
432 
433 ! ------------------------------------------------------------------------------
434 !> C++ interface for soca_increment_mod::soca_increment version of
435 !! soca_fields_mod::soca_fields::gpnorm()
436 subroutine soca_increment_gpnorm_c(c_key_fld, kf, pstat) bind(c,name='soca_increment_gpnorm_f90')
437  integer(c_int), intent(in) :: c_key_fld
438  integer(c_int), intent(in) :: kf
439  real(c_double), intent(inout) :: pstat(3*kf)
440 
441  type(soca_increment), pointer :: fld
442  real(kind=kind_real) :: zstat(3, kf)
443  integer :: jj, js, jf
444 
445  call soca_increment_registry%get(c_key_fld,fld)
446 
447  call fld%gpnorm(kf, zstat)
448  jj=0
449  do jf = 1, kf
450  do js = 1, 3
451  jj=jj+1
452  pstat(jj) = zstat(js,jf)
453  enddo
454  enddo
455 
456 end subroutine soca_increment_gpnorm_c
457 
458 
459 ! ------------------------------------------------------------------------------
460 !> C++ interface for soca_increment_mod::soca_increment RMS
461 subroutine soca_increment_rms_c(c_key_fld, prms) bind(c,name='soca_increment_rms_f90')
462  integer(c_int), intent(in) :: c_key_fld
463  real(c_double), intent(inout) :: prms
464 
465  type(soca_increment), pointer :: fld
466  real(kind=kind_real) :: zz
467 
468  call soca_increment_registry%get(c_key_fld,fld)
469 
470  call fld%dot_prod(fld, zz)
471  prms = sqrt(zz)
472 
473 end subroutine soca_increment_rms_c
474 
475 
476 ! ------------------------------------------------------------------------------
477 !> C++ interface for soca_increment_mod::soca_increment::getpoint()
478 subroutine soca_increment_getpoint_c(c_key_fld,c_key_iter,values, values_len) bind(c,name='soca_increment_getpoint_f90')
479  integer(c_int), intent(in) :: c_key_fld
480  integer(c_int), intent(in) :: c_key_iter
481  integer(c_int), intent(in) :: values_len
482  real(c_double), intent(inout) :: values(values_len)
483 
484  type(soca_increment), pointer :: fld
485  type(soca_geom_iter), pointer :: iter
486 
487  call soca_increment_registry%get(c_key_fld,fld)
488  call soca_geom_iter_registry%get(c_key_iter,iter)
489 
490  call fld%getpoint(iter, values)
491 
492 end subroutine soca_increment_getpoint_c
493 
494 
495 ! ------------------------------------------------------------------------------
496 !> C++ interface for soca_increment_mod::soca_increment::setpoint()
497 subroutine soca_increment_setpoint_c(c_key_fld,c_key_iter,values, values_len) bind(c,name='soca_increment_setpoint_f90')
498  integer(c_int), intent(inout) :: c_key_fld
499  integer(c_int), intent(in) :: c_key_iter
500  integer(c_int), intent(in) :: values_len
501  real(c_double), intent(in) :: values(values_len)
502 
503  type(soca_increment), pointer :: fld
504  type(soca_geom_iter), pointer :: iter
505 
506  call soca_increment_registry%get(c_key_fld,fld)
507  call soca_geom_iter_registry%get(c_key_iter,iter)
508 
509  call fld%setpoint(iter, values)
510 
511 end subroutine soca_increment_setpoint_c
512 
513 
514 ! ------------------------------------------------------------------------------
515 !> C++ interface to get soca_increment_mod::soca_increment dimension sizes
516 subroutine soca_incrementnum_c(c_key_fld, nx, ny, nzo, nf) bind(c,name='soca_increment_sizes_f90')
517  integer(c_int), intent(in) :: c_key_fld
518  integer(kind=c_int), intent(inout) :: nx, ny, nzo, nf
519 
520  type(soca_increment), pointer :: fld
521 
522  call soca_increment_registry%get(c_key_fld,fld)
523 
524  nx = size(fld%geom%lon,1)
525  ny = size(fld%geom%lon,2)
526  nzo = fld%geom%nzo
527  nf = size(fld%fields)
528 
529 end subroutine soca_incrementnum_c
530 
531 
532 ! ------------------------------------------------------------------------------
533 !> C++ interface for soca_increment_mod::soca_increment version of
534 !! soca_fields_mod::soca_fields::serial_size()
535 subroutine soca_increment_serial_size_c(c_key_self,c_key_geom,c_vec_size) bind (c,name='soca_increment_serial_size_f90')
536 
537  implicit none
538  integer(c_int), intent(in) :: c_key_self
539  integer(c_int), intent(in) :: c_key_geom
540  integer(c_size_t), intent(out) :: c_vec_size
541 
542  type(soca_increment), pointer :: self
543  type(soca_geom), pointer :: geom
544 
545  integer :: vec_size
546 
547  call soca_increment_registry%get(c_key_self,self)
548  call soca_geom_registry%get(c_key_geom,geom)
549 
550  call self%serial_size(geom,vec_size)
551  c_vec_size = vec_size
552 
553 end subroutine soca_increment_serial_size_c
554 
555 
556 ! ------------------------------------------------------------------------------
557 !> C++ interface for soca_increment_mod::soca_increment version of
558 !! soca_fields_mod::soca_fields::serialize()
559 subroutine soca_increment_serialize_c(c_key_self,c_key_geom,c_vec_size,c_vec) bind (c,name='soca_increment_serialize_f90')
560 
561  implicit none
562  integer(c_int), intent(in) :: c_key_self
563  integer(c_int), intent(in) :: c_key_geom
564  integer(c_size_t), intent(in) :: c_vec_size
565  real(c_double), intent(out) :: c_vec(c_vec_size)
566 
567  integer :: vec_size
568  type(soca_increment), pointer :: self
569  type(soca_geom), pointer :: geom
570 
571  vec_size = c_vec_size
572  call soca_increment_registry%get(c_key_self,self)
573  call soca_geom_registry%get(c_key_geom,geom)
574 
575  call self%serialize(geom, vec_size, c_vec)
576 
577 end subroutine soca_increment_serialize_c
578 
579 
580 ! ------------------------------------------------------------------------------
581 !> C++ interface for soca_increment_mod::soca_increment version of
582 !! soca_fields_mod::soca_fields::deserialize()
583 subroutine soca_increment_deserialize_c(c_key_self,c_key_geom,c_vec_size,c_vec,c_index) bind (c,name='soca_increment_deserialize_f90')
584 
585  implicit none
586  integer(c_int), intent(in) :: c_key_self
587  integer(c_int), intent(in) :: c_key_geom
588  integer(c_size_t), intent(in) :: c_vec_size
589  real(c_double), intent(in) :: c_vec(c_vec_size)
590  integer(c_size_t), intent(inout) :: c_index
591 
592  integer :: vec_size, idx
593  type(soca_increment), pointer :: self
594  type(soca_geom), pointer :: geom
595 
596  vec_size = c_vec_size
597  idx = c_index
598  call soca_increment_registry%get(c_key_self,self)
599  call soca_geom_registry%get(c_key_geom,geom)
600 
601  call self%deserialize(geom, vec_size, c_vec, idx)
602  c_index=idx
603 
604 end subroutine soca_increment_deserialize_c
605 
606 end module
C++ interfaces for soca_geom_iter_mod::soca_geom_iter.
type(registry_t), public soca_geom_iter_registry
Linked list interface - defines registry_t type.
Geometry iterator.
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_increment_mod::soca_increment.
subroutine soca_increment_from_atlas_c(c_key_self, c_key_geom, c_vars, c_afieldset)
C++ interface for soca_increment_mod::soca_increment::getpoint()
subroutine soca_increment_ones_c(c_key_self)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::ones()
subroutine soca_increment_zero_c(c_key_self)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::zeros()
subroutine soca_increment_create_c(c_key_self, c_key_geom, c_vars)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::create(...
subroutine soca_increment_self_schur_c(c_key_self, c_key_rhs)
C++ interface for soca_increment_mod::soca_increment::schur()
subroutine soca_increment_change_resol_c(c_key_fld, c_key_rhs)
C++ interface for soca_increment_mod::soca_increment::convert()
subroutine soca_increment_to_atlas_c(c_key_self, c_key_geom, c_vars, c_afieldset)
C++ interface for soca_increment_mod::soca_increment::to_atlas()
subroutine soca_increment_self_sub_c(c_key_self, c_key_rhs)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::sub()
subroutine soca_increment_self_add_c(c_key_self, c_key_rhs)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::add()
subroutine soca_increment_dirac_c(c_key_self, c_conf)
C++ interface for soca_increment_mod::soca_increment::dirac()
subroutine soca_increment_read_file_c(c_key_fld, c_conf, c_dt)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::read()
subroutine soca_incrementnum_c(c_key_fld, nx, ny, nzo, nf)
C++ interface to get soca_increment_mod::soca_increment dimension sizes.
subroutine soca_increment_diff_incr_c(c_key_lhs, c_key_x1, c_key_x2)
C++ interface for subtracting two soca_increment_mod::soca_increment using soca_state_mod::soca_state...
subroutine soca_increment_copy_c(c_key_self, c_key_rhs)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::copy()
subroutine soca_increment_write_file_c(c_key_fld, c_conf, c_dt)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::write()
subroutine soca_increment_rms_c(c_key_fld, prms)
C++ interface for soca_increment_mod::soca_increment RMS.
subroutine soca_increment_random_c(c_key_self)
C++ interface for soca_increment_mod::soca_increment::random()
subroutine soca_increment_deserialize_c(c_key_self, c_key_geom, c_vec_size, c_vec, c_index)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::deseria...
subroutine soca_increment_gpnorm_c(c_key_fld, kf, pstat)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::gpnorm(...
subroutine soca_increment_setpoint_c(c_key_fld, c_key_iter, values, values_len)
C++ interface for soca_increment_mod::soca_increment::setpoint()
subroutine soca_increment_accumul_c(c_key_self, c_zz, c_key_rhs)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::axpy()
subroutine soca_increment_dot_prod_c(c_key_fld1, c_key_fld2, c_prod)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::dot_pro...
subroutine soca_increment_getpoint_c(c_key_fld, c_key_iter, values, values_len)
C++ interface for soca_increment_mod::soca_increment::getpoint()
subroutine soca_increment_axpy_c(c_key_self, c_zz, c_key_rhs)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::axpy()
subroutine soca_increment_self_mul_c(c_key_self, c_zz)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::mul()
subroutine soca_increment_serial_size_c(c_key_self, c_key_geom, c_vec_size)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::serial_...
subroutine soca_increment_delete_c(c_key_self)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::delete(...
subroutine soca_increment_set_atlas_c(c_key_self, c_key_geom, c_vars, c_afieldset)
C++ interface for soca_increment_mod::soca_increment::set_atlas()
subroutine soca_increment_serialize_c(c_key_self, c_key_geom, c_vec_size, c_vec)
C++ interface for soca_increment_mod::soca_increment version of soca_fields_mod::soca_fields::seriali...
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.