FV3-JEDI
fv3jedi_vc_geosrst2bkg.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 use datetime_mod
12 
13 use fckit_configuration_module, only: fckit_configuration
14 
20 
21 implicit none
22 private
24 
25 ! ------------------------------------------------------------------------------
26 
27 #define LISTED_TYPE fv3jedi_vc_geosrst2bkg
28 
29 !> Linked list interface - defines registry_t type
30 #include "oops/util/linkedList_i.f"
31 
32 !> Global registry
34 
35 ! ------------------------------------------------------------------------------
36 
37 contains
38 
39 ! ------------------------------------------------------------------------------
40 
41 !> Linked list implementation
42 #include "oops/util/linkedList_c.f"
43 
44 ! ------------------------------------------------------------------------------
45 
46 subroutine c_fv3jedi_vc_geosrst2bkg_create(c_key_self,c_key_geom,c_conf) &
47  bind(c,name='fv3jedi_vc_geosrst2bkg_create_f90')
48 
49 implicit none
50 integer(c_int), intent(inout) :: c_key_self
51 integer(c_int), intent(in) :: c_key_geom
52 type(c_ptr), intent(in) :: c_conf
53 
54 type(fv3jedi_vc_geosrst2bkg), pointer :: self
55 type(fv3jedi_geom), pointer :: geom
56 type(fckit_configuration) :: conf
57 
59 call fv3jedi_vc_geosrst2bkg_registry%add(c_key_self)
60 call fv3jedi_vc_geosrst2bkg_registry%get(c_key_self, self)
61 
62 call fv3jedi_geom_registry%get(c_key_geom,geom)
63 
64 conf = fckit_configuration(c_conf)
65 
66 call create(self,geom,conf)
67 
69 
70 ! ------------------------------------------------------------------------------
71 
72 subroutine c_fv3jedi_vc_geosrst2bkg_delete(c_key_self) &
73  bind(c,name='fv3jedi_vc_geosrst2bkg_delete_f90')
74 
75 implicit none
76 integer(c_int), intent(inout) :: c_key_self !< Change variable structure
77 
78 type(fv3jedi_vc_geosrst2bkg), pointer :: self
79 
80 call fv3jedi_vc_geosrst2bkg_registry%get(c_key_self,self)
81 call delete(self)
82 call fv3jedi_vc_geosrst2bkg_registry%remove(c_key_self)
83 
85 
86 ! ------------------------------------------------------------------------------
87 
88 subroutine c_fv3jedi_vc_geosrst2bkg_changevar(c_key_self,c_key_geom,c_key_xd,c_key_xa) &
89  bind(c,name='fv3jedi_vc_geosrst2bkg_changevar_f90')
90 
91 implicit none
92 integer(c_int), intent(in) :: c_key_self
93 integer(c_int), intent(in) :: c_key_geom
94 integer(c_int), intent(in) :: c_key_xd
95 integer(c_int), intent(in) :: c_key_xa
96 
97 type(fv3jedi_vc_geosrst2bkg), pointer :: self
98 type(fv3jedi_geom), pointer :: geom
99 type(fv3jedi_state), pointer :: xr
100 type(fv3jedi_state), pointer :: xb
101 
102 call fv3jedi_vc_geosrst2bkg_registry%get(c_key_self,self)
103 call fv3jedi_geom_registry%get(c_key_geom,geom)
104 call fv3jedi_state_registry%get(c_key_xd,xr)
105 call fv3jedi_state_registry%get(c_key_xa,xb)
106 
107 call changevar(self,geom,xr,xb)
108 
110 
111 ! ----------------------------------------------------------------------------
112 
113 subroutine c_fv3jedi_vc_geosrst2bkg_changevarinverse(c_key_self,c_key_geom,c_key_xa,c_key_xd) &
114  bind(c,name='fv3jedi_vc_geosrst2bkg_changevarinverse_f90')
115 
116 implicit none
117 integer(c_int), intent(in) :: c_key_self
118 integer(c_int), intent(in) :: c_key_geom
119 integer(c_int), intent(in) :: c_key_xa
120 integer(c_int), intent(in) :: c_key_xd
121 
122 type(fv3jedi_vc_geosrst2bkg), pointer :: self
123 type(fv3jedi_geom), pointer :: geom
124 type(fv3jedi_state), pointer :: xr
125 type(fv3jedi_state), pointer :: xb
126 
127 call fv3jedi_vc_geosrst2bkg_registry%get(c_key_self,self)
128 call fv3jedi_geom_registry%get(c_key_geom,geom)
129 call fv3jedi_state_registry%get(c_key_xa,xb)
130 call fv3jedi_state_registry%get(c_key_xd,xr)
131 
132 call changevarinverse(self,geom,xb,xr)
133 
135 
136 ! ----------------------------------------------------------------------------
137 
fv3jedi_state_mod::fv3jedi_state
Fortran derived type to hold FV3JEDI state.
Definition: fv3jedi_state_mod.F90:30
fv3jedi_vc_geosrst2bkg_interface_mod::c_fv3jedi_vc_geosrst2bkg_delete
subroutine c_fv3jedi_vc_geosrst2bkg_delete(c_key_self)
Definition: fv3jedi_vc_geosrst2bkg.interface.F90:74
fv3jedi_vc_geosrst2bkg_interface_mod::c_fv3jedi_vc_geosrst2bkg_create
subroutine c_fv3jedi_vc_geosrst2bkg_create(c_key_self, c_key_geom, c_conf)
Linked list implementation.
Definition: fv3jedi_vc_geosrst2bkg.interface.F90:48
fv3jedi_vc_geosrst2bkg_mod::delete
subroutine, public delete(self)
Definition: fv3jedi_vc_geosrst2bkg_mod.f90:80
fv3jedi_state_interface_mod
Definition: fv3jedi_state_interface_mod.F90:8
fv3jedi_vc_geosrst2bkg_interface_mod::fv3jedi_vc_geosrst2bkg_registry
type(registry_t), public fv3jedi_vc_geosrst2bkg_registry
Linked list interface - defines registry_t type.
Definition: fv3jedi_vc_geosrst2bkg.interface.F90:33
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_geosrst2bkg_interface_mod
Definition: fv3jedi_vc_geosrst2bkg.interface.F90:8
fv3jedi_geom_mod::fv3jedi_geom
Fortran derived type to hold geometry data for the FV3JEDI model.
Definition: fv3jedi_geom_mod.f90:46
fv3jedi_vc_geosrst2bkg_mod::changevarinverse
subroutine, public changevarinverse(self, geom, xb, xr)
Definition: fv3jedi_vc_geosrst2bkg_mod.f90:227
fv3jedi_vc_geosrst2bkg_mod::fv3jedi_vc_geosrst2bkg
Definition: fv3jedi_vc_geosrst2bkg_mod.f90:34
fv3jedi_vc_geosrst2bkg_mod::changevar
subroutine, public changevar(self, geom, xr, xb)
Definition: fv3jedi_vc_geosrst2bkg_mod.f90:89
fv3jedi_geom_interface_mod
Fortran module handling geometry for the FV3 model.
Definition: fv3jedi_geom_interface_mod.F90:8
fv3jedi_vc_geosrst2bkg_interface_mod::c_fv3jedi_vc_geosrst2bkg_changevarinverse
subroutine c_fv3jedi_vc_geosrst2bkg_changevarinverse(c_key_self, c_key_geom, c_key_xa, c_key_xd)
Definition: fv3jedi_vc_geosrst2bkg.interface.F90:115
fv3jedi_vc_geosrst2bkg_mod::create
subroutine, public create(self, geom, conf)
Definition: fv3jedi_vc_geosrst2bkg_mod.f90:49
fv3jedi_vc_geosrst2bkg_mod
Definition: fv3jedi_vc_geosrst2bkg_mod.f90:6
fv3jedi_vc_geosrst2bkg_interface_mod::c_fv3jedi_vc_geosrst2bkg_changevar
subroutine c_fv3jedi_vc_geosrst2bkg_changevar(c_key_self, c_key_geom, c_key_xd, c_key_xa)
Definition: fv3jedi_vc_geosrst2bkg.interface.F90:90