velocity output in standard mode
[quplot.git] / dimdialog.cpp
blobdb743fb48981525d8f0a4b012148a89f03cca5d2
2 #include "dimdialog.h"
3 #include "ui_dimdialog.h"
4 #include "calculator.h"
5 #include "qp3.h"
6 #include "ran.h"
8 DimDialog::DimDialog(QuPlot *parent) :
9 QDialog(parent),
10 m_ui(new Ui::DimDialog)
12 m_ui->setupUi(this);
13 qDebug() << "This is DimDialog";
15 d = parent;
16 pi = M_PI;
17 srand(time(NULL));
18 initDialog();
21 DimDialog::~DimDialog()
23 delete m_ui;
26 void DimDialog::initDialog()
28 c = m_ui->comboBox;
29 from = m_ui->fromSpinBox;
30 to = m_ui->toSpinBox;
31 from->setEnabled(false);
32 to->setEnabled(false);
33 m_ui->comboBox->setCurrentIndex(3);
34 m_ui->threshSpinBox->setEnabled(false);
35 m_ui->searchCheck->setEnabled(false);
36 m_ui->fromr1SpinBox->setEnabled(false);
37 m_ui->fromr2SpinBox->setEnabled(false);
38 m_ui->tor1SpinBox->setEnabled(false);
39 m_ui->tor2SpinBox->setEnabled(false);
40 m_ui->stepr1SpinBox->setEnabled(false);
41 m_ui->stepr2SpinBox->setEnabled(false);
42 m_ui->param1Edit->setEnabled(false);
43 m_ui->param2Edit->setEnabled(false);
44 m_ui->searchCheck->setEnabled(false);
45 m_ui->dualbifCheck->setEnabled(false);
46 list.append("david");
47 list.append("damped harmonic oszillator");
48 list.append("harmonic oszillator");
49 list.append("rotating dimer");
50 qDebug() << "inserting list into comboBox";
51 c->insertItems(0,list);
52 qDebug() << "# of items in comboBox: " << c->count();
54 for (i=0;i<list.size();i++) {
55 c->setItemText(i,list.at(i));
56 qDebug() << i << ": " << c->itemText(i);
59 c->setCurrentIndex(0);
62 QRegExp rx("^[\\d-\\D]+$");
64 ui_f1Label = qFindChild<QLabel*>(this,"f1Label");
65 ui_f0Line = qFindChild<QLineEdit*>(this,"f0Line");
66 ui_f1Line = qFindChild<QLineEdit*>(this,"f1Line");
68 ui_f0Validator = new QRegExpValidator(rx,ui_f0Line);
69 ui_f1Validator = new QRegExpValidator(rx,ui_f1Line);
71 ui_f0Line->setValidator(ui_f0Validator);
72 ui_f1Line->setValidator(ui_f1Validator);
74 // ui_f1Label->setEnabled(ui_f0Line->hasAcceptableInput() == true);
75 // ui_f1Line->setEnabled(ui_f0Line->hasAcceptableInput() == true);
78 void DimDialog::changeEvent(QEvent *e)
80 QDialog::changeEvent(e);
81 switch (e->type()) {
82 case QEvent::LanguageChange:
83 m_ui->retranslateUi(this);
84 break;
85 default:
86 break;
89 void DimDialog::on_convergeCheck_stateChanged() {
90 qDebug() << "converge check toggled";
91 bfBox = m_ui->bifurcateCheck;
92 from = m_ui->fromSpinBox;
93 to = m_ui->toSpinBox;
94 stepsize = m_ui->stepsizeSpinBox;
95 steps = m_ui->stepsSpinBox;
96 velox = m_ui->veloxSpinBox;
97 veloy = m_ui->veloySpinBox;
98 cmcheck = m_ui->convergeCheck->isChecked();
99 if (!cmcheck) {
100 d->valuesMap.insert(11,0);
101 from->setEnabled(false);
102 to->setEnabled(false);
103 stepsize->setEnabled(true);
104 bfBox->setEnabled(true);
105 velox->setValue(100);
106 veloy->setValue(100);
107 steps->setValue(1000000);
108 } else {
109 qDebug() << "hello";
110 d->valuesMap.insert(11,1);
111 from->setEnabled(true);
112 to->setEnabled(true);
113 stepsize->setEnabled(false);
114 bfBox->setEnabled(false);
115 velox->setValue(0);
116 veloy->setValue(0);
117 steps->setValue(20);
121 void DimDialog::on_bifurcateCheck_stateChanged()
123 bfcheck = m_ui->bifurcateCheck->isChecked();
124 if (!bfcheck) {
125 d->valuesMap.insert(11,0);
126 m_ui->fromr1SpinBox->setEnabled(false);
127 m_ui->fromr2SpinBox->setEnabled(false);
128 m_ui->tor1SpinBox->setEnabled(false);
129 m_ui->tor2SpinBox->setEnabled(false);
130 m_ui->stepr1SpinBox->setEnabled(false);
131 m_ui->stepr2SpinBox->setEnabled(false);
132 m_ui->samplesSpinBox->setEnabled(false);
133 m_ui->convergeCheck->setEnabled(true);
134 c->setEnabled(true);
135 m_ui->param1Edit->setEnabled(false);
136 m_ui->param2Edit->setEnabled(false);
137 m_ui->fromtSpinBox->setValue(0.0);
138 m_ui->dualbifCheck->setEnabled(false);
139 } else {
140 d->valuesMap.insert(11,2);
141 m_ui->fromr1SpinBox->setEnabled(true);
142 m_ui->tor1SpinBox->setEnabled(true);
143 m_ui->stepr1SpinBox->setEnabled(true);
144 m_ui->samplesSpinBox->setEnabled(true);
145 m_ui->convergeCheck->setEnabled(false);
146 c->setEnabled(false);
147 m_ui->param1Edit->setEnabled(true);
148 m_ui->fromtSpinBox->setValue(0.9);
149 m_ui->dualbifCheck->setEnabled(true);
153 void DimDialog::on_dualbifCheck_stateChanged()
155 bf2check = m_ui->dualbifCheck->isChecked();
156 if (!bf2check) {
157 d->valuesMap.insert(11,2);
158 m_ui->fromr2SpinBox->setEnabled(false);
159 m_ui->tor2SpinBox->setEnabled(false);
160 m_ui->stepr2SpinBox->setEnabled(false);
161 m_ui->param2Edit->setEnabled(false);
163 else {
164 d->valuesMap.insert(11,3);
165 m_ui->fromr2SpinBox->setEnabled(true);
166 m_ui->tor2SpinBox->setEnabled(true);
167 m_ui->stepr2SpinBox->setEnabled(true);
168 m_ui->param2Edit->setEnabled(true);
172 double DimDialog::randpi(Ran &r)
175 Doub s = 2.0*M_PI*r.doub();
176 return s;
179 void DimDialog::on_randomCheck_stateChanged()
181 Ran ran(time(NULL));
182 randcheck = m_ui->randomCheck->isChecked();
183 if (!randcheck)
185 d->valuesMap.insert(28,0);
186 m_ui->offxSpinBox->setEnabled(true);
187 m_ui->offySpinBox->setEnabled(true);
188 m_ui->veloxSpinBox->setEnabled(true);
189 m_ui->veloySpinBox->setEnabled(true);
190 m_ui->phiSpinBox->setEnabled(true);
191 } else {
192 d->valuesMap.insert(28,1);
193 m_ui->offxSpinBox->setValue(randpi(ran));
194 m_ui->offySpinBox->setValue(randpi(ran));
195 m_ui->veloxSpinBox->setValue(randpi(ran));
196 m_ui->veloySpinBox->setValue(randpi(ran));
197 m_ui->phiSpinBox->setValue(randpi(ran)*180/PI);
198 m_ui->offxSpinBox->setEnabled(false);
199 m_ui->offySpinBox->setEnabled(false);
200 m_ui->veloxSpinBox->setEnabled(false);
201 m_ui->veloySpinBox->setEnabled(false);
202 m_ui->phiSpinBox->setEnabled(false);
207 void DimDialog::on_searchCheck_stateChanged()
209 searchcheck = m_ui->searchCheck->isChecked();
210 if (!searchcheck) {
211 m_ui->offxSpinBox->setEnabled(true);
212 m_ui->offySpinBox->setEnabled(true);
213 m_ui->veloxSpinBox->setEnabled(true);
214 m_ui->veloySpinBox->setEnabled(true);
215 m_ui->threshSpinBox->setEnabled(false);
216 } else {
217 m_ui->offxSpinBox->setEnabled(false);
218 m_ui->offySpinBox->setEnabled(false);
219 m_ui->veloxSpinBox->setEnabled(false);
220 m_ui->veloySpinBox->setEnabled(false);
221 m_ui->threshSpinBox->setEnabled(true);
225 void DimDialog::on_comboBox_currentIndexChanged()
227 int index = c->currentIndex();
229 switch (index) {
230 case 0:
231 m_ui->offxSpinBox->setValue(1.0);
232 m_ui->veloxSpinBox->setValue(100.0);
233 m_ui->eta1SpinBox->setValue(0.465);
234 m_ui->eta2SpinBox->setValue(0.0);
235 m_ui->FSpinBox->setValue(0.1);
236 m_ui->wSpinBox->setValue(0.6);
237 m_ui->fromr1SpinBox->setValue(0.45);
238 m_ui->tor1SpinBox->setValue(0.55);
239 m_ui->stepr1SpinBox->setValue(0.0001);
240 m_ui->samplesSpinBox->setValue(3);
241 m_ui->wSpinBox->setValue(0.6);
242 m_ui->aSpinBox->setValue(1.0);
243 m_ui->bSpinBox->setValue(1.24);
244 m_ui->param1Edit->setText("E");
245 break;
246 case 3:
247 m_ui->offxSpinBox->setValue(0);
248 m_ui->offySpinBox->setValue(0);
249 m_ui->veloxSpinBox->setValue(0);
250 m_ui->veloySpinBox->setValue(0);
251 m_ui->phiSpinBox->setValue(0);
252 m_ui->eta1SpinBox->setValue(1.5);
253 m_ui->eta2SpinBox->setValue(1.0);
254 m_ui->FSpinBox->setValue(0.00);
255 m_ui->wSpinBox->setValue(0.1);
256 m_ui->fromr1SpinBox->setValue(0.0);
257 m_ui->tor1SpinBox->setValue(180);
258 m_ui->stepr1SpinBox->setValue(1);
259 m_ui->samplesSpinBox->setValue(3);
260 m_ui->fromtSpinBox->setValue(0);
261 m_ui->tempSpinBox->setValue(0.0);
262 m_ui->aSpinBox->setValue(1.15);
263 m_ui->bSpinBox->setValue(58.0);
264 m_ui->lSpinBox->setValue(2.5);
265 m_ui->thetaSpinBox->setValue(0.0);
266 m_ui->psiSpinBox->setValue(0.0);
267 m_ui->param1Edit->setText("A");
268 m_ui->param2Edit->setText("l");
269 m_ui->fromr1SpinBox->setValue(0.0);
270 m_ui->tor1SpinBox->setValue(90.0);
271 m_ui->fromr2SpinBox->setValue(1.0);
272 m_ui->tor2SpinBox->setValue(10.0);
273 m_ui->USpinBox->setValue(1.0);
274 break;
278 void DimDialog::on_pushButton_clicked()
280 int index = c->currentIndex();
282 qDebug() << "ui_comboBox->currentIndex() = " << index;
283 qDebug() << "populating QMap";
285 d->valuesMap.insert(7,m_ui->timeSpinBox->value());
286 d->valuesMap.insert(8,m_ui->offxSpinBox->value());
287 d->valuesMap.insert(23,m_ui->offySpinBox->value());
288 d->valuesMap.insert(9,m_ui->unusedSpinBox->value());
289 d->valuesMap.insert(10,m_ui->veloxSpinBox->value());
290 d->valuesMap.insert(24,m_ui->veloySpinBox->value());
291 d->valuesMap.insert(22,m_ui->fromtSpinBox->value());
292 d->valuesMap.insert(25,m_ui->eta1SpinBox->value());
293 d->valuesMap.insert(26,m_ui->eta2SpinBox->value());
294 d->valuesMap.insert(2,m_ui->aSpinBox->value());
295 d->valuesMap.insert(3,m_ui->bSpinBox->value());
296 d->valuesMap.insert(4,m_ui->FSpinBox->value());
297 d->valuesMap.insert(6,m_ui->wSpinBox->value());
298 d->valuesMap.insert(27,m_ui->phiSpinBox->value());
299 d->valuesMap.insert(32,m_ui->tempSpinBox->value());
300 d->valuesMap.insert(5,m_ui->lSpinBox->value());
301 d->valuesMap.insert(35,m_ui->samplesSpinBox->value());
302 d->valuesMap.insert(36,m_ui->filterSpinBox->value());
303 d->valuesMap.insert(13,m_ui->stepsizeSpinBox->value());
304 d->valuesMap.insert(14,m_ui->stepsSpinBox->value());
305 d->valuesMap.insert(40,m_ui->thetaSpinBox->value());
306 d->valuesMap.insert(41,m_ui->psiSpinBox->value());
307 d->valuesMap.insert(42,m_ui->USpinBox->value());
308 d->valuesMap.insert(43,m_ui->hstepSpinBox->value());
310 d->valuesMap.insert(29,0); /* disable euler for now */
312 switch (index) {
313 case 0:
314 d->valuesMap.insert(0,2);
315 d->valuesMap.insert(1,1);
316 break;
317 case 1:
318 d->valuesMap.insert(0,2);
319 d->valuesMap.insert(1,2);
320 break;
321 case 2:
322 d->valuesMap.insert(0,2);
323 d->valuesMap.insert(1,3);
324 break;
325 case 3:
326 d->valuesMap.insert(0,3);
327 d->valuesMap.insert(1,4);
328 break;
331 if (cmcheck) {
332 d->valuesMap.insert(14,m_ui->stepsSpinBox->value());
333 d->valuesMap.insert(15,m_ui->fromSpinBox->value());
334 d->valuesMap.insert(16,m_ui->toSpinBox->value());
337 if (bfcheck) {
338 d->valuesMap.insert(17,m_ui->fromr1SpinBox->value());
339 d->valuesMap.insert(18,m_ui->tor1SpinBox->value());
340 d->valuesMap.insert(19,m_ui->stepr1SpinBox->value());
341 d->str1 = m_ui->param1Edit->text();
344 if (bf2check) {
345 d->valuesMap.insert(37,m_ui->fromr2SpinBox->value());
346 d->valuesMap.insert(38,m_ui->tor2SpinBox->value());
347 d->valuesMap.insert(39,m_ui->stepr2SpinBox->value());
348 d->str2 = m_ui->param2Edit->text();
351 if (!searchcheck) {
352 d->valuesMap.insert(30,0);
353 } else {
354 d->valuesMap.insert(30,1);
355 d->valuesMap.insert(31,m_ui->threshSpinBox->value());
358 d->eul = m_ui->eulCheck->isChecked();
359 d->ruk = m_ui->rukCheck->isChecked();
361 qDebug() << "Following values have been set:";
362 QMapIterator<int,double> i(d->valuesMap);
363 while (i.hasNext()) {
364 i.next();
365 qDebug() << i.key() << ": " << i.value();
367 qDebug() << "See quplot.h for an explanation";