21 "Computes the first and second time derivative of variable using Newmark-Beta method.");
24 params.
addParam<
int>(
"inactive_tsteps",
26 "The time derivatives will set to be zero for this number of time steps.");
32 _beta(getParam<
Real>(
"beta")),
33 _gamma(getParam<
Real>(
"gamma")),
34 _inactive_tsteps(getParam<
int>(
"inactive_tsteps")),
35 _du_dotdot_du(_sys.duDotDotDu())
42 mooseError(
"NewmarkBeta: For Newmark method to be unconditionally stable, gamma should lie " 43 "between 0.5 and 2.0*beta.");
46 mooseWarning(
"NewmarkBeta: For gamma > 0.5, Newmark method is only first order accurate. " 47 "Please use either HHT time integration method or set gamma = 0.5 for second " 48 "order solution accuracy with time.");
57 mooseError(
"NewmarkBeta: Time derivative of solution (`u_dot`) is not stored. Please set " 58 "uDotRequested() to true in FEProblemBase befor requesting `u_dot`.");
61 mooseError(
"NewmarkBeta: Second time derivative of solution (`u_dotdot`) is not stored. Please " 62 "set uDotDotRequested() to true in FEProblemBase befor requesting `u_dotdot`.");
65 mooseError(
"NewmarkBeta: Old time derivative of solution (`u_dot_old`) is not stored. Please " 66 "set uDotOldRequested() to true in FEProblemBase befor requesting `u_dot_old`.");
69 mooseError(
"NewmarkBeta: Old second time derivative of solution (`u_dotdot_old`) is not " 70 "stored. Please set uDotDotOldRequested() to true in FEProblemBase befor requesting " 109 ad_u_dotdot = ad_u_dot;
virtual void setUDotDotOldRequested(const bool u_dotdot_old_requested)
Set boolean flag to true to store old solution second time derivative.
virtual NumericVector< Number > * solutionUDot()=0
Real & _du_dotdot_du
solution vector for
virtual void setUDotDotRequested(const bool u_dotdot_requested)
Set boolean flag to true to store solution second time derivative.
FEProblemBase & _fe_problem
static InputParameters validParams()
Newmark-Beta time integration method.
DualNumber< Real, DNDerivativeType, true > DualReal
NumericVector< Number > & _Re_non_time
residual vector for non-time contributions
virtual void postResidual(NumericVector< Number > &residual) override
Callback to the TimeIntegrator called immediately after the residuals are computed in NonlinearSystem...
virtual NumericVector< Number > * solutionUDotDotOld()=0
Real _gamma
Newmark time integration parameter-gamma.
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
virtual void setUDotOldRequested(const bool u_dot_old_requested)
Set boolean flag to true to store old solution time derivative.
int _inactive_tsteps
Inactive time steps.
Real _beta
Newmark time integration parameter-beta.
registerMooseObject("MooseApp", NewmarkBeta)
NewmarkBeta(const InputParameters ¶meters)
virtual void computeADTimeDerivatives(DualReal &ad_u_dot, const dof_id_type &dof, DualReal &ad_u_dotdot) const override
method for computing local automatic differentiation time derivatives
virtual int & timeStep() const
Real & _du_dot_du
Derivative of time derivative with respect to current solution: .
const NumericVector< Number > *const & _solution
solution vectors
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Base class for time integrators.
void computeTimeDerivativeHelper(T &u_dot, const T2 &u_old, const T3 &u_dot_old, T4 &u_dotdot, const T5 &u_dotdot_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.
NumericVector< Number > & _Re_time
residual vector for time contributions
virtual NumericVector< Number > * solutionUDotOld()=0
const NumericVector< Number > & _solution_old
virtual NumericVector< Number > * solutionUDotDot()=0
virtual void computeTimeDerivatives() override
Computes the time derivative and the Jacobian of the time derivative.
static InputParameters validParams()
void ErrorVector unsigned int