From 2c636c83f576c612e862ad2154348ac032cb4d71 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 25 Sep 2023 08:07:36 -0400 Subject: [PATCH] check for compatible LAMMPS version when creating LAMMPS instance This check must be done at runtime, since the LAMMPS shared library may have been loaded dynamically and thus required library functions may not be present or missing features with too only a LAMMPS version. --- tools/lammps-gui/lammpsgui.cpp | 9 +++++++++ tools/lammps-gui/lammpswrapper.cpp | 13 +++++++++++++ tools/lammps-gui/lammpswrapper.h | 1 + 3 files changed, 23 insertions(+) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 80e099ba2d..ebfb7f90fb 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -1398,6 +1398,15 @@ void LammpsGui::start_lammps() lammps.open(narg, args); lammpsstatus->show(); + // must have at least 2 August 2023 version of LAMMPS + // TODO: must update this check before next feature release + if (lammps.version() < 20230802) { + QMessageBox::critical(this, "Incompatible LAMMPS Version", + "LAMMPS-GUI version " LAMMPS_GUI_VERSION " requires\n" + "LAMMPS version 2 August 2023 or later"); + exit(1); + } + // delete additional arguments again (3 were there initially while ((int)lammps_args.size() > initial_narg) { delete lammps_args.back(); diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index a71a750ac8..84de5866c4 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -36,6 +36,19 @@ void LammpsWrapper::open(int narg, char **args) #endif } +int LammpsWrapper::version() +{ + int val = 0; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + val = ((liblammpsplugin_t *)plugin_handle)->version(lammps_handle); +#else + val = lammps_version(lammps_handle); +#endif + } + return val; +} + int LammpsWrapper::extract_setting(const char *keyword) { int val = 0; diff --git a/tools/lammps-gui/lammpswrapper.h b/tools/lammps-gui/lammpswrapper.h index 665f44c25c..1d024a94e7 100644 --- a/tools/lammps-gui/lammpswrapper.h +++ b/tools/lammps-gui/lammpswrapper.h @@ -29,6 +29,7 @@ public: void force_timeout(); + int version(); int extract_setting(const char *keyword); void *extract_global(const char *keyword); void *extract_atom(const char *keyword);