MAST
orthotropic_element_property_card_3D.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__orthotropic_element_property_card_3D__
21 #define __mast__orthotropic_element_property_card_3D__
22 
23 // MAST includes
25 
26 
27 
28 namespace MAST
29 {
30  // Forward declerations
31  class CoordinateBase;
32 
33 
36 
37  public:
40  _material(nullptr),
41  _orient(nullptr)
42  { }
43 
48 
49 
53  virtual unsigned int dim() const {
54  return 3;
55  }
56 
60  virtual bool if_isotropic() const {
61 
62  return false;
63  }
64 
65 
70 
71  _material = &mat;
72  }
73 
74 
79 
80  libmesh_assert(_material); // make sure it has already been set
81  return *_material;
82  }
83 
84 
88  virtual void set_orientation(const MAST::CoordinateBase& orient);
89 
90 
96  bending_model(const MAST::GeomElem& elem) const {
97  libmesh_assert(false);
98  }
99 
105  virtual int extra_quadrature_order(const MAST::GeomElem& elem) const {
106  libmesh_assert(false);
107  return 0;
108  }
109 
113  virtual bool depends_on(const MAST::FunctionBase& f) const;
114 
115 
116  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
117  stiffness_A_matrix(const MAST::ElementBase& e) const;
118 
119  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
120  stiffness_B_matrix(const MAST::ElementBase& e) const;
121 
122  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
123  stiffness_D_matrix(const MAST::ElementBase& e) const;
124 
125  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
126  damping_matrix(const MAST::ElementBase& e) const;
127 
128  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
129  inertia_matrix(const MAST::ElementBase& e) const;
130 
131  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
133 
134  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
136 
137  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
139 
140  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
142 
143  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
145 
146  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
148 
149  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
151 
152  protected:
153 
158 
163  };
164 }
165 
166 
167 #endif // __mast__orthotropic_element_property_card_3D__
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > inertia_matrix(const MAST::ElementBase &e) const
virtual bool if_isotropic() const
return true if the property is orthotropic
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_conductance_matrix(const MAST::ElementBase &e) const
virtual bool depends_on(const MAST::FunctionBase &f) const
returns true if the property card depends on the function f
virtual MAST::BendingOperatorType bending_model(const MAST::GeomElem &elem) const
returns the bending model to be used for the element.
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_expansion_B_matrix(const MAST::ElementBase &e) const
virtual unsigned int dim() const
dimension of the element for which this property is defined
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_capacitance_matrix(const MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_A_matrix(const MAST::ElementBase &e) const
const MAST::MaterialPropertyCardBase & get_material() const
returns a reference to the material
const MAST::CoordinateBase * _orient
coordinate system to define orientation
MAST::MaterialPropertyCardBase * _material
pointer to the material property card
virtual void set_material(MAST::MaterialPropertyCardBase &mat)
sets the material card
This class acts as a wrapper around libMesh::Elem for the purpose of providing a uniform interface fo...
Definition: geom_elem.h:59
virtual int extra_quadrature_order(const MAST::GeomElem &elem) const
returns the extra quadrature order (on top of the system) that this element should use...
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > damping_matrix(const MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > prestress_A_matrix(MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > prestress_B_matrix(MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_D_matrix(const MAST::ElementBase &e) const
virtual void set_orientation(const MAST::CoordinateBase &orient)
sets the orientation coordinate system for this section.
BendingOperatorType
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_B_matrix(const MAST::ElementBase &e) const
Provides the transformation matrix T to transform vector from the orientation provided in this matrix...
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > transverse_shear_stiffness_matrix(const MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_expansion_A_matrix(const MAST::ElementBase &e) const
This is the base class for elements that implement calculation of finite element quantities over the ...
Definition: elem_base.h:72