FV3-JEDI
fv3jedi_varcha_a2m.interface.F90
Go to the documentation of this file.
1 ! (C) Copyright 2018-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 ! oops
17 use datetime_mod
18 
19 ! fv3-jedi
25 
26 implicit none
27 private
29 
30 ! --------------------------------------------------------------------------------------------------
31 
32 #define LISTED_TYPE fv3jedi_varcha_a2m
33 
34 !> Linked list interface - defines registry_t type
35 #include "oops/util/linkedList_i.f"
36 
37 !> Global registry
38 type(registry_t) :: fv3jedi_varcha_a2m_registry
39 
40 ! --------------------------------------------------------------------------------------------------
41 
42 contains
43 
44 ! --------------------------------------------------------------------------------------------------
45 
46 !> Linked list implementation
47 #include "oops/util/linkedList_c.f"
48 
49 ! --------------------------------------------------------------------------------------------------
50 
51 subroutine c_fv3jedi_varcha_a2m_create(c_key_self,c_key_geom,c_conf) &
52  bind(c,name='fv3jedi_varcha_a2m_create_f90')
53 
54 implicit none
55 integer(c_int), intent(inout) :: c_key_self
56 integer(c_int), intent(in) :: c_key_geom
57 type(c_ptr), intent(in) :: c_conf
58 
59 type(fv3jedi_varcha_a2m), pointer :: self
60 type(fv3jedi_geom), pointer :: geom
61 type(fckit_configuration) :: conf
62 
64 call fv3jedi_varcha_a2m_registry%add(c_key_self)
65 call fv3jedi_varcha_a2m_registry%get(c_key_self, self)
66 
67 call fv3jedi_geom_registry%get(c_key_geom,geom)
68 
69 ! Fortran configuration
70 ! ---------------------
71 conf = fckit_configuration(c_conf)
72 
73 call self%create(geom, conf)
74 
75 end subroutine c_fv3jedi_varcha_a2m_create
76 
77 ! --------------------------------------------------------------------------------------------------
78 
79 subroutine c_fv3jedi_varcha_a2m_delete(c_key_self) &
80  bind(c,name='fv3jedi_varcha_a2m_delete_f90')
81 
82 implicit none
83 integer(c_int), intent(inout) :: c_key_self !< Change variable structure
84 
85 type(fv3jedi_varcha_a2m), pointer :: self
86 
87 call fv3jedi_varcha_a2m_registry%get(c_key_self,self)
88 call self%delete()
89 call fv3jedi_varcha_a2m_registry%remove(c_key_self)
90 
91 end subroutine c_fv3jedi_varcha_a2m_delete
92 
93 ! --------------------------------------------------------------------------------------------------
94 
95 subroutine c_fv3jedi_varcha_a2m_changevar(c_key_self,c_key_geom,c_key_xana,c_key_xmod,c_vdt) &
96  bind(c,name='fv3jedi_varcha_a2m_changevar_f90')
97 
98 implicit none
99 integer(c_int), intent(in) :: c_key_self
100 integer(c_int), intent(in) :: c_key_geom
101 integer(c_int), intent(in) :: c_key_xana
102 integer(c_int), intent(in) :: c_key_xmod
103 type(c_ptr), intent(in) :: c_vdt
104 
105 type(fv3jedi_varcha_a2m), pointer :: self
106 type(fv3jedi_geom), pointer :: geom
107 type(fv3jedi_state), pointer :: xana
108 type(fv3jedi_state), pointer :: xmod
109 type(datetime) :: vdt
110 
111 call fv3jedi_varcha_a2m_registry%get(c_key_self,self)
112 call fv3jedi_geom_registry%get(c_key_geom,geom)
113 call fv3jedi_state_registry%get(c_key_xana,xana)
114 call fv3jedi_state_registry%get(c_key_xmod,xmod)
115 call c_f_datetime(c_vdt, vdt)
116 
117 call self%changevar(geom,xana,xmod,vdt)
118 
119 end subroutine c_fv3jedi_varcha_a2m_changevar
120 
121 ! --------------------------------------------------------------------------------------------------
122 
123 subroutine c_fv3jedi_varcha_a2m_changevarinverse(c_key_self,c_key_geom,c_key_xmod,c_key_xana,c_vdt) &
124  bind(c,name='fv3jedi_varcha_a2m_changevarinverse_f90')
125 
126 implicit none
127 integer(c_int), intent(in) :: c_key_self
128 integer(c_int), intent(in) :: c_key_geom
129 integer(c_int), intent(in) :: c_key_xmod
130 integer(c_int), intent(in) :: c_key_xana
131 type(c_ptr), intent(in) :: c_vdt
132 
133 type(fv3jedi_varcha_a2m), pointer :: self
134 type(fv3jedi_geom), pointer :: geom
135 type(fv3jedi_state), pointer :: xana
136 type(fv3jedi_state), pointer :: xmod
137 type(datetime) :: vdt
138 
139 call fv3jedi_varcha_a2m_registry%get(c_key_self,self)
140 call fv3jedi_geom_registry%get(c_key_geom,geom)
141 call fv3jedi_state_registry%get(c_key_xmod,xmod)
142 call fv3jedi_state_registry%get(c_key_xana,xana)
143 call c_f_datetime(c_vdt, vdt)
144 
145 call self%changevarinverse(geom,xmod,xana,vdt)
146 
148 
149 ! --------------------------------------------------------------------------------------------------
150 
fv3jedi_varcha_a2m_mod::fv3jedi_varcha_a2m
Definition: fv3jedi_varcha_a2m_mod.f90:30
fv3jedi_state_mod::fv3jedi_state
Fortran derived type to hold FV3JEDI state.
Definition: fv3jedi_state_mod.F90:30
fv3jedi_varcha_a2m_interface_mod::c_fv3jedi_varcha_a2m_delete
subroutine c_fv3jedi_varcha_a2m_delete(c_key_self)
Definition: fv3jedi_varcha_a2m.interface.F90:81
fv3jedi_varcha_a2m_interface_mod
Definition: fv3jedi_varcha_a2m.interface.F90:8
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_varcha_a2m_interface_mod::fv3jedi_varcha_a2m_registry
type(registry_t), public fv3jedi_varcha_a2m_registry
Linked list interface - defines registry_t type.
Definition: fv3jedi_varcha_a2m.interface.F90:38
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_varcha_a2m_interface_mod::c_fv3jedi_varcha_a2m_create
subroutine c_fv3jedi_varcha_a2m_create(c_key_self, c_key_geom, c_conf)
Linked list implementation.
Definition: fv3jedi_varcha_a2m.interface.F90:53
fv3jedi_geom_mod::fv3jedi_geom
Fortran derived type to hold geometry data for the FV3JEDI model.
Definition: fv3jedi_geom_mod.f90:46
fv3jedi_varcha_a2m_interface_mod::c_fv3jedi_varcha_a2m_changevar
subroutine c_fv3jedi_varcha_a2m_changevar(c_key_self, c_key_geom, c_key_xana, c_key_xmod, c_vdt)
Definition: fv3jedi_varcha_a2m.interface.F90:97
fv3jedi_geom_interface_mod
Fortran module handling geometry for the FV3 model.
Definition: fv3jedi_geom_interface_mod.F90:8
fv3jedi_varcha_a2m_mod
Definition: fv3jedi_varcha_a2m_mod.f90:6
fv3jedi_varcha_a2m_interface_mod::c_fv3jedi_varcha_a2m_changevarinverse
subroutine c_fv3jedi_varcha_a2m_changevarinverse(c_key_self, c_key_geom, c_key_xmod, c_key_xana, c_vdt)
Definition: fv3jedi_varcha_a2m.interface.F90:125