10 #define LinearSystem_h 15 #include <Teuchos_RCP.hpp> 16 #include <Tpetra_DefaultPlatform.hpp> 18 #include <Teuchos_GlobalMPISession.hpp> 19 #include <Teuchos_oblackholestream.hpp> 24 namespace stk {
namespace mesh {
struct Entity; } }
46 const unsigned numDof,
63 virtual void finalizeLinearSystem()=0;
66 virtual void zeroSystem()=0;
70 const stk::mesh::Entity* entities,
75 const char * trace_tag
81 const std::vector<stk::mesh::Entity> & sym_meshobj,
82 std::vector<int> &scratchIds,
83 std::vector<double> &scratchVals,
84 const std::vector<double> & rhs,
85 const std::vector<double> & lhs,
86 const char *trace_tag=0
89 virtual void applyDirichletBCs(
90 stk::mesh::FieldBase * solutionField,
91 stk::mesh::FieldBase * bcValuesField,
93 const unsigned beginPos,
94 const unsigned endPos)=0;
96 virtual void prepareConstraints(
97 const unsigned beginPos,
98 const unsigned endPos)=0;
106 virtual void resetRows(
107 std::vector<stk::mesh::Entity> nodeList,
108 const unsigned beginPos,
109 const unsigned endPos) = 0;
112 virtual int solve(stk::mesh::FieldBase * linearSolutionField)=0;
113 virtual void loadComplete()=0;
115 virtual void writeToFile(
const char * filename,
bool useOwned=
true)=0;
116 virtual void writeSolutionToFile(
const char * filename,
bool useOwned=
true)=0;
117 unsigned numDof()
const {
return numDof_; }
123 const std::string
name() {
return eqSysName_; }
126 double get_timer_precond();
127 void zero_timer_precond();
130 virtual void beginLinearSystemConstruction()=0;
131 virtual void checkError(
135 void sync_field(
const stk::mesh::FieldBase *field);
std::vector< Part * > PartVector
Definition: Algorithm.h:16
Definition: ABLForcingAlgorithm.C:26
const int & linearSolveIterations()
Definition: LinearSystem.h:118
virtual ~LinearSystem()
Definition: LinearSystem.h:50
double linearResidual_
Definition: LinearSystem.h:148
int writeCounter_
Definition: LinearSystem.h:141
Definition: Algorithm.h:14
bool & recomputePreconditioner()
Definition: LinearSystem.h:124
unsigned numDof() const
Definition: LinearSystem.h:117
const std::string name()
Definition: LinearSystem.h:123
const double & nonLinearResidual()
Definition: LinearSystem.h:120
bool & reusePreconditioner()
Definition: LinearSystem.h:125
int linearSolveIterations_
Definition: LinearSystem.h:146
static constexpr double lhs[8][8]
Definition: UnitTestContinuityAdvElem.C:25
Base class representation of a PDE.
Definition: EquationSystem.h:46
bool reusePreconditioner_
Definition: LinearSystem.h:152
Realm & realm_
Definition: LinearSystem.h:138
bool provideOutput_
Definition: LinearSystem.h:155
static constexpr double rhs[8]
Definition: UnitTestContinuityAdvElem.C:18
bool recomputePreconditioner_
Definition: LinearSystem.h:151
void setNonLinearResidual(const double nlr)
Definition: LinearSystem.h:122
EquationSystem * eqSys_
Definition: LinearSystem.h:139
const double & linearResidual()
Definition: LinearSystem.h:119
const unsigned numDof_
Definition: LinearSystem.h:143
double scaledNonLinearResidual_
Definition: LinearSystem.h:150
const double & scaledNonLinearResidual()
Definition: LinearSystem.h:121
Kokkos::View< T, Kokkos::LayoutRight, DeviceShmem, Kokkos::MemoryUnmanaged > SharedMemView
Definition: KokkosInterface.h:25
double firstNonLinearResidual_
Definition: LinearSystem.h:149
LinearSolver * linearSolver_
Definition: LinearSystem.h:145
const std::string eqSysName_
Definition: LinearSystem.h:144
Definition: LinearSolver.h:55
double nonLinearResidual_
Definition: LinearSystem.h:147
Definition: LinearSystem.h:40
bool inConstruction_
Definition: LinearSystem.h:140