MAST
assembly_elem_operation.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_assembly_elem_operation_h__
21 #define __mast_assembly_elem_operation_h__
22 
23 // MAST includes
24 #include "base/mast_data_types.h"
25 
26 
27 // libMesh includes
28 #include "libmesh/elem.h"
29 
30 namespace MAST {
31 
32  // Forward declerations
33  class FEBase;
34  class ElementBase;
35  class AssemblyBase;
36  class FunctionBase;
37  class SystemInitialization;
38  class PhysicsDisciplineBase;
39  class GeomElem;
40 
42 
43  public:
45 
46  virtual ~AssemblyElemOperations();
47 
48 
53 
58 
62  virtual void
65 
66 
70  virtual void
72 
76  virtual void set_assembly(MAST::AssemblyBase& assembly);
77 
82 
86  virtual void clear_assembly();
87 
93  virtual void
94  set_elem_data(unsigned int dim,
95  const libMesh::Elem& ref_elem,
96  MAST::GeomElem& elem) const = 0;
97 
102  virtual void
103  init(const MAST::GeomElem& elem) = 0;
104 
108  virtual void clear_elem();
109 
115 
116  libmesh_assert(_physics_elem);
117  return *_physics_elem;
118  }
119 
123  virtual void
124  set_elem_solution(const RealVectorX& sol);
125 
129  virtual void
131 
135  virtual void
137 
138 
142  virtual void set_elem_velocity(const RealVectorX& vel);
143 
147  virtual void set_elem_velocity_sensitivity(const RealVectorX& vel);
148 
152  virtual void set_elem_perturbed_velocity(const RealVectorX& vel);
153 
157  virtual void set_elem_acceleration(const RealVectorX& accel);
158 
162  virtual void set_elem_acceleration_sensitivity(const RealVectorX& accel);
163 
167  virtual void set_elem_perturbed_acceleration(const RealVectorX& accel);
168 
169 
170  protected:
171 
174 
176 
178  };
179 }
180 
181 
182 #endif // __mast_assembly_elem_operation_h__
183 
virtual void set_elem_perturbed_solution(const RealVectorX &sol)
sets the element perturbed solution
virtual void set_elem_acceleration_sensitivity(const RealVectorX &accel)
sets the element acceleration
virtual void set_elem_solution_sensitivity(const RealVectorX &sol)
sets the element solution sensitivity
virtual void set_assembly(MAST::AssemblyBase &assembly)
sets the assembly object
virtual void set_elem_solution(const RealVectorX &sol)
sets the element solution
virtual void clear_discipline_and_system()
clears association with a system to this discipline
MAST::PhysicsDisciplineBase * _discipline
virtual void set_elem_data(unsigned int dim, const libMesh::Elem &ref_elem, MAST::GeomElem &elem) const =0
some analyses may want to set additional element data before initialization of the GeomElem...
MAST::SystemInitialization & get_system_initialization()
MAST::ElementBase & get_physics_elem()
MAST::PhysicsDisciplineBase & get_discipline()
virtual void clear_assembly()
clears the assembly object
virtual MAST::AssemblyBase & get_assembly()
virtual void set_discipline_and_system(MAST::PhysicsDisciplineBase &discipline, MAST::SystemInitialization &system)
attaches a system to this discipline
Matrix< Real, Dynamic, 1 > RealVectorX
virtual void init(const MAST::GeomElem &elem)=0
initializes the object for calculation of element quantities for the specified elem.
virtual void set_elem_perturbed_acceleration(const RealVectorX &accel)
sets the element perturbed acceleration
This class acts as a wrapper around libMesh::Elem for the purpose of providing a uniform interface fo...
Definition: geom_elem.h:59
virtual void set_elem_velocity(const RealVectorX &vel)
sets the element velocity
virtual void set_elem_velocity_sensitivity(const RealVectorX &vel)
sets the element velocity sensitivity
virtual void clear_elem()
clears the element initialization
virtual void set_elem_perturbed_velocity(const RealVectorX &vel)
sets the element perturbed velocity
virtual void set_elem_acceleration(const RealVectorX &accel)
sets the element acceleration
MAST::SystemInitialization * _system
This is the base class for elements that implement calculation of finite element quantities over the ...
Definition: elem_base.h:72