IFEM  90A354
SIMsolution.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _SIM_SOLUTION_H_
15 #define _SIM_SOLUTION_H_
16 
17 #include "MatVec.h"
18 #include <string>
19 #include <map>
20 
21 
27 {
28 protected:
30  SIMsolution() = default;
32  virtual ~SIMsolution() = default;
33 
37  void initSolution(size_t ndof, size_t nsol = 1);
38 
41  void pushSolution(unsigned short int nVecState = 1);
42 
43  using SerializeMap = std::map<std::string,std::string>;
44 
48  bool saveSolution(SerializeMap& data, const std::string& name) const;
49 
53  bool restoreSolution(const SerializeMap& data, const std::string& name);
54 
59  static std::string serialize(const double* v, size_t n);
64  static void deSerialize(const std::string& data, double* v, size_t n);
65 
66 public:
68  virtual const Vectors& getSolutions() const { return solution; }
70  virtual Vectors& theSolutions() { return solution; }
71 
73  virtual const Vector& getSolution(int ix = 0) const { return solution[ix]; }
75  virtual void setSolution(const RealArray& s, int ix = 0) { solution[ix] = s; }
76 
77 protected:
79 };
80 
81 #endif
std::vector< Real > RealArray
A real-valued array without algebraic operations.
Definition: ImmersedBoundaries.h:29
Global algebraic operations on index 1-based matrices and vectors.
std::vector< Vector > Vectors
An array of real-valued vectors with algebraic operations.
Definition: MatVec.h:37
Solution vector container with serialization support.
Definition: SIMsolution.h:27
static void deSerialize(const std::string &data, double *v, size_t n)
Helper method for deserializing a double array from a text string.
Definition: SIMsolution.C:92
void initSolution(size_t ndof, size_t nsol=1)
Initializes the solution vectors.
Definition: SIMsolution.C:22
void pushSolution(unsigned short int nVecState=1)
Pushes the solution vector stack.
Definition: SIMsolution.C:31
Vectors solution
Stack of solution vectors.
Definition: SIMsolution.h:78
static std::string serialize(const double *v, size_t n)
Helper method for serializing a double array into a text string.
Definition: SIMsolution.C:79
virtual ~SIMsolution()=default
Empty default destructor.
std::map< std::string, std::string > SerializeMap
Convenience type.
Definition: SIMsolution.h:43
bool saveSolution(SerializeMap &data, const std::string &name) const
Writes current solution to a serialization container.
Definition: SIMsolution.C:43
virtual Vectors & theSolutions()
Returns a reference to the solution vectors (for assignment).
Definition: SIMsolution.h:70
bool restoreSolution(const SerializeMap &data, const std::string &name)
Restores the solution from a serialization container.
Definition: SIMsolution.C:61
virtual const Vector & getSolution(int ix=0) const
Returns a const reference to current solution vector.
Definition: SIMsolution.h:73
SIMsolution()=default
The default constructor is protected to allow sub-classes only.
virtual void setSolution(const RealArray &s, int ix=0)
Modifies the current solution vector (used by sub-iterations only).
Definition: SIMsolution.h:75
virtual const Vectors & getSolutions() const
Returns a const reference to the solution vectors.
Definition: SIMsolution.h:68
A vector class with some added algebraic operations.
Definition: matrix.h:64