22 "Adds Rayleigh mass damping, eta * M * v, to an ExplicitMixedOrder solid mechanics model.");
27 "Damping strength. Mass damping helps to damp low-frequency, large-scale oscillations. A "
28 "reasonable value to use initially is eta = 2 * d * omega, where d is the damping fraction "
29 "(typically 0.1) and omega is the lowest relevant frequency mode of the model. For "
30 "instance, if the model is can oscillate longitudinally, omega = (pi / model_length) * "
31 "sqrt(youngs_modulus / density)");
37 _eta(getParam<Real>(
"eta")),
38 _mass_matrix_lumped(initLumpedMass()),
39 _u_dot_old(_var.nodalValueDotOld())
50const NumericVector<Number> &
54 if (nl.hasVector(
"mass_matrix_lumped"))
55 return nl.
getVector(
"mass_matrix_lumped");
57 mooseError(
"Lumped mass matrix is missing. Make sure ExplicitMixedOrder is being used as the "
registerMooseObject("SolidMechanicsApp", ExplicitMassDamping)
Calculates eta * mass * velocity for use in ExplicitMixedOrder time integration.
static InputParameters validParams()
const Real & _u_dot_old
The old velocity.
const NumericVector< Number > & _mass_matrix_lumped
The lumped mass matrix.
const NumericVector< Number > & initLumpedMass()
Initialize the lumped mass matrix.
const Real _eta
Damping coefficient.
virtual Real computeQpResidual() override
ExplicitMassDamping(const InputParameters ¶meters)
NonlinearSystemBase & getNonlinearSystemBase(const unsigned int sys_num)
void mooseError(Args &&... args) const
const dof_id_type & nodalDofIndex() const override
MooseVariableFE< Real > * _variable
FEProblemBase & _fe_problem
static InputParameters validParams()
unsigned int number() const
virtual NumericVector< Number > & getVector(const std::string &name)