FV3-JEDI
fv3jedi_increment_interface_mod.F90
Go to the documentation of this file.
1 ! (C) Copyright 2017-2020 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 
10 ! iso
11 use iso_c_binding
12 
13 ! fckit
14 use fckit_configuration_module, only: fckit_configuration
15 
16 ! atlas
17 use atlas_module, only: atlas_fieldset
18 
19 ! oops
20 use datetime_mod
21 use duration_mod
22 use oops_variables_mod
23 
24 ! fv3jedi
33 
34 implicit none
35 private
37 
38 ! --------------------------------------------------------------------------------------------------
39 
40 contains
41 
42 ! --------------------------------------------------------------------------------------------------
43 
44 subroutine fv3jedi_increment_create_c(c_key_self, c_key_geom, c_vars) &
45  bind(c,name='fv3jedi_increment_create_f90')
46 
47 implicit none
48 integer(c_int), intent(inout) :: c_key_self
49 integer(c_int), intent(in) :: c_key_geom !< Geometry
50 type(c_ptr), value, intent(in) :: c_vars !< List of variables
51 
52 type(fv3jedi_increment), pointer :: self
53 type(fv3jedi_geom), pointer :: geom
54 type(oops_variables) :: vars
55 type(fckit_configuration) :: f_conf
56 
57 call fv3jedi_geom_registry%get(c_key_geom, geom)
59 call fv3jedi_increment_registry%add(c_key_self)
60 call fv3jedi_increment_registry%get(c_key_self, self)
61 
62 vars = oops_variables(c_vars)
63 call self%create(geom, vars, .true.)
64 
65 end subroutine fv3jedi_increment_create_c
66 
67 ! --------------------------------------------------------------------------------------------------
68 
69 subroutine fv3jedi_increment_delete_c(c_key_self) bind(c,name='fv3jedi_increment_delete_f90')
70 
71 implicit none
72 integer(c_int), intent(inout) :: c_key_self
73 type(fv3jedi_increment), pointer :: self
74 
75 call fv3jedi_increment_registry%get(c_key_self, self)
76 
77 call self%delete()
78 
79 call fv3jedi_increment_registry%remove(c_key_self)
80 
81 end subroutine fv3jedi_increment_delete_c
82 
83 ! --------------------------------------------------------------------------------------------------
84 
85 subroutine fv3jedi_increment_zero_c(c_key_self) bind(c,name='fv3jedi_increment_zero_f90')
86 
87 implicit none
88 integer(c_int), intent(in) :: c_key_self
89 type(fv3jedi_increment), pointer :: self
90 
91 call fv3jedi_increment_registry%get(c_key_self, self)
92 call self%zero()
93 
94 end subroutine fv3jedi_increment_zero_c
95 
96 ! --------------------------------------------------------------------------------------------------
97 
98 subroutine fv3jedi_increment_ones_c(c_key_self) bind(c,name='fv3jedi_increment_ones_f90')
99 
100 implicit none
101 integer(c_int), intent(in) :: c_key_self
102 type(fv3jedi_increment), pointer :: self
103 
104 call fv3jedi_increment_registry%get(c_key_self, self)
105 call self%ones()
106 
107 end subroutine fv3jedi_increment_ones_c
108 
109 ! --------------------------------------------------------------------------------------------------
110 
111 subroutine fv3jedi_increment_dirac_c(c_key_self,c_conf,c_key_geom) &
112  bind(c,name='fv3jedi_increment_dirac_f90')
113 
114 implicit none
115 integer(c_int), intent(in) :: c_key_self
116 type(c_ptr), intent(in) :: c_conf !< Configuration
117 integer(c_int), intent(in) :: c_key_geom !< Geometry
118 type(fv3jedi_increment), pointer :: self
119 type(fv3jedi_geom), pointer :: geom
120 
121 call fv3jedi_geom_registry%get(c_key_geom, geom)
122 call fv3jedi_increment_registry%get(c_key_self, self)
123 call self%dirac(c_conf,geom)
124 
125 end subroutine fv3jedi_increment_dirac_c
126 
127 ! --------------------------------------------------------------------------------------------------
128 
129 subroutine fv3jedi_increment_random_c(c_key_self) bind(c,name='fv3jedi_increment_random_f90')
130 
131 implicit none
132 integer(c_int), intent(in) :: c_key_self
133 type(fv3jedi_increment), pointer :: self
134 
135 call fv3jedi_increment_registry%get(c_key_self, self)
136 call self%random()
137 
138 end subroutine fv3jedi_increment_random_c
139 
140 ! --------------------------------------------------------------------------------------------------
141 
142 subroutine fv3jedi_increment_set_atlas_c(c_key_self, c_key_geom, c_vars, c_afieldset) &
143  & bind(c,name='fv3jedi_increment_set_atlas_f90')
144 
145 implicit none
146 integer(c_int), intent(in) :: c_key_self
147 integer(c_int), intent(in) :: c_key_geom
148 type(c_ptr), value, intent(in) :: c_vars
149 type(c_ptr), intent(in), value :: c_afieldset
150 
151 type(fv3jedi_increment), pointer :: self
152 type(fv3jedi_geom), pointer :: geom
153 type(oops_variables) :: vars
154 type(atlas_fieldset) :: afieldset
155 
156 call fv3jedi_increment_registry%get(c_key_self, self)
157 call fv3jedi_geom_registry%get(c_key_geom, geom)
158 vars = oops_variables(c_vars)
159 afieldset = atlas_fieldset(c_afieldset)
160 
161 call self%set_atlas(geom, vars, afieldset)
162 
163 end subroutine fv3jedi_increment_set_atlas_c
164 
165 ! --------------------------------------------------------------------------------------------------
166 
167 subroutine fv3jedi_increment_to_atlas_c(c_key_self, c_key_geom, c_vars, c_afieldset) &
168  & bind(c,name='fv3jedi_increment_to_atlas_f90')
169 
170 implicit none
171 integer(c_int), intent(in) :: c_key_self
172 integer(c_int), intent(in) :: c_key_geom
173 type(c_ptr), value, intent(in) :: c_vars
174 type(c_ptr), intent(in), value :: c_afieldset
175 
176 type(fv3jedi_increment), pointer :: self
177 type(fv3jedi_geom), pointer :: geom
178 type(oops_variables) :: vars
179 type(atlas_fieldset) :: afieldset
180 
181 call fv3jedi_increment_registry%get(c_key_self, self)
182 call fv3jedi_geom_registry%get(c_key_geom, geom)
183 vars = oops_variables(c_vars)
184 afieldset = atlas_fieldset(c_afieldset)
185 
186 call self%to_atlas(geom, vars, afieldset)
187 
188 end subroutine fv3jedi_increment_to_atlas_c
189 
190 ! --------------------------------------------------------------------------------------------------
191 
192 subroutine fv3jedi_increment_from_atlas_c(c_key_self, c_key_geom, c_vars, c_afieldset) &
193  & bind(c,name='fv3jedi_increment_from_atlas_f90')
194 
195 implicit none
196 integer(c_int), intent(in) :: c_key_self
197 integer(c_int), intent(in) :: c_key_geom
198 type(c_ptr), value, intent(in) :: c_vars
199 type(c_ptr), intent(in), value :: c_afieldset
200 
201 type(fv3jedi_increment), pointer :: self
202 type(fv3jedi_geom), pointer :: geom
203 type(oops_variables) :: vars
204 type(atlas_fieldset) :: afieldset
205 
206 call fv3jedi_increment_registry%get(c_key_self, self)
207 call fv3jedi_geom_registry%get(c_key_geom, geom)
208 vars = oops_variables(c_vars)
209 afieldset = atlas_fieldset(c_afieldset)
210 
211 call self%from_atlas(geom, vars, afieldset)
212 
213 end subroutine fv3jedi_increment_from_atlas_c
214 
215 ! --------------------------------------------------------------------------------------------------
216 
217 subroutine fv3jedi_increment_copy_c(c_key_self,c_key_rhs) bind(c,name='fv3jedi_increment_copy_f90')
218 
219 implicit none
220 integer(c_int), intent(in) :: c_key_self
221 integer(c_int), intent(in) :: c_key_rhs
222 
223 type(fv3jedi_increment), pointer :: self
224 type(fv3jedi_increment), pointer :: other
225 call fv3jedi_increment_registry%get(c_key_self, self)
226 call fv3jedi_increment_registry%get(c_key_rhs,other)
227 
228 call self%copy(other)
229 
230 end subroutine fv3jedi_increment_copy_c
231 
232 ! --------------------------------------------------------------------------------------------------
233 
234 subroutine fv3jedi_increment_self_add_c(c_key_self,c_key_rhs) &
235  bind(c,name='fv3jedi_increment_self_add_f90')
236 
237 implicit none
238 integer(c_int), intent(in) :: c_key_self
239 integer(c_int), intent(in) :: c_key_rhs
240 
241 type(fv3jedi_increment), pointer :: self
242 type(fv3jedi_increment), pointer :: rhs
243 call fv3jedi_increment_registry%get(c_key_self, self)
244 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
245 
246 call self%self_add(rhs)
247 
248 end subroutine fv3jedi_increment_self_add_c
249 
250 ! --------------------------------------------------------------------------------------------------
251 
252 subroutine fv3jedi_increment_self_schur_c(c_key_self,c_key_rhs) &
253  bind(c,name='fv3jedi_increment_self_schur_f90')
254 
255 implicit none
256 integer(c_int), intent(in) :: c_key_self
257 integer(c_int), intent(in) :: c_key_rhs
258 
259 type(fv3jedi_increment), pointer :: self
260 type(fv3jedi_increment), pointer :: rhs
261 call fv3jedi_increment_registry%get(c_key_self, self)
262 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
263 
264 call self%self_schur(rhs)
265 
266 end subroutine fv3jedi_increment_self_schur_c
267 
268 ! --------------------------------------------------------------------------------------------------
269 
270 subroutine fv3jedi_increment_self_sub_c(c_key_self,c_key_rhs) &
271  bind(c,name='fv3jedi_increment_self_sub_f90')
272 
273 implicit none
274 integer(c_int), intent(in) :: c_key_self
275 integer(c_int), intent(in) :: c_key_rhs
276 
277 type(fv3jedi_increment), pointer :: self
278 type(fv3jedi_increment), pointer :: rhs
279 call fv3jedi_increment_registry%get(c_key_self, self)
280 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
281 
282 call self%self_sub(rhs)
283 
284 end subroutine fv3jedi_increment_self_sub_c
285 
286 ! --------------------------------------------------------------------------------------------------
287 
288 subroutine fv3jedi_increment_self_mul_c(c_key_self,c_zz) &
289  bind(c,name='fv3jedi_increment_self_mul_f90')
290 
291 implicit none
292 integer(c_int), intent(in) :: c_key_self
293 real(c_double), intent(in) :: c_zz
294 type(fv3jedi_increment), pointer :: self
295 real(kind=kind_real) :: zz
296 
297 call fv3jedi_increment_registry%get(c_key_self, self)
298 zz = c_zz
299 
300 call self%self_mul(zz)
301 
302 end subroutine fv3jedi_increment_self_mul_c
303 
304 ! --------------------------------------------------------------------------------------------------
305 
306 subroutine fv3jedi_increment_axpy_inc_c(c_key_self,c_zz,c_key_rhs) &
307  bind(c,name='fv3jedi_increment_axpy_inc_f90')
308 
309 implicit none
310 integer(c_int), intent(in) :: c_key_self
311 real(c_double), intent(in) :: c_zz
312 integer(c_int), intent(in) :: c_key_rhs
313 
314 type(fv3jedi_increment), pointer :: self
315 type(fv3jedi_increment), pointer :: rhs
316 real(kind=kind_real) :: zz
317 
318 call fv3jedi_increment_registry%get(c_key_self, self)
319 call fv3jedi_increment_registry%get(c_key_rhs,rhs)
320 zz = c_zz
321 
322 call self%accumul(zz,rhs)
323 
324 end subroutine fv3jedi_increment_axpy_inc_c
325 
326 ! --------------------------------------------------------------------------------------------------
327 
328 subroutine fv3jedi_increment_axpy_state_c(c_key_self,c_zz,c_key_rhs) &
329  bind(c,name='fv3jedi_increment_axpy_state_f90')
330 
331 implicit none
332 integer(c_int), intent(in) :: c_key_self
333 real(c_double), intent(in) :: c_zz
334 integer(c_int), intent(in) :: c_key_rhs
335 
336 type(fv3jedi_increment), pointer :: self
337 type(fv3jedi_state), pointer :: rhs
338 real(kind=kind_real) :: zz
339 
340 call fv3jedi_increment_registry%get(c_key_self, self)
341 call fv3jedi_state_registry%get(c_key_rhs,rhs)
342 zz = c_zz
343 
344 call self%accumul(zz,rhs)
345 !call self%axpy_state(zz,rhs%fields)
346 
347 end subroutine fv3jedi_increment_axpy_state_c
348 
349 ! --------------------------------------------------------------------------------------------------
350 
351 subroutine fv3jedi_increment_dot_prod_c(c_key_inc1,c_key_inc2,c_prod) &
352  bind(c,name='fv3jedi_increment_dot_prod_f90')
353 
354 implicit none
355 integer(c_int), intent(in) :: c_key_inc1, c_key_inc2
356 real(c_double), intent(inout) :: c_prod
357 real(kind=kind_real) :: zz
358 type(fv3jedi_increment), pointer :: self, inc2
359 
360 call fv3jedi_increment_registry%get(c_key_inc1,self)
361 call fv3jedi_increment_registry%get(c_key_inc2,inc2)
362 
363 call self%dot_prod(inc2,zz)
364 
365 c_prod = zz
366 
367 end subroutine fv3jedi_increment_dot_prod_c
368 
369 ! --------------------------------------------------------------------------------------------------
370 
371 subroutine fv3jedi_increment_diff_incr_c(c_key_lhs,c_key_x1,c_key_x2,c_key_geom) &
372  bind(c,name='fv3jedi_increment_diff_incr_f90')
373 
374 implicit none
375 integer(c_int), intent(in) :: c_key_lhs
376 integer(c_int), intent(in) :: c_key_x1
377 integer(c_int), intent(in) :: c_key_x2
378 integer(c_int), intent(in) :: c_key_geom
379 
380 type(fv3jedi_increment), pointer :: self
381 type(fv3jedi_state), pointer :: x1
382 type(fv3jedi_state), pointer :: x2
383 type(fv3jedi_geom), pointer :: geom
384 
385 call fv3jedi_increment_registry%get(c_key_lhs,self)
386 call fv3jedi_state_registry%get(c_key_x1,x1)
387 call fv3jedi_state_registry%get(c_key_x2,x2)
388 call fv3jedi_geom_registry%get(c_key_geom, geom)
389 
390 call self%diff_incr(x1%fields,x2%fields,geom)
391 
392 ! Datetime
393 self%calendar_type = x1%calendar_type
394 self%date_init = x1%date_init
395 
396 end subroutine fv3jedi_increment_diff_incr_c
397 
398 ! --------------------------------------------------------------------------------------------------
399 
400 subroutine fv3jedi_increment_change_resol_c(c_key_inc,c_key_geom,c_key_rhs,c_key_geom_rhs) &
401  bind(c,name='fv3jedi_increment_change_resol_f90')
402 
403 implicit none
404 integer(c_int), intent(in) :: c_key_inc
405 integer(c_int), intent(in) :: c_key_geom
406 integer(c_int), intent(in) :: c_key_rhs
407 integer(c_int), intent(in) :: c_key_geom_rhs
408 
409 type(fv3jedi_increment), pointer :: self, other
410 type(fv3jedi_geom), pointer :: geom, geom_other
411 
412 call fv3jedi_increment_registry%get(c_key_inc,self)
413 call fv3jedi_geom_registry%get(c_key_geom, geom)
414 call fv3jedi_increment_registry%get(c_key_rhs,other)
415 call fv3jedi_geom_registry%get(c_key_geom_rhs, geom_other)
416 
417 call self%change_resol(geom, other, geom_other)
418 
420 
421 ! --------------------------------------------------------------------------------------------------
422 
423 subroutine fv3jedi_increment_read_file_c(c_key_geom, c_key_inc, c_conf, c_dt) &
424  bind(c,name='fv3jedi_increment_read_file_f90')
425 
426 implicit none
427 integer(c_int), intent(in) :: c_key_inc !< Increment
428 type(c_ptr), intent(in) :: c_conf !< Configuration
429 type(c_ptr), intent(inout) :: c_dt !< DateTime
430 integer(c_int), intent(in) :: c_key_geom !< Geometry
431 
432 type(fv3jedi_increment), pointer :: self
433 type(datetime) :: fdate
434 type(fv3jedi_geom), pointer :: geom
435 type(fckit_configuration) :: f_conf
436 
437 call fv3jedi_geom_registry%get(c_key_geom, geom)
438 call fv3jedi_increment_registry%get(c_key_inc,self)
439 call c_f_datetime(c_dt, fdate)
440 f_conf = fckit_configuration(c_conf)
441 call self%read(geom, f_conf, fdate)
442 
443 end subroutine fv3jedi_increment_read_file_c
444 
445 ! --------------------------------------------------------------------------------------------------
446 
447 subroutine fv3jedi_increment_write_file_c(c_key_geom, c_key_inc, c_conf, c_dt) &
448  bind(c,name='fv3jedi_increment_write_file_f90')
449 
450 implicit none
451 integer(c_int), intent(in) :: c_key_inc !< Increment
452 type(c_ptr), intent(in) :: c_conf !< Configuration
453 type(c_ptr), intent(in) :: c_dt !< DateTime
454 integer(c_int), intent(in) :: c_key_geom !< Geometry
455 
456 type(fv3jedi_increment), pointer :: self
457 type(datetime) :: fdate
458 type(fv3jedi_geom), pointer :: geom
459 type(fckit_configuration) :: f_conf
460 
461 call fv3jedi_geom_registry%get(c_key_geom, geom)
462 call fv3jedi_increment_registry%get(c_key_inc,self)
463 call c_f_datetime(c_dt, fdate)
464 f_conf = fckit_configuration(c_conf)
465 call self%write(geom, f_conf, fdate)
466 
467 end subroutine fv3jedi_increment_write_file_c
468 
469 ! --------------------------------------------------------------------------------------------------
470 
471 subroutine fv3jedi_increment_norm_c(c_key_inc, prms) bind(c,name='fv3jedi_increment_norm_f90')
472 
473 implicit none
474 integer(c_int), intent(in) :: c_key_inc
475 real(c_double), intent(inout) :: prms
476 
477 type(fv3jedi_increment), pointer :: self
478 real(kind=kind_real) :: zz
479 
480 call fv3jedi_increment_registry%get(c_key_inc,self)
481 
482 call self%norm(zz)
483 
484 prms = zz
485 
486 end subroutine fv3jedi_increment_norm_c
487 
488 ! --------------------------------------------------------------------------------------------------
489 
490 subroutine fv3jedi_increment_sizes_c(c_key_self,inc_size) bind(c,name='fv3jedi_increment_sizes_f90')
491 
492 implicit none
493 integer(c_int), intent(in) :: c_key_self
494 integer(c_int), intent(inout) :: inc_size
495 type(fv3jedi_increment), pointer :: self
496 integer var, i, j, k
497 
498 call fv3jedi_increment_registry%get(c_key_self, self)
499 
500 inc_size = 0
501 do var = 1, self%nf
502  inc_size = inc_size + (self%fields(var)%iec-self%fields(var)%isc+1)*&
503  (self%fields(var)%jec-self%fields(var)%jsc+1)*&
504  self%fields(var)%npz
505 end do
506 
507 end subroutine fv3jedi_increment_sizes_c
508 
509 ! --------------------------------------------------------------------------------------------------
510 
511 subroutine fv3jedi_increment_serialize_c(c_key_self,c_vsize,c_vect_inc) &
512  bind(c,name='fv3jedi_increment_serialize_f90')
513 
514 implicit none
515 
516 ! Passed variables
517 integer(c_int),intent(in) :: c_key_self !< Increment
518 integer(c_int),intent(in) :: c_vsize !< Size
519 real(c_double),intent(out) :: c_vect_inc(c_vsize) !< Vector
520 
521 type(fv3jedi_increment),pointer :: self
522 
523 call fv3jedi_increment_registry%get(c_key_self, self)
524 ! Call Fortran
525 call self%serialize(c_vsize,c_vect_inc)
526 
527 end subroutine fv3jedi_increment_serialize_c
528 
529 ! --------------------------------------------------------------------------------------------------
530 
531 subroutine fv3jedi_increment_deserialize_c(c_key_self,c_vsize,c_vect_inc,c_index) &
532  bind(c,name='fv3jedi_increment_deserialize_f90')
533 
534 implicit none
535 
536 ! Passed variables
537 integer(c_int),intent(in) :: c_key_self !< Increment
538 integer(c_int),intent(in) :: c_vsize !< Size
539 real(c_double),intent(in) :: c_vect_inc(c_vsize) !< Vector
540 integer(c_int), intent(inout):: c_index !< Index
541 
542 type(fv3jedi_increment),pointer :: self
543 
544 call fv3jedi_increment_registry%get(c_key_self, self)
545 
546 ! Call Fortran
547 call self%deserialize(c_vsize,c_vect_inc,c_index)
548 
549 
550 end subroutine fv3jedi_increment_deserialize_c
551 
552 ! --------------------------------------------------------------------------------------------------
553 
554 subroutine fv3jedi_increment_getpoint_c(c_key_self, c_key_iter, values, values_len) &
555  bind(c,name='fv3jedi_increment_getpoint_f90')
556 
557 implicit none
558 
559 ! Passed variables
560 integer(c_int),intent(in) :: c_key_self !< Increment
561 integer(c_int), intent(in) :: c_key_iter
562 integer(c_int), intent(in) :: values_len
563 real(c_double), intent(inout) :: values(values_len)
564 
565 type(fv3jedi_increment), pointer :: self
566 type(fv3jedi_geom_iter), pointer :: iter
567 
568 call fv3jedi_increment_registry%get(c_key_self, self)
569 call fv3jedi_geom_iter_registry%get(c_key_iter,iter)
570 
571 call self%getpoint(iter, values)
572 
573 end subroutine fv3jedi_increment_getpoint_c
574 
575 ! --------------------------------------------------------------------------------------------------
576 
577 subroutine fv3jedi_increment_setpoint_c(c_key_self, c_key_iter, values, values_len) &
578  bind(c,name='fv3jedi_increment_setpoint_f90')
579 
580 implicit none
581 
582 ! Passed variables
583 integer(c_int),intent(inout) :: c_key_self !< Increment
584 integer(c_int), intent(in) :: c_key_iter
585 integer(c_int), intent(in) :: values_len
586 real(c_double), intent(in) :: values(values_len)
587 
588 type(fv3jedi_increment), pointer :: self
589 type(fv3jedi_geom_iter), pointer :: iter
590 
591 call fv3jedi_increment_registry%get(c_key_self, self)
592 call fv3jedi_geom_iter_registry%get(c_key_iter,iter)
593 
594 call self%setpoint(iter, values)
595 
596 end subroutine fv3jedi_increment_setpoint_c
597 
598 ! --------------------------------------------------------------------------------------------------
599 
600 subroutine fv3jedi_increment_getnfieldsncube_c(c_key_self, c_number_fields, c_cube_size) &
601  bind(c,name='fv3jedi_increment_getnfieldsncube_f90')
602 
603 implicit none
604 integer(c_int), intent(in) :: c_key_self
605 integer(c_int), intent(out) :: c_number_fields
606 integer(c_int), intent(out) :: c_cube_size
607 
608 type(fv3jedi_increment), pointer :: self
609 
610 call fv3jedi_increment_registry%get(c_key_self,self)
611 
612 c_number_fields = self%nf
613 c_cube_size = self%npx-1
614 
616 
617 ! --------------------------------------------------------------------------------------------------
618 
619 subroutine fv3jedi_increment_getminmaxrms_c(c_key_self, c_f_num, c_f_name_len, c_f_name, &
620  c_minmaxrms ) &
621  bind(c,name='fv3jedi_increment_getminmaxrms_f90')
622 
623 implicit none
624 integer(c_int), intent(in) :: c_key_self
625 integer(c_int), intent(in) :: c_f_num
626 integer(c_int), intent(in) :: c_f_name_len
627 character(len=1,kind=c_char), intent(inout) :: c_f_name(c_f_name_len)
628 real(c_double), intent(inout) :: c_minmaxrms(3)
629 
630 type(fv3jedi_increment), pointer :: self
631 character(len=field_clen) :: field_name
632 integer :: n
633 
634 call fv3jedi_increment_registry%get(c_key_self,self)
635 
636 call self%minmaxrms(c_f_num, field_name, c_minmaxrms)
637 
638 do n = 1,c_f_name_len
639  c_f_name(n) = field_name(n:n)
640 enddo
641 
643 
644 ! --------------------------------------------------------------------------------------------------
645 
fv3jedi_increment_interface_mod::fv3jedi_increment_self_schur_c
subroutine fv3jedi_increment_self_schur_c(c_key_self, c_key_rhs)
Definition: fv3jedi_increment_interface_mod.F90:254
fv3jedi_increment_interface_mod::fv3jedi_increment_to_atlas_c
subroutine fv3jedi_increment_to_atlas_c(c_key_self, c_key_geom, c_vars, c_afieldset)
Definition: fv3jedi_increment_interface_mod.F90:169
fv3jedi_state_mod::fv3jedi_state
Fortran derived type to hold FV3JEDI state.
Definition: fv3jedi_state_mod.F90:30
fv3jedi_field_mod
Definition: fv3jedi_field_mod.f90:6
fv3jedi_increment_interface_mod::fv3jedi_increment_axpy_state_c
subroutine fv3jedi_increment_axpy_state_c(c_key_self, c_zz, c_key_rhs)
Definition: fv3jedi_increment_interface_mod.F90:330
fv3jedi_increment_interface_mod::fv3jedi_increment_self_mul_c
subroutine fv3jedi_increment_self_mul_c(c_key_self, c_zz)
Definition: fv3jedi_increment_interface_mod.F90:290
fv3jedi_increment_interface_mod::fv3jedi_increment_write_file_c
subroutine fv3jedi_increment_write_file_c(c_key_geom, c_key_inc, c_conf, c_dt)
Definition: fv3jedi_increment_interface_mod.F90:449
fv3jedi_geom_iter_mod
Definition: fv3jedi_geom_iter_mod.F90:7
fv3jedi_state_interface_mod
Definition: fv3jedi_state_interface_mod.F90:8
fv3jedi_state_mod
Definition: fv3jedi_state_mod.F90:6
fv3jedi_geom_interface_mod::fv3jedi_geom_registry
type(registry_t), public fv3jedi_geom_registry
Linked list interface - defines registry_t type.
Definition: fv3jedi_geom_interface_mod.F90:34
fv3jedi_increment_interface_mod::fv3jedi_increment_getnfieldsncube_c
subroutine fv3jedi_increment_getnfieldsncube_c(c_key_self, c_number_fields, c_cube_size)
Definition: fv3jedi_increment_interface_mod.F90:602
fv3jedi_state_interface_mod::fv3jedi_state_registry
type(registry_t), public fv3jedi_state_registry
Linked list interface - defines registry_t type.
Definition: fv3jedi_state_interface_mod.F90:40
fv3jedi_geom_mod
Fortran module handling geometry for the FV3 model.
Definition: fv3jedi_geom_mod.f90:8
fv3jedi_geom_iter_mod::fv3jedi_geom_iter
Definition: fv3jedi_geom_iter_mod.F90:22
fv3jedi_increment_mod
Definition: fv3jedi_increment_mod.F90:6
fv3jedi_increment_interface_mod::fv3jedi_increment_diff_incr_c
subroutine fv3jedi_increment_diff_incr_c(c_key_lhs, c_key_x1, c_key_x2, c_key_geom)
Definition: fv3jedi_increment_interface_mod.F90:373
fv3jedi_geom_mod::fv3jedi_geom
Fortran derived type to hold geometry data for the FV3JEDI model.
Definition: fv3jedi_geom_mod.f90:46
fv3jedi_increment_interface_mod::fv3jedi_increment_axpy_inc_c
subroutine fv3jedi_increment_axpy_inc_c(c_key_self, c_zz, c_key_rhs)
Definition: fv3jedi_increment_interface_mod.F90:308
fv3jedi_increment_interface_mod::fv3jedi_increment_ones_c
subroutine fv3jedi_increment_ones_c(c_key_self)
Definition: fv3jedi_increment_interface_mod.F90:99
fv3jedi_increment_interface_mod::fv3jedi_increment_change_resol_c
subroutine fv3jedi_increment_change_resol_c(c_key_inc, c_key_geom, c_key_rhs, c_key_geom_rhs)
Definition: fv3jedi_increment_interface_mod.F90:402
fv3jedi_increment_interface_mod::fv3jedi_increment_create_c
subroutine fv3jedi_increment_create_c(c_key_self, c_key_geom, c_vars)
Definition: fv3jedi_increment_interface_mod.F90:46
fv3jedi_increment_interface_mod::fv3jedi_increment_dirac_c
subroutine fv3jedi_increment_dirac_c(c_key_self, c_conf, c_key_geom)
Definition: fv3jedi_increment_interface_mod.F90:113
fv3jedi_increment_interface_mod::fv3jedi_increment_self_sub_c
subroutine fv3jedi_increment_self_sub_c(c_key_self, c_key_rhs)
Definition: fv3jedi_increment_interface_mod.F90:272
fv3jedi_increment_interface_mod::fv3jedi_increment_delete_c
subroutine fv3jedi_increment_delete_c(c_key_self)
Definition: fv3jedi_increment_interface_mod.F90:70
fv3jedi_increment_interface_mod::fv3jedi_increment_set_atlas_c
subroutine fv3jedi_increment_set_atlas_c(c_key_self, c_key_geom, c_vars, c_afieldset)
Definition: fv3jedi_increment_interface_mod.F90:144
fv3jedi_increment_interface_mod::fv3jedi_increment_copy_c
subroutine fv3jedi_increment_copy_c(c_key_self, c_key_rhs)
Definition: fv3jedi_increment_interface_mod.F90:218
fv3jedi_increment_interface_mod::fv3jedi_increment_getpoint_c
subroutine fv3jedi_increment_getpoint_c(c_key_self, c_key_iter, values, values_len)
Definition: fv3jedi_increment_interface_mod.F90:556
fv3jedi_increment_interface_mod
Definition: fv3jedi_increment_interface_mod.F90:8
fv3jedi_increment_interface_mod::fv3jedi_increment_setpoint_c
subroutine fv3jedi_increment_setpoint_c(c_key_self, c_key_iter, values, values_len)
Definition: fv3jedi_increment_interface_mod.F90:579
fv3jedi_increment_interface_mod::fv3jedi_increment_serialize_c
subroutine fv3jedi_increment_serialize_c(c_key_self, c_vsize, c_vect_inc)
Definition: fv3jedi_increment_interface_mod.F90:513
fv3jedi_geom_interface_mod
Fortran module handling geometry for the FV3 model.
Definition: fv3jedi_geom_interface_mod.F90:8
fv3jedi_increment_interface_mod::fv3jedi_increment_deserialize_c
subroutine fv3jedi_increment_deserialize_c(c_key_self, c_vsize, c_vect_inc, c_index)
Definition: fv3jedi_increment_interface_mod.F90:533
fv3jedi_increment_interface_mod::fv3jedi_increment_norm_c
subroutine fv3jedi_increment_norm_c(c_key_inc, prms)
Definition: fv3jedi_increment_interface_mod.F90:472
fv3jedi_kinds_mod::kind_real
integer, parameter, public kind_real
Definition: fv3jedi_kinds_mod.f90:14
fv3jedi_increment_interface_mod::fv3jedi_increment_random_c
subroutine fv3jedi_increment_random_c(c_key_self)
Definition: fv3jedi_increment_interface_mod.F90:130
fv3jedi_increment_interface_mod::fv3jedi_increment_self_add_c
subroutine fv3jedi_increment_self_add_c(c_key_self, c_key_rhs)
Definition: fv3jedi_increment_interface_mod.F90:236
fv3jedi_increment_interface_mod::fv3jedi_increment_from_atlas_c
subroutine fv3jedi_increment_from_atlas_c(c_key_self, c_key_geom, c_vars, c_afieldset)
Definition: fv3jedi_increment_interface_mod.F90:194
fv3jedi_increment_interface_mod::fv3jedi_increment_read_file_c
subroutine fv3jedi_increment_read_file_c(c_key_geom, c_key_inc, c_conf, c_dt)
Definition: fv3jedi_increment_interface_mod.F90:425
fv3jedi_increment_interface_mod::fv3jedi_increment_zero_c
subroutine fv3jedi_increment_zero_c(c_key_self)
Definition: fv3jedi_increment_interface_mod.F90:86
fv3jedi_kinds_mod
Definition: fv3jedi_kinds_mod.f90:6
fv3jedi_increment_interface_mod::fv3jedi_increment_sizes_c
subroutine fv3jedi_increment_sizes_c(c_key_self, inc_size)
Definition: fv3jedi_increment_interface_mod.F90:491
fv3jedi_increment_interface_mod::fv3jedi_increment_getminmaxrms_c
subroutine fv3jedi_increment_getminmaxrms_c(c_key_self, c_f_num, c_f_name_len, c_f_name, c_minmaxrms)
Definition: fv3jedi_increment_interface_mod.F90:622
fv3jedi_geom_iter_mod::fv3jedi_geom_iter_registry
type(registry_t), public fv3jedi_geom_iter_registry
Linked list interface - defines registry_t type.
Definition: fv3jedi_geom_iter_mod.F90:34
fv3jedi_increment_interface_mod::fv3jedi_increment_dot_prod_c
subroutine fv3jedi_increment_dot_prod_c(c_key_inc1, c_key_inc2, c_prod)
Definition: fv3jedi_increment_interface_mod.F90:353
fv3jedi_increment_mod::fv3jedi_increment_registry
type(registry_t), public fv3jedi_increment_registry
Linked list interface - defines registry_t type.
Definition: fv3jedi_increment_mod.F90:60
fv3jedi_increment_mod::fv3jedi_increment
Definition: fv3jedi_increment_mod.F90:34
fv3jedi_field_mod::field_clen
integer, parameter, public field_clen
Definition: fv3jedi_field_mod.f90:31