www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ADComputeIncrementalShellStrain< compute_stage > Class Template Reference

#include <ADComputeIncrementalShellStrain.h>

Inheritance diagram for ADComputeIncrementalShellStrain< compute_stage >:
[legend]

Public Member Functions

 ADComputeIncrementalShellStrain (const InputParameters &parameters)
 

Protected Member Functions

virtual void initQpStatefulProperties () override
 
virtual void computeProperties () override
 
virtual void computeSolnVector ()
 Computes the 20x1 soln vector and its derivatives for each shell element. More...
 
virtual void computeBMatrix ()
 Computes the B matrix that connects strains to nodal displacements and rotations. More...
 
virtual void computeNodeNormal ()
 Computes the node normal at each node. More...
 
virtual void updateGVectors ()
 Updates the vectors required for shear locking computation for finite rotations. More...
 
virtual void updatedxyz ()
 Updates covariant vectors at each qp for finite rotations. More...
 
virtual void computeGMatrix ()
 Computes the transformation matrix from natural coordinates to local cartesian coordinates for elasticity tensor transformation. More...
 
 ADMaterialProperty (RealVectorValue) &_node_normal
 Material property storing the normal to the element at the 4 nodes. Stored as a material property for convinience. More...
 
template<>
void computeSolnVector ()
 
template<>
void computeSolnVector ()
 

Protected Attributes

unsigned int _nrot
 Number of coupled rotational variables. More...
 
unsigned int _ndisp
 Number of coupled displacement variables. More...
 
std::vector< unsigned int > _rot_num
 Variable numbers corresponding to the rotational variables. More...
 
std::vector< unsigned int > _disp_num
 Variable numbers corresponding to the displacement variables. More...
 
const VariableValue & _thickness
 Coupled variable for the shell thickness. More...
 
const bool _large_strain
 Flag to compute large strains. More...
 
std::vector< ADMaterialProperty(RankTwoTensor) * > _strain_increment
 Strain increment in the covariant coordinate system. More...
 
std::vector< ADMaterialProperty(RankTwoTensor) * > _total_strain
 Total strain increment in the covariant coordinate system. More...
 
std::vector< const MaterialProperty< RankTwoTensor > * > _total_strain_old
 Old total strain increment in the covariant coordinate system. More...
 
NonlinearSystemBase & _nonlinear_sys
 Reference to the nonlinear system object. More...
 
std::vector< std::vector< unsigned int > > _soln_disp_index
 Indices of solution vector corresponding to displacement DOFs in 3 directions at the 4 nodes. More...
 
std::vector< std::vector< unsigned int > > _soln_rot_index
 Indices of solution vector corresponding to rotation DOFs in 2 directions at the 4 nodes. More...
 
ADDenseVector _soln_vector
 Vector that stores the incremental solution at all the 20 DOFs in the 4 noded element. More...
 
ADDenseVector _strain_vector
 Vector that stores the strain in the the 2 axial and 3 shear directions. More...
 
std::vector< const Node * > _nodes
 Vector storing pointers to the nodes of the shell element. More...
 
const MaterialProperty< RealVectorValue > & _node_normal_old
 Material property storing the old normal to the element at the 4 nodes. More...
 
std::unique_ptr< QGauss > _t_qrule
 Quadrature rule in the out of plane direction. More...
 
std::vector< Point > _t_points
 Quadrature points in the out of plane direction in isoparametric coordinate system. More...
 
std::vector< Point > _2d_points
 Quadrature points in the in-plane direction in isoparametric coordinate system. More...
 
std::vector< std::vector< Real > > _dphidxi_map
 Derivatives of shape functions w.r.t isoparametric coordinates xi. More...
 
std::vector< std::vector< Real > > _dphideta_map
 Derivatives of shape functions w.r.t isoparametric coordinates eta. More...
 
std::vector< std::vector< Real > > _phi_map
 Shape function value. More...
 
std::vector< ADMaterialProperty(RealVectorValue) * > _dxyz_dxi
 Derivative of global x, y and z w.r.t isoparametric coordinate xi. More...
 
std::vector< ADMaterialProperty(RealVectorValue) * > _dxyz_deta
 Derivative of global x, y and z w.r.t isoparametric coordinate eta. More...
 
std::vector< ADMaterialProperty(RealVectorValue) * > _dxyz_dzeta
 Derivative of global x, y and z w.r.t isoparametric coordinate zeta. More...
 
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_dxi_old
 Old derivative of global x, y and z w.r.t isoparametric coordinate xi. More...
 
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_deta_old
 Old derivative of global x, y and z w.r.t isoparametric coordinate eta. More...
 
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_dzeta_old
 Old derivative of global x, y and z w.r.t isoparametric coordinate zeta. More...
 
std::vector< ADRealVectorValue > _v1
 First tangential vectors at nodes. More...
 
std::vector< ADRealVectorValue > _v2
 First tangential vectors at nodes. More...
 
std::vector< ADMaterialProperty(DenseMatrix< Real >) * > _B
 B_matrix for small strain. More...
 
std::vector< const MaterialProperty< DenseMatrix< Real > > * > _B_old
 Old B_matrix for small strain. More...
 
std::vector< ADMaterialProperty(RankTwoTensor) * > _ge
 ge matrix for elasticity tensor conversion More...
 
std::vector< const MaterialProperty< RankTwoTensor > * > _ge_old
 Old ge matrix for elasticity tensor conversion. More...
 
std::vector< ADMaterialProperty(Real) * > _J_map
 Material property containing jacobian of transformation. More...
 
std::vector< const MaterialProperty< Real > * > _J_map_old
 Old material property containing jacobian of transformation. More...
 
std::vector< MaterialProperty< RankTwoTensor > * > _rotation_matrix
 Rotation matrix material property. More...
 
std::vector< MaterialProperty< RankTwoTensor > * > _total_global_strain
 Total strain in global coordinate system. More...
 
ADRealVectorValue _x2
 simulation variables More...
 
ADRealVectorValue _x3
 
const NumericVector< Number > *const & _sol
 
const NumericVector< Number > & _sol_old
 
ADRealVectorValue _g3_a
 
ADRealVectorValue _g3_c
 
ADRealVectorValue _g3_b
 
ADRealVectorValue _g3_d
 
ADRealVectorValue _g1_a
 
ADRealVectorValue _g1_c
 
ADRealVectorValue _g2_b
 
ADRealVectorValue _g2_d
 
RankTwoTensor _unrotated_total_strain
 
 usingMaterialMembers
 

Detailed Description

template<ComputeStage compute_stage>
class ADComputeIncrementalShellStrain< compute_stage >

Definition at line 56 of file ADComputeIncrementalShellStrain.h.

Constructor & Destructor Documentation

◆ ADComputeIncrementalShellStrain()

template<ComputeStage compute_stage>
ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain ( const InputParameters &  parameters)

Definition at line 46 of file ADComputeIncrementalShellStrain.C.

48  : ADMaterial<compute_stage>(parameters),
49  _nrot(coupledComponents("rotations")),
50  _ndisp(coupledComponents("displacements")),
51  _rot_num(_nrot),
53  _thickness(coupledValue("thickness")),
54  _large_strain(getParam<bool>("large_strain")),
56  _total_strain(),
58  _nonlinear_sys(_fe_problem.getNonlinearSystemBase()),
60  _soln_rot_index(4),
61  _soln_vector(20, 1),
62  _strain_vector(5, 1),
63  _nodes(4),
64  _node_normal(declareADProperty<RealVectorValue>("node_normal")),
65  _node_normal_old(getMaterialPropertyOldByName<RealVectorValue>("node_normal")),
66  _dxyz_dxi(),
67  _dxyz_deta(),
68  _dxyz_dzeta(),
69  _dxyz_dxi_old(),
72  _v1(4),
73  _v2(4),
74  _B(),
75  _B_old(),
76  _ge(),
77  _ge_old(),
78  _J_map(),
79  _J_map_old(),
82  _sol(_nonlinear_sys.currentSolution()),
83  _sol_old(_nonlinear_sys.solutionOld())
84 {
85  // Checking for consistency between length of the provided displacements and rotations vector
86  if (_ndisp != 3 || _nrot != 2)
87  mooseError(
88  "ADComputeIncrementalShellStrain: The number of variables supplied in 'displacements' "
89  "must be 3 and that in 'rotations' must be 2.");
90 
91  if (_mesh.hasSecondOrderElements())
92  mooseError(
93  "ADComputeIncrementalShellStrain: Shell element is implemented only for linear elements.");
94 
95  // fetch coupled variables and gradients (as stateful properties if necessary)
96  for (unsigned int i = 0; i < _ndisp; ++i)
97  {
98  MooseVariable * disp_variable = getVar("displacements", i);
99  _disp_num[i] = disp_variable->number();
100 
101  if (i < _nrot)
102  {
103  MooseVariable * rot_variable = getVar("rotations", i);
104  _rot_num[i] = rot_variable->number();
105  }
106  }
107 
108  _t_qrule = libmesh_make_unique<QGauss>(
109  1, Utility::string_to_enum<Order>(getParam<std::string>("through_thickness_order")));
110  _t_points = _t_qrule->get_points();
111  _strain_increment.resize(_t_points.size());
112  _total_strain.resize(_t_points.size());
113  _total_strain_old.resize(_t_points.size());
114  _B.resize(_t_points.size());
115  _B_old.resize(_t_points.size());
116  _ge.resize(_t_points.size());
117  _ge_old.resize(_t_points.size());
118  _J_map.resize(_t_points.size());
119  _J_map_old.resize(_t_points.size());
120  _dxyz_dxi.resize(_t_points.size());
121  _dxyz_deta.resize(_t_points.size());
122  _dxyz_dzeta.resize(_t_points.size());
123  _dxyz_dxi_old.resize(_t_points.size());
124  _dxyz_deta_old.resize(_t_points.size());
125  _dxyz_dzeta_old.resize(_t_points.size());
126  _rotation_matrix.resize(_t_points.size());
127  _total_global_strain.resize(_t_points.size());
128  for (unsigned int i = 0; i < _t_points.size(); ++i)
129  {
130  _strain_increment[i] =
131  &declareADProperty<RankTwoTensor>("strain_increment_t_points_" + std::to_string(i));
132  _total_strain[i] =
133  &declareADProperty<RankTwoTensor>("total_strain_t_points_" + std::to_string(i));
134  _total_strain_old[i] =
135  &getMaterialPropertyOldByName<RankTwoTensor>("total_strain_t_points_" + std::to_string(i));
136  _B[i] = &declareADProperty<DenseMatrix<Real>>("B_t_points_" + std::to_string(i));
137  _B_old[i] = &getMaterialPropertyOldByName<DenseMatrix<Real>>("B_t_points_" + std::to_string(i));
138  _ge[i] = &declareADProperty<RankTwoTensor>("ge_t_points_" + std::to_string(i));
139  _ge_old[i] = &getMaterialPropertyOldByName<RankTwoTensor>("ge_t_points_" + std::to_string(i));
140  _J_map[i] = &declareADProperty<Real>("J_mapping_t_points_" + std::to_string(i));
141  _J_map_old[i] = &getMaterialPropertyOldByName<Real>("J_mapping_t_points_" + std::to_string(i));
142  _dxyz_dxi[i] = &declareADProperty<RealVectorValue>("dxyz_dxi_t_points_" + std::to_string(i));
143  _dxyz_dxi_old[i] =
144  &getMaterialPropertyOldByName<RealVectorValue>("dxyz_dxi_t_points_" + std::to_string(i));
145  _dxyz_deta[i] = &declareADProperty<RealVectorValue>("dxyz_deta_t_points_" + std::to_string(i));
146  _dxyz_deta_old[i] =
147  &getMaterialPropertyOldByName<RealVectorValue>("dxyz_deta_t_points_" + std::to_string(i));
148  _dxyz_dzeta[i] =
149  &declareADProperty<RealVectorValue>("dxyz_dzeta_t_points_" + std::to_string(i));
150  _dxyz_dzeta_old[i] =
151  &getMaterialPropertyOldByName<RealVectorValue>("dxyz_dzeta_t_points_" + std::to_string(i));
152  // Create rotation matrix and total strain global for output purposes only
153  _rotation_matrix[i] = &declareProperty<RankTwoTensor>("rotation_t_points_" + std::to_string(i));
155  &declareProperty<RankTwoTensor>("total_global_strain_t_points_" + std::to_string(i));
156  }
157 
158  // used later for computing local coordinate system
159  _x2(1) = 1;
160  _x3(2) = 1;
161 }

Member Function Documentation

◆ ADMaterialProperty()

template<ComputeStage compute_stage>
ADComputeIncrementalShellStrain< compute_stage >::ADMaterialProperty ( RealVectorValue  ) &
protected

Material property storing the normal to the element at the 4 nodes. Stored as a material property for convinience.

◆ computeBMatrix()

template<ComputeStage compute_stage>
void ADComputeIncrementalShellStrain< compute_stage >::computeBMatrix ( )
protectedvirtual

Computes the B matrix that connects strains to nodal displacements and rotations.

Definition at line 391 of file ADComputeIncrementalShellStrain.C.

392 {
393  // compute nodal local axis
394  for (unsigned int k = 0; k < _nodes.size(); ++k)
395  {
396  _v1[k] = _x2.cross(_node_normal[k]);
397  _v1[k] /= _x2.norm() * _node_normal[k].norm();
398 
399  // If x2 is parallel to node normal, set V1 to x3
400  if (MooseUtils::absoluteFuzzyEqual(_v1[k].norm(), 0.0, 1e-6))
401  _v1[k] = _x3;
402 
403  _v2[k] = _node_normal[k].cross(_v1[k]);
404  }
405 
406  // compute B matrix rows correspond to [ux1, ux2, ux3, ux4, uy1, uy2, uy3, uy4, uz1, uz2, uz3,
407  // uz4, a1, a2, a3, a4, b1, b2, b3, b4]
408  for (unsigned int i = 0; i < _2d_points.size(); ++i)
409  {
410  for (unsigned int j = 0; j < _t_points.size(); ++j)
411  {
412  (*_B[j])[i].resize(5, 20);
413  (*_B[j])[i].zero();
414  for (unsigned int k = 0; k < _nodes.size(); ++k)
415  {
416  // corresponding to strain(0,0)
417  (*_B[j])[i](0, k) += _dphidxi_map[k][i] * (*_dxyz_dxi[j])[i](0);
418  (*_B[j])[i](0, 4 + k) = _dphidxi_map[k][i] * (*_dxyz_dxi[j])[i](1);
419  (*_B[j])[i](0, 8 + k) = _dphidxi_map[k][i] * (*_dxyz_dxi[j])[i](2);
420  (*_B[j])[i](0, 12 + k) = _dphidxi_map[k][i] * _t_points[j](0) / 2.0 * _thickness[i] *
421  (-_v2[k] * (*_dxyz_dxi[j])[i]);
422  (*_B[j])[i](0, 16 + k) = _dphidxi_map[k][i] * _t_points[j](0) / 2.0 * _thickness[i] *
423  (_v1[k] * (*_dxyz_dxi[j])[i]);
424 
425  // corresponding to strain(1,1)
426  (*_B[j])[i](1, k) = _dphideta_map[k][i] * (*_dxyz_deta[j])[i](0);
427  (*_B[j])[i](1, 4 + k) = _dphideta_map[k][i] * (*_dxyz_deta[j])[i](1);
428  (*_B[j])[i](1, 8 + k) = _dphideta_map[k][i] * (*_dxyz_deta[j])[i](2);
429  (*_B[j])[i](1, 12 + k) = _dphideta_map[k][i] * _t_points[j](0) / 2.0 * _thickness[i] *
430  (-_v2[k] * (*_dxyz_deta[j])[i]);
431  (*_B[j])[i](1, 16 + k) = _dphideta_map[k][i] * _t_points[j](0) / 2.0 * _thickness[i] *
432  (_v1[k] * (*_dxyz_deta[j])[i]);
433 
434  // corresponding to strain(2,2) = 0
435 
436  // corresponding to strain(0,1)
437  (*_B[j])[i](2, k) = 0.5 * (_dphideta_map[k][i] * (*_dxyz_dxi[j])[i](0) +
438  _dphidxi_map[k][i] * (*_dxyz_deta[j])[i](0));
439  (*_B[j])[i](2, 4 + k) = 0.5 * (_dphideta_map[k][i] * (*_dxyz_dxi[j])[i](1) +
440  _dphidxi_map[k][i] * (*_dxyz_deta[j])[i](1));
441  (*_B[j])[i](2, 8 + k) = 0.5 * (_dphideta_map[k][i] * (*_dxyz_dxi[j])[i](2) +
442  _dphidxi_map[k][i] * (*_dxyz_deta[j])[i](2));
443  (*_B[j])[i](2, 12 + k) =
444  0.25 * _t_points[j](0) * _thickness[i] * -_v2[k] *
445  (_dphideta_map[k][i] * (*_dxyz_dxi[j])[i] + _dphidxi_map[k][i] * (*_dxyz_deta[j])[i]);
446  (*_B[j])[i](2, 16 + k) =
447  0.25 * _t_points[j](0) * _thickness[i] * _v1[k] *
448  ((*_dxyz_deta[j])[i] * _dphidxi_map[k][i] + (*_dxyz_dxi[j])[i] * _dphideta_map[k][i]);
449  }
450 
451  _g3_a = _thickness[i] / 4.0 * (_node_normal[2] + _node_normal[3]);
452  _g3_c = _thickness[i] / 4.0 * (_node_normal[0] + _node_normal[1]);
453  _g3_b = _thickness[i] / 4.0 * (_node_normal[0] + _node_normal[3]);
454  _g3_d = _thickness[i] / 4.0 * (_node_normal[1] + _node_normal[2]);
455 
456  _g1_a = 0.5 * ((*_nodes[2]) - (*_nodes[3])) +
457  _t_points[j](0) / 4.0 * _thickness[i] * (_node_normal[2] - _node_normal[3]);
458  _g1_c = 0.5 * ((*_nodes[1]) - (*_nodes[0])) +
459  _t_points[j](0) / 4.0 * _thickness[i] * (_node_normal[1] - _node_normal[0]);
460  _g2_b = 0.5 * ((*_nodes[3]) - (*_nodes[0])) +
461  _t_points[j](0) / 4.0 * _thickness[i] * (_node_normal[3] - _node_normal[0]);
462  _g2_d = 0.5 * ((*_nodes[2]) - (*_nodes[1])) +
463  _t_points[j](0) / 4.0 * _thickness[i] * (_node_normal[2] - _node_normal[1]);
464 
465  updateGVectors(); // for large strain problems
466 
467  // corresponding to strain(0,2)
468  for (unsigned int component = 0; component < 3; component++)
469  {
470  (*_B[j])[i](3, 2 + component * 4) = 0.125 * (1.0 + _2d_points[i](1)) * _g3_a(component);
471  (*_B[j])[i](3, 3 + component * 4) = 0.125 * (1.0 + _2d_points[i](1)) * -_g3_a(component);
472  (*_B[j])[i](3, 1 + component * 4) = 0.125 * (1.0 - _2d_points[i](1)) * _g3_c(component);
473  (*_B[j])[i](3, component * 4) = 0.125 * (1.0 - _2d_points[i](1)) * -_g3_c(component);
474  }
475  (*_B[j])[i](3, 14) = 0.125 * (1.0 + _2d_points[i](1)) * 0.5 * _thickness[i] * _g1_a * -_v2[2];
476  (*_B[j])[i](3, 18) = 0.125 * (1.0 + _2d_points[i](1)) * 0.5 * _thickness[i] * _g1_a * _v1[2];
477  (*_B[j])[i](3, 15) = 0.125 * (1.0 + _2d_points[i](1)) * 0.5 * _thickness[i] * _g1_a * -_v2[3];
478  (*_B[j])[i](3, 19) = 0.125 * (1.0 + _2d_points[i](1)) * 0.5 * _thickness[i] * _g1_a * _v1[3];
479 
480  (*_B[j])[i](3, 13) = 0.125 * (1.0 - _2d_points[i](1)) * 0.5 * _thickness[i] * _g1_c * -_v2[1];
481  (*_B[j])[i](3, 17) = 0.125 * (1.0 - _2d_points[i](1)) * 0.5 * _thickness[i] * _g1_c * _v1[1];
482  (*_B[j])[i](3, 12) = 0.125 * (1.0 - _2d_points[i](1)) * 0.5 * _thickness[i] * _g1_c * -_v2[0];
483  (*_B[j])[i](3, 16) = 0.125 * (1.0 - _2d_points[i](1)) * 0.5 * _thickness[i] * _g1_c * _v1[0];
484 
485  // corresponding to strain(1,2)
486  for (unsigned int component = 0; component < 3; component++)
487  {
488  (*_B[j])[i](4, 2 + component * 4) = 0.125 * (1.0 + _2d_points[i](0)) * _g3_d(component);
489  (*_B[j])[i](4, 1 + component * 4) = 0.125 * (1.0 + _2d_points[i](0)) * -_g3_d(component);
490  (*_B[j])[i](4, 3 + component * 4) = 0.125 * (1.0 - _2d_points[i](0)) * _g3_b(component);
491  (*_B[j])[i](4, component * 4) = 0.125 * (1.0 - _2d_points[i](0)) * -_g3_b(component);
492  }
493  (*_B[j])[i](4, 14) = 0.125 * (1.0 + _2d_points[i](0)) * 0.5 * _thickness[i] * _g2_d * -_v2[2];
494  (*_B[j])[i](4, 18) = 0.125 * (1.0 + _2d_points[i](0)) * 0.5 * _thickness[i] * _g2_d * _v1[2];
495  (*_B[j])[i](4, 13) = 0.125 * (1.0 + _2d_points[i](0)) * 0.5 * _thickness[i] * _g2_d * -_v2[1];
496  (*_B[j])[i](4, 17) = 0.125 * (1.0 + _2d_points[i](0)) * 0.5 * _thickness[i] * _g2_d * _v1[1];
497 
498  (*_B[j])[i](4, 15) = 0.125 * (1.0 - _2d_points[i](0)) * 0.5 * _thickness[i] * _g2_b * -_v2[3];
499  (*_B[j])[i](4, 19) = 0.125 * (1.0 - _2d_points[i](0)) * 0.5 * _thickness[i] * _g2_b * _v1[3];
500  (*_B[j])[i](4, 12) = 0.125 * (1.0 - _2d_points[i](0)) * 0.5 * _thickness[i] * _g2_b * -_v2[0];
501  (*_B[j])[i](4, 16) = 0.125 * (1.0 - _2d_points[i](0)) * 0.5 * _thickness[i] * _g2_b * _v1[0];
502  }
503  }
504 }

◆ computeGMatrix()

template<ComputeStage compute_stage>
void ADComputeIncrementalShellStrain< compute_stage >::computeGMatrix ( )
protectedvirtual

Computes the transformation matrix from natural coordinates to local cartesian coordinates for elasticity tensor transformation.

Definition at line 248 of file ADComputeIncrementalShellStrain.C.

249 {
250  // quadrature points in isoparametric space
251  _2d_points = _qrule->get_points(); // would be in 2D
252 
253  unsigned int dim = _current_elem->dim();
254 
255  // derivatives of shape functions (dphidxi, dphideta and dphidzeta) evaluated at quadrature points
256  // (in isoparametric space).
257  FEType fe_type(Utility::string_to_enum<Order>("First"),
258  Utility::string_to_enum<FEFamily>("LAGRANGE"));
259  auto & fe = _fe_problem.assembly(_tid).getFE(fe_type, dim);
260  _dphidxi_map = fe->get_fe_map().get_dphidxi_map();
261  _dphideta_map = fe->get_fe_map().get_dphideta_map();
262  _phi_map = fe->get_fe_map().get_phi_map();
263 
264  for (unsigned int i = 0; i < 4; ++i)
265  _nodes[i] = _current_elem->node_ptr(i);
266 
267  ADRealVectorValue x = (*_nodes[1] - *_nodes[0]);
268  ADRealVectorValue y = (*_nodes[3] - *_nodes[0]);
269  ADRealVectorValue normal = x.cross(y);
270  normal /= normal.norm();
271 
272  for (unsigned int k = 0; k < 4; ++k)
273  _node_normal[k] = normal;
274 
275  ADRankTwoTensor a;
276  ADDenseMatrix b(5, 20);
277  ADRealVectorValue c;
278  RankTwoTensor d;
279  for (unsigned int t = 0; t < _t_points.size(); ++t)
280  {
281  (*_strain_increment[t])[_qp] = a;
282  (*_total_strain[t])[_qp] = a;
283  (*_B[t])[_qp] = b;
284  (*_ge[t])[_qp] = a;
285  (*_J_map[t])[_qp] = 0;
286  (*_dxyz_dxi[t])[_qp] = c;
287  (*_dxyz_deta[t])[_qp] = c;
288  (*_dxyz_dzeta[t])[_qp] = c;
289  (*_rotation_matrix[t])[_qp] = d;
290  }
291 
292  // calculating derivatives of shape function in physical space (dphi/dx, dphi/dy, dphi/dz) at
293  // quadrature points these are g_{i} in Dvorkin's paper
294  for (unsigned int i = 0; i < _2d_points.size(); ++i)
295  {
296  for (unsigned int j = 0; j < _t_points.size(); ++j)
297  {
298  (*_dxyz_dxi[j])[i].zero();
299  for (unsigned int component = 0; component < 3; ++component)
300  {
301  (*_dxyz_dxi[j])[i](component) = 0.0;
302  (*_dxyz_deta[j])[i](component) = 0.0;
303  (*_dxyz_dzeta[j])[i](component) = 0.0;
304 
305  for (unsigned int k = 0; k < _nodes.size(); ++k)
306  {
307  (*_dxyz_dxi[j])[i](component) += _dphidxi_map[k][i] * ((*_nodes[k])(component)) +
308  _t_points[j](0) / 2.0 * _thickness[i] *
309  _dphidxi_map[k][i] * _node_normal[k](component);
310  (*_dxyz_deta[j])[i](component) += _dphideta_map[k][i] * ((*_nodes[k])(component)) +
311  _t_points[j](0) / 2.0 * _thickness[i] *
312  _dphideta_map[k][i] * _node_normal[k](component);
313  (*_dxyz_dzeta[j])[i](component) +=
314  _thickness[i] * _phi_map[k][i] * _node_normal[k](component) / 2.0;
315  }
316  }
317  }
318  }
319 
320  for (unsigned int i = 0; i < _2d_points.size(); ++i)
321  {
322  for (unsigned int j = 0; j < _t_points.size(); ++j)
323  {
324  // calculate gij for elasticity tensor
325  ADRankTwoTensor gmn;
326  RankTwoTensor J;
327  for (unsigned int component = 0; component < 3; ++component)
328  {
329  gmn(0, 0) += (*_dxyz_dxi[j])[i](component) * (*_dxyz_dxi[j])[i](component);
330  gmn(1, 1) += (*_dxyz_deta[j])[i](component) * (*_dxyz_deta[j])[i](component);
331  gmn(2, 2) += (*_dxyz_dzeta[j])[i](component) * (*_dxyz_dzeta[j])[i](component);
332  gmn(0, 1) += (*_dxyz_dxi[j])[i](component) * (*_dxyz_deta[j])[i](component);
333  gmn(0, 2) += (*_dxyz_dxi[j])[i](component) * (*_dxyz_dzeta[j])[i](component);
334  gmn(1, 2) += (*_dxyz_deta[j])[i](component) * (*_dxyz_dzeta[j])[i](component);
335 
336  J(0, component) = MetaPhysicL::raw_value((*_dxyz_dxi[j])[i](component));
337  J(1, component) = MetaPhysicL::raw_value((*_dxyz_deta[j])[i](component));
338  J(2, component) = MetaPhysicL::raw_value((*_dxyz_dzeta[j])[i](component));
339  }
340  gmn(1, 0) = gmn(0, 1);
341  gmn(2, 0) = gmn(0, 2);
342  gmn(2, 1) = gmn(1, 2);
343 
344  ADRankTwoTensor gmninv_temp = gmn.inverse();
345  (*_J_map[j])[i] = std::sqrt(gmn.det());
346  (*_rotation_matrix[j])[i] = J;
347 
348  // calculate ge
349  ADRealVectorValue e3 = (*_dxyz_dzeta[j])[i] / (*_dxyz_dzeta[j])[i].norm();
350  ADRealVectorValue e1 = (*_dxyz_deta[j])[i].cross(e3);
351  e1 /= e1.norm();
352  ADRealVectorValue e2 = e3.cross(e1);
353  e2 /= e2.norm();
354 
355  ADRankTwoTensor local_rotation_mat;
356  local_rotation_mat(0, 0) = e1(0);
357  local_rotation_mat(0, 1) = e1(1);
358  local_rotation_mat(0, 2) = e1(2);
359  local_rotation_mat(1, 0) = e2(0);
360  local_rotation_mat(1, 1) = e2(1);
361  local_rotation_mat(1, 2) = e2(2);
362  local_rotation_mat(2, 0) = e3(0);
363  local_rotation_mat(2, 1) = e3(1);
364  local_rotation_mat(2, 2) = e3(2);
365 
366  ADRankTwoTensor gmninv = local_rotation_mat.transpose() * gmninv_temp * local_rotation_mat;
367 
368  (*_ge[j])[i](0, 0) = (gmninv * (*_dxyz_dxi[j])[i]) * e1;
369  (*_ge[j])[i](0, 1) = (gmninv * (*_dxyz_dxi[j])[i]) * e2;
370  (*_ge[j])[i](0, 2) = (gmninv * (*_dxyz_dxi[j])[i]) * e3;
371  (*_ge[j])[i](1, 0) = (gmninv * (*_dxyz_deta[j])[i]) * e1;
372  (*_ge[j])[i](1, 1) = (gmninv * (*_dxyz_deta[j])[i]) * e2;
373  (*_ge[j])[i](1, 2) = (gmninv * (*_dxyz_deta[j])[i]) * e3;
374  (*_ge[j])[i](2, 0) = (gmninv * (*_dxyz_dzeta[j])[i]) * e1;
375  (*_ge[j])[i](2, 1) = (gmninv * (*_dxyz_dzeta[j])[i]) * e2;
376  (*_ge[j])[i](2, 2) = (gmninv * (*_dxyz_dzeta[j])[i]) * e3;
377  }
378  }
379 }

◆ computeNodeNormal()

template<ComputeStage compute_stage>
void ADComputeIncrementalShellStrain< compute_stage >::computeNodeNormal ( )
protectedvirtual

Computes the node normal at each node.

Reimplemented in ADComputeFiniteShellStrain< compute_stage >.

Definition at line 383 of file ADComputeIncrementalShellStrain.C.

384 {
385  for (unsigned int k = 0; k < _nodes.size(); ++k)
386  _node_normal[k] = _node_normal_old[k];
387 }

◆ computeProperties()

template<ComputeStage compute_stage>
void ADComputeIncrementalShellStrain< compute_stage >::computeProperties ( )
overrideprotectedvirtual

Reimplemented in ADComputeFiniteShellStrain< compute_stage >.

Definition at line 179 of file ADComputeIncrementalShellStrain.C.

180 {
181  // quadrature points in isoparametric space
182  _2d_points = _qrule->get_points(); // would be in 2D
183 
184  // derivatives of shape functions (dphidxi, dphideta and dphidzeta) evaluated at quadrature points
185  // (in isoparametric space).
186  unsigned int dim = _current_elem->dim();
187  FEType fe_type(Utility::string_to_enum<Order>("First"),
188  Utility::string_to_enum<FEFamily>("LAGRANGE"));
189  auto & fe = _fe_problem.assembly(_tid).getFE(fe_type, dim);
190  _dphidxi_map = fe->get_fe_map().get_dphidxi_map();
191  _dphideta_map = fe->get_fe_map().get_dphideta_map();
192  _phi_map = fe->get_fe_map().get_phi_map();
193 
194  for (unsigned int i = 0; i < 4; ++i)
195  _nodes[i] = _current_elem->node_ptr(i);
196 
197  for (unsigned int i = 0; i < _2d_points.size(); ++i)
198  {
199  for (unsigned int j = 0; j < _t_points.size(); ++j)
200  {
201  (*_ge[j])[i] = (*_ge_old[j])[i];
202  (*_J_map[j])[i] = (*_J_map_old[j])[i];
203  (*_dxyz_dxi[j])[i] = (*_dxyz_dxi_old[j])[i];
204  (*_dxyz_deta[j])[i] = (*_dxyz_deta_old[j])[i];
205  (*_dxyz_dzeta[j])[i] = (*_dxyz_dzeta_old[j])[i];
206  (*_B[j])[i] = (*_B_old[j])[i];
207  }
208  }
209 
211 
213 
214  for (unsigned int i = 0; i < _2d_points.size(); ++i)
215  {
216  for (unsigned int j = 0; j < _t_points.size(); ++j)
217  {
218  // compute strain increment in covariant coordinate system using B and _soln_vector
219  for (unsigned int temp1 = 0; temp1 < 5; ++temp1)
220  {
221  _strain_vector(temp1) = 0.0;
222  for (unsigned int temp2 = 0; temp2 < 20; ++temp2)
223  _strain_vector(temp1) += (*_B[j])[i](temp1, temp2) * _soln_vector(temp2);
224  }
225  (*_strain_increment[j])[i](0, 0) = _strain_vector(0);
226  (*_strain_increment[j])[i](1, 1) = _strain_vector(1);
227  (*_strain_increment[j])[i](0, 1) = _strain_vector(2);
228  (*_strain_increment[j])[i](0, 2) = _strain_vector(3);
229  (*_strain_increment[j])[i](1, 2) = _strain_vector(4);
230  (*_strain_increment[j])[i](1, 0) = (*_strain_increment[j])[i](0, 1);
231  (*_strain_increment[j])[i](2, 0) = (*_strain_increment[j])[i](0, 2);
232  (*_strain_increment[j])[i](2, 1) = (*_strain_increment[j])[i](1, 2);
233 
234  (*_total_strain[j])[i] = (*_total_strain_old[j])[i] + (*_strain_increment[j])[i];
235 
236  for (unsigned int ii = 0; ii < 3; ++ii)
237  for (unsigned int jj = 0; jj < 3; ++jj)
238  _unrotated_total_strain(ii, jj) = MetaPhysicL::raw_value((*_total_strain[j])[i](ii, jj));
239  (*_total_global_strain[j])[i] = (*_rotation_matrix[j])[i].transpose() *
241  }
242  }
243  copyDualNumbersToValues();
244 }

◆ computeSolnVector() [1/3]

template<ComputeStage compute_stage>
virtual void ADComputeIncrementalShellStrain< compute_stage >::computeSolnVector ( )
protectedvirtual

Computes the 20x1 soln vector and its derivatives for each shell element.

◆ computeSolnVector() [2/3]

template<>
void ADComputeIncrementalShellStrain< RESIDUAL >::computeSolnVector ( )
protected

Definition at line 508 of file ADComputeIncrementalShellStrain.C.

509 {
510  _soln_vector.zero();
511 
512  for (unsigned int j = 0; j < 4; ++j)
513  {
514  _soln_disp_index[j].resize(_ndisp);
515  _soln_rot_index[j].resize(_nrot);
516 
517  for (unsigned int i = 0; i < _ndisp; ++i)
518  {
519  _soln_disp_index[j][i] = _nodes[j]->dof_number(_nonlinear_sys.number(), _disp_num[i], 0);
520  _soln_vector(j + i * _nodes.size()) =
521  (*_sol)(_soln_disp_index[j][i]) - _sol_old(_soln_disp_index[j][i]);
522  }
523 
524  for (unsigned int i = 0; i < _nrot; ++i)
525  {
526  _soln_rot_index[j][i] = _nodes[j]->dof_number(_nonlinear_sys.number(), _rot_num[i], 0);
527  _soln_vector(j + 12 + i * _nodes.size()) =
528  (*_sol)(_soln_rot_index[j][i]) - _sol_old(_soln_rot_index[j][i]);
529  }
530  }
531 }

◆ computeSolnVector() [3/3]

template<>
void ADComputeIncrementalShellStrain< JACOBIAN >::computeSolnVector ( )
protected

Definition at line 535 of file ADComputeIncrementalShellStrain.C.

536 {
537  _soln_vector.zero();
538 
539  for (unsigned int j = 0; j < 4; ++j)
540  {
541  _soln_disp_index[j].resize(_ndisp);
542  _soln_rot_index[j].resize(_nrot);
543 
544  for (unsigned int i = 0; i < _ndisp; ++i)
545  {
546  size_t ad_offset = _disp_num[i] * _nonlinear_sys.getMaxVarNDofsPerElem();
547  _soln_disp_index[j][i] = _nodes[j]->dof_number(_nonlinear_sys.number(), _disp_num[i], 0);
548  _soln_vector(j + i * _nodes.size()) =
549  (*_sol)(_soln_disp_index[j][i]) - _sol_old(_soln_disp_index[j][i]);
550  Moose::derivInsert(_soln_vector(j + i * _nodes.size()).derivatives(), ad_offset + j, 1.);
551  }
552 
553  for (unsigned int i = 0; i < _nrot; ++i)
554  {
555  size_t ad_offset = _rot_num[i] * _nonlinear_sys.getMaxVarNDofsPerElem();
556  _soln_rot_index[j][i] = _nodes[j]->dof_number(_nonlinear_sys.number(), _rot_num[i], 0);
557  _soln_vector(j + 12 + i * _nodes.size()) =
558  (*_sol)(_soln_rot_index[j][i]) - _sol_old(_soln_rot_index[j][i]);
559  Moose::derivInsert(_soln_vector(j + 12 + i * _nodes.size()).derivatives(), ad_offset + j, 1.);
560  }
561  }
562 }

◆ initQpStatefulProperties()

template<ComputeStage compute_stage>
void ADComputeIncrementalShellStrain< compute_stage >::initQpStatefulProperties ( )
overrideprotectedvirtual

Reimplemented in ADComputeFiniteShellStrain< compute_stage >.

Definition at line 165 of file ADComputeIncrementalShellStrain.C.

166 {
167  unsigned int dim = _current_elem->dim();
168  if ((dim != 2))
169  mooseError(
170  "ADComputeIncrementalShellStrain: Shell element is implemented only for 2D elements");
171  if (_current_elem->n_nodes() != 4)
172  mooseError("ADComputeIncrementalShellStrain: Shell element needs to have exactly four nodes.");
173  computeGMatrix();
174  computeBMatrix();
175 }

◆ updatedxyz()

template<ComputeStage compute_stage>
virtual void ADComputeIncrementalShellStrain< compute_stage >::updatedxyz ( )
inlineprotectedvirtual

Updates covariant vectors at each qp for finite rotations.

Reimplemented in ADComputeFiniteShellStrain< compute_stage >.

Definition at line 93 of file ADComputeIncrementalShellStrain.h.

93 {};

◆ updateGVectors()

template<ComputeStage compute_stage>
virtual void ADComputeIncrementalShellStrain< compute_stage >::updateGVectors ( )
inlineprotectedvirtual

Updates the vectors required for shear locking computation for finite rotations.

Reimplemented in ADComputeFiniteShellStrain< compute_stage >.

Definition at line 90 of file ADComputeIncrementalShellStrain.h.

90 {};

Member Data Documentation

◆ _2d_points

template<ComputeStage compute_stage>
std::vector<Point> ADComputeIncrementalShellStrain< compute_stage >::_2d_points
protected

Quadrature points in the in-plane direction in isoparametric coordinate system.

Definition at line 156 of file ADComputeIncrementalShellStrain.h.

◆ _B

template<ComputeStage compute_stage>
std::vector<ADMaterialProperty(DenseMatrix<Real>) *> ADComputeIncrementalShellStrain< compute_stage >::_B
protected

◆ _B_old

template<ComputeStage compute_stage>
std::vector<const MaterialProperty<DenseMatrix<Real> > *> ADComputeIncrementalShellStrain< compute_stage >::_B_old
protected

◆ _disp_num

template<ComputeStage compute_stage>
std::vector<unsigned int> ADComputeIncrementalShellStrain< compute_stage >::_disp_num
protected

Variable numbers corresponding to the displacement variables.

Definition at line 108 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _dphideta_map

template<ComputeStage compute_stage>
std::vector<std::vector<Real> > ADComputeIncrementalShellStrain< compute_stage >::_dphideta_map
protected

Derivatives of shape functions w.r.t isoparametric coordinates eta.

Definition at line 162 of file ADComputeIncrementalShellStrain.h.

◆ _dphidxi_map

template<ComputeStage compute_stage>
std::vector<std::vector<Real> > ADComputeIncrementalShellStrain< compute_stage >::_dphidxi_map
protected

Derivatives of shape functions w.r.t isoparametric coordinates xi.

Definition at line 159 of file ADComputeIncrementalShellStrain.h.

◆ _dxyz_deta

template<ComputeStage compute_stage>
std::vector<ADMaterialProperty(RealVectorValue) *> ADComputeIncrementalShellStrain< compute_stage >::_dxyz_deta
protected

Derivative of global x, y and z w.r.t isoparametric coordinate eta.

Definition at line 171 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _dxyz_deta_old

template<ComputeStage compute_stage>
std::vector<const MaterialProperty<RealVectorValue> *> ADComputeIncrementalShellStrain< compute_stage >::_dxyz_deta_old
protected

Old derivative of global x, y and z w.r.t isoparametric coordinate eta.

Definition at line 180 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _dxyz_dxi

template<ComputeStage compute_stage>
std::vector<ADMaterialProperty(RealVectorValue) *> ADComputeIncrementalShellStrain< compute_stage >::_dxyz_dxi
protected

Derivative of global x, y and z w.r.t isoparametric coordinate xi.

Definition at line 168 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _dxyz_dxi_old

template<ComputeStage compute_stage>
std::vector<const MaterialProperty<RealVectorValue> *> ADComputeIncrementalShellStrain< compute_stage >::_dxyz_dxi_old
protected

Old derivative of global x, y and z w.r.t isoparametric coordinate xi.

Definition at line 177 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _dxyz_dzeta

template<ComputeStage compute_stage>
std::vector<ADMaterialProperty(RealVectorValue) *> ADComputeIncrementalShellStrain< compute_stage >::_dxyz_dzeta
protected

Derivative of global x, y and z w.r.t isoparametric coordinate zeta.

Definition at line 174 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _dxyz_dzeta_old

template<ComputeStage compute_stage>
std::vector<const MaterialProperty<RealVectorValue> *> ADComputeIncrementalShellStrain< compute_stage >::_dxyz_dzeta_old
protected

Old derivative of global x, y and z w.r.t isoparametric coordinate zeta.

Definition at line 183 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _g1_a

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_g1_a
protected

Definition at line 224 of file ADComputeIncrementalShellStrain.h.

◆ _g1_c

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_g1_c
protected

Definition at line 225 of file ADComputeIncrementalShellStrain.h.

◆ _g2_b

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_g2_b
protected

Definition at line 226 of file ADComputeIncrementalShellStrain.h.

◆ _g2_d

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_g2_d
protected

Definition at line 227 of file ADComputeIncrementalShellStrain.h.

◆ _g3_a

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_g3_a
protected

Definition at line 220 of file ADComputeIncrementalShellStrain.h.

◆ _g3_b

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_g3_b
protected

Definition at line 222 of file ADComputeIncrementalShellStrain.h.

◆ _g3_c

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_g3_c
protected

Definition at line 221 of file ADComputeIncrementalShellStrain.h.

◆ _g3_d

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_g3_d
protected

Definition at line 223 of file ADComputeIncrementalShellStrain.h.

◆ _ge

template<ComputeStage compute_stage>
std::vector<ADMaterialProperty(RankTwoTensor) *> ADComputeIncrementalShellStrain< compute_stage >::_ge
protected

ge matrix for elasticity tensor conversion

Definition at line 198 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _ge_old

template<ComputeStage compute_stage>
std::vector<const MaterialProperty<RankTwoTensor> *> ADComputeIncrementalShellStrain< compute_stage >::_ge_old
protected

Old ge matrix for elasticity tensor conversion.

Definition at line 201 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _J_map

template<ComputeStage compute_stage>
std::vector<ADMaterialProperty(Real) *> ADComputeIncrementalShellStrain< compute_stage >::_J_map
protected

Material property containing jacobian of transformation.

Definition at line 204 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _J_map_old

template<ComputeStage compute_stage>
std::vector<const MaterialProperty<Real> *> ADComputeIncrementalShellStrain< compute_stage >::_J_map_old
protected

Old material property containing jacobian of transformation.

Definition at line 207 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _large_strain

template<ComputeStage compute_stage>
const bool ADComputeIncrementalShellStrain< compute_stage >::_large_strain
protected

Flag to compute large strains.

Definition at line 114 of file ADComputeIncrementalShellStrain.h.

◆ _ndisp

template<ComputeStage compute_stage>
unsigned int ADComputeIncrementalShellStrain< compute_stage >::_ndisp
protected

Number of coupled displacement variables.

Definition at line 102 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _node_normal_old

template<ComputeStage compute_stage>
const MaterialProperty<RealVectorValue>& ADComputeIncrementalShellStrain< compute_stage >::_node_normal_old
protected

Material property storing the old normal to the element at the 4 nodes.

Definition at line 147 of file ADComputeIncrementalShellStrain.h.

◆ _nodes

template<ComputeStage compute_stage>
std::vector<const Node *> ADComputeIncrementalShellStrain< compute_stage >::_nodes
protected

Vector storing pointers to the nodes of the shell element.

Definition at line 141 of file ADComputeIncrementalShellStrain.h.

◆ _nonlinear_sys

template<ComputeStage compute_stage>
NonlinearSystemBase& ADComputeIncrementalShellStrain< compute_stage >::_nonlinear_sys
protected

Reference to the nonlinear system object.

Definition at line 126 of file ADComputeIncrementalShellStrain.h.

◆ _nrot

template<ComputeStage compute_stage>
unsigned int ADComputeIncrementalShellStrain< compute_stage >::_nrot
protected

Number of coupled rotational variables.

Definition at line 99 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _phi_map

template<ComputeStage compute_stage>
std::vector<std::vector<Real> > ADComputeIncrementalShellStrain< compute_stage >::_phi_map
protected

Shape function value.

Definition at line 165 of file ADComputeIncrementalShellStrain.h.

◆ _rot_num

template<ComputeStage compute_stage>
std::vector<unsigned int> ADComputeIncrementalShellStrain< compute_stage >::_rot_num
protected

Variable numbers corresponding to the rotational variables.

Definition at line 105 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _rotation_matrix

template<ComputeStage compute_stage>
std::vector<MaterialProperty<RankTwoTensor> *> ADComputeIncrementalShellStrain< compute_stage >::_rotation_matrix
protected

Rotation matrix material property.

Definition at line 210 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _sol

template<ComputeStage compute_stage>
const NumericVector<Number>* const & ADComputeIncrementalShellStrain< compute_stage >::_sol
protected

Definition at line 218 of file ADComputeIncrementalShellStrain.h.

◆ _sol_old

template<ComputeStage compute_stage>
const NumericVector<Number>& ADComputeIncrementalShellStrain< compute_stage >::_sol_old
protected

Definition at line 219 of file ADComputeIncrementalShellStrain.h.

◆ _soln_disp_index

template<ComputeStage compute_stage>
std::vector<std::vector<unsigned int> > ADComputeIncrementalShellStrain< compute_stage >::_soln_disp_index
protected

Indices of solution vector corresponding to displacement DOFs in 3 directions at the 4 nodes.

Definition at line 129 of file ADComputeIncrementalShellStrain.h.

◆ _soln_rot_index

template<ComputeStage compute_stage>
std::vector<std::vector<unsigned int> > ADComputeIncrementalShellStrain< compute_stage >::_soln_rot_index
protected

Indices of solution vector corresponding to rotation DOFs in 2 directions at the 4 nodes.

Definition at line 132 of file ADComputeIncrementalShellStrain.h.

◆ _soln_vector

template<ComputeStage compute_stage>
ADDenseVector ADComputeIncrementalShellStrain< compute_stage >::_soln_vector
protected

Vector that stores the incremental solution at all the 20 DOFs in the 4 noded element.

Definition at line 135 of file ADComputeIncrementalShellStrain.h.

◆ _strain_increment

template<ComputeStage compute_stage>
std::vector<ADMaterialProperty(RankTwoTensor) *> ADComputeIncrementalShellStrain< compute_stage >::_strain_increment
protected

Strain increment in the covariant coordinate system.

Definition at line 117 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _strain_vector

template<ComputeStage compute_stage>
ADDenseVector ADComputeIncrementalShellStrain< compute_stage >::_strain_vector
protected

Vector that stores the strain in the the 2 axial and 3 shear directions.

Definition at line 138 of file ADComputeIncrementalShellStrain.h.

◆ _t_points

template<ComputeStage compute_stage>
std::vector<Point> ADComputeIncrementalShellStrain< compute_stage >::_t_points
protected

Quadrature points in the out of plane direction in isoparametric coordinate system.

Definition at line 153 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeFiniteShellStrain< compute_stage >::ADComputeFiniteShellStrain(), and ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _t_qrule

template<ComputeStage compute_stage>
std::unique_ptr<QGauss> ADComputeIncrementalShellStrain< compute_stage >::_t_qrule
protected

Quadrature rule in the out of plane direction.

Definition at line 150 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _thickness

template<ComputeStage compute_stage>
const VariableValue& ADComputeIncrementalShellStrain< compute_stage >::_thickness
protected

Coupled variable for the shell thickness.

Definition at line 111 of file ADComputeIncrementalShellStrain.h.

◆ _total_global_strain

template<ComputeStage compute_stage>
std::vector<MaterialProperty<RankTwoTensor> *> ADComputeIncrementalShellStrain< compute_stage >::_total_global_strain
protected

Total strain in global coordinate system.

Definition at line 213 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _total_strain

template<ComputeStage compute_stage>
std::vector<ADMaterialProperty(RankTwoTensor) *> ADComputeIncrementalShellStrain< compute_stage >::_total_strain
protected

Total strain increment in the covariant coordinate system.

Definition at line 120 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _total_strain_old

template<ComputeStage compute_stage>
std::vector<const MaterialProperty<RankTwoTensor> *> ADComputeIncrementalShellStrain< compute_stage >::_total_strain_old
protected

Old total strain increment in the covariant coordinate system.

Definition at line 123 of file ADComputeIncrementalShellStrain.h.

Referenced by ADComputeIncrementalShellStrain< compute_stage >::ADComputeIncrementalShellStrain().

◆ _unrotated_total_strain

template<ComputeStage compute_stage>
RankTwoTensor ADComputeIncrementalShellStrain< compute_stage >::_unrotated_total_strain
protected

Definition at line 228 of file ADComputeIncrementalShellStrain.h.

◆ _v1

template<ComputeStage compute_stage>
std::vector<ADRealVectorValue> ADComputeIncrementalShellStrain< compute_stage >::_v1
protected

First tangential vectors at nodes.

Definition at line 186 of file ADComputeIncrementalShellStrain.h.

◆ _v2

template<ComputeStage compute_stage>
std::vector<ADRealVectorValue> ADComputeIncrementalShellStrain< compute_stage >::_v2
protected

First tangential vectors at nodes.

Definition at line 189 of file ADComputeIncrementalShellStrain.h.

◆ _x2

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_x2
protected

◆ _x3

template<ComputeStage compute_stage>
ADRealVectorValue ADComputeIncrementalShellStrain< compute_stage >::_x3
protected

◆ usingMaterialMembers

template<ComputeStage compute_stage>
ADComputeIncrementalShellStrain< compute_stage >::usingMaterialMembers
protected

Definition at line 230 of file ADComputeIncrementalShellStrain.h.


The documentation for this class was generated from the following files:
ADComputeIncrementalShellStrain::_t_qrule
std::unique_ptr< QGauss > _t_qrule
Quadrature rule in the out of plane direction.
Definition: ADComputeIncrementalShellStrain.h:150
ADComputeIncrementalShellStrain::_unrotated_total_strain
RankTwoTensor _unrotated_total_strain
Definition: ADComputeIncrementalShellStrain.h:228
ADComputeIncrementalShellStrain::_dxyz_dxi
std::vector< ADMaterialProperty(RealVectorValue) * > _dxyz_dxi
Derivative of global x, y and z w.r.t isoparametric coordinate xi.
Definition: ADComputeIncrementalShellStrain.h:168
ADComputeIncrementalShellStrain::_large_strain
const bool _large_strain
Flag to compute large strains.
Definition: ADComputeIncrementalShellStrain.h:114
ADComputeIncrementalShellStrain::_soln_vector
ADDenseVector _soln_vector
Vector that stores the incremental solution at all the 20 DOFs in the 4 noded element.
Definition: ADComputeIncrementalShellStrain.h:135
ADComputeIncrementalShellStrain::computeSolnVector
virtual void computeSolnVector()
Computes the 20x1 soln vector and its derivatives for each shell element.
ADComputeIncrementalShellStrain::_disp_num
std::vector< unsigned int > _disp_num
Variable numbers corresponding to the displacement variables.
Definition: ADComputeIncrementalShellStrain.h:108
ADComputeIncrementalShellStrain::_g2_d
ADRealVectorValue _g2_d
Definition: ADComputeIncrementalShellStrain.h:227
ADComputeIncrementalShellStrain::_total_strain
std::vector< ADMaterialProperty(RankTwoTensor) * > _total_strain
Total strain increment in the covariant coordinate system.
Definition: ADComputeIncrementalShellStrain.h:120
ADComputeIncrementalShellStrain::_g3_a
ADRealVectorValue _g3_a
Definition: ADComputeIncrementalShellStrain.h:220
ADComputeIncrementalShellStrain::_ge_old
std::vector< const MaterialProperty< RankTwoTensor > * > _ge_old
Old ge matrix for elasticity tensor conversion.
Definition: ADComputeIncrementalShellStrain.h:201
ADComputeIncrementalShellStrain::_x3
ADRealVectorValue _x3
Definition: ADComputeIncrementalShellStrain.h:217
ADComputeIncrementalShellStrain::_phi_map
std::vector< std::vector< Real > > _phi_map
Shape function value.
Definition: ADComputeIncrementalShellStrain.h:165
ADComputeIncrementalShellStrain::_dxyz_dxi_old
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_dxi_old
Old derivative of global x, y and z w.r.t isoparametric coordinate xi.
Definition: ADComputeIncrementalShellStrain.h:177
ADComputeIncrementalShellStrain::_dxyz_deta
std::vector< ADMaterialProperty(RealVectorValue) * > _dxyz_deta
Derivative of global x, y and z w.r.t isoparametric coordinate eta.
Definition: ADComputeIncrementalShellStrain.h:171
ADComputeIncrementalShellStrain::_sol_old
const NumericVector< Number > & _sol_old
Definition: ADComputeIncrementalShellStrain.h:219
ADComputeIncrementalShellStrain::_J_map
std::vector< ADMaterialProperty(Real) * > _J_map
Material property containing jacobian of transformation.
Definition: ADComputeIncrementalShellStrain.h:204
ADComputeIncrementalShellStrain::_g3_c
ADRealVectorValue _g3_c
Definition: ADComputeIncrementalShellStrain.h:221
ADComputeIncrementalShellStrain::_g2_b
ADRealVectorValue _g2_b
Definition: ADComputeIncrementalShellStrain.h:226
ADComputeIncrementalShellStrain::_v2
std::vector< ADRealVectorValue > _v2
First tangential vectors at nodes.
Definition: ADComputeIncrementalShellStrain.h:189
ADComputeIncrementalShellStrain::_dphidxi_map
std::vector< std::vector< Real > > _dphidxi_map
Derivatives of shape functions w.r.t isoparametric coordinates xi.
Definition: ADComputeIncrementalShellStrain.h:159
ADComputeIncrementalShellStrain::_soln_disp_index
std::vector< std::vector< unsigned int > > _soln_disp_index
Indices of solution vector corresponding to displacement DOFs in 3 directions at the 4 nodes.
Definition: ADComputeIncrementalShellStrain.h:129
ADComputeIncrementalShellStrain::computeBMatrix
virtual void computeBMatrix()
Computes the B matrix that connects strains to nodal displacements and rotations.
Definition: ADComputeIncrementalShellStrain.C:391
ADComputeIncrementalShellStrain::_B
std::vector< ADMaterialProperty(DenseMatrix< Real >) * > _B
B_matrix for small strain.
Definition: ADComputeIncrementalShellStrain.h:192
ADComputeIncrementalShellStrain::_node_normal_old
const MaterialProperty< RealVectorValue > & _node_normal_old
Material property storing the old normal to the element at the 4 nodes.
Definition: ADComputeIncrementalShellStrain.h:147
ADComputeIncrementalShellStrain::_ndisp
unsigned int _ndisp
Number of coupled displacement variables.
Definition: ADComputeIncrementalShellStrain.h:102
ADComputeIncrementalShellStrain::computeGMatrix
virtual void computeGMatrix()
Computes the transformation matrix from natural coordinates to local cartesian coordinates for elasti...
Definition: ADComputeIncrementalShellStrain.C:248
ADComputeIncrementalShellStrain::_g1_c
ADRealVectorValue _g1_c
Definition: ADComputeIncrementalShellStrain.h:225
MaterialTensorCalculatorTools::component
Real component(const SymmTensor &symm_tensor, unsigned int index)
Definition: MaterialTensorCalculatorTools.C:16
ADComputeIncrementalShellStrain::_thickness
const VariableValue & _thickness
Coupled variable for the shell thickness.
Definition: ADComputeIncrementalShellStrain.h:111
ADComputeIncrementalShellStrain::_ge
std::vector< ADMaterialProperty(RankTwoTensor) * > _ge
ge matrix for elasticity tensor conversion
Definition: ADComputeIncrementalShellStrain.h:198
ADComputeIncrementalShellStrain::_nrot
unsigned int _nrot
Number of coupled rotational variables.
Definition: ADComputeIncrementalShellStrain.h:99
ADComputeIncrementalShellStrain::_strain_increment
std::vector< ADMaterialProperty(RankTwoTensor) * > _strain_increment
Strain increment in the covariant coordinate system.
Definition: ADComputeIncrementalShellStrain.h:117
ADComputeIncrementalShellStrain::_dxyz_deta_old
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_deta_old
Old derivative of global x, y and z w.r.t isoparametric coordinate eta.
Definition: ADComputeIncrementalShellStrain.h:180
ADComputeIncrementalShellStrain::_rotation_matrix
std::vector< MaterialProperty< RankTwoTensor > * > _rotation_matrix
Rotation matrix material property.
Definition: ADComputeIncrementalShellStrain.h:210
ADComputeIncrementalShellStrain::_J_map_old
std::vector< const MaterialProperty< Real > * > _J_map_old
Old material property containing jacobian of transformation.
Definition: ADComputeIncrementalShellStrain.h:207
ADComputeIncrementalShellStrain::_g3_d
ADRealVectorValue _g3_d
Definition: ADComputeIncrementalShellStrain.h:223
ADComputeIncrementalShellStrain::_x2
ADRealVectorValue _x2
simulation variables
Definition: ADComputeIncrementalShellStrain.h:216
ADComputeIncrementalShellStrain::_nonlinear_sys
NonlinearSystemBase & _nonlinear_sys
Reference to the nonlinear system object.
Definition: ADComputeIncrementalShellStrain.h:126
ADComputeIncrementalShellStrain::_t_points
std::vector< Point > _t_points
Quadrature points in the out of plane direction in isoparametric coordinate system.
Definition: ADComputeIncrementalShellStrain.h:153
ADComputeIncrementalShellStrain::_g3_b
ADRealVectorValue _g3_b
Definition: ADComputeIncrementalShellStrain.h:222
ADComputeIncrementalShellStrain::_dxyz_dzeta
std::vector< ADMaterialProperty(RealVectorValue) * > _dxyz_dzeta
Derivative of global x, y and z w.r.t isoparametric coordinate zeta.
Definition: ADComputeIncrementalShellStrain.h:174
ADComputeIncrementalShellStrain::_B_old
std::vector< const MaterialProperty< DenseMatrix< Real > > * > _B_old
Old B_matrix for small strain.
Definition: ADComputeIncrementalShellStrain.h:195
ADComputeIncrementalShellStrain::_strain_vector
ADDenseVector _strain_vector
Vector that stores the strain in the the 2 axial and 3 shear directions.
Definition: ADComputeIncrementalShellStrain.h:138
ADComputeIncrementalShellStrain::_v1
std::vector< ADRealVectorValue > _v1
First tangential vectors at nodes.
Definition: ADComputeIncrementalShellStrain.h:186
ADComputeIncrementalShellStrain::_dxyz_dzeta_old
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_dzeta_old
Old derivative of global x, y and z w.r.t isoparametric coordinate zeta.
Definition: ADComputeIncrementalShellStrain.h:183
ADComputeIncrementalShellStrain::_2d_points
std::vector< Point > _2d_points
Quadrature points in the in-plane direction in isoparametric coordinate system.
Definition: ADComputeIncrementalShellStrain.h:156
ADComputeIncrementalShellStrain::_total_global_strain
std::vector< MaterialProperty< RankTwoTensor > * > _total_global_strain
Total strain in global coordinate system.
Definition: ADComputeIncrementalShellStrain.h:213
ADComputeIncrementalShellStrain::_dphideta_map
std::vector< std::vector< Real > > _dphideta_map
Derivatives of shape functions w.r.t isoparametric coordinates eta.
Definition: ADComputeIncrementalShellStrain.h:162
ADComputeIncrementalShellStrain::_nodes
std::vector< const Node * > _nodes
Vector storing pointers to the nodes of the shell element.
Definition: ADComputeIncrementalShellStrain.h:141
ADComputeIncrementalShellStrain::_rot_num
std::vector< unsigned int > _rot_num
Variable numbers corresponding to the rotational variables.
Definition: ADComputeIncrementalShellStrain.h:105
RankTwoTensorTempl< Real >
ADComputeIncrementalShellStrain::_soln_rot_index
std::vector< std::vector< unsigned int > > _soln_rot_index
Indices of solution vector corresponding to rotation DOFs in 2 directions at the 4 nodes.
Definition: ADComputeIncrementalShellStrain.h:132
ADComputeIncrementalShellStrain::_total_strain_old
std::vector< const MaterialProperty< RankTwoTensor > * > _total_strain_old
Old total strain increment in the covariant coordinate system.
Definition: ADComputeIncrementalShellStrain.h:123
ADComputeIncrementalShellStrain::_g1_a
ADRealVectorValue _g1_a
Definition: ADComputeIncrementalShellStrain.h:224
ADComputeIncrementalShellStrain::computeNodeNormal
virtual void computeNodeNormal()
Computes the node normal at each node.
Definition: ADComputeIncrementalShellStrain.C:383
ADComputeIncrementalShellStrain::_sol
const NumericVector< Number > *const & _sol
Definition: ADComputeIncrementalShellStrain.h:218
ADComputeIncrementalShellStrain::updateGVectors
virtual void updateGVectors()
Updates the vectors required for shear locking computation for finite rotations.
Definition: ADComputeIncrementalShellStrain.h:90