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

ADComputeFiniteShellStrain computes the strain increment term for shell elements under finite displacement/rotation scenarios. More...

#include <ADComputeFiniteShellStrain.h>

Inheritance diagram for ADComputeFiniteShellStrain< compute_stage >:
[legend]

Public Member Functions

 ADComputeFiniteShellStrain (const InputParameters &parameters)
 

Protected Member Functions

virtual void initQpStatefulProperties () override
 
virtual void computeProperties () override
 
virtual void computeNodeNormal () override
 Computes the node normal at each node. More...
 
virtual void updatedxyz () override
 Updates covariant vectors at each qp for finite rotations. More...
 
virtual void updateGVectors () override
 Updates the vectors required for shear locking computation for finite rotations. More...
 
virtual void computeBNLMatrix ()
 Computes the B_nl matrix that connects the nonlinear strains to the nodal displacements and rotations. More...
 
virtual void computeSolnVector ()
 Computes the 20x1 soln vector and its derivatives for each shell element. More...
 
template<>
void computeSolnVector ()
 
template<>
void computeSolnVector ()
 
virtual void computeBMatrix ()
 Computes the B matrix that connects strains to nodal displacements and 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...
 

Protected Attributes

std::vector< ADMaterialProperty(DenseMatrix< Real >) * > _B_nl
 Material property to store the B_nl matrix at each quadrature point. More...
 
 usingComputeIncrementalShellStrainMembers
 
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 ADComputeFiniteShellStrain< compute_stage >

ADComputeFiniteShellStrain computes the strain increment term for shell elements under finite displacement/rotation scenarios.

Definition at line 19 of file ADComputeFiniteShellStrain.h.

Constructor & Destructor Documentation

◆ ADComputeFiniteShellStrain()

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

Definition at line 27 of file ADComputeFiniteShellStrain.C.

30 {
31  _B_nl.resize(_t_points.size());
32 
33  for (unsigned int i = 0; i < _t_points.size(); ++i)
34  _B_nl[i] = &declareADProperty<DenseMatrix<Real>>("B_nl_t_points_" + std::to_string(i));
35 }

Member Function Documentation

◆ ADMaterialProperty()

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

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 ( )
protectedvirtualinherited

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 }

◆ computeBNLMatrix()

template<ComputeStage compute_stage>
void ADComputeFiniteShellStrain< compute_stage >::computeBNLMatrix ( )
protectedvirtual

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

Definition at line 181 of file ADComputeFiniteShellStrain.C.

182 {
183  // compute BNL matrix - rows correspond to [ux1, ux2, ux3, ux4, uy1, uy2, uy3, uy4, uz1, uz2, uz3,
184  // uz4, a1, a2, a3, a4, b1, b2, b3, b4]
185 
186  for (unsigned int i = 0; i < _2d_points.size(); ++i)
187  {
188  for (unsigned int j = 0; j < _t_points.size(); ++j)
189  {
190  (*_B_nl[j])[i].resize(5, 20);
191  (*_B_nl[j])[i].zero();
192  for (unsigned int k = 0; k < 4; ++k)
193  {
194  for (unsigned int p = 0; p < 4; ++p) // loop over nodes
195  {
196  // corresponding to strain(0,0)
197  (*_B_nl[j])[i](0, k) += _dphidxi_map[k][i] * _dphidxi_map[p][i] *
198  (_soln_vector(p) + _t_points[j](0) / 2.0 * _thickness[i] *
199  (-_soln_vector(p + 12) * _v2[p](0) +
200  _soln_vector(p + 16) * _v1[p](0)));
201  (*_B_nl[j])[i](0, 4 + k) +=
202  _dphidxi_map[k][i] * _dphidxi_map[p][i] *
203  (_soln_vector(p + 4) +
204  _t_points[j](0) / 2.0 * _thickness[i] *
205  (-_soln_vector(p + 12) * _v2[p](1) + _soln_vector(p + 16) * _v1[p](1)));
206  (*_B_nl[j])[i](0, 8 + k) +=
207  _dphidxi_map[k][i] * _dphidxi_map[p][i] *
208  (_soln_vector(p + 8) +
209  _t_points[j](0) / 2.0 * _thickness[i] *
210  (-_soln_vector(p + 12) * _v2[p](2) + _soln_vector(p + 16) * _v1[p](2)));
211  (*_B_nl[j])[i](0, 12 + k) +=
212  _t_points[j](0) / 2.0 * _thickness[i] * _dphidxi_map[k][i] * _dphidxi_map[p][i] *
213  (-(_v2[p](0) * _soln_vector(p) + _v2[p](1) * _soln_vector(p + 4) +
214  _v2[p](2) * _soln_vector(p + 8)) +
215  _t_points[j](0) / 2.0 * _thickness[i] * _v2[k] *
216  (_v2[p] * _soln_vector(p + 12) - _v1[p] * _soln_vector(p + 16)));
217  (*_B_nl[j])[i](0, 16 + k) +=
218  _t_points[j](0) / 2.0 * _thickness[i] * _dphidxi_map[k][i] * _dphidxi_map[p][i] *
219  ((_v1[p](0) * _soln_vector(p) + _v1[p](1) * _soln_vector(p + 4) +
220  _v1[p](2) * _soln_vector(p + 8)) +
221  _t_points[j](0) / 2.0 * _thickness[i] * _v1[k] *
222  (-_v2[p] * _soln_vector(p + 12) + _v1[p] * _soln_vector(p + 16)));
223 
224  // corresponding to strain(1,1)
225  (*_B_nl[j])[i](1, k) += _dphideta_map[k][i] * _dphideta_map[p][i] *
226  (_soln_vector(p) + _t_points[j](0) / 2.0 * _thickness[i] *
227  (-_soln_vector(p + 12) * _v2[p](0) +
228  _soln_vector(p + 16) * _v1[p](0)));
229  (*_B_nl[j])[i](1, 4 + k) +=
230  _dphideta_map[k][i] * _dphideta_map[p][i] *
231  (_soln_vector(p + 4) +
232  _t_points[j](0) / 2.0 * _thickness[i] *
233  (-_soln_vector(p + 12) * _v2[p](1) + _soln_vector(p + 16) * _v1[p](1)));
234  (*_B_nl[j])[i](1, 8 + k) +=
235  _dphideta_map[k][i] * _dphideta_map[p][i] *
236  (_soln_vector(p + 8) +
237  _t_points[j](0) / 2.0 * _thickness[i] *
238  (-_soln_vector(p + 12) * _v2[p](2) + _soln_vector(p + 16) * _v1[p](2)));
239  (*_B_nl[j])[i](1, 12 + k) +=
240  _t_points[j](0) / 2.0 * _thickness[i] * _dphideta_map[k][i] * _dphideta_map[p][i] *
241  (-(_v2[p](0) * _soln_vector(p) + _v2[p](1) * _soln_vector(p + 4) +
242  _v2[p](2) * _soln_vector(p + 8)) +
243  _t_points[j](0) / 2.0 * _thickness[i] * _v2[k] *
244  (_v2[p] * _soln_vector(p + 12) - _v1[p] * _soln_vector(p + 16)));
245  (*_B_nl[j])[i](1, 16 + k) +=
246  _t_points[j](0) / 2.0 * _thickness[i] * _dphideta_map[k][i] * _dphideta_map[p][i] *
247  ((_v1[p](0) * _soln_vector(p) + _v1[p](1) * _soln_vector(p + 4) +
248  _v1[p](2) * _soln_vector(p + 8)) +
249  _t_points[j](0) / 2.0 * _thickness[i] * _v1[k] *
250  (-_v2[p] * _soln_vector(p + 12) + _v1[p] * _soln_vector(p + 16)));
251 
252  // terms corresponding to strain(2,2) are 0.
253 
254  // corresponding to strain(0,1)
255  (*_B_nl[j])[i](2, k) += 0.5 *
256  (_dphidxi_map[k][i] * _dphideta_map[p][i] +
257  _dphideta_map[k][i] * _dphidxi_map[p][i]) *
258  (_soln_vector(p) + _t_points[j](0) / 2.0 * _thickness[i] *
259  (-_soln_vector(p + 12) * _v2[p](0) +
260  _soln_vector(p + 16) * _v1[p](0)));
261  (*_B_nl[j])[i](2, 4 + k) +=
262  0.5 *
263  (_dphidxi_map[k][i] * _dphideta_map[p][i] +
264  _dphideta_map[k][i] * _dphidxi_map[p][i]) *
265  (_soln_vector(p + 4) +
266  _t_points[j](0) / 2.0 * _thickness[i] *
267  (-_soln_vector(p + 12) * _v2[p](1) + _soln_vector(p + 16) * _v1[p](1)));
268  (*_B_nl[j])[i](2, 8 + k) +=
269  0.5 *
270  (_dphidxi_map[k][i] * _dphideta_map[p][i] +
271  _dphideta_map[k][i] * _dphidxi_map[p][i]) *
272  (_soln_vector(p + 8) +
273  _t_points[j](0) / 2.0 * _thickness[i] *
274  (-_soln_vector(p + 12) * _v2[p](2) + _soln_vector(p + 16) * _v1[p](2)));
275  (*_B_nl[j])[i](2, 12 + k) +=
276  _t_points[j](0) * 0.25 *
277  (_dphidxi_map[k][i] * _dphideta_map[p][i] +
278  _dphideta_map[k][i] * _dphidxi_map[p][i]) *
279  _thickness[i] *
280  (-(_v2[k](0) * _soln_vector(p) + _v2[k](1) * _soln_vector(p + 4) +
281  _v2[k](2) * _soln_vector(p + 8)) +
282  _t_points[j](0) / 2.0 * _thickness[i] * _v2[k] *
283  (_v2[p] * _soln_vector(p + 12) - _v1[p] * _soln_vector(p + 16)));
284  (*_B_nl[j])[i](2, 16 + k) +=
285  _t_points[j](0) * 0.25 *
286  (_dphidxi_map[k][i] * _dphideta_map[p][i] +
287  _dphideta_map[k][i] * _dphidxi_map[p][i]) *
288  _thickness[i] *
289  ((_v1[k](0) * _soln_vector(p) + _v1[k](1) * _soln_vector(p + 4) +
290  _v1[k](2) * _soln_vector(p + 8)) +
291  _t_points[j](0) / 2.0 * _thickness[i] * _v1[k] *
292  (-_v2[p] * _soln_vector(p + 12) + _v1[p] * _soln_vector(p + 16)));
293  }
294  }
295 
296  for (unsigned int component = 0; component < 3; ++component)
297  {
298  // corresponding to strain(0,2)
299  (*_B_nl[j])[i](3, 2 + component * 4) +=
300  1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] *
301  (-_soln_vector(12 + 2) * _v2[2](component) + _soln_vector(16 + 2) * _v1[2](component) -
302  _soln_vector(12 + 3) * _v2[3](component) + _soln_vector(16 + 3) * _v1[3](component));
303  (*_B_nl[j])[i](3, 3 + component * 4) += -(*_B_nl[j])[i](3, 2 + component * 4);
304 
305  (*_B_nl[j])[i](3, 1 + component * 4) +=
306  1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] *
307  (-_soln_vector(12 + 1) * _v2[1](component) + _soln_vector(16 + 1) * _v1[1](component) -
308  _soln_vector(12 + 0) * _v2[0](component) + _soln_vector(16 + 0) * _v1[0](component));
309  (*_B_nl[j])[i](3, component * 4) += -(*_B_nl[j])[i](3, 1 + component * 4);
310 
311  // adding contributions corresponding to alpha 2 and 3 and beta 2 and 3
312  (*_B_nl[j])[i](3, 12 + 2) +=
313  -1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v2[2](component) *
314  (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
315  (*_B_nl[j])[i](3, 16 + 2) +=
316  1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v1[2](component) *
317  (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
318  (*_B_nl[j])[i](3, 12 + 3) +=
319  -1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v2[3](component) *
320  (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
321  (*_B_nl[j])[i](3, 16 + 3) +=
322  1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v1[3](component) *
323  (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
324 
325  // adding contributions corresponding to alpha 1 and 0 and beta 1 and 0
326  (*_B_nl[j])[i](3, 12 + 1) +=
327  -1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v2[1](component) *
328  (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
329  (*_B_nl[j])[i](3, 16 + 1) +=
330  1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v1[1](component) *
331  (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
332  (*_B_nl[j])[i](3, 12 + 0) +=
333  -1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v2[0](component) *
334  (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
335  (*_B_nl[j])[i](3, 16 + 0) +=
336  1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v1[0](component) *
337  (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
338 
339  // corresponding to strain(1,2)
340  (*_B_nl[j])[i](4, 2 + component * 4) +=
341  1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] *
342  (-_soln_vector(12 + 2) * _v2[2](component) + _soln_vector(16 + 2) * _v1[2](component) -
343  _soln_vector(12 + 1) * _v2[1](component) + _soln_vector(16 + 1) * _v1[1](component));
344  (*_B_nl[j])[i](4, 1 + component * 4) += -(*_B_nl[j])[i](3, 2 + component * 4);
345 
346  (*_B_nl[j])[i](4, 3 + component * 4) +=
347  1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] *
348  (-_soln_vector(12 + 3) * _v2[3](component) + _soln_vector(16 + 3) * _v1[3](component) -
349  _soln_vector(12 + 0) * _v2[0](component) + _soln_vector(16 + 0) * _v1[0](component));
350  (*_B_nl[j])[i](4, component * 4) += -(*_B_nl[j])[i](3, 3 + component * 4);
351 
352  // adding contributions corresponding to alpha 2, 1 and beta 2 , 1
353  (*_B_nl[j])[i](4, 12 + 2) +=
354  -1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v2[2](component) *
355  (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
356  (*_B_nl[j])[i](4, 16 + 2) +=
357  1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v1[2](component) *
358  (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
359  (*_B_nl[j])[i](4, 12 + 1) +=
360  -1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v2[1](component) *
361  (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
362  (*_B_nl[j])[i](4, 16 + 1) +=
363  1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v1[1](component) *
364  (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
365 
366  // adding contributions corresponding to alpha 3, 0 and beta 3 , 0
367  (*_B_nl[j])[i](4, 12 + 3) +=
368  -1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v2[3](component) *
369  (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
370  (*_B_nl[j])[i](4, 16 + 3) +=
371  1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v1[3](component) *
372  (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
373  (*_B_nl[j])[i](4, 12 + 0) +=
374  -1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v2[0](component) *
375  (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
376  (*_B_nl[j])[i](4, 16 + 0) +=
377  1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v1[0](component) *
378  (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
379  }
380  }
381  }
382 }

◆ computeGMatrix()

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

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 ADComputeFiniteShellStrain< compute_stage >::computeNodeNormal ( )
overrideprotectedvirtual

Computes the node normal at each node.

Reimplemented from ADComputeIncrementalShellStrain< compute_stage >.

Definition at line 118 of file ADComputeFiniteShellStrain.C.

119 {
120  // update _node_normal
121  for (unsigned int k = 0; k < _nodes.size(); ++k)
122  {
123  _node_normal[k] =
124  -_v2[k] * _soln_vector(12 + k) + _v1[k] * _soln_vector(16 + k) + _node_normal_old[k];
125  _node_normal[k] /= _node_normal[k].norm();
126  }
127 }

◆ computeProperties()

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

Reimplemented from ADComputeIncrementalShellStrain< compute_stage >.

Definition at line 50 of file ADComputeFiniteShellStrain.C.

51 {
52  // quadrature points in isoparametric space
53  _2d_points = _qrule->get_points(); // would be in 2D
54 
55  unsigned int dim = _current_elem->dim();
56 
57  // derivatives of shape functions (dphidxi, dphideta and dphidzeta) evaluated at quadrature points
58  // (in isoparametric space).
59  FEType fe_type(Utility::string_to_enum<Order>("First"),
60  Utility::string_to_enum<FEFamily>("LAGRANGE"));
61  auto & fe = _fe_problem.assembly(_tid).getFE(fe_type, dim);
62  _dphidxi_map = fe->get_fe_map().get_dphidxi_map();
63  _dphideta_map = fe->get_fe_map().get_dphideta_map();
64  _phi_map = fe->get_fe_map().get_phi_map();
65 
66  for (unsigned int i = 0; i < 4; ++i)
67  _nodes[i] = _current_elem->node_ptr(i);
68 
69  for (unsigned int i = 0; i < _2d_points.size(); ++i)
70  {
71  for (unsigned int j = 0; j < _t_points.size(); ++j)
72  {
73  (*_ge[j])[i] = (*_ge_old[j])[i];
74  (*_J_map[j])[i] = (*_J_map_old[j])[i];
75  }
76  }
77 
79  updatedxyz();
80 
81  for (unsigned int k = 0; k < _nodes.size(); ++k)
82  _node_normal[k] = _node_normal_old[k];
83 
85 
87 
89 
90  for (unsigned int i = 0; i < _2d_points.size(); ++i)
91  {
92  for (unsigned int j = 0; j < _t_points.size(); ++j)
93  {
94  // compute strain increment in covariant coordinate system using B and _soln_vector
95  for (unsigned int temp1 = 0; temp1 < 5; ++temp1)
96  {
97  _strain_vector(temp1) = 0.0;
98  for (unsigned int temp2 = 0; temp2 < 20; ++temp2)
99  _strain_vector(temp1) += (*_B[j])[i](temp1, temp2) * _soln_vector(temp2);
100  }
101 
102  (*_strain_increment[j])[i](0, 0) = _strain_vector(0);
103  (*_strain_increment[j])[i](1, 1) = _strain_vector(1);
104  (*_strain_increment[j])[i](0, 1) = _strain_vector(2);
105  (*_strain_increment[j])[i](0, 2) = _strain_vector(3);
106  (*_strain_increment[j])[i](1, 2) = _strain_vector(4);
107  (*_strain_increment[j])[i](1, 0) = (*_strain_increment[j])[i](0, 1);
108  (*_strain_increment[j])[i](2, 0) = (*_strain_increment[j])[i](0, 2);
109  (*_strain_increment[j])[i](2, 1) = (*_strain_increment[j])[i](1, 2);
110  (*_total_strain[j])[i] = (*_total_strain_old[j])[i] + (*_strain_increment[j])[i];
111  }
112  }
113  copyDualNumbersToValues();
114 }

◆ computeSolnVector() [1/3]

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

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

◆ computeSolnVector() [2/3]

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

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 ( )
protectedinherited

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 ADComputeFiniteShellStrain< compute_stage >::initQpStatefulProperties ( )
overrideprotectedvirtual

Reimplemented from ADComputeIncrementalShellStrain< compute_stage >.

Definition at line 39 of file ADComputeFiniteShellStrain.C.

40 {
42 
43  ADDenseMatrix b(5, 20);
44  for (unsigned int t = 0; t < _t_points.size(); ++t)
45  (*_B_nl[t])[_qp] = b;
46 }

◆ updatedxyz()

template<ComputeStage compute_stage>
void ADComputeFiniteShellStrain< compute_stage >::updatedxyz ( )
overrideprotectedvirtual

Updates covariant vectors at each qp for finite rotations.

Reimplemented from ADComputeIncrementalShellStrain< compute_stage >.

Definition at line 131 of file ADComputeFiniteShellStrain.C.

132 {
133  for (unsigned int i = 0; i < _2d_points.size(); ++i)
134  {
135  for (unsigned int j = 0; j < _t_points.size(); ++j)
136  {
137  for (unsigned int component = 0; component < 3; ++component)
138  {
139  (*_dxyz_dxi[j])[i](component) = 0.0;
140  (*_dxyz_deta[j])[i](component) = 0.0;
141  (*_dxyz_dzeta[j])[i](component) = 0.0;
142  for (unsigned int k = 0; k < _nodes.size(); ++k)
143  {
144  (*_dxyz_dxi[j])[i](component) +=
145  _dphidxi_map[k][i] *
147  _t_points[j](0) / 2.0 * _thickness[i] * _dphidxi_map[k][i] *
149  (*_dxyz_deta[j])[i](component) +=
150  _dphideta_map[k][i] *
152  _t_points[j](0) / 2.0 * _thickness[i] * _dphideta_map[k][i] *
154  (*_dxyz_dzeta[j])[i](component) +=
155  _thickness[i] * _phi_map[k][i] * _node_normal_old[k](component) / 2.0;
156  }
157  }
158  }
159  }
160 }

◆ updateGVectors()

template<ComputeStage compute_stage>
void ADComputeFiniteShellStrain< compute_stage >::updateGVectors ( )
overrideprotectedvirtual

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

Reimplemented from ADComputeIncrementalShellStrain< compute_stage >.

Definition at line 164 of file ADComputeFiniteShellStrain.C.

165 {
166  for (unsigned int component = 0; component < 3; ++component)
167  {
168  _g1_a(component) +=
170  _g1_c(component) +=
172  _g2_b(component) +=
174  _g2_d(component) +=
176  }
177 }

Member Data Documentation

◆ _2d_points

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

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
protectedinherited

◆ _B_nl

template<ComputeStage compute_stage>
std::vector<ADMaterialProperty(DenseMatrix<Real>) *> ADComputeFiniteShellStrain< compute_stage >::_B_nl
protected

Material property to store the B_nl matrix at each quadrature point.

Definition at line 45 of file ADComputeFiniteShellStrain.h.

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

◆ _B_old

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

◆ _disp_num

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

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

Definition at line 224 of file ADComputeIncrementalShellStrain.h.

◆ _g1_c

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

Definition at line 225 of file ADComputeIncrementalShellStrain.h.

◆ _g2_b

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

Definition at line 226 of file ADComputeIncrementalShellStrain.h.

◆ _g2_d

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

Definition at line 227 of file ADComputeIncrementalShellStrain.h.

◆ _g3_a

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

Definition at line 220 of file ADComputeIncrementalShellStrain.h.

◆ _g3_b

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

Definition at line 222 of file ADComputeIncrementalShellStrain.h.

◆ _g3_c

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

Definition at line 221 of file ADComputeIncrementalShellStrain.h.

◆ _g3_d

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

Definition at line 223 of file ADComputeIncrementalShellStrain.h.

◆ _ge

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

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

Flag to compute large strains.

Definition at line 114 of file ADComputeIncrementalShellStrain.h.

◆ _ndisp

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

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

Definition at line 218 of file ADComputeIncrementalShellStrain.h.

◆ _sol_old

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

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

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
protectedinherited

Definition at line 228 of file ADComputeIncrementalShellStrain.h.

◆ _v1

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

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
protectedinherited

First tangential vectors at nodes.

Definition at line 189 of file ADComputeIncrementalShellStrain.h.

◆ _x2

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

◆ _x3

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

◆ usingComputeIncrementalShellStrainMembers

template<ComputeStage compute_stage>
ADComputeFiniteShellStrain< compute_stage >::usingComputeIncrementalShellStrainMembers
protected

Definition at line 47 of file ADComputeFiniteShellStrain.h.

◆ usingMaterialMembers

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

Definition at line 230 of file ADComputeIncrementalShellStrain.h.


The documentation for this class was generated from the following files:
ADComputeFiniteShellStrain::updatedxyz
virtual void updatedxyz() override
Updates covariant vectors at each qp for finite rotations.
Definition: ADComputeFiniteShellStrain.C:131
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::_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
ADComputeFiniteShellStrain::_B_nl
std::vector< ADMaterialProperty(DenseMatrix< Real >) * > _B_nl
Material property to store the B_nl matrix at each quadrature point.
Definition: ADComputeFiniteShellStrain.h:45
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_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::_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
ADComputeFiniteShellStrain::computeBNLMatrix
virtual void computeBNLMatrix()
Computes the B_nl matrix that connects the nonlinear strains to the nodal displacements and rotations...
Definition: ADComputeFiniteShellStrain.C:181
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::_2d_points
std::vector< Point > _2d_points
Quadrature points in the in-plane direction in isoparametric coordinate system.
Definition: ADComputeIncrementalShellStrain.h:156
ADComputeFiniteShellStrain::computeNodeNormal
virtual void computeNodeNormal() override
Computes the node normal at each node.
Definition: ADComputeFiniteShellStrain.C:118
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::_sol
const NumericVector< Number > *const & _sol
Definition: ADComputeIncrementalShellStrain.h:218
ADComputeIncrementalShellStrain
Definition: ADComputeIncrementalShellStrain.h:56
ADComputeIncrementalShellStrain::updateGVectors
virtual void updateGVectors()
Updates the vectors required for shear locking computation for finite rotations.
Definition: ADComputeIncrementalShellStrain.h:90