31 mooseError(
"ImplicitEuler: Time derivative of solution (`u_dot`) is not stored. Please set "
32 "uDotRequested() to true in FEProblemBase befor requesting `u_dot`.");
57 const dof_id_type & dof,
77 *residual_sub += *re_time_sub;
78 *residual_sub += *re_non_time_sub;
79 residual.restore_subvector(std::move(residual_sub),
_local_indices);
87 const std::vector<Real> & factors)
const
90 "Either too many or too few states are given!");
DualNumber< Real, DNDerivativeType, true > ADReal
registerMooseObject("MooseApp", ImplicitEuler)
virtual Real timeDerivativeRHSContribution(const dof_id_type dof_id, const std::vector< Real > &factors) const override
The time derivative's contribution to the right hand side of a linear system.
void computeADTimeDerivatives(ADReal &ad_u_dot, const dof_id_type &dof, ADReal &ad_u_dotdot) const override
method for computing local automatic differentiation time derivatives
virtual void computeTimeDerivatives() override
Computes the time derivative and the Jacobian of the time derivative.
virtual void postResidual(NumericVector< Number > &residual) override
Callback to the NonLinearTimeIntegratorInterface called immediately after the residuals are computed ...
ImplicitEuler(const InputParameters ¶meters)
virtual Real timeDerivativeMatrixContribution(const Real factor) const override
The time derivative's contribution to the right hand side of a linear system.
static InputParameters validParams()
void computeTimeDerivativeHelper(T &u_dot, const T2 &u_old) const
Helper function that actually does the math for computing the time derivative.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
NumericVector< Number > * _Re_non_time
residual vector for non-time contributions
NumericVector< Number > * _Re_time
residual vector for time contributions
virtual NumericVector< Number > * solutionUDot()
Base class for time integrators.
std::vector< dof_id_type > & _local_indices
The local degree of freedom indices this time integrator is being applied to.
bool & _var_restriction
Whether the user has requested that the time integrator be applied to a subset of variables.
std::unique_ptr< NumericVector< Number > > & _solution_old_sub
void computeDuDotDu()
Compute _du_dot_du.
const NumericVector< Number > *const & _solution
virtual unsigned int numStatesRequired() const
Return the number of states this requires in a linear system setting.
static InputParameters validParams()
SystemBase & _sys
Reference to the system this time integrator operates on.
Real & _dt
The current time step size.
std::unique_ptr< NumericVector< Number > > & _solution_sub
const NumericVector< Number > & _solution_old
virtual std::unique_ptr< NumericVector< T > > get_subvector(const std::vector< numeric_index_type > &)
virtual void create_subvector(NumericVector< T > &, const std::vector< numeric_index_type > &, bool=true) const
virtual void restore_subvector(std::unique_ptr< NumericVector< T > >, const std::vector< numeric_index_type > &)