Equation Systems¶
-
class
EquationSystem
¶ Base class representation of a PDE.
EquationSystem defines the API supported by all concrete implementations of PDEs for performing the following actions:
Register computational fields
Register computational algorithms for interior domain and boundary conditions
Manage solve and update of the PDE for a given timestep
Subclassed by sierra::nalu::ContinuityEquationSystem, sierra::nalu::ContinuityFemEquationSystem, sierra::nalu::EnthalpyEquationSystem, sierra::nalu::GasDynamicsEquationSystem, sierra::nalu::HeatCondEquationSystem, sierra::nalu::KEpsilonEquationSystem, sierra::nalu::LowMachEquationSystem, sierra::nalu::LowMachFemEquationSystem, sierra::nalu::MassFractionEquationSystem, sierra::nalu::MeshDisplacementEquationSystem, sierra::nalu::MixtureFractionEquationSystem, sierra::nalu::MixtureFractionFemEquationSystem, sierra::nalu::MomentumEquationSystem, sierra::nalu::MomentumFemEquationSystem, sierra::nalu::ProjectedNodalGradientEquationSystem, sierra::nalu::RadiativeTransportEquationSystem, sierra::nalu::ShearStressTransportEquationSystem, sierra::nalu::SpecificDissipationRateEquationSystem, sierra::nalu::TurbDissipationEquationSystem, sierra::nalu::TurbKineticEnergyEquationSystem, sierra::nalu::VolumeOfFluidEquationSystem
Public Functions
-
virtual void
solve_and_update
()¶ Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); //<<<< Assemble and solve system eqsys->post_iter_work(); } post_iter_work();
-
virtual void
pre_iter_work
()¶ Perform setup tasks before entering the solve and update step.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); //<<<< Pre-iteration setup eqsys->solve_and_update(); eqsys->post_iter_work(); } post_iter_work();
-
virtual void
post_iter_work
()¶ Perform setup tasks after he solve and update step.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); eqsys->post_iter_work(); //<<<< Post-iteration actions } post_iter_work();
-
virtual void
post_iter_work_dep
()¶ Deprecated post iteration work logic.
Public Members
-
std::vector<AlgorithmDriver *>
preIterAlgDriver_
¶ List of tasks to be performed before each EquationSystem::solve_and_update.
-
std::vector<AlgorithmDriver *>
postIterAlgDriver_
¶ List of tasks to be performed after each EquationSystem::solve_and_update.
-
class
LowMachEquationSystem
: public sierra::nalu::EquationSystem¶ Low-Mach formulation of the Navier-Stokes Equations.
This class is a thin-wrapper around sierra::nalu::ContinuityEquationSystem and sierra::nalu::MomentumEquationSystem that orchestrates the interactions between the velocity and the pressure Possion solves in the LowMachEquationSystem::solve_and_update method.
Public Functions
-
virtual void
pre_iter_work
()¶ Perform setup tasks before entering the solve and update step.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); //<<<< Pre-iteration setup eqsys->solve_and_update(); eqsys->post_iter_work(); } post_iter_work();
-
virtual void
solve_and_update
()¶ Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); //<<<< Assemble and solve system eqsys->post_iter_work(); } post_iter_work();
-
virtual void
-
class
EnthalpyEquationSystem
: public sierra::nalu::EquationSystem¶ Public Functions
-
void
solve_and_update
()¶ Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); //<<<< Assemble and solve system eqsys->post_iter_work(); } post_iter_work();
-
void
post_iter_work_dep
()¶ Deprecated post iteration work logic.
-
void
-
class
TurbKineticEnergyEquationSystem
: public sierra::nalu::EquationSystem¶ Public Functions
-
void
solve_and_update
()¶ Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); //<<<< Assemble and solve system eqsys->post_iter_work(); } post_iter_work();
-
void
-
class
ShearStressTransportEquationSystem
: public sierra::nalu::EquationSystem¶ Public Functions
-
virtual void
solve_and_update
()¶ Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); //<<<< Assemble and solve system eqsys->post_iter_work(); } post_iter_work();
-
virtual void
-
class
HeatCondEquationSystem
: public sierra::nalu::EquationSystem¶ Public Functions
-
void
solve_and_update
()¶ Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); //<<<< Assemble and solve system eqsys->post_iter_work(); } post_iter_work();
-
void
-
class
MassFractionEquationSystem
: public sierra::nalu::EquationSystem¶ Public Functions
-
void
solve_and_update
()¶ Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); //<<<< Assemble and solve system eqsys->post_iter_work(); } post_iter_work();
-
void
-
class
MixtureFractionEquationSystem
: public sierra::nalu::EquationSystem¶ Public Functions
-
void
solve_and_update
()¶ Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); //<<<< Assemble and solve system eqsys->post_iter_work(); } post_iter_work();
-
void
-
class
MomentumEquationSystem
: public sierra::nalu::EquationSystem¶ Representation of the Momentum conservation equations in 2-D and 3-D.
-
class
ContinuityEquationSystem
: public sierra::nalu::EquationSystem¶
-
class
SpecificDissipationRateEquationSystem
: public sierra::nalu::EquationSystem¶
-
class
ProjectedNodalGradientEquationSystem
: public sierra::nalu::EquationSystem¶ Public Functions
-
void
solve_and_update
()¶ Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
This method is invoked in EquationSystems::solve_and_update method as shown below
pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); //<<<< Assemble and solve system eqsys->post_iter_work(); } post_iter_work();
-
void
-
class
EquationSystems
¶ A collection of Equations to be solved on a Realm.
EquationSystems holds a vector of EquationSystem instances representing the equations that are being solved in a given Realm and is responsible for the management of the solve and update of the various field quantities in a given timestep.
Public Functions
-
bool
solve_and_update
()¶ Solve and update the state of all variables for a given timestep.
This method is responsible for executing setup actions before calling solve, performing the actual solve, updating the solution, and performing post-solve actions after the solution has been updated. To provide sufficient granularity and control of this pre- and post- solve actions, the solve method uses the following series of steps:
// Perform tasks for this timestep before any Equation system is called pre_iter_work(); // Iterate over all equation systems for (auto eqsys: equationSystems_) { eqsys->pre_iter_work(); eqsys->solve_and_update(); eqsys->post_iter_work(); } // Perform tasks after all equation systems have updated post_iter_work();
Tasks that require to be performed before any equation system is solved for needs to be registered to preIterAlgDriver_ on EquationSystems, similiary for post-solve tasks. And actions to be performed immediately before individual equation system solves need to be registered in EquationSystem::preIterAlgDriver_.
-
void
pre_iter_work
()¶ Perform necessary setup tasks that affect all EquationSystem instances at a given timestep.
-
void
post_iter_work
()¶ Perform necessary actions once all EquationSystem instances have been updated for the prescribed number of outer iterations at a given timestep.
Public Members
-
std::vector<AlgorithmDriver *>
preIterAlgDriver_
¶ A list of tasks to be performed before all EquationSystem::solve_and_update.
-
std::vector<AlgorithmDriver *>
postIterAlgDriver_
¶ A list of tasks to be performed after all EquationSystem::solve_and_update.
-
bool