15#include "libmesh/system.h"
29 const std::string &
name,
33 virtual void preInit()
override;
42 const
std::set<
TagID> & vector_tags_to_close) = 0;
65 void setSolution(const NumericVector<Number> & soln);
77 const
Moose::SolutionIterationType iteration_type);
101 virtual const NumericVector<Number> *
const &
currentSolution() const override final;
128inline const NumericVector<Number> *
const &
134inline NumericVector<Number> &
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Class for containing MooseEnum item information.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
virtual void stopSolve(const ExecFlagType &exec_flag, const std::set< TagID > &vector_tags_to_close)=0
Quit the current solve as soon as possible.
void setPCSide(MooseEnum pcs)
Set the side on which the preconditioner is applied to.
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
virtual const NumericVector< Number > *const & currentSolution() const override final
The solution vector that is currently being operated on.
virtual std::vector< std::string > timeKernelVariableNames()=0
Returns the names of the variables that have time derivative kernels in the system.
virtual void compute(ExecFlagType type) override
Compute time derivatives, auxiliary variables, etc.
virtual NumericVector< Number > & solutionInternal() const override final
Internal getter for solution owned by libMesh.
virtual void preInit() override
This is called prior to the libMesh system has been init'd.
void checkInvalidSolution()
virtual bool containsTimeKernel()=0
If the system has a kernel that corresponds to a time derivative.
virtual bool matrixFromColoring() const
Whether a system matrix is formed from coloring.
const NumericVector< Number > * _current_solution
solution vector from solver
Moose::MooseKSPNormType getMooseKSPNormType()
Get the norm in which the linear convergence is measured.
void applyFixedPointRelaxation(const Real relaxation_factor, const Moose::SolutionIterationType iteration_type)
Apply solution under/over-relaxation for fixed point iterations.
Moose::PCSideType getPCSide()
Get the current preconditioner side.
void setMooseKSPNormType(MooseEnum kspnorm)
Set the norm in which the linear convergence will be measured.
virtual bool converged()=0
Returns the convergence state.
Moose::PCSideType _pc_side
Preconditioning side.
virtual void restoreSolutions() override final
Restore current solutions (call after your solve failed)
bool _solution_is_invalid
Boolean to see if solution is invalid.
Moose::MooseKSPNormType _ksp_norm
KSP norm type.
Generic class for solving transient nonlinear problems.
Base class for a system (of equations)
SubProblem & subproblem()
virtual const std::string & name() const
virtual libMesh::System & system()=0
Get the reference to the libMesh system.
std::unique_ptr< NumericVector< Number > > solution
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
PCSideType
Preconditioning side.
MooseKSPNormType
Norm type for converge test.
VarKindType
Framework-wide stuff.