From 16ca073d9a93b408c7b763761e604b477fb46008 Mon Sep 17 00:00:00 2001 From: GuySten Date: Tue, 3 Feb 2026 08:03:02 +0200 Subject: [PATCH 1/4] make dagmc errors loud --- src/dagmc.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/dagmc.cpp b/src/dagmc.cpp index 571182fa6b2..f08fc0a93e6 100644 --- a/src/dagmc.cpp +++ b/src/dagmc.cpp @@ -154,11 +154,11 @@ void DAGUniverse::init_dagmc() fatal_error("Geometry DAGMC file '" + filename_ + "' does not exist!"); } moab::ErrorCode rval = dagmc_instance_->load_file(filename_.c_str()); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); // initialize acceleration data structures rval = dagmc_instance_->init_OBBTree(); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); } void DAGUniverse::init_metadata() @@ -173,7 +173,7 @@ void DAGUniverse::init_metadata() std::string delimiters = ":/"; moab::ErrorCode rval; rval = dagmc_instance_->parse_properties(keywords, dum, delimiters.c_str()); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); } void DAGUniverse::init_geometry() @@ -256,7 +256,7 @@ void DAGUniverse::init_geometry() const auto& mat = model::materials[model::material_map.at(c->material_[0])]; if (dagmc_instance_->has_prop(vol_handle, "temp")) { rval = dagmc_instance_->prop_value(vol_handle, "temp", temp_value); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); double temp = std::stod(temp_value); c->sqrtkT_.push_back(std::sqrt(K_BOLTZMANN * temp)); } else if (mat->temperature() > 0.0) { @@ -325,7 +325,7 @@ void DAGUniverse::init_geometry() moab::Range parent_vols; rval = dagmc_instance_->moab_instance()->get_parent_meshsets( surf_handle, parent_vols); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); // if this surface belongs to the graveyard if (graveyard && parent_vols.find(graveyard) != parent_vols.end()) { @@ -692,7 +692,7 @@ std::pair DAGCell::distance( // create the ray double pnt[3] = {r.x, r.y, r.z}; double dir[3] = {u.x, u.y, u.z}; - MB_CHK_ERR_CONT( + MB_CHK_ERR( dagmc_ptr_->ray_fire(vol, pnt, dir, hit_surf, dist, &p->history())); if (hit_surf != 0) { surf_idx = @@ -732,7 +732,7 @@ bool DAGCell::contains(Position r, Direction u, int32_t on_surface) const double pnt[3] = {r.x, r.y, r.z}; double dir[3] = {u.x, u.y, u.z}; rval = dagmc_ptr_->point_in_volume(vol, pnt, result, dir); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); return result; } @@ -752,7 +752,7 @@ BoundingBox DAGCell::bounding_box() const moab::EntityHandle vol = dagmc_ptr_->entity_by_index(3, dag_index_); double min[3], max[3]; rval = dagmc_ptr_->getobb(vol, min, max); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); return {{min[0], min[1], min[2]}, {max[0], max[1], max[2]}}; } @@ -783,7 +783,7 @@ double DAGSurface::distance(Position r, Direction u, bool coincident) const double pnt[3] = {r.x, r.y, r.z}; double dir[3] = {u.x, u.y, u.z}; rval = dagmc_ptr_->ray_fire(surf, pnt, dir, hit_surf, dist, NULL, 0, 0); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); if (dist < 0.0) dist = INFTY; return dist; @@ -796,7 +796,7 @@ Direction DAGSurface::normal(Position r) const double pnt[3] = {r.x, r.y, r.z}; double dir[3]; rval = dagmc_ptr_->get_angle(surf, pnt, dir); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); return dir; } @@ -807,7 +807,7 @@ Direction DAGSurface::reflect(Position r, Direction u, GeometryState* p) const double dir[3]; moab::ErrorCode rval = dagmc_ptr_->get_angle(mesh_handle(), pnt, dir, &p->history()); - MB_CHK_ERR_CONT(rval); + MB_CHK_ERR(rval); return u.reflect(dir); } From 0065f2f613fc3f00a9c297132915ca24d592c229 Mon Sep 17 00:00:00 2001 From: GuySten Date: Tue, 3 Feb 2026 08:26:10 +0200 Subject: [PATCH 2/4] fix typo --- src/dagmc.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/dagmc.cpp b/src/dagmc.cpp index f08fc0a93e6..8380392aa67 100644 --- a/src/dagmc.cpp +++ b/src/dagmc.cpp @@ -154,11 +154,11 @@ void DAGUniverse::init_dagmc() fatal_error("Geometry DAGMC file '" + filename_ + "' does not exist!"); } moab::ErrorCode rval = dagmc_instance_->load_file(filename_.c_str()); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); // initialize acceleration data structures rval = dagmc_instance_->init_OBBTree(); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); } void DAGUniverse::init_metadata() @@ -173,7 +173,7 @@ void DAGUniverse::init_metadata() std::string delimiters = ":/"; moab::ErrorCode rval; rval = dagmc_instance_->parse_properties(keywords, dum, delimiters.c_str()); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); } void DAGUniverse::init_geometry() @@ -256,7 +256,7 @@ void DAGUniverse::init_geometry() const auto& mat = model::materials[model::material_map.at(c->material_[0])]; if (dagmc_instance_->has_prop(vol_handle, "temp")) { rval = dagmc_instance_->prop_value(vol_handle, "temp", temp_value); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); double temp = std::stod(temp_value); c->sqrtkT_.push_back(std::sqrt(K_BOLTZMANN * temp)); } else if (mat->temperature() > 0.0) { @@ -325,7 +325,7 @@ void DAGUniverse::init_geometry() moab::Range parent_vols; rval = dagmc_instance_->moab_instance()->get_parent_meshsets( surf_handle, parent_vols); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); // if this surface belongs to the graveyard if (graveyard && parent_vols.find(graveyard) != parent_vols.end()) { @@ -692,7 +692,7 @@ std::pair DAGCell::distance( // create the ray double pnt[3] = {r.x, r.y, r.z}; double dir[3] = {u.x, u.y, u.z}; - MB_CHK_ERR( + MB_CHK_ERR_RET( dagmc_ptr_->ray_fire(vol, pnt, dir, hit_surf, dist, &p->history())); if (hit_surf != 0) { surf_idx = @@ -732,7 +732,7 @@ bool DAGCell::contains(Position r, Direction u, int32_t on_surface) const double pnt[3] = {r.x, r.y, r.z}; double dir[3] = {u.x, u.y, u.z}; rval = dagmc_ptr_->point_in_volume(vol, pnt, result, dir); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); return result; } @@ -752,7 +752,7 @@ BoundingBox DAGCell::bounding_box() const moab::EntityHandle vol = dagmc_ptr_->entity_by_index(3, dag_index_); double min[3], max[3]; rval = dagmc_ptr_->getobb(vol, min, max); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); return {{min[0], min[1], min[2]}, {max[0], max[1], max[2]}}; } @@ -783,7 +783,7 @@ double DAGSurface::distance(Position r, Direction u, bool coincident) const double pnt[3] = {r.x, r.y, r.z}; double dir[3] = {u.x, u.y, u.z}; rval = dagmc_ptr_->ray_fire(surf, pnt, dir, hit_surf, dist, NULL, 0, 0); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); if (dist < 0.0) dist = INFTY; return dist; @@ -796,7 +796,7 @@ Direction DAGSurface::normal(Position r) const double pnt[3] = {r.x, r.y, r.z}; double dir[3]; rval = dagmc_ptr_->get_angle(surf, pnt, dir); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); return dir; } @@ -807,7 +807,7 @@ Direction DAGSurface::reflect(Position r, Direction u, GeometryState* p) const double dir[3]; moab::ErrorCode rval = dagmc_ptr_->get_angle(mesh_handle(), pnt, dir, &p->history()); - MB_CHK_ERR(rval); + MB_CHK_ERR_RET(rval); return u.reflect(dir); } From 33b5b7a19844179e99bb7a2036ccdce5d633139c Mon Sep 17 00:00:00 2001 From: GuySten Date: Tue, 3 Feb 2026 08:47:09 +0200 Subject: [PATCH 3/4] simplify code --- include/openmc/dagmc.h | 7 +++++ src/dagmc.cpp | 60 ++++++++++++++++++------------------------ 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/include/openmc/dagmc.h b/include/openmc/dagmc.h index 0e27402a159..2e0542c0692 100644 --- a/include/openmc/dagmc.h +++ b/include/openmc/dagmc.h @@ -214,6 +214,13 @@ class DAGUniverse : public Universe { int32_t next_cell(int32_t surf, int32_t curr_cell, int32_t univ); +inline void dagmc_check_error( + moab::ErrorCode err_code, std::string msg = "dagmc error") +{ + if (err_code != moab::MB_SUCCESS) + fatal_error(msg); +} + } // namespace openmc #endif // OPENMC_DAGMC_ENABLED diff --git a/src/dagmc.cpp b/src/dagmc.cpp index 8380392aa67..41a8b1e7761 100644 --- a/src/dagmc.cpp +++ b/src/dagmc.cpp @@ -153,12 +153,12 @@ void DAGUniverse::init_dagmc() if (!file_exists(filename_)) { fatal_error("Geometry DAGMC file '" + filename_ + "' does not exist!"); } - moab::ErrorCode rval = dagmc_instance_->load_file(filename_.c_str()); - MB_CHK_ERR_RET(rval); + auto rval = dagmc_instance_->load_file(filename_.c_str()); + dagmc_check_error(rval); // initialize acceleration data structures rval = dagmc_instance_->init_OBBTree(); - MB_CHK_ERR_RET(rval); + dagmc_check_error(rval); } void DAGUniverse::init_metadata() @@ -171,15 +171,13 @@ void DAGUniverse::init_metadata() std::vector keywords {"temp"}; std::map dum; std::string delimiters = ":/"; - moab::ErrorCode rval; - rval = dagmc_instance_->parse_properties(keywords, dum, delimiters.c_str()); - MB_CHK_ERR_RET(rval); + auto rval = + dagmc_instance_->parse_properties(keywords, dum, delimiters.c_str()); + dagmc_check_error(rval); } void DAGUniverse::init_geometry() { - moab::ErrorCode rval; - // determine the next cell id int32_t next_cell_id = 0; for (const auto& c : model::cells) { @@ -255,8 +253,8 @@ void DAGUniverse::init_geometry() // assign cell temperature const auto& mat = model::materials[model::material_map.at(c->material_[0])]; if (dagmc_instance_->has_prop(vol_handle, "temp")) { - rval = dagmc_instance_->prop_value(vol_handle, "temp", temp_value); - MB_CHK_ERR_RET(rval); + auto rval = dagmc_instance_->prop_value(vol_handle, "temp", temp_value); + dagmc_check_error(rval); double temp = std::stod(temp_value); c->sqrtkT_.push_back(std::sqrt(K_BOLTZMANN * temp)); } else if (mat->temperature() > 0.0) { @@ -323,9 +321,9 @@ void DAGUniverse::init_geometry() // graveyard check moab::Range parent_vols; - rval = dagmc_instance_->moab_instance()->get_parent_meshsets( + auto rval = dagmc_instance_->moab_instance()->get_parent_meshsets( surf_handle, parent_vols); - MB_CHK_ERR_RET(rval); + dagmc_check_error(rval); // if this surface belongs to the graveyard if (graveyard && parent_vols.find(graveyard) != parent_vols.end()) { @@ -417,9 +415,8 @@ std::string DAGUniverse::dagmc_ids_for_dim(int dim) const int32_t DAGUniverse::implicit_complement_idx() const { moab::EntityHandle ic; - moab::ErrorCode rval = - dagmc_instance_->geom_tool()->get_implicit_complement(ic); - MB_CHK_SET_ERR_CONT(rval, "Failed to get implicit complement"); + auto rval = dagmc_instance_->geom_tool()->get_implicit_complement(ic); + dagmc_check_error(rval, "Failed to get implicit complement"); // off-by-one: DAGMC indices start at one return cell_idx_offset_ + dagmc_instance_->index_by_handle(ic) - 1; } @@ -692,8 +689,9 @@ std::pair DAGCell::distance( // create the ray double pnt[3] = {r.x, r.y, r.z}; double dir[3] = {u.x, u.y, u.z}; - MB_CHK_ERR_RET( - dagmc_ptr_->ray_fire(vol, pnt, dir, hit_surf, dist, &p->history())); + auto rval = + dagmc_ptr_->ray_fire(vol, pnt, dir, hit_surf, dist, &p->history()); + dagmc_check_error(rval); if (hit_surf != 0) { surf_idx = dag_univ->surf_idx_offset_ + dagmc_ptr_->index_by_handle(hit_surf); @@ -725,14 +723,13 @@ std::pair DAGCell::distance( bool DAGCell::contains(Position r, Direction u, int32_t on_surface) const { - moab::ErrorCode rval; moab::EntityHandle vol = dagmc_ptr_->entity_by_index(3, dag_index_); int result = 0; double pnt[3] = {r.x, r.y, r.z}; double dir[3] = {u.x, u.y, u.z}; - rval = dagmc_ptr_->point_in_volume(vol, pnt, result, dir); - MB_CHK_ERR_RET(rval); + auto rval = dagmc_ptr_->point_in_volume(vol, pnt, result, dir); + dagmc_check_error(rval); return result; } @@ -748,11 +745,10 @@ void DAGCell::to_hdf5_inner(hid_t group_id) const BoundingBox DAGCell::bounding_box() const { - moab::ErrorCode rval; moab::EntityHandle vol = dagmc_ptr_->entity_by_index(3, dag_index_); double min[3], max[3]; - rval = dagmc_ptr_->getobb(vol, min, max); - MB_CHK_ERR_RET(rval); + auto rval = dagmc_ptr_->getobb(vol, min, max); + dagmc_check_error(rval); return {{min[0], min[1], min[2]}, {max[0], max[1], max[2]}}; } @@ -776,14 +772,13 @@ double DAGSurface::evaluate(Position r) const double DAGSurface::distance(Position r, Direction u, bool coincident) const { - moab::ErrorCode rval; moab::EntityHandle surf = dagmc_ptr_->entity_by_index(2, dag_index_); moab::EntityHandle hit_surf; double dist; double pnt[3] = {r.x, r.y, r.z}; double dir[3] = {u.x, u.y, u.z}; - rval = dagmc_ptr_->ray_fire(surf, pnt, dir, hit_surf, dist, NULL, 0, 0); - MB_CHK_ERR_RET(rval); + auto rval = dagmc_ptr_->ray_fire(surf, pnt, dir, hit_surf, dist, NULL, 0, 0); + dagmc_check_error(rval); if (dist < 0.0) dist = INFTY; return dist; @@ -791,12 +786,11 @@ double DAGSurface::distance(Position r, Direction u, bool coincident) const Direction DAGSurface::normal(Position r) const { - moab::ErrorCode rval; moab::EntityHandle surf = dagmc_ptr_->entity_by_index(2, dag_index_); double pnt[3] = {r.x, r.y, r.z}; double dir[3]; - rval = dagmc_ptr_->get_angle(surf, pnt, dir); - MB_CHK_ERR_RET(rval); + auto rval = dagmc_ptr_->get_angle(surf, pnt, dir); + dagmc_check_error(rval); return dir; } @@ -805,9 +799,8 @@ Direction DAGSurface::reflect(Position r, Direction u, GeometryState* p) const assert(p); double pnt[3] = {r.x, r.y, r.z}; double dir[3]; - moab::ErrorCode rval = - dagmc_ptr_->get_angle(mesh_handle(), pnt, dir, &p->history()); - MB_CHK_ERR_RET(rval); + auto rval = dagmc_ptr_->get_angle(mesh_handle(), pnt, dir, &p->history()); + dagmc_check_error(rval); return u.reflect(dir); } @@ -849,8 +842,7 @@ int32_t next_cell(int32_t surf, int32_t curr_cell, int32_t univ) moab::EntityHandle curr_vol = cellp->mesh_handle(); moab::EntityHandle new_vol; - moab::ErrorCode rval = - cellp->dagmc_ptr()->next_vol(surf_handle, curr_vol, new_vol); + auto rval = cellp->dagmc_ptr()->next_vol(surf_handle, curr_vol, new_vol); if (rval != moab::MB_SUCCESS) return -1; From ebc9422d78c36a67c155e43b7e23f5564759c499 Mon Sep 17 00:00:00 2001 From: GuySten Date: Tue, 3 Feb 2026 08:53:46 +0200 Subject: [PATCH 4/4] improve error message --- src/dagmc.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dagmc.cpp b/src/dagmc.cpp index 41a8b1e7761..7c96e676271 100644 --- a/src/dagmc.cpp +++ b/src/dagmc.cpp @@ -154,7 +154,8 @@ void DAGUniverse::init_dagmc() fatal_error("Geometry DAGMC file '" + filename_ + "' does not exist!"); } auto rval = dagmc_instance_->load_file(filename_.c_str()); - dagmc_check_error(rval); + dagmc_check_error( + rval, "Failed to load geometry DAGMC file '" + filename_ + "'."); // initialize acceleration data structures rval = dagmc_instance_->init_OBBTree();