From 43f005805d8f1ea4ab50e14ede440926e30944d3 Mon Sep 17 00:00:00 2001 From: Nils-Arne Dreier <dreier@dkrz.de> Date: Wed, 12 Jun 2024 21:39:31 +0200 Subject: [PATCH] add mpi_rank and decomp_domain variables --- catalyst_adapter.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/catalyst_adapter.cpp b/catalyst_adapter.cpp index ec410eb..f94d721 100644 --- a/catalyst_adapter.cpp +++ b/catalyst_adapter.cpp @@ -79,6 +79,7 @@ void catalyst_adapter_secondary_constructor(){ } channel["data/topologies/mesh/elements/connectivity"].set(vidx); + // add all 2d variables for(void* it = comin_var_get_descr_list_head(); it != nullptr; it = comin_var_get_descr_list_next(it)){ @@ -88,6 +89,7 @@ void catalyst_adapter_secondary_constructor(){ comin_metadata_get_integer(var_desc, "zaxis_id", &zaxis_id, &ierr); if(var_desc.id == jg && zaxis_id == COMIN_ZAXIS_2D){ + // TODO split tracers in separate arrays channel["data/fields/" + std::string(var_desc.name) + "/association"] = "element"; channel["data/fields/" + std::string(var_desc.name) + "/topology"] = "mesh"; channel["data/fields/" + std::string(var_desc.name) + "/volume_dependend"] = false; @@ -97,6 +99,22 @@ void catalyst_adapter_secondary_constructor(){ .set_external(comin_var_get_ptr(handle), ncells); } } + + // add some special fields + channel["data/fields/mpi_rank/association"] = "element"; + channel["data/fields/mpi_rank/topology"] = "mesh"; + channel["data/fields/mpi_rank/volume_dependend"] = false; + channel["data/fields/mpi_rank/values"] + .set(std::vector<int>(ncells, comin_parallel_get_host_mpi_rank())); + + channel["data/fields/decomp_domain/association"] = "element"; + channel["data/fields/decomp_domain/topology"] = "mesh"; + channel["data/fields/decomp_domain/volume_dependend"] = false; + int* decomp_domain_ptr = nullptr; + int arr_size2[2]; + comin_descrdata_get_domain_cells_decomp_domain(jg, &decomp_domain_ptr, arr_size2); + channel["data/fields/decomp_domain/values"] + .set_external(decomp_domain_ptr, ncells); } } @@ -104,9 +122,12 @@ void catalyst_adapter_execute(){ static int64_t cycle = 0; catalyst_exec_params["catalyst/state/cycle"] = cycle; - catalyst_exec_params["catalyst/state/time"] = cycle; + static double dt = comin_descrdata_get_timesteplength(1); // TODO jg=1?! + catalyst_exec_params["catalyst/state/time"] = cycle*dt; cycle++; + // TODO: update pointers of time dependend variables + enum catalyst_status err = catalyst_execute(conduit_cpp::c_node(&catalyst_exec_params)); if (err != catalyst_status_ok) { -- GitLab