FV3-JEDI
fv3jedi_vc_model2geovals.interface.F90
Go to the documentation of this file.
1 ! (C) Copyright 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 use iso_c_binding
11 
12 use datetime_mod
13 
14 use fckit_configuration_module, only: fckit_configuration
15 
21 
22 implicit none
23 
24 private
26 
27 ! --------------------------------------------------------------------------------------------------
28 
29 #define LISTED_TYPE fv3jedi_vc_model2geovals
30 
31 !> Linked list interface - defines registry_t type
32 #include "oops/util/linkedList_i.f"
33 
34 !> Global registry
36 
37 ! --------------------------------------------------------------------------------------------------
38 
39 contains
40 
41 ! --------------------------------------------------------------------------------------------------
42 
43 !> Linked list implementation
44 #include "oops/util/linkedList_c.f"
45 
46 ! --------------------------------------------------------------------------------------------------
47 
48 subroutine c_fv3jedi_vc_model2geovals_create(c_key_self, c_key_geom, c_conf) &
49  bind(c, name='fv3jedi_vc_model2geovals_create_f90')
50 
51 implicit none
52 integer(c_int), intent(inout) :: c_key_self
53 integer(c_int), intent(in) :: c_key_geom
54 type(c_ptr), intent(in) :: c_conf
55 
56 type(fv3jedi_vc_model2geovals), pointer :: self
57 type(fv3jedi_geom), pointer :: geom
58 type(fckit_configuration) :: conf
59 
60 ! Linked list
61 ! -----------
63 call fv3jedi_vc_model2geovals_registry%add(c_key_self)
64 call fv3jedi_vc_model2geovals_registry%get(c_key_self, self)
65 call fv3jedi_geom_registry%get(c_key_geom,geom)
66 
67 ! APIs
68 ! ----
69 conf = fckit_configuration(c_conf)
70 
71 ! Implementation
72 ! --------------
73 call self%create(geom, conf)
74 
76 
77 ! --------------------------------------------------------------------------------------------------
78 
79 subroutine c_fv3jedi_vc_model2geovals_delete(c_key_self) &
80  bind(c, name='fv3jedi_vc_model2geovals_delete_f90')
81 
82 implicit none
83 integer(c_int), intent(inout) :: c_key_self !< Change variable structure
84 
85 type(fv3jedi_vc_model2geovals), pointer :: self
86 
87 ! Linked list
88 ! -----------
89 call fv3jedi_vc_model2geovals_registry%get(c_key_self,self)
90 
91 ! Implementation
92 ! --------------
93 call self%delete()
94 
95 ! Linked list
96 ! -----------
97 call fv3jedi_vc_model2geovals_registry%remove(c_key_self)
98 
100 
101 ! --------------------------------------------------------------------------------------------------
102 
103 subroutine c_fv3jedi_vc_model2geovals_changevar(c_key_self, c_key_geom, c_key_xm, c_key_xg) &
104  bind(c, name='fv3jedi_vc_model2geovals_changevar_f90')
105 
106 implicit none
107 integer(c_int), intent(in) :: c_key_self
108 integer(c_int), intent(in) :: c_key_geom
109 integer(c_int), intent(in) :: c_key_xm
110 integer(c_int), intent(in) :: c_key_xg
111 
112 type(fv3jedi_vc_model2geovals), pointer :: self
113 type(fv3jedi_geom), pointer :: geom
114 type(fv3jedi_state), pointer :: xm
115 type(fv3jedi_state), pointer :: xg
116 
117 ! Linked list
118 ! -----------
119 call fv3jedi_vc_model2geovals_registry%get(c_key_self,self)
120 call fv3jedi_state_registry%get(c_key_xm,xm)
121 call fv3jedi_state_registry%get(c_key_xg,xg)
122 call fv3jedi_geom_registry%get(c_key_geom,geom)
123 
124 ! Implementation
125 ! --------------
126 call self%changevar(geom, xm, xg)
127 
129 
130 ! --------------------------------------------------------------------------------------------------
131 
fv3jedi_state_mod::fv3jedi_state
Fortran derived type to hold FV3JEDI state.
Definition: fv3jedi_state_mod.F90:30
fv3jedi_vc_model2geovals_interface_mod::c_fv3jedi_vc_model2geovals_changevar
subroutine c_fv3jedi_vc_model2geovals_changevar(c_key_self, c_key_geom, c_key_xm, c_key_xg)
Definition: fv3jedi_vc_model2geovals.interface.F90:105
fv3jedi_vc_model2geovals_interface_mod::c_fv3jedi_vc_model2geovals_create
subroutine c_fv3jedi_vc_model2geovals_create(c_key_self, c_key_geom, c_conf)
Linked list implementation.
Definition: fv3jedi_vc_model2geovals.interface.F90:50
fv3jedi_vc_model2geovals_interface_mod::fv3jedi_vc_model2geovals_registry
type(registry_t), public fv3jedi_vc_model2geovals_registry
Linked list interface - defines registry_t type.
Definition: fv3jedi_vc_model2geovals.interface.F90:35
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_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_vc_model2geovals_mod
Definition: fv3jedi_vc_model2geovals_mod.f90:6
fv3jedi_geom_mod::fv3jedi_geom
Fortran derived type to hold geometry data for the FV3JEDI model.
Definition: fv3jedi_geom_mod.f90:46
fv3jedi_vc_model2geovals_interface_mod
Definition: fv3jedi_vc_model2geovals.interface.F90:8
fv3jedi_vc_model2geovals_mod::fv3jedi_vc_model2geovals
Definition: fv3jedi_vc_model2geovals_mod.f90:34
fv3jedi_geom_interface_mod
Fortran module handling geometry for the FV3 model.
Definition: fv3jedi_geom_interface_mod.F90:8
fv3jedi_vc_model2geovals_interface_mod::c_fv3jedi_vc_model2geovals_delete
subroutine c_fv3jedi_vc_model2geovals_delete(c_key_self)
Definition: fv3jedi_vc_model2geovals.interface.F90:81