29 unsigned int major, minor, patch;
30 comin_setup_get_version(&major, &minor, &patch);
34 t_comin_var_descriptor desc;
35 for (
void *it = comin_var_get_descr_list_head(); it != NULL;
36 it = comin_var_get_descr_list_next(it)) {
37 comin_var_get_descr_list_var_desc(it, &desc);
44 t_comin_var_descr_list_iterator *descr_it = comin_var_get_descr_list_head();
45 descr_it = comin_var_get_descr_list_next(descr_it);
46 comin_var_descr_list_iterator_delete(&descr_it);
49 t_comin_var_descriptor pres_d = {.
name =
"pres", .id = 1};
50 t_comin_entry_point before_output = EP_ATM_WRITE_OUTPUT_BEFORE;
51 pres = comin_var_get(1, &before_output, pres_d, COMIN_FLAG_READ);
53 comin_plugin_finish(
"simple_c_plugin",
"Internal error!");
56 t_comin_var_descriptor var_d = {.
name =
"simple_c_var", .id = 1};
57 simple_c_var = comin_var_get(1, &before_output, var_d, COMIN_FLAG_WRITE);
59 comin_plugin_finish(
"simple_c_plugin",
"Internal error!");
62 t_comin_var_descriptor tracer_d = {.
name =
"simple_c_tracer", .id = 1};
64 comin_var_get(1, &before_output, tracer_d, COMIN_FLAG_WRITE);
66 comin_plugin_finish(
"simple_c_plugin",
"Internal error!");
69 comin_print_info(
"Metadata:");
71 void *end_it = comin_metadata_get_iterator_end(pres_d);
72 void *it = comin_metadata_get_iterator_begin(pres_d);
73 for (; !comin_metadata_iterator_compare(it, end_it);
74 comin_metadata_iterator_next(it)) {
75 const char *key = comin_metadata_iterator_get_key(it);
76 int type = comin_metadata_get_typeid(pres_d, key);
78 if (type == COMIN_METADATA_TYPEID_INTEGER) {
80 comin_metadata_get_integer(pres_d, key, &val);
84 comin_metadata_iterator_delete(it);
85 comin_metadata_iterator_delete(end_it);
90 comin_var_get_dim_semantics(
pres, dim_semantics);
91 if (dim_semantics[0] != COMIN_DIM_SEMANTICS_NPROMA) {
92 comin_plugin_finish(
"simple_c_plugin",
"Internal error!");
94 if (dim_semantics[1] != COMIN_DIM_SEMANTICS_LEVEL) {
95 comin_plugin_finish(
"simple_c_plugin",
"Internal error!");
97 if (dim_semantics[2] != COMIN_DIM_SEMANTICS_BLOCK) {
98 comin_plugin_finish(
"simple_c_plugin",
"Internal error!");
104 comin_print_info(
"simple_c_diagfct called!");
105 jg = comin_current_get_domain_id();
107 int pres_shape[5], tracer_shape[5];
108 comin_var_get_shape(
pres, pres_shape);
109 double *simple_c_var_data = comin_var_get_ptr_double(
simple_c_var);
110 double *pres_data = comin_var_get_ptr_double(
pres);
111 for (
int i = 0; i < pres_shape[0] * pres_shape[1] * pres_shape[2] *
112 pres_shape[3] * pres_shape[4];
114 simple_c_var_data[i] = pres_data[i] + 42.;
117 double *simple_c_tracer_data = comin_var_get_ptr_double(
simple_c_tracer);
118 for (
int i = 0; i < tracer_shape[0] * tracer_shape[1] * tracer_shape[2];
120 simple_c_tracer_data[i] /= 1337.;
128 const char *plugin_name = NULL;
129 comin_current_get_plugin_name(&plugin_name, &ilen);
131 int plugin_id = comin_current_get_plugin_id();
133 t_comin_var_descriptor simple_var_d = {.
name =
"simple_c_var", .id = 1};
134 comin_var_request_add(simple_var_d,
true);
136 comin_metadata_set_integer(simple_var_d,
"zaxis_id", COMIN_ZAXIS_3D);
137 comin_metadata_set_logical(simple_var_d,
"restart",
false);
138 comin_metadata_set_logical(simple_var_d,
"tracer",
false);
139 comin_metadata_set_integer(simple_var_d,
"tracer_vlimit", 0);
140 comin_metadata_set_integer(simple_var_d,
"tracer_hlimit", 0);
142 t_comin_var_descriptor simple_tracer_d = {.
name =
"simple_c_tracer",
144 comin_var_request_add(simple_tracer_d,
false);
145 comin_metadata_set_integer(simple_tracer_d,
"zaxis_id", COMIN_ZAXIS_3D);
146 comin_metadata_set_logical(simple_tracer_d,
"restart",
false);
147 comin_metadata_set_logical(simple_tracer_d,
"tracer",
true);
148 comin_metadata_set_integer(simple_tracer_d,
"tracer_vlimit", 0);
149 comin_metadata_set_integer(simple_tracer_d,
"tracer_hlimit", 0);
155 char ep_name[COMIN_MAX_LEN_EP_NAME + 1];
156 comin_callback_get_ep_name(EP_DESTRUCTOR, ep_name);
157 if (strncmp(ep_name,
"EP_DESTRUCTOR", (
size_t)13)) {
158 char output_text[255];
159 sprintf(output_text,
"Expected EP_DESTRUCTOR; got |%s|\n", ep_name);
160 comin_plugin_finish(
"simple_c: comin_main", output_text);