9#define PY_SSIZE_T_CLEAN
39 return Py_BuildValue(
"{sissssss}",
"id", plugin_id,
"name", plugin_name,
62 return Py_BuildValue(
"{ssssssss}",
"exp_start", exp_start,
"exp_stop",
63 exp_stop,
"run_start", run_start,
"run_stop", run_stop);
77 static char const* kwlist[] = {
"j", NULL};
78 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"i", (
char**)&kwlist, &j))
82 return PyFloat_FromDouble(t);
97 static char const* kwlist[] = {
"j", NULL};
98 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"i", (
char**)&kwlist, &j))
100 int i = comin_descrdata_get_index(j);
102 return PyLong_FromLong(i);
117 static char const* kwlist[] = {
"j", NULL};
118 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"i", (
char**)&kwlist, &j))
120 int b = comin_descrdata_get_block(j);
122 return PyLong_FromLong(b);
126 int* i_startblk,
int* i_endblk);
146template <BlockLimitGetterFn get_block_limits>
149 int jg, irl_start, irl_end;
150 static char const* kwlist[] = {
"jg",
"irl_start",
"irl_end", NULL};
151 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"iii", (
char**)&kwlist, &
jg,
152 &irl_start, &irl_end))
154 int i_startblk, i_endblk;
155 get_block_limits(
jg, irl_start, irl_end, &i_startblk, &i_endblk);
157 return Py_BuildValue(
"ii", i_startblk, i_endblk);
161 int* i_startidx,
int* i_endidx,
int irl_start,
185template <IndexGetterFn get_indices>
188 int jg, i_blk, i_startblk, i_endblk, irl_start, irl_end;
189 static char const* kwlist[] = {
190 "jg",
"i_blk",
"i_startblk",
"i_endblk",
"irl_start",
"irl_end", NULL};
191 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"iiiiii", (
char**)&kwlist, &
jg,
192 &i_blk, &i_startblk, &i_endblk, &irl_start,
195 int i_startidx, i_endidx;
196 get_indices(
jg, i_blk, i_startblk, i_endblk, &i_startidx, &i_endidx,
199 return Py_BuildValue(
"ii", i_startidx, i_endidx);
214 static char const* kwlist[] = {
"jg", NULL};
215 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"i", (
char**)&kwlist, &
jg))
217 int npz = comin_descrdata_get_cell_npromz(
jg);
219 return PyLong_FromLong(npz);
234 static char const* kwlist[] = {
"jg", NULL};
235 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"i", (
char**)&kwlist, &
jg))
237 int npz = comin_descrdata_get_edge_npromz(
jg);
239 return PyLong_FromLong(npz);
254 static char const* kwlist[] = {
"jg", NULL};
255 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"i", (
char**)&kwlist, &
jg))
257 int npz = comin_descrdata_get_vert_npromz(
jg);
259 return PyLong_FromLong(npz);
274 return PyUnicode_FromString(datetime_str);
290 return PyErr_Format(PyExc_RuntimeError,
291 "comin_current_get_domain_id failed. (jg=%d)",
jg);
292 return PyLong_FromLong(
jg);
309 static char const* kwlist[] = {
"jg",
"global_idx", NULL};
310 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"ii", (
char**)&kwlist, &
jg,
315 return PyLong_FromLong(loc);
332 static char const* kwlist[] = {
"jg",
"global_idx", NULL};
333 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"ii", (
char**)&kwlist, &
jg,
338 return PyLong_FromLong(loc);
355 static char const* kwlist[] = {
"jg",
"global_idx", NULL};
356 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"ii", (
char**)&kwlist, &
jg,
361 return PyLong_FromLong(loc);
374 unsigned int major, minor, patch;
377 return Py_BuildValue(
"iii", major, minor, patch);
391 int comm = comin_parallel_get_host_mpi_comm();
393 return PyLong_FromLong((
long)comm);
407 int comm = comin_parallel_get_plugin_mpi_comm();
409 return PyLong_FromLong((
long)comm);
423 int rank = comin_parallel_get_host_mpi_rank();
425 return PyLong_FromLong((
long)
rank);
438 static char const* kwlist[] = {
"msg", NULL};
439 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"O", (
char**)&kwlist, &pymsg))
441 PyObject* msg_str = PyObject_Str(pymsg);
442 if (!PyUnicode_Check(msg_str)) {
443 return PyErr_Format(PyExc_ValueError,
"Conversion to string failed");
445 const char* val_str = PyUnicode_AsUTF8(msg_str);
448 comin_print_debug(val_str);
464 static char const* kwlist[] = {
"msg", NULL};
465 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"O", (
char**)&kwlist, &pymsg))
467 PyObject* msg_str = PyObject_Str(pymsg);
468 if (!PyUnicode_Check(msg_str)) {
469 return PyErr_Format(PyExc_ValueError,
"Conversion to string failed");
471 const char* val_str = PyUnicode_AsUTF8(msg_str);
474 comin_print_info(val_str);
490 static char const* kwlist[] = {
"msg", NULL};
491 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"O", (
char**)&kwlist, &pymsg))
493 PyObject* msg_str = PyObject_Str(pymsg);
494 if (!PyUnicode_Check(msg_str)) {
495 return PyErr_Format(PyExc_ValueError,
"Conversion to string failed");
497 const char* val_str = PyUnicode_AsUTF8(msg_str);
500 comin_print_warning(val_str);
510 {
"_descrdata_eval_property",
512 METH_VARARGS | METH_KEYWORDS,
""},
517 {
"_descrdata_get_simulation_interval",
519 {
"descrdata_get_timesteplength",
521 METH_VARARGS | METH_KEYWORDS,
522 "C function signature: `void double "
523 "comin_descrdata_get_timesteplength(int jg)`"},
525 METH_VARARGS | METH_KEYWORDS,
526 "C function signature: `int comin_descrdata_get_index(int j)`"},
528 METH_VARARGS | METH_KEYWORDS,
529 "C function signature: `int comin_descrdata_get_block(int j)`"},
530 {
"descrdata_get_cell_block_limits",
533 METH_VARARGS | METH_KEYWORDS,
534 "C function signature: `void comin_descrdata_get_cell_block_limits(int "
535 "jg, int irl_start, int irl_end, int* i_startblk, int* i_endblk)`"},
536 {
"descrdata_get_edge_block_limits",
539 METH_VARARGS | METH_KEYWORDS,
540 "C function signature: `void comin_descrdata_get_edge_block_limits(int "
541 "jg, int irl_start, int irl_end, int* i_startblk, int* i_endblk)`"},
542 {
"descrdata_get_vert_block_limits",
545 METH_VARARGS | METH_KEYWORDS,
546 "C function signature: `void comin_descrdata_get_vert_block_limits(int "
547 "jg, int irl_start, int irl_end, int* i_startblk, int* i_endblk)`"},
548 {
"descrdata_get_cell_indices",
551 METH_VARARGS | METH_KEYWORDS,
552 "C function signature: `void comin_descrdata_get_cell_indices(int jg, "
553 "int i_blk, int i_startblk, int i_endblk, int* i_startidx, int* "
554 "i_endidx, int irl_start, int irl_end)`"},
555 {
"descrdata_get_edge_indices",
558 METH_VARARGS | METH_KEYWORDS,
559 "C function signature: `void comin_descrdata_get_edge_indices(int jg, "
560 "int i_blk, int i_startblk, int i_endblk, int* i_startidx, int* "
561 "i_endidx, int irl_start, int irl_end)`"},
562 {
"descrdata_get_vert_indices",
565 METH_VARARGS | METH_KEYWORDS,
566 "C function signature: `void comin_descrdata_get_vert_indices(int jg, "
567 "int i_blk, int i_startblk, int i_endblk, int* i_startidx, int* "
568 "i_endidx, int irl_start, int irl_end)`"},
569 {
"descrdata_get_cell_npromz",
571 METH_VARARGS | METH_KEYWORDS,
572 "C function signature: `int comin_descrdata_get_cell_npromz(int jg)`"},
573 {
"descrdata_get_edge_npromz",
575 METH_VARARGS | METH_KEYWORDS,
576 "C function signature: `int comin_descrdata_get_edge_npromz(int jg)`"},
577 {
"descrdata_get_vert_npromz",
579 METH_VARARGS | METH_KEYWORDS,
580 "C function signature: `int comin_descrdata_get_vert_npromz(int jg)`"},
582 "C function signature: `const char* comin_current_get_datetime();`"},
585 "C function signature: `int comin_current_get_domain_id()`"},
586 {
"descrdata_index_lookup_glb2loc_cell",
588 METH_VARARGS | METH_KEYWORDS,
589 "C function signature: `int "
590 "comin_descrdata_index_lookup_glb2loc_cell(int jg, int global_idx)`"},
591 {
"descrdata_index_lookup_glb2loc_edge",
593 METH_VARARGS | METH_KEYWORDS,
594 "C function signature: `int "
595 "comin_descrdata_index_lookup_glb2loc_edge(int jg, int global_idx)`"},
596 {
"descrdata_index_lookup_glb2loc_vert",
598 METH_VARARGS | METH_KEYWORDS,
599 "C function signature: `int "
600 "comin_descrdata_index_lookup_glb2loc_vert(int jg, int global_idx)`"},
602 "returns (major, minor, patch) version info"},
605 "C function signature: `int comin_parallel_get_host_mpi_comm()`"},
606 {
"parallel_get_plugin_mpi_comm",
608 "C function signature: `int comin_parallel_get_host_mpi_comm()`"},
611 "C function signature: `int comin_parallel_get_host_mpi_rank()`"},
613 METH_VARARGS | METH_KEYWORDS,
614 "C function signature: `void comin_print_debug(const char* msg)`"},
616 METH_VARARGS | METH_KEYWORDS,
617 "C function signature: `void comin_print_info(const char* msg)`"},
619 METH_VARARGS | METH_KEYWORDS,
620 "C function signature: `void comin_print_warning(const char* msg)`"},
C interface for the ICON Community Interface.
const char * comin_current_get_plugin_name()
const char * comin_current_get_plugin_options()
const char * comin_current_get_plugin_comm()
void comin_setup_get_version(unsigned int *major, unsigned int *minor, unsigned int *patch)
const char * comin_descrdata_get_simulation_interval_exp_start()
const char * comin_descrdata_get_simulation_interval_exp_stop()
int comin_current_get_plugin_id()
int comin_descrdata_index_lookup_glb2loc_cell(int jg, int glb)
const char * comin_current_get_datetime()
int comin_descrdata_index_lookup_glb2loc_vert(int jg, int glb)
const char * comin_descrdata_get_simulation_interval_run_start()
const char * comin_descrdata_get_simulation_interval_run_stop()
int comin_descrdata_index_lookup_glb2loc_edge(int jg, int glb)
int comin_current_get_domain_id()
double comin_descrdata_get_timesteplength(int jg)
static const struct comin_descrdata_property_t comin_descrdata_domain_properties[]
static const struct comin_descrdata_property_t comin_descrdata_global_properties[]
simulation_interval descrdata_get_simulation_interval()
returns simulation interval
static PyObject * print_info(PyObject *, PyObject *args, PyObject *kwargs)
Print info message through ComIn's message system.
static PyObject * parallel_get_plugin_mpi_comm(PyObject *, PyObject *)
Plugin MPI Communicator.
static PyObject * descrdata_get_vert_npromz(PyObject *, PyObject *args, PyObject *kwargs)
get npromz.
static PyObject * descrdata_get_index(PyObject *, PyObject *args, PyObject *kwargs)
get nproma index.
static PyObject * print_debug(PyObject *, PyObject *args, PyObject *kwargs)
Print debug message through ComIn's message system.
static PyObject * setup_get_version(PyObject *, PyObject *)
Get version.
static PyObject * current_get_datetime(PyObject *, PyObject *)
Get current datetime string.
static PyObject * descrdata_get_block_limits(PyObject *, PyObject *args, PyObject *kwargs)
get block limits.
static PyObject * descrdata_get_indices(PyObject *, PyObject *args, PyObject *kwargs)
get indices.
static PyObject * descrdata_get_cell_npromz(PyObject *, PyObject *args, PyObject *kwargs)
get npromz.
static PyObject * current_get_domain_id(PyObject *, PyObject *)
Get current domain ID.
static PyObject * print_warning(PyObject *, PyObject *args, PyObject *kwargs)
Print warning message through ComIn's message system.
static PyObject * descrdata_index_lookup_glb2loc_edge(PyObject *, PyObject *args, PyObject *kwargs)
Maps global to local indices.
static PyObject * descrdata_get_edge_npromz(PyObject *, PyObject *args, PyObject *kwargs)
get npromz.
static PyObject * parallel_get_host_mpi_comm(PyObject *, PyObject *)
Host MPI Communicator.
static PyObject * descrdata_get_block(PyObject *, PyObject *args, PyObject *kwargs)
get block index.
plugin_info current_get_plugin_info()
returns object describing the current plugin
static PyObject * descrdata_index_lookup_glb2loc_cell(PyObject *, PyObject *args, PyObject *kwargs)
Maps global to local indices.
static PyObject * parallel_get_host_mpi_rank(PyObject *, PyObject *)
Rank number in host communicator.
_descrdata descrdata_get_global()
returns global descriptive data object
static PyObject * descrdata_index_lookup_glb2loc_vert(PyObject *, PyObject *args, PyObject *kwargs)
Maps global to local indices.
static PyObject * descrdata_get_timesteplength(PyObject *, PyObject *args, PyObject *kwargs)
Get timestep length for domain.
void(*)(int jg, int irl_start, int irl_end, int *i_startblk, int *i_endblk) BlockLimitGetterFn
void check_error(std::string add_info)
static PyObject * descrdata_get_domain(PyObject *, PyObject *)
void(*)(int jg, int i_blk, int i_startblk, int i_endblk, int *i_startidx, int *i_endidx, int irl_start, int irl_end) IndexGetterFn
static PyObject * descrdata_properties_to_dict(const comin_descrdata_property_t *properties)
const std::vector< PyMethodDef > descrdata_methods()
PyObject * func_wrapper(PyObject *self, PyObject *args)