must stop running LAMMPS simulation before we can close the lammps object
This commit is contained in:
@ -296,6 +296,10 @@ void LammpsGui::new_document()
|
|||||||
current_file.clear();
|
current_file.clear();
|
||||||
ui->textEdit->document()->setPlainText(QString());
|
ui->textEdit->document()->setPlainText(QString());
|
||||||
|
|
||||||
|
if (lammps.is_running()) {
|
||||||
|
stop_run();
|
||||||
|
runner->wait();
|
||||||
|
}
|
||||||
lammps.close();
|
lammps.close();
|
||||||
lammpsstatus->hide();
|
lammpsstatus->hide();
|
||||||
setWindowTitle(QString("LAMMPS-GUI - *unknown*"));
|
setWindowTitle(QString("LAMMPS-GUI - *unknown*"));
|
||||||
@ -565,6 +569,10 @@ void LammpsGui::save_as()
|
|||||||
|
|
||||||
void LammpsGui::quit()
|
void LammpsGui::quit()
|
||||||
{
|
{
|
||||||
|
if (lammps.is_running()) {
|
||||||
|
stop_run();
|
||||||
|
runner->wait();
|
||||||
|
}
|
||||||
lammps.close();
|
lammps.close();
|
||||||
lammpsstatus->hide();
|
lammpsstatus->hide();
|
||||||
lammps.finalize();
|
lammps.finalize();
|
||||||
@ -822,7 +830,7 @@ void LammpsGui::run_buffer()
|
|||||||
char *input = mystrdup(ui->textEdit->toPlainText().toStdString() + "\n");
|
char *input = mystrdup(ui->textEdit->toPlainText().toStdString() + "\n");
|
||||||
is_running = true;
|
is_running = true;
|
||||||
|
|
||||||
LammpsRunner *runner = new LammpsRunner(this);
|
runner = new LammpsRunner(this);
|
||||||
runner->setup_run(&lammps, input);
|
runner->setup_run(&lammps, input);
|
||||||
connect(runner, &LammpsRunner::resultReady, this, &LammpsGui::run_done);
|
connect(runner, &LammpsRunner::resultReady, this, &LammpsGui::run_done);
|
||||||
connect(runner, &LammpsRunner::finished, runner, &QObject::deleteLater);
|
connect(runner, &LammpsRunner::finished, runner, &QObject::deleteLater);
|
||||||
@ -1051,6 +1059,11 @@ void LammpsGui::edit_variables()
|
|||||||
SetVariables vars(newvars);
|
SetVariables vars(newvars);
|
||||||
if (vars.exec() == QDialog::Accepted) {
|
if (vars.exec() == QDialog::Accepted) {
|
||||||
variables = newvars;
|
variables = newvars;
|
||||||
|
if (lammps.is_running()) {
|
||||||
|
stop_run();
|
||||||
|
runner->wait();
|
||||||
|
delete runner;
|
||||||
|
}
|
||||||
lammps.close();
|
lammps.close();
|
||||||
lammpsstatus->hide();
|
lammpsstatus->hide();
|
||||||
}
|
}
|
||||||
@ -1073,6 +1086,11 @@ void LammpsGui::preferences()
|
|||||||
(oldthreads != settings.value("nthreads", 1).toInt()) ||
|
(oldthreads != settings.value("nthreads", 1).toInt()) ||
|
||||||
(oldecho != settings.value("echo", 0).toInt()) ||
|
(oldecho != settings.value("echo", 0).toInt()) ||
|
||||||
(oldcite != settings.value("cite", 0).toInt())) {
|
(oldcite != settings.value("cite", 0).toInt())) {
|
||||||
|
if (lammps.is_running()) {
|
||||||
|
stop_run();
|
||||||
|
runner->wait();
|
||||||
|
delete runner;
|
||||||
|
}
|
||||||
lammps.close();
|
lammps.close();
|
||||||
lammpsstatus->hide();
|
lammpsstatus->hide();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
// forward declarations
|
// forward declarations
|
||||||
|
|
||||||
class GeneralTab;
|
class GeneralTab;
|
||||||
|
class LammpsRunner;
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
@ -114,6 +115,7 @@ private:
|
|||||||
QList<QPair<QString, QString>> variables;
|
QList<QPair<QString, QString>> variables;
|
||||||
|
|
||||||
LammpsWrapper lammps;
|
LammpsWrapper lammps;
|
||||||
|
LammpsRunner *runner;
|
||||||
std::string plugin_path;
|
std::string plugin_path;
|
||||||
bool is_running;
|
bool is_running;
|
||||||
std::vector<char *> lammps_args;
|
std::vector<char *> lammps_args;
|
||||||
|
|||||||
Reference in New Issue
Block a user