diff --git a/catalyst_adapter.cpp b/catalyst_adapter.cpp index ec410eba9b404eb384a96c14a7dabe6b8f928f94..f94d721eb9dd5fd755cf46f2dfb160776ca424a5 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) {