FV3 Bundle
fv3jedi_increment_interface_mod.f90
Go to the documentation of this file.
1 ! (C) Copyright 2017 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 
9 
11 use config_mod
12 use datetime_mod
13 use duration_mod
14 use iso_c_binding
15 
23 
24 !GetValues
25 use ioda_locs_mod
27 use ufo_vars_mod
31 
32 implicit none
33 private
34 
36 
37 ! ------------------------------------------------------------------------------
38 
39 contains
40 
41 ! ------------------------------------------------------------------------------
42 
43 subroutine fv3jedi_increment_create_c(c_key_self, c_key_geom, c_vars) bind(c,name='fv3jedi_increment_create_f90')
44 
45 implicit none
46 integer(c_int), intent(inout) :: c_key_self
47 integer(c_int), intent(in) :: c_key_geom !< Geometry
48 type(c_ptr), intent(in) :: c_vars !< List of variables
49 
50 type(fv3jedi_increment), pointer :: self
51 type(fv3jedi_geom), pointer :: geom
52 type(fv3jedi_vars) :: vars
53 
54 call fv3jedi_geom_registry%get(c_key_geom, geom)
56 call fv3jedi_increment_registry%add(c_key_self)
57 call fv3jedi_increment_registry%get(c_key_self,self)
58 
59 call fv3jedi_vars_create(c_vars,vars)
60 call create(self, geom, vars)
61 
62 end subroutine fv3jedi_increment_create_c
63 
64 ! ------------------------------------------------------------------------------
65 
66 subroutine fv3jedi_increment_delete_c(c_key_self) bind(c,name='fv3jedi_increment_delete_f90')
67 
68 implicit none
69 integer(c_int), intent(inout) :: c_key_self
70 type(fv3jedi_increment), pointer :: self
71 
72 call fv3jedi_increment_registry%get(c_key_self,self)
73 
74 call delete(self)
75 
76 call fv3jedi_increment_registry%remove(c_key_self)
77 
78 end subroutine fv3jedi_increment_delete_c
79 
80 ! ------------------------------------------------------------------------------
81 
82 subroutine fv3jedi_increment_zero_c(c_key_self) bind(c,name='fv3jedi_increment_zero_f90')
83 
84 implicit none
85 integer(c_int), intent(in) :: c_key_self
86 type(fv3jedi_increment), pointer :: self
87 
88 call fv3jedi_increment_registry%get(c_key_self,self)
89 call zeros(self)
90 
91 end subroutine fv3jedi_increment_zero_c
92 
93 ! ------------------------------------------------------------------------------
94 
95 subroutine fv3jedi_increment_dirac_c(c_key_self,c_conf,c_key_geom) bind(c,name='fv3jedi_increment_dirac_f90')
96 
97 implicit none
98 integer(c_int), intent(in) :: c_key_self
99 type(c_ptr), intent(in) :: c_conf !< Configuration
100 integer(c_int), intent(in) :: c_key_geom !< Geometry
101 type(fv3jedi_increment), pointer :: self
102 type(fv3jedi_geom), pointer :: geom
103 
104 call fv3jedi_geom_registry%get(c_key_geom, geom)
105 call fv3jedi_increment_registry%get(c_key_self,self)
106 call dirac(self,c_conf,geom)
107 
108 end subroutine fv3jedi_increment_dirac_c
109 
110 ! ------------------------------------------------------------------------------
111 
112 subroutine fv3jedi_increment_random_c(c_key_self) bind(c,name='fv3jedi_increment_random_f90')
114 implicit none
115 integer(c_int), intent(in) :: c_key_self
116 type(fv3jedi_increment), pointer :: self
117 
118 call fv3jedi_increment_registry%get(c_key_self,self)
119 call random(self)
120 
121 end subroutine fv3jedi_increment_random_c
122 
123 ! ------------------------------------------------------------------------------
124 
125 subroutine fv3jedi_increment_ug_coord_c(c_key_inc, c_key_ug, c_colocated, c_key_geom) bind (c,name='fv3jedi_increment_ug_coord_f90')
127 implicit none
128 integer(c_int), intent(in) :: c_key_inc
129 integer(c_int), intent(in) :: c_key_ug
130 integer(c_int), intent(in) :: c_colocated
131 integer(c_int), intent(in) :: c_key_geom !< Geometry
132 type(fv3jedi_increment), pointer :: inc
133 type(unstructured_grid), pointer :: ug
134 integer :: colocated
135 type(fv3jedi_geom), pointer :: geom
136 
137 colocated = c_colocated
138 
139 call fv3jedi_increment_registry%get(c_key_inc,inc)
140 call unstructured_grid_registry%get(c_key_ug,ug)
141 call fv3jedi_geom_registry%get(c_key_geom, geom)
142 
143 call ug_coord(inc, ug, colocated, geom)
144 
145 end subroutine fv3jedi_increment_ug_coord_c
146 
147 ! ------------------------------------------------------------------------------
148 
149 subroutine fv3jedi_increment_increment_to_ug_c(c_key_inc, c_key_ug, c_colocated) bind (c,name='fv3jedi_increment_increment_to_ug_f90')
151 implicit none
152 integer(c_int), intent(in) :: c_key_inc
153 integer(c_int), intent(in) :: c_key_ug
154 integer(c_int), intent(in) :: c_colocated
155 type(fv3jedi_increment), pointer :: inc
156 type(unstructured_grid), pointer :: ug
157 integer :: colocated
158 
159 colocated = c_colocated
160 
161 call fv3jedi_increment_registry%get(c_key_inc,inc)
162 call unstructured_grid_registry%get(c_key_ug,ug)
163 
164 call increment_to_ug(inc, ug, colocated)
165 
167 
168 ! ------------------------------------------------------------------------------
169 
170 subroutine fv3jedi_increment_increment_from_ug_c(c_key_inc, c_key_ug) bind (c,name='fv3jedi_increment_increment_from_ug_f90')
172 implicit none
173 integer(c_int), intent(in) :: c_key_inc
174 integer(c_int), intent(in) :: c_key_ug
175 type(fv3jedi_increment), pointer :: inc
176 type(unstructured_grid), pointer :: ug
177 
178 call fv3jedi_increment_registry%get(c_key_inc,inc)
179 call unstructured_grid_registry%get(c_key_ug,ug)
180 
181 call increment_from_ug(inc, ug)
182 
184 
185 ! ------------------------------------------------------------------------------
186 
187 subroutine fv3jedi_increment_copy_c(c_key_self,c_key_rhs) bind(c,name='fv3jedi_increment_copy_f90')
189 implicit none
190 integer(c_int), intent(in) :: c_key_self
191 integer(c_int), intent(in) :: c_key_rhs
192 
193 type(fv3jedi_increment), pointer :: self
194 type(fv3jedi_increment), pointer :: rhs
195 call fv3jedi_increment_registry%get(c_key_self,self)
196 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
197 
198 call copy(self, rhs)
199 
200 end subroutine fv3jedi_increment_copy_c
201 
202 ! ------------------------------------------------------------------------------
203 
204 subroutine fv3jedi_increment_self_add_c(c_key_self,c_key_rhs) bind(c,name='fv3jedi_increment_self_add_f90')
206 implicit none
207 integer(c_int), intent(in) :: c_key_self
208 integer(c_int), intent(in) :: c_key_rhs
209 
210 type(fv3jedi_increment), pointer :: self
211 type(fv3jedi_increment), pointer :: rhs
212 call fv3jedi_increment_registry%get(c_key_self,self)
213 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
214 
215 call self_add(self,rhs)
216 
217 end subroutine fv3jedi_increment_self_add_c
218 
219 ! ------------------------------------------------------------------------------
220 
221 subroutine fv3jedi_increment_self_schur_c(c_key_self,c_key_rhs) bind(c,name='fv3jedi_increment_self_schur_f90')
223 implicit none
224 integer(c_int), intent(in) :: c_key_self
225 integer(c_int), intent(in) :: c_key_rhs
226 
227 type(fv3jedi_increment), pointer :: self
228 type(fv3jedi_increment), pointer :: rhs
229 call fv3jedi_increment_registry%get(c_key_self,self)
230 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
231 
232 call self_schur(self,rhs)
233 
234 end subroutine fv3jedi_increment_self_schur_c
235 
236 ! ------------------------------------------------------------------------------
237 
238 subroutine fv3jedi_increment_self_sub_c(c_key_self,c_key_rhs) bind(c,name='fv3jedi_increment_self_sub_f90')
240 implicit none
241 integer(c_int), intent(in) :: c_key_self
242 integer(c_int), intent(in) :: c_key_rhs
243 
244 type(fv3jedi_increment), pointer :: self
245 type(fv3jedi_increment), pointer :: rhs
246 call fv3jedi_increment_registry%get(c_key_self,self)
247 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
248 
249 call self_sub(self,rhs)
250 
251 end subroutine fv3jedi_increment_self_sub_c
252 
253 ! ------------------------------------------------------------------------------
254 
255 subroutine fv3jedi_increment_self_mul_c(c_key_self,c_zz) bind(c,name='fv3jedi_increment_self_mul_f90')
257 implicit none
258 integer(c_int), intent(in) :: c_key_self
259 real(c_double), intent(in) :: c_zz
260 type(fv3jedi_increment), pointer :: self
261 real(kind=kind_real) :: zz
262 
263 call fv3jedi_increment_registry%get(c_key_self,self)
264 zz = c_zz
265 
266 call self_mul(self,zz)
267 
268 end subroutine fv3jedi_increment_self_mul_c
269 
270 ! ------------------------------------------------------------------------------
271 
272 subroutine fv3jedi_increment_axpy_inc_c(c_key_self,c_zz,c_key_rhs) bind(c,name='fv3jedi_increment_axpy_inc_f90')
274 implicit none
275 integer(c_int), intent(in) :: c_key_self
276 real(c_double), intent(in) :: c_zz
277 integer(c_int), intent(in) :: c_key_rhs
278 
279 type(fv3jedi_increment), pointer :: self
280 type(fv3jedi_increment), pointer :: rhs
281 real(kind=kind_real) :: zz
282 
283 call fv3jedi_increment_registry%get(c_key_self,self)
284 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
285 zz = c_zz
286 
287 call axpy_inc(self,zz,rhs)
288 
289 end subroutine fv3jedi_increment_axpy_inc_c
290 
291 ! ------------------------------------------------------------------------------
292 
293 subroutine fv3jedi_increment_axpy_state_c(c_key_self,c_zz,c_key_rhs) bind(c,name='fv3jedi_increment_axpy_state_f90')
295 implicit none
296 integer(c_int), intent(in) :: c_key_self
297 real(c_double), intent(in) :: c_zz
298 integer(c_int), intent(in) :: c_key_rhs
299 
300 type(fv3jedi_increment), pointer :: self
301 type(fv3jedi_state), pointer :: rhs
302 real(kind=kind_real) :: zz
303 
304 call fv3jedi_increment_registry%get(c_key_self,self)
305 call fv3jedi_state_registry%get(c_key_rhs,rhs)
306 zz = c_zz
307 
308 call axpy_state(self,zz,rhs)
309 
310 end subroutine fv3jedi_increment_axpy_state_c
311 
312 ! ------------------------------------------------------------------------------
313 
314 subroutine fv3jedi_increment_dot_prod_c(c_key_inc1,c_key_inc2,c_prod) bind(c,name='fv3jedi_increment_dot_prod_f90')
316 implicit none
317 integer(c_int), intent(in) :: c_key_inc1, c_key_inc2
318 real(c_double), intent(inout) :: c_prod
319 real(kind=kind_real) :: zz
320 type(fv3jedi_increment), pointer :: inc1, inc2
321 
322 call fv3jedi_increment_registry%get(c_key_inc1,inc1)
323 call fv3jedi_increment_registry%get(c_key_inc2,inc2)
324 
325 call dot_prod(inc1,inc2,zz)
326 
327 c_prod = zz
328 
329 end subroutine fv3jedi_increment_dot_prod_c
330 
331 ! ------------------------------------------------------------------------------
332 
333 subroutine fv3jedi_increment_add_incr_c(c_key_self,c_key_rhs) bind(c,name='fv3jedi_increment_add_incr_f90')
335 implicit none
336 integer(c_int), intent(in) :: c_key_self
337 integer(c_int), intent(in) :: c_key_rhs
338 type(fv3jedi_increment), pointer :: self
339 type(fv3jedi_increment), pointer :: rhs
340 
341 call fv3jedi_increment_registry%get(c_key_self,self)
342 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
343 
344 call add_incr(self,rhs)
345 
346 end subroutine fv3jedi_increment_add_incr_c
347 
348 ! ------------------------------------------------------------------------------
349 
350 subroutine fv3jedi_increment_diff_incr_c(c_key_lhs,c_key_x1,c_key_x2) bind(c,name='fv3jedi_increment_diff_incr_f90')
352 implicit none
353 integer(c_int), intent(in) :: c_key_lhs
354 integer(c_int), intent(in) :: c_key_x1
355 integer(c_int), intent(in) :: c_key_x2
356 type(fv3jedi_increment), pointer :: lhs
357 type(fv3jedi_state), pointer :: x1
358 type(fv3jedi_state), pointer :: x2
359 
360 call fv3jedi_increment_registry%get(c_key_lhs,lhs)
361 call fv3jedi_state_registry%get(c_key_x1,x1)
362 call fv3jedi_state_registry%get(c_key_x2,x2)
363 
364 call diff_incr(lhs,x1,x2)
365 
366 end subroutine fv3jedi_increment_diff_incr_c
367 
368 ! ------------------------------------------------------------------------------
369 
370 subroutine fv3jedi_increment_change_resol_c(c_key_inc,c_key_rhs) bind(c,name='fv3jedi_increment_change_resol_f90')
372 implicit none
373 integer(c_int), intent(in) :: c_key_inc
374 integer(c_int), intent(in) :: c_key_rhs
375 type(fv3jedi_increment), pointer :: inc, rhs
376 
377 call fv3jedi_increment_registry%get(c_key_inc,inc)
378 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
379 
380 call change_resol(inc,rhs)
381 
383 
384 ! ------------------------------------------------------------------------------
385 
386 subroutine fv3jedi_increment_read_file_c(c_key_geom, c_key_inc, c_conf, c_dt) bind(c,name='fv3jedi_increment_read_file_f90')
388 implicit none
389 integer(c_int), intent(in) :: c_key_inc !< Increment
390 type(c_ptr), intent(in) :: c_conf !< Configuration
391 type(c_ptr), intent(inout) :: c_dt !< DateTime
392 integer(c_int), intent(in) :: c_key_geom !< Geometry
393 
394 type(fv3jedi_increment), pointer :: inc
395 type(datetime) :: fdate
396 type(fv3jedi_geom), pointer :: geom
397 
398 call fv3jedi_geom_registry%get(c_key_geom, geom)
399 call fv3jedi_increment_registry%get(c_key_inc,inc)
400 call c_f_datetime(c_dt, fdate)
401 call read_file(geom, inc, c_conf, fdate)
402 
403 end subroutine fv3jedi_increment_read_file_c
404 
405 ! ------------------------------------------------------------------------------
406 
407 subroutine fv3jedi_increment_write_file_c(c_key_geom, c_key_inc, c_conf, c_dt) bind(c,name='fv3jedi_increment_write_file_f90')
409 implicit none
410 integer(c_int), intent(in) :: c_key_inc !< Increment
411 type(c_ptr), intent(in) :: c_conf !< Configuration
412 type(c_ptr), intent(in) :: c_dt !< DateTime
413 integer(c_int), intent(in) :: c_key_geom !< Geometry
414 
415 type(fv3jedi_increment), pointer :: inc
416 type(datetime) :: fdate
417 type(fv3jedi_geom), pointer :: geom
418 
419 call fv3jedi_geom_registry%get(c_key_geom, geom)
420 call fv3jedi_increment_registry%get(c_key_inc,inc)
421 call c_f_datetime(c_dt, fdate)
422 call write_file(geom, inc, c_conf, fdate)
423 
424 end subroutine fv3jedi_increment_write_file_c
425 
426 ! ------------------------------------------------------------------------------
427 
428 subroutine fv3jedi_increment_gpnorm_c(c_key_inc, kf, pstat) bind(c,name='fv3jedi_increment_gpnorm_f90')
430 implicit none
431 integer(c_int), intent(in) :: c_key_inc
432 integer(c_int), intent(in) :: kf
433 real(c_double), intent(inout) :: pstat(3*kf)
434 
435 type(fv3jedi_increment), pointer :: inc
436 real(kind=kind_real) :: zstat(3, kf)
437 integer :: jj, js, jf
438 
439 call fv3jedi_increment_registry%get(c_key_inc,inc)
440 
441 call gpnorm(inc, kf, zstat)
442 jj=0
443 do jf = 1, kf
444  do js = 1, 3
445  jj=jj+1
446  pstat(jj) = zstat(js,jf)
447  enddo
448 enddo
449 
450 end subroutine fv3jedi_increment_gpnorm_c
451 
452 ! ------------------------------------------------------------------------------
453 
454 subroutine fv3jedi_increment_rms_c(c_key_inc, prms) bind(c,name='fv3jedi_increment_rms_f90')
456 implicit none
457 integer(c_int), intent(in) :: c_key_inc
458 real(c_double), intent(inout) :: prms
459 
460 type(fv3jedi_increment), pointer :: inc
461 real(kind=kind_real) :: zz
462 
463 call fv3jedi_increment_registry%get(c_key_inc,inc)
464 
465 call incrms(inc, zz)
466 
467 prms = zz
468 
469 end subroutine fv3jedi_increment_rms_c
470 
471 ! ------------------------------------------------------------------------------
472 
473 subroutine fv3jedi_increment_getvalues_tl_c(c_key_geom, c_key_inc,c_key_loc,c_vars,c_key_gom,c_key_traj) bind(c,name='fv3jedi_increment_getvalues_tl_f90')
475 implicit none
476 integer(c_int), intent(in) :: c_key_inc !< Increment to be interpolated
477 integer(c_int), intent(in) :: c_key_loc !< List of requested locations
478 type(c_ptr), intent(in) :: c_vars !< List of requested variables
479 integer(c_int), intent(in) :: c_key_gom !< Interpolated values
480 integer(c_int), intent(in) :: c_key_traj !< Trajectory for interpolation/transforms
481 integer(c_int), intent(in) :: c_key_geom !< Geometry
482 type(fv3jedi_increment), pointer :: inc
483 type(ioda_locs), pointer :: locs
484 type(ufo_geovals), pointer :: gom
485 type(ufo_vars) :: vars
486 type(fv3jedi_getvalues_traj), pointer :: traj
487 type(fv3jedi_geom), pointer :: geom
488 
489 call ufo_vars_setup(vars, c_vars)
490 
491 call fv3jedi_geom_registry%get(c_key_geom, geom)
492 call fv3jedi_increment_registry%get(c_key_inc, inc)
493 call ioda_locs_registry%get(c_key_loc, locs)
494 call ufo_geovals_registry%get(c_key_gom, gom)
495 call fv3jedi_getvalues_traj_registry%get(c_key_traj, traj)
496 
497 call getvalues_tl(geom, inc, locs, vars, gom, traj)
498 
500 
501 ! ------------------------------------------------------------------------------
502 
503 subroutine fv3jedi_increment_getvalues_ad_c(c_key_geom, c_key_inc,c_key_loc,c_vars,c_key_gom,c_key_traj) bind(c,name='fv3jedi_increment_getvalues_ad_f90')
505 implicit none
506 integer(c_int), intent(in) :: c_key_inc !< Increment to be interpolated
507 integer(c_int), intent(in) :: c_key_loc !< List of requested locations
508 type(c_ptr), intent(in) :: c_vars !< List of requested variables
509 integer(c_int), intent(in) :: c_key_gom !< Interpolated values
510 integer(c_int), intent(in) :: c_key_traj !< Trajectory for interpolation/transforms
511 integer(c_int), intent(in) :: c_key_geom !< Geometry
512 type(fv3jedi_increment), pointer :: inc
513 type(ioda_locs), pointer :: locs
514 type(ufo_geovals), pointer :: gom
515 type(ufo_vars) :: vars
516 type(fv3jedi_getvalues_traj), pointer :: traj
517 type(fv3jedi_geom), pointer :: geom
518 
519 call ufo_vars_setup(vars, c_vars)
520 
521 call fv3jedi_geom_registry%get(c_key_geom, geom)
522 call fv3jedi_increment_registry%get(c_key_inc, inc)
523 call ioda_locs_registry%get(c_key_loc, locs)
524 call ufo_geovals_registry%get(c_key_gom, gom)
525 call fv3jedi_getvalues_traj_registry%get(c_key_traj, traj)
526 
527 call getvalues_ad(geom, inc, locs, vars, gom, traj)
528 
530 
531 ! ------------------------------------------------------------------------------
532 
533 subroutine fv3jedi_increment_sizes_c(c_key_self,nx,ny,nv) bind(c,name='fv3jedi_increment_sizes_f90')
535 implicit none
536 integer(c_int), intent(in) :: c_key_self
537 integer(c_int), intent(inout) :: nx,ny,nv
538 type(fv3jedi_increment), pointer :: self
539 
540 call fv3jedi_increment_registry%get(c_key_self,self)
541 
542 nv = self%vars%nv
543 nx = self%npx
544 ny = self%npy
545 
546 end subroutine fv3jedi_increment_sizes_c
547 
548 ! ------------------------------------------------------------------------------
549 
550 subroutine fv3jedi_increment_jnormgrad_c(c_key_self,c_key_geom,c_key_state,c_conf) bind(c,name='fv3jedi_increment_jnormgrad_f90')
552 implicit none
553 integer(c_int), intent(in) :: c_key_self
554 integer(c_int), intent(in) :: c_key_geom
555 integer(c_int), intent(in) :: c_key_state
556 type(c_ptr), intent(in) :: c_conf
557 
558 type(fv3jedi_increment), pointer :: self
559 type(fv3jedi_geom), pointer :: geom
560 type(fv3jedi_state), pointer :: state
561 
562 call fv3jedi_increment_registry%get(c_key_self,self)
563 call fv3jedi_geom_registry%get(c_key_geom,geom)
564 call fv3jedi_state_registry%get(c_key_state,state)
565 
566 call jnormgrad(self,geom,state,c_conf)
567 
568 end subroutine fv3jedi_increment_jnormgrad_c
569 
570 ! ------------------------------------------------------------------------------
571 
subroutine, public gpnorm(inc, nf, pstat)
subroutine fv3jedi_increment_create_c(c_key_self, c_key_geom, c_vars)
type(registry_t), public fv3jedi_geom_registry
Linked list interface - defines registry_t type.
subroutine, public dirac(self, c_conf, geom)
subroutine fv3jedi_increment_self_mul_c(c_key_self, c_zz)
subroutine, public change_resol(inc, rhs)
subroutine fv3jedi_increment_write_file_c(c_key_geom, c_key_inc, c_conf, c_dt)
subroutine fv3jedi_increment_axpy_state_c(c_key_self, c_zz, c_key_rhs)
subroutine, public self_schur(self, rhs)
subroutine fv3jedi_increment_add_incr_c(c_key_self, c_key_rhs)
subroutine fv3jedi_increment_ug_coord_c(c_key_inc, c_key_ug, c_colocated, c_key_geom)
subroutine, public axpy_state(self, zz, rhs)
subroutine, public write_file(geom, inc, c_conf, vdate)
subroutine, public dot_prod(inc1, inc2, zprod)
subroutine, public self_add(self, rhs)
subroutine fv3jedi_increment_dot_prod_c(c_key_inc1, c_key_inc2, c_prod)
subroutine, public copy(self, rhs)
Fortran derived type to hold FV3JEDI state.
subroutine, public jnormgrad(self, geom, ref, c_conf)
Fortran module handling interpolation trajectory for the FV3 model.
subroutine fv3jedi_increment_read_file_c(c_key_geom, c_key_inc, c_conf, c_dt)
type(registry_t), public fv3jedi_increment_registry
Linked list interface - defines registry_t type.
type(registry_t), public fv3jedi_getvalues_traj_registry
Linked list interface - defines registry_t type.
subroutine, public incrms(inc, prms)
subroutine, public diff_incr(lhs, x1, x2)
subroutine fv3jedi_increment_dirac_c(c_key_self, c_conf, c_key_geom)
subroutine fv3jedi_increment_self_sub_c(c_key_self, c_key_rhs)
subroutine, public self_sub(self, rhs)
subroutine fv3jedi_increment_increment_to_ug_c(c_key_inc, c_key_ug, c_colocated)
Fortran derived type to hold geometry data for the FV3JEDI model.
subroutine fv3jedi_increment_diff_incr_c(c_key_lhs, c_key_x1, c_key_x2)
subroutine fv3jedi_increment_getvalues_tl_c(c_key_geom, c_key_inc, c_key_loc, c_vars, c_key_gom, c_key_traj)
subroutine, public ug_coord(self, ug, colocated, geom)
subroutine fv3jedi_increment_sizes_c(c_key_self, nx, ny, nv)
subroutine, public random(self)
Fortran module to handle variables for the FV3JEDI model.
subroutine, public delete(self)
type(registry_t), public ioda_locs_registry
Linked list interface - defines registry_t type.
subroutine fv3jedi_increment_self_schur_c(c_key_self, c_key_rhs)
subroutine, public increment_to_ug(self, ug, colocated)
subroutine fv3jedi_increment_copy_c(c_key_self, c_key_rhs)
subroutine, public fv3jedi_vars_create(c_vars, self)
subroutine, public add_incr(self, rhs)
subroutine fv3jedi_increment_change_resol_c(c_key_inc, c_key_rhs)
subroutine fv3jedi_increment_increment_from_ug_c(c_key_inc, c_key_ug)
type(registry_t), public unstructured_grid_registry
Linked list interface - defines registry_t type.
type(registry_t), public ufo_geovals_registry
Linked list interface - defines registry_t type.
subroutine fv3jedi_increment_getvalues_ad_c(c_key_geom, c_key_inc, c_key_loc, c_vars, c_key_gom, c_key_traj)
Utilities for increment for the FV3JEDI model.
Handle increment for the FV3JEDI model.
subroutine, public axpy_inc(self, zz, rhs)
Utilities for state for the FV3JEDI model.
subroutine, public read_file(geom, inc, c_conf, vdate)
Fortran module handling geometry for the FV3 model.
type(registry_t), public fv3jedi_state_registry
Linked list interface - defines registry_t type.
subroutine, public zeros(self)
subroutine fv3jedi_increment_self_add_c(c_key_self, c_key_rhs)
subroutine, public increment_from_ug(self, ug)
Fortran module handling observation locations.
subroutine fv3jedi_increment_gpnorm_c(c_key_inc, kf, pstat)
Fortran module for handling generic unstructured grid.
subroutine, public create(self, geom, vars)
subroutine, public self_mul(self, zz)
subroutine fv3jedi_increment_axpy_inc_c(c_key_self, c_zz, c_key_rhs)
Fortran module handling geometry for the FV3 model.
subroutine, public ufo_vars_setup(self, c_vars)
subroutine fv3jedi_increment_jnormgrad_c(c_key_self, c_key_geom, c_key_state, c_conf)