11 #include "libmesh/utility.h" 20 "Computes the scaled inertial density needed to enable stable explicit time-stepping using " 22 "desired_time_step in solid-mechanics problems. Note that if this inertial density is used " 23 "in input files (for instance, in the mass matrix) it will impact the dynamics of the " 24 "system, largely eliminating high-frequency oscillations, and impacting low-frequency " 25 "dynamics. Hence, use with caution.");
28 "Name of Material Property defining the true inertial density of the material.");
30 "scaled_density",
"Name of the scaled density property that this Material computes.");
31 params.
addParam<MaterialPropertyName>(
34 "Name of the additional density property that this Material computes");
39 "(safety_factor>0) & (safety_factor<=1)",
40 "The scaled density that this Material produces will potentially allow stable time-step " 41 "sizes of desired_time_step / safety_factor. In practice, however, using such a time step " 42 "might result in instabilities, because of time-step lagging and the approximate critical " 43 "time-step formula used by this Material. Hence, safety_factor allows for a safety margin.");
49 _desired_time_step(getParam<
Real>(
"desired_time_step")),
50 _density_scaled(declareProperty<
Real>(getParam<MaterialPropertyName>(
"scaled_density"))),
52 declareProperty<
Real>(getParam<MaterialPropertyName>(
"additional_density"))),
53 _material_density(getMaterialProperty<
Real>(
"true_density")),
54 _sqrt_effective_stiffness(getMaterialPropertyByName<
Real>(
"effective_stiffness")),
55 _safety_factor(getParam<
Real>(
"safety_factor"))
DensityScaling(const InputParameters ¶meters)
const Real _desired_time_step
User-prescribed desired time step.
const MaterialProperty< Real > & _material_density
The true inertial density of the material.
const MaterialProperty< Real > & _sqrt_effective_stiffness
Square root of effective stiffness of element.
virtual void computeQpProperties()
static InputParameters validParams()
This material computes a density that is scaled to enable stable explicit time stepping with steps la...
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MaterialProperty< Real > & _additional_density
Scaled density minus true density.
MaterialProperty< Real > & _density_scaled
The scaled density.
const Real & _safety_factor
User-defined safety factor that the minimum density required for stability is divided by...
const Elem *const & _current_elem
registerMooseObject("SolidMechanicsApp", DensityScaling)