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