23 "The displacements appropriate for the simulation geometry and coordinate system");
25 params.
addParam<std::string>(
"base_name",
26 "Optional parameter that allows the user to define " 27 "multiple material systems on the same block, " 28 "e.g. for multiple phases");
38 _is_coupled(isCoupled(
"displacements")),
39 _coord_system(getBlockCoordSystem()),
40 _disp_r(_is_coupled ? this->template coupledGenericValue<is_ad>(
"displacements", 0)
41 : genericZeroValue<is_ad>()),
42 _base_name(isParamValid(
"base_name") ? getParam<
std::string>(
"base_name") +
"_" :
""),
43 _initial_density(getParam<
Real>(
"density")),
44 _grad_disp(_is_coupled ? this->template coupledGenericGradients<is_ad>(
"displacements")
46 _density(declareGenericProperty<
Real, is_ad>(_base_name +
"density"))
48 if (getParam<bool>(
"use_displaced_mesh"))
50 "Density needs to act on an undisplaced mesh. Use of a displaced mesh leads to " 51 "incorrect gradient values");
59 "The system uses a displaced problem but 'displacements' are not provided in Density.");
62 _grad_disp.resize(3, &genericZeroGradient<is_ad>());
69 _density[_qp] = _initial_density;
87 const auto Axx = (*_grad_disp[0])[_qp](0) + 1.0;
88 const auto & Axy = (*_grad_disp[0])[_qp](1);
89 const auto & Axz = (*_grad_disp[0])[_qp](2);
90 const auto & Ayx = (*_grad_disp[1])[_qp](0);
91 auto Ayy = (*_grad_disp[1])[_qp](1) + 1.0;
92 const auto & Ayz = (*_grad_disp[1])[_qp](2);
93 const auto & Azx = (*_grad_disp[2])[_qp](0);
94 const auto & Azy = (*_grad_disp[2])[_qp](1);
95 auto Azz = (*_grad_disp[2])[_qp](2) + 1.0;
97 switch (_coord_system)
100 Azz = (*_grad_disp[2])[_qp](2) + 1.0;
104 if (_q_point[_qp](0) != 0.0)
105 Azz = _disp_r[_qp] / _q_point[_qp](0) + 1.0;
109 if (_q_point[_qp](0) != 0.0)
110 Ayy = Azz = _disp_r[_qp] / _q_point[_qp](0) + 1.0;
114 const auto detF = Axx * Ayy * Azz + Axy * Ayz * Azx + Axz * Ayx * Azy - Azx * Ayy * Axz -
115 Azy * Ayz * Axx - Azz * Ayx * Axy;
Compute density, which may changed based on a deforming mesh.
FEProblemBase & _fe_problem
static InputParameters validParams()
static const std::string density
DensityTempl(const InputParameters ¶ms)
std::vector< const GenericVariableGradient< is_ad > * > _grad_disp
static InputParameters validParams()
void paramError(const std::string ¶m, Args... args) const
registerMooseObject("MiscApp", Density)
virtual void initQpStatefulProperties() override
virtual void computeQpProperties() override
unsigned int coupledComponents(const std::string &var_name) const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual std::shared_ptr< const DisplacedProblem > getDisplacedProblem() const
typename Moose::GenericType< Real, is_ad > GenericReal
typename Moose::GenericType< VariableGradient, is_ad > GenericVariableGradient