https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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"
15
16namespace libMesh
17{
18class QGauss;
19}
20
22{
23public:
25
27
28protected:
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;
186 const NumericVector<Number> & _sol_old;
187 const RealVectorValue _ref_first_local_dir;
200};
std::vector< const MaterialProperty< RankTwoTensor > * > _covariant_transformation_matrix_old
ADMaterialProperty< RankTwoTensor > * _transformation_matrix
Rotation matrix material property.
virtual void computeSolnVector()
Computes the 20x1 soln vector and its derivatives for each shell element.
std::vector< ADRealVectorValue > _v1
First tangential vectors at nodes.
std::vector< const Node * > _nodes
Vector storing pointers to the nodes of the shell element.
virtual void updateGVectors()
Updates the vectors required for shear locking computation for finite rotations.
std::vector< MaterialProperty< RankTwoTensor > * > _covariant_transformation_matrix
Covariant base vector matrix material property to transform stress.
virtual void computeGMatrix()
Computes the transformation matrix from natural coordinates to local cartesian coordinates for elasti...
std::vector< std::vector< Real > > _dphidxi_map
Derivatives of shape functions w.r.t isoparametric coordinates xi.
std::vector< const MaterialProperty< RankTwoTensor > * > _ge_old
Old ge matrix for elasticity tensor conversion.
const MaterialProperty< RealVectorValue > & _node_normal_old
Material property storing the old normal to the element at the 4 nodes.
std::vector< Point > _2d_points
Quadrature points in the in-plane direction in isoparametric coordinate system.
std::unique_ptr< libMesh::QGauss > _t_qrule
Quadrature rule in the out of plane direction.
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_dxi_old
Old derivative of global x, y and z w.r.t isoparametric coordinate xi.
std::vector< ADMaterialProperty< RealVectorValue > * > _dxyz_dxi
Derivative of global x, y and z w.r.t isoparametric coordinate xi.
virtual void computeNodeNormal()
Computes the node normal at each node.
std::vector< ADMaterialProperty< Real > * > _J_map
Material property containing jacobian of transformation.
std::vector< unsigned int > _disp_num
Variable numbers corresponding to the displacement variables.
const VariableValue & _thickness
Coupled variable for the shell thickness.
NonlinearSystemBase & _nonlinear_sys
Reference to the nonlinear system object.
ADDenseVector _soln_vector
Vector that stores the incremental solution at all the 20 DOFs in the 4 noded element.
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.
const bool _large_strain
Flag to compute large strains.
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_dzeta_old
Old derivative of global x, y and z w.r.t isoparametric coordinate zeta.
std::vector< MaterialProperty< RankTwoTensor > * > _contravariant_transformation_matrix
Contravariant base vector matrix material property to transform strain.
std::vector< ADRealVectorValue > _v2
First tangential vectors at nodes.
std::vector< std::vector< unsigned int > > _soln_rot_index
Indices of solution vector corresponding to rotation DOFs in 2 directions at the 4 nodes.
ADRealVectorValue _x2
simulation variables
std::vector< const MaterialProperty< RankTwoTensor > * > _local_transformation_matrix_old
ADDenseVector _strain_vector
Vector that stores the strain in the the 2 axial and 3 shear directions.
std::vector< ADMaterialProperty< RealVectorValue > * > _dxyz_deta
Derivative of global x, y and z w.r.t isoparametric coordinate eta.
std::vector< ADMaterialProperty< RankTwoTensor > * > _ge
ge matrix for elasticity tensor conversion
unsigned int _ndisp
Number of coupled displacement variables.
std::vector< std::vector< Real > > _phi_map
Shape function value.
std::vector< const MaterialProperty< DenseMatrix< Real > > * > _B_old
Old B_matrix for small strain.
virtual void updatedxyz()
Updates covariant vectors at each qp for finite rotations.
std::vector< ADMaterialProperty< RankTwoTensor > * > _strain_increment
Strain increment in the covariant coordinate system.
std::vector< Point > _t_points
Quadrature points in the out of plane direction in isoparametric coordinate system.
std::vector< const MaterialProperty< Real > * > _J_map_old
Old material property containing jacobian of transformation.
std::vector< const MaterialProperty< RankTwoTensor > * > _total_strain_old
Old total strain increment in the covariant coordinate system.
virtual void computeLocalCoordinates()
Computes the element's local coordinates and store in _e1, _e2 and _e3.
unsigned int _nrot
Number of coupled rotational variables.
virtual void computeBMatrix()
Computes the B matrix that connects strains to nodal displacements and rotations.
std::vector< const MaterialProperty< RealVectorValue > * > _dxyz_deta_old
Old derivative of global x, y and z w.r.t isoparametric coordinate eta.
ADMaterialProperty< RealVectorValue > & _node_normal
Material property storing the normal to the element at the 4 nodes. Stored as a material property for...
std::vector< ADMaterialProperty< RankTwoTensor > * > _total_strain
Total strain increment in the covariant coordinate system.
const NumericVector< Number > *const & _sol
std::vector< std::vector< unsigned int > > _soln_disp_index
Indices of solution vector corresponding to displacement DOFs in 3 directions at the 4 nodes.
std::vector< MaterialProperty< RankTwoTensor > * > _total_global_strain
Total strain in global coordinate system.
std::vector< ADMaterialProperty< RealVectorValue > * > _dxyz_dzeta
Derivative of global x, y and z w.r.t isoparametric coordinate zeta.
std::vector< unsigned int > _rot_num
Variable numbers corresponding to the rotational variables.
std::vector< const MaterialProperty< RankTwoTensor > * > _contravariant_transformation_matrix_old
std::vector< MaterialProperty< RankTwoTensor > * > _local_transformation_matrix
Transformation matrix to map stresses from global coordinate to the element's local coordinate.
const InputParameters & parameters() const
VariableValueTempl< false > VariableValue
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...