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{
28protected:
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
66public:
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
77protected:
79};
80
81#endif
std::vector< Real > RealArray
A real-valued array without algebraic operations.
Definition ImmersedBoundaries.h:32
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
virtual Vectors & theSolutions()
Returns a reference to the solution vectors (for assignment).
Definition SIMsolution.h:70
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
virtual const Vectors & getSolutions() const
Returns a const reference to the solution vectors.
Definition SIMsolution.h:68
virtual const Vector & getSolution(int ix=0) const
Returns a const reference to current solution vector.
Definition SIMsolution.h:73
bool saveSolution(SerializeMap &data, const std::string &name) const
Writes current solution to a serialization container.
Definition SIMsolution.C:43
bool restoreSolution(const SerializeMap &data, const std::string &name)
Restores the solution from a serialization container.
Definition SIMsolution.C:61
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
A vector class with some added algebraic operations.
Definition matrix.h:64