20 #ifndef LIBMESH_EIGEN_TIME_SOLVER_H 21 #define LIBMESH_EIGEN_TIME_SOLVER_H 23 #include "libmesh/libmesh_config.h" 24 #ifdef LIBMESH_HAVE_SLEPC 27 #include "libmesh/time_solver.h" 35 template <
typename T>
class EigenSolver;
95 virtual void init ()
override;
101 virtual void reinit ()
override;
107 virtual void solve ()
override;
149 virtual bool is_steady()
const override {
return true; }
224 #endif // LIBMESH_HAVE_SLEPC 225 #endif // LIBMESH_EIGEN_TIME_SOLVER_H virtual void init() override
The initialization function.
This class provides all data required for a physics package (e.g.
The enum is in an invalid state.
This is a generic class that defines a solver to handle time integration of DifferentiableSystems.
virtual void solve() override
Implements the assembly of both matrices A and B, and calls the EigenSolver to compute the eigenvalue...
virtual bool nonlocal_residual(bool get_jacobian, DiffContext &) override
Forms the jacobian of the nonlocal terms.
This class defines a norm/seminorm to be applied to a NumericVector which contains coefficients in a ...
The libMesh namespace provides an interface to certain functionality in the library.
virtual Real du(const SystemNorm &) const override
This class provides a specific system class.
TimeSolver Parent
The parent class.
virtual bool is_steady() const override
This is effectively a steady-state solver.
unsigned int maxits
The maximum number of iterations allowed to solve the problem.
unsigned int n_iterations_reqd
After a solve, holds the number of iterations required to converge the requested number of eigenpairs...
virtual ~EigenTimeSolver()
Destructor.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
NowAssembling now_assembling
Flag which controls the internals of element_residual() and side_residual().
double tol
The linear solver tolerance to be used when solving the eigenvalue problem.
unsigned int n_basis_vectors_to_use
The number of basis vectors to use in the computation.
DifferentiableSystem sys_type
The type of system.
EigenTimeSolver(sys_type &s)
Constructor.
The name of this class is confusing...it's meant to refer to the base class (TimeSolver) while still ...
virtual bool side_residual(bool get_jacobian, DiffContext &) override
Forms the jacobian of the boundary terms.
virtual void reinit() override
The reinitialization function.
virtual bool element_residual(bool get_jacobian, DiffContext &) override
Forms either the spatial (Jacobian) or mass matrix part of the operator, depending on which is reques...
unsigned int n_converged_eigenpairs
After a solve, holds the number of eigenpairs successfully converged.
Real error_order() const
error convergence order against deltat is not applicable to an eigenvalue problem.
The matrix associated with the spatial part of the operator.
unsigned int n_eigenpairs_to_compute
The number of eigenvectors/values to be computed.
The matrix associated with the time derivative (mass matrix).
std::unique_ptr< EigenSolver< Number > > eigen_solver
The EigenSolver object.
virtual void advance_timestep() override
It doesn't make sense to advance the timestep, so we shouldn't call this.