20 "Compute an evolving elasticity tensor coupled to a grain growth phase field model.");
22 "grain_tracker",
"Name of GrainTracker user object that provides RankFourTensors");
23 params.
addParam<Real>(
"length_scale", 1.0e-9,
"Length scale of the problem, in meters");
24 params.
addParam<Real>(
"pressure_scale", 1.0e6,
"Pressure scale of the problem, in pa");
26 "v",
"var_name_base",
"op_num",
"Array of coupled variables");
27 params.
addParam<UserObjectName>(
"euler_angle_provider",
28 "Name of Euler angle provider user object");
36 _length_scale(getParam<Real>(
"length_scale")),
37 _pressure_scale(getParam<Real>(
"pressure_scale")),
39 _op_num(coupledComponents(
"v")),
40 _vals(coupledValues(
"v")),
41 _euler(isParamValid(
"euler_angle_provider")
44 _crysrot(isParamValid(
"euler_angle_provider")
47 _D_elastic_tensor(_op_num),
51 for (MooseIndex(
_op_num) op_index = 0; op_index <
_op_num; ++op_index)
68 for (MooseIndex(op_to_grains) op_index = 0; op_index < op_to_grains.size(); ++op_index)
70 auto grain_id = op_to_grains[op_index];
75 Real h = (1.0 + std::sin(
libMesh::pi * ((*
_vals[op_index])[_qp] - 0.5))) / 2.0;
81 if (isParamValid(
"euler_angle_provider"))
87 if ((*
_vals[op_index])[_qp] > 0.5)
92 const Real
tol = 1.0e-10;
93 sum_h = std::max(sum_h,
tol);
97 for (MooseIndex(
_op_num) op_index = 0; op_index <
_op_num; ++op_index)
100 for (MooseIndex(op_to_grains) op_index = 0; op_index < op_to_grains.size(); ++op_index)
102 auto grain_id = op_to_grains[op_index];
registerMooseObject("PhaseFieldApp", ComputePolycrystalElasticityTensor)
ComputeElasticityTensorBase the base class for computing elasticity tensors.
std::string _elasticity_tensor_name
GenericMaterialProperty< T, is_ad > & _elasticity_tensor
static InputParameters validParams()
Compute an evolving elasticity tensor coupled to a grain growth phase field model.
const GrainDataTracker< RankFourTensor > & _grain_tracker
Grain tracker object.
std::vector< MaterialProperty< RankFourTensor > * > _D_elastic_tensor
vector of elasticity tensor material properties
virtual void computeQpElasticityTensor()
static InputParameters validParams()
const std::vector< const VariableValue * > _vals
Order parameters.
const EulerAngleProvider *const _euler
object providing the Euler angles
const Real _JtoeV
Conversion factor from J to eV.
ComputePolycrystalElasticityTensor(const InputParameters ¶meters)
const unsigned int _op_num
Number of order parameters.
Abstract base class for user objects that implement the Euler Angle provider interface.
virtual const EulerAngles & getEulerAngles(unsigned int i) const
static const unsigned int invalid_id
GrainTracker derived class template to base objects on which maintain physical parameters for individ...
const T & getData(unsigned int grain_id) const
return data for selected grain
virtual const std::vector< unsigned int > & getVarToFeatureVector(dof_id_type elem_id) const override
Returns a list of active unique feature ids for a particular element.
This is a RealTensor version of a rotation matrix It is instantiated with the Euler angles,...