MAST
structural_fluid_interaction_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_fluid_interaction_assembly_h__
21 #define __mast__structural_fluid_interaction_assembly_h__
22 
23 
24 // MAST includes
25 #include "base/assembly_base.h"
26 
27 namespace MAST {
28 
29  // Forward declerations
30  class RealOutputFunction;
31  class FunctionBase;
32 
34  MASS, // mass matrix
35  DAMPING, // velocity proportional term
36  STIFFNESS, // tangent stiffess matrix
37  FORCE, // force vector
39  };
40 
41 
43  public MAST::AssemblyBase {
44 
45  public:
46 
51 
52 
58 
62  virtual void
64 
65 
73  void set_base_solution(const libMesh::NumericVector<Real>& sol,
74  bool if_sens = false);
75 
76 
82  void clear_base_solution(bool if_sens = false);
83 
89 
90 
96  const libMesh::NumericVector<Real>&
97  base_sol(bool if_sens = false) const;
98 
99 
105  virtual void
107  (std::vector<libMesh::NumericVector<Real>*>& basis,
108  std::map<MAST::StructuralQuantityType, RealMatrixX*>& mat_qty_map);
109 
110 
111 
118  virtual void
120  (const MAST::FunctionBase& f,
121  std::vector<libMesh::NumericVector<Real>*>& basis,
122  std::map<MAST::StructuralQuantityType, RealMatrixX*>& mat_qty_map);
123 
124 
125 
126  protected:
127 
128 
134  const libMesh::NumericVector<Real> * _base_sol;
135 
141  const libMesh::NumericVector<Real> * _base_sol_sensitivity;
142  };
143 }
144 
145 
146 
147 #endif // __mast__structural_fluid_interaction_assembly_h__
void clear_base_solution(bool if_sens=false)
Clears the pointer to base solution.
const libMesh::NumericVector< Real > & base_sol(bool if_sens=false) const
virtual void assemble_reduced_order_quantity_sensitivity(const MAST::FunctionBase &f, std::vector< libMesh::NumericVector< Real > * > &basis, std::map< MAST::StructuralQuantityType, RealMatrixX * > &mat_qty_map)
calculates the sensitivity of reduced order matrix given the basis provided in basis.
StructuralFluidInteractionAssembly()
constructor associates this assembly object with the system
virtual void assemble_reduced_order_quantity(std::vector< libMesh::NumericVector< Real > * > &basis, std::map< MAST::StructuralQuantityType, RealMatrixX * > &mat_qty_map)
calculates the reduced order matrix given the basis provided in basis.
virtual ~StructuralFluidInteractionAssembly()
destructor resets the association of this assembly object with the system
virtual void clear_discipline_and_system()
clears association with a system to this discipline, and vice-a-versa
void set_base_solution(const libMesh::NumericVector< Real > &sol, bool if_sens=false)
if the eigenproblem is defined about a non-zero base solution, then this method provides the object w...
const libMesh::NumericVector< Real > * _base_sol_sensitivity
sensitivity of base solution may be needed for sensitivity analysis.
const libMesh::NumericVector< Real > * _base_sol
base solution about which this eigenproblem is defined.