MAST
isotropic_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__isotropic_element_property_card_3D__
21 #define __mast__isotropic_element_property_card_3D__
22 
23 // MAST includes
25 
26 
27 
28 namespace MAST
29 {
30 
33 
34  public:
37  _material(nullptr)
38  { }
39 
44 
45 
49  virtual unsigned int dim() const {
50  return 3;
51  }
52 
56  virtual bool if_isotropic() const {
57  return true;
58  }
59 
60 
65  _material = &mat;
66  }
67 
68 
73  libmesh_assert(_material); // make sure it has already been set
74  return *_material;
75  }
76 
77 
83  bending_model(const MAST::GeomElem& elem) const {
84  libmesh_assert(false);
85  }
86 
92  virtual int extra_quadrature_order(const MAST::GeomElem& elem) const {
93  libmesh_assert(false);
94  return 0;
95  }
96 
100  virtual bool depends_on(const MAST::FunctionBase& f) const;
101 
102 
103  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
104  stiffness_A_matrix(const MAST::ElementBase& e) const;
105 
106  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
107  stiffness_B_matrix(const MAST::ElementBase& e) const;
108 
109  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
110  stiffness_D_matrix(const MAST::ElementBase& e) const;
111 
112  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
113  damping_matrix(const MAST::ElementBase& e) const;
114 
115  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
116  inertia_matrix(const MAST::ElementBase& e) const;
117 
118  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
120 
121  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
123 
124  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
126 
127  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
129 
130  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
132 
133  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
135 
136  virtual std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
138 
139  virtual const MAST::FieldFunction<Real>&
140  section(const MAST::ElementBase& e) const {
141  libmesh_error();
142  MAST::FieldFunction<Real>* ptr = nullptr;
143  return *ptr;
144  }
145 
146  protected:
147 
152  };
153 }
154 
155 
156 #endif // __mast__isotropic_element_property_card_3D__
virtual unsigned int dim() const
dimension of the element for which this property is defined
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 > > stiffness_A_matrix(const MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_conductance_matrix(const MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > damping_matrix(const MAST::ElementBase &e) const
virtual const MAST::FieldFunction< Real > & section(const MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_expansion_A_matrix(const MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_D_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 std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_expansion_B_matrix(const MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > prestress_B_matrix(MAST::ElementBase &e) const
virtual ~IsotropicElementPropertyCard3D()
virtual destructor
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > prestress_A_matrix(MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_B_matrix(const MAST::ElementBase &e) const
virtual bool if_isotropic() const
return true if the property is isotropic
This class acts as a wrapper around libMesh::Elem for the purpose of providing a uniform interface fo...
Definition: geom_elem.h:59
const MAST::MaterialPropertyCardBase & get_material() const
returns a reference to the material
MAST::MaterialPropertyCardBase * _material
pointer to the material property card
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_capacitance_matrix(const MAST::ElementBase &e) const
virtual void set_material(MAST::MaterialPropertyCardBase &mat)
sets the material card
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > transverse_shear_stiffness_matrix(const MAST::ElementBase &e) const
BendingOperatorType
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > inertia_matrix(const MAST::ElementBase &e) const
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...
This is the base class for elements that implement calculation of finite element quantities over the ...
Definition: elem_base.h:72