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

Kernel class for coupled off diagonal Jacobian entries of Form I of horizon stabilized peridynamic generalized plane strain model. More...

#include <GeneralizedPlaneStrainOffDiagNOSPD.h>

Inheritance diagram for GeneralizedPlaneStrainOffDiagNOSPD:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 GeneralizedPlaneStrainOffDiagNOSPD (const InputParameters &parameters)
 
virtual void computeOffDiagJacobian (unsigned int jvar) override
 
virtual void computeLocalOffDiagJacobian (unsigned int, unsigned int)
 Function to compute local contribution to the off-diagonal Jacobian at the current nodes. More...
 
virtual void computePDNonlocalOffDiagJacobian (unsigned int, unsigned int)
 Function to compute nonlocal contribution to the off-diagonal Jacobian at the current nodes. More...
 
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 computeOffDiagJacobianScalar (unsigned int jvar_num) override
 
void computeDispFullOffDiagJacobianScalar (unsigned int component, unsigned int jvar_num)
 Function to compute the full off diagonal Jacobian for coupling between displacements and scalar variable. More...
 
void computeDispPartialOffDiagJacobianScalar (unsigned int component, unsigned int jvar_num)
 Function to compute partial off diagonal Jacobian for coupling between displacements and scalar variable. More...
 
void computeTempOffDiagJacobianScalar (unsigned int jvar_num)
 Function to compute off disgonal Jacobian for coupling between temperature and scalar variable. More...
 
virtual RankTwoTensor computeDSDU (unsigned int component, unsigned int nd)
 Function to compute derivative of stress with respect to displacements for small strain problems. More...
 

Protected Attributes

const unsigned int _scalar_out_of_plane_strain_var_num
 The variable number of the scalar out-of-plane strain variable. More...
 
DenseMatrix< Number_ken
 
DenseMatrix< Number_kne
 
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< 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 coupled off diagonal Jacobian entries of Form I of horizon stabilized peridynamic generalized plane strain model.

Definition at line 18 of file GeneralizedPlaneStrainOffDiagNOSPD.h.

Constructor & Destructor Documentation

◆ GeneralizedPlaneStrainOffDiagNOSPD()

GeneralizedPlaneStrainOffDiagNOSPD::GeneralizedPlaneStrainOffDiagNOSPD ( const InputParameters parameters)

Definition at line 31 of file GeneralizedPlaneStrainOffDiagNOSPD.C.

33  : MechanicsBaseNOSPD(parameters),
34  _scalar_out_of_plane_strain_var_num(coupledScalar("scalar_out_of_plane_strain"))
35 {
36  // Consistency check
37  if (_disp_var.size() != 2)
38  mooseError("GeneralizedPlaneStrain only works for two dimensional models!");
39 }
void mooseError(Args &&... args)
std::vector< MooseVariable * > _disp_var
displacement variables
MechanicsBaseNOSPD(const InputParameters &parameters)
const unsigned int _scalar_out_of_plane_strain_var_num
The variable number of the scalar out-of-plane strain variable.

Member Function Documentation

◆ computeDispFullOffDiagJacobianScalar()

void GeneralizedPlaneStrainOffDiagNOSPD::computeDispFullOffDiagJacobianScalar ( unsigned int  component,
unsigned int  jvar_num 
)
protected

Function to compute the full off diagonal Jacobian for coupling between displacements and scalar variable.

Parameters
componentThe index of displacement component
jvar_numThe coupled scalar variable number

Definition at line 97 of file GeneralizedPlaneStrainOffDiagNOSPD.C.

Referenced by computeOffDiagJacobianScalar().

99 {
100  // LOCAL contribution
101 
102  // off-diagonal jacobian entries on the column and row corresponding to
103  // scalar_out_of_plane_strain for coupling with displacements
104  prepareMatrixTag(_assembly, _var.number(), jvar_num, _ken);
105  prepareMatrixTag(_assembly, jvar_num, _var.number(), _kne);
106  MooseVariableScalar & jvar = _sys.getScalarVariable(_tid, jvar_num);
107 
108  // fill in the column corresponding to the scalar variable
109  std::vector<RankTwoTensor> dSdE33(_nnodes);
110  for (unsigned int nd = 0; nd < _nnodes; ++nd)
111  for (unsigned int i = 0; i < 3; ++i)
112  for (unsigned int j = 0; j < 3; ++j)
113  dSdE33[nd](i, j) = _Jacobian_mult[nd](i, j, 2, 2);
114 
115  for (unsigned int i = 0; i < _nnodes; ++i)
116  for (unsigned int j = 0; j < jvar.order(); ++j)
117  _ken(i, j) += (i == j ? -1 : 1) *
118  (_multi[0] * (dSdE33[0] * _shape2[0].inverse()).row(component) +
119  _multi[1] * (dSdE33[1] * _shape2[1].inverse()).row(component)) *
120  _origin_vec * _bond_status;
121 
122  // fill in the row corresponding to the scalar variable
123  _kne(0, 0) +=
124  computeDSDU(component, 0)(2, 2) * _node_vol[0] * _dg_vol_frac[0] * _bond_status; // node i
125  _kne(0, 1) +=
126  computeDSDU(component, 1)(2, 2) * _node_vol[1] * _dg_vol_frac[1] * _bond_status; // node j
127 
128  accumulateTaggedLocalMatrix(_assembly, _var.number(), jvar_num, _ken);
129  accumulateTaggedLocalMatrix(_assembly, jvar_num, _var.number(), _kne);
130 
131  // NONLOCAL contribution
132 
133  // fill in the row corresponding to the scalar variable
134  for (unsigned int nd = 0; nd < _nnodes; ++nd)
135  {
136  // calculation of jacobian contribution to current_node's neighbors
137  // NOT including the contribution to nodes i and j, which is considered as local off-diagonal
138  std::vector<dof_id_type> ivardofs(_nnodes);
139  ivardofs[0] = _current_elem->node_ptr(nd)->dof_number(_sys.number(), _var.number(), 0);
140  std::vector<dof_id_type> neighbors = _pdmesh.getNeighbors(_current_elem->node_id(nd));
141  std::vector<dof_id_type> bonds = _pdmesh.getBonds(_current_elem->node_id(nd));
142 
143  dof_id_type nb_index =
144  std::find(neighbors.begin(), neighbors.end(), _current_elem->node_id(1 - nd)) -
145  neighbors.begin();
146  std::vector<dof_id_type> dg_neighbors =
147  _pdmesh.getBondDeformationGradientNeighbors(_current_elem->node_id(nd), nb_index);
148 
149  Real vol_nb;
150  RealGradient origin_vec_nb;
151  RankTwoTensor dFdUk, dPdUk;
152 
153  for (unsigned int nb = 0; nb < dg_neighbors.size(); ++nb)
154  if (_bond_status_var->getElementalValue(_pdmesh.elemPtr(bonds[dg_neighbors[nb]])) > 0.5)
155  {
156  Node * dgneighbor_nb = _pdmesh.nodePtr(neighbors[dg_neighbors[nb]]);
157  ivardofs[1] = dgneighbor_nb->dof_number(_sys.number(), _var.number(), 0);
158  vol_nb = _pdmesh.getNodeVolume(neighbors[dg_neighbors[nb]]);
159 
160  // obtain bond nb's origin vector
161  origin_vec_nb = _pdmesh.getNodeCoord(dgneighbor_nb->id()) -
162  _pdmesh.getNodeCoord(_current_elem->node_id(nd));
163 
164  dFdUk.zero();
165  for (unsigned int i = 0; i < _dim; ++i)
166  dFdUk(component, i) =
167  _horizon_radius[nd] / origin_vec_nb.norm() * origin_vec_nb(i) * vol_nb;
168 
169  dFdUk *= _shape2[nd].inverse();
170  dPdUk = _Jacobian_mult[nd] * 0.5 * (dFdUk.transpose() + dFdUk);
171 
172  _local_ke.resize(_ken.n(), _ken.m());
173  _local_ke.zero();
174  _local_ke(0, 1) = dPdUk(2, 2) * _dg_vol_frac[nd] * _node_vol[nd] * _bond_status;
175 
176  addJacobian(_assembly, _local_ke, jvar.dofIndices(), ivardofs, _var.scalingFactor());
177  }
178  }
179 }
virtual RankTwoTensor computeDSDU(unsigned int component, unsigned int nd)
Function to compute derivative of stress with respect to displacements for small strain problems...
auto norm() const -> decltype(std::norm(Real()))
const MaterialProperty< RankFourTensor > & _Jacobian_mult
static const std::string component
Definition: NS.h:153
unsigned int m() const
void inverse(const std::vector< std::vector< Real >> &m, std::vector< std::vector< Real >> &m_inv)
virtual void resize(const std::size_t size) override final
const MaterialProperty< RankTwoTensor > & _shape2
const MaterialProperty< Real > & _multi
Material point based material properties.
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")
unsigned int n() const
uint8_t dof_id_type

◆ computeDispPartialOffDiagJacobianScalar()

void GeneralizedPlaneStrainOffDiagNOSPD::computeDispPartialOffDiagJacobianScalar ( unsigned int  component,
unsigned int  jvar_num 
)
protected

Function to compute partial off diagonal Jacobian for coupling between displacements and scalar variable.

Parameters
componentThe index of displacement component
jvar_numThe coupled scalar variable number

Definition at line 64 of file GeneralizedPlaneStrainOffDiagNOSPD.C.

Referenced by computeOffDiagJacobianScalar().

66 {
67  // off-diagonal jacobian entries on the column and row corresponding to
68  // scalar_out_of_plane_strain for coupling with displacements
69 
70  prepareMatrixTag(_assembly, _var.number(), jvar_num, _ken);
71  prepareMatrixTag(_assembly, jvar_num, _var.number(), _kne);
72  MooseVariableScalar & jvar = _sys.getScalarVariable(_tid, jvar_num);
73 
74  // fill in the column corresponding to the scalar variable
75  std::vector<RankTwoTensor> dSdE33(_nnodes);
76  for (unsigned int nd = 0; nd < _nnodes; ++nd)
77  for (unsigned int i = 0; i < 3; ++i)
78  for (unsigned int j = 0; j < 3; ++j)
79  dSdE33[nd](i, j) = _Jacobian_mult[nd](i, j, 2, 2);
80 
81  for (unsigned int i = 0; i < _nnodes; ++i)
82  for (unsigned int j = 0; j < jvar.order(); ++j)
83  _ken(i, j) += (i == j ? -1 : 1) *
84  (_multi[0] * (dSdE33[0] * _shape2[0].inverse()).row(component) +
85  _multi[1] * (dSdE33[1] * _shape2[1].inverse()).row(component)) *
86  _origin_vec * _bond_status;
87 
88  _kne(0, 0) +=
89  computeDSDU(component, 0)(2, 2) * _node_vol[0] * _dg_vol_frac[0] * _bond_status; // node i
90  _kne(0, 1) +=
91  computeDSDU(component, 1)(2, 2) * _node_vol[1] * _dg_vol_frac[1] * _bond_status; // node j
92  accumulateTaggedLocalMatrix(_assembly, _var.number(), jvar_num, _ken);
93  accumulateTaggedLocalMatrix(_assembly, jvar_num, _var.number(), _kne);
94 }
virtual RankTwoTensor computeDSDU(unsigned int component, unsigned int nd)
Function to compute derivative of stress with respect to displacements for small strain problems...
const MaterialProperty< RankFourTensor > & _Jacobian_mult
static const std::string component
Definition: NS.h:153
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.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")

◆ computeDSDU()

RankTwoTensor MechanicsBaseNOSPD::computeDSDU ( unsigned int  component,
unsigned int  nd 
)
protectedvirtualinherited

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 in MechanicsFiniteStrainBaseNOSPD.

Definition at line 47 of file MechanicsBaseNOSPD.C.

Referenced by computeDispFullOffDiagJacobianScalar(), computeDispPartialOffDiagJacobianScalar(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalJacobian(), WeakPlaneStressNOSPD::computeLocalOffDiagJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), and HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian().

48 {
49  // compute the derivative of stress w.r.t the solution components for small strain
50  RankTwoTensor dSdU;
51  if (component == 0)
52  dSdU = _Jacobian_mult[nd] * 0.5 * (_ddgraddu[nd].transpose() + _ddgraddu[nd]);
53  else if (component == 1)
54  dSdU = _Jacobian_mult[nd] * 0.5 * (_ddgraddv[nd].transpose() + _ddgraddv[nd]);
55  else if (component == 2)
56  dSdU = _Jacobian_mult[nd] * 0.5 * (_ddgraddw[nd].transpose() + _ddgraddw[nd]);
57 
58  return dSdU;
59 }
const MaterialProperty< RankTwoTensor > & _ddgraddu
const MaterialProperty< RankFourTensor > & _Jacobian_mult
static const std::string component
Definition: NS.h:153
const MaterialProperty< RankTwoTensor > & _ddgraddw
const MaterialProperty< RankTwoTensor > & _ddgraddv

◆ computeLocalOffDiagJacobian()

virtual void MechanicsBasePD::computeLocalOffDiagJacobian ( unsigned int  ,
unsigned int   
)
inlinevirtualinherited

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

Parameters
coupled_componentThe coupled variable number

Reimplemented in HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD, HorizonStabilizedFormIISmallStrainMechanicsNOSPD, HorizonStabilizedFormIFiniteStrainMechanicsNOSPD, HorizonStabilizedFormISmallStrainMechanicsNOSPD, MechanicsOSPD, ForceStabilizedSmallStrainMechanicsNOSPD, MechanicsBPD, and WeakPlaneStressNOSPD.

Definition at line 31 of file MechanicsBasePD.h.

Referenced by MechanicsBasePD::computeOffDiagJacobian().

32  {};

◆ computeLocalResidual()

virtual void GeneralizedPlaneStrainOffDiagNOSPD::computeLocalResidual ( )
inlineoverrideprotectedvirtual

Definition at line 26 of file GeneralizedPlaneStrainOffDiagNOSPD.h.

26 {};

◆ 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

◆ computeOffDiagJacobianScalar()

void GeneralizedPlaneStrainOffDiagNOSPD::computeOffDiagJacobianScalar ( unsigned int  jvar_num)
overrideprotectedvirtual

Definition at line 42 of file GeneralizedPlaneStrainOffDiagNOSPD.C.

43 {
45  {
46  prepare();
47 
48  if (_var.number() == _disp_var[0]->number())
49  if (_use_full_jacobian)
51  else
53  else if (_var.number() == _disp_var[1]->number())
54  if (_use_full_jacobian)
56  else
58  else if (_temp_coupled ? _var.number() == _temp_var->number() : 0)
60  }
61 }
const bool _temp_coupled
Temperature variable.
void computeDispFullOffDiagJacobianScalar(unsigned int component, unsigned int jvar_num)
Function to compute the full off diagonal Jacobian for coupling between displacements and scalar vari...
unsigned int number() const
void computeDispPartialOffDiagJacobianScalar(unsigned int component, unsigned int jvar_num)
Function to compute partial off diagonal Jacobian for coupling between displacements and scalar varia...
std::vector< MooseVariable * > _disp_var
displacement variables
virtual void prepare() override
void computeTempOffDiagJacobianScalar(unsigned int jvar_num)
Function to compute off disgonal Jacobian for coupling between temperature and scalar variable...
MooseVariable * _temp_var
const unsigned int _scalar_out_of_plane_strain_var_num
The variable number of the scalar out-of-plane strain variable.

◆ computePDNonlocalOffDiagJacobian()

virtual void MechanicsBasePD::computePDNonlocalOffDiagJacobian ( unsigned int  ,
unsigned int   
)
inlinevirtualinherited

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 in HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD, HorizonStabilizedFormIISmallStrainMechanicsNOSPD, HorizonStabilizedFormIFiniteStrainMechanicsNOSPD, HorizonStabilizedFormISmallStrainMechanicsNOSPD, MechanicsOSPD, ForceStabilizedSmallStrainMechanicsNOSPD, and WeakPlaneStressNOSPD.

Definition at line 39 of file MechanicsBasePD.h.

Referenced by MechanicsBasePD::computeOffDiagJacobian().

40  {};

◆ computeTempOffDiagJacobianScalar()

void GeneralizedPlaneStrainOffDiagNOSPD::computeTempOffDiagJacobianScalar ( unsigned int  jvar_num)
protected

Function to compute off disgonal Jacobian for coupling between temperature and scalar variable.

Parameters
jvar_numThe coupled scalar variable number

Definition at line 182 of file GeneralizedPlaneStrainOffDiagNOSPD.C.

Referenced by computeOffDiagJacobianScalar().

183 {
184  // off-diagonal jacobian entries on the row corresponding to scalar_out_of_plane_strain for
185  // coupling with temperature
186  prepareMatrixTag(_assembly, jvar_num, _var.number(), _kne);
187 
188  // one-way coupling between the scalar_out_of_plane_strain and temperature. fill in the row
189  // corresponding to the scalar_out_of_plane_strain
190  std::vector<RankTwoTensor> dSdT(_nnodes);
191  for (unsigned int nd = 0; nd < _nnodes; ++nd)
192  for (unsigned int es = 0; es < _deigenstrain_dT.size(); ++es)
193  dSdT[nd] = -_Jacobian_mult[nd] * (*_deigenstrain_dT[es])[nd];
194 
195  _kne(0, 0) += dSdT[0](2, 2) * _dg_vol_frac[0] * _node_vol[0] * _bond_status; // node i
196  _kne(0, 1) += dSdT[1](2, 2) * _dg_vol_frac[1] * _node_vol[1] * _bond_status; // node j
197  accumulateTaggedLocalMatrix(_assembly, jvar_num, _var.number(), _kne);
198 }
const MaterialProperty< RankFourTensor > & _Jacobian_mult
std::vector< const MaterialProperty< RankTwoTensor > * > _deigenstrain_dT

◆ 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 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 GeneralizedPlaneStrainOffDiagNOSPD::validParams ( )
static

Definition at line 17 of file GeneralizedPlaneStrainOffDiagNOSPD.C.

18 {
20  params.addClassDescription(
21  "Class for calculating the off-diagonal Jacobian of the coupling between displacements (or "
22  "temperature) with scalar out-of-plane strain for the generalized plane strain using the "
23  "H1NOSPD formulation");
24 
25  params.addCoupledVar("scalar_out_of_plane_strain",
26  "Scalar variable for strain in the out-of-plane direction");
27 
28  return params;
29 }
static InputParameters validParams()
void addCoupledVar(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _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

◆ _disp_var

std::vector<MooseVariable *> MechanicsBasePD::_disp_var
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

◆ _ken

DenseMatrix<Number> GeneralizedPlaneStrainOffDiagNOSPD::_ken
protected

◆ _kne

DenseMatrix<Number> GeneralizedPlaneStrainOffDiagNOSPD::_kne
protected

◆ _multi

const MaterialProperty<Real>& MechanicsBaseNOSPD::_multi
protectedinherited

Material point based material properties.

Definition at line 35 of file MechanicsBaseNOSPD.h.

Referenced by computeDispFullOffDiagJacobianScalar(), computeDispPartialOffDiagJacobianScalar(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalResidual(), ForceStabilizedSmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeNonlocalResidual(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeNonlocalResidual(), ForceStabilizedSmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), and HorizonStabilizedFormIISmallStrainMechanicsNOSPD::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

◆ _scalar_out_of_plane_strain_var_num

const unsigned int GeneralizedPlaneStrainOffDiagNOSPD::_scalar_out_of_plane_strain_var_num
protected

The variable number of the scalar out-of-plane strain variable.

Definition at line 52 of file GeneralizedPlaneStrainOffDiagNOSPD.h.

Referenced by computeOffDiagJacobianScalar().

◆ _shape2

const MaterialProperty<RankTwoTensor>& MechanicsBaseNOSPD::_shape2
protectedinherited

Definition at line 37 of file MechanicsBaseNOSPD.h.

Referenced by computeDispFullOffDiagJacobianScalar(), computeDispPartialOffDiagJacobianScalar(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalOffDiagJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeLocalResidual(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeLocalResidual(), ForceStabilizedSmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeNonlocalJacobian(), HorizonStabilizedFormIISmallStrainMechanicsNOSPD::computeNonlocalResidual(), HorizonStabilizedFormIIFiniteStrainMechanicsNOSPD::computeNonlocalResidual(), WeakPlaneStressNOSPD::computePDNonlocalOffDiagJacobian(), ForceStabilizedSmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), HorizonStabilizedFormISmallStrainMechanicsNOSPD::computePDNonlocalOffDiagJacobian(), HorizonStabilizedFormIFiniteStrainMechanicsNOSPD::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: