From b21db641d96a4b089bc0dc8a937c1a4a16cf7611 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 | 8 ++++++++ tools/lammps-gui/lammpswrapper.cpp | 13 +++++++++++++ tools/lammps-gui/lammpswrapper.h | 1 + 3 files changed, 22 insertions(+) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 68b29d4830..68b76186d2 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -1170,6 +1170,14 @@ void LammpsGui::start_lammps() lammps.open(narg, args); lammpsstatus->show(); + // must have at least 2 August 2023 version of LAMMPS + 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 (lammps_args.size() > initial_narg) { delete lammps_args.back(); diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index bb46d7c425..ac6bbb1cbc 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -32,6 +32,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 555307960c..7723326145 100644 --- a/tools/lammps-gui/lammpswrapper.h +++ b/tools/lammps-gui/lammpswrapper.h @@ -28,6 +28,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);