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
void paramError(const std::string ¶m, Args... args) const
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
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)
void mooseError(Args &&... args) const
static InputParameters validParams()
This interface material class computes the displacement jump in the interface natural coordinate syst...
const MooseArray< ADReal > & _ad_zero