FV3-JEDI
fv3jedi_vc_vertremap.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 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_vertremap
28 
29 !> Linked list interface - defines registry_t type
30 #include "oops/util/linkedList_i.f"
31 
32 !> Global registry
33 type(registry_t) :: fv3jedi_vc_vertremap_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_vertremap_create(c_key_self,c_key_geom,c_conf) &
47  bind(c,name='fv3jedi_vc_vertremap_create_f90')
48 
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_vc_vertremap), pointer :: self
54 type(fv3jedi_geom), pointer :: geom
55 type(fckit_configuration) :: conf
56 
57 ! LinkedList
59 call fv3jedi_vc_vertremap_registry%add(c_key_self)
60 call fv3jedi_vc_vertremap_registry%get(c_key_self, self)
61 call fv3jedi_geom_registry%get(c_key_geom,geom)
62 
63 conf = fckit_configuration(c_conf)
64 
65 ! Implementation
66 call self%create(geom, conf)
67 
68 end subroutine c_fv3jedi_vc_vertremap_create
69 
70 ! --------------------------------------------------------------------------------------------------
71 
72 subroutine c_fv3jedi_vc_vertremap_delete(c_key_self) &
73  bind(c,name='fv3jedi_vc_vertremap_delete_f90')
74 
75 integer(c_int), intent(inout) :: c_key_self !< Change variable structure
76 
77 type(fv3jedi_vc_vertremap), pointer :: self
78 
79 ! LinkedList
80 call fv3jedi_vc_vertremap_registry%get(c_key_self,self)
81 
82 ! Implementation
83 call self%delete()
84 
85 ! LinkedList
86 call fv3jedi_vc_vertremap_registry%remove(c_key_self)
87 
88 end subroutine c_fv3jedi_vc_vertremap_delete
89 
90 ! --------------------------------------------------------------------------------------------------
91 
92 subroutine c_fv3jedi_vc_vertremap_changevar(c_key_self,c_key_xd,c_key_xa) &
93  bind(c,name='fv3jedi_vc_vertremap_changevar_f90')
94 
95 integer(c_int), intent(in) :: c_key_self
96 integer(c_int), intent(in) :: c_key_xd
97 integer(c_int), intent(in) :: c_key_xa
98 
99 type(fv3jedi_vc_vertremap), pointer :: self
100 type(fv3jedi_state), pointer :: xr
101 type(fv3jedi_state), pointer :: xb
102 
103 ! LinkedList
104 call fv3jedi_vc_vertremap_registry%get(c_key_self,self)
105 call fv3jedi_state_registry%get(c_key_xd,xr)
106 call fv3jedi_state_registry%get(c_key_xa,xb)
107 
108 ! Implementation
109 call self%changevar(xr,xb)
110 
112 
113 ! --------------------------------------------------------------------------------------------------
114 
fv3jedi_state_mod::fv3jedi_state
Fortran derived type to hold FV3JEDI state.
Definition: fv3jedi_state_mod.F90:30
fv3jedi_vc_vertremap_interface_mod::c_fv3jedi_vc_vertremap_changevar
subroutine c_fv3jedi_vc_vertremap_changevar(c_key_self, c_key_xd, c_key_xa)
Definition: fv3jedi_vc_vertremap.interface.F90:94
fv3jedi_vc_vertremap_interface_mod::c_fv3jedi_vc_vertremap_create
subroutine c_fv3jedi_vc_vertremap_create(c_key_self, c_key_geom, c_conf)
Linked list implementation.
Definition: fv3jedi_vc_vertremap.interface.F90:48
fv3jedi_state_interface_mod
Definition: fv3jedi_state_interface_mod.F90:8
fv3jedi_vc_vertremap_mod
Definition: fv3jedi_vc_vertremap_mod.f90:6
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_geom_mod::fv3jedi_geom
Fortran derived type to hold geometry data for the FV3JEDI model.
Definition: fv3jedi_geom_mod.f90:46
fv3jedi_vc_vertremap_interface_mod::c_fv3jedi_vc_vertremap_delete
subroutine c_fv3jedi_vc_vertremap_delete(c_key_self)
Definition: fv3jedi_vc_vertremap.interface.F90:74
fv3jedi_geom_interface_mod
Fortran module handling geometry for the FV3 model.
Definition: fv3jedi_geom_interface_mod.F90:8
fv3jedi_vc_vertremap_interface_mod::fv3jedi_vc_vertremap_registry
type(registry_t), public fv3jedi_vc_vertremap_registry
Linked list interface - defines registry_t type.
Definition: fv3jedi_vc_vertremap.interface.F90:33
fv3jedi_vc_vertremap_mod::fv3jedi_vc_vertremap
Definition: fv3jedi_vc_vertremap_mod.f90:37
fv3jedi_vc_vertremap_interface_mod
Definition: fv3jedi_vc_vertremap.interface.F90:8