ICON Community Interface 0.4.0
Loading...
Searching...
No Matches
comin_setup_constants.F90
Go to the documentation of this file.
1
4!
5! @authors 01/2023 :: ICON Community Interface <comin@icon-model.org>
6!
7! SPDX-License-Identifier: BSD-3-Clause
8!
9! See LICENSES for license information.
10! Where software is supplied by third parties, it is indicated in the
11! headers of the routines.
12!
14 USE iso_c_binding, ONLY : c_double, c_float
15
16 IMPLICIT NONE
17
18 PRIVATE
19 PUBLIC :: wp, dp, sp
20 PUBLIC :: ep_secondary_constructor, &
21 & ep_atm_yac_defcomp_before, &
22 & ep_atm_yac_defcomp_after, &
23 & ep_atm_yac_syncdef_before, &
24 & ep_atm_yac_syncdef_after, &
25 & ep_atm_yac_enddef_before, &
26 & ep_atm_yac_enddef_after, &
27 & ep_atm_init_finalize, &
28 & ep_atm_timeloop_before, &
29 & ep_atm_timeloop_start, &
30 & ep_atm_timeloop_end, &
31 & ep_atm_timeloop_after, &
32 & ep_atm_integrate_before, &
33 & ep_atm_integrate_start, &
34 & ep_atm_integrate_end, &
35 & ep_atm_integrate_after, &
36 & ep_atm_write_output_before, &
37 & ep_atm_write_output_after, &
38 & ep_atm_checkpoint_before, &
39 & ep_atm_checkpoint_after, &
40 & ep_atm_advection_before, &
41 & ep_atm_advection_after, &
42 & ep_atm_physics_before, &
43 & ep_atm_physics_after, &
44 & ep_atm_nudging_before, &
45 & ep_atm_nudging_after, &
46 & ep_atm_surface_before, &
47 & ep_atm_surface_after, &
48 & ep_atm_turbulence_before, &
49 & ep_atm_turbulence_after, &
50 & ep_atm_microphysics_before, &
51 & ep_atm_microphysics_after, &
52 & ep_atm_convection_before, &
53 & ep_atm_convection_after, &
54 & ep_atm_radiation_before, &
55 & ep_atm_radiation_after, &
56 & ep_atm_radheat_before, &
57 & ep_atm_radheat_after, &
58 & ep_atm_gwdrag_before, &
59 & ep_atm_gwdrag_after, &
60 & ep_finish, &
61 & ep_destructor
62 PUBLIC :: comin_flag_none, comin_flag_read, comin_flag_write, comin_flag_sync_halo, comin_flag_device
63 PUBLIC :: comin_zaxis_none, comin_zaxis_2d, comin_zaxis_3d, comin_zaxis_3d_half, comin_zaxis_undef
65 PUBLIC :: comin_hgrid_unstructured_cell, comin_hgrid_unstructured_edge, comin_hgrid_unstructured_vertex
66 PUBLIC :: ep_name
67 PUBLIC :: comin_metadata_typeid_undefined, &
68 & comin_metadata_typeid_integer, &
69 & comin_metadata_typeid_real, &
70 & comin_metadata_typeid_character, &
71 & comin_metadata_typeid_logical
72 PUBLIC :: comin_dim_semantics_undef, &
73 & comin_dim_semantics_nproma, &
74 & comin_dim_semantics_block, &
75 & comin_dim_semantics_unblock, &
76 & comin_dim_semantics_level, &
77 & comin_dim_semantics_container, &
78 & comin_dim_semantics_other, &
79 & comin_dim_semantics_unused
80 PUBLIC :: comin_var_datatype_double, &
81 & comin_var_datatype_float, &
82 & comin_var_datatype_int
83
84#include "comin_global.inc"
85
93
96 INTEGER, PARAMETER :: wp = c_double
97 INTEGER, PARAMETER :: dp = c_double
98 INTEGER, PARAMETER :: sp = c_float
99
102 INTEGER, PARAMETER :: domain_undefined = -2
103
106 INTEGER, PARAMETER :: comin_domain_outside_loop = -1
107
112 ENUM, BIND(C)
113 ENUMERATOR :: ep_secondary_constructor = 1, &
114 & EP_ATM_YAC_DEFCOMP_BEFORE, &
115 & EP_ATM_YAC_DEFCOMP_AFTER, &
116 & EP_ATM_YAC_SYNCDEF_BEFORE, &
117 & EP_ATM_YAC_SYNCDEF_AFTER, &
118 & EP_ATM_YAC_ENDDEF_BEFORE, &
119 & EP_ATM_YAC_ENDDEF_AFTER, &
120 & EP_ATM_INIT_FINALIZE, &
121 & EP_ATM_TIMELOOP_BEFORE, &
122 & EP_ATM_TIMELOOP_START, &
123 & EP_ATM_TIMELOOP_END, &
124 & EP_ATM_TIMELOOP_AFTER, &
125 & EP_ATM_INTEGRATE_BEFORE, &
126 & EP_ATM_INTEGRATE_START, &
127 & EP_ATM_INTEGRATE_END, &
128 & EP_ATM_INTEGRATE_AFTER, &
129 & EP_ATM_WRITE_OUTPUT_BEFORE, &
130 & EP_ATM_WRITE_OUTPUT_AFTER, &
131 & EP_ATM_CHECKPOINT_BEFORE, &
132 & EP_ATM_CHECKPOINT_AFTER, &
133 & EP_ATM_ADVECTION_BEFORE, &
134 & EP_ATM_ADVECTION_AFTER, &
135 & EP_ATM_PHYSICS_BEFORE, &
136 & EP_ATM_PHYSICS_AFTER, &
137 & EP_ATM_NUDGING_BEFORE, &
138 & EP_ATM_NUDGING_AFTER, &
139 & EP_ATM_SURFACE_BEFORE, &
140 & EP_ATM_SURFACE_AFTER, &
141 & EP_ATM_TURBULENCE_BEFORE, &
142 & EP_ATM_TURBULENCE_AFTER, &
143 & EP_ATM_MICROPHYSICS_BEFORE, &
144 & EP_ATM_MICROPHYSICS_AFTER, &
145 & EP_ATM_CONVECTION_BEFORE, &
146 & EP_ATM_CONVECTION_AFTER, &
147 & EP_ATM_RADIATION_BEFORE, &
148 & EP_ATM_RADIATION_AFTER, &
149 & EP_ATM_RADHEAT_BEFORE, &
150 & EP_ATM_RADHEAT_AFTER, &
151 & EP_ATM_GWDRAG_BEFORE, &
152 & EP_ATM_GWDRAG_AFTER, &
153 & EP_FINISH, &
154 & EP_DESTRUCTOR
155 end ENUM
156
159 CHARACTER(LEN=COMIN_MAX_LEN_EP_NAME), PARAMETER :: ep_name(ep_destructor) = [ &
160 & "EP_SECONDARY_CONSTRUCTOR ", &
161 & "EP_ATM_YAC_DEFCOMP_BEFORE ", &
162 & "EP_ATM_YAC_DEFCOMP_AFTER ", &
163 & "EP_ATM_YAC_SYNCDEF_BEFORE ", &
164 & "EP_ATM_YAC_SYNCDEF_AFTER ", &
165 & "EP_ATM_YAC_ENDDEF_BEFORE ", &
166 & "EP_ATM_YAC_ENDDEF_AFTER ", &
167 & "EP_ATM_INIT_FINALIZE ", &
168 & "EP_ATM_TIMELOOP_BEFORE ", &
169 & "EP_ATM_TIMELOOP_START ", &
170 & "EP_ATM_TIMELOOP_END ", &
171 & "EP_ATM_TIMELOOP_AFTER ", &
172 & "EP_ATM_INTEGRATE_BEFORE ", &
173 & "EP_ATM_INTEGRATE_START ", &
174 & "EP_ATM_INTEGRATE_END ", &
175 & "EP_ATM_INTEGRATE_AFTER ", &
176 & "EP_ATM_WRITE_OUTPUT_BEFORE ", &
177 & "EP_ATM_WRITE_OUTPUT_AFTER ", &
178 & "EP_ATM_CHECKPOINT_BEFORE ", &
179 & "EP_ATM_CHECKPOINT_AFTER ", &
180 & "EP_ATM_ADVECTION_BEFORE ", &
181 & "EP_ATM_ADVECTION_AFTER ", &
182 & "EP_ATM_PHYSICS_BEFORE ", &
183 & "EP_ATM_PHYSICS_AFTER ", &
184 & "EP_ATM_NUDGING_BEFORE ", &
185 & "EP_ATM_NUDGING_AFTER ", &
186 & "EP_ATM_SURFACE_BEFORE ", &
187 & "EP_ATM_SURFACE_AFTER ", &
188 & "EP_ATM_TURBULENCE_BEFORE ", &
189 & "EP_ATM_TURBULENCE_AFTER ", &
190 & "EP_ATM_MICROPHYSICS_BEFORE ", &
191 & "EP_ATM_MICROPHYSICS_AFTER ", &
192 & "EP_ATM_CONVECTION_BEFORE ", &
193 & "EP_ATM_CONVECTION_AFTER ", &
194 & "EP_ATM_RADIATION_BEFORE ", &
195 & "EP_ATM_RADIATION_AFTER ", &
196 & "EP_ATM_RADHEAT_BEFORE ", &
197 & "EP_ATM_RADHEAT_AFTER ", &
198 & "EP_ATM_GWDRAG_BEFORE ", &
199 & "EP_ATM_GWDRAG_AFTER ", &
200 & "EP_FINISH ", &
201 & "EP_DESTRUCTOR " ]
202
205 ENUM, BIND(C)
206 ENUMERATOR :: comin_flag_none = 0, &
207 & COMIN_FLAG_READ = IBSET(0,1), &
208 & COMIN_FLAG_WRITE = IBSET(0,2), &
209 & COMIN_FLAG_SYNC_HALO = IBSET(0,3), &
210 & COMIN_FLAG_DEVICE = IBSET(0,4)
211 end ENUM
212
216 ENUM, BIND(C)
217 ENUMERATOR :: comin_hgrid_unstructured_cell = 1, &
218 & COMIN_HGRID_UNSTRUCTURED_EDGE = 2, &
219 & COMIN_HGRID_UNSTRUCTURED_VERTEX = 3
220 end ENUM
221
225 ENUM, BIND(C)
226 ENUMERATOR :: comin_zaxis_undef = -1, &
227 & COMIN_ZAXIS_NONE = 0, &
228 & COMIN_ZAXIS_2D = 1, &
229 & COMIN_ZAXIS_3D = 2, &
230 & COMIN_ZAXIS_3D_HALF = 3
231 end ENUM
232
233 ENUM, BIND(C)
234 ENUMERATOR :: comin_metadata_typeid_undefined = -1, &
235 & COMIN_METADATA_TYPEID_INTEGER = 0, &
236 & COMIN_METADATA_TYPEID_REAL = 1, &
237 & COMIN_METADATA_TYPEID_CHARACTER = 2, &
238 & COMIN_METADATA_TYPEID_LOGICAL = 3
239 end ENUM
240
243 ENUM, BIND(C)
244 ENUMERATOR :: comin_var_datatype_double = 1, &
245 & COMIN_VAR_DATATYPE_FLOAT, &
246 & COMIN_VAR_DATATYPE_INT
247 end ENUM
248
251 ENUM, BIND(C)
252 ENUMERATOR :: comin_dim_semantics_undef = 1, & ! not explicitly defined
253 & COMIN_DIM_SEMANTICS_NPROMA = 2, & ! nproma
254 & COMIN_DIM_SEMANTICS_BLOCK = 3, & ! blocked data layout
255 & COMIN_DIM_SEMANTICS_UNBLOCK = 4, & ! unblocked data layout
256 & COMIN_DIM_SEMANTICS_LEVEL = 5, & ! vertical axis dimension
257 & COMIN_DIM_SEMANTICS_CONTAINER = 6, & ! container
258 & COMIN_DIM_SEMANTICS_OTHER = 7, & ! special cases (tracers, tiles, etc)
259 & COMIN_DIM_SEMANTICS_UNUSED = 8 ! unused dimension
260 end ENUM
261
262END MODULE comin_setup_constants
integer, parameter, public domain_undefined
id of current domain, two states possible if not in domain loop
integer, parameter, public comin_domain_outside_loop
id of current domain, two states possible if not in domain loop
character(len=comin_max_len_ep_name), dimension(ep_destructor), parameter, public ep_name
Entry point names (character strings)
integer, parameter, public wp
working precision
integer, parameter, public dp
integer, parameter, public sp