20 "Base class used to compute the shifted displacement jump across a czm "
21 "interface in local coordinates");
27 "Disable shifted integration corrections to provide a non-shifted baseline for verification "
32 "UserObject that provides signed distance and normal vector calculations.");
42 _grad_disp_neighbor(3),
43 _shifted(!this->template getParam<bool>(
"no_shifted")),
44 _sbm_distance_uo(nullptr)
46 for (
const auto i : make_range(
_ndisp))
48 _grad_disp[i] = &this->
template coupledGenericGradient<is_ad>(
"displacements", i);
50 &this->
template coupledGenericNeighborGradient<is_ad>(
"displacements", i);
53 for (
const auto i : make_range(
_ndisp, 3u))
72 if (!this->isParamSetByUser(
"sbm_distance_uo"))
73 mooseError(
"Please provide 'sbm_distance_uo' when using shifted terms.");
75 &this->
template getUserObject<BoundaryShortestDistanceToSurface>(
"sbm_distance_uo");
87 const auto d = _sbm_distance_uo->surrogateDistance(
88 std::make_pair(this->_current_elem->id(), this->_current_side), _qp);
89 for (
const auto i : make_range(_ndisp))
90 _displacement_jump_global[_qp](i) +=
91 ((*_grad_disp_neighbor[i])[_qp] - (*_grad_disp[i])[_qp]) *
d;
99 const auto true_normal =
100 _shifted ? RealVectorValue(_sbm_distance_uo->trueNormal(
101 std::make_pair(this->_current_elem->id(), this->_current_side), _qp))
102 : RealVectorValue(this->_normals[_qp]);
104 _czm_total_rotation[_qp] =
105 CohesiveZoneModelTools::computeReferenceRotation<is_ad>(true_normal, _mesh.dimension());
void mooseError(Args &&... args)
This interface material class computes the displacement jump in the interface natural coordinate syst...
static InputParameters validParams()
const unsigned int _ndisp
number of displacement components
virtual void computeGlobalDisplacementJump()
method used to compute the displacement jump in global coordinates
const VariableGradient & _grad_zero
const MooseArray< ADRealVectorValue > & _ad_grad_zero
This interface material class computes the displacement jump in the interface natural coordinate syst...
SCZMComputeDisplacementJumpBase(const InputParameters ¶meters)
std::vector< const GenericVariableGradient< is_ad > * > _grad_disp
the coupled displacement gradients
void computeRotationMatrices() override
Computes the rotation using the true-interface normal.
virtual void initialSetup() override final
static InputParameters validParams()
std::vector< const GenericVariableGradient< is_ad > * > _grad_disp_neighbor
void computeGlobalDisplacementJump() override
Computes the jump at the true interface using displacement gradients.