OdeSolution.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _ODESOLUTION_HPP_
00031 #define _ODESOLUTION_HPP_
00032
00033 #include <fstream>
00034 #include <sstream>
00035 #include <boost/shared_ptr.hpp>
00036
00037 #include "ColumnDataWriter.hpp"
00038 #include "AbstractOdeSystemInformation.hpp"
00039
00043 class OdeSolution
00044 {
00045 private:
00046
00048 unsigned mNumberOfTimeSteps;
00049
00051 std::vector<double> mTimes;
00052
00054 std::vector<std::vector<double> > mSolutions;
00055
00061 boost::shared_ptr<const AbstractOdeSystemInformation> mpOdeSystemInformation;
00062
00063 public:
00064
00068 OdeSolution();
00069
00075 unsigned GetNumberOfTimeSteps();
00076
00082 void SetNumberOfTimeSteps(unsigned numTimeSteps);
00083
00089 void SetOdeSystemInformation(boost::shared_ptr<const AbstractOdeSystemInformation> pOdeSystemInfo);
00090
00097 std::vector<double> GetVariableAtIndex(unsigned index);
00098
00104 std::vector<double>& rGetTimes();
00105
00111 std::vector<std::vector<double> >& rGetSolutions();
00112
00126 void WriteToFile(std::string directoryName,
00127 std::string baseResultsFilename,
00128 std::string timeUnits,
00129 unsigned stepsPerRow=1,
00130 bool cleanDirectory=true,
00131 unsigned precision=8);
00132 };
00133
00134 #endif //_ODESOLUTION_HPP_