MAST
timoshenko_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_timoshenko_bending_operator_h__
21 #define __mast_timoshenko_bending_operator_h__
22 
23 // MAST includes
25 
26 
27 
28 namespace MAST {
29 
32 
33  public:
35 
37 
41  virtual bool include_transverse_shear_energy() const {
42  return true;
43  }
44 
51  virtual void
53  const unsigned int qp,
55  MAST::FEMOperatorMatrix& Bmat_w);
56 
61  virtual void
63  const unsigned int qp,
64  const Real y,
65  const Real z,
66  MAST::FEMOperatorMatrix& Bmat_bend_v,
67  MAST::FEMOperatorMatrix& Bmat_bend_w);
68 
72  virtual void
73  calculate_transverse_shear_residual(bool request_jacobian,
74  RealVectorX& local_f,
75  RealMatrixX& local_jac);
76 
80  virtual void
82  bool request_jacobian,
83  RealVectorX& local_f,
84  RealMatrixX& local_jac);
85 
89  virtual void
91  (const MAST::FunctionBase& p,
92  const unsigned int s,
94  bool request_jacobian,
95  RealVectorX& local_f,
96  RealMatrixX& local_jac) {
97 
98  libmesh_assert(false); // to be implemented
99  }
100 
101  protected:
102 
103  void
104  _transverse_shear_operations(const std::vector<std::vector<Real> >& phi,
105  const std::vector<std::vector<libMesh::RealVectorValue> >& dphi,
106  const std::vector<Real>& JxW,
107  const unsigned int qp,
108  const RealMatrixX& material,
109  FEMOperatorMatrix& Bmat_v,
110  FEMOperatorMatrix& Bmat_w,
111  RealVectorX& phi_vec,
112  RealVectorX& vec_n2,
113  RealVectorX& vec_2,
114  RealMatrixX& mat_n2n2,
115  RealMatrixX& mat_2n2,
116  bool request_jacobian,
117  RealVectorX& local_f,
118  RealMatrixX& local_jac);
119 
124  };
125 }
126 
127 
128 
129 #endif // __mast_timoshenko_bending_operator_h__
TimoshenkoBendingOperator(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
libMesh::Real Real
unsigned int _shear_quadrature_reduction
reduction in quadrature for shear energy
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_v, FEMOperatorMatrix &Bmat_w, RealVectorX &phi_vec, RealVectorX &vec_n2, RealVectorX &vec_2, RealMatrixX &mat_n2n2, RealMatrixX &mat_2n2, bool request_jacobian, RealVectorX &local_f, RealMatrixX &local_jac)
Matrix< Real, Dynamic, Dynamic > RealMatrixX
virtual void calculate_transverse_shear_residual(bool request_jacobian, RealVectorX &local_f, RealMatrixX &local_jac)
calculate the transverse shear component for the element
Bending strain operator for 1D element.
virtual bool include_transverse_shear_energy() const
returns true if this bending operator supports a transverse shear component
Matrix< Real, Dynamic, 1 > RealVectorX
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
virtual void initialize_bending_strain_operator(const MAST::FEBase &fe, const unsigned int qp, MAST::FEMOperatorMatrix &Bmat_v, MAST::FEMOperatorMatrix &Bmat_w)
initialze the bending strain operator for Timoshenko beam element, withouth the y,z-location.
virtual void initialize_bending_strain_operator_for_yz(const MAST::FEBase &fe, const unsigned int qp, const Real y, const Real z, MAST::FEMOperatorMatrix &Bmat_bend_v, MAST::FEMOperatorMatrix &Bmat_bend_w)
initializes the bending strain operator for the specified quadrature point and y,z-location.