* upgraded euler to euler-maruyama
[quplot.git] / calculator.h
blobe9e6544f1b54150b17e988e3e8d1b692707bb6ad
1 //=============================================================================
2 //
3 // CLASS Calculation
4 //
5 //=============================================================================
7 #ifndef CALCULATOR_H
8 #define CALCULATOR_H
11 //== INCLUDES =================================================================
13 #include <QtGui/QDialog>
14 #include <QFile>
15 #include <QHash>
16 #include <QMultiMap>
18 #include "qp3.h"
19 #include "dimdialog.h"
20 #include "quplot.h"
21 #include "deviates.h"
23 //== CLASS DEFINITION =========================================================
26 class Calculator : public QDialog
28 Q_OBJECT
30 public:
32 // constructor
33 explicit Calculator(QuPlot *parent = 0);
34 virtual ~Calculator();
35 void calc (int N);
36 void calc2 (const Int n);
38 private:
39 Doub randpi(Ran &r);
41 void write_to_file(const QString & file,
42 const QMap<double, double> & map_x,
43 const QMap<double,double> & map_y,
44 const QMap<double,double> & map_phi,
45 const Doub params[]);
46 void derive_init();
48 void set_color(const Doub vel, QString & color);
49 void derivs(const Doub x, VecDoub_I &y, VecDoub_O &dydt,
50 const Doub params[]);
51 void derivw(const Doub x, VecDoub_I &y, VecDoub_O &dW,
52 const Doub params[], Normaldev &gauss);
53 void rk4(VecDoub_I &y, VecDoub_I &dydx, const Doub x, const Doub h, VecDoub_O &yout,
54 const Doub params[]);
55 void euler(VecDoub_I &y, VecDoub_I &dydx, VecDoub_I &dW, const Doub x,
56 const Doub h, VecDoub_O &yout);
57 void IC_setup(VecDoub &y, Doub x0, Doub y0, Doub xdot0, Doub ydot0, Doub phi0,
58 Doub params[]);
59 void diffusion(VecDoub_I & msd, const Int & samples, Doub & sigma);
60 float gaussian_noise();
61 void gen_gnuplot(const QString & name);
62 void filter(QMap<double, double> & map, const Doub & eps);
63 void bifparam(const int &v, const QString & param, const Doub &r, Doub params[]);
64 QuPlot *c;
66 QMultiMap<double, double> rkValues_x, rkValues_y,
67 rkValues_xdot, rkValues_ydot,
68 rkAvgvelo_x, rkAvgvelo_y, rkAvgvelo_phi,
69 rkValues_xtemp, rkValues_ytemp, rkValues_phitemp,
70 rkValues_p1x, rkValues_p2x,
71 rkValues_p1y, rkValues_p2y,
72 rkValues_phi, rkValues_phidot,
73 rkVariance_x, rkVariance_y, rkVariance_phi,
74 rkDist_x, rkDist_y, rkDist_phi,
75 rkDefAngle;
77 QMultiMap<double, double> euValues_x, euValues_y,
78 euValues_xdot, euValues_ydot,
79 euAvgvelo_x, euAvgvelo_y, euAvgvelo_phi,
80 euValues_xtemp, euValues_ytemp, euValues_phitemp,
81 euValues_p1x, euValues_p2x,
82 euValues_p1y, euValues_p2y,
83 euValues_phi, euValues_phidot,
84 euVariance_x, euVariance_y, euVariance_phi,
85 euDist_x, euDist_y, euDist_phi,
86 euDefAngle;
88 QMultiMap<double, double> NullMap; // dummy var for use with write_to_file()
90 QString file_rk_bif, file_rk_avg, file_rk_out, file_rk_pt1, file_rk_pt2,
91 file_rk_biv, file_rk_conv, file_rk_variance, file_rk_distance,
92 file_rk_defangle, file_rk_dualbif;
93 QString file_eu_bif, file_eu_avg, file_eu_out, file_eu_pt1, file_eu_pt2,
94 file_eu_biv, file_eu_conv, file_eu_variance, file_eu_distance,
95 file_eu_defangle, file_eu_dualbif;
97 Int v;
98 Doub T;
104 //=============================================================================
105 #endif // CALCULATOR_H defined
106 //=============================================================================