12 #include "libmesh/utility.h" 20 params.
addClassDescription(
"Automatically scale the material density to achieve the desired time " 21 "step size to satisfy CFL conditions.");
24 "Name of Material Property or a constant real number defining the density of the material.");
29 "Factor to multiply to the critical time step. This factor is typically less than one to be " 30 "on the conservative side due to two types of approximation: Time step lagging and the " 31 "approximation of the critical time step formula.");
37 _desired_time_step(getParam<
Real>(
"desired_time_step")),
38 _density_scaling(declareProperty<
Real>(
"density_scaling")),
39 _material_density(getMaterialPropertyByName<
Real>(
"density")),
40 _effective_stiffness(getMaterialPropertyByName<
Real>(
"effective_stiffness")),
41 _factor(getParam<
Real>(
"factor"))
43 mooseInfo(
"Since it can change key simulation results, usage of selective density (mass) scaling " 44 "is only recommended for advanced users.");
58 const Real density_to_add =
DensityScaling(const InputParameters ¶meters)
const Real _desired_time_step
User-prescribed desired time step. Mass will be added until fulfilled.
void mooseInfo(Args &&... args) const
const MaterialProperty< Real > & _material_density
Density of the material.
const Real & _factor
User defined factor to be multiplied to the critical time step.
virtual void computeQpProperties()
static InputParameters validParams()
This material computes the mass required to fulfill a prescribed critical time step.
const MaterialProperty< Real > & _effective_stiffness
Effective stiffness of element: function of material properties and element size. ...
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MooseUnits pow(const MooseUnits &, int)
MaterialProperty< Real > & _density_scaling
The stress tensor.
const Elem *const & _current_elem
registerMooseObject("SolidMechanicsApp", DensityScaling)