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.
const InputParameters & parameters() const
Get the parameters of the object.
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
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)