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 "
100 const dof_id_type & dof,
101 ADReal & ad_u_dotdot)
const
109 ad_u_dotdot = ad_u_dot;
DualNumber< Real, DNDerivativeType, true > ADReal
registerMooseObject("MooseApp", NewmarkBeta)
void ErrorVector unsigned int
virtual void setUDotOldRequested(const bool u_dot_old_requested)
Set boolean flag to true to store old solution time derivative.
virtual void setUDotDotRequested(const bool u_dotdot_requested)
Set boolean flag to true to store solution second time derivative.
virtual int & timeStep() const
virtual void setUDotDotOldRequested(const bool u_dotdot_old_requested)
Set boolean flag to true to store old solution second 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...
Newmark-Beta time integration method.
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.
NewmarkBeta(const InputParameters ¶meters)
Real _beta
Newmark time integration parameter-beta.
virtual 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
int _inactive_tsteps
Inactive time steps.
Real _gamma
Newmark time integration parameter-gamma.
virtual Real duDotDuCoeff() const override
virtual void postResidual(NumericVector< Number > &residual) override
Callback to the NonLinearTimeIntegratorInterface called immediately after the residuals are computed ...
static InputParameters validParams()
virtual void computeTimeDerivatives() override
Computes the time derivative and the Jacobian of the time derivative.
Real & _du_dotdot_du
solution vector for
NumericVector< Number > * _Re_non_time
residual vector for non-time contributions
NumericVector< Number > * _Re_time
residual vector for time contributions
void mooseWarning(Args &&... args) const
virtual NumericVector< Number > * solutionUDot()
virtual NumericVector< Number > * solutionUDotOld()
virtual NumericVector< Number > * solutionUDotDotOld()
virtual NumericVector< Number > * solutionUDotDot()
Base class for time integrators.
void computeDuDotDu()
Compute _du_dot_du.
const NumericVector< Number > *const & _solution
static InputParameters validParams()
FEProblemBase & _fe_problem
Reference to the problem.
SystemBase & _sys
Reference to the system this time integrator operates on.
Real & _dt
The current time step size.
const NumericVector< Number > & _solution_old