MAST
mindlin_bending_operator.h
Go to the documentation of this file.
1 /*
2  * MAST: Multidisciplinary-design Adaptation and Sensitivity Toolkit
3  * Copyright (C) 2013-2019 Manav Bhatia
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 
20 #ifndef __mast_mindlin_bending_operator_h__
21 #define __mast_mindlin_bending_operator_h__
22 
23 // MAST includes
25 
26 
27 namespace MAST {
28 
29 
32 
33  public:
34 
36 
37  virtual ~MindlinBendingOperator();
38 
42  virtual bool include_transverse_shear_energy() const {
43  return true;
44  }
45 
52  virtual void
54  const unsigned int qp,
56 
61  void
63  const unsigned int qp,
64  const Real z,
65  MAST::FEMOperatorMatrix& Bmat_bend);
69  virtual void
70  calculate_transverse_shear_residual(bool request_jacobian,
71  RealVectorX& local_f,
72  RealMatrixX& local_jac);
73 
77  virtual void
79  bool request_jacobian,
80  RealVectorX& local_f,
81  RealMatrixX& local_jac);
82 
86  virtual void
88  (const MAST::FunctionBase& p,
89  const unsigned int s,
91  bool request_jacobian,
92  RealVectorX& local_f,
93  RealMatrixX& local_jac);
94 
95  protected:
96 
97  void
98  _transverse_shear_operations(const std::vector<std::vector<Real> >& phi,
99  const std::vector<std::vector<libMesh::RealVectorValue> >& dphi,
100  const std::vector<Real>& JxW,
101  const unsigned int qp,
102  const RealMatrixX& material,
103  FEMOperatorMatrix& Bmat_trans,
104  RealVectorX& phi_vec,
105  RealVectorX& vec_n2,
106  RealVectorX& vec_2,
107  RealMatrixX& mat_n2n2,
108  RealMatrixX& mat_2n2,
109  bool request_jacobian,
110  RealVectorX& local_f,
111  RealMatrixX& local_jac);
112 
117  };
118 }
119 
120 
121 
122 #endif // __mast_mindlin_bending_operator_h__
void initialize_bending_strain_operator_for_z(const MAST::FEBase &fe, const unsigned int qp, const Real z, MAST::FEMOperatorMatrix &Bmat_bend)
initializes the bending strain operator for the specified quadrature point and z-location.
virtual void initialize_bending_strain_operator(const MAST::FEBase &fe, const unsigned int qp, MAST::FEMOperatorMatrix &Bmat)
initialze the bending strain operator for Mindlin element, withouth the z-location.
virtual bool include_transverse_shear_energy() const
returns true if this bending operator supports a transverse shear component
void _transverse_shear_operations(const std::vector< std::vector< Real > > &phi, const std::vector< std::vector< libMesh::RealVectorValue > > &dphi, const std::vector< Real > &JxW, const unsigned int qp, const RealMatrixX &material, FEMOperatorMatrix &Bmat_trans, RealVectorX &phi_vec, RealVectorX &vec_n2, RealVectorX &vec_2, RealMatrixX &mat_n2n2, RealMatrixX &mat_2n2, bool request_jacobian, RealVectorX &local_f, RealMatrixX &local_jac)
virtual void calculate_transverse_shear_residual(bool request_jacobian, RealVectorX &local_f, RealMatrixX &local_jac)
calculate the transverse shear component for the element
virtual void calculate_transverse_shear_residual_sensitivity(const MAST::FunctionBase &p, bool request_jacobian, RealVectorX &local_f, RealMatrixX &local_jac)
calculate the transverse shear component for the element
unsigned int _shear_quadrature_reduction
reduction in quadrature for shear energy
libMesh::Real Real
Matrix< Real, Dynamic, Dynamic > RealMatrixX
Bending strain operator for 1D element.
Matrix< Real, Dynamic, 1 > RealVectorX
MindlinBendingOperator(MAST::StructuralElementBase &elem)
virtual void calculate_transverse_shear_residual_boundary_velocity(const MAST::FunctionBase &p, const unsigned int s, const MAST::FieldFunction< RealVectorX > &vel_f, bool request_jacobian, RealVectorX &local_f, RealMatrixX &local_jac)
calculate the transverse shear component for the element