158 static constexpr
CepsReal c_akSBDF[4][4] = {{1.}, {4. / 3., -1. / 3.}, {18. / 11., -9. / 11., 2. / 11.}, {48. / 25., -36. / 25., 16. / 25., -3. / 25.}};
std::basic_string< CepsChar > CepsString
C++ format string.
CepsArray< _Type, 2U > CepsArray2
C++ array, 2 elements.
std::vector< _Type, _Alloc > CepsVector
C++ vector.
std::make_unsigned_t< CepsInt > CepsUInt
Unsigned version on CepsInt.
float CepsReal
Need single precision floating point.
std::shared_ptr< DistributedHaloVector > DHVecPtr
Typedef for pointer on Distributed Halo CepsVector.
std::shared_ptr< DistributedMatrix > DMatPtr
Short typedef for pointer on dist matrix.
std::shared_ptr< DistributedVector > DVecPtr
Short typedef for pointer on distributed vector.
Base class for PDE solving.
Astract Problem which does depend on time.
Base class for solving PDE with time dependance.
virtual void allocateArrays()
Allocates the arrays with the correct number of multistep.
CepsBool m_cheatConvergence
If true, use exact solution for first steps of multi steps methods.
virtual void displayProgress() const
Tells time.
TimeStepper * m_timeStepper
Monitors time evolution.
DHVecPtr getSolution() const
Returns a copy of the distributed vector containing the current solution.
void determineSolverType(CepsString s)
Initialize the type from parameter string.
virtual void swapMultiStepPointers()
Swaps vectors of array pointers for next step (for multistep methods)
virtual CepsBool finished() const
Tells if simulation reached end time or, if enabled, all points have seen an AP.
void solve() override
Solves the all PDE (all iterations)
CepsVector< DHVecPtr > m_regSourcesNm
Sources at previous steps (if problem has source terms)
CepsString m_type
Numerical scheme descriptor.
DMatPtr m_dtMat
Matrix of time derivative of the system.
void enableErrorComputation()
Sets the comparison with analytic solution.
CepsVector< DHVecPtr > m_uNm
Solution vectors at different time steps. Several vectors are needed for multi-step methods....
CepsVector< DHVecPtr > m_rkF
RK methods: intermediate rates.
CepsUInt m_nbMultiSteps
Maximum number of steps needed to compute next solution (eg CN:2)
DVecPtr m_timeDerEqsVec
Vector of 1 or 0, depending on whether the dof equation has a time derivative or not.
CepsVector< DHVecPtr > m_lapSourcesNm
Sources at previous steps (if problem has laplace source terms)
CepsVector< DHVecPtr > m_rkU
RK methods: intermediate evaluations.
static constexpr CepsReal c_alphaCN[3]
LHS coeffcients of the CN scheme.
CepsUInt getExpectedNumberOfOutputs() const override
Number of files written.
virtual ~AbstractTimedPdeSolver()
Destructor.
AbstractTimedPdeSolver(AbstractTimedPdeProblem *pb)
Default constructor.
CepsReal m_scaleSystem
A factor for both matrix and vector (typically 1/dt)
void setupWithParameters(InputParameters *params) override
Set attributes from input file. Parameters are passed as arguments in case one wants to use other par...
CepsUInt m_nbIterSnapshot
Output perdiodicity.
AbstractTimedPdeProblem * getTimedProblem() const
Returns a pointer with the appropriate type of pb.
void updateAssemblers() override
Update assemblers and recompute everything is needed.
CepsArray2< CepsArray3< CepsArray3< CepsReal > > > getErrors() const
Gets the currently computed errors. First index selects absolute(0) or relative(1) second index selec...
static constexpr CepsReal c_alphaSBDF[5]
LHS coeffcients of the SBDF schemes.
CepsString m_rkType
RK Method if the solver is of type "RK".
virtual void output(DHVecPtr solution, CepsBool immediateWriting=true)
Prints the solution.
DVecPtr m_noTimeDerEqsVec
The opposite version of m_timeDerEqsVec, such as m_timeDerEqsVec + m_noTimeDerEqsVec = vec(1)
DHVecPtr m_uNp1
Vectors of unknowns at time t^n+1.
virtual void fillSourceTermsVector(CepsReal tn)
Adds contributions from all source terms into m_regSourcesNm[0].
static constexpr CepsReal c_akSBDF[4][4]
RHS coeffcients of the SBDF schemes.
A simple time stepper used in dynamic linear solvers.