https://mooseframework.inl.gov
ADComputeIncrementalShellStrain.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "DenseMatrix.h"
13 #include "Material.h"
14 #include "ADRankTwoTensorForward.h"
15 
16 namespace libMesh
17 {
18 class QGauss;
19 }
20 
22 {
23 public:
25 
27 
28 protected:
29  virtual void initQpStatefulProperties() override;
30  virtual void computeProperties() override;
31 
33  virtual void computeSolnVector();
34 
36  virtual void computeBMatrix();
37 
39  virtual void computeNodeNormal();
40 
42  virtual void updateGVectors(){};
43 
45  virtual void updatedxyz(){};
46 
48  virtual void computeGMatrix();
49 
51  virtual void computeLocalCoordinates();
52 
54  unsigned int _nrot;
55 
57  unsigned int _ndisp;
58 
60  std::vector<unsigned int> _rot_num;
61 
63  std::vector<unsigned int> _disp_num;
64 
67 
69  const bool _large_strain;
70 
72  std::vector<ADMaterialProperty<RankTwoTensor> *> _strain_increment;
73 
75  std::vector<ADMaterialProperty<RankTwoTensor> *> _total_strain;
76 
78  std::vector<const MaterialProperty<RankTwoTensor> *> _total_strain_old;
79 
82 
84  std::vector<std::vector<unsigned int>> _soln_disp_index;
85 
87  std::vector<std::vector<unsigned int>> _soln_rot_index;
88 
91 
94 
96  std::vector<const Node *> _nodes;
97 
100 
103 
105  std::unique_ptr<libMesh::QGauss> _t_qrule;
106 
108  std::vector<Point> _t_points;
109 
111  std::vector<Point> _2d_points;
112 
114  std::vector<std::vector<Real>> _dphidxi_map;
115 
117  std::vector<std::vector<Real>> _dphideta_map;
118 
120  std::vector<std::vector<Real>> _phi_map;
121 
123  std::vector<ADMaterialProperty<RealVectorValue> *> _dxyz_dxi;
124 
126  std::vector<ADMaterialProperty<RealVectorValue> *> _dxyz_deta;
127 
129  std::vector<ADMaterialProperty<RealVectorValue> *> _dxyz_dzeta;
130 
132  std::vector<const MaterialProperty<RealVectorValue> *> _dxyz_dxi_old;
133 
135  std::vector<const MaterialProperty<RealVectorValue> *> _dxyz_deta_old;
136 
138  std::vector<const MaterialProperty<RealVectorValue> *> _dxyz_dzeta_old;
139 
141  std::vector<ADRealVectorValue> _v1;
142 
144  std::vector<ADRealVectorValue> _v2;
145 
147  std::vector<ADMaterialProperty<DenseMatrix<Real>> *> _B;
148 
150  std::vector<const MaterialProperty<DenseMatrix<Real>> *> _B_old;
151 
153  std::vector<ADMaterialProperty<RankTwoTensor> *> _ge;
154 
156  std::vector<const MaterialProperty<RankTwoTensor> *> _ge_old;
157 
159  std::vector<ADMaterialProperty<Real> *> _J_map;
160 
162  std::vector<const MaterialProperty<Real> *> _J_map_old;
163 
165  std::vector<MaterialProperty<RankTwoTensor> *> _local_transformation_matrix;
166  std::vector<const MaterialProperty<RankTwoTensor> *> _local_transformation_matrix_old;
167 
169  std::vector<MaterialProperty<RankTwoTensor> *> _covariant_transformation_matrix;
170  std::vector<const MaterialProperty<RankTwoTensor> *> _covariant_transformation_matrix_old;
171 
173  std::vector<MaterialProperty<RankTwoTensor> *> _contravariant_transformation_matrix;
174  std::vector<const MaterialProperty<RankTwoTensor> *> _contravariant_transformation_matrix_old;
175 
177  std::vector<MaterialProperty<RankTwoTensor> *> _total_global_strain;
178 
181 
185  const NumericVector<Number> * const & _sol;
200 };
std::vector< ADMaterialProperty< RankTwoTensor > * > _strain_increment
Strain increment in the covariant coordinate system.
NonlinearSystemBase & _nonlinear_sys
Reference to the nonlinear system object.
virtual void updatedxyz()
Updates covariant vectors at each qp for finite rotations.
std::vector< const MaterialProperty< DenseMatrix< Real > > * > _B_old
Old B_matrix for small strain.
const MaterialProperty< RealVectorValue > & _node_normal_old
Material property storing the old normal to the element at the 4 nodes.
std::vector< unsigned int > _rot_num
Variable numbers corresponding to the rotational variables.
std::vector< ADRealVectorValue > _v2
First tangential vectors at nodes.
std::vector< std::vector< Real > > _dphidxi_map
Derivatives of shape functions w.r.t isoparametric coordinates xi.
const NumericVector< Number > & _sol_old
ADRealVectorValue _x2
simulation variables
std::vector< MaterialProperty< RankTwoTensor > * > _contravariant_transformation_matrix
Contravariant base vector matrix material property to transform strain.
std::vector< const MaterialProperty< Real > * > _J_map_old
Old material property containing jacobian of transformation.
std::vector< unsigned int > _disp_num
Variable numbers corresponding to the displacement variables.
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_deta_old
Old derivative of global x, y and z w.r.t isoparametric coordinate eta.
std::vector< std::vector< Real > > _dphideta_map
Derivatives of shape functions w.r.t isoparametric coordinates eta.
std::vector< ADMaterialProperty< DenseMatrix< Real > > * > _B
B_matrix for small strain.
std::vector< ADMaterialProperty< RankTwoTensor > * > _total_strain
Total strain increment in the covariant coordinate system.
std::vector< ADMaterialProperty< RealVectorValue > * > _dxyz_dzeta
Derivative of global x, y and z w.r.t isoparametric coordinate zeta.
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_dxi_old
Old derivative of global x, y and z w.r.t isoparametric coordinate xi.
const VariableValue & _thickness
Coupled variable for the shell thickness.
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...
unsigned int _nrot
Number of coupled rotational variables.
virtual void computeLocalCoordinates()
Computes the element&#39;s local coordinates and store in _e1, _e2 and _e3.
std::vector< const MaterialProperty< RankTwoTensor > * > _covariant_transformation_matrix_old
virtual void computeBMatrix()
Computes the B matrix that connects strains to nodal displacements and rotations. ...
std::vector< ADMaterialProperty< RealVectorValue > * > _dxyz_deta
Derivative of global x, y and z w.r.t isoparametric coordinate eta.
std::vector< std::vector< unsigned int > > _soln_rot_index
Indices of solution vector corresponding to rotation DOFs in 2 directions at the 4 nodes...
virtual void computeGMatrix()
Computes the transformation matrix from natural coordinates to local cartesian coordinates for elasti...
std::vector< const MaterialProperty< RankTwoTensor > * > _ge_old
Old ge matrix for elasticity tensor conversion.
std::vector< const MaterialProperty< RankTwoTensor > * > _contravariant_transformation_matrix_old
std::vector< const Node * > _nodes
Vector storing pointers to the nodes of the shell element.
std::vector< Point > _t_points
Quadrature points in the out of plane direction in isoparametric coordinate system.
ADDenseVector _strain_vector
Vector that stores the strain in the the 2 axial and 3 shear directions.
unsigned int _ndisp
Number of coupled displacement variables.
std::vector< ADMaterialProperty< RealVectorValue > * > _dxyz_dxi
Derivative of global x, y and z w.r.t isoparametric coordinate xi.
ADDenseVector _soln_vector
Vector that stores the incremental solution at all the 20 DOFs in the 4 noded element.
ADMaterialProperty< RealVectorValue > & _node_normal
Material property storing the normal to the element at the 4 nodes. Stored as a material property for...
std::vector< const MaterialProperty< RankTwoTensor > * > _local_transformation_matrix_old
std::unique_ptr< libMesh::QGauss > _t_qrule
Quadrature rule in the out of plane direction.
std::vector< ADRealVectorValue > _v1
First tangential vectors at nodes.
std::vector< std::vector< unsigned int > > _soln_disp_index
Indices of solution vector corresponding to displacement DOFs in 3 directions at the 4 nodes...
OutputTools< Real >::VariableValue VariableValue
std::vector< MaterialProperty< RankTwoTensor > * > _local_transformation_matrix
Transformation matrix to map stresses from global coordinate to the element&#39;s local coordinate...
virtual void updateGVectors()
Updates the vectors required for shear locking computation for finite rotations.
std::vector< ADMaterialProperty< RankTwoTensor > * > _ge
ge matrix for elasticity tensor conversion
std::vector< std::vector< Real > > _phi_map
Shape function value.
std::vector< MaterialProperty< RankTwoTensor > * > _total_global_strain
Total strain in global coordinate system.
const InputParameters & parameters() const
const bool _large_strain
Flag to compute large strains.
const NumericVector< Number > *const & _sol
std::vector< MaterialProperty< RankTwoTensor > * > _covariant_transformation_matrix
Covariant base vector matrix material property to transform stress.
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_dzeta_old
Old derivative of global x, y and z w.r.t isoparametric coordinate zeta.
virtual void computeSolnVector()
Computes the 20x1 soln vector and its derivatives for each shell element.
std::vector< Point > _2d_points
Quadrature points in the in-plane direction in isoparametric coordinate system.
std::vector< ADMaterialProperty< Real > * > _J_map
Material property containing jacobian of transformation.
ADComputeIncrementalShellStrain(const InputParameters &parameters)
ADMaterialProperty< RankTwoTensor > * _transformation_matrix
Rotation matrix material property.
virtual void computeNodeNormal()
Computes the node normal at each node.
std::vector< const MaterialProperty< RankTwoTensor > * > _total_strain_old
Old total strain increment in the covariant coordinate system.