Skip to content

Commit

Permalink
Revert "Part pointer to part vector. issue #1183 (#1187)"
Browse files Browse the repository at this point in the history
This reverts commit cbcb4d7.
  • Loading branch information
psakievich committed Aug 29, 2023
1 parent a7bcc39 commit 41f3936
Show file tree
Hide file tree
Showing 15 changed files with 208 additions and 209 deletions.
2 changes: 1 addition & 1 deletion include/AMSAlgDriver.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class AMSAlgDriver
AMSAlgDriver(Realm& realm);
virtual ~AMSAlgDriver() = default;
virtual void register_nodal_fields(const stk::mesh::PartVector& part_vec);
virtual void register_edge_fields(const stk::mesh::PartVector& part_vec);
virtual void register_edge_fields(stk::mesh::Part* part);
void register_interior_algorithm(stk::mesh::Part* part);
void execute();
void initial_work();
Expand Down
14 changes: 5 additions & 9 deletions include/EquationSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,12 @@ class EquationSystem
virtual void populate_derived_quantities() {}

// base class with desired default no-op
virtual void
register_nodal_fields(const stk::mesh::PartVector& /* part_vec */)
{
}
virtual void register_edge_fields(const stk::mesh::PartVector& /* part_vec */)
{
}
virtual void register_nodal_fields(const stk::mesh::PartVector& /* part */) {}

virtual void register_edge_fields(stk::mesh::Part* /* part */) {}

virtual void register_element_fields(
const stk::mesh::PartVector& /* part_vec */,
const stk::topology& /* theTopo */)
stk::mesh::Part* /* part */, const stk::topology& /* theTopo */)
{
}

Expand Down
8 changes: 5 additions & 3 deletions include/EquationSystems.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,11 @@ class EquationSystems
size_t size() { return equationSystemVector_.size(); }
EquationSystem* operator[](int i) { return equationSystemVector_[i]; }

void register_nodal_fields(const std::vector<std::string>& targetNames);
void register_edge_fields(const std::vector<std::string>& targetNames);
void register_element_fields(const std::vector<std::string>& targetNames);
void register_nodal_fields(const std::vector<std::string> targetNames);

void register_edge_fields(const std::vector<std::string> targetNames);

void register_element_fields(const std::vector<std::string> targetNames);

void register_interior_algorithm(const std::vector<std::string> targetNames);

Expand Down
24 changes: 12 additions & 12 deletions include/LowMachEquationSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,11 @@ class LowMachEquationSystem : public EquationSystem

virtual void
register_nodal_fields(const stk::mesh::PartVector& part_vec) override;
virtual void
register_edge_fields(const stk::mesh::PartVector& part_vec) override;

virtual void register_edge_fields(stk::mesh::Part* part) override;

virtual void register_element_fields(
const stk::mesh::PartVector& part_vec,
const stk::topology& theTopo) override;
stk::mesh::Part* part, const stk::topology& theTopo) override;

virtual void register_open_bc(
stk::mesh::Part* part,
Expand Down Expand Up @@ -124,11 +124,11 @@ class MomentumEquationSystem : public EquationSystem

virtual void
register_nodal_fields(const stk::mesh::PartVector& part_vec) override;
virtual void
register_edge_fields(const stk::mesh::PartVector& part_vec) override;

virtual void register_edge_fields(stk::mesh::Part* part) override;

virtual void register_element_fields(
const stk::mesh::PartVector& part_vec,
const stk::topology& theTopo) override;
stk::mesh::Part* part, const stk::topology& theTopo) override;

virtual void register_interior_algorithm(stk::mesh::Part* part) override;

Expand Down Expand Up @@ -241,11 +241,11 @@ class ContinuityEquationSystem : public EquationSystem

virtual void
register_nodal_fields(const stk::mesh::PartVector& part_vec) override;
virtual void
register_edge_fields(const stk::mesh::PartVector& part_vec) override;

virtual void register_edge_fields(stk::mesh::Part* part) override;

virtual void register_element_fields(
const stk::mesh::PartVector& part_vec,
const stk::topology& theTopo) override;
stk::mesh::Part* part, const stk::topology& theTopo) override;

virtual void register_interior_algorithm(stk::mesh::Part* part) override;

Expand Down
8 changes: 5 additions & 3 deletions include/VolumeOfFluidEquationSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,11 @@ class VolumeOfFluidEquationSystem : public EquationSystem
virtual ~VolumeOfFluidEquationSystem();

virtual void register_nodal_fields(const stk::mesh::PartVector& part_vec);
virtual void register_edge_fields(const stk::mesh::PartVector& part_vec);
virtual void register_element_fields(
const stk::mesh::PartVector& part_vec, const stk::topology& theTopo);

virtual void register_edge_fields(stk::mesh::Part* part);

virtual void
register_element_fields(stk::mesh::Part* part, const stk::topology& theTopo);

virtual void register_interior_algorithm(stk::mesh::Part* part);

Expand Down
7 changes: 4 additions & 3 deletions include/WallDistEquationSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,10 @@ class WallDistEquationSystem : public EquationSystem
void initial_work();

virtual void register_nodal_fields(const stk::mesh::PartVector& part_vec);
virtual void register_edge_fields(const stk::mesh::PartVector& part_vec);
virtual void register_element_fields(
const stk::mesh::PartVector& part_vec, const stk::topology& theTopo);

void register_edge_fields(stk::mesh::Part*);

void register_element_fields(stk::mesh::Part*, const stk::topology&);

void register_interior_algorithm(stk::mesh::Part*);

Expand Down
14 changes: 14 additions & 0 deletions include/utils/StkHelpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,20 @@ get_node_field(
*meta.get_field(stk::topology::NODE_RANK, name)->field_state(state));
}

void register_scalar_nodal_field_on_part(
stk::mesh::MetaData& meta,
std::string name,
const stk::mesh::Selector& selector,
int num_states,
double ic = 0);

void register_vector_nodal_field_on_part(
stk::mesh::MetaData& meta,
std::string name,
const stk::mesh::Selector& selector,
int num_states,
std::array<double, 3> x = {{0, 0, 0}});

} // namespace nalu
} // namespace sierra

Expand Down
5 changes: 2 additions & 3 deletions src/AMSAlgDriver.C
Original file line number Diff line number Diff line change
Expand Up @@ -126,15 +126,14 @@ AMSAlgDriver::register_nodal_fields(const stk::mesh::PartVector& part_vec)
}

void
AMSAlgDriver::register_edge_fields(const stk::mesh::PartVector& part_vec)
AMSAlgDriver::register_edge_fields(stk::mesh::Part* part)
{
stk::mesh::Selector selector = stk::mesh::selectUnion(part_vec);
stk::mesh::MetaData& meta = realm_.meta_data();
NaluEnv::self().naluOutputP0()
<< "Edge Mdot average added in AMS " << std::endl;
avgMdot_ = &(meta.declare_field<ScalarFieldType>(
stk::topology::EDGE_RANK, "average_mass_flow_rate"));
stk::mesh::put_field_on_mesh(*avgMdot_, selector, nullptr);
stk::mesh::put_field_on_mesh(*avgMdot_, *part, nullptr);
realm_.augment_restart_variable_list("average_mass_flow_rate");
}

Expand Down
87 changes: 43 additions & 44 deletions src/EquationSystems.C
Original file line number Diff line number Diff line change
Expand Up @@ -247,13 +247,15 @@ EquationSystems::parent()
return &realm_;
}

namespace {
stk::mesh::PartVector
create_part_vec(
stk::mesh::MetaData& meta_data,
const std::vector<std::string>& targetNames,
const bool element_rank = false)
//--------------------------------------------------------------------------
//-------- register_nodal_fields -------------------------------------------
//--------------------------------------------------------------------------
void
EquationSystems::register_nodal_fields(
const std::vector<std::string> targetNames)
{
stk::mesh::MetaData& meta_data = realm_.meta_data();

stk::mesh::PartVector part_vec;
part_vec.reserve(targetNames.size());
for (const auto& part_name : targetNames) {
Expand All @@ -264,26 +266,7 @@ create_part_vec(
throw std::runtime_error(
"Sorry, no part name found by the name " + part_name);
}
if (element_rank) {
if (stk::topology::ELEMENT_RANK != part_vec.back()->primary_entity_rank())
throw std::runtime_error(
"Sorry, parts need to be elements.. " + part_name);
}
}

return part_vec;
}
} // namespace
//--------------------------------------------------------------------------
//-------- register_nodal_fields -------------------------------------------
//--------------------------------------------------------------------------
void
EquationSystems::register_nodal_fields(
const std::vector<std::string>& targetNames)
{
stk::mesh::MetaData& meta_data = realm_.meta_data();
const stk::mesh::PartVector part_vec =
create_part_vec(meta_data, targetNames);
realm_.register_nodal_fields(part_vec);
EquationSystemVector::iterator ii;
for (ii = equationSystemVector_.begin(); ii != equationSystemVector_.end();
Expand All @@ -296,40 +279,56 @@ EquationSystems::register_nodal_fields(
//--------------------------------------------------------------------------
void
EquationSystems::register_edge_fields(
const std::vector<std::string>& targetNames)
const std::vector<std::string> targetNames)
{
stk::mesh::MetaData& meta_data = realm_.meta_data();
const stk::mesh::PartVector part_vec =
create_part_vec(meta_data, targetNames);
EquationSystemVector::iterator ii;
for (ii = equationSystemVector_.begin(); ii != equationSystemVector_.end();
++ii)
(*ii)->register_edge_fields(part_vec);

for (size_t itarget = 0; itarget < targetNames.size(); ++itarget) {
stk::mesh::Part* targetPart = meta_data.get_part(targetNames[itarget]);
if (NULL == targetPart) {
throw std::runtime_error(
"Sorry, no part name found by the name " + targetNames[itarget]);
} else {
// found the part; no need to subset
EquationSystemVector::iterator ii;
for (ii = equationSystemVector_.begin();
ii != equationSystemVector_.end(); ++ii)
(*ii)->register_edge_fields(targetPart);
}
}
}

//--------------------------------------------------------------------------
//-------- register_element_fields -----------------------------------------
//--------------------------------------------------------------------------
void
EquationSystems::register_element_fields(
const std::vector<std::string>& targetNames)
const std::vector<std::string> targetNames)
{
stk::mesh::MetaData& meta_data = realm_.meta_data();
ScalarFieldType& elemVolume = meta_data.declare_field<ScalarFieldType>(
stk::topology::ELEMENT_RANK, "element_volume");

const stk::mesh::PartVector part_vec =
create_part_vec(meta_data, targetNames, true);
for (auto targetPart : part_vec) {
const stk::mesh::PartVector part(1, targetPart);
const stk::topology the_topo = targetPart->topology();
EquationSystemVector::iterator ii;
for (ii = equationSystemVector_.begin(); ii != equationSystemVector_.end();
++ii)
(*ii)->register_element_fields(part, the_topo);
for (size_t itarget = 0; itarget < targetNames.size(); ++itarget) {
stk::mesh::Part* targetPart = meta_data.get_part(targetNames[itarget]);
if (NULL == targetPart) {
throw std::runtime_error(
"Sorry, no part name found by the name " + targetNames[itarget]);
} else {
// found the part; no need to subset
const stk::topology the_topo = targetPart->topology();
if (stk::topology::ELEMENT_RANK != targetPart->primary_entity_rank()) {
throw std::runtime_error(
"Sorry, parts need to be elements.. " + targetNames[itarget]);
}
EquationSystemVector::iterator ii;
for (ii = equationSystemVector_.begin();
ii != equationSystemVector_.end(); ++ii)
(*ii)->register_element_fields(targetPart, the_topo);

stk::mesh::put_field_on_mesh(elemVolume, *targetPart, 1, nullptr);
}
}
stk::mesh::Selector selector = stk::mesh::selectUnion(part_vec);
stk::mesh::put_field_on_mesh(elemVolume, selector, 1, nullptr);
}

//--------------------------------------------------------------------------
Expand Down
Loading

0 comments on commit 41f3936

Please sign in to comment.