FV3-JEDI
fv3jedi_varcha_c2a.interface.F90
Go to the documentation of this file.
1 ! (C) Copyright 2018-2019 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 fckit_configuration_module, only: fckit_configuration
13 
19 
20 implicit none
21 private
23 
24 ! ------------------------------------------------------------------------------
25 
26 #define LISTED_TYPE fv3jedi_varcha_c2a
27 
28 !> Linked list interface - defines registry_t type
29 #include "oops/util/linkedList_i.f"
30 
31 !> Global registry
32 type(registry_t) :: fv3jedi_varcha_c2a_registry
33 
34 ! ------------------------------------------------------------------------------
35 
36 contains
37 
38 ! ------------------------------------------------------------------------------
39 
40 !> Linked list implementation
41 #include "oops/util/linkedList_c.f"
42 
43 ! ------------------------------------------------------------------------------
44 
45 subroutine c_fv3jedi_varcha_c2a_create(c_key_self,c_key_geom,c_conf) &
46  bind(c,name='fv3jedi_varcha_c2a_create_f90')
47 
48 implicit none
49 integer(c_int), intent(inout) :: c_key_self
50 integer(c_int), intent(in) :: c_key_geom
51 type(c_ptr), intent(in) :: c_conf
52 
53 type(fv3jedi_varcha_c2a), pointer :: self
54 type(fv3jedi_geom), pointer :: geom
55 type(fckit_configuration) :: conf
56 
58 call fv3jedi_varcha_c2a_registry%add(c_key_self)
59 call fv3jedi_varcha_c2a_registry%get(c_key_self, self)
60 
61 call fv3jedi_geom_registry%get(c_key_geom,geom)
62 
63 conf = fckit_configuration(c_conf)
64 
65 call create(self,geom,conf)
66 
67 end subroutine c_fv3jedi_varcha_c2a_create
68 
69 ! ------------------------------------------------------------------------------
70 
71 subroutine c_fv3jedi_varcha_c2a_delete(c_key_self) &
72  bind(c,name='fv3jedi_varcha_c2a_delete_f90')
73 
74 implicit none
75 integer(c_int), intent(inout) :: c_key_self !< Change variable structure
76 
77 type(fv3jedi_varcha_c2a), pointer :: self
78 
79 call fv3jedi_varcha_c2a_registry%get(c_key_self,self)
80 call delete(self)
81 call fv3jedi_varcha_c2a_registry%remove(c_key_self)
82 
83 end subroutine c_fv3jedi_varcha_c2a_delete
84 
85 ! ------------------------------------------------------------------------------
86 
87 subroutine c_fv3jedi_varcha_c2a_changevar(c_key_self,c_key_geom,c_key_xctl,c_key_xana) &
88  bind(c,name='fv3jedi_varcha_c2a_changevar_f90')
89 
90 implicit none
91 integer(c_int), intent(in) :: c_key_self
92 integer(c_int), intent(in) :: c_key_geom
93 integer(c_int), intent(in) :: c_key_xctl
94 integer(c_int), intent(in) :: c_key_xana
95 
96 type(fv3jedi_varcha_c2a), pointer :: self
97 type(fv3jedi_geom), pointer :: geom
98 type(fv3jedi_state), pointer :: xctl
99 type(fv3jedi_state), pointer :: xana
100 
101 call fv3jedi_varcha_c2a_registry%get(c_key_self,self)
102 call fv3jedi_geom_registry%get(c_key_geom,geom)
103 call fv3jedi_state_registry%get(c_key_xctl,xctl)
104 call fv3jedi_state_registry%get(c_key_xana,xana)
105 
106 call changevar(self,geom,xctl,xana)
107 
108 end subroutine c_fv3jedi_varcha_c2a_changevar
109 
110 ! ----------------------------------------------------------------------------
111 
112 subroutine c_fv3jedi_varcha_c2a_changevarinverse(c_key_self,c_key_geom,c_key_xana,c_key_xctl) &
113  bind(c,name='fv3jedi_varcha_c2a_changevarinverse_f90')
114 
115 implicit none
116 integer(c_int), intent(in) :: c_key_self
117 integer(c_int), intent(in) :: c_key_geom
118 integer(c_int), intent(in) :: c_key_xana
119 integer(c_int), intent(in) :: c_key_xctl
120 
121 type(fv3jedi_varcha_c2a), pointer :: self
122 type(fv3jedi_geom), pointer :: geom
123 type(fv3jedi_state), pointer :: xctl
124 type(fv3jedi_state), pointer :: xana
125 
126 call fv3jedi_varcha_c2a_registry%get(c_key_self,self)
127 call fv3jedi_geom_registry%get(c_key_geom,geom)
128 call fv3jedi_state_registry%get(c_key_xana,xana)
129 call fv3jedi_state_registry%get(c_key_xctl,xctl)
130 
131 call changevarinverse(self,geom,xana,xctl)
132 
134 
135 ! ----------------------------------------------------------------------------
136 
fv3jedi_state_mod::fv3jedi_state
Fortran derived type to hold FV3JEDI state.
Definition: fv3jedi_state_mod.F90:30
fv3jedi_varcha_c2a_mod::changevarinverse
subroutine, public changevarinverse(self, geom, xana, xctl)
Definition: fv3jedi_varcha_c2a_mod.f90:359
fv3jedi_varcha_c2a_mod::changevar
subroutine, public changevar(self, geom, xctl, xana)
Definition: fv3jedi_varcha_c2a_mod.f90:167
fv3jedi_varcha_c2a_interface_mod::c_fv3jedi_varcha_c2a_changevar
subroutine c_fv3jedi_varcha_c2a_changevar(c_key_self, c_key_geom, c_key_xctl, c_key_xana)
Definition: fv3jedi_varcha_c2a.interface.F90:89
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_c2a_mod::delete
subroutine, public delete(self)
Definition: fv3jedi_varcha_c2a_mod.f90:153
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_c2a_mod::fv3jedi_varcha_c2a
Definition: fv3jedi_varcha_c2a_mod.f90:45
fv3jedi_varcha_c2a_interface_mod::fv3jedi_varcha_c2a_registry
type(registry_t), public fv3jedi_varcha_c2a_registry
Linked list interface - defines registry_t type.
Definition: fv3jedi_varcha_c2a.interface.F90:32
fv3jedi_varcha_c2a_interface_mod::c_fv3jedi_varcha_c2a_changevarinverse
subroutine c_fv3jedi_varcha_c2a_changevarinverse(c_key_self, c_key_geom, c_key_xana, c_key_xctl)
Definition: fv3jedi_varcha_c2a.interface.F90:114
fv3jedi_varcha_c2a_interface_mod::c_fv3jedi_varcha_c2a_create
subroutine c_fv3jedi_varcha_c2a_create(c_key_self, c_key_geom, c_conf)
Linked list implementation.
Definition: fv3jedi_varcha_c2a.interface.F90:47
fv3jedi_geom_mod::fv3jedi_geom
Fortran derived type to hold geometry data for the FV3JEDI model.
Definition: fv3jedi_geom_mod.f90:46
fv3jedi_varcha_c2a_mod
Definition: fv3jedi_varcha_c2a_mod.f90:6
fv3jedi_varcha_c2a_mod::create
subroutine, public create(self, geom, conf)
Definition: fv3jedi_varcha_c2a_mod.f90:59
fv3jedi_geom_interface_mod
Fortran module handling geometry for the FV3 model.
Definition: fv3jedi_geom_interface_mod.F90:8
fv3jedi_varcha_c2a_interface_mod
Definition: fv3jedi_varcha_c2a.interface.F90:8
fv3jedi_varcha_c2a_interface_mod::c_fv3jedi_varcha_c2a_delete
subroutine c_fv3jedi_varcha_c2a_delete(c_key_self)
Definition: fv3jedi_varcha_c2a.interface.F90:73