19 params.
addClassDescription(
"Computes an eigenstrain that is defined by a set of scalar material " 20 "properties that summed together define the volumetric change. This " 21 "also computes the derivatives of that eigenstrain with respect to a " 22 "supplied set of variable dependencies.");
24 "volumetric_materials",
"List of scalar material properties defining the volumetric change");
31 _num_args(coupledComponents(
"args")),
32 _volumetric_material_names(getParam<
std::vector<MaterialPropertyName>>(
"volumetric_materials")),
33 _volumetric_materials(_volumetric_material_names.size()),
34 _dvolumetric_materials(_volumetric_material_names.size()),
35 _d2volumetric_materials(_volumetric_material_names.size()),
36 _delastic_strain(_num_args),
37 _d2elastic_strain(_num_args)
50 const VariableName & jname = coupledName(
"args",
j);
56 const VariableName & kname = coupledName(
"args",
k);
58 &getMaterialPropertyDerivative<Real>(
"prefactor", jname, kname);
65 const VariableName & jname = coupledName(
"args",
j);
67 &declarePropertyDerivative<RankTwoTensor>(_base_name +
"elastic_strain", jname);
72 const VariableName & kname = coupledName(
"args",
k);
74 &declarePropertyDerivative<RankTwoTensor>(_base_name +
"elastic_strain", jname, kname);
83 validateCoupling<Real>(vmn);
85 for (
unsigned int i = 0; i <
_num_args; ++i)
87 const VariableName & iname = coupledName(
"args", i);
88 if (_fe_problem.isMatPropRequested(
90 mooseError(
"Derivative of elastic_strain requested, but not yet implemented");
95 const VariableName & jname = coupledName(
"args",
j);
96 if (_fe_problem.isMatPropRequested(
98 mooseError(
"Second Derivative of elastic_strain requested, but not yet implemented");
108 Real volumetric_strain = 0;
112 const Real eigenstrain_comp = computeVolumetricStrainComponent(volumetric_strain);
113 _eigenstrain[_qp].zero();
114 _eigenstrain[_qp].addIa(eigenstrain_comp);
ComputeVolumetricEigenstrain(const InputParameters ¶meters)
std::vector< MaterialProperty< RankTwoTensor > * > _delastic_strain
first derivatives of the elastic strain with respect to the args
std::vector< std::vector< MaterialProperty< RankTwoTensor > * > > _d2elastic_strain
second derivatives of the elastic strain with respect to the args
void mooseError(Args &&... args)
std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > _d2volumetric_materials
second derivatives of the volumetric materials with respect to the args
const MaterialPropertyName derivativePropertyNameSecond(const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
const MaterialPropertyName derivativePropertyNameFirst(const MaterialPropertyName &base, const SymbolName &c1) const
registerMooseObject("SolidMechanicsApp", ComputeVolumetricEigenstrain)
const std::vector< MaterialPropertyName > _volumetric_material_names
Names of the material properties that define volumetric change.
ComputeVolumetricEigenstrain computes an eigenstrain that is defined by a set of scalar material prop...
static InputParameters validParams()
ComputeEigenstrainBase is the base class for eigenstrain tensors.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const unsigned int _num_args
number of variables the material depends on
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
std::vector< std::vector< const MaterialProperty< Real > * > > _dvolumetric_materials
first derivatives of the volumetric materials with respect to the args
std::vector< const MaterialProperty< Real > * > _volumetric_materials
The material properties that define volumetric change.
static const std::string k
virtual void computeQpEigenstrain()
virtual void initialSetup()
static InputParameters validParams()