https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
HorizonStabilizedFormIFiniteStrainMechanicsNOSPD Class Reference

Kernel class for Form I of the horizon-stabilized peridynamic correspondence model for finite strain. More...

#include <HorizonStabilizedFormIFiniteStrainMechanicsNOSPD.h>

Inheritance diagram for HorizonStabilizedFormIFiniteStrainMechanicsNOSPD:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 HorizonStabilizedFormIFiniteStrainMechanicsNOSPD (const InputParameters &parameters)
 
virtual void computeOffDiagJacobian (unsigned int jvar) override
 
virtual void initialSetup () override
 
virtual void prepare () override
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void computeLocalResidual () override
 
virtual void computeLocalJacobian () override
 
virtual void computeNonlocalJacobian () override
 
virtual void computeLocalOffDiagJacobian (unsigned int jvar_num, unsigned int coupled_component) override
 Function to compute local contribution to the off-diagonal Jacobian at the current nodes. More...
 
virtual void computePDNonlocalOffDiagJacobian (unsigned int jvar_num, unsigned int coupled_component) override
 Function to compute nonlocal contribution to the off-diagonal Jacobian at the current nodes. More...
 
virtual RankTwoTensor computeDSDU (unsigned int component, unsigned int nd) override
 Function to compute derivative of stress with respect to displacements for small strain problems. More...
 
RankFourTensor computeDSDFhat (unsigned int nd)
 Function to compute derivative of stress with respect to derived deformation gradient. More...
 
Real computeDJDU (unsigned int component, unsigned int nd)
 Function to compute derivative of determinant of deformation gradient with respect to displacements. More...
 
RankTwoTensor computeDinvFTDU (unsigned int component, unsigned int nd)
 Function to compute derivative of deformation gradient inverse with respect to displacements. More...
 

Protected Attributes

const unsigned int _component
 The index of displacement component. More...
 
std::vector< MooseVariable * > _disp_var
 displacement variables More...
 
unsigned int _ndisp
 number of displacement components More...
 
const std::vector< RealGradient > * _orientation
 Vector of bond in current configuration. More...
 
std::vector< dof_id_type_ivardofs
 Current variable dof numbers for nodes i and j. More...
 
std::vector< Real_weights
 weights used for the current element to obtain the nodal stress More...
 
RealGradient _current_vec
 Vector of bond in current configuration. More...
 
RealGradient _current_unit_vec
 Unit vector of bond in current configuration. More...
 
const MaterialProperty< RankTwoTensor > & _dgrad_old
 Material point based material property. More...
 
const MaterialProperty< RankTwoTensor > & _E_inc
 
const MaterialProperty< RankTwoTensor > & _R_inc
 
const MaterialProperty< Real > & _multi
 Material point based material properties. More...
 
const MaterialProperty< RankTwoTensor > & _stress
 
const MaterialProperty< RankTwoTensor > & _shape2
 
const MaterialProperty< RankTwoTensor > & _dgrad
 
const MaterialProperty< RankTwoTensor > & _ddgraddu
 
const MaterialProperty< RankTwoTensor > & _ddgraddv
 
const MaterialProperty< RankTwoTensor > & _ddgraddw
 
const MaterialProperty< RankFourTensor > & _Jacobian_mult
 
const std::vector< MaterialPropertyName > _eigenstrain_names
 
std::vector< const MaterialProperty< RankTwoTensor > * > _deigenstrain_dT
 
const bool _temp_coupled
 Temperature variable. More...
 
MooseVariable_temp_var
 
const bool _out_of_plane_strain_coupled
 Parameters for out-of-plane strain in weak plane stress formulation. More...
 
MooseVariable_out_of_plane_strain_var
 

Detailed Description

Kernel class for Form I of the horizon-stabilized peridynamic correspondence model for finite strain.

Definition at line 20 of file HorizonStabilizedFormIFiniteStrainMechanicsNOSPD.h.

Constructor & Destructor Documentation

◆ HorizonStabilizedFormIFiniteStrainMechanicsNOSPD()

HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::HorizonStabilizedFormIFiniteStrainMechanicsNOSPD ( const InputParameters parameters)

Definition at line 30 of file HorizonStabilizedFormIFiniteStrainMechanicsNOSPD.C.

32  : MechanicsFiniteStrainBaseNOSPD(parameters), _component(getParam<unsigned int>("component"))
33 {
34 }
MechanicsFiniteStrainBaseNOSPD(const InputParameters &parameters)
const unsigned int _component
The index of displacement component.

Member Function Documentation

◆ computeDinvFTDU()

RankTwoTensor MechanicsFiniteStrainBaseNOSPD::computeDinvFTDU ( unsigned int  component,
unsigned int  nd 
)
protectedinherited

Function to compute derivative of deformation gradient inverse with respect to displacements.

Parameters
componentThe index of displacement component
ndThe local index of element node (either 1 or 2 for Edge2 element)
Returns
The calculated derivative

Definition at line 134 of file MechanicsFiniteStrainBaseNOSPD.C.

Referenced by computeLocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalJacobian(), computeLocalOffDiagJacobian(), and HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian().

135 {
136  // for finite formulation, compute the derivative of transpose of inverse of deformation gradient
137  // w.r.t the solution components
138  // d(inv(F)_ji)/du = d(inv(F)_ji)/dF_kl * dF_kl/du = - inv(F)_jk * inv(F)_li * dF_kl/du
139  // the bases are gi, gj, gk, gl, indictates the inverse transpose rather than the inverse
140 
141  RankTwoTensor dinvFTdU;
142  dinvFTdU.zero();
143  RankTwoTensor invF = _dgrad[nd].inverse();
144  if (component == 0)
145  {
146  dinvFTdU(0, 1) =
147  _ddgraddu[nd](0, 2) * _dgrad[nd](2, 1) - _ddgraddu[nd](0, 1) * _dgrad[nd](2, 2);
148  dinvFTdU(0, 2) =
149  _ddgraddu[nd](0, 1) * _dgrad[nd](1, 2) - _ddgraddu[nd](0, 2) * _dgrad[nd](1, 1);
150  dinvFTdU(1, 1) =
151  _ddgraddu[nd](0, 0) * _dgrad[nd](2, 2) - _ddgraddu[nd](0, 2) * _dgrad[nd](2, 0);
152  dinvFTdU(1, 2) =
153  _ddgraddu[nd](0, 2) * _dgrad[nd](1, 0) - _ddgraddu[nd](0, 0) * _dgrad[nd](1, 2);
154  dinvFTdU(2, 1) =
155  _ddgraddu[nd](0, 1) * _dgrad[nd](2, 0) - _ddgraddu[nd](0, 0) * _dgrad[nd](2, 1);
156  dinvFTdU(2, 2) =
157  _ddgraddu[nd](0, 0) * _dgrad[nd](1, 1) - _ddgraddu[nd](0, 1) * _dgrad[nd](1, 0);
158  }
159  else if (component == 1)
160  {
161  dinvFTdU(0, 0) =
162  _ddgraddv[nd](1, 1) * _dgrad[nd](2, 2) - _ddgraddv[nd](1, 2) * _dgrad[nd](2, 1);
163  dinvFTdU(0, 2) =
164  _ddgraddv[nd](1, 2) * _dgrad[nd](0, 1) - _ddgraddv[nd](0, 2) * _dgrad[nd](1, 1);
165  dinvFTdU(1, 0) =
166  _ddgraddv[nd](1, 2) * _dgrad[nd](2, 0) - _ddgraddv[nd](1, 0) * _dgrad[nd](2, 2);
167  dinvFTdU(1, 2) =
168  _ddgraddv[nd](1, 0) * _dgrad[nd](0, 2) - _ddgraddv[nd](1, 2) * _dgrad[nd](0, 0);
169  dinvFTdU(2, 0) =
170  _ddgraddv[nd](1, 0) * _dgrad[nd](2, 1) - _ddgraddv[nd](1, 1) * _dgrad[nd](2, 0);
171  dinvFTdU(2, 2) =
172  _ddgraddv[nd](1, 1) * _dgrad[nd](0, 0) - _ddgraddv[nd](1, 0) * _dgrad[nd](0, 1);
173  }
174  else if (component == 2)
175  {
176  dinvFTdU(0, 0) =
177  _ddgraddw[nd](2, 2) * _dgrad[nd](1, 1) - _ddgraddw[nd](2, 1) * _dgrad[nd](1, 2);
178  dinvFTdU(0, 1) =
179  _ddgraddw[nd](2, 1) * _dgrad[nd](0, 2) - _ddgraddw[nd](2, 2) * _dgrad[nd](0, 1);
180  dinvFTdU(1, 0) =
181  _ddgraddw[nd](2, 0) * _dgrad[nd](1, 2) - _ddgraddw[nd](2, 2) * _dgrad[nd](1, 0);
182  dinvFTdU(1, 1) =
183  _ddgraddw[nd](2, 2) * _dgrad[nd](0, 0) - _ddgraddw[nd](2, 0) * _dgrad[nd](0, 2);
184  dinvFTdU(2, 0) =
185  _ddgraddw[nd](2, 1) * _dgrad[nd](1, 0) - _ddgraddw[nd](2, 0) * _dgrad[nd](1, 1);
186  dinvFTdU(2, 1) =
187  _ddgraddw[nd](2, 0) * _dgrad[nd](0, 1) - _ddgraddw[nd](2, 1) * _dgrad[nd](0, 0);
188  }
189 
190  dinvFTdU /= _dgrad[nd].det();
191  for (unsigned int i = 0; i < 3; ++i)
192  for (unsigned int j = 0; j < 3; ++j)
193  for (unsigned int k = 0; k < 3; ++k)
194  for (unsigned int l = 0; l < 3; ++l)
195  {
196  if (component == 0)
197  dinvFTdU(i, j) -= invF(i, j) * invF(l, k) * _ddgraddu[nd](k, l);
198  else if (component == 1)
199  dinvFTdU(i, j) -= invF(i, j) * invF(l, k) * _ddgraddv[nd](k, l);
200  else if (component == 2)
201  dinvFTdU(i, j) -= invF(i, j) * invF(l, k) * _ddgraddw[nd](k, l);
202  }
203 
204  return dinvFTdU;
205 }
const MaterialProperty< RankTwoTensor > & _ddgraddu
static const std::string component
Definition: NS.h:153
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
const MaterialProperty< RankTwoTensor > & _ddgraddw
const MaterialProperty< RankTwoTensor > & _ddgraddv
static const std::string k
Definition: NS.h:130
const MaterialProperty< RankTwoTensor > & _dgrad

◆ computeDJDU()

Real MechanicsFiniteStrainBaseNOSPD::computeDJDU ( unsigned int  component,
unsigned int  nd 
)
protectedinherited

Function to compute derivative of determinant of deformation gradient with respect to displacements.

Parameters
componentThe index of displacement component
ndThe local index of element node (either 1 or 2 for Edge2 element)
Returns
The calculated derivative

Definition at line 110 of file MechanicsFiniteStrainBaseNOSPD.C.

Referenced by computeLocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalJacobian(), computeLocalOffDiagJacobian(), and HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian().

111 {
112  // for finite formulation, compute the derivative of determinant of deformation gradient w.r.t the
113  // solution components
114  // dJ / du = dJ / dF_ij * dF_ij / du = J * inv(F)_ji * dF_ij / du
115 
116  Real dJdU = 0.0;
117  RankTwoTensor invF = _dgrad[nd].inverse();
118  Real detF = _dgrad[nd].det();
119  for (unsigned int i = 0; i < 3; ++i)
120  for (unsigned int j = 0; j < 3; ++j)
121  {
122  if (component == 0)
123  dJdU += detF * invF(j, i) * _ddgraddu[nd](i, j);
124  else if (component == 1)
125  dJdU += detF * invF(j, i) * _ddgraddv[nd](i, j);
126  else if (component == 2)
127  dJdU += detF * invF(j, i) * _ddgraddw[nd](i, j);
128  }
129 
130  return dJdU;
131 }
const MaterialProperty< RankTwoTensor > & _ddgraddu
static const std::string component
Definition: NS.h:153
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
const MaterialProperty< RankTwoTensor > & _ddgraddw
const MaterialProperty< RankTwoTensor > & _ddgraddv
const MaterialProperty< RankTwoTensor > & _dgrad

◆ computeDSDFhat()

RankFourTensor MechanicsFiniteStrainBaseNOSPD::computeDSDFhat ( unsigned int  nd)
protectedinherited

Function to compute derivative of stress with respect to derived deformation gradient.

Parameters
ndThe local index of element node (either 1 or 2 for Edge2 element)
Returns
The calculated derivative

Definition at line 61 of file MechanicsFiniteStrainBaseNOSPD.C.

Referenced by MechanicsFiniteStrainBaseNOSPD::computeDSDU(), computeNonlocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeNonlocalJacobian(), computePDNonlocalOffDiagJacobian(), and HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian().

62 {
63  // compute the derivative of stress w.r.t the Fhat for finite strain
65  RankFourTensor dSdFhat;
66  dSdFhat.zero();
67 
68  // first calculate the derivative of incremental Cauchy stress w.r.t the inverse of Fhat
69  // Reference: M. M. Rashid (1993), Incremental Kinematics for finite element applications, IJNME
70  RankTwoTensor S_inc = _Jacobian_mult[nd] * _E_inc[nd];
71  RankFourTensor Tp1;
72  Tp1.zero();
73  for (unsigned int i = 0; i < 3; ++i)
74  for (unsigned int j = 0; j < 3; ++j)
75  for (unsigned int k = 0; k < 3; ++k)
76  for (unsigned int l = 0; l < 3; ++l)
77  for (unsigned int m = 0; m < 3; ++m)
78  for (unsigned int n = 0; n < 3; ++n)
79  for (unsigned int r = 0; r < 3; ++r)
80  Tp1(i, j, k, l) +=
81  S_inc(m, n) *
82  (_R_inc[nd](j, n) * (0.5 * I(k, m) * I(i, l) - I(m, l) * _R_inc[nd](i, k) +
83  0.5 * _R_inc[nd](i, k) * _R_inc[nd](m, l)) +
84  _R_inc[nd](i, m) * (0.5 * I(k, n) * I(j, l) - I(n, l) * _R_inc[nd](j, k) +
85  0.5 * _R_inc[nd](j, k) * _R_inc[nd](n, l))) -
86  _R_inc[nd](l, m) * _R_inc[nd](i, n) * _R_inc[nd](j, r) *
87  _Jacobian_mult[nd](n, r, m, k);
88 
89  // second calculate derivative of inverse of Fhat w.r.t Fhat
90  // d(inv(Fhat)_kl)/dFhat_mn = - inv(Fhat)_km * inv(Fhat)_nl
91  // the bases are gk, gl, gm, gn, indictates the inverse rather than the inverse transpose
92 
93  RankFourTensor Tp2;
94  Tp2.zero();
95  RankTwoTensor invFhat = (_dgrad[nd] * _dgrad_old[nd].inverse()).inverse();
96  for (unsigned int k = 0; k < 3; ++k)
97  for (unsigned int l = 0; l < 3; ++l)
98  for (unsigned int m = 0; m < 3; ++m)
99  for (unsigned int n = 0; n < 3; ++n)
100  Tp2(k, l, m, n) += -invFhat(k, m) * invFhat(n, l);
101 
102  // assemble two calculated quantities to form the derivative of Cauchy stress w.r.t
103  // Fhat
104  dSdFhat = Tp1 * Tp2;
105 
106  return dSdFhat;
107 }
const MaterialProperty< RankFourTensor > & _Jacobian_mult
void inverse(const std::vector< std::vector< Real >> &m, std::vector< std::vector< Real >> &m_inv)
const MaterialProperty< RankTwoTensor > & _dgrad_old
Material point based material property.
const MaterialProperty< RankTwoTensor > & _E_inc
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
static const std::string k
Definition: NS.h:130
const MaterialProperty< RankTwoTensor > & _R_inc
const MaterialProperty< RankTwoTensor > & _dgrad

◆ computeDSDU()

RankTwoTensor MechanicsFiniteStrainBaseNOSPD::computeDSDU ( unsigned int  component,
unsigned int  nd 
)
overrideprotectedvirtualinherited

Function to compute derivative of stress with respect to displacements for small strain problems.

Parameters
componentThe index of displacement component
ndThe local index of element node (either 1 or 2 for Edge2 element)
Returns
The calculated derivative

Reimplemented from MechanicsBaseNOSPD.

Definition at line 36 of file MechanicsFiniteStrainBaseNOSPD.C.

Referenced by computeLocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalJacobian(), computeLocalOffDiagJacobian(), and HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian().

37 {
38  // compute the derivative of stress w.r.t the solution components for finite strain
39  RankTwoTensor dSdU;
40 
41  // fetch the derivative of stress w.r.t the Fhat
42  RankFourTensor DSDFhat = computeDSDFhat(nd);
43 
44  // third calculate derivative of Fhat w.r.t solution components
45  RankTwoTensor Tp3;
46  if (component == 0)
47  Tp3 = _dgrad_old[nd].inverse() * _ddgraddu[nd];
48  else if (component == 1)
49  Tp3 = _dgrad_old[nd].inverse() * _ddgraddv[nd];
50  else if (component == 2)
51  Tp3 = _dgrad_old[nd].inverse() * _ddgraddw[nd];
52 
53  // assemble the fetched and calculated quantities to form the derivative of Cauchy stress w.r.t
54  // solution components
55  dSdU = DSDFhat * Tp3;
56 
57  return dSdU;
58 }
RankFourTensor computeDSDFhat(unsigned int nd)
Function to compute derivative of stress with respect to derived deformation gradient.
const MaterialProperty< RankTwoTensor > & _ddgraddu
static const std::string component
Definition: NS.h:153
const MaterialProperty< RankTwoTensor > & _dgrad_old
Material point based material property.
const MaterialProperty< RankTwoTensor > & _ddgraddw
const MaterialProperty< RankTwoTensor > & _ddgraddv

◆ computeLocalJacobian()

void HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeLocalJacobian ( )
overrideprotectedvirtual

Definition at line 56 of file HorizonStabilizedFormIFiniteStrainMechanicsNOSPD.C.

57 {
58  // excludes dTi/dUj and dTj/dUi contribution which was considered as nonlocal contribution
59  std::vector<RankTwoTensor> dPxdUx(_nnodes);
60  for (unsigned int nd = 0; nd < _nnodes; ++nd)
61  dPxdUx[nd] = computeDJDU(_component, nd) * _stress[nd] * _dgrad[nd].inverse().transpose() +
62  _dgrad[nd].det() * computeDSDU(_component, nd) * _dgrad[nd].inverse().transpose() +
63  _dgrad[nd].det() * _stress[nd] * computeDinvFTDU(_component, nd);
64 
65  for (unsigned int i = 0; i < _nnodes; ++i)
66  for (unsigned int j = 0; j < _nnodes; ++j)
67  _local_ke(i, j) += (i == 0 ? -1 : 1) * _multi[j] *
68  (dPxdUx[j] * _shape2[j].inverse()).row(_component) * _origin_vec *
69  _bond_status;
70 }
RankTwoTensor computeDinvFTDU(unsigned int component, unsigned int nd)
Function to compute derivative of deformation gradient inverse with respect to displacements.
const MaterialProperty< RankTwoTensor > & _stress
void inverse(const std::vector< std::vector< Real >> &m, std::vector< std::vector< Real >> &m_inv)
virtual RankTwoTensor computeDSDU(unsigned int component, unsigned int nd) override
Function to compute derivative of stress with respect to displacements for small strain problems...
Real computeDJDU(unsigned int component, unsigned int nd)
Function to compute derivative of determinant of deformation gradient with respect to displacements...
const MaterialProperty< RankTwoTensor > & _shape2
const MaterialProperty< Real > & _multi
Material point based material properties.
const unsigned int _component
The index of displacement component.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
const MaterialProperty< RankTwoTensor > & _dgrad

◆ computeLocalOffDiagJacobian()

void HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian ( unsigned int  ,
unsigned int   
)
overrideprotectedvirtual

Function to compute local contribution to the off-diagonal Jacobian at the current nodes.

Parameters
coupled_componentThe coupled variable number

Reimplemented from MechanicsBasePD.

Definition at line 168 of file HorizonStabilizedFormIFiniteStrainMechanicsNOSPD.C.

170 {
171  _local_ke.zero();
172  if (_temp_coupled && jvar_num == _temp_var->number())
173  {
174  std::vector<RankTwoTensor> dSdT(_nnodes);
175  for (unsigned int nd = 0; nd < _nnodes; ++nd)
176  for (unsigned int es = 0; es < _deigenstrain_dT.size(); ++es)
177  dSdT[nd] = -_dgrad[nd].det() * _Jacobian_mult[nd] * (*_deigenstrain_dT[es])[nd] *
178  _dgrad[nd].inverse().transpose();
179 
180  for (unsigned int i = 0; i < _nnodes; ++i)
181  for (unsigned int j = 0; j < _nnodes; ++j)
182  _local_ke(i, j) += (i == 0 ? -1 : 1) * _multi[j] *
183  (dSdT[j] * _shape2[j].inverse()).row(_component) * _origin_vec *
184  _bond_status;
185  }
186  else if (_out_of_plane_strain_coupled &&
187  jvar_num == _out_of_plane_strain_var
188  ->number()) // weak plane stress case, out_of_plane_strain is coupled
189  {
190  std::vector<RankTwoTensor> dSdE33(_nnodes);
191  for (unsigned int nd = 0; nd < _nnodes; ++nd)
192  {
193  for (unsigned int i = 0; i < 3; ++i)
194  for (unsigned int j = 0; j < 3; ++j)
195  dSdE33[nd](i, j) = _Jacobian_mult[nd](i, j, 2, 2);
196 
197  dSdE33[nd] = _dgrad[nd].det() * dSdE33[nd] * _dgrad[nd].inverse().transpose();
198  }
199 
200  for (unsigned int i = 0; i < _nnodes; ++i)
201  for (unsigned int j = 0; j < _nnodes; ++j)
202  _local_ke(i, j) += (i == 0 ? -1 : 1) * _multi[j] *
203  (dSdE33[j] * _shape2[j].inverse()).row(_component) * _origin_vec *
204  _bond_status;
205  }
206  else
207  {
208  std::vector<RankTwoTensor> dPxdUy(_nnodes);
209  for (unsigned int nd = 0; nd < _nnodes; ++nd)
210  dPxdUy[nd] =
211  computeDJDU(coupled_component, nd) * _stress[nd] * _dgrad[nd].inverse().transpose() +
212  _dgrad[nd].det() * computeDSDU(coupled_component, nd) * _dgrad[nd].inverse().transpose() +
213  _dgrad[nd].det() * _stress[nd] * computeDinvFTDU(coupled_component, nd);
214 
215  for (unsigned int i = 0; i < _nnodes; ++i)
216  for (unsigned int j = 0; j < _nnodes; ++j)
217  _local_ke(i, j) += (i == 0 ? -1 : 1) * _multi[j] *
218  (dPxdUy[j] * _shape2[j].inverse()).row(_component) * _origin_vec *
219  _bond_status;
220  }
221 }
const bool _temp_coupled
Temperature variable.
RankTwoTensor computeDinvFTDU(unsigned int component, unsigned int nd)
Function to compute derivative of deformation gradient inverse with respect to displacements.
const MaterialProperty< RankFourTensor > & _Jacobian_mult
unsigned int number() const
const MaterialProperty< RankTwoTensor > & _stress
void inverse(const std::vector< std::vector< Real >> &m, std::vector< std::vector< Real >> &m_inv)
const bool _out_of_plane_strain_coupled
Parameters for out-of-plane strain in weak plane stress formulation.
std::vector< const MaterialProperty< RankTwoTensor > * > _deigenstrain_dT
virtual RankTwoTensor computeDSDU(unsigned int component, unsigned int nd) override
Function to compute derivative of stress with respect to displacements for small strain problems...
Real computeDJDU(unsigned int component, unsigned int nd)
Function to compute derivative of determinant of deformation gradient with respect to displacements...
MooseVariable * _out_of_plane_strain_var
const MaterialProperty< RankTwoTensor > & _shape2
const MaterialProperty< Real > & _multi
Material point based material properties.
const unsigned int _component
The index of displacement component.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
MooseVariable * _temp_var
const MaterialProperty< RankTwoTensor > & _dgrad

◆ computeLocalResidual()

void HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeLocalResidual ( )
overrideprotectedvirtual

Definition at line 37 of file HorizonStabilizedFormIFiniteStrainMechanicsNOSPD.C.

38 {
39  // For finite strain formulation, the _stress tensor gotten from material class is the
40  // Cauchy stress (Sigma). the first Piola-Kirchhoff stress (P) is then obtained as
41  // P = J * Sigma * inv(F)^T.
42  // Nodal force states are based on the first Piola-Kirchhoff stress tensors (P).
43  // i.e., T = (J * Sigma * inv(F)^T) * inv(Shape) * xi * multi.
44  // Cauchy stress is calculated as Sigma_n+1 = Sigma_n + R * (C * dt * D) * R^T
45 
46  for (unsigned int nd = 0; nd < _nnodes; ++nd)
47  for (unsigned int i = 0; i < _nnodes; ++i)
48  _local_re(i) += (i == 0 ? -1 : 1) * _multi[nd] *
49  ((_dgrad[nd].det() * _stress[nd] * _dgrad[nd].inverse().transpose()) *
50  _shape2[nd].inverse())
51  .row(_component) *
52  _origin_vec * _bond_status;
53 }
const MaterialProperty< RankTwoTensor > & _stress
void inverse(const std::vector< std::vector< Real >> &m, std::vector< std::vector< Real >> &m_inv)
const MaterialProperty< RankTwoTensor > & _shape2
const MaterialProperty< Real > & _multi
Material point based material properties.
const unsigned int _component
The index of displacement component.
const MaterialProperty< RankTwoTensor > & _dgrad

◆ computeNonlocalJacobian()

void HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeNonlocalJacobian ( )
overrideprotectedvirtual

Definition at line 73 of file HorizonStabilizedFormIFiniteStrainMechanicsNOSPD.C.

74 {
75  // includes dTi/dUj and dTj/dUi contributions
76  for (unsigned int nd = 0; nd < _nnodes; ++nd)
77  {
78  RankFourTensor dSdFhat = computeDSDFhat(nd);
79  RankTwoTensor invF = _dgrad[nd].inverse();
80  Real detF = _dgrad[nd].det();
81  // calculation of jacobian contribution to current_node's neighbors
82  std::vector<dof_id_type> ivardofs(_nnodes);
83  ivardofs[0] = _current_elem->node_ptr(nd)->dof_number(_sys.number(), _var.number(), 0);
84  std::vector<dof_id_type> neighbors = _pdmesh.getNeighbors(_current_elem->node_id(nd));
85  std::vector<dof_id_type> bonds = _pdmesh.getBonds(_current_elem->node_id(nd));
86 
87  dof_id_type nb_index =
88  std::find(neighbors.begin(), neighbors.end(), _current_elem->node_id(1 - nd)) -
89  neighbors.begin();
90  std::vector<dof_id_type> dg_neighbors =
91  _pdmesh.getBondDeformationGradientNeighbors(_current_elem->node_id(nd), nb_index);
92 
93  Real vol_nb, dJdU;
94  RealGradient origin_vec_nb;
95  RankTwoTensor dFdUk, dPxdUkx, dSdU, dinvFTdU;
96 
97  for (unsigned int nb = 0; nb < dg_neighbors.size(); ++nb)
98  if (_bond_status_var->getElementalValue(_pdmesh.elemPtr(bonds[dg_neighbors[nb]])) > 0.5)
99  {
100  ivardofs[1] = _pdmesh.nodePtr(neighbors[dg_neighbors[nb]])
101  ->dof_number(_sys.number(), _var.number(), 0);
102  vol_nb = _pdmesh.getNodeVolume(neighbors[dg_neighbors[nb]]);
103 
104  origin_vec_nb = _pdmesh.getNodeCoord(neighbors[dg_neighbors[nb]]) -
105  _pdmesh.getNodeCoord(_current_elem->node_id(nd));
106 
107  dFdUk.zero();
108  for (unsigned int i = 0; i < _dim; ++i)
109  dFdUk(_component, i) =
110  _horizon_radius[nd] / origin_vec_nb.norm() * origin_vec_nb(i) * vol_nb;
111 
112  dFdUk *= _shape2[nd].inverse();
113 
114  // calculate dJ/du
115  dJdU = 0.0;
116  for (unsigned int i = 0; i < 3; ++i)
117  for (unsigned int j = 0; j < 3; ++j)
118  dJdU += detF * invF(j, i) * dFdUk(i, j);
119 
120  // calculate dS/du
121  dSdU = dSdFhat * dFdUk * _dgrad_old[nd].inverse();
122 
123  // calculate dinv(F)Tdu
124  dinvFTdU.zero();
125  for (unsigned int i = 0; i < 3; ++i)
126  for (unsigned int J = 0; J < 3; ++J)
127  for (unsigned int k = 0; k < 3; ++k)
128  for (unsigned int L = 0; L < 3; ++L)
129  dinvFTdU(i, J) += -invF(J, k) * invF(L, i) * dFdUk(k, L);
130 
131  // calculate the derivative of first Piola-Kirchhoff stress w.r.t displacements
132  dPxdUkx = dJdU * _stress[nd] * invF.transpose() + detF * dSdU * invF.transpose() +
133  detF * _stress[nd] * dinvFTdU;
134 
135  for (unsigned int i = 0; i < _nnodes; ++i)
136  for (unsigned int j = 0; j < _nnodes; ++j)
137  _local_ke(i, j) = (i == 0 ? -1 : 1) * (j == 0 ? 0 : 1) * _multi[nd] *
138  (dPxdUkx * _shape2[nd].inverse()).row(_component) * _origin_vec *
139  _bond_status;
140 
141  addJacobian(_assembly, _local_ke, _ivardofs, ivardofs, _var.scalingFactor());
142 
143  if (_has_diag_save_in)
144  {
145  unsigned int rows = _nnodes;
146  DenseVector<Real> diag(rows);
147  for (unsigned int i = 0; i < rows; ++i)
148  diag(i) = _local_ke(i, i);
149 
150  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
151  for (unsigned int i = 0; i < _diag_save_in.size(); ++i)
152  {
153  std::vector<dof_id_type> diag_save_in_dofs(2);
154  diag_save_in_dofs[0] = _current_elem->node_ptr(nd)->dof_number(
155  _diag_save_in[i]->sys().number(), _diag_save_in[i]->number(), 0);
156  diag_save_in_dofs[1] =
157  _pdmesh.nodePtr(neighbors[dg_neighbors[nb]])
158  ->dof_number(_diag_save_in[i]->sys().number(), _diag_save_in[i]->number(), 0);
159 
160  _diag_save_in[i]->sys().solution().add_vector(diag, diag_save_in_dofs);
161  }
162  }
163  }
164  }
165 }
RankFourTensor computeDSDFhat(unsigned int nd)
Function to compute derivative of stress with respect to derived deformation gradient.
auto norm() const -> decltype(std::norm(Real()))
const MaterialProperty< RankTwoTensor > & _stress
const MaterialProperty< RankTwoTensor > & _dgrad_old
Material point based material property.
std::vector< dof_id_type > _ivardofs
Current variable dof numbers for nodes i and j.
const MaterialProperty< RankTwoTensor > & _shape2
const MaterialProperty< Real > & _multi
Material point based material properties.
const unsigned int _component
The index of displacement component.
RankTwoTensorTempl< Real > transpose() const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
static const std::string k
Definition: NS.h:130
uint8_t dof_id_type
const MaterialProperty< RankTwoTensor > & _dgrad

◆ computeOffDiagJacobian()

void MechanicsBasePD::computeOffDiagJacobian ( unsigned int  jvar)
overridevirtualinherited

Definition at line 73 of file MechanicsBasePD.C.

74 {
75  prepare();
76 
77  if (jvar_num == _var.number())
78  computeJacobian();
79  else
80  {
81  unsigned int coupled_component = 0;
82  bool active = false;
83 
84  for (unsigned int i = 0; i < _dim; ++i)
85  if (jvar_num == _disp_var[i]->number())
86  {
87  coupled_component = i;
88  active = true;
89  }
90 
91  if (_temp_coupled && jvar_num == _temp_var->number())
92  active = true;
93 
95  active = true;
96 
97  if (active)
98  {
99  prepareMatrixTag(_assembly, _var.number(), jvar_num);
100  computeLocalOffDiagJacobian(jvar_num, coupled_component);
101  accumulateTaggedLocalMatrix();
102 
103  if (_use_full_jacobian)
104  computePDNonlocalOffDiagJacobian(jvar_num, coupled_component);
105  }
106  }
107 }
const bool _temp_coupled
Temperature variable.
unsigned int number() const
virtual void computeLocalOffDiagJacobian(unsigned int, unsigned int)
Function to compute local contribution to the off-diagonal Jacobian at the current nodes...
const bool _out_of_plane_strain_coupled
Parameters for out-of-plane strain in weak plane stress formulation.
std::vector< MooseVariable * > _disp_var
displacement variables
virtual void prepare() override
MooseVariable * _out_of_plane_strain_var
virtual void computePDNonlocalOffDiagJacobian(unsigned int, unsigned int)
Function to compute nonlocal contribution to the off-diagonal Jacobian at the current nodes...
MooseVariable * _temp_var

◆ computePDNonlocalOffDiagJacobian()

void HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian ( unsigned int  ,
unsigned int   
)
overrideprotectedvirtual

Function to compute nonlocal contribution to the off-diagonal Jacobian at the current nodes.

Parameters
jvar_numThe number of the first coupled variable
coupled_componentThe component number of the second coupled variable

Reimplemented from MechanicsBasePD.

Definition at line 224 of file HorizonStabilizedFormIFiniteStrainMechanicsNOSPD.C.

226 {
227  if (_temp_coupled && jvar_num == _temp_var->number())
228  {
229  // no nonlocal contribution from temperature
230  }
232  {
233  // no nonlocal contribution from out of plane strain
234  }
235  else
236  {
237  for (unsigned int nd = 0; nd < _nnodes; ++nd)
238  {
239  RankFourTensor dSdFhat = computeDSDFhat(nd);
240  RankTwoTensor invF = _dgrad[nd].inverse();
241  Real detF = _dgrad[nd].det();
242  // calculation of jacobian contribution to current_node's neighbors
243  std::vector<dof_id_type> jvardofs(_nnodes);
244  jvardofs[0] = _current_elem->node_ptr(nd)->dof_number(_sys.number(), jvar_num, 0);
245  std::vector<dof_id_type> neighbors = _pdmesh.getNeighbors(_current_elem->node_id(nd));
246  std::vector<dof_id_type> bonds = _pdmesh.getBonds(_current_elem->node_id(nd));
247 
248  dof_id_type nb_index =
249  std::find(neighbors.begin(), neighbors.end(), _current_elem->node_id(1 - nd)) -
250  neighbors.begin();
251  std::vector<dof_id_type> dg_neighbors =
252  _pdmesh.getBondDeformationGradientNeighbors(_current_elem->node_id(nd), nb_index);
253 
254  Real vol_nb, dJdU;
255  RealGradient origin_vec_nb;
256  RankTwoTensor dFdUk, dPxdUky, dSdU, dinvFTdU;
257 
258  for (unsigned int nb = 0; nb < dg_neighbors.size(); ++nb)
259  if (_bond_status_var->getElementalValue(_pdmesh.elemPtr(bonds[dg_neighbors[nb]])) > 0.5)
260  {
261  jvardofs[1] =
262  _pdmesh.nodePtr(neighbors[dg_neighbors[nb]])->dof_number(_sys.number(), jvar_num, 0);
263  vol_nb = _pdmesh.getNodeVolume(neighbors[dg_neighbors[nb]]);
264 
265  origin_vec_nb = _pdmesh.getNodeCoord(neighbors[dg_neighbors[nb]]) -
266  _pdmesh.getNodeCoord(_current_elem->node_id(nd));
267 
268  dFdUk.zero();
269  for (unsigned int i = 0; i < _dim; ++i)
270  dFdUk(coupled_component, i) =
271  _horizon_radius[nd] / origin_vec_nb.norm() * origin_vec_nb(i) * vol_nb;
272 
273  dFdUk *= _shape2[nd].inverse();
274 
275  // calculate dJ/du
276  dJdU = 0.0;
277  for (unsigned int i = 0; i < 3; ++i)
278  for (unsigned int j = 0; j < 3; ++j)
279  dJdU += detF * invF(j, i) * dFdUk(i, j);
280 
281  // calculate dS/du
282  dSdU = dSdFhat * dFdUk * _dgrad_old[nd].inverse();
283 
284  // calculate dinv(F)Tdu
285  dinvFTdU.zero();
286  for (unsigned int i = 0; i < 3; ++i)
287  for (unsigned int J = 0; J < 3; ++J)
288  for (unsigned int k = 0; k < 3; ++k)
289  for (unsigned int L = 0; L < 3; ++L)
290  dinvFTdU(i, J) += -invF(J, k) * invF(L, i) * dFdUk(k, L);
291 
292  // calculate the derivative of first Piola-Kirchhoff stress w.r.t displacements
293  dPxdUky = dJdU * _stress[nd] * invF.transpose() + detF * dSdU * invF.transpose() +
294  detF * _stress[nd] * dinvFTdU;
295 
296  for (unsigned int i = 0; i < _nnodes; ++i)
297  for (unsigned int j = 0; j < _nnodes; ++j)
298  _local_ke(i, j) = (i == 0 ? -1 : 1) * (j == 0 ? 0 : 1) * _multi[nd] *
299  (dPxdUky * _shape2[nd].inverse()).row(_component) * _origin_vec *
300  _bond_status;
301 
302  addJacobian(_assembly, _local_ke, _ivardofs, jvardofs, _var.scalingFactor());
303  }
304  }
305  }
306 }
RankFourTensor computeDSDFhat(unsigned int nd)
Function to compute derivative of stress with respect to derived deformation gradient.
const bool _temp_coupled
Temperature variable.
auto norm() const -> decltype(std::norm(Real()))
unsigned int number() const
const MaterialProperty< RankTwoTensor > & _stress
const bool _out_of_plane_strain_coupled
Parameters for out-of-plane strain in weak plane stress formulation.
const MaterialProperty< RankTwoTensor > & _dgrad_old
Material point based material property.
MooseVariable * _out_of_plane_strain_var
std::vector< dof_id_type > _ivardofs
Current variable dof numbers for nodes i and j.
const MaterialProperty< RankTwoTensor > & _shape2
const MaterialProperty< Real > & _multi
Material point based material properties.
const unsigned int _component
The index of displacement component.
RankTwoTensorTempl< Real > transpose() const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
MooseVariable * _temp_var
static const std::string k
Definition: NS.h:130
uint8_t dof_id_type
const MaterialProperty< RankTwoTensor > & _dgrad

◆ initialSetup()

void MechanicsBasePD::initialSetup ( )
overridevirtualinherited

Definition at line 45 of file MechanicsBasePD.C.

46 {
47  _orientation = &_assembly.getFE(FEType(), 1)->get_dxyzdxi();
48 }
const std::vector< RealGradient > * _orientation
Vector of bond in current configuration.

◆ prepare()

void MechanicsBasePD::prepare ( )
overridevirtualinherited

Definition at line 51 of file MechanicsBasePD.C.

Referenced by MechanicsBasePD::computeOffDiagJacobian(), GeneralizedPlaneStrainOffDiagOSPD::computeOffDiagJacobianScalar(), and GeneralizedPlaneStrainOffDiagNOSPD::computeOffDiagJacobianScalar().

52 {
54 
55  _ivardofs.resize(_nnodes);
56  _weights.resize(_nnodes);
57  for (unsigned int nd = 0; nd < _nnodes; ++nd)
58  {
59  _ivardofs[nd] = _current_elem->node_ptr(nd)->dof_number(_sys.number(), _var.number(), 0);
60  _weights[nd] = _pdmesh.getNeighborWeight(
61  _current_elem->node_id(nd),
62  _pdmesh.getNeighborIndex(_current_elem->node_id(nd), _current_elem->node_id(1 - nd)));
63  }
64 
65  for (unsigned int i = 0; i < _dim; ++i)
66  _current_vec(i) = _origin_vec(i) + _disp_var[i]->getNodalValue(*_current_elem->node_ptr(1)) -
67  _disp_var[i]->getNodalValue(*_current_elem->node_ptr(0));
68 
70 }
auto norm() const -> decltype(std::norm(Real()))
RealGradient _current_unit_vec
Unit vector of bond in current configuration.
std::vector< Real > _weights
weights used for the current element to obtain the nodal stress
std::vector< MooseVariable * > _disp_var
displacement variables
RealGradient _current_vec
Vector of bond in current configuration.
std::vector< dof_id_type > _ivardofs
Current variable dof numbers for nodes i and j.
virtual void prepare()
Function to precalculate data which will be used in the derived classes.

◆ validParams()

InputParameters HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::validParams ( )
static

Definition at line 16 of file HorizonStabilizedFormIFiniteStrainMechanicsNOSPD.C.

17 {
19  params.addClassDescription(
20  "Class for calculating the residual and the Jacobian for Form I "
21  "of the horizon-stabilized peridynamic correspondence model under finite strain assumptions");
22 
23  params.addRequiredParam<unsigned int>(
24  "component",
25  "An integer corresponding to the variable this kernel acts on (0 for x, 1 for y, 2 for z)");
26 
27  return params;
28 }
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _component

const unsigned int HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::_component
protected

◆ _current_unit_vec

RealGradient MechanicsBasePD::_current_unit_vec
protectedinherited

◆ _current_vec

RealGradient MechanicsBasePD::_current_vec
protectedinherited

◆ _ddgraddu

const MaterialProperty<RankTwoTensor>& MechanicsBaseNOSPD::_ddgraddu
protectedinherited

◆ _ddgraddv

const MaterialProperty<RankTwoTensor>& MechanicsBaseNOSPD::_ddgraddv
protectedinherited

◆ _ddgraddw

const MaterialProperty<RankTwoTensor>& MechanicsBaseNOSPD::_ddgraddw
protectedinherited

◆ _deigenstrain_dT

std::vector<const MaterialProperty<RankTwoTensor> *> MechanicsBaseNOSPD::_deigenstrain_dT
protectedinherited

◆ _dgrad

const MaterialProperty<RankTwoTensor>& MechanicsBaseNOSPD::_dgrad
protectedinherited

◆ _dgrad_old

const MaterialProperty<RankTwoTensor>& MechanicsFiniteStrainBaseNOSPD::_dgrad_old
protectedinherited

◆ _disp_var

std::vector<MooseVariable *> MechanicsBasePD::_disp_var
protectedinherited

◆ _E_inc

const MaterialProperty<RankTwoTensor>& MechanicsFiniteStrainBaseNOSPD::_E_inc
protectedinherited

◆ _eigenstrain_names

const std::vector<MaterialPropertyName> MechanicsBaseNOSPD::_eigenstrain_names
protectedinherited

Definition at line 43 of file MechanicsBaseNOSPD.h.

Referenced by MechanicsBaseNOSPD::MechanicsBaseNOSPD().

◆ _ivardofs

std::vector<dof_id_type> MechanicsBasePD::_ivardofs
protectedinherited

◆ _Jacobian_mult

const MaterialProperty<RankFourTensor>& MechanicsBaseNOSPD::_Jacobian_mult
protectedinherited

◆ _multi

const MaterialProperty<Real>& MechanicsBaseNOSPD::_multi
protectedinherited

Material point based material properties.

Definition at line 35 of file MechanicsBaseNOSPD.h.

Referenced by GeneralizedPlaneStrainOffDiagNOSPD::computeDispFullOffDiagJacobianScalar(), GeneralizedPlaneStrainOffDiagNOSPD::computeDispPartialOffDiagJacobianScalar(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalJacobian(), computeLocalJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), computeLocalOffDiagJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalResidual(), computeLocalResidual(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalResidual(), ForceStabilizedSmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeNonlocalJacobian(), computeNonlocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeNonlocalResidual(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeNonlocalResidual(), ForceStabilizedSmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), computePDNonlocalOffDiagJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), and HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian().

◆ _ndisp

unsigned int MechanicsBasePD::_ndisp
protectedinherited

number of displacement components

Definition at line 55 of file MechanicsBasePD.h.

Referenced by MechanicsBasePD::MechanicsBasePD().

◆ _orientation

const std::vector<RealGradient>* MechanicsBasePD::_orientation
protectedinherited

Vector of bond in current configuration.

Definition at line 63 of file MechanicsBasePD.h.

Referenced by MechanicsBasePD::initialSetup().

◆ _out_of_plane_strain_coupled

const bool MechanicsBasePD::_out_of_plane_strain_coupled
protectedinherited

◆ _out_of_plane_strain_var

MooseVariable* MechanicsBasePD::_out_of_plane_strain_var
protectedinherited

◆ _R_inc

const MaterialProperty<RankTwoTensor>& MechanicsFiniteStrainBaseNOSPD::_R_inc
protectedinherited

◆ _shape2

const MaterialProperty<RankTwoTensor>& MechanicsBaseNOSPD::_shape2
protectedinherited

Definition at line 37 of file MechanicsBaseNOSPD.h.

Referenced by GeneralizedPlaneStrainOffDiagNOSPD::computeDispFullOffDiagJacobianScalar(), GeneralizedPlaneStrainOffDiagNOSPD::computeDispPartialOffDiagJacobianScalar(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalJacobian(), computeLocalJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), computeLocalOffDiagJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalResidual(), computeLocalResidual(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalResidual(), ForceStabilizedSmallStrainMechanicsNOSPD::computeNonlocalJacobian(), computeNonlocalJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeNonlocalResidual(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeNonlocalResidual(), WeakPlaneStressNOSPD::computePDNonlocalOffDiagJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), computePDNonlocalOffDiagJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), and HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian().

◆ _stress

const MaterialProperty<RankTwoTensor>& MechanicsBaseNOSPD::_stress
protectedinherited

◆ _temp_coupled

const bool MechanicsBasePD::_temp_coupled
protectedinherited

◆ _temp_var

MooseVariable* MechanicsBasePD::_temp_var
protectedinherited

◆ _weights

std::vector<Real> MechanicsBasePD::_weights
protectedinherited

The documentation for this class was generated from the following files: