Nalu
Nalu: a generalized unstructured massively parallel low Mach flow code designed to support a variety of energy applications of interest (most notably Wind ECP) built on the Sierra Toolkit and Trilinos solver Tpetra/Epetra stack. The open source BSD, clause 3 license model has been chosen for the code base. See LICENSE for more information. http://NaluCFD.org
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
sierra::nalu::LinearSystem Class Referenceabstract

#include <LinearSystem.h>

Inheritance diagram for sierra::nalu::LinearSystem:
sierra::nalu::TpetraLinearSystem unit_test_utils::TestLinearSystem

Public Member Functions

 LinearSystem (Realm &realm, const unsigned numDof, EquationSystem *eqSys, LinearSolver *linearSolver)
 
virtual ~LinearSystem ()
 
virtual void buildNodeGraph (const stk::mesh::PartVector &parts)=0
 
virtual void buildFaceToNodeGraph (const stk::mesh::PartVector &parts)=0
 
virtual void buildEdgeToNodeGraph (const stk::mesh::PartVector &parts)=0
 
virtual void buildElemToNodeGraph (const stk::mesh::PartVector &parts)=0
 
virtual void buildReducedElemToNodeGraph (const stk::mesh::PartVector &parts)=0
 
virtual void buildFaceElemToNodeGraph (const stk::mesh::PartVector &parts)=0
 
virtual void buildNonConformalNodeGraph (const stk::mesh::PartVector &parts)=0
 
virtual void buildOversetNodeGraph (const stk::mesh::PartVector &parts)=0
 
virtual void finalizeLinearSystem ()=0
 
virtual void zeroSystem ()=0
 
virtual void sumInto (unsigned numEntities, const stk::mesh::Entity *entities, const SharedMemView< const double * > &rhs, const SharedMemView< const double ** > &lhs, const SharedMemView< int * > &localIds, const SharedMemView< int * > &sortPermutation, const char *trace_tag)=0
 
virtual void sumInto (const std::vector< stk::mesh::Entity > &sym_meshobj, std::vector< int > &scratchIds, std::vector< double > &scratchVals, const std::vector< double > &rhs, const std::vector< double > &lhs, const char *trace_tag=0)=0
 
virtual void applyDirichletBCs (stk::mesh::FieldBase *solutionField, stk::mesh::FieldBase *bcValuesField, const stk::mesh::PartVector &parts, const unsigned beginPos, const unsigned endPos)=0
 
virtual void prepareConstraints (const unsigned beginPos, const unsigned endPos)=0
 
virtual void resetRows (std::vector< stk::mesh::Entity > nodeList, const unsigned beginPos, const unsigned endPos)=0
 Reset LHS and RHS for the given set of nodes to 0. More...
 
virtual int solve (stk::mesh::FieldBase *linearSolutionField)=0
 
virtual void loadComplete ()=0
 
virtual void writeToFile (const char *filename, bool useOwned=true)=0
 
virtual void writeSolutionToFile (const char *filename, bool useOwned=true)=0
 
unsigned numDof () const
 
const int & linearSolveIterations ()
 
const double & linearResidual ()
 
const double & nonLinearResidual ()
 
const double & scaledNonLinearResidual ()
 
void setNonLinearResidual (const double nlr)
 
const std::string name ()
 
bool & recomputePreconditioner ()
 
bool & reusePreconditioner ()
 
double get_timer_precond ()
 
void zero_timer_precond ()
 

Static Public Member Functions

static LinearSystemcreate (Realm &realm, const unsigned numDof, EquationSystem *eqSys, LinearSolver *linearSolver)
 

Public Attributes

bool provideOutput_
 

Protected Member Functions

virtual void beginLinearSystemConstruction ()=0
 
virtual void checkError (const int err_code, const char *msg)=0
 
void sync_field (const stk::mesh::FieldBase *field)
 
bool debug ()
 

Protected Attributes

Realmrealm_
 
EquationSystemeqSys_
 
bool inConstruction_
 
int writeCounter_
 
const unsigned numDof_
 
const std::string eqSysName_
 
LinearSolverlinearSolver_
 
int linearSolveIterations_
 
double nonLinearResidual_
 
double linearResidual_
 
double firstNonLinearResidual_
 
double scaledNonLinearResidual_
 
bool recomputePreconditioner_
 
bool reusePreconditioner_
 

Constructor & Destructor Documentation

sierra::nalu::LinearSystem::LinearSystem ( Realm realm,
const unsigned  numDof,
EquationSystem eqSys,
LinearSolver linearSolver 
)
virtual sierra::nalu::LinearSystem::~LinearSystem ( )
inlinevirtual

Member Function Documentation

virtual void sierra::nalu::LinearSystem::applyDirichletBCs ( stk::mesh::FieldBase *  solutionField,
stk::mesh::FieldBase *  bcValuesField,
const stk::mesh::PartVector parts,
const unsigned  beginPos,
const unsigned  endPos 
)
pure virtual
virtual void sierra::nalu::LinearSystem::beginLinearSystemConstruction ( )
protectedpure virtual
virtual void sierra::nalu::LinearSystem::buildEdgeToNodeGraph ( const stk::mesh::PartVector parts)
pure virtual
virtual void sierra::nalu::LinearSystem::buildElemToNodeGraph ( const stk::mesh::PartVector parts)
pure virtual
virtual void sierra::nalu::LinearSystem::buildFaceElemToNodeGraph ( const stk::mesh::PartVector parts)
pure virtual
virtual void sierra::nalu::LinearSystem::buildFaceToNodeGraph ( const stk::mesh::PartVector parts)
pure virtual
virtual void sierra::nalu::LinearSystem::buildNodeGraph ( const stk::mesh::PartVector parts)
pure virtual
virtual void sierra::nalu::LinearSystem::buildNonConformalNodeGraph ( const stk::mesh::PartVector parts)
pure virtual
virtual void sierra::nalu::LinearSystem::buildOversetNodeGraph ( const stk::mesh::PartVector parts)
pure virtual
virtual void sierra::nalu::LinearSystem::buildReducedElemToNodeGraph ( const stk::mesh::PartVector parts)
pure virtual
virtual void sierra::nalu::LinearSystem::checkError ( const int  err_code,
const char *  msg 
)
protectedpure virtual
LinearSystem * sierra::nalu::LinearSystem::create ( Realm realm,
const unsigned  numDof,
EquationSystem eqSys,
LinearSolver linearSolver 
)
static

References sierra::nalu::LinearSolver::getType(), sierra::nalu::PT_END, and sierra::nalu::PT_TPETRA.

Referenced by sierra::nalu::ContinuityEquationSystem::ContinuityEquationSystem(), sierra::nalu::EnthalpyEquationSystem::EnthalpyEquationSystem(), sierra::nalu::HeatCondEquationSystem::HeatCondEquationSystem(), sierra::nalu::MassFractionEquationSystem::MassFractionEquationSystem(), sierra::nalu::MeshDisplacementEquationSystem::MeshDisplacementEquationSystem(), sierra::nalu::MixtureFractionEquationSystem::MixtureFractionEquationSystem(), sierra::nalu::MomentumEquationSystem::MomentumEquationSystem(), sierra::nalu::ProjectedNodalGradientEquationSystem::ProjectedNodalGradientEquationSystem(), sierra::nalu::RadiativeTransportEquationSystem::RadiativeTransportEquationSystem(), sierra::nalu::MeshDisplacementEquationSystem::reinitialize_linear_system(), sierra::nalu::TurbKineticEnergyEquationSystem::reinitialize_linear_system(), sierra::nalu::SpecificDissipationRateEquationSystem::reinitialize_linear_system(), sierra::nalu::HeatCondEquationSystem::reinitialize_linear_system(), sierra::nalu::EnthalpyEquationSystem::reinitialize_linear_system(), sierra::nalu::MixtureFractionEquationSystem::reinitialize_linear_system(), sierra::nalu::ProjectedNodalGradientEquationSystem::reinitialize_linear_system(), sierra::nalu::MomentumEquationSystem::reinitialize_linear_system(), sierra::nalu::ContinuityEquationSystem::reinitialize_linear_system(), sierra::nalu::SpecificDissipationRateEquationSystem::SpecificDissipationRateEquationSystem(), and sierra::nalu::TurbKineticEnergyEquationSystem::TurbKineticEnergyEquationSystem().

bool sierra::nalu::LinearSystem::debug ( )
protected
virtual void sierra::nalu::LinearSystem::finalizeLinearSystem ( )
pure virtual
double sierra::nalu::LinearSystem::get_timer_precond ( )
const double& sierra::nalu::LinearSystem::linearResidual ( )
inline
const int& sierra::nalu::LinearSystem::linearSolveIterations ( )
inline
virtual void sierra::nalu::LinearSystem::loadComplete ( )
pure virtual
const std::string sierra::nalu::LinearSystem::name ( )
inline
const double& sierra::nalu::LinearSystem::nonLinearResidual ( )
inline
unsigned sierra::nalu::LinearSystem::numDof ( ) const
inline
virtual void sierra::nalu::LinearSystem::prepareConstraints ( const unsigned  beginPos,
const unsigned  endPos 
)
pure virtual
bool& sierra::nalu::LinearSystem::recomputePreconditioner ( )
inline
virtual void sierra::nalu::LinearSystem::resetRows ( std::vector< stk::mesh::Entity >  nodeList,
const unsigned  beginPos,
const unsigned  endPos 
)
pure virtual

Reset LHS and RHS for the given set of nodes to 0.

Parameters
nodeListA list of STK node entities whose rows are zeroed out
beginPosStarting index (usually 0)
endPosTerminating index (1 for scalar quantities; nDim for vectors)

Implemented in sierra::nalu::TpetraLinearSystem, and unit_test_utils::TestLinearSystem.

Referenced by sierra::nalu::FixPressureAtNodeAlgorithm::execute().

bool& sierra::nalu::LinearSystem::reusePreconditioner ( )
inline
const double& sierra::nalu::LinearSystem::scaledNonLinearResidual ( )
inline
void sierra::nalu::LinearSystem::setNonLinearResidual ( const double  nlr)
inline
virtual int sierra::nalu::LinearSystem::solve ( stk::mesh::FieldBase *  linearSolutionField)
pure virtual
virtual void sierra::nalu::LinearSystem::sumInto ( unsigned  numEntities,
const stk::mesh::Entity *  entities,
const SharedMemView< const double * > &  rhs,
const SharedMemView< const double ** > &  lhs,
const SharedMemView< int * > &  localIds,
const SharedMemView< int * > &  sortPermutation,
const char *  trace_tag 
)
pure virtual
virtual void sierra::nalu::LinearSystem::sumInto ( const std::vector< stk::mesh::Entity > &  sym_meshobj,
std::vector< int > &  scratchIds,
std::vector< double > &  scratchVals,
const std::vector< double > &  rhs,
const std::vector< double > &  lhs,
const char *  trace_tag = 0 
)
pure virtual
void sierra::nalu::LinearSystem::sync_field ( const stk::mesh::FieldBase *  field)
protected
virtual void sierra::nalu::LinearSystem::writeSolutionToFile ( const char *  filename,
bool  useOwned = true 
)
pure virtual
virtual void sierra::nalu::LinearSystem::writeToFile ( const char *  filename,
bool  useOwned = true 
)
pure virtual
void sierra::nalu::LinearSystem::zero_timer_precond ( )
virtual void sierra::nalu::LinearSystem::zeroSystem ( )
pure virtual

Member Data Documentation

EquationSystem* sierra::nalu::LinearSystem::eqSys_
protected
const std::string sierra::nalu::LinearSystem::eqSysName_
protected
double sierra::nalu::LinearSystem::firstNonLinearResidual_
protected
bool sierra::nalu::LinearSystem::inConstruction_
protected
double sierra::nalu::LinearSystem::linearResidual_
protected
int sierra::nalu::LinearSystem::linearSolveIterations_
protected
LinearSolver* sierra::nalu::LinearSystem::linearSolver_
protected
double sierra::nalu::LinearSystem::nonLinearResidual_
protected
const unsigned sierra::nalu::LinearSystem::numDof_
protected
bool sierra::nalu::LinearSystem::provideOutput_
Realm& sierra::nalu::LinearSystem::realm_
protected
bool sierra::nalu::LinearSystem::recomputePreconditioner_
protected
bool sierra::nalu::LinearSystem::reusePreconditioner_
protected
double sierra::nalu::LinearSystem::scaledNonLinearResidual_
protected
int sierra::nalu::LinearSystem::writeCounter_
protected

The documentation for this class was generated from the following files: