Removing some unused DAGMC functions.

This commit is contained in:
Patrick Shriwise 2021-03-13 22:24:27 -06:00
parent 4d58990957
commit 4819e02f22
2 changed files with 0 additions and 221 deletions

View file

@ -18,11 +18,6 @@ class UWUW;
namespace openmc {
namespace model {
extern std::shared_ptr<moab::DagMC> DAG;
}
class DAGUniverse : public Universe {
public:
@ -43,12 +38,7 @@ public:
bool adjust_material_ids_;
};
void load_dagmc_geometry();
int32_t create_dagmc_universe(const std::string& filename);
void read_geometry_dagmc();
void read_dagmc_universes(pugi::xml_node node);
bool read_uwuw_materials(pugi::xml_document& doc);
bool get_uwuw_materials_xml(std::string& s);
} // namespace openmc

View file

@ -39,13 +39,6 @@ namespace openmc {
const std::string DAGMC_FILENAME = "dagmc.h5m";
namespace model {
std::shared_ptr<moab::DagMC> DAG;
} // namespace model
std::string dagmc_file() {
std::string filename = settings::path_input + DAGMC_FILENAME;
if (!file_exists(filename)) {
@ -129,9 +122,6 @@ bool read_uwuw_materials(pugi::xml_document& doc) {
return found_uwuw_mats;
}
void read_single_file_dagmc_materials(std::string dagmc_filename) {
}
bool write_uwuw_materials_xml() {
std::string s;
bool found_uwuw_mats = get_uwuw_materials_xml(s);
@ -193,21 +183,12 @@ void legacy_assign_material(std::string mat_string, DAGCell* c)
}
}
void load_dagmc_geometry()
{
model::universes.push_back(std::make_unique<DAGUniverse>(dagmc_file()));
model::universe_map[model::universes.back()->id_] = model::universes.size() - 1;
}
#ifdef DAGMC
void read_dagmc_universes(pugi::xml_node node) {
for (pugi::xml_node dag_node : node.children("dagmc")) {
model::universes.push_back(std::make_unique<DAGUniverse>(dag_node));
model::universe_map[model::universes.back()->id_] = model::universes.size() - 1;
}
}
#endif
DAGUniverse::DAGUniverse(pugi::xml_node node) {
if (check_for_node(node, "id")) {
@ -490,197 +471,5 @@ DAGUniverse::read_uwuw_materials() {
return uwuw;
}
int32_t create_dagmc_universe(const std::string& filename) {
if (!model::DAG) {
model::DAG = std::make_shared<moab::DagMC>();
}
// --- Materials ---
// create uwuw instance
UWUW uwuw(filename.c_str());
// check for uwuw material definitions
bool using_uwuw = !uwuw.material_library.empty();
// notify user if UWUW materials are going to be used
if (using_uwuw) {
write_message("Found UWUW Materials in the DAGMC geometry file.", 6);
}
int32_t dagmc_univ_id = 0; // universe is always 0 for DAGMC runs
// load the DAGMC geometry
moab::ErrorCode rval = model::DAG->load_file(filename.c_str());
MB_CHK_ERR_CONT(rval);
// initialize acceleration data structures
rval = model::DAG->init_OBBTree();
MB_CHK_ERR_CONT(rval);
// parse model metadata
dagmcMetaData DMD(model::DAG.get(), false, false);
DMD.load_property_data();
vector<std::string> keywords {"temp"};
std::map<std::string, std::string> dum;
std::string delimiters = ":/";
rval = model::DAG->parse_properties(keywords, dum, delimiters.c_str());
MB_CHK_ERR_CONT(rval);
// --- Cells (Volumes) ---
// initialize cell objects
int n_cells = model::DAG->num_entities(3);
moab::EntityHandle graveyard = 0;
for (int i = 0; i < n_cells; i++) {
moab::EntityHandle vol_handle = model::DAG->entity_by_index(3, i+1);
// set cell ids using global IDs
DAGCell* c = new DAGCell();
c->dag_index_ = i+1;
c->id_ = model::DAG->id_by_index(3, c->dag_index_);
c->dagmc_ptr_ = model::DAG;
c->universe_ = dagmc_univ_id; // set to zero for now
c->fill_ = C_NONE; // no fill, single universe
model::cells.emplace_back(c);
model::cell_map[c->id_] = i;
// Populate the Universe vector and dict
auto it = model::universe_map.find(dagmc_univ_id);
if (it == model::universe_map.end()) {
model::universes.push_back(make_unique<Universe>());
model::universes.back()->id_ = dagmc_univ_id;
model::universes.back()->cells_.push_back(i);
model::universe_map[dagmc_univ_id] = model::universes.size() - 1;
} else {
model::universes[it->second]->cells_.push_back(i);
}
// MATERIALS
// determine volume material assignment
std::string mat_str = DMD.get_volume_property("material", vol_handle);
if (mat_str.empty()) {
fatal_error(fmt::format("Volume {} has no material assignment.", c->id_));
}
to_lower(mat_str);
if (mat_str == "graveyard") {
graveyard = vol_handle;
}
// material void checks
if (mat_str == "void" || mat_str == "vacuum" || mat_str == "graveyard") {
c->material_.push_back(MATERIAL_VOID);
} else {
if (using_uwuw) {
// lookup material in uwuw if present
std::string uwuw_mat = DMD.volume_material_property_data_eh[vol_handle];
if (uwuw.material_library.count(uwuw_mat) != 0) {
// Note: material numbers are set by UWUW
int mat_number = uwuw.material_library.get_material(uwuw_mat).metadata["mat_number"].asInt();
c->material_.push_back(mat_number);
} else {
fatal_error(fmt::format("Material with value {} not found in the "
"UWUW material library", mat_str));
}
} else {
legacy_assign_material(mat_str, c);
}
}
// check for temperature assignment
std::string temp_value;
// no temperature if void
if (c->material_[0] == MATERIAL_VOID) continue;
// assign cell temperature
const auto& mat = model::materials[model::material_map.at(c->material_[0])];
if (model::DAG->has_prop(vol_handle, "temp")) {
rval = model::DAG->prop_value(vol_handle, "temp", temp_value);
MB_CHK_ERR_CONT(rval);
double temp = std::stod(temp_value);
c->sqrtkT_.push_back(std::sqrt(K_BOLTZMANN * temp));
} else {
c->sqrtkT_.push_back(std::sqrt(K_BOLTZMANN * mat->temperature()));
}
}
// allocate the cell overlap count if necessary
if (settings::check_overlaps) {
model::overlap_check_count.resize(model::cells.size(), 0);
}
if (!graveyard) {
warning("No graveyard volume found in the DagMC model."
"This may result in lost particles and rapid simulation failure.");
}
// --- Surfaces ---
// initialize surface objects
int n_surfaces = model::DAG->num_entities(2);
for (int i = 0; i < n_surfaces; i++) {
moab::EntityHandle surf_handle = model::DAG->entity_by_index(2, i+1);
// set cell ids using global IDs
DAGSurface* s = new DAGSurface();
s->dag_index_ = i+1;
s->id_ = model::DAG->id_by_index(2, s->dag_index_);
s->dagmc_ptr_ = model::DAG;
if (contains(settings::source_write_surf_id, s->id_)) {
s->surf_source_ = true;
}
// set BCs
std::string bc_value = DMD.get_surface_property("boundary", surf_handle);
to_lower(bc_value);
if (bc_value.empty() || bc_value == "transmit" || bc_value == "transmission") {
// Leave the bc_ a nullptr
} else if (bc_value == "vacuum") {
s->bc_ = std::make_shared<VacuumBC>();
} else if (bc_value == "reflective" || bc_value == "reflect" || bc_value == "reflecting") {
s->bc_ = std::make_shared<ReflectiveBC>();
} else if (bc_value == "white") {
fatal_error("White boundary condition not supported in DAGMC.");
} else if (bc_value == "periodic") {
fatal_error("Periodic boundary condition not supported in DAGMC.");
} else {
fatal_error(fmt::format("Unknown boundary condition \"{}\" specified "
"on surface {}", bc_value, s->id_));
}
// graveyard check
moab::Range parent_vols;
rval = model::DAG->moab_instance()->get_parent_meshsets(surf_handle, parent_vols);
MB_CHK_ERR_CONT(rval);
// if this surface belongs to the graveyard
if (graveyard && parent_vols.find(graveyard) != parent_vols.end()) {
// set graveyard surface BC's to vacuum
s->bc_ = std::make_shared<VacuumBC>();
}
// add to global array and map
model::surfaces.emplace_back(s);
model::surface_map[s->id_] = i;
}
return model::universes.size() - 1;
}
void read_geometry_dagmc()
{
write_message("Reading DAGMC geometry...", 5);
model::root_universe = find_root_universe();
}
}
#endif