IFEM  90A354
SIMmodal.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _SIM_MODAL_H
15 #define _SIM_MODAL_H
16 
17 #include "SIMbase.h"
18 
19 class ElmMats;
20 
21 
28 class SIMmodal
29 {
30 protected:
32  SIMmodal(std::vector<Mode>& modes);
34  virtual ~SIMmodal();
35 
37  bool parseParams(const tinyxml2::XMLElement* elem);
38 
41  const Vectors& expandSolution(const Vectors& mSol);
42 
48  bool assembleModalSystem(const TimeDomain& time, const Vectors& mSol,
49  double beta, double gamma);
50 
52  bool swapSystem(AlgEqSystem*& sys, SAM*& sam);
53 
55  bool saveModes(std::map<std::string,std::string>& data) const;
57  bool restoreModes(const std::map<std::string,std::string>& data);
58 
59 public:
61  virtual const Vectors& expandSolution(const Vectors&, bool = false) = 0;
63  const Vectors& expandedSolution() const { return sol; }
66  const Vector& expandedSolution(int idx) const;
68  size_t numExpSolution() const { return sol.size(); }
69 
71  virtual bool projectModes(Matrices&, std::vector<std::string>&,
72  SIMoptions::ProjectionMethod) { return false; }
73 
74 protected:
75  std::vector<Mode>& myModes;
76 
79 
80  bool parsed;
81  double alpha1;
82  double alpha2;
83 
84 private:
88 };
89 
90 #endif
std::vector< Vector > Vectors
An array of real-valued vectors with algebraic operations.
Definition: MatVec.h:37
std::vector< Matrix > Matrices
An array of real-valued matrices with algebraic operations.
Definition: MatVec.h:39
Base class for NURBS-based FEM simulators.
Class for storage of general algebraic system of equations.
Definition: AlgEqSystem.h:33
Class collecting the element matrices associated with a FEM problem.
Definition: ElmMats.h:34
This class contains data and functions for the assembly of FE matrices.
Definition: SAM.h:39
Class with support for assembly of modal linear equation systems.
Definition: SIMmodal.h:29
SAM * modalSam
Auxiliary data for FE assembly management.
Definition: SIMmodal.h:86
virtual const Vectors & expandSolution(const Vectors &, bool=false)=0
Expands and returns the current dynamic solution.
SIMmodal(std::vector< Mode > &modes)
The constructor initializes the reference to the eigenmodes.
Definition: SIMmodal.C:57
ElmMats * myElmMat
Nodal (single-DOF) element matrices.
Definition: SIMmodal.h:87
const Vectors & expandedSolution() const
Returns the current expanded dynamic solution.
Definition: SIMmodal.h:63
double alpha2
Stiffness-proportional damping parameter.
Definition: SIMmodal.h:82
bool saveModes(std::map< std::string, std::string > &data) const
Writes the eigenmodes to a serialization container.
Definition: SIMmodal.C:258
double alpha1
Mass-proportional damping parameter.
Definition: SIMmodal.h:81
Vector Rhs
Current right-hand-side load vector of the dynamic system.
Definition: SIMmodal.h:77
bool parseParams(const tinyxml2::XMLElement *elem)
Parses structural damping parameters from an XML element.
Definition: SIMmodal.C:76
bool restoreModes(const std::map< std::string, std::string > &data)
Restores the eigenmodes from a serialization container.
Definition: SIMmodal.C:280
bool parsed
Set to true after the model has been initialized.
Definition: SIMmodal.h:80
Vectors sol
Expanded solution vectors from the modal solution.
Definition: SIMmodal.h:78
std::vector< Mode > & myModes
Array of eigenmodes.
Definition: SIMmodal.h:75
const Vectors & expandSolution(const Vectors &mSol)
Calculates the dynamic solution from the previous modal solution.
Definition: SIMmodal.C:103
virtual bool projectModes(Matrices &, std::vector< std::string > &, SIMoptions::ProjectionMethod)
Projects the secondary solution associated with the eigenmodes.
Definition: SIMmodal.h:71
bool assembleModalSystem(const TimeDomain &time, const Vectors &mSol, double beta, double gamma)
Administers assembly of the modal equation system.
Definition: SIMmodal.C:165
bool swapSystem(AlgEqSystem *&sys, SAM *&sam)
Swaps the modal equation system before/after load vector assembly.
Definition: SIMmodal.C:92
size_t numExpSolution() const
Returns the number of expanded dynamic solution vectors.
Definition: SIMmodal.h:68
AlgEqSystem * modalSys
The modal equation system.
Definition: SIMmodal.h:85
virtual ~SIMmodal()
The destructor deletes the dynamically allocated members.
Definition: SIMmodal.C:68
ProjectionMethod
Enum defining the available projection methods.
Definition: SIMoptions.h:107
A vector class with some added algebraic operations.
Definition: matrix.h:64
Struct representing the time domain.
Definition: TimeDomain.h:23