18 params.
addClassDescription(
"Computes the deformation gradient from the volumetric eigenstrain " 19 "due to spherical voids in a crystal plasticity simulation");
21 "spherical_void_number_density",
22 "The material property name of the number density of the spherical voids, in 1/mm^3.");
24 "mean_spherical_void_radius",
25 "The material property name for the mean radius value, in mm, for the spherical voids");
30 ComputeCrystalPlasticityVolumetricEigenstrain::ComputeCrystalPlasticityVolumetricEigenstrain(
33 _void_density(getMaterialProperty<
Real>(
"spherical_void_number_density")),
34 _void_density_old(getMaterialPropertyOld<
Real>(
"spherical_void_number_density")),
35 _void_radius(getMaterialProperty<
Real>(
"mean_spherical_void_radius")),
36 _void_radius_old(getMaterialPropertyOld<
Real>(
"mean_spherical_void_radius")),
37 _equivalent_linear_change(declareProperty<
Real>(
"equivalent_linear_change"))
42 ComputeCrystalPlasticityVolumetricEigenstrain::computeQpDeformationGradient()
45 if (_void_radius[_qp] < 0.0)
46 mooseException(
"A negative mean spherical void radius value, ",
48 ", has been provided; this value is " 49 "non-physical and violates the assumptions of this eigenstrain class");
50 if (_void_density[_qp] < 0.0)
52 "A negative, non-physical spherical void number density has been provided: ",
54 ". This value is non-physical and violates the assumptions of this eigenstrain class");
57 _equivalent_linear_change[_qp] =
58 computeLinearComponentVolume(_void_radius[_qp], _void_density[_qp]);
59 Real previous_linear =
60 computeLinearComponentVolume(_void_radius_old[_qp], _void_density_old[_qp]);
62 const Real linear_increment = _equivalent_linear_change[_qp] - previous_linear;
69 RankTwoTensor residual_equivalent_volumetric_expansion_increment =
72 _deformation_gradient[_qp] =
73 residual_equivalent_volumetric_expansion_increment.
inverse() * _deformation_gradient_old[_qp];
77 ComputeCrystalPlasticityVolumetricEigenstrain::computeLinearComponentVolume(
const Real & radius,
80 const Real cb_radius = Utility::pow<3>(
radius);
82 const Real linear_component = std::cbrt(volume);
84 return linear_component;
RankTwoTensorTempl< Real > inverse() const
ComputeCrystalPlasticityEigenstrainBase is the base class for computing eigenstrain tensors in crysta...
static const std::string density
static InputParameters validParams()
static RankTwoTensorTempl Identity()
InputParameters validParams()
RankTwoTensorTempl< Real > rotated(const RankTwoTensorTempl< Real > &R) const
registerMooseObject("SolidMechanicsApp", ComputeCrystalPlasticityVolumetricEigenstrain)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real