15 #include "libmesh/linear_solver.h" 16 #include "libmesh/preconditioner.h" 17 #include "libmesh/numeric_vector.h" 33 virtual void init()
override;
36 virtual bool isExplicit()
const override {
return true; }
bool checkLinearConvergence()
Check for the linear solver convergence.
NumericVector< Real > * _solution_update
Solution vector for the linear solve.
Real _current_time
Save off current time to reset it back and forth.
NumericVector< Real > * _ones
Vector of 1's to help with creating the lumped mass matrix.
virtual void initialSetup() override
Called to setup datastructures.
TagID _Ke_time_tag
For computing the mass matrix.
MooseEnum _solve_type
Solve type for how mass matrix is handled.
static InputParameters validParams()
Interface for notifications that the mesh has changed.
std::unique_ptr< libMesh::LinearSolver< Number > > _linear_solver
For solving with the consistent matrix.
NumericVector< Real > * _explicit_residual
Residual used for the RHS.
virtual void preSolve() override
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
virtual bool performExplicitSolve(SparseMatrix< Number > &mass_matrix)
Solves a linear system using the chosen solve type.
std::unique_ptr< LumpedPreconditioner > _preconditioner
For solving with lumped preconditioning.
NumericVector< Real > * _mass_matrix_diag_inverted
Diagonal of the lumped mass matrix (and its inversion)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Base class for time integrators.
virtual void init() override
Called only before the very first timestep (t_step = 0) Never called again (not even during recover/r...
virtual TagID massMatrixTagID() const
const InputParameters & parameters() const
Get the parameters of the object.
virtual void meshChanged() override
Called on this object when the mesh changes.
virtual bool isExplicit() const override
Returns whether the explicit solvers are used.
bool solveLinearSystem(SparseMatrix< Number > &mass_matrix)
Solves a linear system.
Base class for explicit time integrators that are implemented without using a nonlinear solver...
ExplicitTimeIntegrator(const InputParameters ¶meters)