UltraScan III
us_equiltime.h
Go to the documentation of this file.
1 #ifndef US_EQUILTIME_H
2 #define US_EQUILTIME_H
3 
4 #include "us_extern.h"
5 #include "us_widgets.h"
6 #include "us_help.h"
7 #include "us_plot.h"
8 #include "us_editor.h"
9 #include "us_model.h"
10 #include "us_simparms.h"
11 #include "us_astfem_math.h"
12 #include "us_astfem_rsa.h"
13 
14 #include "qwt_counter.h"
15 
16 class US_EquilTime : public US_Widgets
17 {
18  Q_OBJECT
19 
20  public:
21  US_EquilTime();
22 
23  private:
27 
28  enum { PROLATE, OBLATE, ROD, SPHERE };
29  enum { INNER, OUTER, CENTER, CUSTOM };
30  enum { SIGMA, RPM };
31 
35 
36  double rpm_start;
37  double rpm_stop;
38  double sigma_start;
39  double sigma_stop;
42 
43  QVector< double > sim_radius;
44  QVector< double > concentration;
45 
46  double current_time;
47  double step_time;
49 
50  QList< double > speed_steps;
51 
53  QwtPlot* equilibrium_plot;
54  QwtPlotCurve* current_curve;
56 
57  QLabel* lb_lowspeed;
58  QLabel* lb_highspeed;
59 
60  QwtCounter* cnt_top;
61  QwtCounter* cnt_bottom;
62  QwtCounter* cnt_lowspeed;
63  QwtCounter* cnt_highspeed;
64  QwtCounter* cnt_speedsteps;
65  QwtCounter* cnt_tolerance;
66  QwtCounter* cnt_timeIncrement;
67 
68  QTextEdit* te_speedlist;
70 
71  QPushButton* pb_changeModel;
72  QPushButton* pb_estimate;
73 
74  void init_simparams ( void );
75  void init_astfem_data ( void );
76  double rpmFromSigma ( double sigma );
77  double sigmaFromRpm ( double rpm );
78 
79  private slots:
80  void update_speeds ( int );
81  void new_channel ( int );
82  void new_lowspeed ( double );
83  void new_highspeed ( double );
84  void new_speedstep ( double );
85  void simulate ( void );
86  void change_model ( void );
87  void set_model ( US_Model );
88 
89  void check_equil ( QVector< double >*, double* );
90 
91  void set_time ( double time )
92  { step_time = time; };
93 
94  void help ( void )
95  { showHelp.show_help("manual/us_equiltime.html"); };
96 };
97 #endif