ICON Community Interface 0.4.0
Loading...
Searching...
No Matches
comin.h
Go to the documentation of this file.
1
13#ifndef COMIN_H
14#define COMIN_H
15
16#include "comin_global.inc"
17#include "comin_version.inc"
18#include <stdarg.h>
19#include <stdbool.h>
20#include <stdint.h>
21#include <stdio.h>
22
23#ifdef DOXYGEN
24// This is a dirty workaround to make C symbols referable if there
25// is a Fortran symbol with the same name
26namespace comin_h {
27#endif
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
35
36 typedef struct t_comin_var_descriptor {
37 char name[COMIN_MAX_LEN_VAR_NAME + 1];
38 int id;
40
41 //< Opaque data type for a ComIn variable handle.
43
44 //< Opaque data type for a variable list iterator.
47
48 //< Opaque data type for a metadata iterator.
50
95
103
111
112 typedef enum t_comin_error_code {
152
158
166
172
174 COMIN_DIM_SEMANTICS_UNDEF = 1, // not explicitly defined
176 COMIN_DIM_SEMANTICS_BLOCK = 3, // blocked data layout
177 COMIN_DIM_SEMANTICS_UNBLOCK = 4, // unblocked data layout
178 COMIN_DIM_SEMANTICS_LEVEL = 5, // vertical axis dimension
180 COMIN_DIM_SEMANTICS_OTHER = 7, // special cases (tracers, tiles, etc)
181 COMIN_DIM_SEMANTICS_UNUSED = 8 // unused dimension
183
184 static const int COMIN_DOMAIN_OUTSIDE_LOOP = -1;
185
189 void comin_current_get_plugin_name(char const** val, int* len);
190 void comin_current_get_plugin_options(char const** val, int* len);
191 void comin_current_get_plugin_comm(char const** val, int* len);
192 void comin_current_get_datetime(char const** val, int* len);
193
197
198 void comin_plugin_finish(const char* routine, const char* text);
199 void comin_print_debug(const char* msg);
200 void comin_print_info(const char* msg);
201 void comin_print_warning(const char* msg);
202
203 void comin_print_debug_f(const char* fmt, ...);
204 void comin_print_info_f(const char* fmt, ...);
205 void comin_print_warning_f(const char* fmt, ...);
206
207 void comin_error_get_message(t_comin_error_code error_code, char category[11],
208 char message[COMIN_MAX_LEN_ERR_MESSAGE]);
209 void comin_error_check(t_comin_error_code error_code, const char* scope);
210 void comin_error_set_errors_return(bool errors_return);
213
215 bool lmodexclusive);
217 t_comin_entry_point* context,
218 t_comin_var_descriptor var_descriptor,
219 int flag);
228 void comin_var_get_shape(t_comin_var_handle* handle, int shape[5]);
230 int dim_semantics[5]);
231 void comin_var_get_ncontained(t_comin_var_handle* handle, int* ncontained);
234
238 void
240 t_comin_var_descriptor* var_desc);
241 void
243
244 typedef void (*t_comin_callback_function)();
248 char out_ep_name[COMIN_MAX_LEN_EP_NAME + 1]);
249
252 const char* key);
254 const char* key, int val);
256 const char* key, bool val);
258 const char* key, double val);
260 const char* key, char const* val);
262 const char* key, int* val);
264 const char* key, bool* val);
266 const char* key, double* val);
268 const char* key, char const** val,
269 int* len);
270
280
284 void comin_descrdata_get_cell_indices(int jg, int i_blk, int i_startblk,
285 int i_endblk, int* i_startidx,
286 int* i_endidx, int irl_start,
287 int irl_end);
288 void comin_descrdata_get_edge_indices(int jg, int i_blk, int i_startblk,
289 int i_endblk, int* i_startidx,
290 int* i_endidx, int irl_start,
291 int irl_end);
292 void comin_descrdata_get_vert_indices(int jg, int i_blk, int i_startblk,
293 int i_endblk, int* i_startidx,
294 int* i_endidx, int irl_start,
295 int irl_end);
301 int* len);
303 int* len);
305 int* len);
307 int* len);
308
310 static inline void comin_setup_get_version(unsigned int* major,
311 unsigned int* minor,
312 unsigned int* patch) {
313 (*major) = COMIN_VERSION_MAJOR;
314 (*minor) = COMIN_VERSION_MINOR;
315 (*patch) = COMIN_VERSION_PATCH;
316 }
317
318 // ---------------------------------------------------------
319
320 // The following **internal** struct is used to describe the
321 // descrdata structure dynamically, mainly for use in the
322 // python_adapter.
324 const char* name;
326 const char* datatype; // c datatype
327 int ndims;
328 bool has_jg;
330 };
331
332#ifdef __cplusplus
333} // extern C
334#endif
335
336/* Header extension for get of grid data and domain routines generated by python
337 * script (comin_header_c_ext_descrdata_get_domain.h.py) in utils/. */
339
340/* Header extension for get of global data routines generated by python script
341 * (comin_header_c_ext_descrdata_get_global.h.py) in utils/. */
343
345
346#ifdef DOXYGEN
347}; // namespace comin_h
348#endif
349
350#endif
t_comin_entry_point comin_current_get_ep()
int comin_current_get_domain_id()
void comin_current_get_plugin_name(char const **val, int *len)
int comin_descrdata_get_edge_npromz(int jg)
void comin_descrdata_get_simulation_interval_exp_start(char const **val, int *len)
void comin_current_get_plugin_options(char const **val, int *len)
void comin_descrdata_get_cell_indices(int jg, int i_blk, int i_startblk, int i_endblk, int *i_startidx, int *i_endidx, int irl_start, int irl_end)
int comin_descrdata_get_block(int j)
const char * comin_metadata_iterator_get_key(t_comin_metadata_iterator *it)
void comin_print_debug_f(const char *fmt,...)
void comin_plugin_finish(const char *routine, const char *text)
void comin_metadata_get_character(t_comin_var_descriptor var_descriptor, const char *key, char const **val, int *len)
t_comin_var_descr_list_iterator * comin_var_get_descr_list_next(t_comin_var_descr_list_iterator *current)
void comin_var_get_dim_semantics(t_comin_var_handle *handle, int dim_semantics[5])
void comin_error_check(t_comin_error_code error_code, const char *scope)
t_comin_zaxis
Definition comin.h:96
void comin_print_warning_f(const char *fmt,...)
t_comin_error_code comin_error_get()
void comin_var_get_shape(t_comin_var_handle *handle, int shape[5])
struct t_comin_metadata_iterator t_comin_metadata_iterator
Definition comin.h:49
double * comin_var_get_device_ptr_double(t_comin_var_handle *handle)
void comin_metadata_set_logical(t_comin_var_descriptor var_descriptor, const char *key, bool val)
void comin_metadata_set_character(t_comin_var_descriptor var_descriptor, const char *key, char const *val)
void * comin_var_get_ptr(t_comin_var_handle *handle)
void comin_current_get_datetime(char const **val, int *len)
void comin_error_set_errors_return(bool errors_return)
void comin_descrdata_get_edge_indices(int jg, int i_blk, int i_startblk, int i_endblk, int *i_startidx, int *i_endidx, int irl_start, int irl_end)
int comin_parallel_get_host_mpi_comm()
t_comin_hgrid_id
Definition comin.h:153
t_comin_var_descr_list_iterator * comin_var_get_descr_list_head()
void comin_print_info_f(const char *fmt,...)
void comin_metadata_iterator_next(t_comin_metadata_iterator *it)
t_comin_metadata_typeid comin_metadata_get_typeid(t_comin_var_descriptor var_descriptor, const char *key)
t_comin_dim_semantics
Definition comin.h:173
void comin_callback_get_ep_name(t_comin_entry_point iep, char out_ep_name[COMIN_MAX_LEN_EP_NAME+1])
int comin_descrdata_get_index(int j)
struct t_comin_var_handle t_comin_var_handle
Definition comin.h:42
int * comin_var_get_device_ptr_int(t_comin_var_handle *handle)
void comin_descrdata_get_vert_indices(int jg, int i_blk, int i_startblk, int i_endblk, int *i_startidx, int *i_endidx, int irl_start, int irl_end)
struct comin_h::t_comin_var_descriptor t_comin_var_descriptor
double * comin_var_get_ptr_double(t_comin_var_handle *handle)
void comin_descrdata_get_simulation_interval_exp_stop(char const **val, int *len)
int comin_parallel_get_host_mpi_rank()
void comin_metadata_iterator_delete(t_comin_metadata_iterator *it)
static const int COMIN_DOMAIN_OUTSIDE_LOOP
Definition comin.h:184
void comin_metadata_set_real(t_comin_var_descriptor var_descriptor, const char *key, double val)
bool comin_metadata_iterator_compare(t_comin_metadata_iterator *it1, t_comin_metadata_iterator *it2)
float * comin_var_get_device_ptr_float(t_comin_var_handle *handle)
t_comin_metadata_typeid
Definition comin.h:159
void comin_current_get_plugin_comm(char const **val, int *len)
void comin_metadata_get_integer(t_comin_var_descriptor var_descriptor, const char *key, int *val)
t_comin_var_access_flag
Definition comin.h:104
float * comin_var_get_ptr_float(t_comin_var_handle *handle)
t_comin_entry_point
Definition comin.h:51
void comin_var_get_descr_list_var_desc(t_comin_var_descr_list_iterator *current, t_comin_var_descriptor *var_desc)
struct t_comin_var_descr_list_iterator t_comin_var_descr_list_iterator
Definition comin.h:45
void comin_error_reset()
void(* t_comin_callback_function)()
Definition comin.h:244
void comin_var_descr_list_iterator_delete(t_comin_var_descr_list_iterator **it)
void comin_print_info(const char *msg)
void comin_error_get_message(t_comin_error_code error_code, char category[11], char message[COMIN_MAX_LEN_ERR_MESSAGE])
t_comin_var_handle * comin_var_get(int context_len, t_comin_entry_point *context, t_comin_var_descriptor var_descriptor, int flag)
void comin_var_get_ncontained(t_comin_var_handle *handle, int *ncontained)
t_comin_metadata_iterator * comin_metadata_get_iterator_end(t_comin_var_descriptor var_descriptor)
int comin_descrdata_get_cell_npromz(int jg)
void comin_var_request_add(t_comin_var_descriptor var_descriptor, bool lmodexclusive)
int * comin_var_get_ptr_int(t_comin_var_handle *handle)
void comin_callback_register(t_comin_entry_point entry_point_id, t_comin_callback_function fct_ptr)
void comin_metadata_get_real(t_comin_var_descriptor var_descriptor, const char *key, double *val)
t_comin_metadata_iterator * comin_metadata_get_iterator_begin(t_comin_var_descriptor var_descriptor)
void comin_descrdata_get_simulation_interval_run_start(char const **val, int *len)
double comin_descrdata_get_timesteplength(int jg)
void comin_metadata_get_logical(t_comin_var_descriptor var_descriptor, const char *key, bool *val)
int comin_current_get_plugin_id()
void comin_metadata_set_integer(t_comin_var_descriptor var_descriptor, const char *key, int val)
int comin_descrdata_index_lookup_glb2loc_cell(int jg, int global_idx)
t_comin_var_datatype
Definition comin.h:167
static void comin_setup_get_version(unsigned int *major, unsigned int *minor, unsigned int *patch)
returns version info.
Definition comin.h:310
void comin_var_get_descriptor(t_comin_var_handle *handle, t_comin_var_descriptor *descr)
t_comin_error_code
Definition comin.h:112
void comin_descrdata_get_simulation_interval_run_stop(char const **val, int *len)
void * comin_var_get_device_ptr(t_comin_var_handle *handle)
void comin_print_debug(const char *msg)
void comin_print_warning(const char *msg)
int comin_descrdata_get_vert_npromz(int jg)
int comin_parallel_get_plugin_mpi_comm()
@ COMIN_ZAXIS_2D
Definition comin.h:99
@ COMIN_ZAXIS_UNDEF
Definition comin.h:97
@ COMIN_ZAXIS_NONE
Definition comin.h:98
@ COMIN_ZAXIS_3D_HALF
Definition comin.h:101
@ COMIN_ZAXIS_3D
Definition comin.h:100
@ COMIN_HGRID_UNSTRUCTURED_EDGE
Definition comin.h:155
@ COMIN_HGRID_UNSTRUCTURED_VERTEX
Definition comin.h:156
@ COMIN_HGRID_UNSTRUCTURED_CELL
Definition comin.h:154
@ COMIN_DIM_SEMANTICS_NPROMA
Definition comin.h:175
@ COMIN_DIM_SEMANTICS_UNBLOCK
Definition comin.h:177
@ COMIN_DIM_SEMANTICS_CONTAINER
Definition comin.h:179
@ COMIN_DIM_SEMANTICS_LEVEL
Definition comin.h:178
@ COMIN_DIM_SEMANTICS_OTHER
Definition comin.h:180
@ COMIN_DIM_SEMANTICS_UNUSED
Definition comin.h:181
@ COMIN_DIM_SEMANTICS_UNDEF
Definition comin.h:174
@ COMIN_DIM_SEMANTICS_BLOCK
Definition comin.h:176
@ COMIN_METADATA_TYPEID_INTEGER
Definition comin.h:161
@ COMIN_METADATA_TYPEID_UNDEFINED
Definition comin.h:160
@ COMIN_METADATA_TYPEID_LOGICAL
Definition comin.h:164
@ COMIN_METADATA_TYPEID_CHARACTER
Definition comin.h:163
@ COMIN_METADATA_TYPEID_REAL
Definition comin.h:162
@ COMIN_FLAG_SYNC_HALO
Definition comin.h:108
@ COMIN_FLAG_NONE
Definition comin.h:105
@ COMIN_FLAG_DEVICE
Definition comin.h:109
@ COMIN_FLAG_READ
Definition comin.h:106
@ COMIN_FLAG_WRITE
Definition comin.h:107
@ EP_ATM_INTEGRATE_END
Definition comin.h:66
@ EP_ATM_GWDRAG_BEFORE
Definition comin.h:90
@ EP_ATM_TIMELOOP_BEFORE
Definition comin.h:60
@ EP_ATM_PHYSICS_BEFORE
Definition comin.h:74
@ EP_ATM_TURBULENCE_BEFORE
Definition comin.h:80
@ EP_ATM_MICROPHYSICS_AFTER
Definition comin.h:83
@ EP_ATM_INTEGRATE_START
Definition comin.h:65
@ EP_ATM_SURFACE_AFTER
Definition comin.h:79
@ EP_ATM_RADHEAT_AFTER
Definition comin.h:89
@ EP_ATM_RADHEAT_BEFORE
Definition comin.h:88
@ EP_ATM_INTEGRATE_AFTER
Definition comin.h:67
@ EP_ATM_TURBULENCE_AFTER
Definition comin.h:81
@ EP_ATM_INTEGRATE_BEFORE
Definition comin.h:64
@ EP_SECONDARY_CONSTRUCTOR
Definition comin.h:52
@ EP_ATM_TIMELOOP_END
Definition comin.h:62
@ EP_ATM_YAC_DEFCOMP_AFTER
Definition comin.h:54
@ EP_ATM_WRITE_OUTPUT_BEFORE
Definition comin.h:68
@ EP_ATM_NUDGING_BEFORE
Definition comin.h:76
@ EP_ATM_TIMELOOP_START
Definition comin.h:61
@ EP_DESTRUCTOR
Definition comin.h:93
@ EP_ATM_TIMELOOP_AFTER
Definition comin.h:63
@ EP_ATM_CHECKPOINT_BEFORE
Definition comin.h:70
@ EP_ATM_YAC_SYNCDEF_AFTER
Definition comin.h:56
@ EP_ATM_MICROPHYSICS_BEFORE
Definition comin.h:82
@ EP_ATM_ADVECTION_AFTER
Definition comin.h:73
@ EP_ATM_YAC_ENDDEF_AFTER
Definition comin.h:58
@ EP_ATM_RADIATION_BEFORE
Definition comin.h:86
@ EP_ATM_CONVECTION_BEFORE
Definition comin.h:84
@ EP_ATM_GWDRAG_AFTER
Definition comin.h:91
@ EP_ATM_ADVECTION_BEFORE
Definition comin.h:72
@ EP_ATM_YAC_SYNCDEF_BEFORE
Definition comin.h:55
@ EP_FINISH
Definition comin.h:92
@ EP_ATM_CHECKPOINT_AFTER
Definition comin.h:71
@ EP_ATM_YAC_DEFCOMP_BEFORE
Definition comin.h:53
@ EP_ATM_RADIATION_AFTER
Definition comin.h:87
@ EP_ATM_YAC_ENDDEF_BEFORE
Definition comin.h:57
@ EP_ATM_PHYSICS_AFTER
Definition comin.h:75
@ EP_ATM_INIT_FINALIZE
Definition comin.h:59
@ EP_ATM_SURFACE_BEFORE
Definition comin.h:78
@ EP_ATM_NUDGING_AFTER
Definition comin.h:77
@ EP_ATM_CONVECTION_AFTER
Definition comin.h:85
@ EP_ATM_WRITE_OUTPUT_AFTER
Definition comin.h:69
@ COMIN_VAR_DATATYPE_INT
Definition comin.h:170
@ COMIN_VAR_DATATYPE_DOUBLE
Definition comin.h:168
@ COMIN_VAR_DATATYPE_FLOAT
Definition comin.h:169
@ COMIN_ERROR_VAR_REQUEST_AFTER_PRIMARYCONSTRUCTOR
Definition comin.h:133
@ COMIN_ERROR_METADATA_SET_OUTSIDE_PRIMARYCONSTRUCTOR
Definition comin.h:122
@ COMIN_ERROR_PLUGIN_INIT_STATE_INITIALIZED
Definition comin.h:129
@ COMIN_ERROR_POINTER_NOT_ASSOCIATED
Definition comin.h:139
@ COMIN_ERROR_SETUP_ERRHANDLER_NOT_ASSOCIATED
Definition comin.h:130
@ COMIN_ERROR_VAR_METADATA_INCONSISTENT_TYPE
Definition comin.h:149
@ COMIN_ERROR_VAR_GET_OUTSIDE_SECONDARY_CONSTRUCTOR
Definition comin.h:143
@ COMIN_ERROR_VAR_GET_VARIABLE_NOT_FOUND
Definition comin.h:145
@ COMIN_ERROR_CALLBACK_COMPLETE
Definition comin.h:118
@ COMIN_ERROR_STATUS
Definition comin.h:116
@ COMIN_ERROR_VAR_SYNC_HALO_NOT_ASSOCIATED
Definition comin.h:142
@ COMIN_ERROR_VAR_DESCRIPTOR_NOT_FOUND
Definition comin.h:136
@ COMIN_ERROR_PLUGIN_INIT_PRECISION
Definition comin.h:128
@ COMIN_ERROR_VAR_GET_CONTAINER_CAN_NOT_HALO_SYNCHRONIZED
Definition comin.h:146
@ COMIN_ERROR_METADATA_KEY_NOT_FOUND
Definition comin.h:123
@ COMIN_ERROR_METADATA_GET_INSIDE_PRIMARYCONSTRUCTOR
Definition comin.h:124
@ COMIN_ERROR_DESCRDATA_FINALIZE
Definition comin.h:121
@ COMIN_INFO
Definition comin.h:114
@ COMIN_ERROR_VAR_REQUEST_EXISTS_IS_LMODEXCLUSIVE
Definition comin.h:134
@ COMIN_ERROR_CALLBACK_REGISTER_OUTSIDE_PRIMARYCONSTRUCTOR
Definition comin.h:117
@ COMIN_ERROR_FIELD_NOT_ALLOCATED
Definition comin.h:138
@ COMIN_ERROR_VAR_ITEM_NOT_ASSOCIATED
Definition comin.h:137
@ COMIN_ERROR_VAR_GET_IRREGULAR_VAR_CAN_NOT_HALO_SYNCHRONIZED
Definition comin.h:147
@ COMIN_ERROR_SETUP_COMIN_ALREADY_INITIALIZED
Definition comin.h:126
@ COMIN_ERROR_VAR_GET_NO_DEVICE
Definition comin.h:144
@ COMIN_ERROR_VAR_REQUEST_EXISTS_REQUEST_LMODEXCLUSIVE
Definition comin.h:135
@ COMIN_SUCCESS
Definition comin.h:113
@ COMIN_ERROR_SETUP_PRECISION_TEST_FAILED
Definition comin.h:132
@ COMIN_ERROR_PLUGIN_INIT_COMIN_VERSION
Definition comin.h:127
@ COMIN_WARNING
Definition comin.h:115
@ COMIN_ERROR_SETUP_ERRHANDLER_NOT_SET
Definition comin.h:131
@ COMIN_ERROR_VAR_SYNC_HALO_NOT_SUPPORTED_ZAXIS
Definition comin.h:148
@ COMIN_ERROR_DESCRDATA_SET_FCT_GLB2LOC
Definition comin.h:120
@ COMIN_ERROR_CALLBACK_EP_ID_UNKNOWN
Definition comin.h:119
@ COMIN_ERROR_SETUP_FINALIZE
Definition comin.h:125
@ COMIN_ERROR_VAR_SYNC_DEVICE_MEM_NOT_ASSOCIATED
Definition comin.h:141
@ COMIN_ERROR_FATAL
Definition comin.h:150
@ COMIN_ERROR_TRACER_REQUEST_NOT_FOR_ALL_DOMAINS
Definition comin.h:140
const struct comin_descrdata_property_t * subtypes
Definition comin.h:329
char name[COMIN_MAX_LEN_VAR_NAME+1]
Definition comin.h:37
t_comin_var_descriptor descr
const int jg