19 "interface in local coordinates");
21 "The string of displacements suitable for the problem statement");
23 params.
addParam<std::string>(
"base_name",
"Material property base name");
32 _base_name(isParamValid(
"base_name") && !getParam<
std::string>(
"base_name").empty()
33 ? getParam<
std::string>(
"base_name") +
"_" 35 _ndisp(coupledComponents(
"displacements")),
38 _displacement_jump_global(declareGenericPropertyByName<
RealVectorValue, is_ad>(
39 _base_name +
"displacement_jump_global")),
40 _interface_displacement_jump(declareGenericPropertyByName<
RealVectorValue, is_ad>(
41 _base_name +
"interface_displacement_jump")),
43 declareGenericPropertyByName<
RankTwoTensor, is_ad>(_base_name +
"czm_total_rotation"))
47 paramError(
"displacements",
"Number of displacements must match problem dimension.");
50 mooseError(
"the CZM material requires 1, 2 or 3 displacement variables");
53 for (
unsigned int i = 0; i <
_ndisp; ++i)
55 _disp[i] = &coupledGenericValue<is_ad>(
"displacements", i);
56 _disp_neighbor[i] = &coupledGenericNeighborValue<is_ad>(
"displacements", i);
60 for (
unsigned int i =
_ndisp; i < 3; i++)
80 _interface_displacement_jump[_qp] = 0;
89 for (
unsigned int i = 0; i < _ndisp; i++)
90 _displacement_jump_global[_qp](i) = (*_disp_neighbor[i])[_qp] - (*_disp[i])[_qp];
91 for (
unsigned int i = _ndisp; i < 3; i++)
92 _displacement_jump_global[_qp](i) = 0;
94 computeRotationMatrices();
95 computeLocalDisplacementJump();
102 _czm_total_rotation[_qp] =
103 CohesiveZoneModelTools::computeReferenceRotation<is_ad>(_normals[_qp], _mesh.dimension());
const VariableValue & _zero
static InputParameters validParams()
void initQpStatefulProperties() override
virtual void computeRotationMatrices()
method computing the required rotation matrices
virtual unsigned int dimension() const
void computeQpProperties() override
const unsigned int _ndisp
number of displacement components
void paramError(const std::string ¶m, Args... args) const
std::vector< const GenericVariableValue< is_ad > * > _disp
the coupled displacement and neighbor displacement values
std::vector< const GenericVariableValue< is_ad > * > _disp_neighbor
CZMComputeDisplacementJumpBase(const InputParameters ¶meters)
static InputParameters validParams()
void mooseError(Args &&... args) const
This interface material class computes the displacement jump in the interface natural coordinate syst...
const MooseArray< ADReal > & _ad_zero