00001 #ifndef DENSITYPLOTTER_H
00002 #define DENSITYPLOTTER_H
00003 #include <fstream>
00004 #include <armadillo>
00005 using namespace arma;
00006
00007 class WaveFunction;
00008 class INIParser;
00009 class Config;
00010
00011 using namespace std;
00012
00013
00018 class StepConfig {
00019 public:
00020 int firstStep;
00021 int lastStep;
00022 int nSteps;
00023 };
00024
00025 class DensityPlotter
00026 {
00027
00028 public:
00029 DensityPlotter(Config *config);
00030 void makePlot();
00031 void loadConfiguration(INIParser *settings);
00032 ~DensityPlotter();
00033
00034 double charge() const {
00035 return m_charge;
00036 }
00037
00038
00039 void setCharge(double arg) {
00040 m_charge = arg;
00041 }
00042
00043 void divideSteps(int myRank, int m_nProcesses, int totalSteps, StepConfig *stepConfig);
00044 private:
00045 Config *config;
00046 WaveFunction *m_wave;
00047 INIParser *m_settings;
00048 long *idum;
00049 vec2 *r_old;
00050 vec2 *r_new;
00051 double m_charge;
00052 double m_stepLength;
00053 double aMin;
00054 double bMin;
00055 double aMax;
00056 double bMax;
00057 int aSteps;
00058 int bSteps;
00059 int m_nCycles;
00060 ofstream plotFile;
00061 ofstream params0File;
00062 ofstream params1File;
00063 };
00064
00065 #endif // DENSITYPLOTTER_H