ComIn 0.5.1
ICON Community Interface
Loading...
Searching...
No Matches
comin_setup_constants.F90
Go to the documentation of this file.
1!> @file comin_setup_constants.F90
2!! @brief ComIn utilities, containing named constants for entry points and
3!! named constants for variable state (READ, WRITE, ...).
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 PUBLIC
19
20#include "comin_global.inc"
21
22 !> working precision
23 !! @ingroup fortran_interface
24 INTEGER, PARAMETER :: wp = c_double
25 INTEGER, PARAMETER :: dp = c_double
26 INTEGER, PARAMETER :: sp = c_float
27
28 !> List of entry points
29 !!
30 !! Note: EP_DESTRUCTOR should always be the last entry
31 !! @ingroup fortran_interface
32 ENUM, BIND(C)
33 ENUMERATOR :: ep_secondary_constructor = 1, &
34 & EP_ATM_YAC_DEFCOMP_BEFORE, &
35 & EP_ATM_YAC_DEFCOMP_AFTER, &
36 & EP_ATM_YAC_SYNCDEF_BEFORE, &
37 & EP_ATM_YAC_SYNCDEF_AFTER, &
38 & EP_ATM_YAC_ENDDEF_BEFORE, &
39 & EP_ATM_YAC_ENDDEF_AFTER, &
40 & EP_ATM_INIT_FINALIZE, &
41 & EP_ATM_TIMELOOP_BEFORE, &
42 & EP_ATM_TIMELOOP_START, &
43 & EP_ATM_TIMELOOP_END, &
44 & EP_ATM_TIMELOOP_AFTER, &
45 & EP_ATM_INTEGRATE_BEFORE, &
46 & EP_ATM_INTEGRATE_START, &
47 & EP_ATM_INTEGRATE_END, &
48 & EP_ATM_INTEGRATE_AFTER, &
49 & EP_ATM_WRITE_OUTPUT_BEFORE, &
50 & EP_ATM_WRITE_OUTPUT_AFTER, &
51 & EP_ATM_CHECKPOINT_BEFORE, &
52 & EP_ATM_CHECKPOINT_AFTER, &
53 & EP_ATM_ADVECTION_BEFORE, &
54 & EP_ATM_ADVECTION_AFTER, &
55 & EP_ATM_PHYSICS_BEFORE, &
56 & EP_ATM_PHYSICS_AFTER, &
57 & EP_ATM_NUDGING_BEFORE, &
58 & EP_ATM_NUDGING_AFTER, &
59 & EP_ATM_SURFACE_BEFORE, &
60 & EP_ATM_SURFACE_AFTER, &
61 & EP_ATM_TURBULENCE_BEFORE, &
62 & EP_ATM_TURBULENCE_AFTER, &
63 & EP_ATM_MICROPHYSICS_BEFORE, &
64 & EP_ATM_MICROPHYSICS_AFTER, &
65 & EP_ATM_CONVECTION_BEFORE, &
66 & EP_ATM_CONVECTION_AFTER, &
67 & EP_ATM_RADIATION_BEFORE, &
68 & EP_ATM_RADIATION_AFTER, &
69 & EP_ATM_RADHEAT_BEFORE, &
70 & EP_ATM_RADHEAT_AFTER, &
71 & EP_ATM_GWDRAG_BEFORE, &
72 & EP_ATM_GWDRAG_AFTER, &
73 & EP_FINISH, &
74 & EP_DESTRUCTOR
75 end ENUM
76
77 !> Variable access flags.
78 !! @ingroup fortran_interface
79 ENUM, BIND(C)
80 ENUMERATOR :: comin_flag_none = 0, &
81 & COMIN_FLAG_READ = IBSET(0,1), &
82 & COMIN_FLAG_WRITE = IBSET(0,2), &
83 & COMIN_FLAG_SYNC_HALO = IBSET(0,3), &
84 & COMIN_FLAG_DEVICE = IBSET(0,4)
85 end ENUM
86
87 !> integer constant, which gives an interpretation of the horizontal
88 !> grid location (cell, edge, vertex).
89 !! @ingroup fortran_interface
90 ENUM, BIND(C)
91 ENUMERATOR :: comin_hgrid_unstructured_cell = 1, &
92 & COMIN_HGRID_UNSTRUCTURED_EDGE = 2, &
93 & COMIN_HGRID_UNSTRUCTURED_VERTEX = 3
94 end ENUM
95
96 !> Integer constants, giving an interpretation of the vertical axis
97 !! (2D, atmospheric levels, ...)
98 !! @ingroup fortran_interface
99 ENUM, BIND(C)
100 ENUMERATOR :: comin_zaxis_undef = -1, &
101 & COMIN_ZAXIS_NONE = 0, &
102 & COMIN_ZAXIS_2D = 1, &
103 & COMIN_ZAXIS_3D = 2, &
104 & COMIN_ZAXIS_3D_HALF = 3
105 end ENUM
106
107 !> Type ids for metadata
108 !! @ingroup fortran_interface
109 ENUM, BIND(C)
111 & COMIN_METADATA_TYPEID_INTEGER = 0, &
112 & COMIN_METADATA_TYPEID_REAL = 1, &
113 & COMIN_METADATA_TYPEID_CHARACTER = 2, &
114 & COMIN_METADATA_TYPEID_LOGICAL = 3
115 end ENUM
116
117 !> Integer constants, giving an interpretation of variable data types
118 !! @ingroup fortran_interface
119 ENUM, BIND(C)
120 ENUMERATOR :: comin_var_datatype_double = 1, &
121 & COMIN_VAR_DATATYPE_FLOAT, &
122 & COMIN_VAR_DATATYPE_INT
123 end ENUM
124
125 !> Dimension semantics
126 !! @ingroup fortran_interface
127 ENUM, BIND(C)
128 ENUMERATOR :: comin_dim_semantics_undef = 1, & ! not explicitly defined
129 & COMIN_DIM_SEMANTICS_NPROMA = 2, & ! nproma
130 & COMIN_DIM_SEMANTICS_BLOCK = 3, & ! blocked data layout
131 & COMIN_DIM_SEMANTICS_UNBLOCK = 4, & ! unblocked data layout
132 & COMIN_DIM_SEMANTICS_LEVEL = 5, & ! vertical axis dimension
133 & COMIN_DIM_SEMANTICS_CONTAINER = 6, & ! container
134 & COMIN_DIM_SEMANTICS_OTHER = 7, & ! special cases (tracers, tiles, etc)
135 & COMIN_DIM_SEMANTICS_UNUSED = 8 ! unused dimension
136 end ENUM
137
138END MODULE comin_setup_constants
integer, parameter wp
working precision