MAST
structural_assembly.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__structural_assembly__
21 #define __mast__structural_assembly__
22 
23 // MAST includes
24 #include "base/assembly_base.h"
25 
26 
27 
28 namespace MAST {
29 
30  // Forward declerations
31  class StructuralElementBase;
32 
39 
40  public:
41 
43 
44  virtual ~StructuralAssembly();
45 
46  virtual void init(MAST::AssemblyBase& assembly);
47 
48  virtual void clear();
49 
51 
52  void update_incompatible_solution(libMesh::NumericVector<Real>& X,
53  libMesh::NumericVector<Real>& dX);
54 
55  protected:
56 
57 
58 // /*!
59 // * assembles the point loas
60 // */
61 // void _assemble_point_loads(MAST::PhysicsDisciplineBase& discipline,
62 // MAST::SystemInitialization& system,
63 // libMesh::NumericVector<Real>& res);
64 
66 
70  std::map<const libMesh::Elem*, RealVectorX> _incompatible_sol;
71 
72  };
73 }
74 
75 
76 #endif // __mast__structural_assembly__
This class provides some routines that are common to structural assembly routines.
std::map< const libMesh::Elem *, RealVectorX > _incompatible_sol
map of local incompatible mode solution per 3D elements
void set_elem_incompatible_sol(MAST::StructuralElementBase &elem)
MAST::AssemblyBase * _assembly
assembles the point loas
void update_incompatible_solution(libMesh::NumericVector< Real > &X, libMesh::NumericVector< Real > &dX)
virtual void init(MAST::AssemblyBase &assembly)