13 #include "libmesh/quadrature.h" 14 #include "libmesh/utility.h" 15 #include "libmesh/enum_quadrature_type.h" 16 #include "libmesh/fe_type.h" 17 #include "libmesh/string_to_enum.h" 18 #include "libmesh/quadrature_gauss.h" 35 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
45 for (
unsigned int t = 0; t <
_t_points.size(); ++t)
59 FEType fe_type(Utility::string_to_enum<Order>(
"First"),
60 Utility::string_to_enum<FEFamily>(
"LAGRANGE"));
64 _phi_map = fe->get_fe_map().get_phi_map();
66 for (
unsigned int i = 0; i < 4; ++i)
69 for (
unsigned int i = 0; i <
_2d_points.size(); ++i)
81 for (
unsigned int k = 0;
k <
_nodes.size(); ++
k)
90 for (
unsigned int i = 0; i <
_2d_points.size(); ++i)
95 for (
unsigned int temp1 = 0; temp1 < 5; ++temp1)
98 for (
unsigned int temp2 = 0; temp2 < 20; ++temp2)
111 for (
unsigned int ii = 0; ii < 3; ++ii)
112 for (
unsigned int jj = 0; jj < 3; ++jj)
125 for (
unsigned int k = 0;
k <
_nodes.size(); ++
k)
136 for (
unsigned int i = 0; i <
_2d_points.size(); ++i)
145 for (
unsigned int k = 0;
k <
_nodes.size(); ++
k)
187 for (
unsigned int i = 0; i <
_2d_points.size(); ++i)
191 (*
_B_nl[
j])[i].resize(5, 20);
193 for (
unsigned int k = 0;
k < 4; ++
k)
195 for (
unsigned int p = 0; p < 4; ++p)
313 (*
_B_nl[
j])[i](3, 12 + 2) +=
316 (*
_B_nl[
j])[i](3, 16 + 2) +=
319 (*
_B_nl[
j])[i](3, 12 + 3) +=
322 (*
_B_nl[
j])[i](3, 16 + 3) +=
327 (*
_B_nl[
j])[i](3, 12 + 1) +=
330 (*
_B_nl[
j])[i](3, 16 + 1) +=
333 (*
_B_nl[
j])[i](3, 12 + 0) +=
336 (*
_B_nl[
j])[i](3, 16 + 0) +=
354 (*
_B_nl[
j])[i](4, 12 + 2) +=
357 (*
_B_nl[
j])[i](4, 16 + 2) +=
360 (*
_B_nl[
j])[i](4, 12 + 1) +=
363 (*
_B_nl[
j])[i](4, 16 + 1) +=
368 (*
_B_nl[
j])[i](4, 12 + 3) +=
371 (*
_B_nl[
j])[i](4, 16 + 3) +=
374 (*
_B_nl[
j])[i](4, 12 + 0) +=
377 (*
_B_nl[
j])[i](4, 16 + 0) +=
std::vector< ADMaterialProperty< RankTwoTensor > * > _strain_increment
Strain increment in the covariant coordinate system.
const MaterialProperty< RealVectorValue > & _node_normal_old
Material property storing the old normal to the element at the 4 nodes.
virtual void computeNodeNormal() override
Computes the node normal at each node.
FEProblemBase & _fe_problem
const QBase *const & _qrule
virtual void initQpStatefulProperties() override
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
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< 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.
static const std::string component
registerMooseObject("SolidMechanicsApp", ADComputeFiniteShellStrain)
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.
const VariableValue & _thickness
Coupled variable for the shell thickness.
virtual void updatedxyz() override
Updates covariant vectors at each qp for finite rotations.
ADComputeFiniteShellStrain(const InputParameters ¶meters)
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
virtual void computeBMatrix()
Computes the B matrix that connects strains to nodal displacements and rotations. ...
virtual void updateGVectors() override
Updates the vectors required for shear locking computation for finite rotations.
ADComputeFiniteShellStrain computes the strain increment term for shell elements under finite displac...
std::vector< ADMaterialProperty< RealVectorValue > * > _dxyz_deta
Derivative of global x, y and z w.r.t isoparametric coordinate eta.
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 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.
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< ADRealVectorValue > _v1
First tangential vectors at nodes.
virtual void computeProperties() override
std::vector< std::vector< unsigned int > > _soln_disp_index
Indices of solution vector corresponding to displacement DOFs in 3 directions at the 4 nodes...
static InputParameters validParams()
virtual void computeBNLMatrix()
Computes the B_nl matrix that connects the nonlinear strains to the nodal displacements and rotations...
ADMaterialProperty< T > & declareADProperty(const std::string &name)
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.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
const FEBase *const & getFE(FEType type, unsigned int dim) const
virtual void computeSolnVector()
Computes the 20x1 soln vector and its derivatives for each shell element.
std::vector< ADMaterialProperty< DenseMatrix< Real > > * > _B_nl
Material property to store the B_nl matrix at each quadrature point.
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.
RankTwoTensor _unrotated_total_strain
static InputParameters validParams()
static const std::string k
const Elem *const & _current_elem
std::vector< const MaterialProperty< RankTwoTensor > * > _total_strain_old
Old total strain increment in the covariant coordinate system.