-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfigurecalculationdialog.cpp
More file actions
82 lines (68 loc) · 2.74 KB
/
configurecalculationdialog.cpp
File metadata and controls
82 lines (68 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "configurecalculationdialog.h"
#include "ui_configurecalculationdialog.h"
namespace {
static const QStringList methodNames = {"Hartree-Fock", "DFT"};
static const QList<int> methodValues = {NWChemConfiguration::MethodSCF, NWChemConfiguration::MethodDFT};
}
ConfigureCalculationDialog::ConfigureCalculationDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ConfigureCalculationDialog)
{
ui->setupUi(this);
ui->methodComboBox->addItems(methodNames);
ui->methodComboBox->setCurrentIndex(1);
QStringList basisSets = {"6-31G**", "6-311G**"};
ui->basisComboBox->addItems(basisSets);
ui->basisComboBox->setCurrentIndex(0);
QStringList functionals = {"B3LYP"};
ui->functionalComboBox->addItems(functionals);
ui->functionalComboBox->setCurrentIndex(0);
currentFunctional = ui->functionalComboBox->currentText();
connect(ui->functionalComboBox, &QComboBox::currentTextChanged, this, [this](QString text) {
if (!text.isEmpty())
currentFunctional = text;
});
// https://stackoverflow.com/questions/34603778/cannot-connect-qbuttongroup-buttonclicked-to-a-functor
connect(ui->methodComboBox, &QComboBox::currentTextChanged, this, [this](QString text) {
if (text == "Hartree-Fock")
{
ui->functionalComboBox->setCurrentText("");
ui->functionalComboBox->setEnabled(false);
}
else
{
ui->functionalComboBox->setCurrentText(currentFunctional);
ui->functionalComboBox->setEnabled(true);
}
});
}
ConfigureCalculationDialog::~ConfigureCalculationDialog()
{
delete ui;
}
void ConfigureCalculationDialog::setConfig(const NWChemConfiguration &conf)
{
ui->basisComboBox->setCurrentText(conf.basis);
ui->functionalComboBox->setCurrentText(conf.functional);
// Set the method last so the combo box event can clear/enable/disable the functional as needed
int methodIdx = methodValues.indexOf(conf.method);
if (methodIdx < 0)
methodIdx = 0;
ui->methodComboBox->setCurrentIndex(methodIdx);
ui->taskOptCheckBox->setChecked(conf.taskOpt);
ui->taskFreqCheckBox->setChecked(conf.taskFreq);
}
NWChemConfiguration ConfigureCalculationDialog::getConfig()
{
NWChemConfiguration result;
result.driverMaxIter = 100;
result.method = NWChemConfiguration::Method(methodValues[ui->methodComboBox->currentIndex()]);
result.basis = ui->basisComboBox->currentText();
if (result.method == NWChemConfiguration::MethodDFT)
result.functional = ui->functionalComboBox->currentText();
else
result.functional = QString();
result.taskOpt = ui->taskOptCheckBox->isChecked();
result.taskFreq = ui->taskFreqCheckBox->isChecked();
return result;
}