From 088ff4ad277707748ab21edd053caabb78612929 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 16 Aug 2023 02:33:18 -0400 Subject: [PATCH] update LAMMPS GUI to version 1.2 --- cmake/CMakeLists.txt | 18 +- cmake/packaging/build_windows_cross_zip.sh | 68 +- cmake/packaging/linux_wrapper.sh | 3 + tools/lammps-gui/CMakeLists.txt | 41 +- tools/lammps-gui/README.md | 102 +- tools/lammps-gui/TODO.md | 22 +- tools/lammps-gui/antialias.png | Bin 0 -> 4688 bytes tools/lammps-gui/application-calc.png | Bin 0 -> 2774 bytes tools/lammps-gui/application-exit.png | Bin 0 -> 2633 bytes tools/lammps-gui/application-plot.png | Bin 0 -> 2293 bytes tools/lammps-gui/axes-img.png | Bin 0 -> 5069 bytes tools/lammps-gui/chartviewer.cpp | 248 +++ tools/lammps-gui/chartviewer.h | 94 ++ tools/lammps-gui/codeeditor.cpp | 142 +- tools/lammps-gui/codeeditor.h | 18 + tools/lammps-gui/document-new.png | Bin 0 -> 2459 bytes tools/lammps-gui/document-open-recent.png | Bin 0 -> 4690 bytes tools/lammps-gui/document-open.png | Bin 0 -> 2237 bytes tools/lammps-gui/document-revert.png | Bin 0 -> 3011 bytes tools/lammps-gui/document-save-as.png | Bin 0 -> 3181 bytes tools/lammps-gui/document-save.png | Bin 0 -> 3469 bytes tools/lammps-gui/edit-copy.png | Bin 0 -> 1295 bytes tools/lammps-gui/edit-cut.png | Bin 0 -> 2185 bytes tools/lammps-gui/edit-delete.png | Bin 0 -> 3145 bytes tools/lammps-gui/edit-paste.png | Bin 0 -> 1913 bytes tools/lammps-gui/edit-redo.png | Bin 0 -> 2222 bytes tools/lammps-gui/edit-undo.png | Bin 0 -> 2128 bytes tools/lammps-gui/emblem-default.png | Bin 0 -> 3591 bytes tools/lammps-gui/emblem-photos.png | Bin 0 -> 4942 bytes tools/lammps-gui/gtk-go-down.png | Bin 0 -> 2388 bytes tools/lammps-gui/gtk-go-up.png | Bin 0 -> 2401 bytes tools/lammps-gui/gtk-zoom-fit.png | Bin 0 -> 5153 bytes tools/lammps-gui/gtk-zoom-in.png | Bin 0 -> 5006 bytes tools/lammps-gui/gtk-zoom-out.png | Bin 0 -> 4829 bytes tools/lammps-gui/hd-img.png | Bin 0 -> 7700 bytes tools/lammps-gui/help-about.png | Bin 0 -> 2978 bytes tools/lammps-gui/help-browser.png | Bin 0 -> 5073 bytes tools/lammps-gui/help-faq.png | Bin 0 -> 2421 bytes tools/lammps-gui/help_index.table | 1443 +++++++++++++++++ tools/lammps-gui/highlighter.cpp | 44 +- .../icons/hicolor/128x128/apps/lammps.png | Bin 0 -> 39487 bytes .../icons/hicolor/16x16/apps/lammps.png | Bin 0 -> 15340 bytes .../icons/hicolor/22x22/apps/lammps.png | Bin 0 -> 15821 bytes .../icons/hicolor/32x32/apps/lammps.png | Bin 0 -> 16813 bytes .../icons/hicolor/48x48/apps/lammps.png | Bin 0 -> 19588 bytes .../icons/hicolor/64x64/apps/lammps.png | Bin 0 -> 22655 bytes tools/lammps-gui/icons/lammps.ico | Bin 0 -> 209266 bytes tools/lammps-gui/icons/lmpfile.ico | Bin 0 -> 190289 bytes tools/lammps-gui/imageviewer.cpp | 318 +++- tools/lammps-gui/imageviewer.h | 33 +- tools/lammps-gui/lammps-gui.desktop | 11 + tools/lammps-gui/lammps-input.xml | 8 + tools/lammps-gui/lammps-logo.png | Bin 0 -> 68913 bytes tools/lammps-gui/lammpsgui.cpp | 797 +++++++-- tools/lammps-gui/lammpsgui.h | 24 +- tools/lammps-gui/lammpsgui.qrc | 51 +- tools/lammps-gui/lammpsgui.ui | 283 ++-- tools/lammps-gui/lammpsrunner.h | 4 +- tools/lammps-gui/lammpswrapper.cpp | 63 +- tools/lammps-gui/lammpswrapper.h | 4 + tools/lammps-gui/logwindow.cpp | 35 + tools/lammps-gui/logwindow.h | 32 + tools/lammps-gui/object-rotate-left.png | Bin 0 -> 2235 bytes tools/lammps-gui/object-rotate-right.png | Bin 0 -> 2332 bytes tools/lammps-gui/ovito.png | Bin 0 -> 7080 bytes tools/lammps-gui/preferences-desktop-font.png | Bin 0 -> 2413 bytes .../preferences-desktop-personal.png | Bin 0 -> 2180 bytes tools/lammps-gui/preferences-desktop.png | Bin 0 -> 2083 bytes tools/lammps-gui/preferences.cpp | 233 ++- tools/lammps-gui/preferences.h | 7 +- tools/lammps-gui/process-stop.png | Bin 0 -> 2287 bytes tools/lammps-gui/setvariables.cpp | 124 ++ tools/lammps-gui/setvariables.h | 43 + tools/lammps-gui/system-box.png | Bin 0 -> 6301 bytes tools/lammps-gui/system-help.png | Bin 0 -> 2567 bytes tools/lammps-gui/update-help-index.sh | 4 + tools/lammps-gui/utilities-terminal.png | Bin 0 -> 2603 bytes tools/lammps-gui/vmd.png | Bin 0 -> 4332 bytes tools/lammps-gui/window-close.png | Bin 0 -> 1981 bytes tools/lammps-gui/x-office-drawing.png | Bin 0 -> 2998 bytes 80 files changed, 3779 insertions(+), 538 deletions(-) create mode 100644 tools/lammps-gui/antialias.png create mode 100644 tools/lammps-gui/application-calc.png create mode 100644 tools/lammps-gui/application-exit.png create mode 100644 tools/lammps-gui/application-plot.png create mode 100644 tools/lammps-gui/axes-img.png create mode 100644 tools/lammps-gui/chartviewer.cpp create mode 100644 tools/lammps-gui/chartviewer.h create mode 100644 tools/lammps-gui/document-new.png create mode 100644 tools/lammps-gui/document-open-recent.png create mode 100644 tools/lammps-gui/document-open.png create mode 100644 tools/lammps-gui/document-revert.png create mode 100644 tools/lammps-gui/document-save-as.png create mode 100644 tools/lammps-gui/document-save.png create mode 100644 tools/lammps-gui/edit-copy.png create mode 100644 tools/lammps-gui/edit-cut.png create mode 100644 tools/lammps-gui/edit-delete.png create mode 100644 tools/lammps-gui/edit-paste.png create mode 100644 tools/lammps-gui/edit-redo.png create mode 100644 tools/lammps-gui/edit-undo.png create mode 100644 tools/lammps-gui/emblem-default.png create mode 100644 tools/lammps-gui/emblem-photos.png create mode 100644 tools/lammps-gui/gtk-go-down.png create mode 100644 tools/lammps-gui/gtk-go-up.png create mode 100644 tools/lammps-gui/gtk-zoom-fit.png create mode 100644 tools/lammps-gui/gtk-zoom-in.png create mode 100644 tools/lammps-gui/gtk-zoom-out.png create mode 100644 tools/lammps-gui/hd-img.png create mode 100644 tools/lammps-gui/help-about.png create mode 100644 tools/lammps-gui/help-browser.png create mode 100644 tools/lammps-gui/help-faq.png create mode 100644 tools/lammps-gui/help_index.table create mode 100644 tools/lammps-gui/icons/hicolor/128x128/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/16x16/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/22x22/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/32x32/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/48x48/apps/lammps.png create mode 100644 tools/lammps-gui/icons/hicolor/64x64/apps/lammps.png create mode 100644 tools/lammps-gui/icons/lammps.ico create mode 100644 tools/lammps-gui/icons/lmpfile.ico create mode 100644 tools/lammps-gui/lammps-gui.desktop create mode 100644 tools/lammps-gui/lammps-input.xml create mode 100644 tools/lammps-gui/lammps-logo.png create mode 100644 tools/lammps-gui/logwindow.cpp create mode 100644 tools/lammps-gui/logwindow.h create mode 100644 tools/lammps-gui/object-rotate-left.png create mode 100644 tools/lammps-gui/object-rotate-right.png create mode 100644 tools/lammps-gui/ovito.png create mode 100644 tools/lammps-gui/preferences-desktop-font.png create mode 100644 tools/lammps-gui/preferences-desktop-personal.png create mode 100644 tools/lammps-gui/preferences-desktop.png create mode 100644 tools/lammps-gui/process-stop.png create mode 100644 tools/lammps-gui/setvariables.cpp create mode 100644 tools/lammps-gui/setvariables.h create mode 100644 tools/lammps-gui/system-box.png create mode 100644 tools/lammps-gui/system-help.png create mode 100755 tools/lammps-gui/update-help-index.sh create mode 100644 tools/lammps-gui/utilities-terminal.png create mode 100644 tools/lammps-gui/vmd.png create mode 100644 tools/lammps-gui/window-close.png create mode 100644 tools/lammps-gui/x-office-drawing.png diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 35abb6f743..f4661183cb 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -1,3 +1,4 @@ +# -*- CMake -*- master configuration file for building LAMMPS ######################################## # CMake build system # This file is part of LAMMPS @@ -888,8 +889,15 @@ else() endif() include(FeatureSummary) feature_summary(DESCRIPTION "The following tools and libraries have been found and configured:" WHAT PACKAGES_FOUND) +if(GIT_FOUND AND EXISTS ${LAMMPS_DIR}/.git) + execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty=-modified --always + OUTPUT_VARIABLE GIT_DESCRIBE + ERROR_QUIET + WORKING_DIRECTORY ${LAMMPS_DIR} + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() message(STATUS "<<< Build configuration >>> - LAMMPS Version: ${PROJECT_VERSION} + LAMMPS Version: ${PROJECT_VERSION} ${GIT_DESCRIBE} Operating System: ${CMAKE_SYSTEM_NAME} ${CMAKE_LINUX_DISTRO} ${CMAKE_DISTRO_VERSION} CMake Version: ${CMAKE_VERSION} Build type: ${LAMMPS_BUILD_TYPE} @@ -1026,6 +1034,14 @@ endif() if(BUILD_LAMMPS_SHELL) message(STATUS "<<< Building LAMMPS Shell >>>") endif() +if(BUILD_LAMMPS_GUI) + message(STATUS "<<< Building LAMMPS GUI >>>") + if(LAMMPS_GUI_USE_PLUGIN) + message(STATUS "Loading LAMMPS library as plugin at run time") + else() + message(STATUS "Linking LAMMPS library at compile time") + endif() +endif() if(ENABLE_TESTING) message(STATUS "<<< Building Unit Tests >>>") if(ENABLE_COVERAGE) diff --git a/cmake/packaging/build_windows_cross_zip.sh b/cmake/packaging/build_windows_cross_zip.sh index 5659b84f74..d02b9cf761 100755 --- a/cmake/packaging/build_windows_cross_zip.sh +++ b/cmake/packaging/build_windows_cross_zip.sh @@ -1,26 +1,64 @@ -#!/bin/bash -vx +#!/bin/bash APP_NAME=lammps-gui -DESTDIR=${PWD}/../LAMMPS_GUI +DESTDIR=${PWD}/LAMMPS_GUI +SYSROOT="$1" echo "Delete old files, if they exist" -rm -rvf ${DESTDIR} LAMMPS-Win10-amd64.zip +rm -rvf ${DESTDIR}/LAMMPS_GUI ${DESTDIR}/LAMMPS-Win10-amd64.zip echo "Create staging area for deployment and populate" DESTDIR=${DESTDIR} cmake --install . --prefix "/" -echo "Add required dependencies for Qt" -for dll in Qt5Core.dll Qt5Gui.dll Qt5Widgets.dll +# no static libs needed +rm -rvf ${DESTDIR}/lib +# but the LAMMPS lib + +echo "Copying required DLL files" +for dll in $(objdump -p *.exe *.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq) do \ - cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/${dll} ${DESTDIR}/bin/ -done -for dir in styles platforms imageformats -do \ - mkdir -p ${DESTDIR}/${dir} - cp -r /usr/x86_64-w64-mingw32/sys-root/mingw/lib/qt5/plugins/${dir}/*.dll ${DESTDIR}/${dir} + doskip=0 + for skip in ADVAPI32 CFGMGR32 GDI32 KERNEL32 MPR NETAPI32 PSAPI SHELL32 USER32 USERENV UxTheme VERSION WS2_32 WSOCK32 d3d11 dwmapi liblammps msvcrt_ole32 + do \ + test ${dll} = ${skip}.dll && doskip=1 + done + test ${doskip} -eq 1 && continue + test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin done -pushd .. -zip -9rv LAMMPS-Win10-amd64.zip LAMMPS_GUI -popd -exit 0 +echo "Copy required Qt plugins" +mkdir -p ${DESTDIR}/qt5plugins +for plugin in imageformats platforms styles +do \ + cp -r ${SYSROOT}/lib/qt5/plugins/${plugin} ${DESTDIR}/qt5plugins/ +done + +echo "Check dependencies of DLL files" +for dll in $(objdump -p ${DESTDIR}/bin/*.dll ${DESTDIR}/qt5plugins/*/*.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq) +do \ + doskip=0 + for skip in ADVAPI32 CFGMGR32 GDI32 KERNEL32 MPR NETAPI32 PSAPI SHELL32 USER32 USERENV UxTheme VERSION WS2_32 WSOCK32 d3d11 dwmapi liblammps msvcrt_ole32 + do \ + test ${dll} = ${skip}.dll && doskip=1 + done + test ${doskip} -eq 1 && continue + test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin +done + +for dll in $(objdump -p ${DESTDIR}/bin/*.dll ${DESTDIR}/qt5plugins/*/*.dll | sed -n -e '/DLL Name:/s/^.*DLL Name: *//p' | sort | uniq) +do \ + doskip=0 + for skip in ADVAPI32 CFGMGR32 GDI32 KERNEL32 MPR NETAPI32 PSAPI SHELL32 USER32 USERENV UxTheme VERSION WS2_32 WSOCK32 d3d11 dwmapi liblammps msvcrt_ole32 + do \ + test ${dll} = ${skip}.dll && doskip=1 + done + test ${doskip} -eq 1 && continue + test -f ${DESTDIR}/bin/${dll} || cp -v ${SYSROOT}/bin/${dll} ${DESTDIR}/bin +done + +cat > ${DESTDIR}/bin/qt.conf < TYPE BIN) + install(FILES $ TYPE BIN) + install(FILES $ TYPE BIN) + add_custom_target(zip + COMMAND sh -vx ${LAMMPS_DIR}/cmake/packaging/build_windows_cross_zip.sh ${CMAKE_INSTALL_PREFIX} + DEPENDS lmp lammps-gui + COMMENT "Create zip file with windows binaries" + BYPRODUCT LAMMPS-Win10-amd64.zip + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") install(TARGETS lammps-gui DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lammps-gui.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications/) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lammps-input.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lammps-input.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/text/x-application-lammps.xml) + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons/hicolor DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/) install(CODE [[ file(GET_RUNTIME_DEPENDENCIES LIBRARIES $ diff --git a/tools/lammps-gui/README.md b/tools/lammps-gui/README.md index 2af9ee6faa..d495121bce 100644 --- a/tools/lammps-gui/README.md +++ b/tools/lammps-gui/README.md @@ -1,104 +1,14 @@ LAMMPS GUI -# Overview - LAMMPS GUI is essentially a small graphical text editor that is linked to the LAMMPS library and thus can run LAMMPS using the contents of the -text buffer as input. This is similar to what people usually would do -using a text editor to edit the input and then a command line terminal -window to run the input commands. The main benefit is that this -integrates very well with graphical desktop environments and that it is -easier to use for beginners in running computations and thus very -suitable for tutorials on LAMMPS. +text buffer as input directly without requiring an additional LAMMPS +executable. It can also capture and show the screen output, a line graph +of thermodynamic data and snapshot images in separate windows. -# Features - -The main window of the LAMMPS GUI is a text editor window with syntax -highlighting set up for LAMMPS input files. It can be used to edit any -kind of text file, but then trying to run those files will cause errors. -The output of a run is captured and displayed in a separate window -dialog. The log window is updated during the run and a progress bar for -each run command shown in the main window. Starting a new run will open -another log windows. After the simulation is finished, an image of the -simulated system can be created and shown in another window. Ongoing -runs can be stopped at the next iteration via triggering a timeout. - -When opening a file, the editor will determine the directory where the -file resides and switch its current working directory to that folder. -Many LAMMPS inputs contain commands that read other files, typically -from the folder with the input file. The GUI will show the current -working directory. The editor window can also receive (entire) files -via drag-n-drop from a file manager GUI or a desktop environment. - -Almost all commands are accessible via hotkeys. Which those hotkeys are, -is shown next to the entries in the menu. Log and image viewer windows -can be closed with CTRL-W (or Command-W on macOS). The "About LAMMPS" -dialog will show the LAMMPS version and the features included into the -LAMMPS library linked to the LAMMPS GUI. - -Due to its nature as a graphical application, it is not possible to use -the LAMMPS GUI in parallel with MPI, but OpenMP multi-threading is -available. - -# Prerequisites and portability - -LAMMPS GUI is programmed using the Qt cross-platform GUI toolkit, -currently using Qt version 5.15LTS for better compatibility with older -compilers. It has been successfully compiled and tested on: - -- Fedora Linux 38 x86\_64 using GCC 13 and Clang 16 -- Apple macOS 12 (Monterey) and macOS 13 (Ventura) with Xcode on arm64 and x86\_64 -- Windows 10 and 11 x86_64 with Visual Studio 2022 and Visual C++ 14.36 - -# Compilation - -The source for the LAMMPS GUI is included with the LAMMPS source code -distribution in the folder `tools/lammps-gui` and thus it can be can be -built as part of a regular LAMMPS compilation. Using CMake is required. -To enable its compilation the CMake variable `-D BUILD_LAMMPS_GUI=on` -must be set when creating the CMake configuration. All other settings -(compiler, flags, compile type) for LAMMPS GUI are then inherited from -the regular LAMMPS build. If the Qt library is packaged for Linux -distributions, then its location is typically auto-detected since the -required CMake configuration files are stored in a location where CMake -can find them without additional help. Otherwise, the location of the -Qt library installation must be indicated by setting `-D -Qt5_DIR=/path/to/qt5/lib/cmake/Qt5`, which is a path to a folder inside -the Qt installation that contains the file `Qt5Config.cmake`. - -It is also possible to build the LAMMPS GUI as a standalone executable -(e.g. when LAMMPS has been compiled with traditional make), then the -CMake configuration needs to be told where to find the LAMMPS headers -and the LAMMPS library, via `-D LAMMPS_SOURCE_DIR=/path/to/lammps/src`. -CMake will try to guess a build folder with the LAMMPS library from that -path, but it can also be set with `-D LAMMPS_LIB_DIR=/path/to/lammps/lib`. - -Rather than linking to the LAMMPS library during compilation, it is also -possible to compile the GUI with a plugin loader library that will load -the LAMMPS library at runtime during startup of the GUI from a shared -library; e.g. `liblammps.so` or `liblammps.dylib` or `liblammps.dll` -depending on the operating system. This has the advantage that the -LAMMPS library can be updated LAMMPS without having to recompile the -GUI. The ABI of the LAMMPS C-library interface is very stable and -generally backward compatible. This feature is enabled by setting -`-D LAMMPS_GUI_USE_PLUGIN=on` and then -`-D LAMMPS_PLUGINLIB_DIR=/path/to/lammps/plugin/loader`. Typically, this -would be the `examples/COUPLE/plugin` folder of the LAMMPS distribution. - -# Platform notes - -## macOS - -When building on macOS, the build procedure will try to manufacture a -drag-n-drop installer, LAMMPS-macOS-multiarch.dmg. To build multi-arch -executables that will run on both, arm64 and x86_64 architectures -natively, it is necessary to set the CMake variable -`-D CMAKE_OSX_ARCHITECTURES=arm64;x86_64`. To achieve wide compatibility -with different macOS versions, you can also set -`-D CMAKE_OSX_DEPLOYMENT_TARGET=11.0` which will set compatibility to macOS -11 (Big Sur) and later, even if you are compiling on a more recent macOS -version. +Detailed documentation about installing and using LAMMPS GUI is in +the LAMMPS manual. -------- -updated by Axel Kohlmeyer, 08/1023 +updated by Axel Kohlmeyer, 2023-08-12 diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index af53fb3cf9..d9581e3ae6 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -2,18 +2,26 @@ LAMMPS-GUI TODO list: # Short term goals +- rewrite syntax highlighting to be line oriented instead of word oriented. + handle first part of line based on regular expressions, then advance and only highlight strings and numbers. + handle "&" continuation and multiline strings with """ like C style comments in Qt docs example - add CTRL-q hotkey to log windows so you can exit the entire application (add do you really want to? dialog to this) - add "syntax check" with enabled "-skiprun" flag -- add multi-tab settings dialog where certain properties can be set through customizing the LAMMPS command line - + select Font -- add list of 5(?) most recently opened/saved files to file dialog (and also write to settings state on exit) (note: must store full path!) +- need to handle "label" and "jump" commands from within ? +- switch processing of input to line based commands or? +- switch input file editor to read-only while loop is running # Long term ideas +- add feature to LAMMPS (to the LAMMPS class) to store current file name and line number, update while reading/parsing + use in error messages + add API to library interface to query this info and use it for highlighting in text editor +- rewrite entire application to either use QtCreator for everything or just build the App and its layout manually +- port to Qt6 +- also a rewrite should establish consistent naming conventions. now we have a mix of LAMMPS style, Qt style, and others. +- add option to attach a debugger to the running program (highly non-portable, need customization support in preferences) - write a "wizard" dialog that can be used for beginners to create an input file template for a few typical use scenarios -- use the "lammps_get_last_thermo" function to get access to thermodynamic data during a run and add plot/graph dialog that can plot one or more of those graphs while the simulation is still running -- possibly also implement a callback interface, so that external programs can be called after thermo data is updated. - support single stepping, i.e. process input line by line (need to detect continuation chars!) with highlighting active line(s) - have command text input file in/above status bar where individual commands can be tested. have insert button to copy line into file at the current point - support text completion as done with lammps-shell -- have context menu for known commands to offer retrieving help by dispatching URL to webbrowser (process index from sphinx for that purpose) -- add a "python" mode, where instead of launching LAMMPS, python is loaded that the LAMMPS python module is made available. +- add a "python" mode, where instead of launching LAMMPS, python is loaded where the LAMMPS python module is made available. +- support multiple tabs and multiple LAMMPS instances? diff --git a/tools/lammps-gui/antialias.png b/tools/lammps-gui/antialias.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7403e11c7e0e65d7afc238805138961f30ee5f GIT binary patch literal 4688 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 Jx-Td`_rHorhwT6W literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp new file mode 100644 index 0000000000..d9fedd9129 --- /dev/null +++ b/tools/lammps-gui/chartviewer.cpp @@ -0,0 +1,248 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "chartviewer.h" + +#include +#include +#include +#include + +using namespace QtCharts; + +ChartWindow::ChartWindow(const QString &_filename, QWidget *parent) : + QWidget(parent), menu(new QMenuBar), file(new QMenu("&File")), active_chart(-1), + filename(_filename) +{ + auto *top = new QHBoxLayout; + menu->addMenu(file); + menu->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); + + columns = new QComboBox; + top->addWidget(menu); + top->addWidget(columns); + saveAsAct = file->addAction("&Save Graph As...", this, &ChartWindow::saveAs); + saveAsAct->setIcon(QIcon(":/document-save-as.png")); + exportCsvAct = file->addAction("&Export data to CSV...", this, &ChartWindow::exportCsv); + exportCsvAct->setIcon(QIcon(":/application-calc.png")); + exportDatAct = file->addAction("Export data to &Gnuplot...", this, &ChartWindow::exportDat); + exportDatAct->setIcon(QIcon(":/application-plot.png")); + file->addSeparator(); + closeAct = file->addAction("&Close", this, &QWidget::close); + closeAct->setIcon(QIcon(":/window-close.png")); + auto *layout = new QVBoxLayout; + layout->addLayout(top); + setLayout(layout); + + connect(columns, SIGNAL(currentIndexChanged(int)), this, SLOT(change_chart(int))); + QSettings settings; + resize(settings.value("chartx", 500).toInt(), settings.value("charty", 320).toInt()); +} + +int ChartWindow::get_step() const +{ + if (charts.size() > 0) { + auto *v = charts[0]; + return (int)v->get_step(v->get_count() - 1); + } else { + return -1; + } +} + +void ChartWindow::reset_charts() +{ + while (layout()->count() > 1) { + auto *item = layout()->takeAt(1); + if (item) { + layout()->removeItem(item); + delete item->widget(); + delete item; + } + } + charts.clear(); + columns->clear(); + active_chart = 0; +} + +void ChartWindow::add_chart(const QString &title, int index) +{ + auto *chart = new ChartViewer(title, index); + layout()->addWidget(chart); + columns->addItem(title, index); + columns->show(); + // hide all but the first chart added + if (charts.size() > 0) chart->hide(); + charts.append(chart); + active_chart = 0; +} + +void ChartWindow::add_data(int step, double data, int index) +{ + for (auto &c : charts) + if (c->get_index() == index) c->add_data(step, data); +} + +void ChartWindow::saveAs() +{ + if (charts.empty() || (active_chart < 0)) return; + QString defaultname = filename + "." + columns->currentText() + ".png"; + if (filename.isEmpty()) defaultname = columns->currentText() + ".png"; + QString fileName = QFileDialog::getSaveFileName(this, "Save Chart as Image", defaultname, + "Image Files (*.jpg *.png *.bmp *.ppm)"); + if (!fileName.isEmpty()) { + charts[active_chart]->grab().save(fileName); + } +} + +void ChartWindow::exportDat() +{ + if (charts.empty() || (active_chart < 0)) return; + QString defaultname = filename + ".dat"; + if (filename.isEmpty()) defaultname = "lammpsdata.dat"; + QString fileName = QFileDialog::getSaveFileName(this, "Save Chart as Gnuplot data", defaultname, + "Image Files (*.dat)"); + if (!fileName.isEmpty()) { + QFile file(fileName); + if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { + + file.write("# Thermodynamic data from "); + file.write(filename.toLocal8Bit()); + file.write("\n# Columns:"); + for (auto &c : charts) { + file.write(" "); + file.write(c->get_title()); + } + file.write("\n"); + + int lines = charts[0]->get_count(); + for (int i = 0; i < lines; ++i) { + // timestep + file.write(QString::number(charts[0]->get_step(i)).toLocal8Bit()); + for (auto &c : charts) { + file.write(" "); + file.write(QString::number(c->get_data(i)).toLocal8Bit()); + } + file.write("\n"); + } + file.close(); + } + } +} + +void ChartWindow::exportCsv() +{ + if (charts.empty() || (active_chart < 0)) return; + QString defaultname = filename + ".csv"; + if (filename.isEmpty()) defaultname = "lammpsdata.csv"; + QString fileName = QFileDialog::getSaveFileName(this, "Save Chart as CSV data", defaultname, + "Image Files (*.csv)"); + if (!fileName.isEmpty()) { + QFile file(fileName); + if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { + + file.write("Step"); + for (auto &c : charts) { + file.write(","); + file.write(c->get_title()); + } + file.write("\n"); + + int lines = charts[0]->get_count(); + for (int i = 0; i < lines; ++i) { + // timestep + file.write(QString::number(charts[0]->get_step(i)).toLocal8Bit()); + for (auto &c : charts) { + file.write(","); + file.write(QString::number(c->get_data(i)).toLocal8Bit()); + } + file.write("\n"); + } + file.close(); + } + } +} + +void ChartWindow::change_chart(int index) +{ + int choice = columns->currentData().toInt(); + for (auto &c : charts) { + if (choice == c->get_index()) + c->show(); + else + c->hide(); + } +} + +void ChartWindow::closeEvent(QCloseEvent *event) +{ + QSettings settings; + if (!isMaximized()) { + settings.setValue("chartx", width()); + settings.setValue("charty", height()); + } + QWidget::closeEvent(event); +} + +/* -------------------------------------------------------------------- */ + +ChartViewer::ChartViewer(const QString &title, int _index, QWidget *parent) : + QChartView(parent), last_step(-1), index(_index), chart(new QChart), series(new QLineSeries), + xaxis(new QValueAxis), yaxis(new QValueAxis) +{ + chart->legend()->hide(); + chart->addAxis(xaxis, Qt::AlignBottom); + chart->addAxis(yaxis, Qt::AlignLeft); + chart->addSeries(series); + series->attachAxis(xaxis); + series->attachAxis(yaxis); + xaxis->setTitleText("Time step"); + xaxis->setTickCount(5); + xaxis->setLabelFormat("%d"); + yaxis->setTickCount(5); + xaxis->setMinorTickCount(5); + yaxis->setMinorTickCount(5); + yaxis->setTitleText(title); + series->setName(title); + + setRenderHint(QPainter::Antialiasing); + setChart(chart); + setRubberBand(QChartView::RectangleRubberBand); +} + +/* -------------------------------------------------------------------- */ + +void ChartViewer::add_data(int step, double data) +{ + if (last_step < step) { + last_step = step; + series->append(step, data); + auto points = series->pointsVector(); + + qreal xmin = 1.0e100; + qreal xmax = -1.0e100; + qreal ymin = 1.0e100; + qreal ymax = -1.0e100; + for (auto &p : points) { + xmin = qMin(xmin, p.x()); + xmax = qMax(xmax, p.x()); + ymin = qMin(ymin, p.y()); + ymax = qMax(ymax, p.y()); + } + xaxis->setRange(xmin, xmax); + yaxis->setRange(ymin, ymax); + } +} + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/chartviewer.h b/tools/lammps-gui/chartviewer.h new file mode 100644 index 0000000000..22f52a82d6 --- /dev/null +++ b/tools/lammps-gui/chartviewer.h @@ -0,0 +1,94 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef CHARTVIEWER_H +#define CHARTVIEWER_H + +#include +#include +#include +#include + +class QAction; +class QMenuBar; +class QMenu; +class QComboBox; +class ChartViewer; + +class ChartWindow : public QWidget { + Q_OBJECT + +public: + ChartWindow(const QString &filename, QWidget *parent = nullptr); + + int num_charts() const { return charts.size(); } + bool has_title(const QString &title, int index) const + { + return (columns->itemText(index) == title); + } + int get_step() const; + void reset_charts(); + void add_chart(const QString &title, int index); + void add_data(int step, double data, int index); + +private slots: + void saveAs(); + void exportDat(); + void exportCsv(); + + void change_chart(int index); + +protected: + void closeEvent(QCloseEvent *event) override; + +private: + QMenuBar *menu; + QMenu *file; + QComboBox *columns; + QAction *saveAsAct; + QAction *exportCsvAct; + QAction *exportDatAct; + QAction *closeAct; + + QString filename; + int active_chart; + QList charts; +}; + +/* -------------------------------------------------------------------- */ + +class ChartViewer : public QtCharts::QChartView { + Q_OBJECT + +public: + explicit ChartViewer(const QString &title, int index, QWidget *parent = nullptr); + + void add_data(int step, double data); + int get_index() const { return index; }; + int get_count() const { return series->count(); } + const char *get_title() const { return series->name().toLocal8Bit(); } + double get_step(int index) const { return series->at(index).x(); } + double get_data(int index) const { return series->at(index).y(); } + +private: + int last_step, index; + QtCharts::QChart *chart; + QtCharts::QLineSeries *series; + QtCharts::QValueAxis *xaxis; + QtCharts::QValueAxis *yaxis; +}; +#endif + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/codeeditor.cpp b/tools/lammps-gui/codeeditor.cpp index f0a375efc0..a259e25c51 100644 --- a/tools/lammps-gui/codeeditor.cpp +++ b/tools/lammps-gui/codeeditor.cpp @@ -15,19 +15,61 @@ #include "lammpsgui.h" #include "linenumberarea.h" +#include +#include #include #include +#include +#include +#include #include #include +#include #include +#include CodeEditor::CodeEditor(QWidget *parent) : QPlainTextEdit(parent) { - lineNumberArea = new LineNumberArea(this); + help_action = new QShortcut(QKeySequence::fromString("Ctrl+?"), parent); + connect(help_action, &QShortcut::activated, this, &CodeEditor::get_help); + // initialize help system + QFile help_index(":/help_index.table"); + if (help_index.open(QIODevice::ReadOnly | QIODevice::Text)) { + while (!help_index.atEnd()) { + auto line = QString(help_index.readLine()); + auto words = line.trimmed().split(' '); + if (words.size() > 2) { + if (words.at(1) == "pair_style") { + pair_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "bond_style") { + bond_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "angle_style") { + angle_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "dihedral_style") { + dihedral_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "improper_style") { + improper_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "fix") { + fix_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "compute") { + compute_map[words.at(2)] = words.at(0); + } else if (words.at(1) == "kspace_style") { + cmd_map["kspace_style"] = "kspace_style.html"; + } + // ignoring: dump, fix_modify ATC + } else if (words.size() == 2) { + cmd_map[words.at(1)] = words.at(0); + } else { + fprintf(stderr, "unhandled: %s", line.toStdString().c_str()); + } + } + help_index.close(); + } + + lineNumberArea = new LineNumberArea(this); connect(this, &CodeEditor::blockCountChanged, this, &CodeEditor::updateLineNumberAreaWidth); connect(this, &CodeEditor::updateRequest, this, &CodeEditor::updateLineNumberArea); - updateLineNumberAreaWidth(0); } @@ -138,6 +180,102 @@ void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event) } } +void CodeEditor::contextMenuEvent(QContextMenuEvent *event) +{ + // reposition the cursor here? + QString page, help; + find_help(page, help); + + // print augmented context menu if an entry was found + auto *menu = createStandardContextMenu(); + if (!page.isEmpty()) { + menu->addSeparator(); + auto action = menu->addAction(QString("View Documentation for '%1'").arg(help)); + action->setIcon(QIcon(":/system-help.png")); + action->setData(page); + connect(action, &QAction::triggered, this, &CodeEditor::open_help); + // if we link to help with specific styles (fix, compute, pair, bond, ...) + // also link to the docs for the primary command + auto words = help.split(' '); + if (words.size() > 1) { + help = words.at(0); + page = words.at(0); + page += ".html"; + auto action2 = menu->addAction(QString("View Documentation for '%1'").arg(help)); + action2->setIcon(QIcon(":/system-help.png")); + action2->setData(page); + connect(action2, &QAction::triggered, this, &CodeEditor::open_help); + } + } + auto action3 = menu->addAction(QString("LAMMPS Manual")); + action3->setIcon(QIcon(":/help-browser.png")); + action3->setData(QString()); + connect(action3, &QAction::triggered, this, &CodeEditor::open_help); + + menu->exec(event->globalPos()); + delete menu; +} + +void CodeEditor::get_help() +{ + QString page, help; + find_help(page, help); + if (!page.isEmpty()) + QDesktopServices::openUrl(QUrl(QString("https://docs.lammps.org/%1").arg(page))); +} + +void CodeEditor::find_help(QString &page, QString &help) +{ + // process line of text where the cursor is + auto text = textCursor().block().text().replace('\t', ' ').trimmed(); + auto style = + QRegularExpression("^(pair|bond|angle|dihedral|improper)_style\\s+(\\S+)").match(text); + help.clear(); + page.clear(); + if (style.hasMatch()) { + if (style.captured(1) == "pair") { + page = pair_map.value(style.captured(2), QString()); + help = QString("pair_style %1").arg(style.captured(2)); + } else if (style.captured(1) == "bond") { + page = bond_map.value(style.captured(2), QString()); + help = QString("bond_style %1").arg(style.captured(2)); + } else if (style.captured(1) == "angle") { + page = angle_map.value(style.captured(2), QString()); + help = QString("angle_style %1").arg(style.captured(2)); + } else if (style.captured(1) == "dihedral") { + page = dihedral_map.value(style.captured(2), QString()); + help = QString("dihedral_style %1").arg(style.captured(2)); + } else if (style.captured(1) == "improper") { + page = improper_map.value(style.captured(2), QString()); + help = QString("improper_style %1").arg(style.captured(2)); + } + } + + style = QRegularExpression("^(fix|compute)\\s+\\w+\\s+\\w+\\s+(\\S+)").match(text); + if (style.hasMatch()) { + help = QString("%1 %2").arg(style.captured(1), style.captured(2)); + if (style.captured(1) == "fix") { + page = fix_map.value(style.captured(2), QString()); + } else if (style.captured(1) == "compute") { + page = compute_map.value(style.captured(2), QString()); + } + } + + // could not find a matching "style", now try the plain command + if (page.isEmpty() && !text.isEmpty()) { + auto cmd = text.split(' ').at(0); + help = cmd; + page = cmd_map.value(cmd, QString()); + } +} + +void CodeEditor::open_help() +{ + QAction *act = qobject_cast(sender()); + QDesktopServices::openUrl( + QUrl(QString("https://docs.lammps.org/%1").arg(act->data().toString()))); +} + // Local Variables: // c-basic-offset: 4 // End: diff --git a/tools/lammps-gui/codeeditor.h b/tools/lammps-gui/codeeditor.h index 49abf81553..57cdd8576b 100644 --- a/tools/lammps-gui/codeeditor.h +++ b/tools/lammps-gui/codeeditor.h @@ -14,7 +14,10 @@ #ifndef CODEEDITOR_H #define CODEEDITOR_H +#include #include +#include +#include class CodeEditor : public QPlainTextEdit { Q_OBJECT @@ -30,14 +33,29 @@ protected: void dragEnterEvent(QDragEnterEvent *event) override; bool canInsertFromMimeData(const QMimeData *source) const override; void dropEvent(QDropEvent *event) override; + void contextMenuEvent(QContextMenuEvent *event) override; private slots: void updateLineNumberAreaWidth(int newBlockCount); void highlightCurrentLine(); void updateLineNumberArea(const QRect &rect, int dy); + void get_help(); + void find_help(QString &page, QString &help); + void open_help(); private: QWidget *lineNumberArea; + QShortcut *help_action; + + QMap cmd_map; + QMap fix_map; + QMap compute_map; + QMap pair_map; + QMap bond_map; + QMap angle_map; + QMap dihedral_map; + QMap improper_map; + QMap dump_map; }; #endif diff --git a/tools/lammps-gui/document-new.png b/tools/lammps-gui/document-new.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf38e87e001fa8724e83793547955782a5f7f77 GIT binary patch literal 2459 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 LNkvXXu0mjf8=)fFDZ*Bm0X>@2HVIW9V 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 FV1gP;po{PIH6d0000NbVXQnL3MO! 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/document-save.png b/tools/lammps-gui/document-save.png new file mode 100644 index 0000000000000000000000000000000000000000..c7745e0abcc9c445427964f47deff599b8673b72 GIT binary patch literal 3469 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/edit-copy.png b/tools/lammps-gui/edit-copy.png new file mode 100644 index 0000000000000000000000000000000000000000..3e95555a4ecad5b39b39a9604c2cc69dd440f827 GIT binary patch literal 1295 zcmV+q1@QWbP)mej##v;1%u-Yw9TH-gt~$rXt^4YXGn45%cL+>DbyaoU$NB0zb8|ehY%y4(i40FR%YgWt|W{z3JJa3ERPd@$xF`9Jd zLNUg&jUnK837`OD?hOznfMT5HL?m4+unzzN*S^074o))O0Z(icl$v4WZGKGk{i)NZ z00<#=2Oxw{F<>zPs0`1+P#H|#r`*7#zL%Rk#&MSbDh5WQQ6r*M0RW(4#A*gt?iMl2 z&lv~n(uHycLJXK$eRt!H@R^t>S*cv7=!@o&*h1)@0e5HV`ciGC2qg7qiDdLdcqZ+U zg@w~;F=F=&Sn~NIl9YxwhEmSEJ1SrZE{?jPiGkSdCaxG5EshX`+(rQrHV^1do<8dP zrD7&@8b*`9x;p~62;zVy;{_!D0MEg>JE}tcQMKOhmVv@w9e!9^$_0^VVj*uOF(C*J z6+;uOoLOAlM+TAuID+DUl3Y5uRbDj#+6+L}>!oX2cImTE{n*3D==b}G$W#JwXAIz+ z87-iyh$yOB^+getyp;;fW`YsGEb{bI&oCSg84Lz@9lM$2|LU7BE&-Q!&47reMC7PC zZjKdw9C5*MvMfsgv=*S6$uGpn&714|y*}Xfom(|swL1a0BL)OmUS3ADhZY8^qADnf z0aeaEc{XQ8wF;?8*m+8XF$Bgj5XOOCuh#^y3jw$d196k&HR0j)ffV7j=0@U(gQwv* z1XgaWu(q~Fzu(Uj-4p_FM`F%_(c%cL`G3)uTEA4I;z(k>P_Le}Pz<4x85VJosRZDT zT&Ro)HGej8nV@Ev0!D7Q3nJD?(+y+Hn4h0#?)W3j%pOMYsRZD5o7e$)?9mgg#chib z^GJ*lD;8)90l4)eCA|99J8xVtGcAQ$J!ThKwid&k{~v>JVmRd2UshTFXPtikP(u># zMgVRJ;QezSUIZ@Q%L;#V{sVvE`Iq?fuisg@vC@e1f}mNCBS!}GdObw6kt=p10JFA# zr+M(`QHH}I*^DxGeC{p*s3K%pR_2Up1z_s{da4Wt17>GuQ4tW$HI!;809CX#0oXc# zXqE(?aDC~=Jr{uO1K1k@*d2hq5P)$%7-(AncFsWC0R|Cma*&*OCFi4DKn`EcmEKC44 zfZJ*1H{9J?1uy|bli_W>K(qwJa`L==2KKWYyeHo8@*nIMJ9Wj$w#@(l002ovPDHLk FV1l{HLSg^_ literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/edit-cut.png b/tools/lammps-gui/edit-cut.png new file mode 100644 index 0000000000000000000000000000000000000000..804d0cdb436319edc933dd54b76fea63de539535 GIT binary patch literal 2185 zcmV;42zK|0P)G^O1H9dMgU#9$P^smIBMLyBtGv|euz}Yz47|^aSvXEvc>R&+lcP9PUH!>8WzRD_1a`Xx z)Ee$~L;9u7kyP$S}^*CyB0waUpHwL%-&Hpqt6lmVhop*EM7sbuRS3LrZ>doia{jI`r7 zpv8JO#N}2Y3mupR>_~l|e)Qxk@(a~M^xf{k2kYBgZE)kpb^Hb>D`(^=fdC3FT{?Ha z8;f}=qEyh71(R9tHyBEO5~Lfa$LLQ`^rzNR#yUG3kXNAcDHK^7W&{A8XE>GI(~L#f z=CA~#>ac#A1#MoROeXtkfi}o}*WiEva*8^qPnC@z_YcnKaay6s{=T+2-`9oF6go<% zpeYOb(qs4Y3e+Fh)zt{mp90z0)&kYHZw9a{wI4WeAa2GlG&yRS{_MGvqrtvjD{y>p z;2vDP`XLk)<_0MG1N}XM^VGG7`TS}+>*P+wmo z9M~v3w&ptM?QW+o<-?=+A7|B-lH;UnbMrX9)oum5tpPr~auE&|7Yfc(W{CGxz*WJX zUt3mI7B%bc#0oC^9i8q7PmbzzhoS2FM^O2X3aGyIPdx9~;ck63o_Q1=EbNuD_EL|B zwQ`fWbW~fE2Y$aFhK5}5{*i;2l_oqcD0#eoZkyG=N*sFYt!Vr(^;cGY0994jz-qJL zN38&~Mfsq~%Q-YFepV@CEWyawduFk?9iQVU69&d6@fpA;=rZ^D>9%$L{An!Y5;$_S z7%pBs2ZwiTbJ2Wg9j%`r{g9pa$ZpsH;3kVrB2mMY<;zFyTeiSpX66HNq4e(D34cvY zgn#|v_d@ZWI#mWI{$hZe@4f@&2?@fyYnl!T*&%ymm+XfX07k32YSpSSpIi<%R<87) zh>i7|qoc=A#?2DR`-BC+ ziKwWG#*G`HY27+FAr{x5x@cGSkX z<4(+i32O!^6!nn)x5zHpr+vZ#z$6wsdtQANt}a61v;(BU(5RSR3A;~Ts%qw%2!YlQJ%u_W}0u>umP|E^dg8Kqim*Npwm5Mm+aF% zVF7>}z5Dm%}Tlk0+fX)i%^!L zEK_5Y&nG4Ew5~oq9nQtY`N|{`zGA_Gk^0nBAiG!4KJ6100D7W;)emGV7tZnE?Ot(qn@CTcIch#;yk~Nu@s`+69<5Q z^RgJrKoH)KpM7@1{>m%Rw`UL7UVa%W)6>UFMWVj#jBUkrD^b!=lBQFLfMhVX3D@<~ zdeS3(vP1UJdEeWNy~%cwIkI&=T1SZqOH$2Kyy6X(B% zl8&;30HefA6>=ye$=_w{n>mbWbz*TN>EqLZ^eRW?jA{Cm!RRLqKooL{qC;tZ24xk> z>d^C<&^S3NdD8k%^f--w;!vB63kgM9GQBm1Q-AK?taAY700iaVm+Qh7q7l(+00000 LNkvXXu0mjfh=({C literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/edit-delete.png b/tools/lammps-gui/edit-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..a2fcfdcf10f248aaf5b83d2fcf25af79d6ec6d8f GIT binary patch literal 3145 zcmV-P47T%$P)4h9c_2`7WoBh^Wo~0-b1m?* zJpcdz7IZ~ebU}4=Xm4@=L2hJnWnpt5PHAj&b8l`d@8qKZ0013yMObuGZ*_8GWdLY& zbZ|N^FL!r$E@5tDa%Ew2ZZ30Wq3e3h000Y6NklC<8OOH}vN3T9NyxRi zHzA~n97Yg1G=PG|yBvxoA__)=)M;sL#u=xzHEBi#+j@|I;#iMC&?v1Ukn(EiVDpI1yz=Ug2OmAnPok-egV?Ay1KZQC}o-*XSy?!1$1x7|jaWn~^?aj~l-KVRRW zQq{I0#&d!)Em`llgDi^{xzQ7L zO-|05|C|At?0bg%{2F6PiOY8P-DKUoiEJBhCF>8DL*(UTR^^c;H=T`z zPd%$wQ}6EG=N$m1Cd!Xq*II+t}+KPKw>;&9Bag{7h= z4D;r>Te7no#?uoK4Pb)R7)ncB){PsxP0Oy6Gl5tx~zZ%*e>}Y(~M~noTa8uu*L&5~-;9TY_uAr_JE9g{4hW(3k zEU{q?U?NqU7cO*n-Es>Vv$FgK>`y*uXc2Z9WQ5ej&`;;w=1|QFu+96=hz2^#cvC_;q)z5$t__kG}_4G?5pd0lvp&eC6-2tQcc} zbJ%KY{do;AV<{`66KQGsaT)kJBcretv%mA!TS=dhK^?$=E_HS2LmK$w%P;u_g)$LN zJoEa2{UHswEM_ubvEbaS!Mt=Soyf>=9iKkEFrtC4l*%go{P`Z!)mM{VsT4uXn8*VI zE)m@Ac8{6^eB86QK7@%g0b~En81Y;uFotgqa1PF8S+~|}02&Nfk?>p?{46=SDzbsh z%){*1fVEhko-P7d|M2?&1EYH(yoq}M(#hxN7C+MZJ_FYJdXbwobnu**Kc7BJNjV(R zz$vA&sq?z)NIzo+>DU11egCf_=tNEM=TO%oiD!C0`kTnj8nBfi(}D%`X>xK?L<1+4 zN)xX>I;_X-X=$VbeP5m=m&+N!gjY`}`&Xd&Acwe5|YAJw|Y_ zAubbGC$QCh;yIW7*oPvw(16C&Uw%3FK;%i>l$v^&yGx6=CUsJh2w>UyB!c#ez@d!r zv9A8PkU~QlGc>!YD}IM1YnF+Rn*&S2M&SH$o-Y~1&DuEGS?RpzQ<)oHgorl z67G#{C)2Nf>CfAWRZs^5@5jgM$Gsc95G)uuDd~ zW)2*DT?pCt;`8E~S5SDk%&V`xEb4GwpJ;|-+tjVpiiYEyoLh~j@TvTK&$|l6__xy^ z;N<~JmQ#nNs~KzYX$}T-TdaLV0 z4XkVU-BTm68Ehmq==r1Z@veqTE?ILyUu?avP}F>qk>S*0KD1z8?g!o5zGXA@G=Cjr zWc>8BV#iszRmAeg#hS0iLkkV(d?z-x=AwMH_}t(WZxy#dSq)nL9fiWZPcE-Rt~}&a zg6Tj3gCHxeeJcQ!8LIoW?8rfL+EprYWPjLeCXk*s1K*fWIsXd+re^B za-jys3?YyY7J{3>Ca@!C(xhEgQ>J{jKPJZcwnB0Clf1m)7EDMU-^vL_^r6Ov#&-+J0FUQ`XpN>djhe349dX|z&wz9K|?5b5`zSg0y4o&ums%1y#cm? zU(A{`>Dld3QH@W@<=TBQG2Q#4qg`)CM-RUNUc>nda(VZz=xELM$&)`s*{4zGXW)LY z9;^Zjq()LojTV32lQ>L|_=Z)2lptLiT9<)E0E?CE7O)Q73GM2o9n^j5I#uC1XjFkYuUH0!fzcB}zi4N@BTTCd(%9 j!`^rQYVe(bi^#tL=KjLd9M)lb00000NkvXXu0mjfN+tnj literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/edit-paste.png b/tools/lammps-gui/edit-paste.png new file mode 100644 index 0000000000000000000000000000000000000000..65ac12ed87b8d7c17526a7b0f0234f6f2bb446b3 GIT binary patch literal 1913 zcmV-<2Zs2GP)gn+?6As7aOaYp6%&wWdbQE zrheSMb-w5OJwNK!h?((T-rRfIdLSBig0pAOE>iNRos%zyOB!|)P&HEn70jFQxNplh zPM$pZpM3*BBLCP_ZR)NlDwn_j2{*vZkn9|2G#g)yseJ<=>2yxqy1Y`Ft5s@;G*aUL8>^8?A zes-c(Z%;o6eBDeJ)1ihcs2Oi13vA4OoI5`K8CtFQx(};XYdrn*la$wA;iJ*3I420{ z^9@79T}18My6Jv==Qp2;$7Z13tUg$o|G?=FE*zbz)aKF$nc>y=%WEyRT6I4Exl`0< z>I~yd5#h`CKfn`D{EB~GIl|q`bJV9IQZk{ry}o$qwZEQj__qMQKQ;r;|KOfC7LMMz zD9JiLUQe@$S6;j{%SPp9?z{I3l*?uIq685^z31Gszh~_qFLM9!2Bnfi1WL7ee5uZ> zFZ}M}T@U^7$k+@dzOz`Fo+bYG8^Qa~NtBJP2Az6~=l^sLMo_U~#M|4%jcww#XJ)Db zfRERy-LQa9+KUqjVpUD8&Oh9Yn`&2i?&7~#d;Lw!Y==D^NB$bcF_`j+8@Di<=|g9z zS0)6&lXtNQl%ogBBtj7=IiXT65k-=U%E%>&2{K^lH9=Z(j_Fzj8`}T20}Ik+BR{{{BpFb}REvgM zQ3}J0W&pH4Y^I9(i2?Avpc~$~V{It|lai44-ApoqN=8L6VF}qVfoc;2WTum2zz-v# zp)I@qMI-I8CKm%)rrdnOWhpCr(Z>uHCPH^UI$AqX5u7ODG%K?zF>iwL6chqL!v+4cF6qifS6X8iF_* zfAfcL!F!c4)9CQ-@S0W;&m%NKHYWCz}|mmLcAfDj|cj@=fVF>(xq zw6~`qPQ8`=F3Tic!waXDhX0Yxw|oGC6a;Q!Y_Jcxm%>1}|N> zkbZy=7g$LDN?;;e*6K3UH{bE)5Rlk~6jz!at`6te3uAUzip_HklB#Dzj+ zIA@p|njK?^35F3xQ2^j_394B967LZa*=aF25)nuGt*jIPMd4V|%9vHo;Xq^z2(Y@k zintOkGtfDl6C8m7=UDmJO3I9Ly_6anI}3#{I3*GhpOVu95(VSSKn4#|Mup?LKvTnd^E=`|-KF~ri3Y&oY?fi{qc2pNdX+ZlkVu-AcuFTdV- zYW}6?zI4m+PgQ0Q9Nu02p)E)*C*9ayT3*8C^q(C|?zr2HiXoxx&$?F&y-?EW2ry0W z1EOY<=nvwIjd|e6FaE5TuWrBj!YAK({Pw9RnI4pc%pmd5N+7xYkwOsW^{k|Af>T9Z zYKBP~48p)xZDf;YS|&nwd$r z2o_eU`&X_*%@}-cYin!Y35K`w@*&GKgVHF&uO4R7%VMY+oFgMTJu@(KZY!vw0kq9b z3jhWcvJp1d$J|5|l+(WT*8+L}pFQ3OFy8iGcI;2Rl5`cW00000NkvXXu0mjfVSR>F literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/edit-redo.png b/tools/lammps-gui/edit-redo.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf329ad2369545207c9959632e5f97e88b59181 GIT binary patch literal 2222 zcmV;f2vPTmP)uP?9xgJTWW_}H1*dB6T)W4zwwFqpNF z_(?zQXm{o}pU=E`^WMB=M1%)9_)r7fYdjPf>UbzH)bUVYsN;bbP=bBJ@BEqB6q~jj zoUIVVmRTenfZY1YkIf@@Rgj2+nyYrI+u!_Z1C=!$rE5kDx!hmTD+ivS+@0!|-+K?y z1FaWS_{VoD^Iy$>%Iff5rWW%8x%G0oV%AWH)k^!$yh*Fx)rtlx5!60F;M*2Xd6KtT zb!hiCp-Z-*&D(&>MinxXp2Twtx2EfsmcRCW7Ja8RgWQRkK5|$r+O1aT)X|$=bQR5J z1r{c)!Ltju3`io#0#se$E`&t}blL8co$?Cmbr%*)T8(EiH{Y>Da0M819z`rS|#Cw^`J!N(NQHHca19T2pZHzombLjfcaOUH&a$ zwc?`ZIOZkg;)nBpH%kcZi(9n>3-$}m+V@$sZfW_CrF}O&EAeWB1Wl9X4U)>{(B({r9`Az?yd=Vx(d$B0?Gw(ilS;fU$!ilQn%cGE-OL8?*MN z5)k?cQc|$ky&p zt0mwSyI-O4Fr&%pXa`wha}tPZ+Wj zMc4KsW5OCZst%=BHMrgY@S|RVwI4AJ&~|@6>qWbwFq~}LjiJ8keM2x65y~j+Dcp+6 zI+w$=85@B<)9H>zb<3kE3umUpE3#jIyhdi4`rH5&bjs4N6gY65IL94fbi4dPSCkX>ldo$!(o5Ppm; z8HLUQI9#WSxMJkw{gkd;|Gm2fn9Q6QpUgU~R#bNu`W1;(#voc9kFys`QGKZjEv+r^ z8s}BaQr(~e$o4wFwhu=O5(-3D*#@DVAIGv>q@WAlB0wggh)EgC7@`fwQhk zloppcgkk37ZMr=?&~pnhi=C`*Xu#Nsao|k&?9ggfqr5X8&#&5y!m5KSiq9R-x>!@` zUi`A=1|v7X++frQVr~#~Lr6DBxRo}&@xbfk(?iK(`yHjHo?E(f2@I_Z*Q_Q)Dlr(Y z#-p^vi4up)p~^dl?-j5lKT==oCP5mDR7au1@;$zy^Dvst^GHcpj_DKTAdHUyfrFC- zF#zBo0>A+Q3y_3*PleyfY*EJkhD+`p`##NkVfxGz9zSLl>gwy@IR8Ifs%bo_!CXEN zc%aX0H2e43wh2iI8?&<)p}Ol7EV^m8ZD)X+2yVvUCNMWKYUD(2NzBa!cYDd}9@ZJ! z_=_1O{?AANS$|OHGs(6QpfiSQ5II}8cZYLRfYIzW(K{DvVdihByymg7i5F(Zk4r(l z?!2{mpKZ=II1cD7Aw>{$F6umF?-S⋘e#i-WS4>jdm3ya6oL!? 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/gtk-go-up.png b/tools/lammps-gui/gtk-go-up.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ff52aeec5e9f756b520f2efa54c4aff670b5b6 GIT binary patch literal 2401 zcmV-n37+VA_s;CH4;-AuFOUNcMFb2f8T{Z82npSmqNtFRLewNm<2p)|NJ(o)LXE#z z`-N{^3)&B@YJ^m!iIhz%r6D#0V*;2Mfnkj%f7i-XHEc8;@3VbNo&g2V(r6{1i_pWh@1nY#7p0=kO~Wm zq3aq73yLAFt&|L=Dj_+PQwWmFGMW;>oTKRFd)2K;;W?8(WQ z$XNs?#IGF_&pC%}+Y`0qF%tZ)+)9J*OFR$S5NB$PEbolG)>Si2?Sw%pWWuIwlO69sLsj#33x~@+; zv?(WqWc)wp9J;P!$pcI9lP8~&I5m}~rkO`##sIP$@)=B3Dy8*OVL>reRRv=VobyRe z2*KdsH4s8Fe$N<#s;XGJqzq5*+%4&5QVBE#W&|-K09g+CbW>2OD%MLyg+)jvlUa9O z5CmNKydSN{K4Sg-y$}Q;Yb27%B+8aPh@b6#Mj}bB1On5Cm^OechkTkzmFmh3Qc+>? zl;ZpQd(qP!j##?AGThx6iJbp*N{D3-F2m2Cc}}vpt^@-0(}I{5Ku8YxR2@on|yL{Y?r&wA1GX-`CVSpK@& zn^mQ$smW(DO<7;PQL3z{8h>6)o`(>E`SbH|`5%|@r{+IIzy*IW7|dFo?ihhkDC8q5 zQ#Mp>l1hq8FftO$xbuJwQ5@U(a8Ed*tG9{=fV#T6s45u#_D@bl&V|oH6e$2ZV2avStD`h6cVk!ZmQlam6R+(JRZxK^8g?SBKrFK5bg;_OpRx) z=Z$rZQD(q@>eR`|+0L^Ngt6aKna)H!9>dCqR^io`UzMmzTKDeV>zollDD>{;C8cGL zmy|3ZMQ{cRt&Mb31zPaN#YCDuYLHjMIB ztMP*;wpHilxqmey0FxX0RPgeDv>l6_ zK7AU3AZCQHEEAfh;qk58U@~h>rn$2ICT0wh*E=6KZd?cF{Fd(sA#gYx=7#z&Sf?XncQTW1|HC!C)|2UtjM(cKoQqIFlaR@>s@p zB$*tA+wB5ld}$_~StDRs=22Bm!r^dC+IdlQptr9V;Vk04_qookT(R=47hkL`+xO;g z#222gDSL3)^0!1MITr{7CN?b?3`P@F_qQHxjhy)S1Vqs>DH67AqqnaYmc{1H5Ws4= zbonCk@)p41oCj{(03mQVoapO2k8t<72<7Uev~kUMHmq2_qI}2pCtV)57pkhl?RH_u z_8qPzOO~!;)NDwBOh`O`^^~vXbH2W zv#aAkM`ycjW2`Cr=K6KCooqu_Pgj>fbbno4Yce<8iE6 zy~a&BYHlCW+}s=mqy8gDK0JBg-~oJo@iQ=H;lhP}9Q^$OeDTG z>#yqoetqy@@V#)j>$i;Cy3P2%8Rr*t)jY7TvC+sh&M=KqkH?E-GBJ_QhG8I)NWks! zK-2ZoOyioHo1*}pc=p-7n=fC!ywA3|M2LOVCTJOrt1a1dPWfW%jW_B$0BoGb1Sfs4nE%gJwU48r6FhGI9+Dz_&8b8YZa zo_oRmTrQW>_d+QP1OlRJCK@PcjbZ4eq9_a)mUVc6_x_3JK(1^~0RETu-Rt#C76=4H zP}V>|Y7EmT6$Cn9GIn^L;Qs$lp+F!Y5`mv9FJE2$#MW)D{QP`e8@z_Lw&U8ROBX+P zIy~!h36b*@VlW$4u3T0A)Xtx}yxy@^!sGT}*UqP1OUst68c7T_Og+o=Z4Sls5Rnk#7#O&$K&zTzVgd=9w;p>tE{YW<>lpJXlMv$ z&vt582fq5^?LYtJ*<>=A1YiKr0hj#hc^Tl&1?%edhKQ0%!Cb7zargf4d8~ z8JTq82|>8I(=1JFx^n>bRKjNkFa;RWK#=x#%Iw=d+rXI8yIT9ZX6{?IdmiAwTu!vT TFz7Of00000NkvXXu0mjfC!2U4 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/gtk-zoom-fit.png b/tools/lammps-gui/gtk-zoom-fit.png new file mode 100644 index 0000000000000000000000000000000000000000..9132294eac62905f27d5ed0fe4c48228fa8c306e GIT binary patch literal 5153 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/gtk-zoom-in.png b/tools/lammps-gui/gtk-zoom-in.png new file mode 100644 index 0000000000000000000000000000000000000000..34e8f04195baa47189d978d7ecd602661bb6d075 GIT binary patch literal 5006 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/hd-img.png b/tools/lammps-gui/hd-img.png new file mode 100644 index 0000000000000000000000000000000000000000..906e4d605dda7808c95efbd6d300a57c1ccba708 GIT binary patch literal 7700 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/help-browser.png b/tools/lammps-gui/help-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..f3edf2c430bdfaebd9565afc32e692b3a68dd3fe GIT binary patch literal 5073 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/help_index.table b/tools/lammps-gui/help_index.table new file mode 100644 index 0000000000..d32483760a --- /dev/null +++ b/tools/lammps-gui/help_index.table @@ -0,0 +1,1443 @@ +angle_amoeba.html angle_style amoeba +angle_charmm.html angle_style charmm +angle_charmm.html angle_style charmm/intel +angle_charmm.html angle_style charmm/kk +angle_charmm.html angle_style charmm/omp +angle_class2.html angle_style class2 +angle_class2.html angle_style class2/kk +angle_class2.html angle_style class2/omp +angle_class2.html angle_style class2/p6 +angle_coeff.html angle_coeff +angle_cosine_buck6d.html angle_style cosine/buck6d +angle_cosine_delta.html angle_style cosine/delta +angle_cosine_delta.html angle_style cosine/delta/omp +angle_cosine_periodic.html angle_style cosine/periodic +angle_cosine_periodic.html angle_style cosine/periodic/omp +angle_cosine.html angle_style cosine +angle_cosine.html angle_style cosine/kk +angle_cosine.html angle_style cosine/omp +angle_cosine_shift_exp.html angle_style cosine/shift/exp +angle_cosine_shift_exp.html angle_style cosine/shift/exp/omp +angle_cosine_shift.html angle_style cosine/shift +angle_cosine_shift.html angle_style cosine/shift/omp +angle_cosine_squared.html angle_style cosine/squared +angle_cosine_squared.html angle_style cosine/squared/omp +angle_cross.html angle_style cross +angle_dipole.html angle_style dipole +angle_dipole.html angle_style dipole/omp +angle_fourier.html angle_style fourier +angle_fourier.html angle_style fourier/omp +angle_fourier_simple.html angle_style fourier/simple +angle_fourier_simple.html angle_style fourier/simple/omp +angle_gaussian.html angle_style gaussian +angle_harmonic.html angle_style harmonic +angle_harmonic.html angle_style harmonic/intel +angle_harmonic.html angle_style harmonic/kk +angle_harmonic.html angle_style harmonic/omp +angle_hybrid.html angle_style hybrid +angle_lepton.html angle_style lepton +angle_lepton.html angle_style lepton/omp +angle_mesocnt.html angle_style mesocnt +angle_mm3.html angle_style mm3 +angle_none.html angle_style none +angle_quartic.html angle_style quartic +angle_quartic.html angle_style quartic/omp +angle_spica.html angle_style spica +angle_spica.html angle_style spica/omp +angle_style.html angle_style +angle_table.html angle_style table +angle_table.html angle_style table/omp +angle_write.html angle_write +angle_zero.html angle_style zero +atc_add_molecule.html fix_modify AtC add_molecule +atc_add_species.html fix_modify AtC add_species +atc_atom_element_map.html fix_modify AtC atom_element_map +atc_atomic_charge.html fix_modify AtC atomic_charge +atc_atom_weight.html fix_modify AtC atom_weight +atc_boundary_dynamics.html fix_modify AtC boundary_dynamics +atc_boundary_faceset.html fix_modify AtC boundary_faceset +atc_boundary_type.html fix_modify AtC boundary type +atc_consistent_fe_initialization.html fix_modify AtC consistent_fe_initialization +atc_control_localized_lambda.html fix_modify AtC control localized_lambda +atc_control_momentum.html fix_modify AtC control momentum +atc_control_thermal.html fix_modify AtC control thermal +atc_decomposition.html fix_modify AtC decomposition +atc_electron_integration.html fix_modify AtC extrinsic electron_integration +atc_equilibrium_start.html fix_modify AtC equilibrium_start +atc_extrinsic_exchange.html fix_modify AtC extrinsic exchange +atc_fe_md_boundary.html fix_modify AtC fe_md_boundary +atc_filter_scale.html fix_modify AtC filter scale +atc_filter_type.html fix_modify AtC filter type +atc_fix_flux.html fix_modify AtC fix_flux +atc_fix.html fix_modify AtC fix +atc_hardy_computes.html fix_modify AtC computes +atc_hardy_fields.html fix_modify AtC fields +atc_hardy_gradients.html fix_modify AtC gradients +atc_hardy_kernel.html fix_modify AtC kernel +atc_hardy_on_the_fly.html fix_modify AtC on_the_fly +atc_hardy_rates.html fix_modify AtC rates +atc_initial.html fix_modify AtC initial +atc_internal_element_set.html fix_modify AtC internal_element_set +atc_internal_quadrature.html fix_modify AtC internal_quadrature +atc_kernel_bandwidth.html fix_modify AtC kernel_bandwidth +atc_lumped_lambda_solve.html fix_modify AtC control lumped_lambda_solve +atc_mask_direction.html fix_modify AtC control mask_direction +atc_mass_matrix.html fix_modify AtC mass_matrix +atc_material.html fix_modify AtC material +atc_mesh_add_to_nodeset.html fix_modify AtC mesh add_to_nodeset +atc_mesh_create_elementset.html fix_modify AtC mesh create_elementset +atc_mesh_create_faceset_box.html fix_modify AtC mesh create_faceset box +atc_mesh_create_faceset_plane.html fix_modify AtC mesh create_faceset plane +atc_mesh_create_nodeset.html fix_modify AtC mesh create_nodeset +atc_mesh_create.html fix_modify AtC mesh create +atc_mesh_delete_elements.html fix_modify AtC mesh delete_elements +atc_mesh_nodeset_to_elementset.html fix_modify AtC mesh nodeset_to_elementset +atc_mesh_output.html fix_modify AtC mesh output +atc_mesh_quadrature.html fix_modify AtC mesh quadrature +atc_mesh_read.html fix_modify AtC mesh read +atc_mesh_write.html fix_modify AtC mesh write +atc_output_boundary_integral.html fix_modify AtC output boundary_integral +atc_output_contour_integral.html fix_modify AtC output contour_integral +atc_output_nodeset.html fix_modify AtC output nodeset +atc_output.html fix_modify AtC output +atc_output_volume_integral.html fix_modify AtC output volume_integral +atc_pair_interactions.html fix_modify AtC pair_interactions +atc_poisson_solver.html fix_modify AtC poisson_solver +atc_read_restart.html fix_modify AtC read_restart +atc_remove_molecule.html fix_modify AtC remove_molecule +atc_remove_source.html fix_modify AtC remove_source +atc_remove_species.html fix_modify AtC remove_species +atc_reset_atomic_reference.html fix_modify AtC reset_atomic_reference_positions +atc_reset_time.html fix_modify AtC reset_time +atc_sample_frequency.html fix_modify AtC sample_frequency +atc_set_reference_pe.html fix_modify AtC set reference_potential_energy +atc_source_integration.html fix_modify AtC source_integration +atc_source.html fix_modify AtC source +atc_temperature_definition.html fix_modify AtC temperature_definition +atc_time_filter.html fix_modify AtC filter +atc_time_integration.html fix_modify AtC time_integration +atc_track_displacement.html fix_modify AtC track_displacement +atc_unfix_flux.html fix_modify AtC unfix_flux +atc_unfix.html fix_modify AtC unfix +atc_write_atom_weights.html fix_modify AtC write_atom_weights +atc_write_restart.html fix_modify AtC write_restart +atom_modify.html atom_modify +atom_style.html atom_style +balance.html balance +bond_bpm_rotational.html bond_style bpm/rotational +bond_bpm_spring.html bond_style bpm/spring +bond_class2.html bond_style class2 +bond_class2.html bond_style class2/kk +bond_class2.html bond_style class2/omp +bond_coeff.html bond_coeff +bond_fene_expand.html bond_style fene/expand +bond_fene_expand.html bond_style fene/expand/omp +bond_fene.html bond_style fene +bond_fene.html bond_style fene/intel +bond_fene.html bond_style fene/kk +bond_fene.html bond_style fene/nm +bond_fene.html bond_style fene/omp +bond_gaussian.html bond_style gaussian +bond_gromos.html bond_style gromos +bond_gromos.html bond_style gromos/omp +bond_harmonic_restrain.html bond_style harmonic/restrain +bond_harmonic.html bond_style harmonic +bond_harmonic.html bond_style harmonic/intel +bond_harmonic.html bond_style harmonic/kk +bond_harmonic.html bond_style harmonic/omp +bond_harmonic_shift_cut.html bond_style harmonic/shift/cut +bond_harmonic_shift_cut.html bond_style harmonic/shift/cut/omp +bond_harmonic_shift.html bond_style harmonic/shift +bond_harmonic_shift.html bond_style harmonic/shift/omp +bond_hybrid.html bond_style hybrid +bond_lepton.html bond_style lepton +bond_lepton.html bond_style lepton/omp +bond_mesocnt.html bond_style mesocnt +bond_mm3.html bond_style mm3 +bond_morse.html bond_style morse +bond_morse.html bond_style morse/omp +bond_none.html bond_style none +bond_nonlinear.html bond_style nonlinear +bond_nonlinear.html bond_style nonlinear/omp +bond_oxdna.html bond_style oxdna2/fene +bond_oxdna.html bond_style oxdna/fene +bond_oxdna.html bond_style oxrna2/fene +bond_quartic.html bond_style quartic +bond_quartic.html bond_style quartic/omp +bond_special.html bond_style special +bond_style.html bond_style +bond_table.html bond_style table +bond_table.html bond_style table/omp +bond_write.html bond_write +bond_zero.html bond_style zero +boundary.html boundary +change_box.html change_box +clear.html clear +comm_modify.html comm_modify +comm_style.html comm_style +compute_ackland_atom.html compute ackland/atom +compute_adf.html compute adf +compute_angle_local.html compute angle/local +compute_angle.html compute angle +compute_angmom_chunk.html compute angmom/chunk +compute_ave_sphere_atom.html compute ave/sphere/atom +compute_ave_sphere_atom.html compute ave/sphere/atom/kk +compute_basal_atom.html compute basal/atom +compute_body_local.html compute body/local +compute_bond_local.html compute bond/local +compute_bond.html compute bond +compute_born_matrix.html compute born/matrix +compute_centro_atom.html compute centro/atom +compute_chunk_atom.html compute chunk/atom +compute_chunk_spread_atom.html compute chunk/spread/atom +compute_cluster_atom.html compute aggregate/atom +compute_cluster_atom.html compute cluster/atom +compute_cluster_atom.html compute fragment/atom +compute_cna_atom.html compute cna/atom +compute_cnp_atom.html compute cnp/atom +compute_com_chunk.html compute com/chunk +compute_com.html compute com +compute_contact_atom.html compute contact/atom +compute_coord_atom.html compute coord/atom +compute_coord_atom.html compute coord/atom/kk +compute_count_type.html compute count/type +compute_damage_atom.html compute damage/atom +compute_dihedral_local.html compute dihedral/local +compute_dihedral.html compute dihedral +compute_dilatation_atom.html compute dilatation/atom +compute_dipole_chunk.html compute dipole/chunk +compute_dipole_chunk.html compute dipole/tip4p/chunk +compute_dipole.html compute dipole +compute_dipole.html compute dipole/tip4p +compute_displace_atom.html compute displace/atom +compute_dpd_atom.html compute dpd/atom +compute_dpd.html compute dpd +compute_edpd_temp_atom.html compute edpd/temp/atom +compute_efield_atom.html compute efield/atom +compute_efield_wolf_atom.html compute efield/wolf/atom +compute_entropy_atom.html compute entropy/atom +compute_erotate_asphere.html compute erotate/asphere +compute_erotate_rigid.html compute erotate/rigid +compute_erotate_sphere_atom.html compute erotate/sphere/atom +compute_erotate_sphere.html compute erotate/sphere +compute_erotate_sphere.html compute erotate/sphere/kk +compute_event_displace.html compute event/displace +compute_fabric.html compute fabric +compute_fep.html compute fep +compute_fep_ta.html compute fep/ta +compute_global_atom.html compute global/atom +compute_group_group.html compute group/group +compute_gyration_chunk.html compute gyration/chunk +compute_gyration.html compute gyration +compute_gyration_shape_chunk.html compute gyration/shape/chunk +compute_gyration_shape.html compute gyration/shape +compute_heat_flux.html compute heat/flux +compute_hexorder_atom.html compute hexorder/atom +compute_hma.html compute hma +compute_improper_local.html compute improper/local +compute_improper.html compute improper +compute_inertia_chunk.html compute inertia/chunk +compute_ke_atom_eff.html compute ke/atom/eff +compute_ke_atom.html compute ke/atom +compute_ke_eff.html compute ke/eff +compute_ke_rigid.html compute ke/rigid +compute_ke.html compute ke +compute_local_comp_atom.html compute local/comp/atom +compute_local_comp_atom.html compute local/comp/atom/kk +compute_mliap.html compute mliap +compute_modify.html compute_modify +compute_momentum.html compute momentum +compute_msd_chunk.html compute msd/chunk +compute_msd_nongauss.html compute msd/nongauss +compute_msd.html compute msd +compute_nbond_atom.html compute nbond/atom +compute_omega_chunk.html compute omega/chunk +compute_orientorder_atom.html compute orientorder/atom +compute_orientorder_atom.html compute orientorder/atom/kk +compute_pair_local.html compute pair/local +compute_pair.html compute pair +compute_pe_atom.html compute pe/atom +compute_pe.html compute pe +compute_plasticity_atom.html compute plasticity/atom +compute_pressure_alchemy.html compute pressure/alchemy +compute_pressure.html compute pressure +compute_pressure_uef.html compute pressure/uef +compute_property_atom.html compute property/atom +compute_property_chunk.html compute property/chunk +compute_property_grid.html compute property/grid +compute_property_local.html compute property/local +compute_ptm_atom.html compute ptm/atom +compute_rdf.html compute rdf +compute_reduce_chunk.html compute reduce/chunk +compute_reduce.html compute reduce +compute_reduce.html compute reduce/region +compute_rigid_local.html compute rigid/local +compute.html compute +compute_saed.html compute saed +compute_slice.html compute slice +compute_smd_contact_radius.html compute smd/contact/radius +compute_smd_damage.html compute smd/damage +compute_smd_hourglass_error.html compute smd/hourglass/error +compute_smd_internal_energy.html compute smd/internal/energy +compute_smd_plastic_strain_rate.html compute smd/plastic/strain/rate +compute_smd_plastic_strain.html compute smd/plastic/strain +compute_smd_rho.html compute smd/rho +compute_smd_tlsph_defgrad.html compute smd/tlsph/defgrad +compute_smd_tlsph_dt.html compute smd/tlsph/dt +compute_smd_tlsph_num_neighs.html compute smd/tlsph/num/neighs +compute_smd_tlsph_shape.html compute smd/tlsph/shape +compute_smd_tlsph_strain_rate.html compute smd/tlsph/strain/rate +compute_smd_tlsph_strain.html compute smd/tlsph/strain +compute_smd_tlsph_stress.html compute smd/tlsph/stress +compute_smd_triangle_vertices.html compute smd/triangle/vertices +compute_smd_ulsph_effm.html compute smd/ulsph/effm +compute_smd_ulsph_num_neighs.html compute smd/ulsph/num/neighs +compute_smd_ulsph_strain_rate.html compute smd/ulsph/strain/rate +compute_smd_ulsph_strain.html compute smd/ulsph/strain +compute_smd_ulsph_stress.html compute smd/ulsph/stress +compute_smd_vol.html compute smd/vol +compute_sna_atom.html compute sna/atom +compute_sna_atom.html compute snad/atom +compute_sna_atom.html compute sna/grid +compute_sna_atom.html compute sna/grid/local +compute_sna_atom.html compute snap +compute_sna_atom.html compute snav/atom +compute_sph_e_atom.html compute sph/e/atom +compute_sph_rho_atom.html compute sph/rho/atom +compute_sph_t_atom.html compute sph/t/atom +compute_spin.html compute spin +compute_stress_atom.html compute centroid/stress/atom +compute_stress_atom.html compute stress/atom +compute_stress_cartesian.html compute stress/cartesian +compute_stress_curvilinear.html compute stress/cylinder +compute_stress_curvilinear.html compute stress/spherical +compute_stress_mop.html compute stress/mop +compute_stress_mop.html compute stress/mop/profile +compute_tally.html compute force/tally +compute_tally.html compute heat/flux/tally +compute_tally.html compute heat/flux/virial/tally +compute_tally.html compute pe/mol/tally +compute_tally.html compute pe/tally +compute_tally.html compute stress/tally +compute_tdpd_cc_atom.html compute tdpd/cc/atom +compute_temp_asphere.html compute temp/asphere +compute_temp_body.html compute temp/body +compute_temp_chunk.html compute temp/chunk +compute_temp_com.html compute temp/com +compute_temp_cs.html compute temp/cs +compute_temp_deform_eff.html compute temp/deform/eff +compute_temp_deform.html compute temp/deform +compute_temp_deform.html compute temp/deform/kk +compute_temp_drude.html compute temp/drude +compute_temp_eff.html compute temp/eff +compute_temp_partial.html compute temp/partial +compute_temp_profile.html compute temp/profile +compute_temp_ramp.html compute temp/ramp +compute_temp_region_eff.html compute temp/region/eff +compute_temp_region.html compute temp/region +compute_temp_rotate.html compute temp/rotate +compute_temp.html compute temp +compute_temp.html compute temp/kk +compute_temp_sphere.html compute temp/sphere +compute_temp_uef.html compute temp/uef +compute_ti.html compute ti +compute_torque_chunk.html compute torque/chunk +compute_vacf.html compute vacf +compute_vcm_chunk.html compute vcm/chunk +compute_viscosity_cos.html compute viscosity/cos +compute_voronoi_atom.html compute voronoi/atom +compute_xrd.html compute xrd +create_atoms.html create_atoms +create_bonds.html create_bonds +create_box.html create_box +delete_atoms.html delete_atoms +delete_bonds.html delete_bonds +dielectric.html dielectric +dihedral_charmm.html dihedral_style charmm +dihedral_charmm.html dihedral_style charmmfsw +dihedral_charmm.html dihedral_style charmm/intel +dihedral_charmm.html dihedral_style charmm/kk +dihedral_charmm.html dihedral_style charmm/omp +dihedral_class2.html dihedral_style class2 +dihedral_class2.html dihedral_style class2/kk +dihedral_class2.html dihedral_style class2/omp +dihedral_coeff.html dihedral_coeff +dihedral_cosine_shift_exp.html dihedral_style cosine/shift/exp +dihedral_cosine_shift_exp.html dihedral_style cosine/shift/exp/omp +dihedral_fourier.html dihedral_style fourier +dihedral_fourier.html dihedral_style fourier/intel +dihedral_fourier.html dihedral_style fourier/omp +dihedral_harmonic.html dihedral_style harmonic +dihedral_harmonic.html dihedral_style harmonic/intel +dihedral_harmonic.html dihedral_style harmonic/kk +dihedral_harmonic.html dihedral_style harmonic/omp +dihedral_helix.html dihedral_style helix +dihedral_helix.html dihedral_style helix/omp +dihedral_hybrid.html dihedral_style hybrid +dihedral_lepton.html dihedral_style lepton +dihedral_lepton.html dihedral_style lepton/omp +dihedral_multi_harmonic.html dihedral_style multi/harmonic +dihedral_multi_harmonic.html dihedral_style multi/harmonic/omp +dihedral_nharmonic.html dihedral_style nharmonic +dihedral_nharmonic.html dihedral_style nharmonic/omp +dihedral_none.html dihedral_style none +dihedral_opls.html dihedral_style opls +dihedral_opls.html dihedral_style opls/intel +dihedral_opls.html dihedral_style opls/kk +dihedral_opls.html dihedral_style opls/omp +dihedral_quadratic.html dihedral_style quadratic +dihedral_quadratic.html dihedral_style quadratic/omp +dihedral_spherical.html dihedral_style spherical +dihedral_style.html dihedral_style +dihedral_table.html dihedral_style table +dihedral_table.html dihedral_style table/cut +dihedral_table.html dihedral_style table/omp +dihedral_write.html dihedral_write +dihedral_zero.html dihedral_style zero +dimension.html dimension +displace_atoms.html displace_atoms +dump_adios.html dump atom/adios +dump_adios.html dump custom/adios +dump_cfg_uef.html dump cfg/uef +dump_h5md.html dump h5md +dump_image.html dump image +dump_image.html dump movie +dump_modify.html dump_modify +dump_molfile.html dump molfile +dump_netcdf.html dump netcdf +dump_netcdf.html dump netcdf/mpiio +dump.html dump +dump.html dump atom +dump.html dump atom/gz +dump.html dump atom/mpiio +dump.html dump atom/zstd +dump.html dump cfg +dump.html dump cfg/gz +dump.html dump cfg/mpiio +dump.html dump cfg/zstd +dump.html dump custom +dump.html dump custom/gz +dump.html dump custom/mpiio +dump.html dump custom/zstd +dump.html dump dcd +dump.html dump grid +dump.html dump grid/vtk +dump.html dump local +dump.html dump local/gz +dump.html dump local/zstd +dump.html dump xtc +dump.html dump xyz +dump.html dump xyz/gz +dump.html dump xyz/mpiio +dump.html dump xyz/zstd +dump.html dump yaml +dump_vtk.html dump vtk +dynamical_matrix.html dynamical_matrix +dynamical_matrix.html dynamical_matrix/kk +echo.html echo +fitpod_command.html fitpod +fix_accelerate_cos.html fix accelerate/cos +fix_acks2_reaxff.html fix acks2/reaxff +fix_acks2_reaxff.html fix acks2/reaxff/kk +fix_adapt_fep.html fix adapt/fep +fix_adapt.html fix adapt +fix_addforce.html fix addforce +fix_addtorque.html fix addtorque +fix_alchemy.html fix alchemy +fix_amoeba_bitorsion.html fix amoeba/bitorsion +fix_amoeba_pitorsion.html fix amoeba/pitorsion +fix_append_atoms.html fix append/atoms +fix_atc.html fix atc +fix_atom_swap.html fix atom/swap +fix_ave_atom.html fix ave/atom +fix_ave_chunk.html fix ave/chunk +fix_ave_correlate_long.html fix ave/correlate/long +fix_ave_correlate.html fix ave/correlate +fix_aveforce.html fix aveforce +fix_ave_grid.html fix ave/grid +fix_ave_histo.html fix ave/histo +fix_ave_histo.html fix ave/histo/weight +fix_ave_time.html fix ave/time +fix_balance.html fix balance +fix_bocs.html fix bocs +fix_bond_break.html fix bond/break +fix_bond_create.html fix bond/create +fix_bond_create.html fix bond/create/angle +fix_bond_react.html fix bond/react +fix_bond_swap.html fix bond/swap +fix_box_relax.html fix box/relax +fix_brownian.html fix brownian +fix_brownian.html fix brownian/asphere +fix_brownian.html fix brownian/sphere +fix_charge_regulation.html fix charge/regulation +fix_cmap.html fix cmap +fix_colvars.html fix colvars +fix_controller.html fix controller +fix_damping_cundall.html fix damping/cundall +fix_deform.html fix deform +fix_deform.html fix deform/kk +fix_deposit.html fix deposit +fix_dpd_energy.html fix dpd/energy +fix_dpd_energy.html fix dpd/energy/kk +fix_dpd_source.html fix edpd/source +fix_dpd_source.html fix tdpd/source +fix_drag.html fix drag +fix_drude.html fix drude +fix_drude_transform.html fix drude/transform/direct +fix_drude_transform.html fix drude/transform/inverse +fix_dt_reset.html fix dt/reset +fix_dt_reset.html fix dt/reset/kk +fix_efield.html fix efield +fix_efield.html fix efield/tip4p +fix_ehex.html fix ehex +fix_electrode.html fix electrode/conp +fix_electrode.html fix electrode/conp/intel +fix_electrode.html fix electrode/conq +fix_electrode.html fix electrode/conq/intel +fix_electrode.html fix electrode/thermo +fix_electrode.html fix electrode/thermo/intel +fix_electron_stopping.html fix electron/stopping +fix_electron_stopping.html fix electron/stopping/fit +fix_enforce2d.html fix enforce2d +fix_enforce2d.html fix enforce2d/kk +fix_eos_cv.html fix eos/cv +fix_eos_table.html fix eos/table +fix_eos_table_rx.html fix eos/table/rx +fix_eos_table_rx.html fix eos/table/rx/kk +fix_evaporate.html fix evaporate +fix_external.html fix external +fix_ffl.html fix ffl +fix_filter_corotate.html fix filter/corotate +fix_flow_gauss.html fix flow/gauss +fix_freeze.html fix freeze +fix_freeze.html fix freeze/kk +fix_gcmc.html fix gcmc +fix_gld.html fix gld +fix_gle.html fix gle +fix_gravity.html fix gravity +fix_gravity.html fix gravity/kk +fix_gravity.html fix gravity/omp +fix_grem.html fix grem +fix_halt.html fix halt +fix_heat_flow.html fix heat/flow +fix_heat.html fix heat +fix_hyper_global.html fix hyper/global +fix_hyper_local.html fix hyper/local +fix_imd.html fix imd +fix_indent.html fix indent +fix_ipi.html fix ipi +fix_langevin_drude.html fix langevin/drude +fix_langevin_eff.html fix langevin/eff +fix_langevin.html fix langevin +fix_langevin.html fix langevin/kk +fix_langevin_spin.html fix langevin/spin +fix_lb_fluid.html fix lb/fluid +fix_lb_momentum.html fix lb/momentum +fix_lb_viscous.html fix lb/viscous +fix_lineforce.html fix lineforce +fix_manifoldforce.html fix manifoldforce +fix_mdi_qmmm.html fix mdi/qmmm +fix_mdi_qm.html fix mdi/qm +fix_meso_move.html fix meso/move +fix_modify.html fix_modify +fix_mol_swap.html fix mol/swap +fix_momentum.html fix momentum +fix_momentum.html fix momentum/chunk +fix_momentum.html fix momentum/kk +fix_move.html fix move +fix_msst.html fix msst +fix_mvv_dpd.html fix mvv/dpd +fix_mvv_dpd.html fix mvv/edpd +fix_mvv_dpd.html fix mvv/tdpd +fix_neb.html fix neb +fix_neb_spin.html fix neb/spin +fix_nh_eff.html fix nph/eff +fix_nh_eff.html fix npt/eff +fix_nh_eff.html fix nvt/eff +fix_nh.html fix nph +fix_nh.html fix nph/kk +fix_nh.html fix nph/omp +fix_nh.html fix npt +fix_nh.html fix npt/gpu +fix_nh.html fix npt/intel +fix_nh.html fix npt/kk +fix_nh.html fix npt/omp +fix_nh.html fix nvt +fix_nh.html fix nvt/gpu +fix_nh.html fix nvt/intel +fix_nh.html fix nvt/kk +fix_nh.html fix nvt/omp +fix_nh_uef.html fix npt/uef +fix_nh_uef.html fix nvt/uef +fix_nph_asphere.html fix nph/asphere +fix_nph_asphere.html fix nph/asphere/omp +fix_nph_body.html fix nph/body +fix_nph_sphere.html fix nph/sphere +fix_nph_sphere.html fix nph/sphere/omp +fix_nphug.html fix nphug +fix_nphug.html fix nphug/omp +fix_npt_asphere.html fix npt/asphere +fix_npt_asphere.html fix npt/asphere/omp +fix_npt_body.html fix npt/body +fix_npt_cauchy.html fix npt/cauchy +fix_npt_sphere.html fix npt/sphere +fix_npt_sphere.html fix npt/sphere/omp +fix_numdiff.html fix numdiff +fix_numdiff_virial.html fix numdiff/virial +fix_nve_asphere_noforce.html fix nve/asphere/noforce +fix_nve_asphere.html fix nve/asphere +fix_nve_asphere.html fix nve/asphere/gpu +fix_nve_asphere.html fix nve/asphere/intel +fix_nve_awpmd.html fix nve/awpmd +fix_nve_body.html fix nve/body +fix_nve_bpm_sphere.html fix nve/bpm/sphere +fix_nve_dotc_langevin.html fix nve/dotc/langevin +fix_nve_dot.html fix nve/dot +fix_nve_eff.html fix nve/eff +fix_nve_limit.html fix nve/limit +fix_nve_line.html fix nve/line +fix_nve_manifold_rattle.html fix nve/manifold/rattle +fix_nve_noforce.html fix nve/noforce +fix_nve.html fix nve +fix_nve.html fix nve/gpu +fix_nve.html fix nve/intel +fix_nve.html fix nve/kk +fix_nve.html fix nve/omp +fix_nve_sphere.html fix nve/sphere +fix_nve_sphere.html fix nve/sphere/kk +fix_nve_sphere.html fix nve/sphere/omp +fix_nve_spin.html fix nve/spin +fix_nve_tri.html fix nve/tri +fix_nvk.html fix nvk +fix_nvt_asphere.html fix nvt/asphere +fix_nvt_asphere.html fix nvt/asphere/omp +fix_nvt_body.html fix nvt/body +fix_nvt_manifold_rattle.html fix nvt/manifold/rattle +fix_nvt_sllod_eff.html fix nvt/sllod/eff +fix_nvt_sllod.html fix nvt/sllod +fix_nvt_sllod.html fix nvt/sllod/intel +fix_nvt_sllod.html fix nvt/sllod/kk +fix_nvt_sllod.html fix nvt/sllod/omp +fix_nvt_sphere.html fix nvt/sphere +fix_nvt_sphere.html fix nvt/sphere/omp +fix_oneway.html fix oneway +fix_orient_eco.html fix orient/eco +fix_orient.html fix orient/bcc +fix_orient.html fix orient/fcc +fix_pafi.html fix pafi +fix_pair.html fix pair +fix_phonon.html fix phonon +fix_pimd.html fix pimd/langevin +fix_pimd.html fix pimd/nvt +fix_planeforce.html fix planeforce +fix_plumed.html fix plumed +fix_poems.html fix poems +fix_polarize.html fix polarize/bem/gmres +fix_polarize.html fix polarize/bem/icc +fix_polarize.html fix polarize/functional +fix_pour.html fix pour +fix_precession_spin.html fix precession/spin +fix_press_berendsen.html fix press/berendsen +fix_print.html fix print +fix_propel_self.html fix propel/self +fix_property_atom.html fix property/atom +fix_property_atom.html fix property/atom/kk +fix_python_invoke.html fix python/invoke +fix_python_move.html fix python/move +fix_qbmsst.html fix qbmsst +fix_qeq_comb.html fix qeq/comb +fix_qeq_comb.html fix qeq/comb/omp +fix_qeq_reaxff.html fix qeq/reaxff +fix_qeq_reaxff.html fix qeq/reaxff/kk +fix_qeq_reaxff.html fix qeq/reaxff/omp +fix_qeq.html fix qeq/dynamic +fix_qeq.html fix qeq/fire +fix_qeq.html fix qeq/point +fix_qeq.html fix qeq/shielded +fix_qeq.html fix qeq/slater +fix_qmmm.html fix qmmm +fix_qtb.html fix qtb +fix_reaxff_bonds.html fix reaxff/bonds +fix_reaxff_bonds.html fix reaxff/bonds/kk +fix_reaxff_species.html fix reaxff/species +fix_reaxff_species.html fix reaxff/species/kk +fix_recenter.html fix recenter +fix_restrain.html fix restrain +fix_rhok.html fix rhok +fix_rigid_meso.html fix rigid/meso +fix_rigid.html fix rigid +fix_rigid.html fix rigid/nph +fix_rigid.html fix rigid/nph/omp +fix_rigid.html fix rigid/nph/small +fix_rigid.html fix rigid/npt +fix_rigid.html fix rigid/npt/omp +fix_rigid.html fix rigid/npt/small +fix_rigid.html fix rigid/nve +fix_rigid.html fix rigid/nve/omp +fix_rigid.html fix rigid/nve/small +fix_rigid.html fix rigid/nvt +fix_rigid.html fix rigid/nvt/omp +fix_rigid.html fix rigid/nvt/small +fix_rigid.html fix rigid/omp +fix_rigid.html fix rigid/small +fix_rigid.html fix rigid/small/omp +fix.html fix +fix_rx.html fix rx +fix_rx.html fix rx/kk +fix_saed_vtk.html fix saed/vtk +fix_setforce.html fix setforce +fix_setforce.html fix setforce/kk +fix_setforce.html fix setforce/spin +fix_sgcmc.html fix sgcmc +fix_shake.html fix rattle +fix_shake.html fix shake +fix_shake.html fix shake/kk +fix_shardlow.html fix shardlow +fix_shardlow.html fix shardlow/kk +fix_smd_adjust_dt.html fix smd/adjust_dt +fix_smd_integrate_tlsph.html fix smd/integrate_tlsph +fix_smd_integrate_ulsph.html fix smd/integrate_ulsph +fix_smd_move_triangulated_surface.html fix smd/move_tri_surf +fix_smd.html fix smd +fix_smd_setvel.html fix smd/setvel +fix_smd_wall_surface.html fix smd/wall_surface +fix_sph.html fix sph +fix_sph_stationary.html fix sph/stationary +fix_spring_chunk.html fix spring/chunk +fix_spring_rg.html fix spring/rg +fix_spring.html fix spring +fix_spring_self.html fix spring/self +fix_srd.html fix srd +fix_store_force.html fix store/force +fix_store_state.html fix store/state +fix_temp_berendsen.html fix temp/berendsen +fix_temp_csvr.html fix temp/csld +fix_temp_csvr.html fix temp/csvr +fix_temp_rescale_eff.html fix temp/rescale/eff +fix_temp_rescale.html fix temp/rescale +fix_tfmc.html fix tfmc +fix_tgnh_drude.html fix tgnpt/drude +fix_tgnh_drude.html fix tgnvt/drude +fix_thermal_conductivity.html fix thermal/conductivity +fix_ti_spring.html fix ti/spring +fix_tmd.html fix tmd +fix_ttm.html fix ttm +fix_ttm.html fix ttm/grid +fix_ttm.html fix ttm/mod +fix_tune_kspace.html fix tune/kspace +fix_vector.html fix vector +fix_viscosity.html fix viscosity +fix_viscous.html fix viscous +fix_viscous.html fix viscous/kk +fix_viscous_sphere.html fix viscous/sphere +fix_wall_body_polygon.html fix wall/body/polygon +fix_wall_body_polyhedron.html fix wall/body/polyhedron +fix_wall_ees.html fix wall/ees +fix_wall_ees.html fix wall/region/ees +fix_wall_gran_region.html fix wall/gran/region +fix_wall_gran.html fix wall/gran +fix_wall_gran.html fix wall/gran/kk +fix_wall_piston.html fix wall/piston +fix_wall_reflect.html fix wall/reflect +fix_wall_reflect.html fix wall/reflect/kk +fix_wall_reflect_stochastic.html fix wall/reflect/stochastic +fix_wall_region.html fix wall/region +fix_wall.html fix wall/colloid +fix_wall.html fix wall/harmonic +fix_wall.html fix wall/lepton +fix_wall.html fix wall/lj1043 +fix_wall.html fix wall/lj126 +fix_wall.html fix wall/lj93 +fix_wall.html fix wall/lj93/kk +fix_wall.html fix wall/morse +fix_wall.html fix wall/table +fix_wall_srd.html fix wall/srd +fix_widom.html fix widom +group2ndx.html group2ndx +group2ndx.html ndx2group +group.html group +hyper.html hyper +if.html if +improper_amoeba.html improper_style amoeba +improper_class2.html improper_style class2 +improper_class2.html improper_style class2/kk +improper_class2.html improper_style class2/omp +improper_coeff.html improper_coeff +improper_cossq.html improper_style cossq +improper_cossq.html improper_style cossq/omp +improper_cvff.html improper_style cvff +improper_cvff.html improper_style cvff/intel +improper_cvff.html improper_style cvff/omp +improper_distance.html improper_style distance +improper_distharm.html improper_style distharm +improper_fourier.html improper_style fourier +improper_fourier.html improper_style fourier/omp +improper_harmonic.html improper_style harmonic +improper_harmonic.html improper_style harmonic/intel +improper_harmonic.html improper_style harmonic/kk +improper_harmonic.html improper_style harmonic/omp +improper_hybrid.html improper_style hybrid +improper_inversion_harmonic.html improper_style inversion/harmonic +improper_none.html improper_style none +improper_ring.html improper_style ring +improper_ring.html improper_style ring/omp +improper_sqdistharm.html improper_style sqdistharm +improper_style.html improper_style +improper_umbrella.html improper_style umbrella +improper_umbrella.html improper_style umbrella/omp +improper_zero.html improper_style zero +include.html include +info.html info +jump.html jump +kim_commands.html kim_commands +kspace_modify.html kspace_modify +kspace_style.html kspace_style ewald +kspace_style.html kspace_style ewald/dipole +kspace_style.html kspace_style ewald/dipole/spin +kspace_style.html kspace_style ewald/disp +kspace_style.html kspace_style ewald/disp/dipole +kspace_style.html kspace_style ewald/electrode +kspace_style.html kspace_style ewald/omp +kspace_style.html kspace_style msm +kspace_style.html kspace_style msm/cg +kspace_style.html kspace_style msm/cg/omp +kspace_style.html kspace_style msm/dielectric +kspace_style.html kspace_style msm/omp +kspace_style.html kspace_style pppm +kspace_style.html kspace_style pppm/cg +kspace_style.html kspace_style pppm/cg/omp +kspace_style.html kspace_style pppm/dielectric +kspace_style.html kspace_style pppm/dipole +kspace_style.html kspace_style pppm/dipole/spin +kspace_style.html kspace_style pppm/disp +kspace_style.html kspace_style pppm/disp/dielectric +kspace_style.html kspace_style pppm/disp/intel +kspace_style.html kspace_style pppm/disp/omp +kspace_style.html kspace_style pppm/disp/tip4p +kspace_style.html kspace_style pppm/disp/tip4p/omp +kspace_style.html kspace_style pppm/electrode +kspace_style.html kspace_style pppm/electrode/intel +kspace_style.html kspace_style pppm/gpu +kspace_style.html kspace_style pppm/intel +kspace_style.html kspace_style pppm/kk +kspace_style.html kspace_style pppm/omp +kspace_style.html kspace_style pppm/stagger +kspace_style.html kspace_style pppm/tip4p +kspace_style.html kspace_style pppm/tip4p/omp +kspace_style.html kspace_style scafacos +labelmap.html labelmap +label.html label +lattice.html lattice +log.html log +mass.html mass +mdi.html mdi +minimize.html minimize +minimize.html minimize/kk +min_modify.html min_modify +min_spin.html min_style spin +min_style.html min_style +molecule.html molecule +neb.html neb +neb_spin.html neb/spin +neighbor.html neighbor +neigh_modify.html neigh_modify +newton.html newton +next.html next +package.html package +pair_adp.html pair_style adp +pair_adp.html pair_style adp/kk +pair_adp.html pair_style adp/omp +pair_agni.html pair_style agni +pair_agni.html pair_style agni/omp +pair_aip_water_2dm.html pair_style aip/water/2dm +pair_aip_water_2dm.html pair_style aip/water/2dm/opt +pair_airebo.html pair_style airebo +pair_airebo.html pair_style airebo/intel +pair_airebo.html pair_style airebo/morse +pair_airebo.html pair_style airebo/morse/intel +pair_airebo.html pair_style airebo/morse/omp +pair_airebo.html pair_style airebo/omp +pair_airebo.html pair_style rebo +pair_airebo.html pair_style rebo/intel +pair_airebo.html pair_style rebo/omp +pair_amoeba.html pair_style amoeba +pair_amoeba.html pair_style amoeba/gpu +pair_amoeba.html pair_style hippo +pair_amoeba.html pair_style hippo/gpu +pair_atm.html pair_style atm +pair_awpmd.html pair_style awpmd/cut +pair_beck.html pair_style beck +pair_beck.html pair_style beck/gpu +pair_beck.html pair_style beck/omp +pair_body_nparticle.html pair_style body/nparticle +pair_body_rounded_polygon.html pair_style body/rounded/polygon +pair_body_rounded_polyhedron.html pair_style body/rounded/polyhedron +pair_bop.html pair_style bop +pair_born_gauss.html pair_style born/gauss +pair_born.html pair_style born +pair_born.html pair_style born/coul/dsf +pair_born.html pair_style born/coul/long +pair_born.html pair_style born/coul/long/gpu +pair_born.html pair_style born/coul/long/omp +pair_born.html pair_style born/coul/msm +pair_born.html pair_style born/coul/msm/omp +pair_born.html pair_style born/coul/wolf +pair_born.html pair_style born/coul/wolf/gpu +pair_born.html pair_style born/coul/wolf/omp +pair_born.html pair_style born/gpu +pair_born.html pair_style born/omp +pair_bpm_spring.html pair_style bpm/spring +pair_brownian.html pair_style brownian +pair_brownian.html pair_style brownian/omp +pair_brownian.html pair_style brownian/poly +pair_brownian.html pair_style brownian/poly/omp +pair_buck6d_coul_gauss.html pair_style buck6d/coul/gauss/dsf +pair_buck6d_coul_gauss.html pair_style buck6d/coul/gauss/long +pair_buck_long.html pair_style buck/long/coul/long +pair_buck_long.html pair_style buck/long/coul/long/omp +pair_buck.html pair_style buck +pair_buck.html pair_style buck/coul/cut +pair_buck.html pair_style buck/coul/cut/gpu +pair_buck.html pair_style buck/coul/cut/intel +pair_buck.html pair_style buck/coul/cut/kk +pair_buck.html pair_style buck/coul/cut/omp +pair_buck.html pair_style buck/coul/long +pair_buck.html pair_style buck/coul/long/gpu +pair_buck.html pair_style buck/coul/long/intel +pair_buck.html pair_style buck/coul/long/kk +pair_buck.html pair_style buck/coul/long/omp +pair_buck.html pair_style buck/coul/msm +pair_buck.html pair_style buck/coul/msm/omp +pair_buck.html pair_style buck/gpu +pair_buck.html pair_style buck/intel +pair_buck.html pair_style buck/kk +pair_buck.html pair_style buck/omp +pair_charmm.html pair_style lj/charmm/coul/charmm +pair_charmm.html pair_style lj/charmm/coul/charmm/gpu +pair_charmm.html pair_style lj/charmm/coul/charmm/implicit +pair_charmm.html pair_style lj/charmm/coul/charmm/implicit/kk +pair_charmm.html pair_style lj/charmm/coul/charmm/implicit/omp +pair_charmm.html pair_style lj/charmm/coul/charmm/intel +pair_charmm.html pair_style lj/charmm/coul/charmm/kk +pair_charmm.html pair_style lj/charmm/coul/charmm/omp +pair_charmm.html pair_style lj/charmm/coul/long +pair_charmm.html pair_style lj/charmm/coul/long/gpu +pair_charmm.html pair_style lj/charmm/coul/long/intel +pair_charmm.html pair_style lj/charmm/coul/long/kk +pair_charmm.html pair_style lj/charmm/coul/long/omp +pair_charmm.html pair_style lj/charmm/coul/long/opt +pair_charmm.html pair_style lj/charmm/coul/msm +pair_charmm.html pair_style lj/charmm/coul/msm/omp +pair_charmm.html pair_style lj/charmmfsw/coul/charmmfsh +pair_charmm.html pair_style lj/charmmfsw/coul/long +pair_class2.html pair_style lj/class2 +pair_class2.html pair_style lj/class2/coul/cut +pair_class2.html pair_style lj/class2/coul/cut/kk +pair_class2.html pair_style lj/class2/coul/cut/omp +pair_class2.html pair_style lj/class2/coul/long +pair_class2.html pair_style lj/class2/coul/long/gpu +pair_class2.html pair_style lj/class2/coul/long/kk +pair_class2.html pair_style lj/class2/coul/long/omp +pair_class2.html pair_style lj/class2/gpu +pair_class2.html pair_style lj/class2/kk +pair_class2.html pair_style lj/class2/omp +pair_coeff.html pair_coeff +pair_colloid.html pair_style colloid +pair_colloid.html pair_style colloid/gpu +pair_colloid.html pair_style colloid/omp +pair_comb.html pair_style comb +pair_comb.html pair_style comb3 +pair_comb.html pair_style comb/omp +pair_cosine_squared.html pair_style cosine/squared +pair_coul_diel.html pair_style coul/diel +pair_coul_diel.html pair_style coul/diel/omp +pair_coul.html pair_style coul/cut +pair_coul.html pair_style coul/cut/global +pair_coul.html pair_style coul/cut/global/omp +pair_coul.html pair_style coul/cut/gpu +pair_coul.html pair_style coul/cut/kk +pair_coul.html pair_style coul/cut/omp +pair_coul.html pair_style coul/debye +pair_coul.html pair_style coul/debye/gpu +pair_coul.html pair_style coul/debye/kk +pair_coul.html pair_style coul/debye/omp +pair_coul.html pair_style coul/dsf +pair_coul.html pair_style coul/dsf/gpu +pair_coul.html pair_style coul/dsf/kk +pair_coul.html pair_style coul/dsf/omp +pair_coul.html pair_style coul/exclude +pair_coul.html pair_style coul/long +pair_coul.html pair_style coul/long/gpu +pair_coul.html pair_style coul/long/kk +pair_coul.html pair_style coul/long/omp +pair_coul.html pair_style coul/msm +pair_coul.html pair_style coul/msm/omp +pair_coul.html pair_style coul/streitz +pair_coul.html pair_style coul/wolf +pair_coul.html pair_style coul/wolf/kk +pair_coul.html pair_style coul/wolf/omp +pair_coul.html pair_style tip4p/cut +pair_coul.html pair_style tip4p/cut/omp +pair_coul.html pair_style tip4p/long +pair_coul.html pair_style tip4p/long/omp +pair_coul_shield.html pair_style coul/shield +pair_coul_slater.html pair_style coul/slater +pair_coul_slater.html pair_style coul/slater/cut +pair_coul_slater.html pair_style coul/slater/long +pair_coul_tt.html pair_style coul/tt +pair_cs.html pair_style born/coul/dsf/cs +pair_cs.html pair_style born/coul/long/cs +pair_cs.html pair_style born/coul/long/cs/gpu +pair_cs.html pair_style born/coul/wolf/cs +pair_cs.html pair_style born/coul/wolf/cs/gpu +pair_cs.html pair_style buck/coul/long/cs +pair_cs.html pair_style coul/long/cs +pair_cs.html pair_style coul/long/cs/gpu +pair_cs.html pair_style coul/wolf/cs +pair_cs.html pair_style lj/class2/coul/long/cs +pair_cs.html pair_style lj/cut/coul/long/cs +pair_dielectric.html pair_style coul/cut/dielectric +pair_dielectric.html pair_style coul/long/dielectric +pair_dielectric.html pair_style lj/cut/coul/cut/dielectric +pair_dielectric.html pair_style lj/cut/coul/cut/dielectric/omp +pair_dielectric.html pair_style lj/cut/coul/debye/dielectric +pair_dielectric.html pair_style lj/cut/coul/debye/dielectric/omp +pair_dielectric.html pair_style lj/cut/coul/long/dielectric +pair_dielectric.html pair_style lj/cut/coul/long/dielectric/omp +pair_dielectric.html pair_style lj/cut/coul/msm/dielectric +pair_dielectric.html pair_style lj/long/coul/long/dielectric +pair_dipole.html pair_style lj/cut/dipole/cut +pair_dipole.html pair_style lj/cut/dipole/cut/gpu +pair_dipole.html pair_style lj/cut/dipole/cut/kk +pair_dipole.html pair_style lj/cut/dipole/cut/omp +pair_dipole.html pair_style lj/cut/dipole/long +pair_dipole.html pair_style lj/cut/dipole/long/gpu +pair_dipole.html pair_style lj/long/dipole/long +pair_dipole.html pair_style lj/sf/dipole/sf +pair_dipole.html pair_style lj/sf/dipole/sf/gpu +pair_dipole.html pair_style lj/sf/dipole/sf/omp +pair_dpd_ext.html pair_style dpd/ext +pair_dpd_ext.html pair_style dpd/ext/kk +pair_dpd_ext.html pair_style dpd/ext/omp +pair_dpd_ext.html pair_style dpd/ext/tstat +pair_dpd_ext.html pair_style dpd/ext/tstat/kk +pair_dpd_ext.html pair_style dpd/ext/tstat/omp +pair_dpd_fdt.html pair_style dpd/fdt +pair_dpd_fdt.html pair_style dpd/fdt/energy +pair_dpd_fdt.html pair_style dpd/fdt/energy/kk +pair_dpd.html pair_style dpd +pair_dpd.html pair_style dpd/gpu +pair_dpd.html pair_style dpd/intel +pair_dpd.html pair_style dpd/kk +pair_dpd.html pair_style dpd/omp +pair_dpd.html pair_style dpd/tstat +pair_dpd.html pair_style dpd/tstat/gpu +pair_dpd.html pair_style dpd/tstat/kk +pair_dpd.html pair_style dpd/tstat/omp +pair_drip.html pair_style drip +pair_dsmc.html pair_style dsmc +pair_e3b.html pair_style e3b +pair_eam.html pair_style eam +pair_eam.html pair_style eam/alloy +pair_eam.html pair_style eam/alloy/gpu +pair_eam.html pair_style eam/alloy/intel +pair_eam.html pair_style eam/alloy/kk +pair_eam.html pair_style eam/alloy/omp +pair_eam.html pair_style eam/alloy/opt +pair_eam.html pair_style eam/cd +pair_eam.html pair_style eam/cd/old +pair_eam.html pair_style eam/fs +pair_eam.html pair_style eam/fs/gpu +pair_eam.html pair_style eam/fs/intel +pair_eam.html pair_style eam/fs/kk +pair_eam.html pair_style eam/fs/omp +pair_eam.html pair_style eam/fs/opt +pair_eam.html pair_style eam/gpu +pair_eam.html pair_style eam/he +pair_eam.html pair_style eam/intel +pair_eam.html pair_style eam/kk +pair_eam.html pair_style eam/omp +pair_eam.html pair_style eam/opt +pair_edip.html pair_style edip +pair_edip.html pair_style edip/multi +pair_edip.html pair_style edip/omp +pair_eff.html pair_style eff/cut +pair_eim.html pair_style eim +pair_eim.html pair_style eim/omp +pair_exp6_rx.html pair_style exp6/rx +pair_exp6_rx.html pair_style exp6/rx/kk +pair_extep.html pair_style extep +pair_fep_soft.html pair_style coul/cut/soft +pair_fep_soft.html pair_style coul/cut/soft/omp +pair_fep_soft.html pair_style coul/long/soft +pair_fep_soft.html pair_style coul/long/soft/omp +pair_fep_soft.html pair_style lj/charmm/coul/long/soft +pair_fep_soft.html pair_style lj/charmm/coul/long/soft/omp +pair_fep_soft.html pair_style lj/class2/coul/cut/soft +pair_fep_soft.html pair_style lj/class2/coul/long/soft +pair_fep_soft.html pair_style lj/class2/soft +pair_fep_soft.html pair_style lj/cut/coul/cut/soft +pair_fep_soft.html pair_style lj/cut/coul/cut/soft/omp +pair_fep_soft.html pair_style lj/cut/coul/long/soft +pair_fep_soft.html pair_style lj/cut/coul/long/soft/omp +pair_fep_soft.html pair_style lj/cut/soft +pair_fep_soft.html pair_style lj/cut/soft/omp +pair_fep_soft.html pair_style lj/cut/tip4p/long/soft +pair_fep_soft.html pair_style lj/cut/tip4p/long/soft/omp +pair_fep_soft.html pair_style morse/soft +pair_fep_soft.html pair_style tip4p/long/soft +pair_fep_soft.html pair_style tip4p/long/soft/omp +pair_gauss.html pair_style gauss +pair_gauss.html pair_style gauss/cut +pair_gauss.html pair_style gauss/cut/omp +pair_gauss.html pair_style gauss/gpu +pair_gauss.html pair_style gauss/omp +pair_gayberne.html pair_style gayberne +pair_gayberne.html pair_style gayberne/gpu +pair_gayberne.html pair_style gayberne/intel +pair_gayberne.html pair_style gayberne/omp +pair_gran.html pair_style gran/hertz/history +pair_gran.html pair_style gran/hertz/history/omp +pair_gran.html pair_style gran/hooke +pair_gran.html pair_style gran/hooke/history +pair_gran.html pair_style gran/hooke/history/kk +pair_gran.html pair_style gran/hooke/history/omp +pair_gran.html pair_style gran/hooke/omp +pair_granular.html pair_style granular +pair_gromacs.html pair_style lj/gromacs +pair_gromacs.html pair_style lj/gromacs/coul/gromacs +pair_gromacs.html pair_style lj/gromacs/coul/gromacs/kk +pair_gromacs.html pair_style lj/gromacs/coul/gromacs/omp +pair_gromacs.html pair_style lj/gromacs/gpu +pair_gromacs.html pair_style lj/gromacs/kk +pair_gromacs.html pair_style lj/gromacs/omp +pair_gw.html pair_style gw +pair_gw.html pair_style gw/zbl +pair_harmonic_cut.html pair_style harmonic/cut +pair_harmonic_cut.html pair_style harmonic/cut/omp +pair_hbond_dreiding.html pair_style hbond/dreiding/lj +pair_hbond_dreiding.html pair_style hbond/dreiding/lj/omp +pair_hbond_dreiding.html pair_style hbond/dreiding/morse +pair_hbond_dreiding.html pair_style hbond/dreiding/morse/omp +pair_hdnnp.html pair_style hdnnp +pair_hybrid.html pair_style hybrid +pair_hybrid.html pair_style hybrid/kk +pair_hybrid.html pair_style hybrid/overlay +pair_hybrid.html pair_style hybrid/overlay/kk +pair_hybrid.html pair_style hybrid/scaled +pair_ilp_graphene_hbn.html pair_style ilp/graphene/hbn +pair_ilp_graphene_hbn.html pair_style ilp/graphene/hbn/opt +pair_ilp_tmd.html pair_style ilp/tmd +pair_ilp_tmd.html pair_style ilp/tmd/opt +pair_kim.html pair_style kim +pair_kolmogorov_crespi_full.html pair_style kolmogorov/crespi/full +pair_kolmogorov_crespi_z.html pair_style kolmogorov/crespi/z +pair_lcbop.html pair_style lcbop +pair_lebedeva_z.html pair_style lebedeva/z +pair_lepton.html pair_style lepton +pair_lepton.html pair_style lepton/coul +pair_lepton.html pair_style lepton/coul/omp +pair_lepton.html pair_style lepton/omp +pair_lepton.html pair_style lepton/sphere +pair_lepton.html pair_style lepton/sphere/omp +pair_line_lj.html pair_style line/lj +pair_list.html pair_style list +pair_lj96.html pair_style lj96/cut +pair_lj96.html pair_style lj96/cut/gpu +pair_lj96.html pair_style lj96/cut/omp +pair_lj_cubic.html pair_style lj/cubic +pair_lj_cubic.html pair_style lj/cubic/gpu +pair_lj_cubic.html pair_style lj/cubic/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/cut +pair_lj_cut_coul.html pair_style lj/cut/coul/cut/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/cut/kk +pair_lj_cut_coul.html pair_style lj/cut/coul/cut/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/debye +pair_lj_cut_coul.html pair_style lj/cut/coul/debye/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/debye/kk +pair_lj_cut_coul.html pair_style lj/cut/coul/debye/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/dsf +pair_lj_cut_coul.html pair_style lj/cut/coul/dsf/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/dsf/kk +pair_lj_cut_coul.html pair_style lj/cut/coul/dsf/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/long +pair_lj_cut_coul.html pair_style lj/cut/coul/long/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/long/intel +pair_lj_cut_coul.html pair_style lj/cut/coul/long/kk +pair_lj_cut_coul.html pair_style lj/cut/coul/long/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/long/opt +pair_lj_cut_coul.html pair_style lj/cut/coul/msm +pair_lj_cut_coul.html pair_style lj/cut/coul/msm/gpu +pair_lj_cut_coul.html pair_style lj/cut/coul/msm/omp +pair_lj_cut_coul.html pair_style lj/cut/coul/wolf +pair_lj_cut_coul.html pair_style lj/cut/coul/wolf/omp +pair_lj_cut_sphere.html pair_style lj/cut/sphere +pair_lj_cut_sphere.html pair_style lj/cut/sphere/omp +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/cut +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/cut/omp +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/long +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/long/gpu +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/long/omp +pair_lj_cut_tip4p.html pair_style lj/cut/tip4p/long/opt +pair_lj_expand.html pair_style lj/expand +pair_lj_expand.html pair_style lj/expand/coul/long +pair_lj_expand.html pair_style lj/expand/coul/long/gpu +pair_lj_expand.html pair_style lj/expand/coul/long/kk +pair_lj_expand.html pair_style lj/expand/gpu +pair_lj_expand.html pair_style lj/expand/kk +pair_lj_expand.html pair_style lj/expand/omp +pair_lj_expand_sphere.html pair_style lj/expand/sphere +pair_lj_expand_sphere.html pair_style lj/expand/sphere/omp +pair_lj_long.html pair_style lj/long/coul/long +pair_lj_long.html pair_style lj/long/coul/long/intel +pair_lj_long.html pair_style lj/long/coul/long/omp +pair_lj_long.html pair_style lj/long/coul/long/opt +pair_lj_long.html pair_style lj/long/tip4p/long +pair_lj_long.html pair_style lj/long/tip4p/long/omp +pair_lj_relres.html pair_style lj/relres +pair_lj_relres.html pair_style lj/relres/omp +pair_lj.html pair_style lj/cut +pair_lj.html pair_style lj/cut/gpu +pair_lj.html pair_style lj/cut/intel +pair_lj.html pair_style lj/cut/kk +pair_lj.html pair_style lj/cut/omp +pair_lj.html pair_style lj/cut/opt +pair_lj_smooth_linear.html pair_style lj/smooth/linear +pair_lj_smooth_linear.html pair_style lj/smooth/linear/omp +pair_lj_smooth.html pair_style lj/smooth +pair_lj_smooth.html pair_style lj/smooth/gpu +pair_lj_smooth.html pair_style lj/smooth/omp +pair_lj_switch3_coulgauss_long.html pair_style lj/switch3/coulgauss/long +pair_lj_switch3_coulgauss_long.html pair_style mm3/switch3/coulgauss/long +pair_local_density.html pair_style local/density +pair_lubricate.html pair_style lubricate +pair_lubricate.html pair_style lubricate/omp +pair_lubricate.html pair_style lubricate/poly +pair_lubricate.html pair_style lubricate/poly/omp +pair_lubricateU.html pair_style lubricateU +pair_lubricateU.html pair_style lubricateU/poly +pair_mdf.html pair_style buck/mdf +pair_mdf.html pair_style lennard/mdf +pair_mdf.html pair_style lj/mdf +pair_meam.html pair_style meam +pair_meam.html pair_style meam/kk +pair_meam.html pair_style meam/ms +pair_meam.html pair_style meam/ms/kk +pair_meam_spline.html pair_style meam/spline +pair_meam_spline.html pair_style meam/spline/omp +pair_meam_sw_spline.html pair_style meam/sw/spline +pair_mesocnt.html pair_style mesocnt +pair_mesocnt.html pair_style mesocnt/viscous +pair_mesodpd.html pair_style edpd +pair_mesodpd.html pair_style mdpd +pair_mesodpd.html pair_style mdpd/rhosum +pair_mesodpd.html pair_style tdpd +pair_mgpt.html pair_style mgpt +pair_mie.html pair_style mie/cut +pair_mie.html pair_style mie/cut/gpu +pair_mliap.html pair_style mliap +pair_mliap.html pair_style mliap/kk +pair_modify.html pair_modify +pair_momb.html pair_style momb +pair_morse.html pair_style morse +pair_morse.html pair_style morse/gpu +pair_morse.html pair_style morse/kk +pair_morse.html pair_style morse/omp +pair_morse.html pair_style morse/opt +pair_morse.html pair_style morse/smooth/linear +pair_morse.html pair_style morse/smooth/linear/omp +pair_multi_lucy.html pair_style multi/lucy +pair_multi_lucy_rx.html pair_style multi/lucy/rx +pair_multi_lucy_rx.html pair_style multi/lucy/rx/kk +pair_nb3b_harmonic.html pair_style nb3b/harmonic +pair_nm.html pair_style nm/cut +pair_nm.html pair_style nm/cut/coul/cut +pair_nm.html pair_style nm/cut/coul/cut/omp +pair_nm.html pair_style nm/cut/coul/long +pair_nm.html pair_style nm/cut/coul/long/omp +pair_nm.html pair_style nm/cut/omp +pair_nm.html pair_style nm/cut/split +pair_none.html pair_style none +pair_oxdna2.html pair_style oxdna2/coaxstk +pair_oxdna2.html pair_style oxdna2/dh +pair_oxdna2.html pair_style oxdna2/excv +pair_oxdna2.html pair_style oxdna2/hbond +pair_oxdna2.html pair_style oxdna2/stk +pair_oxdna2.html pair_style oxdna2/xstk +pair_oxdna.html pair_style oxdna/coaxstk +pair_oxdna.html pair_style oxdna/excv +pair_oxdna.html pair_style oxdna/hbond +pair_oxdna.html pair_style oxdna/stk +pair_oxdna.html pair_style oxdna/xstk +pair_oxrna2.html pair_style oxrna2/coaxstk +pair_oxrna2.html pair_style oxrna2/dh +pair_oxrna2.html pair_style oxrna2/excv +pair_oxrna2.html pair_style oxrna2/hbond +pair_oxrna2.html pair_style oxrna2/stk +pair_oxrna2.html pair_style oxrna2/xstk +pair_pace.html pair_style pace +pair_pace.html pair_style pace/extrapolation +pair_pace.html pair_style pace/extrapolation/kk +pair_pace.html pair_style pace/kk +pair_peri.html pair_style peri/eps +pair_peri.html pair_style peri/lps +pair_peri.html pair_style peri/lps/omp +pair_peri.html pair_style peri/pmb +pair_peri.html pair_style peri/pmb/omp +pair_peri.html pair_style peri/ves +pair_pod.html pair_style pod +pair_polymorphic.html pair_style polymorphic +pair_python.html pair_style python +pair_quip.html pair_style quip +pair_rann.html pair_style rann +pair_reaxff.html pair_style reaxff +pair_reaxff.html pair_style reaxff/kk +pair_reaxff.html pair_style reaxff/omp +pair_resquared.html pair_style resquared +pair_resquared.html pair_style resquared/gpu +pair_resquared.html pair_style resquared/omp +pair_saip_metal.html pair_style saip/metal +pair_saip_metal.html pair_style saip/metal/opt +pair_sdpd_taitwater_isothermal.html pair_style sdpd/taitwater/isothermal +pair_smatb.html pair_style smatb +pair_smatb.html pair_style smatb/single +pair_smd_hertz.html pair_style smd/hertz +pair_smd_tlsph.html pair_style smd/tlsph +pair_smd_triangulated_surface.html pair_style smd/tri_surface +pair_smd_ulsph.html pair_style smd/ulsph +pair_smtbq.html pair_style smtbq +pair_snap.html pair_style snap +pair_snap.html pair_style snap/kk +pair_soft.html pair_style soft +pair_soft.html pair_style soft/gpu +pair_soft.html pair_style soft/omp +pair_sph_heatconduction.html pair_style sph/heatconduction +pair_sph_idealgas.html pair_style sph/idealgas +pair_sph_lj.html pair_style sph/lj +pair_sph_rhosum.html pair_style sph/rhosum +pair_sph_taitwater_morris.html pair_style sph/taitwater/morris +pair_sph_taitwater.html pair_style sph/taitwater +pair_spica.html pair_style lj/spica +pair_spica.html pair_style lj/spica/coul/long +pair_spica.html pair_style lj/spica/coul/long/gpu +pair_spica.html pair_style lj/spica/coul/long/omp +pair_spica.html pair_style lj/spica/coul/msm +pair_spica.html pair_style lj/spica/coul/msm/omp +pair_spica.html pair_style lj/spica/gpu +pair_spica.html pair_style lj/spica/kk +pair_spica.html pair_style lj/spica/omp +pair_spin_dipole.html pair_style spin/dipole/cut +pair_spin_dipole.html pair_style spin/dipole/long +pair_spin_dmi.html pair_style spin/dmi +pair_spin_exchange.html pair_style spin/exchange +pair_spin_exchange.html pair_style spin/exchange/biquadratic +pair_spin_magelec.html pair_style spin/magelec +pair_spin_neel.html pair_style spin/neel +pair_srp.html pair_style srp +pair_srp.html pair_style srp/react +pair_style.html pair_style +pair_sw_angle_table.html pair_style sw/angle/table +pair_sw.html pair_style sw +pair_sw.html pair_style sw/gpu +pair_sw.html pair_style sw/intel +pair_sw.html pair_style sw/kk +pair_sw.html pair_style sw/mod +pair_sw.html pair_style sw/mod/omp +pair_sw.html pair_style sw/omp +pair_table.html pair_style table +pair_table.html pair_style table/gpu +pair_table.html pair_style table/kk +pair_table.html pair_style table/omp +pair_table_rx.html pair_style table/rx +pair_table_rx.html pair_style table/rx/kk +pair_tersoff_mod.html pair_style tersoff/mod +pair_tersoff_mod.html pair_style tersoff/mod/c +pair_tersoff_mod.html pair_style tersoff/mod/c/omp +pair_tersoff_mod.html pair_style tersoff/mod/gpu +pair_tersoff_mod.html pair_style tersoff/mod/kk +pair_tersoff_mod.html pair_style tersoff/mod/omp +pair_tersoff.html pair_style tersoff +pair_tersoff.html pair_style tersoff/gpu +pair_tersoff.html pair_style tersoff/intel +pair_tersoff.html pair_style tersoff/kk +pair_tersoff.html pair_style tersoff/omp +pair_tersoff.html pair_style tersoff/table +pair_tersoff.html pair_style tersoff/table/omp +pair_tersoff_zbl.html pair_style tersoff/zbl +pair_tersoff_zbl.html pair_style tersoff/zbl/gpu +pair_tersoff_zbl.html pair_style tersoff/zbl/kk +pair_tersoff_zbl.html pair_style tersoff/zbl/omp +pair_thole.html pair_style lj/cut/thole/long +pair_thole.html pair_style lj/cut/thole/long/omp +pair_thole.html pair_style thole +pair_threebody_table.html pair_style threebody/table +pair_tracker.html pair_style tracker +pair_tri_lj.html pair_style tri/lj +pair_ufm.html pair_style ufm +pair_ufm.html pair_style ufm/gpu +pair_ufm.html pair_style ufm/omp +pair_ufm.html pair_style ufm/opt +pair_vashishta.html pair_style vashishta +pair_vashishta.html pair_style vashishta/gpu +pair_vashishta.html pair_style vashishta/kk +pair_vashishta.html pair_style vashishta/omp +pair_vashishta.html pair_style vashishta/table +pair_vashishta.html pair_style vashishta/table/omp +pair_wf_cut.html pair_style wf/cut +pair_write.html pair_write +pair_ylz.html pair_style ylz +pair_yukawa_colloid.html pair_style yukawa/colloid +pair_yukawa_colloid.html pair_style yukawa/colloid/gpu +pair_yukawa_colloid.html pair_style yukawa/colloid/omp +pair_yukawa.html pair_style yukawa +pair_yukawa.html pair_style yukawa/gpu +pair_yukawa.html pair_style yukawa/kk +pair_yukawa.html pair_style yukawa/omp +pair_zbl.html pair_style zbl +pair_zbl.html pair_style zbl/gpu +pair_zbl.html pair_style zbl/kk +pair_zbl.html pair_style zbl/omp +pair_zero.html pair_style zero +partition.html partition +plugin.html plugin +prd.html prd +print.html print +processors.html processors +python.html python +quit.html quit +read_data.html read_data +read_dump.html read_dump +read_restart.html read_restart +region.html region +replicate.html replicate +rerun.html rerun +reset_atoms.html reset_atoms +reset_timestep.html reset_timestep +restart.html restart +run.html run +run_style.html run_style +set.html set +shell.html shell +special_bonds.html special_bonds +suffix.html suffix +tad.html tad +temper_grem.html temper/grem +temper_npt.html temper/npt +temper.html temper +thermo_modify.html thermo_modify +thermo.html thermo +thermo_style.html thermo_style +third_order.html third_order +third_order.html third_order/kk +timer.html timer +timestep.html timestep +uncompute.html uncompute +undump.html undump +unfix.html unfix +units.html units +variable.html variable +velocity.html velocity +write_coeff.html write_coeff +write_data.html write_data +write_dump.html write_dump +write_restart.html write_restart diff --git a/tools/lammps-gui/highlighter.cpp b/tools/lammps-gui/highlighter.cpp index 3e75cb56d4..c2afb28342 100644 --- a/tools/lammps-gui/highlighter.cpp +++ b/tools/lammps-gui/highlighter.cpp @@ -18,18 +18,23 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) HighlightingRule rule; outputFormat.setForeground(Qt::darkYellow); + outputFormat.setFontWeight(QFont::Bold); readFormat.setForeground(Qt::magenta); + readFormat.setFontWeight(QFont::Bold); latticeFormat.setForeground(Qt::darkGreen); + latticeFormat.setFontWeight(QFont::Bold); particleFormat.setForeground(Qt::darkRed); + particleFormat.setFontWeight(QFont::Bold); setupFormat.setForeground(Qt::darkCyan); - runFormat.setForeground(Qt::green); + setupFormat.setFontWeight(QFont::Bold); + runFormat.setForeground(Qt::darkBlue); runFormat.setFontWeight(QFont::Bold); defineFormat.setForeground(Qt::darkMagenta); defineFormat.setFontWeight(QFont::Bold); numberFormat.setForeground(Qt::blue); commentFormat.setForeground(Qt::red); - stringFormat.setForeground(Qt::cyan); + stringFormat.setForeground(Qt::darkGreen); stringFormat.setFontWeight(QFont::Normal); const QString output_keywords[] = { @@ -202,11 +207,44 @@ Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) void Highlighter::highlightBlock(const QString &text) { + auto style = QRegularExpression("^(fix|compute|dump|set)\\s+(\\w+)\\s+(\\S+)\\s+(\\S+)").match(text); + auto force = QRegularExpression("^(atom_style|pair_style|bond_style|angle_style|dihedral_style|improper_style|kspace_style)\\s+(\\S+)").match(text); + auto defs = QRegularExpression("^(group|variable)\\s+(\\S+)\\s+(\\S+)").match(text); + auto undo = QRegularExpression("^(unfix|uncompute|undump)\\s+(\\w+)").match(text); + bool do_style = true; + bool do_force = true; + bool do_defs = true; + bool do_undo = true; for (const HighlightingRule &rule : qAsConst(highlightingRules)) { QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text); while (matchIterator.hasNext()) { QRegularExpressionMatch match = matchIterator.next(); - setFormat(match.capturedStart(), match.capturedLength(), rule.format); + // special treatment for fix/compute/dump styles etc. + if (style.hasMatch() && do_style) { + setFormat(style.capturedStart(1), style.capturedLength(1), defineFormat); + setFormat(style.capturedStart(2), style.capturedLength(2), numberFormat); + setFormat(style.capturedStart(3), style.capturedLength(3), stringFormat); + setFormat(style.capturedStart(4), style.capturedLength(4), runFormat); + do_style = false; + // special treatment for force styles styles + } else if (force.hasMatch() && do_force) { + setFormat(force.capturedStart(1), force.capturedLength(1), particleFormat); + setFormat(force.capturedStart(2), force.capturedLength(2), runFormat); + do_force = false; + // special treatment for undo commands + } else if (undo.hasMatch() && do_undo) { + setFormat(undo.capturedStart(1), undo.capturedLength(1), defineFormat); + setFormat(undo.capturedStart(2), undo.capturedLength(2), stringFormat); + do_undo = false; + // special treatment for some definitions + } else if (defs.hasMatch() && do_defs) { + setFormat(defs.capturedStart(1), defs.capturedLength(1), particleFormat); + setFormat(defs.capturedStart(2), defs.capturedLength(2), stringFormat); + setFormat(defs.capturedStart(3), defs.capturedLength(3), runFormat); + do_defs = false; + } else { + setFormat(match.capturedStart(), match.capturedLength(), rule.format); + } } } } diff --git a/tools/lammps-gui/icons/hicolor/128x128/apps/lammps.png b/tools/lammps-gui/icons/hicolor/128x128/apps/lammps.png new file mode 100644 index 0000000000000000000000000000000000000000..bfbeb479785b4d9e9d84627579e6cfcff036dee5 GIT binary patch literal 39487 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/icons/hicolor/16x16/apps/lammps.png b/tools/lammps-gui/icons/hicolor/16x16/apps/lammps.png new file mode 100644 index 0000000000000000000000000000000000000000..b48ea6d6a923e0923e1091336b0cbc7090d3a48b GIT binary patch literal 15340 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/icons/hicolor/22x22/apps/lammps.png b/tools/lammps-gui/icons/hicolor/22x22/apps/lammps.png new file mode 100644 index 0000000000000000000000000000000000000000..5f15c747d19b19ad371f6dc93b3485bd669a8f28 GIT binary patch literal 15821 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 GA^!_~ua8y$ literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/icons/hicolor/32x32/apps/lammps.png b/tools/lammps-gui/icons/hicolor/32x32/apps/lammps.png new file mode 100644 index 0000000000000000000000000000000000000000..4609d8a4110f2ad3f1c393d152ba4442c08c8a5b GIT binary patch literal 16813 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 TysoVZS|Hl$SJbjqt_S`f-OBq} literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/icons/lammps.ico b/tools/lammps-gui/icons/lammps.ico new file mode 100644 index 0000000000000000000000000000000000000000..cce156bf7998a0a15a1721b6499ef3143aebe878 GIT binary patch literal 209266 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 z

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 p8@2QC^gVyinlibZ`lc3qciy~ #include @@ -25,15 +26,21 @@ #include #include #include +#include #include #include #include +#include #include #include #include +#include -ImageViewer::ImageViewer(const QString &fileName, QWidget *parent) : - QDialog(parent), imageLabel(new QLabel), scrollArea(new QScrollArea), menuBar(new QMenuBar) +static const QString blank(" "); + +ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidget *parent) : + QDialog(parent), imageLabel(new QLabel), scrollArea(new QScrollArea), menuBar(new QMenuBar), + lammps(_lammps), group("all"), filename(fileName) { imageLabel->setBackgroundRole(QPalette::Base); imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); @@ -42,8 +49,6 @@ ImageViewer::ImageViewer(const QString &fileName, QWidget *parent) : scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(imageLabel); - scrollArea->setMouseTracking(true); - scrollArea->installEventFilter(this); scrollArea->setVisible(false); buttonBox = new QDialogButtonBox(QDialogButtonBox::Close); @@ -52,23 +57,72 @@ ImageViewer::ImageViewer(const QString &fileName, QWidget *parent) : connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(menuBar); + + auto *dossao = new QPushButton(QIcon(":/hd-img.png"), ""); + dossao->setCheckable(true); + auto *doanti = new QPushButton(QIcon(":/antialias.png"), ""); + doanti->setCheckable(true); + auto *dobox = new QPushButton(QIcon(":/system-box.png"), ""); + dobox->setCheckable(true); + auto *doaxes = new QPushButton(QIcon(":/axes-img.png"), ""); + doaxes->setCheckable(true); + auto *zoomin = new QPushButton(QIcon(":/gtk-zoom-in.png"), ""); + auto *zoomout = new QPushButton(QIcon(":/gtk-zoom-out.png"), ""); + auto *rotleft = new QPushButton(QIcon(":/object-rotate-left.png"), ""); + auto *rotright = new QPushButton(QIcon(":/object-rotate-right.png"), ""); + auto *rotup = new QPushButton(QIcon(":/gtk-go-up.png"), ""); + auto *rotdown = new QPushButton(QIcon(":/gtk-go-down.png"), ""); + auto *reset = new QPushButton(QIcon(":/gtk-zoom-fit.png"), ""); + auto *combo = new QComboBox; + combo->setObjectName("group"); + int ngroup = lammps->id_count("group"); + char gname[64]; + for (int i = 0; i < ngroup; ++i) { + lammps->id_name("group", i, gname, 64); + combo->addItem(gname); + } + + QHBoxLayout *menuLayout = new QHBoxLayout; + menuLayout->addWidget(menuBar); + menuLayout->addWidget(dossao); + menuLayout->addWidget(doanti); + menuLayout->addWidget(dobox); + menuLayout->addWidget(doaxes); + menuLayout->addWidget(zoomin); + menuLayout->addWidget(zoomout); + menuLayout->addWidget(rotleft); + menuLayout->addWidget(rotright); + menuLayout->addWidget(rotup); + menuLayout->addWidget(rotdown); + menuLayout->addWidget(reset); + menuLayout->addWidget(new QLabel(" Group: ")); + menuLayout->addWidget(combo); + + connect(dossao, &QPushButton::released, this, &ImageViewer::toggle_ssao); + connect(doanti, &QPushButton::released, this, &ImageViewer::toggle_anti); + connect(dobox, &QPushButton::released, this, &ImageViewer::toggle_box); + connect(doaxes, &QPushButton::released, this, &ImageViewer::toggle_axes); + connect(zoomin, &QPushButton::released, this, &ImageViewer::do_zoom_in); + connect(zoomout, &QPushButton::released, this, &ImageViewer::do_zoom_out); + connect(rotleft, &QPushButton::released, this, &ImageViewer::do_rot_left); + connect(rotright, &QPushButton::released, this, &ImageViewer::do_rot_right); + connect(rotup, &QPushButton::released, this, &ImageViewer::do_rot_up); + connect(rotdown, &QPushButton::released, this, &ImageViewer::do_rot_down); + connect(reset, &QPushButton::released, this, &ImageViewer::reset_view); + connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(change_group(int))); + + mainLayout->addLayout(menuLayout); mainLayout->addWidget(scrollArea); mainLayout->addWidget(buttonBox); - setWindowTitle(QString("Image Viewer: ") + QFileInfo(fileName).completeBaseName()); - + setWindowTitle(QString("Image Viewer: ") + QFileInfo(fileName).fileName()); createActions(); - QImageReader reader(fileName); - reader.setAutoTransform(true); - const QImage newImage = reader.read(); - if (newImage.isNull()) { - QMessageBox::warning(this, QGuiApplication::applicationDisplayName(), - tr("Cannot load %1: %2").arg(fileName, reader.errorString())); - return; - } - image = newImage; - imageLabel->setPixmap(QPixmap::fromImage(image)); + reset_view(); + dobox->setChecked(showbox); + doaxes->setChecked(showaxes); + dossao->setChecked(usessao); + doanti->setChecked(antialias); + scaleFactor = 1.0; resize(image.width() + 20, image.height() + 50); @@ -79,6 +133,181 @@ ImageViewer::ImageViewer(const QString &fileName, QWidget *parent) : setLayout(mainLayout); } +void ImageViewer::reset_view() +{ + QSettings settings; + settings.beginGroup("snapshot"); + zoom = settings.value("zoom", 1.0).toDouble(); + hrot = settings.value("hrot", 60).toInt(); + vrot = settings.value("vrot", 30).toInt(); + showbox = settings.value("box", true).toBool(); + showaxes = settings.value("axes", false).toBool(); + usessao = settings.value("ssao", false).toBool(); + antialias = settings.value("antialias", false).toBool(); + settings.endGroup(); + + // reset state of checkable push buttons and combo box (after main layout is set up) + auto *lo = layout(); + if (lo) { + // grab layout manager for the top bar + lo = lo->itemAt(0)->layout(); + // grab the first 4 buttons after the menu bar + auto *button = qobject_cast(lo->itemAt(1)->widget()); + button->setChecked(usessao); + button = qobject_cast(lo->itemAt(2)->widget()); + button->setChecked(antialias); + button = qobject_cast(lo->itemAt(3)->widget()); + button->setChecked(showbox); + button = qobject_cast(lo->itemAt(4)->widget()); + button->setChecked(showaxes); + // grab the last entry -> group selector + auto *cb = qobject_cast(lo->itemAt(lo->count() - 1)->widget()); + cb->setCurrentText("all"); + } + createImage(); +} + +void ImageViewer::toggle_ssao() +{ + QPushButton *button = qobject_cast(sender()); + usessao = !usessao; + button->setChecked(usessao); + createImage(); +} + +void ImageViewer::toggle_anti() +{ + QPushButton *button = qobject_cast(sender()); + antialias = !antialias; + button->setChecked(antialias); + createImage(); +} + +void ImageViewer::toggle_box() +{ + QPushButton *button = qobject_cast(sender()); + showbox = !showbox; + button->setChecked(showbox); + createImage(); +} + +void ImageViewer::toggle_axes() +{ + QPushButton *button = qobject_cast(sender()); + showaxes = !showaxes; + button->setChecked(showaxes); + createImage(); +} + +void ImageViewer::do_zoom_in() +{ + zoom = zoom * 1.1; + if (zoom > 5.0) zoom = 5.0; + createImage(); +} + +void ImageViewer::do_zoom_out() +{ + zoom = zoom / 1.1; + if (zoom < 0.5) zoom = 0.5; + createImage(); +} + +void ImageViewer::do_rot_left() +{ + vrot -= 15; + if (vrot < -180) vrot += 360; + createImage(); +} + +void ImageViewer::do_rot_right() +{ + vrot += 15; + if (vrot > 180) vrot -= 360; + createImage(); +} + +void ImageViewer::do_rot_down() +{ + hrot -= 15; + if (hrot < 0) hrot += 360; + createImage(); +} + +void ImageViewer::do_rot_up() +{ + hrot += 15; + if (hrot > 360) hrot -= 360; + createImage(); +} + +void ImageViewer::change_group(int idx) +{ + QComboBox *box = findChild("group"); + if (box) group = box->currentText(); + createImage(); +} + +void ImageViewer::createImage() +{ + QSettings settings; + QString dumpcmd = QString("write_dump ") + group + " image "; + QDir dumpdir(QDir::tempPath()); + QFile dumpfile(dumpdir.absoluteFilePath(filename + ".ppm")); + dumpcmd += dumpfile.fileName(); + + settings.beginGroup("snapshot"); + int aa = antialias ? 2 : 1; + int xsize = settings.value("xsize", 800).toInt() * aa; + int ysize = settings.value("ysize", 600).toInt() * aa; + int hhrot = (hrot > 180) ? 360 - hrot : hrot; + + dumpcmd += blank + settings.value("color", "type").toString(); + dumpcmd += blank + settings.value("diameter", "type").toString(); + dumpcmd += QString(" size ") + QString::number(xsize) + blank + QString::number(ysize); + dumpcmd += QString(" zoom ") + QString::number(zoom); + lammps->command(dumpcmd.toLocal8Bit()); + if (lammps->extract_setting("dimension") == 3) { + dumpcmd += QString(" view ") + QString::number(hhrot) + blank + QString::number(vrot); + } + if (usessao) dumpcmd += QString(" ssao yes 453983 0.75"); + if (showbox) + dumpcmd += QString(" box yes 0.025"); + else + dumpcmd += QString(" box no 0.0"); + + if (showaxes) + dumpcmd += QString(" axes yes 0.2 0.025"); + else + dumpcmd += QString(" axes no 0.0 0.0"); + + dumpcmd += " modify boxcolor " + settings.value("boxcolor", "yellow").toString(); + dumpcmd += " backcolor " + settings.value("background", "black").toString(); + settings.endGroup(); + + lammps->command(dumpcmd.toLocal8Bit()); + + QImageReader reader(dumpfile.fileName()); + reader.setAutoTransform(true); + const QImage newImage = reader.read(); + + if (newImage.isNull()) { + QMessageBox::warning( + this, QGuiApplication::applicationDisplayName(), + QString("Cannot load %1: %2").arg(dumpfile.fileName(), reader.errorString())); + return; + } + dumpfile.remove(); + + settings.beginGroup("snapshot"); + xsize = settings.value("xsize", 800).toInt(); + ysize = settings.value("ysize", 600).toInt(); + settings.endGroup(); + // scale back to achieve antialiasing + image = newImage.scaled(xsize, ysize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + imageLabel->setPixmap(QPixmap::fromImage(image)); +} + void ImageViewer::saveAs() { QString fileName = QFileDialog::getSaveFileName(this, "Save Image File As", QString(), @@ -90,12 +319,12 @@ void ImageViewer::copy() {} void ImageViewer::zoomIn() { - scaleImage(1.1); + scaleImage(1.25); } void ImageViewer::zoomOut() { - scaleImage(0.9); + scaleImage(0.8); } void ImageViewer::normalSize() @@ -119,38 +348,44 @@ void ImageViewer::saveFile(const QString &fileName) void ImageViewer::createActions() { - QMenu *fileMenu = menuBar->addMenu(tr("&File")); + QMenu *fileMenu = menuBar->addMenu("&File"); - saveAsAct = fileMenu->addAction(tr("&Save As..."), this, &ImageViewer::saveAs); + saveAsAct = fileMenu->addAction("&Save As...", this, &ImageViewer::saveAs); + saveAsAct->setIcon(QIcon(":/document-save-as.png")); saveAsAct->setEnabled(false); fileMenu->addSeparator(); - copyAct = fileMenu->addAction(tr("&Copy"), this, &ImageViewer::copy); + copyAct = fileMenu->addAction("&Copy", this, &ImageViewer::copy); + copyAct->setIcon(QIcon(":/edit-copy.png")); copyAct->setShortcut(QKeySequence::Copy); copyAct->setEnabled(false); fileMenu->addSeparator(); - QAction *exitAct = fileMenu->addAction(tr("&Close"), this, &QWidget::close); - exitAct->setShortcut(tr("Ctrl+W")); + QAction *exitAct = fileMenu->addAction("&Close", this, &QWidget::close); + exitAct->setIcon(QIcon(":/window-close.png")); + exitAct->setShortcut(QKeySequence::fromString("Ctrl+W")); - QMenu *viewMenu = menuBar->addMenu(tr("&View")); + QMenu *viewMenu = menuBar->addMenu("&View"); - zoomInAct = viewMenu->addAction(tr("Zoom &In (10%)"), this, &ImageViewer::zoomIn); + zoomInAct = viewMenu->addAction("Image Zoom &In (25%)", this, &ImageViewer::zoomIn); zoomInAct->setShortcut(QKeySequence::ZoomIn); + zoomInAct->setIcon(QIcon(":/gtk-zoom-in.png")); zoomInAct->setEnabled(false); - zoomOutAct = viewMenu->addAction(tr("Zoom &Out (10%)"), this, &ImageViewer::zoomOut); + zoomOutAct = viewMenu->addAction("Image Zoom &Out (25%)", this, &ImageViewer::zoomOut); zoomOutAct->setShortcut(QKeySequence::ZoomOut); + zoomOutAct->setIcon(QIcon(":/gtk-zoom-out.png")); zoomOutAct->setEnabled(false); - normalSizeAct = viewMenu->addAction(tr("&Normal Size"), this, &ImageViewer::normalSize); - normalSizeAct->setShortcut(tr("Ctrl+S")); + normalSizeAct = viewMenu->addAction("&Reset Image Size", this, &ImageViewer::normalSize); + normalSizeAct->setShortcut(QKeySequence::fromString("Ctrl+0")); + normalSizeAct->setIcon(QIcon(":/gtk-zoom-fit.png")); normalSizeAct->setEnabled(false); viewMenu->addSeparator(); - fitToWindowAct = viewMenu->addAction(tr("&Fit to Window"), this, &ImageViewer::fitToWindow); + fitToWindowAct = viewMenu->addAction("&Fit to Window", this, &ImageViewer::fitToWindow); fitToWindowAct->setEnabled(false); fitToWindowAct->setCheckable(true); - fitToWindowAct->setShortcut(tr("Ctrl+F")); + fitToWindowAct->setShortcut(QKeySequence::fromString("Ctrl+=")); } void ImageViewer::updateActions() @@ -183,27 +418,6 @@ void ImageViewer::adjustScrollBar(QScrollBar *scrollBar, double factor) int(factor * scrollBar->value() + ((factor - 1) * scrollBar->pageStep() / 2))); } -bool ImageViewer::eventFilter(QObject *, QEvent *event) -{ - if (event->type() == QEvent::Wheel) { - wheelEvent((QWheelEvent *)event); - return true; - } - return false; -} - -void ImageViewer::wheelEvent(QWheelEvent *event) -{ - QPoint num = event->angleDelta(); - if (!num.isNull()) { - if (num.y() > 0) - zoomIn(); - else - zoomOut(); - } - event->accept(); -} - // Local Variables: // c-basic-offset: 4 // End: diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index edd66c9e73..b81e5b0d59 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -14,8 +14,10 @@ #ifndef IMAGEVIEWER_H #define IMAGEVIEWER_H +#include #include #include +#include class QAction; class QMenuBar; @@ -25,13 +27,15 @@ class QObject; class QScrollArea; class QScrollBar; class QStatusBar; -class QWheelEvent; +class LammpsWrapper; +class QComboBox; class ImageViewer : public QDialog { Q_OBJECT public: - explicit ImageViewer(const QString &fileName, QWidget *parent = nullptr); + explicit ImageViewer(const QString &fileName, LammpsWrapper *_lammps, + QWidget *parent = nullptr); private slots: void saveAs(); @@ -41,14 +45,28 @@ private slots: void normalSize(); void fitToWindow(); + void reset_view(); + void toggle_ssao(); + void toggle_anti(); + void toggle_box(); + void toggle_axes(); + void do_zoom_in(); + void do_zoom_out(); + void do_rot_left(); + void do_rot_right(); + void do_rot_up(); + void do_rot_down(); + void change_group(int); + +public: + void createImage(); + private: void createActions(); void updateActions(); void saveFile(const QString &fileName); void scaleImage(double factor); void adjustScrollBar(QScrollBar *scrollBar, double factor); - bool eventFilter(QObject *object, QEvent *event); - void wheelEvent(QWheelEvent *event); private: QImage image; @@ -64,6 +82,13 @@ private: QAction *zoomOutAct; QAction *normalSizeAct; QAction *fitToWindowAct; + + LammpsWrapper *lammps; + QString group; + QString filename; + int hrot, vrot; + double zoom; + bool showbox, showaxes, antialias, usessao; }; #endif diff --git a/tools/lammps-gui/lammps-gui.desktop b/tools/lammps-gui/lammps-gui.desktop new file mode 100644 index 0000000000..ffd903b1d9 --- /dev/null +++ b/tools/lammps-gui/lammps-gui.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Categories=Education;Science +MimeType=text/x-application-lammps +Exec=lammps-gui %f +Name=The LAMMPS GUI +Terminal=false +GenericName=LAMMPS MD Simulator GUI +Keywords=MD Simulation;LAMMPS;Molecular Dynamics;N-Body +Icon=lammps diff --git a/tools/lammps-gui/lammps-input.xml b/tools/lammps-gui/lammps-input.xml new file mode 100644 index 0000000000..20e1646316 --- /dev/null +++ b/tools/lammps-gui/lammps-input.xml @@ -0,0 +1,8 @@ + + + + LAMMPS input file + + + + diff --git a/tools/lammps-gui/lammps-logo.png b/tools/lammps-gui/lammps-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..511f064b8aaa83ef40a25b719607358e0edc4265 GIT binary patch literal 68913 zcmYg$WmFtZwCxP;7J|FGyAJMd!AWp;x4|8P2e;rF+}$CALvVM81eeEm-@0qvAKk0F zx@&jWK6R?<>^f1Z$}*@(1V{h?098&_QXK#Q#(!L!AwYecNgyEKkAg632?

2?;VM z7e@4eM(N4XRvp zOwpE})0O3~ldYYq%8*Jjgf}oBzW{x^Y}7q<7!JFUS7*ZQ1%Ia}>6W8*hRt0pbcF?e zhNk-HzE0Q{qj+R*1dIih#ffX-k8n%>bq(4D!)#0M`&Zpp`93qS3R$js`&Udy3>AAl zfkXctIz|PgYyRsWVz^WRd+ld8gojB30lE0x^%>qfbiY(jzO}{ZE~`e-Mwv!esCA1T z*7tkIH0V_~+zCG-55U@+XPh>MC-zgMk%@z21sKZu#j`!)us`7osQ5fY5cSBiWEgyA zb79Jd`<%23{~og0z#S8X$V;CM<6~_1Yzl*L0aYDtA4t0DaSDSV1g)btVr&aFm-mxb zK<^A8(heGTiCAd^n#B{`M{CGIC4)45gB#QPjPI{Og4YTwZhNt|a>(ZosOPHui|XWr z5SvElyS}^bzwY|nQYzd-+Ckzn=-}qm@nIK4Cs|!r008;Ze+LkdnT_{R2=6ARBn7{R zgbw7zFY(LxC?NyLNs4KDt(ny1(K&F3k|}@W0_>*JV1MhkNfS!{%4qPG)YezvR(}-uV7pn+kWoOS$cJ@ zC>Eh^35s~$6`4B!mmS!Y_j=K^;aTlCLUFoS9dhfj0a^8aes7++CFgTIJnzh5)%x$; za(nk4>?|on8umYLJnAlZ3;y57@1%GWhqv$TD>w!iD4Sy(xXXJO;ODV8S?t)g{m(TX z?QzY{kRi)!kH9MrGFaNuDMVaD0+gO8^XBCTvR?kh3NAvF&GXMSE*0_3?lm=?H-xW2 z`T&Yjiz)ngD;>5M8Up2&y{onr3?94>z$ToYyN;`m|rxvL9V*L^>7_!aVFo{M;DuCM)dJvrG`P$%eGhTZS z?*Kb0;Qo~TV!?tOz9CsepG73XYaoKxwmM<#U=C|=xc1UL#=04MRFEl3Yj8Jia)iqD z$8L`Da4$Upp7Qd_rNiEbfK8Z|ImGdHoVSotGmJyl5~B29q64iZueyO zbaLfQzLH-5 zCGBJ|T8&-}Waf0EMn{4%@O>*7ep4wrtr@#pTVy?0>KQ|hz}vMx^>V+&RXUvEHiV_T z$1W8)I^=O?<*L^ey)jN+7WH=*!ESk%=cHO~tlfXjuqxR{v zrLopH+zsxVw8NPNNg96f`Z#h^SDvejy?^ZDy3UWzkts!|i%PR{pDoeR)Y_g3KvzlQ z`CDCU+_SFb>~ML{Inir>Wh1ZJpSz*6QFkL%3hed?m8H9Yg9U2AhU0YY{XyZGoa*y; zVy$i(*>Qe{^4*{WmSA7ncI2 zX?j%uT;Z@1e2pzVPj2!zo~@2pblXQ?*J|G?3JBo5r(o1?Dl%49e!s31$xHu_9E&X% zl0C#fi)+wvulK-AZmcP#SLuND(=Mm)>}g!_n)d;H!&6oJo_`OcHSXb-QP+^0%9haH zbp_rxjSMfNS4DACS+@hwR9ln-TfDd4xZTt0)GvaKrxG@YLx96p2CK%a&)!+xjU|;% zJ4HiddH)(dWy3QVmXkarxI9+YR(SH_v;^`nI2;B*_-BOvd7e||1*T?)BdzwN5O)Q^ zo6D2e2pRicHz-##f0+q?j>+0QHy`G^H}6zkfA6TcySII0URU#LGx##YcO3`$W&GX( zsp#zU#O7K5Js@^rKJZ;5w;-c>Y<6Hv&oXuQ*US8?SOD@ZlGxUBH~O~p=N7vc^&aWV zgz%a@vE|zVww+%1#DuYv`{%9jjST&F99E(OBbr#gecjCEOqPKAvkcg4+FSigWEaA= zynBhMTR#GOoO9SEQMob203M=0Lm^3ruwtWqgdS$H3#4arM@LiUv_^+v5^GbT*#5HHjZREBZvX1`eRKRJnDilF3p21w{?qC?WBtsqibZ(MP9NaDknUSATyNI* z)XTf#!Crk=!i@{5fwie{%u*%=PW|MeKmlJ1u};*s>bxu0tRLy(mX5hfBzdLEE^sMZqmULx~Wr+1e= zD%<1ywx(6i%_+?oGmag{ZOA`*7Q=AbiQ}WI9L^Qtj|(Id40y&5;5UcGvX{esZ?4@l zuNhSd=$)!EHDZYrx(K7nRJ3LNr!*(~WA!QKt25z!j1dN05d6ju_8ClFDF^jb^X5|f8RgM;NAMTL|a)f7zPm8pI5PecGbv3MAn#OeGuD% zCqZ1aEmt~x3yahjUh>@EV_iGWXb1&>0drCmYf-@VcLrrWw@(<0A<%-egPK^B z!W#M+jhii`BwocpGEtOZ>%uB!Z;wyY;-ZOJ0Ak<>zUIi^Z zq|8W}^oM^R-C(Zgt}C<-V@CZO(2$^1o7U*-Y9=d891Vb(JWUNdYLTHJAjtYiCHb`rSV?p3H%3OE?(5lqKaCG(&;SA+ap4i!9ayoh*B`M)>It8#8Uhh z*j0*QKP5=rgv}1+6Y~0U-~s(LGF?NnV&=-jCo(?scjxKh4A@hF8ZAWk_z zVO4G8&R}t+2qZEvoAy%}b+(Ca2?8;4zRu&@&r*5ZX?@JZh*K1L(ij+Xl6uKEFZ0Wr zcmR_bIFLdwdo+cb{P5sJ!wc%`#yQ9hoXK8VjA4@T>CiIykGpaDZjJBtGk+6WP3Eb*KnD_oe6p8?0S z0sN@nP0C7*v$}t7Qp7j-IXR2%*3#S~*Fo#L^(>?lF15I=N zMR0GBCdEvlgV`r=Cx>-uV#CVGpJSYdN!em41=YoNOTkC zv?1jw9!#Wo@h=>$q9@)n*~QHHiZm_!J!QFaDGk~fP=jTQ3*^fJPenM86Rzp(#B4_Q zUj?~)b(QIsAZ`WMV&OOU_i(h|e3Vre`PRWw%%Pa5IW+*reqB=hTW=!+WGI>n6AP0#y#f}ix4-2y^28Oa;VY}J67z~>ty6oJxe8(l5v zJUsIhyHhjgxNM@r1>#B@E1?L*s4t}x4yZj`E;LQ;Athn+M~x$n#0b9TsIo$bjav4V zrzVkU>M?1`IEi&Sx3*@)P*W6YA0LacT|k~csnJ56Cofd}pr|>`SWmJt`?$~{NTun! zUb9;}j2&u^mHX1T0L&VJW?|7R_36_i>^G&Qvi3Qk$y4&aB&Ra1GbPv>Jal_x}Z6_!YLX-578-Mks zl&?o{!Ab7U3>)C2(WaWCo_=LS>AslTNkEruzM&mDa*>K5H`%r`xq(5~#At(G4zWes zMoq4AiXzt?=4*#Q2JbSWSO$*LVPj%kqxT;gnW^x(>qhw&tdk};!W{03q8;7kHBS#h z+5^pckT;G!QfRf0j&F^lY;(n~?q`&IP7b4HWx{2Q-;~PPM7-@AVj&j|~*fN^9SLK|GkW)z6qz{>9C7hnA zrh=RDF{D6*zqmm_H=oI^1Q}GNtW{4&!1}kZTT(Vp-Z*HrIMUtC==+Oz4xgC(z_`%?3KHgDWmo4P`4uw!$QvX zHU^-q@uZ5Uo_uA*-mleInUf)dBBjOcdEZR!xBnkfryM3W*2Aj&P<=)>y$`znqK;{5 zaa@`Y2dPpMKx~*#t#7|8#aE|l)MuzV7^P`=N^=_<4AjQs(of~fP3^Q8D_clWy9&|K zT1go=L+}<9Pg(h$JB^iH^|a{{sxSeACtuu@j}{gF`;zt#<7j=*j|5P*vf1gV3X?oj z`owFacS_GPp%?0RrW07k(|A-UbBHV>VZC5-m5}ldEjZNZSewAk#RfPTJuI}Z>o#1G zCV!Cpgk1AR2^DN!`}anNZym78HBL4`MnFl(kgJdduleumiOu}xS*n91!gLkig2x6% zac;xxX!udKVj3y+F(;_O=vw>4(a8m8GCF7$zqR=Tapkt=S^_G1zh=M9uM z6)=5Lqnti_K(6&j?u>e(;!{kBiI`cDYOinuhLklc<48UKs1i~BhbfNy@s}rY{M<1m z73?wy4FWuc6diMN=iWym(g5!_pR_K71*AU}i`ZWxwec5J$NbbqO-|7<&t|VEYQ2aB zVwx`+0U{u@u1RAD>n8RA>WU##+HPLShJ<2QrL#%4biYHT>LqyU$ z`4-GfiLS`@uVnC{1nV>ZVJg~AP4DTF0a-UD3#*kOm>LT_R7`c!Rs9S1-)^@_dV~UD zPk35O*kwC8$i5I0{-V&6G20jWmLAoz!MX{Bk*_Pgz(s`)s=6q1({+oFIhoV!1aR%9 zIuyOZl^*nJrc7X*=q3}WrCuNZ?8aRYrOE$tVUxQWRspQ3;f9Kvwr0)}$WY0OaI;4r zf>}BEN)?y+KeLJ=U7LcSjM`J-vU2nQ4OIo8E+LFyZQXUP zYdenTCI60JthK1a!^04*5*H2Q$=X25`)jCSB_-N^*5+O1QLu|&unfarfm~3 z8l(y1xa?heTYr}Xd z1n{Tu0V8AhdYw^+%}{*AQzobE<1TI0_lMH8rbdgA^5>(03#mOrliWtv>iy!3+KRW< zHkJebNEz)~=Muta#tx1z2WbPAeyJs`N_q8V#49K}`G=-n(AjtKGAXOc@2+eN2W@(^ z2WPBv5lNNW3rr0H392R>Uo|}*Y%a_->s19`EKA-D2@T{M^bu7V8NU;Kn~vrQD6D(? zZNwMJKY)+FPXb)M>1&5sz$GmU1GbdUEFl=FVZaNnjIPuSUKE<9;k zdya`c1+LC~r@m5-kPd!y^Lw}REz*oT5?mu`&MaW>7?K>CY9VKqXhvS^0P=*g=Lu~O zi^co=O*L0b$n@w556wuc@NrycY3qJ2Sw|4YlCDpc`w=fO*64Z3TYf`7HK!u6*|K3+ z`7_790v@{Lv*ZW-%0&aq%5M%r%$&~(T*9*S6Aq7V0WUlx*i|-*34u~9FRw8H3cNKLkc^mT*c%a8f{8+E|XnT5@zl@Byt<6owKe?t} zcQG)eba_>%23pR1HM)Q3aW%tpNmpm>K`KSR-LW4kM-K}_#@m(i4}9(IakW9?OrLY= z9AW(o|3frs_33zRv}tl8)2+?tK{RWnh0V8G=MUn1!?&U4+yW2!H78@|fvhek1jCgN zZN%?pQ?NOHkA+<5P;q34ww1phenWH3$MMIeIQ_YHt}W3EGZ*vZSxH}{>v-|4Vz*?- z@33+e^N-lu=;uz`O2NBXrfB^(OIijD;6KZoQAP0t)YrYC8u5Wk^hN)*98Z#db;4vd zl=6a(SBNl|1(6y?h=h@>;*VJ12oqHb1AjeUMRzW7k z>wF?M5=ls>{$M@zf_>2+i{DR{a2xBM>;OEN^GkIYabKty3`dWe^soV8$E4Me@ql{AS!kX17&Ig#Nb$xq~!J8W;Dnb&fOyMD(=cbSl(@RRdST)^+I<$<1kYkRMwoX+9`EQIf4 zzS5jN24Ruf6F+>;6hcE3h92ph$wQ4C~p1XHfjcIiK%Jy->pvwfI!i^gI}o7$JJ60Ii(H* z+V1*G>mC#8|49HmE^I%xq_C&Hiam0W#bWj2sm=14eSQ39c8YWQa03g^z}jg|IofCCYS(97?FqJ|iaP43I%ml8R~#00N*C(S?a` z&1^YP?SI7MnAR8S2e|b6*_@`?JS?O36pyx;m^tFKn3y5A7!j-lmlz zBdul-B_lAdUcypjQq<+usG^z{SuZ57Ffr9A1tdeQl2p;k@PElu$s@9I25n1KZWM?~ z9xAD`CRpLIFUlr*&?9?4T0*=^F)_(y`kg^kCWv3isW4cH+6fZL+ZV{mXJ3ZqC)C9G zq3P9&it|>tI;$7}0ffc-;l?p2LDBVdq_7&TtB)SoVNzC>i-zCykWH$V|*i^9r-^5V54LLiG6B zQlnpf z65`nsRAGS&?F*v$)UXjlr?hidZeFx$8tdq$s2Jv7q<($Q|@B#9NOjDVcuPNx7_`%Lej!v=t-VIpld7aQyPyIekloI{?DC z9Dvzdkc=IwUY^M8mgzNMbzoHPYD5BcZ@SQ4NxZB6w8K&# zMm$F@DyC15T0q(z4EOr4O|tA#F}MU4$80v`I$O=1N>_UC4_&h!m2$7Hsian^f*PJx z2!)Z_HPkc$AUpyCz@Qb}8*6vuHYUaI^y_HRTxdy<8(9L6xUY@>8(Cw8spL?(*i~EF zN*NA7ER(jzd2zJCs(3-EE;p_Gh^5Rdv5tvcm4O1ll?j6xTXE`!$f;`!g}G!dbT|zJ zVfTUXad8lnrYo9pCX{i$6C}Esc|uOm0EcVXH+Zy?@<-?Qgug<8I`T0WN%HAI>5=+) zbVc8(;`_)6beE2?q;-)EhPhKG|1}HUdZR#>Ek;syFW56{tD;lDQ>UsilWh=iV-g5t z39M74oitK*xJqk+aS(Wyva}iNZylXCf;FuS5-DA zZe!**XzG}}=AMfg*Z?8)@Cc`3@kZ3D_@*zv3PVN8xISMOCUTQuQePh-@aR)1_3>Al z|Bj@N6*pD$U}VUZ*a3n>A|8d9STNxy%ffLOt;XZ=n8UQ}`}?`!okCqKzi~0Ml_iy& zLG%_Rv0MtJrR!#>#K8?KkrkK<7_fT!n6*b{m{#E!cm$G?Ws3+U<U3ojpLSDw1*mKM?HA5B&^QgoEUAKj8Zi|;?35(uvoiDJG?IZpbWUXzmzj)uER zmwsO0ze)7W^Ln)<%;Lp|d@b(pdGCE8eaVwS{5MS%>Z8YFX8E+JaNl!Svj`z($O_{t znG%A3-|itYw!=jz=BTDrEz+xZ4Q}n`G|6JIQX@~nSDULSZg*{Ncuywf``5lS&s)_J z+qZ-DesO>BKDQK)wZs4ElXz2E45Xab$akwoFiWuclrGpKOXLydJ>=c5Y9o4@{$M}W zrqU~*;_pk>J$G%pdWu3BH@_R-!;Oye>w^;}hP&P`=?b@@ba;{HnT(}1J$>G7grG;* z%gY|&`^|3eP>cgN+#oBpPv^Ui9sARQmv%;M#RC|bN_R)QGd=IOrq+To2>Su}m>+_J z^7{Z97meZUw_uFIq_b~I5&xSDKuvv8AxL=AmG?H;&&<0pEKN+#=DPBp)syvla-V=D zUhP0xh@&+l;4wv*(7hiQSDj3QkgsitE?WP0B+yy05vnoxMm44+TE&>V?cP7n@p6Ou z)>~Gi-ZAjv{oy7mM1dc~xGPm;n#zPa?cekAI3BmOBoj_dk)3(hbH~g1exFMYWn%Uz zN2`!RU*^*P@E7m;%%9G&2N6w%vj}vSmy1AAY40=un`i>$*iFj)Y2VCNz;JQfDVW9n zQ>wPPr^RI8+dz+6*Tu@+7MTF@NIbmpSEg-s!DBB?|;M0 zOXPL9nz_m{uZB>~v?5T^ZW@vT3t{+AT~o4QZCxCIK|%FY4WvAw-qBm}2@TVx z{U6ya(Bfof%I{@cfpu|U;QN$V0pN7$l#x}RF958<`V-Clv} zpb}v+qbIZI^Ut2yy`$Jf_ho*12H!|S8m_7O4j|BAq&&XJ8!%r;vqGzQ`e^)k1zj7s z{&yJl3xgO7yhMn@$X%*C^w>R#*@r5vE2}TF={=W=zIJ;ShTGmJHhP$^IruxPJ^j2& zq&sAIZ#W zB=M{7@end5dxDT$^~K%Kn_r$neoL$9b~$eQ9DA;+EW7iI!_CaUNngH~il4aYHYON* z_U-1q98snl*o8-s=S6%2F4pRFu<8oc=P6C;GoRLT3WM^V7gS!4J_goLyOkSp@qY}{ zCrzVOM9{T8&4d^U;6-k`;WzINiu8FpT<~3V@$d%iap#*IPhNKK{o&{F3#6#+N$UT> zBMuL44i=tUWrEAqaCC7DRg`6D`e{YqkKt>&DmX>phJ^N9*?25iJKR{x`;b|K)a;jY z)T*KLo~IKwyhh5E2!9y_8<4=kugBY`Dp6j0l9~wf7grZ~8r_e=Z@&M%v-hyVxbddL zah@pgx*uXx5jk0EC#vSD|FE~2JNmEB;>b)L$QXU@RVRGf05?5Nsb`qxkCr98UNzP7 zzeZ<=uSu<@k3{c8pleuS;ZMaJB;IdyA6jlczrbo(UUw9`Uf-?cMtrHPbZe(rp=HVN zI>Ej4wYq2F7Jv#9!oI2d+SPV)(>A2>a^(j85H8I;1q{9aR=LbfY_^+9q*!KiYV&B` zyBYW|F1{gxW~^vqSln#hvM>FBUwE=!qXOA-aI2An9;6q|E%h|>LLro$Zu-{GxH0+{ zV~(xK2Od!?8ayK3h+MS^eoP7$(IX%H43Wt{bhqoenWy{{Fz16f`>@ z;mK$otyXfcrz7;Wza_`A8#R8g-LEEvIJVA_wn{Y~8ayMKM!G^GGtY?Tnq(p?%|E1> z&R1L{!p$^%--g9`9@6PT(^&1XLMzhO>Gdfi4{K8=jC$QGe-jii0EmaL=lA3sXkA>C z9JX2`*aZyv*KvMi0}1q?~1a=bRzS?xApgfCm+W1#>K-E@Z? zn{Q%URnx~w4k8MJ3U612#pgZRfBbYD*7Xx>HU5$Qa2vv_9E!HeYrQ?db?mbCF$>+B z>cxZts4^`QOtik|&mP|_Zkt|uA8y1E%Kk!7YZRb@!hn(EIeOa?`zEux9ehehQ_o#M!6_JNBOQphH?>Voe9~n+B8#i~x40e7p9y`o% zw-+AY(ZvutJ(0pxndW!feZTg6@IQR>%Xj17P6?{Ni#V7}Hm2<% zF94e_`N&O;H<$b-U-T(=_Rg5u&PT^#hdDm}0HiPTc?AL<1V*6d0%YczL)Kl&Kzb=gHqG;p=PkP_$mW$%1poxG1W2*?$6c{=x%Y-zcpUQfurgf!Eh=C` z2`MvkU*o?aY`#I&X9SY9;*e)py^hom=sYjGi~X252(NlHv42NQ5{eqT1-;lh*rh~A zb3g$gLGB=WGAMF3o<*f#>)eIAPRk2pihKt`{w}Z(9Nz5rknef-+65gA2A1eyX z0mwB{Ui(G2}B4-IZR>i;2NkQ#&lo=izc z)VU7Uds481P>em2v1aS-kf=gMZZYveMS>Bs`z{pF15X9r0qw5(L-)Sc07!6=R69A7@&9FTBuaMy4%KKNuAmUXO7y*wX zLmxTHEcTy=>$)yb;F-kXCfuH@$=kL*7XhATafD8yp!7#niI)thaz%{uRWk37upMP`K*AT_}98W|AVSBy*gXdJi%Lx$^E2@kv*D^F*_E-A5~ zg`fXx5Z}rIRJi4}95E)`gH4Xqz6LHuywpZARpY7(g2k z0<1jJ)A380w$@y68pT98w^6&`0Dz9I699tWSW&Q`2~^Y`9~3OyU# zQf)HK>a^h2lw+xo0)A1fJbjf!Pb0J(4gkU9*8A8SveNX50F*<5;i66g5j?cR(?V?0 zkYqJvVNuW#gXL(7rh_yeT(TOvCM2Ux)JGNM)lPN1)5VhjrqN(BGC$)Cl5D zb#SD9%g@0k0EX}M3f?vNB#THlwdC() zx$=|V>Ktw&$pkBWgMgioH`w8rg-HjKLpl3>&a+ zmGi}PU?*Xlq#9#pCu&TUrweLgRrSRY!Z%~jrA8P=h+ascC!8+?&o%+nKj~$|C?%3WnNipR-?5BIl9I@DKBMgxMVoY__i(i& zKT639L)v(@*dpOrikBG|(_$uJ%*hXPT_x$^LoH}Gt{nZLM_+(|2p;qAYSM(uF50su zgEW?+QY@JL*-G>@R$??U47$CX@9$Jdzh=M|$l;&P;0E=Ml#m+3JqQU<&pf6?xW@}Q zt=du4i*wY7EkC0UXAAk^7$gFmd5XUma_e#B$kDO>?cf8I9aaHwKSglpCSG@PvI8U< zGf+I*r|rZU$dtht-;wZOs|z;3`{qB40h`bfs@38|64~Ix5cXbvKKOGqO$IL?Gz2k- zToYUl+90Aw`yl_7KLAjkzZ~oXowS#FUmO|+k>?_gPE=fFFsiGMZv@#9J(!?sR(>zR zpzYZ(Y1(5Cq_2LB-Uy+S#i#ojuS(L)iwUp;zr?)z3T-DP&0jAlWkQuU|2>E4F<9oQrp% zSwlH@jx!aTpv)82HOAf|R|?l^k|~oZ_lgd%Qv9Un%9^$Udp~Msr6O!YXtuuXL`E}y za6)t5b&UdL<(WSN<_hD3gUZKNMbeX~Mw?Kms{@FE(SFS$dqL&4AXzfI33P#>i$HXL z_fn|-21OH;&&wITZ*^!Y1-yjYXRfkH2+T&q2pd(#aLv<51wo3D4gpkA>_J04|K8FKoF5BLOzy%}hu~A{*K?ZAJ$BP7xD1Vk zC&oD_=qE=*6xBBae>Y2b_H=dmXB`lslLq-e7kq({pTQHy=Yv-lZ-}}@cG{uxZR2IE z)NV1?b62LsDiW+0w3pfx6l1j2Zi%z=$O3?3FDksWM@pYJBekk+2o_`oV!@x*+Zw&i z3@tX{yQf$DGbRt614u}`vD4DXt}uzeB7T9lMoMKM5k_m-U=n>Qs93z(9ohQJloCCP zr-p?g#$d&BJ<5(p1g?FNVn*8T6%+DC3J)i{>eI`|u7V}c*B;53bNc%S|5BAex22tW zhx#Kiq`LV0)3oEkR!&+MFd#y!7H1#0S?sra)+RXkuO4V5fmp*MWJs8aY)FgZ*;}(5iYf!^p2d03 zb}Mn)AD9j#NZvnFWPxa62xUvxqnLj@3Z9?dwaig+{n1pE26_QrBzUNy;HK|CRm*qA zH1_6EbpJs-Vyg%j`H{pENBBQ~HG>HTR8yva ze@&n7yg)Ir^p{?q#wWO+qI!9uGqH&A#Dsq5f;|NxlxbcavA4bnxL-b34)>cT3{0Y6 z`@Yza0fxnic5je~gds^VK7!p=1kyaQb~NX@;$@MzlDDJ7FK@m9-M;(#6zM~4uwHv3 zb&V+936WI%l%=UiB!WQCPHn#(Q}uBz{?Ev=^odwR!RpgiTZu(%0!Z(-td(B@&qe|< z#>gpE@tt}D$8%0ERKk>{^W*Jm%rl1Sg$1(}R>X&6$a!zF`{Abq0|Pb7q41>P8M+7( zRG|nT43BFC(9*6iy;Y3!bzVW`3c-eiYCrVCtKwj`PeUgms}I(Klo8qgi$~3 zVn`u?LcgSnwICzMcs(E(C->;h3o4xnx8t0DI+!$1UvMd~(Qb;f8M0TliUeiLnH>&( zB$mCeRYiNv6UxjCO^r6@nL z+^$YNF5B)c^ET@7kzu!pXof$+Goc$gJ!EL;BVQ8~xAwY5n5mvobRr}KQt?$N?B)jJ z1D=@;SUOA1_7u%r7;kJah9h>ixc-Qj@k;CW>E4g5gSaxz$%NUWq4IBbZU|jyWeu%q(bjXFIj8r5?%F-p$AShXHe_bnX5frT z=-N!RJZz9qTmv{?(xf773Pu2F3Qf%625b+YuY38MeT(fe2JK{|j zDVZr7)%3j>L)n6f4_r+vRI?!<3<}U&61R8R6GmIwhZjr12Dd`Y$BkN4RQJrmAq11% zcc8SlEpv5+>4X*|l@F5=Zt|pk3yS{SkKM(KU?>73PP@S3=RN@frqgRk9X-? z(&c&SF6wyUzqDC@e3#H(+aW_k75To|s+Hl+z1#WFK3A6 znI;Ch7VUf6EADp7v4(@iP6a}^;`s~1YafOu5&%6tf5pQirIgt?7TOdCX2K0mTbTrqI1>M|MUB9d z8d}Qdv(1*vew*)RcbHnf9@~6BPrqzy;9vuDdBMSt?y8iRTgS%J(V~{p)Jzq&z_*;! zb_uhgD8?o(ZK&e1ipix)OJRJoMhpOdFcOP0;9Td7MLDpC%SxvNZ93i@rOptoYBUg) zyfU+k!~Uefz@S%JbO5tJ)CWz?kE|2Y5+3x7BsWoz$oY+n|woH{vh} zzfNF+02fC(9iFe3k8wR2#E(B`Ba)jebybt5snK;?u@;nLRwgpJGgfaRhM0|i$N4Ky zkw%}UOP)49p+<+eDN`N3|2ew{WbAkA zzjCE>^T`+zAE0dw-FZimpdY=GOO2E0-toAw5`~QZ}K`96?!QRt^$7!sfVcBbPnH`4d?zE`lG%AgtZyS3H6<5c{gQ z4laGF(;G!-=w*@K&SdixxTI*os-vgMQMNf8mULj*+2#Zf0x_`+;efV`-0Q%J35I{QsW+vK2iC_V6YGR z51V+jR4WS;@-h=0b!`tK{ftAA!SDjT-Fh%{mYj;GrCWU5g~QFbZH}aLJ0OGR?wtJ9 zf7D|8Po3T0yCg;(c0pvwM-}zHGopBs38IdhsI%b@&U&`~iuPl%WYw~lq);#!#Aj+4 zzZ_-3qie!H$*~}>hFkYLt1^AZH4;xELr^XM>O&9)b$3Ps{W@wUSafmr-PGX5 z!cw3;QUHxdLh&eM0G}4-hjz{rpBIX4)l}CWeSG?-1wQ%H&kp3855QBhbV}AP6nYHl zGHrH$)Gpzi!>r%E9wz!nr_>|LCe^W2VwG_>1U0|6&OLotY64hVu035%^ICi_R9-4< zNVmn4<*E7#t&HFPsq}RF>ik)XQ7qvUmy0= zg$8+R;MyiihM6V!*5$Wog$9!znkX!$M+>QRB{G^Dy`qF(Ukp1BJ#YW(%x?^n z?ApFjGFnnh^x`;75epiHPe~Rkdpz%s|KC^o=+-b7SYsBgfrOzyxj4W0W%3$5Qgeet zjK>oK$K4{_I4$)l!&5(15kp=@$97UBFC&o1DV}P&@;Q(ovkS=XKPNq5eW;MWHYg@9@g4XbX`t;Zti%Db0}H8 zfz!z#WqsAE_oAM8CX*N?n1Sz{nQAk9u9}S8wa8ZNN$GUHHolrg_bSE>4NgZeNeG~x z3#?7WZ&~+iW`hzRFFn-UeQb4y85C}9;hHw)L=|7mAfRSbLP7sJCoS|EdvYR_!{fhU!aEMM^i&$) zs!H-+%_Q`?7TEH#9`f@!5k5}zByn<5?G~sH7B*@@`~pkif&rnRrSI2H&tf-u-PBXYAQ}n3 zJji6b2BYTz&zk*5u3nqkKqL16V^~bZtMpEuDwm*$CLzA=uSsQl83O3=pf{1T<+z^b zCToH1c86qEIRS z)B&f2O4~ayLe2b8y1JYk4B~sI)tI)XfqsY26_v7dQrO!;=zZ=>$QlT4s5LRr&ttzn z-SkT(O;Ms8uXXyHzwvnP8PWDEjM>-OtMIxOTWN6_$@g>SKh_x7y4Y>#1-2eD64AbxDuCJokKjmm7b@zNU1ZF}>1fnWBG$849P4hz(Wx;)9VsChxIPj450lp%(y zwLKp*JSedZ_Vm2y{{j0z1iu^O+=IEUJx*@I%l6pWQ7Mve_Ro{0=|t~`iXkdQ>v2ba z)$QJIWi~ioE>qY*^~~C--{Ykpw5vlz^Hef}_ZnLL59O+y-n)rrQL1a2mN2QP-?8n0m8 zHG9SXE#XSHdd!~p#fw)Vnn1I^FVb~zfh0i`Ljjb6C6EdO{qO_#*hwej z$z40^=^;E}&|(N3LO=*~b&*_7``MEPtt7zA001BWNklM8Z_&dgJT;n zy^>RkeD+h7&SWygF{Fe77>8|PVw`;ATSdXiJ$L)rObmc?Bnb#WC>VoM7#+c5E7_wb z%z=J(=iwG1ok^ftC#x+b`ujkM`S*`!3B{McR5eXV*%_TwPzs#Gaj;jz>b)aopkYoIwcm^+HPfg_k_TP>+7T zrfHo}(KQGODZvGDISllX@BgR^z{3wV9ha*c6Alo7F;If>F+A~9zR}b-Z;G=S|HceZ zdh_`X4WiX@-+bH2W#z9wT2H}9`d6LHapd#p?bd$$_r>%jm$cXH9n;LLZh9a(7fQGL z%w75|>3%cQIn$0+9jSML!*2S2s+6K1*M>3o!U_p@}va?Y7I)hbc>r+7eJJZ zHJWfPSX380q-IgvG#-QyUVI-&?lAzh~cLlIqxn8-*cNs@4$v_U8_ z`c+)N#h0}RK#52v3FnN*O(kN@9=Nqh4K=$7(Upue#6(dRHw5>o=Dx=ZQGhWO1SBn+ zNU2}Fjvz?6I}rkYfH+1Fz|g@N($%fiLfcoitU9JmIEPY%F$4jUxWj`Oho*sXG+PKGSQdmNI#ubz zN)q@!goLg^O0?RjHta2iYO_Gra{vnC87vzADnlHXS0b$Ln+)OH;OoblHAuwOjH<0k>mlD6V5x~l=9pZu(p~|>){jxh+~8y+HKt6xnY#n zi+~U!CDAmc0LGN>cU~4vgB0)s0I)2=IqBd&yPs$lAR|cWP9b7ce4OM ziBPABl!PUb60zg^&?<>m=Qx#xZJjb!7^Z6YAUF ztYx#PRP~o$ZT#)CD@m}@u3gv6x)dx4mRN98f?F!-%_e*w=|+YS2o68M%8Htu$8Y^c zI5Hfz+vLc*SScZ&hEoJ6Bn*wFT3Etrd3|(M-S=7BSEfNY@BF6KQrBmo6#o3r8ofQr z53~~}wg33NRTi%LjakMbDHV?@u|G%FJ7ty1TD<|k4bKH32%}DhZf#9nzKXl=;$Qw! zRVs4yI2ISt-K`9rBn*^x)}YmrS}jq=NIKzuJMjZJ4wOPjk#1KTO|@FW%BpsA10Vt= z8H-!(`l3|eNh5Aum+^ZVuZg5CdBBrqtG-BxE<}<9OG$g?AGlN@tQ^&>qS9g|nMfLO zd(K~d6Kp>1%cfKaC3xdlnAu1`xS5k8;ZZ55oRx>u{7l#CFaM-{*PHbgn?%cfKa#YO96)Z9ok zD`kQ#DhHL5vUMzN_K+3nT(WDxo&6E zQLWJtBw0VNJdAL=K&DAc2u@*IsPYq>NT2{;DJ&q36`SD5t4RMBxa+TT)b@c_Qslq zBvG0UmY~tVwHXW#Vb3mfbwShA?w#c4FQ}_ikV<7Uotmcd8m>;^)EQTS0OabFH9Hp+ z3yKisxd76t3(POzzPm9oj!XtZs;yhd)6b@?Q(0Cghq|RRxxup8e`h**E^SCml zcXe?>R1||!Br&QrT)U3#+puFB@_7)VcI+TeJ)^E)hZM?nJ2g$KC0xFOv**(ZCzmeU zyLU#}EEJSuceYe3t0=GG{tsfqC{lL0X(M_0Rb?1R5|v{9RtpOYICGZF&6|KGgt&Cc z9vulS3!JO8l&smp+#Ir5+;=zW>r=K3A=vI+*Ede+|Msu4gc`b8lroN+)BKijx_m`l zzfSWxsh~U$1ZiywW@d5wL2TZLY!*tX?c2x`Pbu3{}{L%lN37fWHZKYJ=FT|B2BvsE5vrP30SR$scSfSsx#qN zrmVU7u#i`jD9?kY5g}CiA{;wm%r9slMw(sX&GU&jrlp)+CP}d5uf7R31AtIZsR&BQ z_L-=;g=&rzF_h#pw4U`C4}L3&h?WRbJ)6k|dTAF^|@w#wAvHg%IkE|E|$>FZFg-YG&A|X0rk3 z9UQj2jJbInI)I6B(%l8m>nP3~C+X{M{OmaolCh{9)lSRCYg+bje#;*exBOmi^z$&s znx_P8r6iAQaqC*V_6FFj zJ@_Si;G3EQ@kzFy>Va9wyFy1U3LuXPd!%_d4E zT${mLZ+Bf^yIm{X32S4erpvgV$t39xzgENI5=tc;I)DwMq^sDGfay9iUXXFZmtMD} zjCr&gS5G21VHEFohCiq04k&$S{(6*k*9=|737Rdetzmiwxg7TGAp-*_6yUjV9Q5~* z<0nwBb$HO)8fNEk{G@&S!agm34{^7LiPx;Oa#>%YbI@K{#kFhLy9b*#lHOkAvTz+_ zGRS!3mDf9`l|}=rtGGIa*WVgk4GwGh!^#|AT7pTduFDxiT17dxfVPj@4`O7Pq?$X^ zfNmg{YZ{8becX^DOv2@)dKA$`v+tA6;HR|genGpJXWQ9KP16uZXf#kRV`>^B!`QWh z^!Fp5hv&j|(br2}e+yBZZoN?|mT)Q-$t$mdi%vMLmT>Jl-h8`fu6kH2+yQH{yrzNIJueXg?Euvp z78bF#hT9Kfbc7Vw!^zN*$@m#FdgU!kiHL=(aqR?xQ%2WA&hTgT+-*`DT(}-&GgVzz zag0V2+p;*M;J!D{DeZoBq^pm5Ugb%ms3p0d_zPj>xTw9XxqI?k{-C(! z>$$NSn zPr2RuZEx6dJ=+_QB57ay(`aEPHU^dAU`rs5H~FJM3U zm=Hs;5>#OJe?B+zFwrcLGfX#6Umx z?#AO!s-Zz*m?*DlXU-O8YWL+v@28rr6py{3Bj?R(^~9Df?R-|miE1?P!2KkbBOU%i zKnXMrmW7?$u5ZZm*~J`W8?r^cLz&S}nC_6|zTpf674z?(5wmmCqa(3lsAf~;a%9gg zxE>50lz>v01`2uHahQDPyRtY(JP)-xy>!_*bM1C-_(9X@Q%bUMe7fvD_W0YocUF6Q zm=vm9!Jz}BtJtAkgn|;-HpVt!;{;xQRSgdjLa?%;pFGpI8ofU^`hH4vDWb^fd;Tqb zwRCRd#=vuB5U41^M;;`Z3^9!k4n=PzV0E!~~p z@F3MaD4BSpr?1)d`n%h=HM@$OF;%JJ{r8eWp)=vBcclSk6ta{~DH8?2T8_*VcbNA8inWLjzgz@{IjMY z21FGqHv2xC9eRLhmSnzebuEa@kwL37{G*3%hq- z>$k+pY6h|e*`nDyv!fq3oc=VN{5A8ZPl*F_Gb6*XuB&=Obrs3}eI2|=DX0dMpjgD6 zhsn3UD+>jZ&7j$$7cRP|rw?aF9y081r4$P{UM}T>C*L@9pfWVX3>{HKrmvfCzPpX* z9_$*v-_1`tZr;gnS``sndpw-KO!OWle25Y;$1`J}bGr{%nGx5^xVaHUNb}O4M2p{! zjUlB3*b)eJ$G@H#xW~$jI+>zY95lT@Sz^t2?a5!d1XQu*8;z&!z7Lr0kZxpj!{!1C zmeakry|`0_=TtJg-gjremEEXYMQZ0ol2ekgXzkk4^6cC-N);jMzI&p4KDq&DunyoD zOY0t+;PHB!>D{{3rRk1lSWFN_U9b0ce{qwFr&Kbt-Uo2M>5Wp|)eT1}DwJ+z#?0>f zlk#I=i=Eu4-e(nd>Q+HFv&zmBK*aUx%JM6(`-DK#DtUPrHTL_e1F?@SW3#`q_YqwNvHOA zVncm)wv(SS^1F1aXxQD96sTrO-fjlVM^CIBJHd2K8ixAKUvH%9hlD{-AQjRAg03R^ z`snw6SfCVfOqAAV^&fDHJ54JOg2>1U7Obw8)?Q_VD2=M^+md`PxJkrFC)o^O!v@sr z&TFsRLK4mi++CUBLr#8^uA7`igy=l3ox8kt;Zjx8lv4P_#~QXRr3B+h(@ANnm2>EZ znjEiOyp(=?EF-^7H}j^`L!1Jox?s&#u>AHrbwWIi%3@LM+tW%XJYmq*bskcpzn?g^ z_QN0N03-=f#)La~(8+JpO-Ct7byu+V?8@rG;%pjDhYy7*qUsP&0!lhuV&f#9dM5Mo zs|Mpl2tu;^vcm_Q{6$)igqnag>#+8}U^tIJ=!asa}%W-&$m{U-bh7)HXL`{rUS5}(qrjt8$ zvtT+s1VyTug0))V@{yxea+GVDbR6}Yzt+&TPJ|~ZK30$tJ>BT(p+Ee)0@c!R8ng!v zx`pkAl>?!P-3?%VrM~dQ3BypfrTl>bKUz)cfhcU0+w#~XNMoER-S=usr62J zdVarQ_iDPM8x|KDXeQHpxIKSB`bTfPztp?U%xuu~jILWsQYIDE?A(S=m;Wc0s`vcV z?ggM!Y-l`=W0tg(WSTw1Z|OHptzJTPB@@fd2`ZzuMRgmR2cAM4k|ZjQ5y#38hyqNb z18ABpG#V<3)O$TY1!QPYmav#7Ed{ALV?3U^mG^;AC1ag3B^8SrQbg41es8^fKh-QH znW5{H8cARg%_6#&Y5+N>oOkq=VM@eUr!2VDM#A7ah!eU#x<1X!5kefd$XT3(Hq{(x z8ORQzilS8XyG~5Z&Izm4LZi`HywZ{iqPt2mN|kMAc+w)&qPi!DOH_jksv9y0!B|I1 zCS^x*=m!V_mGQtiNhuXEdJU(SQr&V3gisbYHQj-p0fSP63z8%%JyHchXIv?OYx|G_ zmU(k@nmwQyIZZR&OivUxlfcn*k5LbzDg*%#Mv5^+k@9__6ifr@F*6;V;J28pYPOP0 z(}-zglE|XeBD$+!Ld9HArDPCwMrW8EG@Kr3qex{kND{LCeEST$n^4X1x}*>+tWw>9 zmVxMmQyi-#LA(y&80$>9@27|gQJjuWY3`6_WHjA!y<*_gSaUSpWz-`w5Q0#u!Vrvg znBWZn7X)aw&}?NA$dWJ#EUG)88OYUi!lMYCa0*CjJCSMtn=Le&U`*X?Nvpd`aY|s> z8J;vLwW#h2;tw`62=L5n(6A%tu7F1xp_i#DVX8(>F$UK zPcTN(TsyS9Zue2m(llb|h>}q7kZLxxUffz9pyvPu6&sXu5potlDcv1S{G;#T^;B0f z(KSK9k~k4Oq( zw@kQGWME9nriA6TA3I{D6gscdCbhLk4^+4X$aO%qN-q45|(*f z5%JnbA8g-!XKSEewAuhb9qZ}pGEanJ#D-i#_bs%t-g1;Xb9#D*7ln# zRI{am`egzK)9F$-3L$_W{qyTwdK3jb_a+eN7<%p8wv zQFHqCO=o}SH!f`1Eb@718g}o($RwWBgPzkWFdDA7J0HFr?mks?+~@VFY*&a?VE=u{w6KqxjJ)y`^0R*Fc9 zC~8i3>lc3SpPf2*AV`CNF>KvTo_|qk8hT@uzK6b#`m(FwYTTNjn$6>? zNE%V=+FjdEfAOr(W;rJ@vo`%Ok_Y^PrU4wUa#cjGCDN=gM=TRQd+u>J(0$zQx-+nTuQ3b-Pzd zE_e_%r$@7A|Iwpo_wQrdF+PQn@VBRBNMwnOVGZ)QTd~8J%n= zjf;uXuatn2aeKy$FMREPJ$=tz&A|cUx)1_8wv%U`Q>F>Vl;d=kytN80Uc#BPw@i3A z6}M(Jv#3POlSb5>-aT^W%U`&-YlrOVNp&GOei9ch0#L;w3_UGhz|s;_qRTeBojmuwp_QJn!XMpRO*Zy$EejYHI295wNfGm zNbse&amBEDq)e2Eqt>+^{oFtP`l&+)!}JryIks*kFTSKS4ZVpaPCk<_E+^nJTef8n!JTQ;M+3%ZVdd-2AbxOf>#seB%kf^jq(n48DD z$Bc62MmX`LaUtfpG>O&5wQBa0f(OX)OHQ zpZ!LA!4$ps=ys2ianzhj$}bXQFgyNbujc?EB&eQgT>Xn^^%*4-!yV*tEl z#jUHX`~tNnv*W+!_1s24{Iz5CtA8G@Jgby2y%8vt1dCDW6^N!c_SMY5eVUO?TGwmS z-)5Cx_#jqpqu@c@n*QxCzO#K>ySs}N3a~9m1=~g(ljojSn7bO6JV^DWA31#N_Jhm)eWX}~=YbM<9v*&( z{P4%B?W4O3nuZ|2;u79|$Gft4$R4@f&TkgcT6_NQc=gqQ>ZZ3rBn=f@{rJa^Zrzgf z^^#(-Q|x2gBnZ?yN3n6TBj2spadjH6zA?g_!Emj00);#XLEFdtJYIXFYq@>M z8N1!ij4^+{J^$Tg?G-|(?)34vl2sQ!`r%`flcJ}G6bos!D(<|4wA<>$Nlc8xaUcXL zRb0G8UVnR%77x2U2X)=`%SV#(<3TAWMNFuX_=|UKJ8}1&Ged)F)uL*xfP zR=$tEUg$ca2usU22eJ6w001BWNkl2ECk6A9 z_Vg!y_2~9(K~E1U7U6Uz98pMKdPPl6BI7}bju`v(HwW6}kT-dU>Ga3VE5X8dlFI8! z#?;90Xl<-`<-re~-7t!tZshYY4dk-;!28J0o>ZsKU~~kjolAKQXV1~MPk$i4^)65ltNnc)3{5CJ5089={P4%B)kd)Z0Bs+Oi+JZ~ zc6#NYGkS-U+sLDGd+u*}{jC5nyb%CADznBp!scoAPP_Y%Q`n(I(42dmH{SAz&hy)e zW{RYqG_S%xuIKK_jeW+>Z&4y@F1_f_ej`|UNl9i{-BQGHYdR^vNR0m6#BX@LhX~Pv z>e>30e;=(r3j&*M(TuE;EGWH^RG$4MHGqAe>Dv5TrZ-|(S<9TXyuK9?h6{h~2N#L8 z0WwnYbW!qkUL;;OU|2kg!UTls6_}EA1`}-2xCaJkCB_IYo5Bv9# zGw0OvFRI>d!a0_f^;733S^mShp4;5~r0W%({N##=rlKbzN@9t8rODqd%0W_tZwfLKVEiYd|p+KStbMxleE4z&T4`;geIk{2GvQ2Mj zHED?EtAT$GTER72JGNZSWMEp*HBbsogKeR|9|v#44}PS&x`<_>-XK?|ysJxxb0ZID z`VPC5(LoLrEsmHNKK?qzIJ9d!MXVuT2SG~PNN-VGF z=PnF3$Onq!54**!j++a+cb1fjSH2%DUWeWf8SVSvbXO6M4b$k1ju7PYxa$t`&A*lx zFQpnlT%WPdUq9@Pe8?&8cC$lCCFAJ{L4kfqH{Il}(fLnRTb&l+!sjMn|!I zE1r5*_4g5tVy#LqU&+tb?ka3}B-69s&Ghi3O?0m{^=I+Q4`O2kO5AtvLVrK=(h1i= zHBb#154Y_nr_ZQgyr8$w8*RsP3Y$wjmYG8$RF`cRJZYN_J~zVeQNx^YYJl zeHg^txp8&F=$h-2be3p3;SRQJ#@X}u#q+AKk4TA9Sv!BRx5Do$j6dQPcRHCu?C&Zo zgbUx|Yb9tsO7VU7%y)Gu*CnP2UF+c5Y!-Li-U+9Co`fOh=FPKL_nHF_xZQi5?1*Vu zhBsI`QxT1qgZ5cy`JB_(zI7@MCv82P92-M}IItf-`ibi4Cc1`Nom{?}xmLb2Kl*UC z?{+uar$ib~|5{X^70m$<9lT6bNOSjQhabxJ-DPJ63_~-$4W%;;*?K(+&V%NZs1sSI z?w;(1PrKc>*_k27^_<+;vSi`>H-p(L#2kT)R5A;i$xi%krvKhl1DNaCs#(RgQ@;Kih%Kx2Ql{ff7&G4vZP|aXM5j~q3xGz|K0=%Sxv*~Zl;@x(3qi*I6 z(^HB{Saxnx)7c^Y6Ns+?7#VIG29)d|47FYzuIt#m2~R)ktyOd(28w9nuU>Hyx=o5XbG>*Uld1%{Nro@!O;JHaovXGjqD( z5n>9#4QIgYx;tL^A(90EBg63xXfsNVdZqg6H3#} zqTPE(yYU+M8u;4KsK{hxYK++-Vj8%BlIZUvrlmdpq(>-{gera5?%!=?CoQLk>IErc zJGY7E4vPBANM-;G^abfoigU1aA|^N}!Ny5E`Ly%eo2E>8pSL|bwA1tkO{ZH?o0`n+ zIS`eeg{VNZbRE6Dp_Z!TI9Sq=c1wwD1|!4dufLO{1PP-O8MAkbZgm@0j_RIJFzjBd z=iYGsBG@v3k-@}ufK+mr5-|$K0fmuaB#HUc#~lJBj4E@JJFwfzjG0akv>efOr?{hK zZ&l&BG@SbTTBgx?c4@tS8cv3RjT`awbD2g%47*DaL$`aK-aDJM zmm#VU)qw$7EC@zQO6=WoO4ty9+d{RA}Wk(#$^5eDj8I4_eX8 z@31msx|OB6DO|wTu`)0Ac zX7_Ek4E3TTK)Gz*dwB!(tp*5)jr znnlea88vTS&gumSWMXQ9i;yL4rMT{n^5!iXKzo2tLrJD+9qqPC>0v5~(&G*@YBW<}Hc45J zq8_1!k_iRVH5o;bCzj z_?KFYrxsm}mLddF5++g}lmXF{j5W$NDxxS9BBA92m9zpilP9F4|01?IO*xMnCB8=8a)ldvY@I{D8`bZHh!3D%}6(3BqpEf%hU zYBzFH=^rU5$(j%?T}u+idEyhIQ)g1NZdop@9uTTzV(3CC#*#=$VPwX_e~_?72_+en z;Bnh$K4%e&D@m{{S>wHeySiX47T4O1L<-KLS`sWvc2i)yTGD)<2bqrCTuCqv-^bFD zT3NyG{!TP96vYWWdyfCjkE<*yMXd!8O~Dkbo%oCYS)sjTP00fuH`;)V6C9FOo-0nW)dv(=;m+AYg)UFFzn=UQfI{!V@+Sf!w<5r{$mc1>1)Ohf7)0M zSL4<~lW0|k zKlxny#I;fquD0uQnvoMcX2G(!rK@YLM%!(KQD+q(q+^@4vZChZ@ue@sqoWDum16|9?2$1!O%s2|8EQh`Adc9V);zYaq2Xa85bSVXO+z4}J* z#A|CTTn!p?ED41WELh>u+KpRUTchn3f)H*9LJ$U>MR~2Fu1?|ZJNcKt)Y5e_JFEZX ziRM(LoCGWFdX8u=XJHa7Nq#d1s#VSRMHne7Btmwa0NQOVEUI!DU;An_Fc5_yJ#|L@ ze?P6VupG7*Qk5@{sw`Z+G2yEv+HNBV5JfPIj*UT*pjKB?)9CF{|L?zRWilw0^k2N# ze&uv230B+n8Qp3K&XQn>$2Uh;sc5MKR2TwS52paDWp#Z9AOC3b^{+Aoa^z5+{1dlamnCiCR35)AVun<&EC*|j%q8qoQcpc`Dre~xSJZU7sa@4pOm0yQQ zXHC^=bYeWoW;;f!VboDMT)B!(8*%qt*s@toj;n23`GLKa*(qyoRp+c7x97t8r4Ju` z^EbbA>F^=Bd6SwLSKGFc*;&-62*AQj>Strp5_NQJ@gyN~SHrY6SKmd)beZ50t{ zXD(*|P4Iw)t6}{@TzP}2j;Xcp)3FV4D(OnC8X8S3Eo15$_U*;t+mYV+&i|jZHx07m zI?pt}b8^qSFSRcKstN^SBS8QJSBR@fixM})MTtAX4GRfktrb;;+Hc+c-rUbRKQgNdP_!Lm3qKe@@W#zN zC%-&5^Lx+pzK7Udhuc$^t%hp}DdQYUzwxo~F75=eSr!cRvv@BLrO5MS>>cX5@aV(n z&ZBZ{pPZNwCysRo3gqn%(tvfrLKfCTXCbJ+2dtV*cv~46B87s)+hzt`2exW3HxGk@ zaQY#1;DFq>S00$;CyzIpo7#=Fv;@qkOZ`p1b(OY1*a2}VMWZ9cwqh+jaU5J*hvgNx z|6Vw80w%`f*qAtam>k~Uy>Q<4h$#hUq!qavpsr|xv2 zvITSVa9|Q1xDO`x%e{N#p@Z!BUCqT=W4)$Q>Jn!qXiq(T@4LVL;@qi|V*iBPyGI^8 zh!z&WaUph<@%^NnYBl)8X*hN#jE~9jF>&lJZ+s|t`@IwgL-4qq7K7Rc+plcWb@AW; zD;7lT9ubeOT7&r;kjug+PABDbV3OZ+qCp(x%B;?5Nc@ekGk0|0z2ExU`O^>4{S$I@ zMDE)wjvwoc_J(h~qccWGPz}2aDR$xazWT;fpX?qyDE5rXJtN}CVfw&{)|HR+YR42( zGSVjQvR6CHI`7=JT+l!X2%@|5nZIkPGEMVuVF0HTYXp$WNGq=6 zsP;3(+?SvH{o>?z(!-xe`bgM#odqpWY{4TIHKOi(SbYmv(;oVgQTl|EI#j7@g4DB_ zh%)efXt!Z=3znAP?z>?BIO-`uX4^P1oAG;!?oVE`K{6UOg4Q+Kctf!c8hj{A; z2d;na*(>|^quyS~vtggYyen=G5ES*9Q~Asp8>px%IcPr>L2DitA4 zl+$!5ms`S@7q97phcwsVH39jrAJpp8t1#NG_;4pg>aaS86e3ns=< zxeS?Ym(gt2&)VJ_?^;qa7B+(Rb>4m#o8$Jt=hXa3(1zA-hWTtm*JbSC(`drVDntZM zokT-J5CeCH0fqs6z18ZPHn*e*9#DTHsGo&!Rxdwo_CBd*k3}@yZM5?_4-kZ5GT}EC zV9zKVK8X5yA)8Gm+_q?6PxZ|=4A1Klf9>e#^%tJGzJCJs_Chub=@g_>(BF^Fo`bHF z;L{tG#M5=}9#ksrmQ%6NHGqC_(U6?buo^Zmi|$!9bJ7}kUd!DhmEO%2x0r9MDnt=D zF4UW_v;?{iC$O(`QRDe_pOcM+pvRQw4p#6g%+d?oF)q~b`QhQx7_v9wNQ=I%x zdiV=SABh^Tv#a(qg!MPW z_9Af>!rJ?^`6f07OLzQ!rtcv$yEj|dXJ*H!NJZ5jkj^yq)}zif(mVsKlHT`?{GR7D zt6wvFu$Gyb6ZOqn5RiHUmRDeES{|50cN{>)B3L$P+bN8UfueR7r<|o5TeN$XI~R~P zkem2=rtbkOH<2ri8`%lM^{D!vX?K=*>rwkMX`KPy&WwE{H}pv>w?ADNOXbI;KHyh= z#JZP=yH2`ur1_o<=Z)Uy3u9k2vSXUrqv-icO&KD>13ARFjMxj52N0|m#1mgvVX%k>Rd-#|07^3WY2}3t1?F!+yA3B} zXWlFr+ku@t@&9VQ`9_C%ORRk!=(^eeh5Viu^z?{k^R}i)TXJ<3u1(AS zK6LmX^pw$VAS=W@Bd@a3otvrC?lkXSK-kWX|7ND|v}X2dRoY3HI0X4Tw7h4C+2`GcC-qv*wES6iHI zMxozsi}ekdotILg~e2 zvA~;K^&p@zs(pP*?w>%D`%#<^8kZBqr=+y6ee7+lR%qv{a4#ZbG(Z0JRL?z{*`t}| zklWK&+$e0jj;L(GjRn}O$df0~@DR$~l8`DmFb*IaKmCczyk*+?5Xeov=b6I3FBsV| z&Foe5+-6N#Td0R&*lNkOHJF}}*$g^*1p0cDKvq>v-c>oL&6+!P-I1j7(~krP6MOXguMn+IZ_#zuR1=olDZcs-%w4-+jy< z8bmt@sd1l?5CGYH`6m$#niE5-kDRWKj6kV~>=bCR?ukGO&~&%5(z$-6MmyJd_Z(6S zxryJ(^gU?hCUWHoGk<`|Y*_g#(wU;(M%cPcnr9^4Oz-`#@*|(J@{_6DP`bF+EI;Jc zr+K*a_uc}^y-R$%M{f5&Wn}in;u@C-u$}HbiM03N)_E*uOEhsf+_x_U);>e>Um7==tNC*{f)2RkOHMv6{{F zf5Kb;p(HoC+uY^^A22dwik?;Vv;<8e!^}+@r6;1=--uvpyPa9GN+(patZHd#778@3_)?W%tQ>cpU?`Ox4h4JeNWuQ<{1yB|nW6DCl1uRk($Yz81lI#dHQi70>&qH4y z`uBgC#t0s~Kd@~cH?86w&#~F2kf5n@|JcUHdeUVy3MVwHSGRkSEJms=c+d^1Z@k^o zHDVY-O8M2Vc-k#$SFFBq4ggRtb%ESWo|yGfBY#jcONwerK@d_n?JRCqmu}8jmcU3( zjFX2RAo1HSqd*lXiD1OOJbuHC3j&o0}RkRVUo9p!Q~UI-`y ztN=pEDXA*#+p~G?dShFyKB?P-y4?q|MD?5ykrUS5e5au)zGVtZ;l(eyh7LQUi!Bdh z9X6lyEoC_fV;P}n=8vdGNj0({2*N5S&T6H)_LIwTISur)6L*I@NNH?I$hOO=RBR#^ z>blHkLf9^+L}1-!JWD0?z5kR(2p&Ei*cOj}$al+$f#9HPVsd=#{j-U2ol!igS$(=a zfFy}DTQI-7S$*a8maZ|w5E#p^e#KL@(@eBYJ~cl5sFn$?H3l%iPzG_2*b1CO}tKjz*g?q1wp zE{+@7{fd@RR8xY&IVgIzF#hGO58wEO7(mS$0ECcax+X~!G3rSvReK)^W^Q>%8$j3q z$xS=MRUG-YqNS0RlN3A;0{~|zCQD=0jFN3Lc?UXONtwKb4=Mmi5Rs;GLMf#l08&%q zl-#`KaD51=AgHEF36w;xqg%yHV;HM8NUrM!#s&?Wik8A!UII>{>m+9!7=<7J zRZA2TN}=6`W(!)a_>`pQ1ECOv;B5;uLV)9d<49Ej#;}x#(Aece`W}icy%QwO1;>S5 z8U~qI&w>;R#)g>}Jiw~0>N$ebgtiD(Y)cRVoIx0Z=Yy0GTNV30I4(p)Vw5<{BE1J= zLrP|tDFBNGDMd>oEe{a{0gn4JlqP4c#u-gGv6^&U$!?i&#V8|$F+z5#82AurDMinM zlH;`PxC#JJn#5kl*G|_HY{>P%^#G&ouTqLwOM&F7s_DATiKD0~MawZ{Mo|z&O3Ico zMWsEhD%(BXy>%>nfS_Wx3$-wh*yihU;aU=J=X&6Ipz9EX@r3sw#gvli zx}ji`hBnqxSj))(g&_t2A$bfr2SL(xilNIm3$odYTQV}%=Hm28fbE<|2OLLg8c-Tf zI4}lLl<2wf0=hHdVn=_&Sw+i&l&Y#4Mv5~ZtG1$NDM}OCAymm`IEjF!QCAc^4h{6tucZv@{5*8y^i=`c2mAO(m>R|R7c zqah$gOHXj`(k=IIKgODrOj85`9z{g3P|@?hFatd!2|gN~0DHDx9=$gL;@F zn8!#bM1oT%&IHVv-Oqm^I&z2^2F%~!OE;lhma2w0gB@4gW=n2XV0CpD+7iqW%%@?) zZA&45kuLE!IPKhaIO+->FzWc-4M3Pi4hZ$)Qv(Dfrw8@()Ke?lY8$W z`MjuBVPy?QhIez~K*q6`a{dMkkMKYGLzhx?@nc!7p>kR3I-(Q+0i)1r%cYxu5d07S zop0N6YDTQD!$3b+7Km*}<1m6|Q*La+$_^z5R8W^QpM-6}LlQQ5)M8Qd-s8ce5Bq}y z!t>G9tFl@{xt!EgL`f1U=z37A$(0qna}!GDbLMm6Mu8zEr%{tdEgjm=z7XAg7t3Vi z%BoyhfstWIryy?6!FGaSW$P9!ac43~H$akv9Tv4%*q9jge(96J_&y;eT)8UOH=tCM zx{hLlZ6P5Hl7!TiwH*d96x8F?BVn6Um4;0gH5q9={)ym$`~ALN(QLx(95kAc$w);( z5dn;VGH_j}R$+DZHcF1irxd7y1uSZ^sF}CA&%F>HKEy3c&d!OIRTvzAICsfcKuU;0 zXtrdf0xK)Gj?NJ*U{N=ajK-sjns*)yKKWQMI>IA@u3Ul2)-D5x5yY-o)v8=sMV&4r zU&TDZJWib`un+IX@3$W9*Oq z&?N+2yd-NiR4#4H#|S8eW>YTR1XYDU_~)K!%Bd-_u?YhM5PJ>A&!MrO=Vk>~cPBjH z%;U_bQCD!CM(w!BA2gj~bY#sMg*&#LOq@(?+qONiZDV3hjEQY^l8KXv&53Q>#_jLN z{o7~tsk6GO`c&=O@3T9(yq^CE%`km~sZ|)&MLKYaI-?=UhsJp;CQSEFnzyyXlZz#Qw&Iw{QT6`EyR#Pu z1K{{gopEF$=Ij)k_*6A(SB6U032M`xRoeBTkiCApj_)COJ^S&7{-CwE2s8FdJx|(J z>%{t+A5i;AcZMe%D>)gFyk6`&TR|Q$xxUy)kFEw05k#Rao8bgp0MiVrAeKV;cI0Zup27H=Npo|{ zm)Q13A0JFodDQQlHZvJ-vzE01hbJ`x(!6@My-QgbZHv4jAc;L8KJgL7y@x+ zTqDEQwdQ=z+yxi_OjZ1{;oc(fXe5eFYaMA=SkV=$o_8ef zuL2LbFJnfRG<5+Sf{pNv!JFBKx{uZS`VOl$#CB+uO_Zygune7^XnN&h>Ym?j`pfH~ z<68gjCmg(`a?T_zi2Ly2ICkqIHo}gG+g|(FY)#*kIT2ucyPopXf257m^@PcnC8Q)J zKt}R-{#bL@qq0@;6k+o%Hc}NYXf(Uaa16XV4S9Nl_@HJi%i!VmWo*`n#1X_BMt*$g z&5~IWHt7IWGe~vi zWZb3mFdZ0*9djxkLW`=wQY4fJ1V8T3tqq^s-nh;;D~{W^Cq-mOi%Rvp->z0PVVHdd z)db(Su)lYwo(AfUsH?xRn4;6PZ<8X~8e4uZ?+g|;d;0J&zV&47@2+0nGrpt0tIF5T zh8i$f71f^F;W_K{ut-*ioyOKC<>Z-KN-QV|}+M0$8n?uy{-%GZMf7SRS>2{I5U14Dw3KGJXC9Zdvq9&u^zEV z-frgBSiZ|&iN=9?Tc2ob^EXsN2~-^a_C3e?vhHURb})Kijz?MGN0{ejR~a9FsI0_@ zIcaKmE~|~Fkqy2&7OVpLenL+)`^-%-@Asc$`HoogF`SafCb{ zdnit?LPUvX@ubU)fy6mqsO?kDnVaEF?yY`MUGA4Ew)5)aA_Stm)&Bw{#NEQv*98?)yzy6R{LTnl+Wec0^*3ql&Aj7?g;9Mm zARYkb4aG(?+!&|+?0aFzh=?eZS(0(>pFc zXf1DtJw|!Im|>=7o9&`q(_4`Yv}E65oTCACqE@X)BNSio!y>l4LXp<=dKt1GL(7qz z#S423*`febF&u6q5Y6K-ul4P`EH87b1?S;jSPqGrbdXOT01E=-N; z-!UvEe8MQjg6|Ibu}6@zQ`bP`!?FQ0OZb@ihy`hK_-DYpP5(V2Aeb6_NkPBSFyJ6A z{1(Jjb1a4yB3B9jv$^|?l#cWyw49@;iC7G-2N?=*`mtaMGia5CkJUFyZ5&^zM|jcs;HOKfXMfKp;2T( zi)Dy#W3w?&l0lp4_n#e|aWyOnyJ2N%5ilDmzuX8@mVHshI3b>LMYlfK+T7IAq9dJ` z*9UNz;<*pYTtiTF+nmRzN@AoqOAxDsoZhpdc}Uu(KX`<79d3y&VFZnf!xiXqXb8ol zH*!B9JiW!5s3?PA(v(W3VG(VyOqY;m2+LDlI+exB@LG0m3E0g4{wtY=Lw_ zulcddrt?@s-ak;(%kOer+I>FV+n*H?M`PyFE2v89=R`WRy&)+1SDzUp#VWK=e^JKA z#|A5sb-(6La@8~~lr^vf1lrwS@}%?v75Lu32n1G!3iz=1fU{n1xME}BQEPgnc+)4B7DR-PFBPjb!9AN zkhrk(*Y}_2m%L`x%p62^{}^q+)w#Buui)BOLIx3w!W!+j<#tJ#JB`CB@*3(k*WHy0 z6SQ-CDQgL+@!-#Z)+eH85M=BCofXMRUt4>gam$OF#nb_)pH7W0_pW zZM{PA>sjC>y?0LtPXcSp*V;<&@Z>!aU8w?W;s7rHO>U>7L0L@W_}l(6W}j`jkgwT-vNcQ^{lh zB>#~Ok0FX$h4JB*2`@t+It`>li9@ThooxE%{7SC&jq{jx2;oT9yeY55VHXI&lyhR9 zEs~rj-#L704I~6S#w9)Tum*7V$<9JY`;!OWCq062U$s$now&58wM3XlhG4h@R(w+-Vld#R3{-tWbIB#2r!!%Fp;ME-Wm56g6B~Bt;tw9j<8U$sp#McTx_| z=;qDcO)LN|5h4TK2`fmDRn#v*Bt#|*{kn^Ps4Zd+=c3ad-AX3z5^H(mXr!;NJs!C1 z+S+=}pdbjgqlQPk=c|Ng)nrR%XGlPomB2j~3;e`sE)_xDjV%84x4(Iz49{C)99-1L zX5`d=Lhpr(|2J5WK!g=9<=$MR|Dnk&2ocwU6L635P~(Xh+5-}oFQ*ZetSn@>Vx%XH zDppHOH=08Fy0O#eX7U}60kB^DJGiJpmcV> zX77Dn3t)ipKa3V*_;UcpWuwiccfDN@UXUEx7(seRto$pgH0c!b)}o||{!NGMZenYn{LcZGD@ z<1Tse4{rI>plD*AR0m$kzwy8_eW`C%R%RE~hNPbVJHG~29;pkE*VpL!w4-;305!b^Mq(>`H2+RpUkr z3}qX{iZw={E(*ICKn=lB{)JSo7P&M~6wC($H^O|^!|h>)T!MlO!kWJ6Cm`R&_Eu?n1!I=3wC(W{kD@A>XTzxWb$DWXWbOl@l{Jckz4tp*offFC z0)!KBA&yvKm9v9eOvT1{03_3DfAkx4NLvk9oDE3C4;#w=sRKx+#Nv`~0YO$WdwGlXR`eOQ71bEI9+7A_7r)IlFAWg#Nut|C*uxiiXjpxNU-A; zYLg9zPCY31j?rUasswC^S$Hih4Q>p8CVHjiA_}^acJC>@2L_6Y;JYZe2<{bD-yMSN zc}Ufon0AxKB(pp@qUaQ!rhRb=Mb!WfvN0eiQrONPr!F@RBA1B)fj_XL%4#1YN)`et ziW$Cmzfvd8W1QwEV+h~^HO~1N{D=h1JJ$qX7*F~2?qL6==QsVnN)1tZvN$ZY46IZo za8Q6t$B*LI9ye!mzy?9E{Oj<1mI91y#m0M=I2 zCYE<#3leR^LvaFw->7)ceK8CY+ud4uN9F8s`Z*~gyZxtLuQp|(SU-cLE@%V2e3uL# zX}sE6pA9p$@@vsm;YTqN2SMX#!`JpvNR*>^y35Oc7k*rs-?~sX<UIhu9S|YyRGz;$P^8(nR}%~U(X)1 zF;oOL2>qD{*2q?laRVfp7EPykN}xp>18xg<=r{pRN;5Pnxfo50Kgd1xk1w|nUGFm!G={% zH0Ug!IYorpomeF^NTe1am0`t-BKKch%tsIm*fSU`+^CWwte&2WF`D2V`^TZ9itJ5l z)oR`su)k08SOar1ZDg08}El{Uhv+Qiz&gcME_c|>`woa{f&6^b(??RF6H zy>Fm(!~%@;W}xU&3`PHg_=}prZ8lpilmnZiYc+zbonb2BPhIjkg(iqzM}voSCUT}b z|9Q*_H=6^W10^vn+Y1I6vuf-qXmj-!V3?(P)q!*1if(GX1`8;ZZq^01Li#@S?1-`E zC9C$`!UtR^WP~t-6nKq0zU>$w(#<CA3yC?T^fUN(o_EasI^XFQN|RnIQIbQzJP6n zypTkdyTP=8P7AyfeZCsB-D^DLwx23WsjA5AqKqW1n7%W)PwwFsI zI2)Ulv9p%ZuXa}p51|Fu?6Bal0YensC5jcKz3iNY$5{07l-Qr8q(jALA|>EWy!>z0 zxcIxxP@>nv#0HkuBIw9$~91-sa|5spG0DlqImHAlxS(&Y|n| zwKa8mXr(CTO@xxt*VPxTt94BfFis;&jmgTOqbb|MqNzwqn-M0Oj7IJ@fKaNorhlHj zcF`lPlKFIsAfroLj_uUt6wQ&+%3$MAxcBMbJCeIo5MFpO=AdfMUeAA3mVTGsxW`AO zaIrVTLn0lP@o6bPPhOmgWh&y+ zX3EDa2zcZ~&R9pxD%#s(9U1rj{xCjHa>mS>eg0d$Xyk!h>RF|=)}3cIOHwlLP5~KO zV8?D`3|Ff_8GZDQRHIr@LPj0^hn|8GbfMYk^|~j2w!Z}fcnLusfLR4@55&j#qFh$91|uCK{F$}6SxUaAdK##x zMD|(!qTjwXpO#JQ8~Km(oY^k*1jOSH`Ts&wIU>op-O-UyMCt)2n7={5P!l(=yVqfl zk_wkY49CH$zfA9Ek|#2aM`#@Gz>R;XRq4^}&2;eK$K1+Qz323ux35N0f(iJ3j0;Z` zmco2TklL`rcySB)0)%#5U_muMr}4womT?VqqGiJ*JJknGwuZjj+4X@`7Dp!9bdqGS zamcyQ-k-WH;kDDYGJo~%&@VdcO5;{Olx$b{c=mZ8JnFY;xY6EDky_gj!@;QHiVAwg z@j2zCEssZ(A2!&mxrDRZ5*zomwi3-YPW`8-1@nu)(_y8s+Pr*==V}^!WYW_EY3>1! zubU%Y)B^Xx3wN+cyz_17StYR8Ge)345ja~%lcr%JzaP^%!aiSzl}l0f3`9e(% znbzH@@Xxmx%g9(2+%EZ#@dx#4 zY74bCvr{spK(;%Mm?sR+9B(e+QIhJRj)eCisp8Kx6NP1nX{)vl5eANy?9JR-Y+^b< zS=PjhFYz+l`0$_gjS<{cZHxm^zSN{_F7`?rmxStYL36{=V zrDwuT&YZ{6~s|da;xr8V!he5R6f`R-Q%nar4RI>(TpPI`V$hMZ^+<7Z+dV}?b|1L-; ziF$M&PdP4IS_%^u2!QR-b8Iedkc5JvV}h4=yE&-sKKP>$2KpCQr3ucTb@=b!%9$o7aH#aIUUFsO$a+Nu?D*Sj-CL z3p*jMsAyK~#@2XKhRjnx0;$>V|72v%&-ns>WapG78ls5(aO@eQm7gAoa%SiGDN6}d zYx$)(hwu0o-$PeV<%ridPh-M=aCA%YA$$HjVB!44>u}dj&8h5c1h;pix<`P@$P0FG z%*d{Y7D}21>g?}lxY)))x%UsqM$IqFn7wWbvq$R+utDlAZT0uZw8{i#*;(E)ib194B}25Nw;4y%H2fX zbjEik^V}g#CO17Tto|rgn%y=JUWo#pUH#TnnFcmb$)&&eiUxJfIq1i#t)**vV2~`*1c~sVI3{(dIKq%m!IVwtOH3#` z1X`@;>phAAFK?(#AHwUw=`JXUcr<>`%w#gAR@kLk{0817G)o5?W-^hPf~s zBnQTR->WjA%s_6wdpQe-?nHbnS!V}Y(L%;hCw)+QjXj~@-{Nc@Ptl8yKL)LHBj+ly zxnY#^HA~bbH#UL-QeA&7TNE~^N*U{O`P-DM0sm|H9@N7GOd0_H^N+Z z(y8lRx~xQ8{e<~Tx?yoWm>i;wG^MqqVr;KcVEA+x(AfhY{a#HhGgfXEP7p?&lL6P=e?ybS1BW zDivSbQX3|@$L%EI0Vgqu1^vhy*iSg2fKVeRAY(`nrO{-927jqemo`T+NpxmXa8Ac& z*YnNrp6NQXSy_lfZMp8t=lYB_olwOZg!aNc=J+o`t*g%Ik28LmML^LL9$SlH%bN&h zhDu5>pUNIpT~mVxUCyB~Y@QEogMFK;th1%A6Cg-_h?qDxCnp9^c#v_cY6YTQCylJH zlHqrEgO1_nnQIA|7G?$QE}bD6OB;G%YDyFw)etkk`i{e_zuGyu#b>_7BT1DMe6YG4 z{Ou6ThU<~#<0V?=cLJo&28Rp~=0Ad%-St1`5DRCc>B_(9W{c0Dw)CEj6$-D_k@JNM z5oVCgm>lfEMG$zWN|pCOF9!+setIO#UI3i>#Ed|gspz>y}!21DG{>R*r=KExUv=y zDAe;OAuBur+xHoKn+sgRBm6!X90}X*je+stD1XvjgZY7}t^y;^(TVO<(hO>P|Y(GqF=3NBm)R6@>F z|Gg#Ls`Pt)FtloE&n1$O79nvX#6VZsB@bfeehTzs24%122r$+!8y}7qiOz`AS`YRh$&_M{R~h0O+x*{}6U@79h$+52Y9DrY=y1Yks(+O9&vzORujcfQ-6Rul@}QMgqA)-`LSuFFt$dmg}d-XRzx~PKhjW} z$4hFHo4Q(y2hw7iN{dXqx^XOqDtw8`{necOjowPy!DcjD{`TK}NZ{9guwp=YJPB9; zkR?)sK=?TPmveM-ZQ&7C(S)CR4Gkb+dUQFS6jtQPk&a3u%njdxzI-jq@e%ZvDqN|s zLotil@~bVxG%%fc{HYGNabtqW6fc-WZCy=%%*h8WfZW zM&20j;iIX^rKOpSox9Sl)cC3)U|)7iaSKJ|aF3+Q*VR;6OHEB1=SkQTQ(LBlE8s6e-hupCUL;;4G7(0j72`7LiE(5b zIJsq>ga_epT-eXI@BD=KE&E7Vu?G(;8XS?!E~<$fTo6cbG(KpaO9Q6~hs;l;qf|x*0*4Aq zQ@%OSrGk)aXiVT!k^M61b5o#1@%=rst8!TK-&qkpgzzt+H?b{kFM{)DASbp5t}toj zK4}?IR68!IBriW>8O-v>Q-i38gG2O!`*H`)EKLt?A1bQi{+=X;U!bQO2^auQk=k4o zHWV{dL%1a#8L}@EQlyY^FGW%i;f%h$t51TO2aVrk0A>`*5)cF=D`|Z&g*66@>WE8^ zXj4G_QlN8W!a}Q4PI(5|e4DtfAw2W^vUB-+=V-J$X*8FNtzcExq^;j4j$fR=QM8Bc zAVH#7&p#3h7y~{Oru1L#a42^t5W4VH=}Cjw^1>GkQ^4+RjyS4_i;V_kaeEFmR=beK z$T!Xs8}rMt%aF-0Mhu8#Cj;(0EtS?4;GvYUoCLV<@gdb<=Yf4 z4x-FoIduvGpOHc{@$v}NKdY8@PB~_p>%UKtBAR!Bx!y4gbn!_{=uz~h*`$GsXwM_( zWWB-98GbCj-u<^wGjG z-z<__-n2!O3BIi_F8>%Y6PDIC7_93ewMQsk*P!Jy(AN2hKupszAjK$o*K=VBY5nr9`=x{XZgy~~! zwjhLmirtR$-+0}~0agMD+X?riHpnZb7ZNY1i9bmgRf)}upld_Dc}>tpH_&!-HmxM^ zq3&x2S)$g1JFyYec(knv%^Yo3g(N3;y(0xGr1m9u(Mq;=hIO4S75TL($ct7ZIn|Jh zABPz;5dGVCt||{k#(}`VcUAgIOuM82-`lpJ@p)kM#PH>Obs%)YBAM`=g_5d7zQn{^ z#e>($6^hZX{BjvL(uvX~4P-}`WrT{#Hitdz{#d9OCW3>8NiYX1a5}j~c5Bm9oczA7 z9dxp?VJp=Ig}+{*(^U`w79^p7uU_GsRsZb?C#t2kES#(wqA%M`%<^AdPR9pn9||7` zs|HJ&O3Q0Wgg}r8iuGCII-SB_fvf%<`-ifOeVuHR_bJ^$XdV4#QC(meH`!i z$JEsnsAhV8DFzWD7*&uPrm-=fI*A3d!xoiH&;EB#*pq`XAc{@toexuhjvFe0-sW|Z zPUWueVti12KUevIA0Qcx_7t-|<{NnRO_;&c(D__KKtMFa#`i$V_@c~!A?K8*1Ycsb ze@5q)b1Q{x>vZ8FUR_!uzv>@$OR$^8z9F5^`HAJL z;;~_{o(czDjs)UM~pSQYG%zur)8om zk44{z2LyT`GysYo7QJ(iP%*`;&?_3l9VZsm9iCPZUY0^!g^W58atEgeyra=#adP7F zd?Kzz;KJTLUFq$%?Tx(3*C#ES`{%pw_lDb#&GGb=tG745Zh*5drk~S9X4RF#{lz>+ zm+_fR>$_Uu3wK{-VTn$w$t=Qjx0lJ1;;b4deE^pi)8%>|S|1r&#=6d&vRW#iuJ zgS08oPR{Y(nz1@kDCv87q_WrQxL-n|IyRCe@aJUTG+v)zH7Hs_dNl}Zq*z2{rmAj~ z0Te~Z`lxUCBYe&>6$6KOG=8(_*m^eCN-1#7FhEFX{haaE*XISGrgIDMRHpLVjuN?vt(T| z(UGll@kG2gJzZ=N5ar8A9))+79MazBV#^J9v({0dQx|&1UMZ?`1lM>RkM%e#a;qO6 zmY;owg3%f=bAqAFNNHUMd+XiB%N>*J4&)qtMVh{c9RUXn5{*y@KpWQCYgRpC#Wyi!rj*vm>CSsMB7_fa2k z)-$>v(>D7mDOHL3Xc4L$9`?$;^~cxKE(2ASQpf`fI6nHF4nWIdI3kmU!#|*|NM2Pb zHj90~@bPJ^w0uv+Fn$1bq+ru4-^W{?;{ABK8+3~1y2dN=T+IC29~c({qr6G_T{cWrfy_8mqEUn(6A!BP;Za<<68TP zp5_&ysKPbKIE<8x@*Amy0rU(0GYzf-by~INU2R{h-{qngm@+)41@=DtMR>#L5!|}^ z_1v+xb30}NKbwF57Cpg4{VyMA|KwNP!;1Wi106@cb$iZMo73Ub#~`u96s{_ImshFw~`ivf3M4$n^J^h-$OEO5q})<;{J!ljT?DA4WRK++<$&Dbtz`;6Bzl79>DN`+Z9Vf|J+ZAg>u#qXI3oe3Weet^F2%=cP#6?`VzFh5Y`^YANTbz_$AT*pGOP5H}2y2wbk!PU}Y|Z z9ZQ#?)lEW(B}1{gwnDB3`0jK zYEy$Ao#mIe?`e1Vf9FB^E=b zUoIJe_K{LJbM_D)PDaF?w`!o~NUWwhJkO`TlVhJY1;-`);zvzPySN0cIW14EPDZIwsV&Bu4IUFkK`aQ9ztV|A`{ zTZPAD3VaqUG84IPUh- z`}+mv<~f|R>2&J0En^d7PZBe3WGN>%7#_0!GlZ zI9#4C=d43c?on&{!@;$%($a&@CmbrK_;HbG5?~RLJ6G)>p+H>;g=?)z)3LK+^ulnM zYks++p>d$n0W_3LQ6~?<()gFL;SUsONp3qLV}$`^Nk$rbRIBW%X@>$Rmf=7{`Rh}U zwuCy`siu~C#ee0KbYY~*2Y)BjA(b^mNz>-))+iRnv`RAW33pTk)R+ypvD!b?idloH zKI6k&jDLNnq-Xi5Yb91R5{>mX5Sld;npMxh?&ptkZ$tp+maM(6hWU}O&XKz4oY5Qg zw*WQ&Cw~dq@+GWF2c;)Md9#+YD562>vk}>c^*yc4!(MKbAuuDL(4PqnnJh3pd#b4e zkV5^jl4qM4-iHdR@ZRj=S`#SGfLa(a*5FElsMwSuSep9xNCQ}ImT)_e`Gz$J#k~3N z4HL0nEE4s80~E0d|4_Oc-c|8Q*sifS!6-2e9;tq#%om7KLG*p0WC60$tii8)qiIVX zslo!AJYyuzBK$|W;payyIN@aZ6%RR2HU58%LD_23EW8N=Z;|hq*uGdrXSUAHcn2b( z4WRBnh)+x5Y9q4j`BXNO>)+TL^G|tV>r*$)p8SR~K9&AFpaJYUQ_WdB z=l+oLPKB{*4siC{I#OQ+=9@s-a8ROV%|R4pYRpf7FS=$XNk6S$(05K{&-rQG4f+H& z_|+LKTYiU8C;t_+V(^yqk>{xN$x>055kb=7R%eV-ZXv?afE(iQRO&-q%Mr(Nga~nb zm0V(i>PUC9K4?Wd1oB9!WBEV5Wf}{2{37fgzg)AY@&P^Ku?{3z;+nC?2C+H_M(esq znknxw|B4F{o1RwMd(7#z$8fOmghgXiQp)TuRe6;r?$D8Vtnv$S+pP3UrTZ57sjkLd zlkU-@!z*H=Nvq{eot#GEH|@qw4gV$6r_lwTsGwfhvR&SM9sp z>Z=t}z3e@|wdY3Ch{Iep|B$wvc*Q16@To6ZHfEJakBv)R>Q*x762^wMTzSw%-;d$V z(RH?oikdKsp&4_2=bIbbzF-5sovnAhg$L#mtCHy6%`80J#fi>JOJF8Tl5D{9%gaGa zhOfgUmF)C}=|OXqq~b!7b`yKG<(tqRBOwxP9pujZR+}E-$tW10Cz1dkUS>q6*otOh zQ*@2EZVoa6XhH%I)8aN|heuOg80cA@#0!rVQ0iCQB?vk{7R-dk-FXQ^hA6ki1N8K` zX(Ryg!jMAMtDmYJwTFFluZ5ko)W{^QkC(Xb*nO?KEYnOdOY(!;XiMQuz-~%XbPJEd z8-IbZ1mMBY4bEF-Lj?iUu^8xUPyIc>s$^mltuyt(P4!ihqZjB375Tzy$KzTt!29xN z6_N9gep-W@%bMd2--0SA0m3Q?wKSxpqSAvSb$e~ZUn+`Y40&L zaHvPB|7LAW#QwA+Km<9U*jnK9Wm@CrQ=gW*B>Qy^{pIPa`(=(BH%Y1bt?FPAlzHer*{0g5Q5sHS#ej z0P%P|(b;-I)BIyFuc1dpro@F$(>(Om=$^>r`6;N5q#&P0Gt29Q7-%K8|IMH^wEM2n zXMeK7XKYXvR=l$$-<_eP*6+l;*}iH<9Yl5(damf$WwQF=nNNj9E?1NgMwh(_%VFQ7 zf(u5PBo6Bx1c6#;YRmE#51;%_wW8y34GZYQjK-sgIH< zJ@h7b-qFK1B-YS?*nNvm=ONY@w&@+8mt|cKlhHus8XXucQ3x- zfM&it{j}`H(7~2h+9Uo7el8XXN$oLEMeM^ZGS*=JQj@L0RChuTQ|P7nB`R4N%MN&c zE%G2Gqal-A{TV||$s+Y#YX@;jtTqBR5iN}5*i4EIdJ=nLa@+#p?@JbYUf2Pa-!lW} zirqgTwoi4tpcZ^NoDg4(VkWx5|J6dtivGYYnJWhA$RJad1+6HvbmAf(}M!{heM7dxwHOg0o&Ak11QPP98Na<6jRu|@bFz}5_AI*}I0no{ zzeAbq^GkpghhC~K6N$OKAmr`wHM?qrRW0rJk)=deaTfm=ZuIh&P?Ya8@VsUcWGaO9 ze~)^7bxu$8+1COmXXx2yj|?8eKkzYicWa*mn6rhzZrS)WesAriwCV4WJKWh zRQPUjI#;a^4ccThtg}%X*U%Pu+#%z&ThZB>q^6MI_RhV{pBNo7lURzaojqkD*jBqR zn(d?TguNbVJf3Ul0JuiyG_^t4nhlu^3$MORB9#&-_03d%atnB(I(7PyguTSD&YK=4< zN}~(Ro+Fc)2Wo}B^Bu*kphpABkC@2k`jq%HLVsZtTosj*+y3oWj9re2i@!eJ25nMv z3i^ppgp+r}d}R}qnasf~6*j5La?x*Oc#VhmQP;k9!& zvo@{(fxD+9DELqonCp9{4_1|CGp~i$BX@=?d=R&$Nz+zty0~iBH-PDewf)oATyPo- zDi}cI{X9ne-l4xXN?vR{xI6K1hV$F?!9r_-E|IG&6AA#Q>OtLhIvMT3jMoezPDCb% zf>Q=)2fwbk=YgWRMfM79uuAp|s%DIM>YJ`y^URgL zb-f3Eb+_f`V4)ii8mWxeu(L&A#9MJf%{KQce&)BIu;tJSc6rv?X)7;us?X?lTjZDOMrrH>Ln-FlsCTeKE zR6SRiQ%jK3Qlmk0HFN&@T;@hZ>8&L!S3ea`(t)E+#iwEL`{K4J7Fn+l%Tg44n#f?t zD(E0!wU(ynVJFRccpam2{9Ezz7vtql$8X2h@D-G33M^Z1i?bFc>kWst7-qz8#L|dN zc#R3TV6Pz7xFC$0?bo&GILlzI#JXkwwDL44Uotj9M}$DWl=AN)+@5M6$$J{#sNsrR z)(4bbjO0AhUd1>Ko%_s;5UWn~p3vyhv!92?61=Y>(=+uyI4{=|O15~AL0v#npwDb+ zl^|!g6^HDzSBFoI_uleJ%TUS2pJWK+AL=f6)UT;6#FfZ5LN&V1*!9&!%xsf@>epn0 z%|*T|a3O053OX$1{QkIU&d>V9I(~vp$ymm7HJ7vIvEu4gB_})<@0}VNo$9m;J7Vq{!1@?24wz1m?$9 z2&kf%j#&T#=CQvNZGK~eWk-J1#L39oT9+{EUrD64^3B;%|Eh0v8>xzqxZG8&S5oUk zEqHGg7}76j`ALAO(-}i~_m^a^>xz>V@Nsd?L%Kd6G=taw>r6`zfowu=o|U&y6Qri(2uvaFJ3qGZ}8_ zaZao`)B-t#pQ+*}#>H4NAJj+s|JYQWB=rVzTWdLsKw)H?@;{wL495Q>JxwELh+S2z6E*BL6y{EbsLlHtexJv4ys83Bd5z}v)f`h}kpLU+&4%{86+?NMkL;DHveng90!pu(^Hy1utghl)Yj z;s`LxTbm1M&;d>;GUq`ih?>m%TsTR8gaMryZN722wBWRSS&+4W3X9Z>Z2eTNwbEN7 zcN6~ApKZT5je{MZT)bzOy2mAR3|29Q<1q3L$>?^)CsrBAw$(pqKzI|n0wsGk!Co)`cHt=<>9vB@U;j>!< z|3}kVMn%=OQF!Q*?vMuQ5RmQ$=>{q3?ivt~?hfhhp+y>`8>EI#>Fx%<^ZxjL&RWbm z%z5IR`+D}?Hy$_JQz}go6m`X)xp_;Tb-L&S7&f!bvmiDfJAi3&{C6sI-8Vsda`8}D zTAcja^(3r(yNSHF6!ic`dn3x*B7Ikbg#)K$L!=w2JWJ0hHtVK=C_Gc(WN8eT?DI^k zu2@e`s-I?EkYZJewCG}9HXmdicRnM|$N%vC#DB3{!)h#_dN!PPR}%G{0No$|mj3et zqYaK#ukj-Tgq+j0*(3f<<#6Wx<-yOnasz%6Xq?7O>AK$^zJ2!Y*o5WI*XG&I`@=}` z2_~ML{+)S&pkK$HSgpsnbpaIb9K>2#bP24%AJkQY`u~W$$Slg&+WA@UoS&`Vp)>PV zuDn*N5s?l#nnk*iAnC;$hI0f3KNpn62&|V?@fDc1G=(0#gc7*aATbYlbL0{~-u4a> zYLu)r?81$ly^@u5w4P&GolPw$cB-ndj+QRb(MjFP82~3ifro4x;%-0e^5%Y}VwQoFQF}38ih? z1yC}mk36L|o;=;^FLn{IbhG;~ci(2U_LL>9JvZ!jdfvZ9I6G~%CpLfXvt4XEV(lbt zQZD|~vD)-F=6V0!{r=9~r`r%*$Kxf{@Wj5LL$}z#bxp|YCm!CF%WyIc0Z3R~rL8t6 z??XuQ%_p}huKSmxiv3B=N4CDRbnSi`B$&N9pWEue`o9`$YuW0He7#QHT98n_!6^Ch z0LG}*hQp^4MO));xiUGjbfSM0x;!@UfnB-$XVoAv9UZJ^vB41wJNj%QNtIU1NDXCH z?aw$PxxOCl#?whjNV=Q|_o7{zqP}mRjpISIJX(H-bT!8ySDr!~ff4C8j4T=YLJE(` z>82Z2Pt)35G7z@Q9?fqIhwdx=M#1)!F%$`t1&p+*k(Su3>q$ct6l6&z;?wuS_jm0% z7{8?sjkr41nxAPgwS;L9a=zHd{JTYZ?M!r(TL|43RWTD)p$crAgrb0SzoWyU{nRsV z5<8J6a9Y6atW4CoVUZEi652uU`jh*j-E#G`yjlV#=T0L1+Nq*emq9X$E^5qw?J_6y z%X2cBK{R>zd9rr4g9=iiZUb(bqw23{BD{hB0K#iU>`*Jg_bLk#flM9%ij z^;F;}`z`&PCyA81k1TxR+s0I$6h%>)xa^{IEBF0{r^_;Z=7*Vd^_N(e3J7h} z1M=qLAg^jEWG_(}YhM>%XU405+>x%jxrgX(+xz>cG{*OYBKPl_aH~ct$T(n8auy5L zbMcYC;3zIC2)m+^1N5DT=Ct zQTx}8;*$nV&(-SRzgsILb{=$X-CL*YxF`YRv>nY0{&SOC|{Fy z^eFoy1}ahr4At;H(25NpnN?9iQEM-uQ_-Z%+22uf#%uxAw%g+=O^#r5RD4DTYo(s* zEw?sn-x+(1Uyp(RzQ&4lgSQ-4yC!R7T^v4#I?X`Nzvt}{r#LFy)Wy&%88VboAZ$tt?P<|&K$Np8sUNFU~Y#&r;di7}dgr1nhe+siL3f%(nh zfUuGcu2fU4cC9P?k|zeLb3l`fa9iK%E&>(z zz%Oc1H#DmF3R-MRrlBoD4g%pJ5Fy0`N?{?2As;-Ez*$>sqfklDeqK{<|E)z+t4CLx zlapBiBPKw%U6vlQi3CFChSsCdQ8`nYEsW}7_hrU{+zqwx@xr7OIA%!~^7^T(i}j^L z@U*nv8KU(Cx|Qm!>7L^Qg@rJGU|ksg#7~WaS{ZTW#we-tTw`lE6F_gq1Varg{)aO> zn)vs_oKR}iYdOrZ#r!Z$@j+O1rOimBEgp9x-p`515iAhmlh4Z;N*^gfQO-1W!q;y- zye9Lo@L@Gn@TPb$y_TL;-IKiP^V)&$fkV?rYU%k#_X4)fqEBs zkf01P$f~L+8AlVL1tdX9Ti3-U*NDXNiK92H0*#Te1li8g(QB@wAk$`KA}UP^`M9mL zQepF1U4e$jy>UAuK0Ue8#83yemN?V_LL|r9kA56RRaAam=Z>oU-Oc%nbyG@ z9vqs!wlK~lT66V;mix`~ArLB)&+kHlOFFZdL;>_F^}4L@K>U1vc@e{Jo8gS13T7Yg zDZ`gdf72CLKZ$X6u?hwyTojo4?xyoTb?LbHzA%`}fHy}?y|7ROpiRgZ%-^~U zh;G?u(?3bOMsxLtkqM(pJ!;Vycf;xYV(`lg0d-* zv%_aLt$fX-NcbdB<}&snsZu%Aq@qDaPM)zG3%f`}LV_btBVD6eaEPKU58VN)`V)(m zdC_-Qy$aHZOXY$fEE1(wO>w)=wRo4T2x_YP+%YJ8q_~RXQ^+{M|$?vp4dkOF6Z&@wZp3pT`DwahbkU^UZg(Bgpt4+aVbHkC%&XI{m_6H%!l#}S@y#Z*&qRJ*ufGLk?suV7r|W+R2evU0-2~8TmaZ8-zAZI>f2F5UdwD$8s40R zT5?Mxqx);#TXMaiV_B$BIn&SO3n+Gr2n>qQbpa?7HI}~P4RL%tuvCF6fyC?B+tmi8=8H5TTlJD=62Kqi&`k#- zVDWq!`*XSi{xuQiR@pDnYS>`G*2EWKiUze9@Pw%qA}`lu=Y`K&U4Y|Qt}H#O$V_-J z=srw_=ydXL;|S*aTTxqG_`b9CDXqd084vHPyZqWeB(H zeS$;oyZQ)zMbA+FUMZIw^{8Ym2pCHzjis*9tWQ&t`I6h#;u9o_k=OLLKl`8cR85I2 zk&wf#AP#Q6NCN>tEQ-`2Uz43A^4HS1xSYX;1hgJCvg;j|o^TSNAJP+bJbOAS>%}Nf zxcwP35S(5nRFc9zP;Q$ZwxsxRR4$p6ZW&D63;*``s))ed0Q-2n<6pqUiNe)*apsG4 z?>6X@tp;EHD?2Ng%L;$e3E8{bHxR~S2ux%^`L>_l3J z2*!}e7v44~(L`LOzBV$VdR^Ta?<7)FGOt;r4z-gqkL!CxEZTVevohqNe;Z~VAXQug zw3Rm(#~mFULoZI8kfwWad1~qO?7BLVUqjgg%^6-3XMi{6@7Tx{joe7`({nZ&gbo3X z+Ub+6;X^okx7R|>e3wx~@X8G1!MWuAq#I*;LbxCKdtr?FcpItwQ!xu-HlrY&jm0uNGCTwrKG4HjlIF(1XhPe9??D^5VcI4)^G{`@ z(d4iZ6itth8odH8`ps}@`gqec0z~yIf6s9f2{^-i#{`aO*ndy|g-$D~SRoqA;hp2E z$7fO~q^SN(Ny$zGFXp-v#7kAjL$?2hDs`s;!ET&Ly-zL#k5P$82|}*a0nn=4n{Sjj92 z*1fBoUAEjZ3J7rxy&5B=sx{=~&3LE~EKGT<4IQQ^EZ0lS|0x1@H|@lSEQPG1dy1by z1_LWC$aVSdc>h@EACdWmqP-S)?^l<>n?>n9xnQ@j#;V2cy?3>Z)1?)+y-bh7V#hXH zXJ58kD{J?B=cD4tHfzS&+DOgXXWjJ|FB+!|;1EW6z4`n_67%zIzh%6otm+?kIr`}> z-X4#hTN6tHeO92)3D{Rvz*A{XY?d-dW*<1Xb%{XMOau0mlQncwL^U=fJE-yM?jDl`>v=4mNwah zB>ynqE@7;Y%gWU9mm9+;QOqIHnRS83*6~d%4Zt0F1=DWlBvlTCmIHK0mu|BE6=`zK zV@TbYebk~yInXh%^m~OQ_4jpeQtP?MDquGY-yr#M)0Ohxo7Pb12P?&&*`l*6S<_cq zI*eOFn*Ad*mAoYplGHXQJcR|yj1XIVWgrf+=Q3aYJJu zT6J%#-2q{^*W5gN>GN4US`9s~AX;rQ6rX^9E{|(*o?XZdJVrmgHlLX1j?RtVK+OFK zLuW|L*}A>11^I*Wc3$Umi106tS=}%*Md-pwmyk9l-!;u~QwRe%-H(_5>q6Gb!SN^G1+Nu2dX)tAfZ%Y`I>cwcI z5x{95-+3{Yk+bsp7287neW%I-Wg=)J{4YgN0^m^43qvEEu5wyeXk;((JsU~GC{=t; z;M^Sl_k(XX<|nmN=}_0rIPSh|m>Lyk1uc=?7-P8dH&{2c-`jqFeE7iQd@q-7OFdQq zhPvu(ULG)zBYKJ!jp-#oJ1*wg(_W9x9MXU@K3jiEHNR9X^;K!}2K_X$+N+J^>Z1;C z(O4fH^4~=lZfyVgHvj;J=|}51tmm^cE6ZrIy-)H4t%~<5<;F%vd|LDU7LW!%xt%rFDYk|Nl*?RA5Yk`2h&-H! z{4ivid-MMBW-CyK?Cj^_r$v5U4|P$6!3wnbooje;{ssp;!s4jC4`6Z?BsywQF{q)x zv;gsK=X2M~I%bMHNu`$GmO{^2H*@lm?P6!T>sY-cFNQz}1b@s2oGUQtQ% zy-RE`Y#;~+WwD*~?LlQaGMR{qn?H1)^!d6kJZ3H-_h5RQ8z^Hp)tnyJ%3tN@-rzx> zFl15C@S2KlP1dLDz+jU;%9qU{1rem&aJDbnQb)Nbn*eKDs7@+9j3k?QCt}ckRoi#8 z0^(>>N>fNI*r3GaJUWP9k)3{)1wv{1(-0K#{T`o8JRk1d!O6J{c9y)98K(h@h9X-! z{(Ch!+SD{__X&w7@hE&+;-3Cqj(^ju2m>~1U;J`%pBqxwN;3>AGjz1(KTof2YD71g z6}t#cf=HId-oaf|Zhee%>%}8l2L$AP_ectCNE7rT0n^YiFNQTe=)DU!VoC+|!u9{8cVE8}Wi){#<*SY_Vpe9b5&c%S;z})Yg zjBx^*=_)-0cxr&)xr-j?7~S^SfQW>D|Hb8v5j>1V1yR=F0@(#GBLV#%L}WnLez5FK zn0sNEBqQR&YT6T!l0`#OcCQF%rd`}kWj@tDMM`t5hK$*Klj}8ajQ-=AC3_K{iG2eDn>Mf`T|D@Wr zjGPanpU$89ubn{0?O}-xvjTQCRzefoxt2V{8r!&qiw-_PA-%(HXQSagSI2Yw&t6ub z*f|c^kiCd%YdNpJ$#b}`c^o(RbNIgnRQN_XBu}pFPS4nBmrkLCi zDgjLd0|&;V5JyyeK=Gj4L?6-O;t^)CtG(42h`ov&AYS0AUcn~NL%iRGd;?kVx!C1Ym zsy8uT(FfhERubw2KE;QCB;I$%V`1TdeF1mTfD4f9br)8=)@`d{lgI&5U0BhiPtIvl zwkg}pc`Qkg6Z;hG-=KdXQptV{=e`A80ncU8YqHwc>?$(*e#SnENA%wJ8hVAaP@ z(y~6X%m<}0&_I}?Y!76Jo+K#ek9xti5qmI{c}RT+s#6x2pY1H3^)YVj} zE0AzPbVs&Nfq5H1QHKZ!!5H~&tr@JP7%J-PpqI1%NvHs6VXTA_@`zk;A|m83{Ch$* zCgNZQST;~N2-zAw4z3H677-g6hm0>hrjYXB;G2to@v-~W@E1a&^Tm4H8K05bT$f=E zDeL+9|9pFJ#U^vcW0}Slu~u zHOZhB7mW9w0=?Gox$qV|$~C9`GR=1P#gz6SP#FxJ13_pEH=oBg1_4_J%>lDe5!cXS#Tt zGn;C5N*}K~C+#GiBMOzTHM4`393`;=kE>&q2clpoiLbGziCpyNu*RP?d;YdY%Mwo2 z?tlL)Cvh=>un-bKLB~o`<43ZZtUjtcW(PY%>;mwp@#ndhpdEFon4ehA1Yj1( zWqA{ZBK#obuMnf|>@S#PWsTWi%aU7Qu@Bv824AV;X!@|edhL1dM-@%0fkND0^xq@- zVZLk*9soko5Pmd98!p5YZkv{%1lQ|>mXsL4ZHSISQW6rz926d)f|!77CBt*Y4XdD^ z?UVT5OQ-bd7_Xa5I^=~7LJyBtyvh9qB{O|QAbC(R{i5d^wYCG#v`>;SW*U?0R~*ZI zEYO$kxGJ8DZ^-sy$Q+2H0YRJRtqkRBZW^x^o#-bjTl1fOmaqb-iW{Wfro1K0}pI5E7^bA8ADC?o0x5 zQ}q}IdzT|@uTevOpGM}=cLodNb6DCA%5XiB+Y<;A%q&0j8fV_;{U()_5hYk{k?4)9R~}_8^sa)3p7s3Dk+i>Sat86kjaNKCQ3aTd*g*ue~2!N zEB|$bAmHYSE}xC#;f=SnoZbxlOfNV{f0;Y)xpT6rWETjY<<{Lx#P#M0$%^S8J1m`^ zKMPiu&!m??K3I0G9IF5u**0mlv*o8v*mB~1_}%^@_Sv0!*zE+5(V0s^D8u*v z*8-fvMHxB-L$&@nO*pZLQ$v#LMk*wiag9#LGplSW?2|5Xb^6Otp6G824EALxiA% zMYGxrj)dGux$&iKnf$XQV%@i#C&f&)i((K;_OHIX76bk}K&!+Qb+z$|MAD}1h*!Kh zS71tK{l#|jH9J`Wyczu%YpjHKzDpK*dk?b|m6noJUyd(;J2~T9>>@EmR)^|U9=UaS z>{nN7#2|-2LnZL6STk`NNd?ugNofCI-tG~D%akfueunmT66HHRO?ufJCDkCQ8=p96N{qa zFEAab&2b@E2T?)JkYY|8RcHDg-Z@aBpn(d!O`G1g{#VNt>KLsQ?mIR`V+JNg>VH7^ z5tS&74DS&k_?P9|CVO{58Rj1EH(}um$XAT8Sgx2B7u?cKK=<<0G<({rlbAH>@G^h$ zhcNc!ZMZ7ojt;V4{}m#GYvjn@G18~kcr3ykfJIs|+94>kQ>qc@QnpzG(ErUB1n*s| zPANfa!gHNdCAH&sW|~}R$Q3~dbH?sE%7Dg+k}j1&q`d5x@As0ZWie4Mr39BANdQE@ z2z3N#`W!D}Fb5bEdgmnose15?Hqt7Jj6QSJlTyBy$Q1!59>PCXZkjaDapjKbZ_TpZ z0DZYw5O^-nD_x}pt(Iv|)qi$@E7%xN78Ud0`!q&n$m&KXyT3k#-u0UHWJ}#kS~^mw zyPbmVycz0n1F@p+8HW-9+BrgeGddNndZk+U0D}4!LK&&*zwTg31U>d=d8CWpq{lPJ zbZd3!C^}X^=ROxM&(gTRFP4fC-;^w(v$EW*rWyR8<7r^%Mc;O2sV0`AC^yBJiLTBu zgRF0M+PYBTwtnXGsr%AyV4^1hQvLqW#+i-idEX?a9=xPS-$?NqXLMS`|# zr}b`8iDtn_i&vdfwRXS~vh}JMv0`@^)ISjts8+OVvB@h*=G>%#NYME?5o+J4`RjkO zPkS`$wXj}Q&1Grcz-qHH>SntyWxpa|?rXfV@4R*2b#Z@bC=#lzoUCZPJAA!cJ3o2u zvZIAb`eWT=LP`v*>&3x-czb&+ iTuy}OFQbB$eh1?x|WaT@TXA)&{fAv)Ky>lM)tvm znK_gxa=_z*u;|)wu_3ZFUQinP-q_|1@x$CKDb4l!){^-B@QuuqZpHi+K=1P z>nS??XQ{bEBOc#KMG}V{)NrHgjran@lYBT$)kg!*zk}gEPXrQT9!ybmiFO{;za$Mc zNZw~YI*8kivY*rRmzfIN8@fdyZSU33Z5uN}UIJ}dwQ*_S&1;P=)JK>GspGz%1}Wfw z>4NRL50=KgD{3t{A7uw~3)dNZ(&1~IlDZ?J5xI;u0vwmkgrLRtx8#Z*q}2Y1ukSt+ z#%h;jD?FYi)L5dWC~O|M+{|&cJD*SOq<0GPUWql_vq>ZhKGR0pldL3iZB0^K?HO~R zV&2uf%GqwRj`Tv^H`qpWZB@Q8yV5gWM)3Y!P!@EXqRu{Cd1%ilkcH$&b4tQqxj8{Dh}-?+$$p!tiu&j#x_@d9&*Zb7PeO0 z6e*@ymy?g$(U^iK$2AfS%=_aziEE!S1)Ftd5Wx!py+>=+^kMi#=cDDLFNLWQD~z=h z^glA-kco0Eu_G#$S%DUs-`MB$?pBaA8}$W|UZ|P?ZCPao#T#Ddn)ewYNLXy;lHpC>cN<_zMsmTy%;Jys+T%VUs-6#FBSd& z265dBeW>nz3P>gP$@+@HxcA#{zH(f1)&?nvv;e2X$N37+@9J=Z`!?=nX2^{OllIxu z#e|=0gI+uso7a_oZIrY2rXzEGx&5tqeARM7pY}M^Z66!at#o7=A?`?tg9rVt+xkrS zNzC)I{YsHy45M>t*x^2_Nc>Tn1c??BT3zMoV!SGpsP~qbi{Jfc66Pn^OD!&^qBc2S zKJq>PU&qHf9q>AX(4XcrUiDWeWrAO&&t3|94bZvd0^!jJl@7gb&%qpD@=?o;u#I}4 z75W6#zyU=bbZyyB0RJcR47Y(v4RRb=YFFbuThm2dqG6f7qF+*8$CUiPp;?YzDZSCapYLV5=m?+ra`;|MDS zrtJ_h`f{H3-D>;~(M;p($lTp?rMvai!wnmJ&(QD3lS1+m;RCV5R6*%&jSqZTUuLA$uTb&kQUHk%jF%N>EGepdw!k4RiaH>x4 za!;M-Md^f-2iQ8^mKB@Dd`_}q3+7@e02$C{Hn@hW;;B{yE+~(DYGdbmDgTNA+henu zRCjw)^>UMu-t4$_m{RxN`x2*3dleYt#c?N?AUA@qtX?H7uVvjYTW2|EV%-raM0tTj zQ!L8wM1GKXSLN#05a}W7T28NYE?3mG{Y#rd7Go8@iAeiGHG*i>Ra^>6$puphTrO|1 zX0@hbO%Moqkt^|dmW5L^fX|^g!IhTcBcrw6|4!-`g09fSA1y($;IetI+W-E06K=6Z z`?N=6zfUc8$8$4uuvBU+g+(85gnR1X61g-?w7hI#*fvwc7}@~Z+Q%3wo9t-$#;j5n^0zlSeR@9Q z{b6D_q|2AvF0rzVF8fgLQBnL>PFD~Mim`eXLHE2-{6kWA%ygnRDudX+znbh`QPjJW z3RzRVFTNc56|!r=N~g$>xRGt}_I)(;-{xeOW2`b8xI1G7k_mjztP@G$Xo(SgIF+~5 z$#rmw@A7W&!{%k<7^DDc7S3s2eN0mr4t|X7&8F6qsgfe*RD)MZS=;u(RJf@y=Q9(d z4RVQ-FzNe%)5TJB-UIhLvP{Rd9CCjKwZ#(pFm7R#5~-<5;~f4cweF6EZut*9zD|X8 z8k|UVX?>ZI=EBW8oKA15b3z1bHz?F!JEYGY;$AzsgzwtA{YTnw zZ)_pEE$cLP{1F$-`@^l*zFuefkB|#E?^_ZfUk5W=^Z5C8QrI5;98+WPZ~#VhxgXusc+kk;`ze|=uZH=ae^(;lej|?DorF9sif4Cz@F`b_if3#O4Vu3 zI8+c40;`d`d$S#7azU5dMHKJG))iI9C6WO$ZiqOs*@gqC$3~ZwLXiK{mV`IWGi|4P zEbtt>Ay?up`h%ouS#RiMpc609{DxYZDeDr* zZep>m3}Qh{xVf@l5~Crhu>Y+@S2oaqi~gH3@Z* zv|5VAHe|3pdTsdpW=O_4A`eHg^Nb@F88=K2LT;Mic_}h!5EIzap_6MC;V_Cn#9T>@ zHHPau1dV*QPM=ut{?)2MY}nF2b# z5*HeKLtoQ?PGLIaf=t7V&(-~4BVMi~dnq+gqNO>n0GEm%NjpzSh;y5{g_N(lbXRpr`;R}6vbl)6wXZ7l=|ENs-ouX~?7 z$WgL&r)#nq&0;v?dc~0Q>C)lKQQz7|w3`U1oMo)rpw>oyd##GipH@!{ zO3JiX^Koa2{zy02>@}|o=z~B5U%tR>-w3Db@j?Uwz*RBfis9O#Q@NgDd zGp@;DBeo{Y_jCM$dVsl_cGTrRQTA3=B2yt3B-xV)3l_z3D!9f%im6gKyF%G#xa>&Z zyGyw0bA~4rf1U5OTu$enq!xyZ$LGAR&$=~Zc)NN7_q_B#xXm=<<~*@k}ptKuz$KBmyex-tu0S4N(8NRA`D1vn2!bw*78!}U z<7yKM8y|xeS)lP zvollPrTRVv9xDh}<_pd!@0SD@wAEh%R18*$AQGvMDcrPcix&n*3Feg9AP^@B+NQ?# zOp8kvE)ptbNWKIIjClk{l1B(@M2d0%p*jo0v6!<0+@J&rkBz1;jev`?B*_wpk=E5( z^Do+EC@gZ1nG6{!Ozbxj9-?{}F+-ysQc~p*RhVA6nFRaQUt9D^N-&_Z#K7zUjMyWz zITU0Vte^pjh^%)DboL%Rvv8`t^0XB}Trz$##Iaf2wqhae!l`1&JrycuS!hx;SyDXH zhWxl-y3!g|(zR=?M?{b4cW$*(<;AR_A4PJzIb$?NDkx)H<>WJ+`e(5OI?2gC8& z@|>q9w-`wX@<VTRs(ui$vGcreG_*{w~@#D@8CLj%JZ ze;@<(+4;1a+!3obwJvd?hFqAZYBcTQ+Ku0V>7*=7z-#8zX0S#ZdlUmM*a)nXF0wQ? zzPGb#BV|_}T7Rd+7HyH-k4ghW!-k@et=Ue&)AuzCXTz&92p32DWpH2;Tn!2wc653W z+mr`^NO%B%)$Qvsmle@TJWm!!D~w?%vo@S@VQVFb77GWG^wm_UE>?(g8@1`LkS!9p zC4@Le4WcW*{;opnvC+glJr;jmh4nLYQkG|ll6Wr>IUR`o;m%TA77q=J`_7Ws#rniY z0=RkI?(J~G4MXy}gWw*oe5`DlraB+~^0hPEY>k-je{`tqXBOkKR}Q4A61i&h6~AWZ zb6e7y^cRSShPt60Nd2X!6F(3He!L$6Ph>lmG0r^EWznBdEY73Z#kkI;v%zRLS_aPT z!9+#kE$$eg00P@mw{?L11f-6!beM5jk9%1ydHz6$gA!hL4jNWeC0w;=|+jp z>dvrKQLkVBv=Bk#X}5fN90|8q2({LP6~xe z-he;s-GzFJSf4C-#`K7MG#q#N;uZPojq1}z^+n3_Vhw8fQ&Sr<9fr!VoS>`}Xtv?I z{ZDh7eK^YS6JwL(%_rN6y6hn2#Nz4l|GZPz;Z$=?t89Ab!K$uN>@C;qRgu`V$6w^# zj*#wne9r>&JsQv7%lJ2%)EoLS+LC!OkI~UF-smEe`*Qi8+OG=GRM6;K219Q9*T1Ox ztTT27-NM3SDWIZM`M*L8z}Q=FbHh_6Mez?MdpjD+hjetD@O09>^2(jV@4ZID5$;oO zFb2pHooA}Z(2iw0=03{HqY|L?EWdTNcqmM)=8&~eP|pJjpQsHFg<2CHq`*Kqdhw;I zTvx?sItO|1v|znaM0UmAgU(6o>*9gKKZ=jrA=S)xCn6vd*PT}|m@Ya8I_~D*+6jjU zy$VVm&ho7KpvS?KRW-N6q&Fs8ZD;zL&lNyq$4?0#!hoURcw21jFF&JG97dknWWV$I zCw;dgA*M+urUc3eVzfcxx3wHm_Pr=dLm2oAk|o_nl8zHR6nkfp+WX^JDP=v z3pJh=wH*ZVJT%c=J0GV=OmS~VqEEg)LHtxP#~7P zKr9JRA+ zxrYs0-8O2zNy;RWNrF1I5puIPTL#eTGIL)1NL*p@p38hy(-qyOOCRB5yfLEk-cjPe z4hM`8JZ>ts7l4l0=(bq!*`fWR0b=PE&#-%0NBl;@V z@zS@!XD_CZTM#8>ikvP+CSmXqHpBkU69UM+3rUNcir_#xz8RLhLi=g{M$4Z}A968% z{ws3f&dh=8y*bR6EAa_^mXXqN*Pwv{uJz0{+0HSUE$pguBbX2a@I1SyRXRo!moA;X zD?#|(?bGeQH#33RpUK~xy8FgG`UKzl#~o8rLPCBRbn^LZZw%cb*j=azHzhUxVWmK4 zdj2>jl5OzB1{7QMI7rt6(f|Gsy>_U151%Z>(GEC$aktFVfLLTmi)I}x)fh+yAvIOJ zmT(2c;4&w{-J7ve_;3NUQrRG5;2bDFIX_mJ>$z5@TdD+PhFy>J$o|}Ml`$-HXQ-t3 z8RpN%?;JqgEImJ)C~DksA?^EQV7WnK>5mpTT$|^$pUZ{n!~}q;T%%wfMb+Ammwhvb zqMAvhNv}?c^PdksFT1gWdKwhTRq#AX4|f|_nn%m5l;7&}{ap{R=k>?8OAUpHnw58T zUM;~7*z;ulx+tqlOO5}Qa-PKt|EbY5!ys?YEBlu0|6DyAzgQW6`6LX?NCWa$$KCC+ z`Ekdpb8>lknY$L@c0$ICt|kgj-(QUS7~)WtoF5{WPE>&-J;DlKe}wV0Kj65qm8N&F zFL~7_u9e%Obn}R~?bQY!RY8BR#Ek1x0XDkBDN!r*?sluk=bv+^T8-9o3`URox7%e+ zFW9 z++{|vcp6=;%eSYwvZ6ux{|2u!vvC;M0+~cVK5yibubS;OTU+La+-~pIev<9ZC%mHt z|Dut<%}QTevPzwMTIZqo_>mNk6+ucjON7H~`<~W}kN-kjn!VqDI(Kbo+tu>$8M59! zF|HqjU*>7EHkaE_VJ%0vsatNcqylKJQfT`ts(YuaZ9opQr9asmg1p4w#DbA|lZc6aK!k ztYfATdeIKn?l4wi8`2LNsGga3(wzKPpV_%^)Gpf_S?95qyT*JB_j(*KJM5r6hX-G* zCM4wca$jIhi*(PhM~TjSw+gduq{!}L+;C1#(@4Oaxj~X8{LE|mTFmoMo~YNSccP{I zu)80-9uA;EdhjnhnOvDz;4<7b|8jBzD5u-eca+E6DYAPwxYlP}fYiA^V z@rqQmaZqInbgGm(IXn&)q-AFsbGy3(`i5doWTeMTrT@;^Oy*_qUBTB+xkF!%4F5%H z{(H@ABC0Bd&zL3368z^iaT#!+nXY$dm$B7M+!`B|IT%IOay=hOG1+-HqC6Y3el6y| znM{U<~Q=Mjk&(LTWaeJCNIdpQb9IJkr z0LD%R%nF@}3i?*2`TqHAb!6j^ESczKsWI${!%M<(UZZ^;PNg@&CSyb~j&dlm%Ru zslVP=L8+w`M{ryXX0LU+)J6V%FeL4|32wDGhiWj_r)lBS-7w!CzG}#dK+olBUBYO=imukyPH%+TtO|KTuWp5?l*RGGeDFq~)1SDq?sm&GBqLgu}bzD3?HBEU| zJi0SL! zSp!UN&$P#>v>LJSl+FCkPOM1G0yZkxy7wYa3cakM>W~tAmS^Sqk8ho=xGL_;y)oYH7fK#zvl?qr4&^>G-jCdy*Z)8+9IQ4h zli3dwFP{d8RGZ-8e`<9Kd2GiEtRaIGzLAQilK81A#+U%u?T?*OT8&?m>z0b(Je}-% zvf<05lp`9nA*xc!zgpya=B8c+dHH}rzOJe63NCUTm_TA`xPjq7^S2SRZVDa@FWuUh z+@|gvk``l?YR#YT1{+qgnT(#k-p=HC>JEM&}lv~M)Of{}^ttL}CsrJPJV#bmwYDsW6;pi9ONRlUD$) z&19DSvHVA{<$34YgJb$US(2uf7FCGLIPFqH+hH*+Zv~WE9%>;yK!n>1nu{4HiNHa_ zRLoKa2f4_Dw3-NP4r9>{iuD!E=_(EhlJI(I^(N@Rp6=6(jY=xjN%I|rB)V#5)cNN6 z!h(+c=qu+mGM2F+$w`p%sL#k&WQQXbwwA|16DcX&5>b^Vlj5ISAeOU|n6Jk4(BGbA zGRofwBo&Cty0E^eyBS&;$xDQ+bawI~Wg|+|dHPPqaoV7K0D-a*#W<8DsF08DI>eTe zQthABvL9lwCe4s7=3W_qDQgcf-`l0*Bb>D(^(1>(N}}6PlbDbo4O&t|O>OmtB-{Oa z&TUQ!zF3eH&M$%4Lvx;3S}kV)C@}1E!;8r&RQf8|$UD}u;bptvppq9k)}r>xqkMpo z$_|Z@i|G#jiEI+V9&`B~D;;SSfk_C$y@n}pq3n7#xob2pjC@UG*rW5ff742L!xtmUsnntqT&bwgYv79y3m*-I#A5xgDW8wW~o8VC?`76`y3 zrTakLSe?XKn<_D95tP&$MXhc=Nm9}`uL6%!&S)S2m%FbESxF;F6M{182_dyvx8Q94 zudb>e6IUhTpd{-(l!nxe+GSOVUkY1SJI9l-COG9R4*VwIjI)r2mDn$Kj)|OcAcWu~ z3S9sMXEBXxu|L~6hQ+1!%|b~?X?)YIUXGp7&S5la03kRdzTX6#F&2=Z9NJ@@V`6Ux zKqxqiLJxp;cfwlib*UrvdCp=W7>z?p+Uo4sn~j}I-RfEZ2+oM_H3Vmz`Xnev-H(dg z*>)ag7&riM&SDZ)LVKcXO07#mFd#UI0}@Aq6Bf5(zes~I(5226Krj~jZbJylX+VNf z*t*vBs9+ud$TjKl$n1HlQ6o5U}&sMzHdjBFq{ zqp^PzUlLYAXR@146#&2uItk8MM1yMNbzv7eW9+eAt)z)?9BzuOK(gkzXdqwoUphNG%o*yHPa=8-uN4kQeoycKqv!2ISXi5ZO**l zm44XmYn)0Hc1lVT2*G*G;+9uGSG)50&Nu)T&MMX_)f|Ela85XNV|Ti8?dvS;a?Eq6 zo7wdc$>0WQDvhbV!ObA}o8b%9L}7=76F_jzBN{i|%E{Wb&vp8Vi8rREH!9`;1dwyW zi5ofN<*Q%e@qAZyK1v$dwKrBreG-&w*D82`7H+ z&sIjiNxbXb`0_+jj3n-^1kkPky4_tOHz_RaL!{E zH{IH)>XpCk>6vX7ifRr}Us{xeSbc+2_ zb?nIn$+~giCJNgnSqGvWCsnhHuQn&X(lsULijmui^?aL7EVjee)$-*pcDBY7%tdOy zo>~T=1a4gV#p>v{iF>UJUqZ~D8~6$qlBj0Sz3j|>r<+crX3s9HX4>7h8EFO03)L%M z65Q*Ebg5utiI!XpZxrhEVsEB$?dzSrdjSB9NoH;nl9XHcHfQ#FrDwZWH`{StL@aLk z^>gKmpXun<@qctx#m?oxEhB7j>POB*W9r$)=oc2gdU4k&pGHaw2u6Z=XZ~>c(&q%N zEg0s`AK=h{NMdo*ubnGj`EQ+eyBq543!zt+u*s+wI^*?;@3*>91ONz9b8D9*YzaR|$gpfvcuXd(<`OCyv7^x98&%|MXWR(#&w6E93zT?b%Yrz;E z&%5<&l9CiWj=j0o+>4b1WL3^54Y(Qw~j5uw{&7?yZBP&!e0VF7UElc3ChWv_?{|X{?e`9P_N(VjZ-9wkgVOnckD^G`%(Y^ zuxQR}j7y5ec^rE)&6$1G%YStnzT7DthByfTAYsL;o}9n<1r}UiNT=FSN(GV>Mr^-% zxpMuR{`|8GUp4#*zcq_+qK$8J`i0un&))X!6gl%J5w-x}Bq+P(U5* z#xX=PjaxzEV&&@Bg6jT-baJl-ZdsB|!Gg${tWQ4E82$T&+L+^%Pa~WJf|6j~nLjdr z;co=3{DdEX@W-Vq-;q0VNAAc!ACX?KN_R)@$Q`*O|6B##*@8QANAAd-tLl#2kvnon z?p#%O #include #include +#include #include #include +#include #include #include #include #include +#include #include #include #include @@ -45,13 +51,8 @@ #include #endif -#if defined(_WIN32) -#include -#else -#include -#endif - static const QString blank(" "); +static constexpr int MAXRECENT = 5; // duplicate string static char *mystrdup(const std::string &text) @@ -61,109 +62,60 @@ static char *mystrdup(const std::string &text) return tmp; } +// find if executable is in path +// https://stackoverflow.com/a/51041497 + +static bool has_exe(const QString &exe) +{ + QProcess findProcess; + QStringList arguments; + arguments << exe; +#if defined(_WIN32) + findProcess.start("where", arguments); +#else + findProcess.start("which", arguments); +#endif + findProcess.setReadChannel(QProcess::ProcessChannel::StandardOutput); + + if (!findProcess.waitForFinished()) return false; // Not found or which does not work + + QString retStr(findProcess.readAll()); + retStr = retStr.trimmed(); + + QFile file(retStr); + QFileInfo check_file(file); + if (check_file.exists() && check_file.isFile()) + return true; // Found! + else + return false; // Not found! +} + LammpsGui::LammpsGui(QWidget *parent, const char *filename) : QMainWindow(parent), ui(new Ui::LammpsGui), highlighter(nullptr), capturer(nullptr), - status(nullptr), logwindow(nullptr), imagewindow(nullptr), logupdater(nullptr), - dirstatus(nullptr), progress(nullptr), prefdialog(nullptr) + status(nullptr), logwindow(nullptr), imagewindow(nullptr), chartwindow(nullptr), + logupdater(nullptr), dirstatus(nullptr), progress(nullptr), prefdialog(nullptr), + lammpsstatus(nullptr) { + // enforce using the plain ASCII C locale within the GUI. + QLocale::setDefault(QLocale("C")); + + // register QList + qRegisterMetaTypeStreamOperators>("QList"); + ui->setupUi(this); this->setCentralWidget(ui->textEdit); highlighter = new Highlighter(ui->textEdit->document()); capturer = new StdCapture; current_file.clear(); current_dir = QDir(".").absolutePath(); - recent_files.clear(); QCoreApplication::setOrganizationName("The LAMMPS Developers"); QCoreApplication::setOrganizationDomain("lammps.org"); QCoreApplication::setApplicationName("LAMMPS GUI"); - // restorge and initialize settings + // restore and initialize settings QSettings settings; - // check and initialize nthreads setting. Default is to use max, - // but not override OMP_NUM_THREADS and preferences setting. -#if defined(_OPENMP) - // use maximum number of available threads unless OMP_NUM_THREADS was set - int nthreads = settings.value("nthreads", omp_get_max_threads()).toInt(); -#if _WIN32 - if (!getenv("OMP_NUM_THREADS")) { - _putenv_s("OMP_NUM_THREADS", std::to_string(nthreads).c_str()); - } -#else - setenv("OMP_NUM_THREADS", std::to_string(nthreads).c_str(), 0); -#endif -#else - int nthreads = settings.value("nthreads", 1).toInt(); -#endif - settings.setValue("nthreads", QString::number(nthreads)); - - const char *tmpdir = getenv("TMPDIR"); - if (!tmpdir) tmpdir = getenv("TMP"); - if (!tmpdir) tmpdir = getenv("TEMPDIR"); - if (!tmpdir) tmpdir = getenv("TEMP"); -#if _WIN32 - if (!tmpdir) tmpdir = "C:\\Windows\\Temp"; -#else - if (!tmpdir) tmpdir = "/tmp"; -#endif - settings.setValue("tempdir", QString(tmpdir)); - - lammps_args.clear(); - lammps_args.push_back(mystrdup("LAMMPS-GUI")); - lammps_args.push_back(mystrdup("-log")); - lammps_args.push_back(mystrdup("none")); - - setWindowIcon(QIcon(":/lammps-icon-128x128.png")); -#if (__APPLE__) - QFont text_font("Menlo"); -#else - QFont text_font(":/Monospace.ttf"); -#endif - text_font.setStyleHint(QFont::TypeWriter); - ui->textEdit->document()->setDefaultFont(text_font); - ui->textEdit->setMinimumSize(600, 400); - - connect(ui->actionNew, &QAction::triggered, this, &LammpsGui::new_document); - connect(ui->actionOpen, &QAction::triggered, this, &LammpsGui::open); - connect(ui->actionSave, &QAction::triggered, this, &LammpsGui::save); - connect(ui->actionSave_As, &QAction::triggered, this, &LammpsGui::save_as); - connect(ui->actionQuit, &QAction::triggered, this, &LammpsGui::quit); - connect(ui->actionCopy, &QAction::triggered, this, &LammpsGui::copy); - connect(ui->actionCut, &QAction::triggered, this, &LammpsGui::cut); - connect(ui->actionPaste, &QAction::triggered, this, &LammpsGui::paste); - connect(ui->actionUndo, &QAction::triggered, this, &LammpsGui::undo); - connect(ui->actionRedo, &QAction::triggered, this, &LammpsGui::redo); - connect(ui->actionRun_Buffer, &QAction::triggered, this, &LammpsGui::run_buffer); - connect(ui->actionStop_LAMMPS, &QAction::triggered, this, &LammpsGui::stop_run); - connect(ui->actionImage, &QAction::triggered, this, &LammpsGui::view_image); - connect(ui->actionAbout_LAMMPS_GUI, &QAction::triggered, this, &LammpsGui::about); - connect(ui->action_Help, &QAction::triggered, this, &LammpsGui::help); - connect(ui->actionLAMMPS_Manual, &QAction::triggered, this, &LammpsGui::manual); - connect(ui->actionPreferences, &QAction::triggered, this, &LammpsGui::preferences); - connect(ui->actionDefaults, &QAction::triggered, this, &LammpsGui::defaults); - connect(ui->textEdit->document(), &QTextDocument::modificationChanged, this, - &LammpsGui::modified); - -#if !QT_CONFIG(clipboard) - ui->actionCut->setEnabled(false); - ui->actionCopy->setEnabled(false); - ui->actionPaste->setEnabled(false); -#endif - - status = new QLabel("Ready."); - status->setFixedWidth(300); - ui->statusbar->addWidget(status); - dirstatus = new QLabel(QString(" Directory: ") + current_dir); - dirstatus->setMinimumWidth(500); - ui->statusbar->addWidget(dirstatus); - progress = new QProgressBar(); - progress->setRange(0, 1000); - progress->setMinimumWidth(500); - progress->hide(); - dirstatus->show(); - ui->statusbar->addWidget(progress); - #if defined(LAMMPS_GUI_USE_PLUGIN) plugin_path.clear(); std::string deffile = settings.value("plugin_path", "liblammps.so").toString().toStdString(); @@ -181,16 +133,134 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : // none of the plugin paths could load, remove key settings.remove("plugin_path"); QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file"); - // QCoreApplication::quit(); exit(1); } #endif + // switch configured accelerator back to "none" if needed. + int accel = settings.value("accelerator", AcceleratorTab::None).toInt(); + if (accel == AcceleratorTab::Opt) { + if (!lammps.config_has_package("OPT")) + settings.setValue("accelerator", AcceleratorTab::None); + } else if (accel == AcceleratorTab::OpenMP) { + if (!lammps.config_has_package("OPENMP")) + settings.setValue("accelerator", AcceleratorTab::None); + } else if (accel == AcceleratorTab::Intel) { + if (!lammps.config_has_package("INTEL")) + settings.setValue("accelerator", AcceleratorTab::None); + } else if (accel == AcceleratorTab::Gpu) { + if (!lammps.config_has_package("GPU") || !lammps.has_gpu_device()) + settings.setValue("accelerator", AcceleratorTab::None); + } else if (accel == AcceleratorTab::Kokkos) { + if (!lammps.config_has_package("KOKKOS")) + settings.setValue("accelerator", AcceleratorTab::None); + } + + // check and initialize nthreads setting. Default is to use max if there + // is no preference but do not override OMP_NUM_THREADS +#if defined(_OPENMP) + // use maximum number of available threads unless OMP_NUM_THREADS was set + int nthreads = settings.value("nthreads", omp_get_max_threads()).toInt(); + if (!qEnvironmentVariableIsSet("OMP_NUM_THREADS")) { + qputenv("OMP_NUM_THREADS", std::to_string(nthreads).c_str()); + } +#else + int nthreads = settings.value("nthreads", 1).toInt(); +#endif + settings.setValue("nthreads", QString::number(nthreads)); + + lammps_args.clear(); + lammps_args.push_back(mystrdup("LAMMPS-GUI")); + lammps_args.push_back(mystrdup("-log")); + lammps_args.push_back(mystrdup("none")); + + setWindowIcon(QIcon(":/lammps-icon-128x128.png")); + + QFont all_font("Arial", -1); + all_font.setStyleHint(QFont::SansSerif, QFont::PreferOutline); + all_font.fromString(settings.value("allfont", all_font.toString()).toString()); + settings.setValue("allfont", all_font.toString()); + QApplication::setFont(all_font); + + QFont text_font("Monospace", -1); + text_font.setStyleHint(QFont::Monospace, QFont::PreferOutline); + text_font.fromString(settings.value("textfont", text_font.toString()).toString()); + settings.setValue("textfont", text_font.toString()); + ui->textEdit->document()->setDefaultFont(text_font); + ui->textEdit->setMinimumSize(600, 400); + + update_recents(); + + // check if we have OVITO and VMD installed and deacivate actions if not + ui->actionView_in_OVITO->setEnabled(has_exe("ovito")); + ui->actionView_in_OVITO->setData("ovito"); + ui->actionView_in_VMD->setEnabled(has_exe("vmd")); + ui->actionView_in_VMD->setData("vmd"); + + connect(ui->actionNew, &QAction::triggered, this, &LammpsGui::new_document); + connect(ui->actionOpen, &QAction::triggered, this, &LammpsGui::open); + connect(ui->actionSave, &QAction::triggered, this, &LammpsGui::save); + connect(ui->actionSave_As, &QAction::triggered, this, &LammpsGui::save_as); + connect(ui->actionQuit, &QAction::triggered, this, &LammpsGui::quit); + connect(ui->actionCopy, &QAction::triggered, this, &LammpsGui::copy); + connect(ui->actionCut, &QAction::triggered, this, &LammpsGui::cut); + connect(ui->actionPaste, &QAction::triggered, this, &LammpsGui::paste); + connect(ui->actionUndo, &QAction::triggered, this, &LammpsGui::undo); + connect(ui->actionRedo, &QAction::triggered, this, &LammpsGui::redo); + connect(ui->actionRun_Buffer, &QAction::triggered, this, &LammpsGui::run_buffer); + connect(ui->actionStop_LAMMPS, &QAction::triggered, this, &LammpsGui::stop_run); + connect(ui->actionSet_Variables, &QAction::triggered, this, &LammpsGui::edit_variables); + connect(ui->actionImage, &QAction::triggered, this, &LammpsGui::render_image); + connect(ui->actionAbout_LAMMPS_GUI, &QAction::triggered, this, &LammpsGui::about); + connect(ui->action_Help, &QAction::triggered, this, &LammpsGui::help); + connect(ui->actionLAMMPS_GUI_Howto, &QAction::triggered, this, &LammpsGui::howto); + connect(ui->actionLAMMPS_Manual, &QAction::triggered, this, &LammpsGui::manual); + connect(ui->actionPreferences, &QAction::triggered, this, &LammpsGui::preferences); + connect(ui->actionDefaults, &QAction::triggered, this, &LammpsGui::defaults); + connect(ui->actionView_in_OVITO, &QAction::triggered, this, &LammpsGui::start_exe); + connect(ui->actionView_in_VMD, &QAction::triggered, this, &LammpsGui::start_exe); + connect(ui->actionView_Log_Window, &QAction::triggered, this, &LammpsGui::view_log); + connect(ui->actionView_Graph_Window, &QAction::triggered, this, &LammpsGui::view_chart); + connect(ui->actionView_Image_Window, &QAction::triggered, this, &LammpsGui::view_image); + connect(ui->action_1, &QAction::triggered, this, &LammpsGui::open_recent); + connect(ui->action_2, &QAction::triggered, this, &LammpsGui::open_recent); + connect(ui->action_3, &QAction::triggered, this, &LammpsGui::open_recent); + connect(ui->action_4, &QAction::triggered, this, &LammpsGui::open_recent); + connect(ui->action_5, &QAction::triggered, this, &LammpsGui::open_recent); + + connect(ui->textEdit->document(), &QTextDocument::modificationChanged, this, + &LammpsGui::modified); + +#if !QT_CONFIG(clipboard) + ui->actionCut->setEnabled(false); + ui->actionCopy->setEnabled(false); + ui->actionPaste->setEnabled(false); +#endif + + lammpsstatus = new QLabel(QString()); + auto pix = QPixmap(":/lammps-icon-128x128.png"); + lammpsstatus->setPixmap(pix.scaled(22, 22, Qt::KeepAspectRatio)); + ui->statusbar->addWidget(lammpsstatus); + lammpsstatus->hide(); + status = new QLabel("Ready."); + status->setFixedWidth(300); + ui->statusbar->addWidget(status); + dirstatus = new QLabel(QString(" Directory: ") + current_dir); + dirstatus->setMinimumWidth(400); + ui->statusbar->addWidget(dirstatus); + progress = new QProgressBar(); + progress->setRange(0, 1000); + progress->setMinimumWidth(400); + progress->hide(); + dirstatus->show(); + ui->statusbar->addWidget(progress); + if (filename) { open_file(filename); } else { setWindowTitle(QString("LAMMPS-GUI - *unknown*")); } + resize(settings.value("mainx", "500").toInt(), settings.value("mainy", "320").toInt()); } LammpsGui::~LammpsGui() @@ -201,6 +271,7 @@ LammpsGui::~LammpsGui() delete status; delete logwindow; delete imagewindow; + delete chartwindow; delete dirstatus; } @@ -210,6 +281,7 @@ void LammpsGui::new_document() ui->textEdit->document()->setPlainText(QString()); lammps.close(); + lammpsstatus->hide(); setWindowTitle(QString("LAMMPS-GUI - *unknown*")); } @@ -219,6 +291,171 @@ void LammpsGui::open() open_file(fileName); } +void LammpsGui::open_recent() +{ + QAction *act = qobject_cast(sender()); + if (act) open_file(act->data().toString()); +} + +void LammpsGui::start_exe() +{ + if (!lammps.extract_setting("box_exists")) return; + QAction *act = qobject_cast(sender()); + if (act) { + auto exe = act->data().toString(); + QString datacmd = "write_data "; + QDir datadir(QDir::tempPath()); + QFile datafile(datadir.absoluteFilePath(current_file + ".data")); + datacmd += datafile.fileName(); + if (exe == "vmd") { + QStringList args; + QFile vmdfile(datadir.absoluteFilePath(current_file + ".vmd")); + vmdfile.open(QIODevice::WriteOnly); + vmdfile.write("package require topotools\n"); + vmdfile.write("topo readlammpsdata "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write("\ntopo guessatom lammps data\n"); + vmdfile.write("animate write psf "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".psf\nanimate write dcd "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".dcd\nmol delete top\nmol new "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".psf type psf waitfor all\nmol addfile "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".dcd type dcd waitfor all\nfile delete "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(" "); + vmdfile.write(vmdfile.fileName().toLocal8Bit()); + vmdfile.write(" "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".dcd "); + vmdfile.write(datafile.fileName().toLocal8Bit()); + vmdfile.write(".psf\n"); + vmdfile.close(); + args << "-e" << vmdfile.fileName(); + lammps.command(datacmd.toLocal8Bit()); + auto *vmd = new QProcess(this); + vmd->start(exe, args); + } + if (exe == "ovito") { + QStringList args; + args << datafile.fileName(); + lammps.command(datacmd.toLocal8Bit()); + auto *ovito = new QProcess(this); + ovito->start(exe, args); + } + } +} + +void LammpsGui::update_recents(const QString &filename) +{ + QSettings settings; + recent = settings.value("recent").value>(); + + for (int i = 0; i < recent.size(); ++i) { + QFileInfo fi(recent[i]); + if (!fi.isReadable()) { + recent.removeAt(i); + i = 0; + } + } + + if (!filename.isEmpty() && !recent.contains(filename)) recent.prepend(filename); + if (recent.size() > 5) recent.removeLast(); + settings.setValue("recent", QVariant::fromValue(recent)); + + ui->action_1->setVisible(false); + if ((recent.size() > 0) && !recent[0].isEmpty()) { + QFileInfo fi(recent[0]); + ui->action_1->setText(QString("&1. ") + fi.fileName()); + ui->action_1->setData(recent[0]); + ui->action_1->setVisible(true); + } + ui->action_2->setVisible(false); + if ((recent.size() > 1) && !recent[1].isEmpty()) { + QFileInfo fi(recent[1]); + ui->action_2->setText(QString("&2. ") + fi.fileName()); + ui->action_2->setData(recent[1]); + ui->action_2->setVisible(true); + } + ui->action_3->setVisible(false); + if ((recent.size() > 2) && !recent[2].isEmpty()) { + QFileInfo fi(recent[2]); + ui->action_3->setText(QString("&3. ") + fi.fileName()); + ui->action_3->setData(recent[2]); + ui->action_3->setVisible(true); + } + ui->action_4->setVisible(false); + if ((recent.size() > 3) && !recent[3].isEmpty()) { + QFileInfo fi(recent[3]); + ui->action_4->setText(QString("&4. ") + fi.fileName()); + ui->action_4->setData(recent[3]); + ui->action_4->setVisible(true); + } + ui->action_5->setVisible(false); + if ((recent.size() > 4) && !recent[4].isEmpty()) { + QFileInfo fi(recent[4]); + ui->action_5->setText(QString("&5. ") + fi.fileName()); + ui->action_5->setData(recent[4]); + ui->action_5->setVisible(true); + } +} + +void LammpsGui::update_variables() +{ + const auto doc = ui->textEdit->toPlainText().split('\n'); + QStringList known; + QRegularExpression indexvar("^\\s*variable\\s+(\\w+)\\s+index\\s+(.*)"); + QRegularExpression anyvar("^\\s*variable\\s+(\\w+)\\s+(\\w+)\\s+(.*)"); + QRegularExpression usevar("(\\$(\\w)|\\${(\\w+)})"); + QRegularExpression refvar("v_(\\w+)"); + + // forget previously listed variables + variables.clear(); + + for (const auto &line : doc) { + + // first find variable definitions. + // index variables are special since they can be overridden from the command line + auto index = indexvar.match(line); + auto any = anyvar.match(line); + + if (index.hasMatch()) { + if (index.lastCapturedIndex() >= 2) { + auto name = index.captured(1); + if (!known.contains(name)) { + variables.append(qMakePair(name, index.captured(2))); + known.append(name); + } + } + } else if (any.hasMatch()) { + if (any.lastCapturedIndex() >= 3) { + auto name = any.captured(1); + if (!known.contains(name)) known.append(name); + } + } + + // now split line into words and search for use of undefined variables + auto words = line.split(' '); + for (const auto &word : words) { + auto use = usevar.match(word); + auto ref = refvar.match(word); + if (use.hasMatch()) { + auto name = use.captured(use.lastCapturedIndex()); + if (!known.contains(name)) { + known.append(name); + variables.append(qMakePair(name, QString())); + } + } + if (ref.hasMatch()) { + auto name = ref.captured(use.lastCapturedIndex()); + if (!known.contains(name)) known.append(name); + } + } + } +} + // open file and switch CWD to path of file void LammpsGui::open_file(const QString &fileName) { @@ -250,6 +487,8 @@ void LammpsGui::open_file(const QString &fileName) current_dir = path.absolutePath(); QFile file(path.absoluteFilePath()); + update_recents(path.absoluteFilePath()); + QDir::setCurrent(current_dir); if (!file.open(QIODevice::ReadOnly | QFile::Text)) { QMessageBox::warning(this, "Warning", @@ -265,20 +504,25 @@ void LammpsGui::open_file(const QString &fileName) ui->textEdit->document()->setModified(false); file.close(); dirstatus->setText(QString(" Directory: ") + current_dir); + + update_variables(); } void LammpsGui::write_file(const QString &fileName) { - QFile file(fileName); - QFileInfo path(file); + QFileInfo path(fileName); current_file = path.fileName(); current_dir = path.absolutePath(); + QFile file(path.absoluteFilePath()); if (!file.open(QIODevice::WriteOnly | QFile::Text)) { QMessageBox::warning(this, "Warning", "Cannot save file: " + file.errorString()); return; } setWindowTitle(QString("LAMMPS-GUI - " + current_file)); + + update_recents(path.absoluteFilePath()); + QTextStream out(&file); QString text = ui->textEdit->toPlainText(); out << text; @@ -306,6 +550,7 @@ void LammpsGui::save_as() void LammpsGui::quit() { lammps.close(); + lammpsstatus->hide(); lammps.finalize(); if (ui->textEdit->document()->isModified()) { @@ -330,6 +575,14 @@ void LammpsGui::quit() break; } } + + // store some global settings + QSettings settings; + if (!isMaximized()) { + settings.setValue("mainx", width()); + settings.setValue("mainy", height()); + } + settings.sync(); QCoreApplication::quit(); } @@ -374,6 +627,7 @@ void LammpsGui::logupdate() double t_elapsed, t_remain, t_total; int completed = 1000; + // estimate completion percentage if (lammps.is_running()) { t_elapsed = lammps.get_thermo("cpu"); t_remain = lammps.get_thermo("cpuremain"); @@ -390,6 +644,65 @@ void LammpsGui::logupdate() logwindow->textCursor().deleteChar(); } } + + // extract cached thermo data + if (chartwindow) { + // thermo data is not yet valid during setup + void *ptr = lammps.last_thermo("setup", 0); + if (ptr && *(int *)ptr) return; + + ptr = lammps.last_thermo("step", 0); + if (ptr) { + int step = 0; + if (lammps.extract_setting("bigint") == 4) + step = *(int *)ptr; + else + step = (int)*(int64_t *)ptr; + int ncols = *(int *)lammps.last_thermo("num", 0); + + // check if the column assignment has changed + // if yes, delete charts and start over + if (chartwindow->num_charts() > 0) { + int count = 0; + bool do_reset = false; + if (step < chartwindow->get_step()) do_reset = true; + for (int i = 0, idx = 0; i < ncols; ++i) { + QString label = (const char *)lammps.last_thermo("keyword", i); + // no need to store the timestep column + if (label == "Step") continue; + if (!chartwindow->has_title(label, idx)) { + do_reset = true; + } else { + ++count; + } + ++idx; + } + if (chartwindow->num_charts() != count) do_reset = true; + if (do_reset) chartwindow->reset_charts(); + } + + if (chartwindow->num_charts() == 0) { + for (int i = 0; i < ncols; ++i) { + QString label = (const char *)lammps.last_thermo("keyword", i); + // no need to store the timestep column + if (label == "Step") continue; + chartwindow->add_chart(label, i); + } + } + + for (int i = 0; i < ncols; ++i) { + int datatype = *(int *)lammps.last_thermo("type", i); + double data; + if (datatype == 0) // int + data = *(int *)lammps.last_thermo("data", i); + else if (datatype == 2) // double + data = *(double *)lammps.last_thermo("data", i); + else if (datatype == 4) // bigint + data = (double)*(int64_t *)lammps.last_thermo("data", i); + chartwindow->add_data(step, data, i); + } + } + } } void LammpsGui::modified() @@ -404,7 +717,7 @@ void LammpsGui::modified() void LammpsGui::run_done() { - logupdater->stop(); + if (logupdater) logupdater->stop(); delete logupdater; logupdater = nullptr; progress->setValue(1000); @@ -414,6 +727,35 @@ void LammpsGui::run_done() logwindow->insertPlainText(log.c_str()); logwindow->moveCursor(QTextCursor::End); + if (chartwindow) { + void *ptr = lammps.last_thermo("step", 0); + if (ptr) { + int step = 0; + if (lammps.extract_setting("bigint") == 4) + step = *(int *)ptr; + else + step = (int)*(int64_t *)ptr; + int ncols = *(int *)lammps.last_thermo("num", 0); + for (int i = 0; i < ncols; ++i) { + if (chartwindow->num_charts() == 0) { + QString label = (const char *)lammps.last_thermo("keyword", i); + // no need to store the timestep column + if (label == "Step") continue; + chartwindow->add_chart(label, i); + } + int datatype = *(int *)lammps.last_thermo("type", i); + double data; + if (datatype == 0) // int + data = *(int *)lammps.last_thermo("data", i); + else if (datatype == 2) // double + data = *(double *)lammps.last_thermo("data", i); + else if (datatype == 4) // bigint + data = (double)*(int64_t *)lammps.last_thermo("data", i); + chartwindow->add_data(step, data, i); + } + } + } + bool success = true; constexpr int BUFLEN = 1024; char errorbuf[BUFLEN]; @@ -436,12 +778,24 @@ void LammpsGui::run_done() void LammpsGui::run_buffer() { + if (lammps.is_running()) { + QMessageBox::warning(this, "LAMMPS GUI Error", + "Must stop current run before starting a new run"); + return; + } QSettings settings; progress->setValue(0); dirstatus->hide(); progress->show(); int nthreads = settings.value("nthreads", 1).toInt(); - status->setText(QString("Running LAMMPS with %1 thread(s)...").arg(nthreads)); + int accel = settings.value("accelerator", AcceleratorTab::None).toInt(); + if ((accel != AcceleratorTab::OpenMP) && (accel != AcceleratorTab::Intel) && + (accel != AcceleratorTab::Kokkos)) + nthreads = 1; + if (nthreads > 1) + status->setText(QString("Running LAMMPS with %1 thread(s)...").arg(nthreads)); + else + status->setText(QString("Running LAMMPS ...")); status->repaint(); start_lammps(); if (!lammps.is_open()) return; @@ -458,34 +812,51 @@ void LammpsGui::run_buffer() connect(runner, &LammpsRunner::finished, runner, &QObject::deleteLater); runner->start(); - logwindow = new QPlainTextEdit(); + // if configured, delete old log window before opening new one + if (settings.value("logreplace", false).toBool()) delete logwindow; + logwindow = new LogWindow(); logwindow->setReadOnly(true); logwindow->setCenterOnScroll(true); logwindow->moveCursor(QTextCursor::End); logwindow->setWindowTitle("LAMMPS-GUI - Output from running LAMMPS on buffer - " + current_file); logwindow->setWindowIcon(QIcon(":/lammps-icon-128x128.png")); -#if (__APPLE__) - QFont text_font("Menlo"); -#else - QFont text_font(":/Monospace.ttf"); -#endif - text_font.setStyleHint(QFont::TypeWriter); + QFont text_font; + text_font.fromString(settings.value("textfont", text_font.toString()).toString()); logwindow->document()->setDefaultFont(text_font); - logwindow->setLineWrapMode(QPlainTextEdit::NoWrap); - logwindow->setMinimumSize(600, 400); + logwindow->setLineWrapMode(LogWindow::NoWrap); + logwindow->setMinimumSize(400, 300); QShortcut *shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), logwindow); - QObject::connect(shortcut, &QShortcut::activated, logwindow, &QPlainTextEdit::close); + QObject::connect(shortcut, &QShortcut::activated, logwindow, &LogWindow::close); shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), logwindow); QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); - logwindow->show(); + if (settings.value("viewlog", true).toBool()) + logwindow->show(); + else + logwindow->hide(); + + // if configured, delete old log window before opening new one + if (settings.value("chartreplace", false).toBool()) delete chartwindow; + chartwindow = new ChartWindow(current_file); + chartwindow->setWindowTitle("LAMMPS-GUI - Thermo charts from running LAMMPS on buffer - " + + current_file); + chartwindow->setWindowIcon(QIcon(":/lammps-icon-128x128.png")); + chartwindow->setMinimumSize(400, 300); + shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), chartwindow); + QObject::connect(shortcut, &QShortcut::activated, chartwindow, &ChartWindow::close); + shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), chartwindow); + QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); + if (settings.value("viewchart", true).toBool()) + chartwindow->show(); + else + chartwindow->hide(); logupdater = new QTimer(this); connect(logupdater, &QTimer::timeout, this, &LammpsGui::logupdate); - logupdater->start(1000); + logupdater->start(250); } -void LammpsGui::view_image() +void LammpsGui::render_image() { // LAMMPS is not re-entrant, so we can only query LAMMPS when it is not running if (!lammps.is_running()) { @@ -495,33 +866,9 @@ void LammpsGui::view_image() "Cannot create snapshot image without a system box"); return; } - - QSettings settings; - QString dumpcmd = "write_dump all image "; - QString dumpfile = settings.value("tempdir").toString(); -#if defined(_WIN32) - dumpfile += '\\'; -#else - dumpfile += '/'; -#endif - dumpfile += current_file + ".ppm"; - dumpcmd += dumpfile; - - settings.beginGroup("snapshot"); - dumpcmd += blank + settings.value("color", "type").toString(); - dumpcmd += blank + settings.value("diameter", "type").toString(); - dumpcmd += QString(" size ") + settings.value("xsize", "800").toString(); - dumpcmd += blank + settings.value("ysize", "600").toString(); - dumpcmd += QString(" zoom ") + settings.value("zoom", "1.0").toString(); - settings.endGroup(); - - lammps.command(dumpcmd.toLocal8Bit()); - imagewindow = new ImageViewer(dumpfile); -#if defined(_WIN32) - _unlink(dumpfile.toLocal8Bit()); -#else - unlink(dumpfile.toLocal8Bit()); -#endif + // if configured, delete old image window before opening new one + if (QSettings().value("imagereplace", false).toBool()) delete imagewindow; + imagewindow = new ImageViewer(current_file, &lammps); } else { QMessageBox::warning(this, "ImageViewer Error", "Cannot create snapshot image while LAMMPS is running"); @@ -535,17 +882,56 @@ void LammpsGui::clear() ui->textEdit->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor); } +void LammpsGui::view_chart() +{ + QSettings settings; + if (chartwindow) { + if (chartwindow->isVisible()) { + chartwindow->hide(); + settings.setValue("viewchart", false); + } else { + chartwindow->show(); + settings.setValue("viewchart", true); + } + } +} + +void LammpsGui::view_log() +{ + QSettings settings; + if (logwindow) { + if (logwindow->isVisible()) { + logwindow->hide(); + settings.setValue("viewlog", false); + } else { + logwindow->show(); + settings.setValue("viewlog", true); + } + } +} + +void LammpsGui::view_image() +{ + if (imagewindow) { + if (imagewindow->isVisible()) { + imagewindow->hide(); + } else { + imagewindow->show(); + } + } +} + void LammpsGui::about() { std::string version = "This is LAMMPS-GUI version " LAMMPS_GUI_VERSION; if (lammps.has_plugin()) { - version += " - LAMMPS linked dynamically"; + version += " - LAMMPS library loaded as plugin"; if (!plugin_path.empty()) { version += " from file "; version += plugin_path; } } else { - version += " - LAMMPS linked statically"; + version += " - LAMMPS library linked to executable"; } std::string info = "LAMMPS is currently running. LAMMPS config info not available."; @@ -566,13 +952,15 @@ void LammpsGui::about() msg.setText(version.c_str()); msg.setInformativeText(info.c_str()); msg.setIconPixmap(QPixmap(":/lammps-icon-128x128.png").scaled(64, 64)); - msg.setStandardButtons(QMessageBox::Ok); + msg.setStandardButtons(QMessageBox::Close); QFont font; - font.setFixedPitch(true); - font.setStyleHint(QFont::TypeWriter); - font.setFamily("Arial"); - font.setPointSize(8); + font.setPointSizeF(font.pointSizeF() * 0.75); msg.setFont(font); + + auto *minwidth = new QSpacerItem(700, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + QGridLayout *layout = (QGridLayout *)msg.layout(); + layout->addItem(minwidth, layout->rowCount(), 0, 1, layout->columnCount()); + msg.exec(); } @@ -581,38 +969,44 @@ void LammpsGui::help() QMessageBox msg; msg.setWindowTitle("LAMMPS-GUI Quick Help"); msg.setText("

"); - msg.setInformativeText("Overview" - "
LAMMPS GUI is a graphical text editor that is " - "linked to the LAMMPS library and thus can run LAMMPS directly using " - "the contents of the text buffer as input through the LAMMPS C-library " - "interface. This makes it convenient to use for beginners and during " - "tutorials


" - "Features" - "
The main window of the LAMMPS GUI is a text " - "editor window with syntax highlighting. The output of a LAMMPS run is " - "captured and displayed in a log window. The log window is updated " - "regularly during the run, as is a progress bar in the main window. " - "After the simulation is finished, an image of the simulated system " - "can be created and shown (and saved) in image viewer window. Ongoing " - "runs can be stopped at the next run iteration.

" - "
When opening a file, the editor will determine " - "the directory where the input file resides and switch its current " - "working directory to that same folder. Many LAMMPS inputs contain " - "commands that read other files, typically from the folder as the " - "input file. The GUI will show its current working directory. " - "In addition to using the menu, the editor window also receive files " - "as the first command line argument or via drag-n-drop from a " - "graphical file manager GUI or a desktop environment.

" - "
Almost all commands are accessible via hotkeys. " - "Which those hotkeys are, is shown next to the entries in the menus. " - "Log and image viewer windows can be closed with CTRL-W (or Command-W " - "on macOS).

" - "
The 'About LAMMPS' dialog will show the " - "LAMMPS version and the features included into the LAMMPS library " - "linked to the LAMMPS GUI.

" - "Due to its nature as a graphical application, it is not " - "possible to use the LAMMPS GUI in parallel with MPI, but OpenMP " - "multi-threading is available.
"); + msg.setInformativeText("

LAMMPS GUI is a graphical text editor that is linked to the LAMMPS " + "library and thus can run LAMMPS directly using the contents of the " + "text buffer as input through the LAMMPS C-library interface.

" + "

The main window of the LAMMPS GUI is a text editor window with " + "LAMMPS specific syntax highlighting. When typing Ctrl-Enter " + "or clicking on 'Run LAMMMPS' in the 'Run' menu, LAMMPS will be run " + "with the contents of editor buffer as input. The output of the LAMMPS " + "run is captured and displayed in a log window. The thermodynamic data " + "is displayed in a chart window. Both are updated regularly during the " + "run, as is a progress bar in the main window. The running simulation " + "can be stopped cleanly by typing Ctrl-/ or by clicking on " + "'Stop LAMMPS' in the 'Run' menu. After the simulation is finished " + "or stopped, an image of the simulated system can be shown in an image " + "viewer window by typing Ctrl-i or by clicking on 'View Image' " + "in the 'Run' menu. Multiple image settings can be changed through the " + "buttons in the menu bar and the image will be re-renderd.

" + "

When opening a file, the editor will determine the directory " + "where the input file resides and switch its current working directory " + "to that same folder and thus enabling the run to read other files in " + "that folder, e.g. a data file .The GUI will show its current working " + "directory in the status bar. In addition to using the menu, the " + "editor window can also receive files as the first command line " + "argument or via drag-n-drop from a graphical file manager or a " + "desktop environment.

" + "

Almost all commands are accessible via hotkeys. Which those " + "hotkeys are, is typically shown next to their entries in the menus. " + "In addition, the documentation for the command in the current line " + "can be viewed by typing Ctrl-? or by choosing the respective " + "entry in the context menu, available by right-clicking the mouse. " + "Log, chart, and image windows can be closed with Ctrl-W, the " + "main window with Ctrl-Q.

" + "

The 'About LAMMPS' dialog will show the LAMMPS version and the " + "features included into the LAMMPS library linked to the LAMMPS GUI. " + "A number of settings can be adjusted in the 'Preferences' dialog (in " + "the 'Edit' menu or from Ctrl-P) which includes selecting " + "accelerator packages and number of OpenMP threads. Due to its nature " + "as a graphical application, it is not possible to use the " + "LAMMPS GUI in parallel with MPI.

"); msg.setIconPixmap(QPixmap(":/lammps-icon-128x128.png").scaled(64, 64)); msg.setStandardButtons(QMessageBox::Close); msg.exec(); @@ -623,6 +1017,11 @@ void LammpsGui::manual() QDesktopServices::openUrl(QUrl("https://docs.lammps.org/")); } +void LammpsGui::howto() +{ + QDesktopServices::openUrl(QUrl("https://docs.lammps.org/Howto_lammps_gui.html")); +} + void LammpsGui::defaults() { QSettings settings; @@ -630,13 +1029,38 @@ void LammpsGui::defaults() settings.sync(); } +void LammpsGui::edit_variables() +{ + QList> newvars = variables; + SetVariables vars(newvars); + if (vars.exec() == QDialog::Accepted) { + variables = newvars; + lammps.close(); + lammpsstatus->hide(); + } +} + void LammpsGui::preferences() { + QSettings settings; + int oldthreads = settings.value("nthreads", 1).toInt(); + int oldaccel = settings.value("accelerator", AcceleratorTab::None).toInt(); + int oldecho = settings.value("echo", 0).toInt(); + int oldcite = settings.value("cite", 0).toInt(); + Preferences prefs(&lammps); if (prefs.exec() == QDialog::Accepted) { - // must delete LAMMPS instance after setting may be changed so we can apply different - // suffixes - lammps.close(); + // must delete LAMMPS instance after preferences have changed that require + // using different command line flags when creating the LAMMPS instance like + // suffixes or package commands + if ((oldaccel != settings.value("accelerator", AcceleratorTab::None).toInt()) || + (oldthreads != settings.value("nthreads", 1).toInt()) || + (oldecho != settings.value("echo", 0).toInt()) || + (oldcite != settings.value("cite", 0).toInt())) { + lammps.close(); + lammpsstatus->hide(); + } + if (imagewindow) imagewindow->createImage(); } } @@ -685,9 +1109,22 @@ void LammpsGui::start_lammps() lammps_args.push_back(mystrdup("screen")); } + // add variables, if defined + for (auto &var : variables) { + QString name = var.first; + QString value = var.second; + if (!name.isEmpty() && !value.isEmpty()) { + lammps_args.push_back(mystrdup("-var")); + lammps_args.push_back(mystrdup(name.toStdString())); + for (const auto &v : value.split(' ')) + lammps_args.push_back(mystrdup(v.toStdString())); + } + } + char **args = lammps_args.data(); int narg = lammps_args.size(); lammps.open(narg, args); + lammpsstatus->show(); // delete additional arguments again (3 were there initially while (lammps_args.size() > initial_narg) { diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 78e518609e..5fed14d743 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -24,6 +25,8 @@ // forward declarations +class GeneralTab; + QT_BEGIN_NAMESPACE namespace Ui { class LammpsGui; @@ -39,11 +42,13 @@ class Highlighter; class StdCapture; class Preferences; class ImageViewer; +class ChartWindow; class LammpsGui : public QMainWindow { Q_OBJECT friend class CodeEditor; + friend class GeneralTab; public: LammpsGui(QWidget *parent = nullptr, const char *filename = nullptr); @@ -52,12 +57,16 @@ public: protected: void open_file(const QString &filename); void write_file(const QString &filename); + void update_recents(const QString &filename = ""); + void update_variables(); void start_lammps(); void run_done(); private slots: void new_document(); void open(); + void open_recent(); + void start_exe(); void save(); void save_as(); void quit(); @@ -69,33 +78,44 @@ private slots: void clear(); void run_buffer(); void stop_run(); + void edit_variables(); + void render_image(); void view_image(); + void view_chart(); + void view_log(); void about(); void help(); void manual(); + void howto(); void logupdate(); void modified(); void preferences(); void defaults(); -private: +protected: Ui::LammpsGui *ui; + +private: Highlighter *highlighter; StdCapture *capturer; QLabel *status; QPlainTextEdit *logwindow; ImageViewer *imagewindow; + ChartWindow *chartwindow; QTimer *logupdater; QLabel *dirstatus; QProgressBar *progress; Preferences *prefdialog; + QLabel *lammpsstatus; QString current_file; QString current_dir; + QList recent; + QList> variables; + LammpsWrapper lammps; std::string plugin_path; bool is_running; - QList recent_files; std::vector lammps_args; }; #endif // LAMMPSGUI_H diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 391ebcc5d1..88526719f0 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -1,6 +1,47 @@ - - - DejaVuSansMono.ttf - lammps-icon-128x128.png - + + + lammps-icon-128x128.png + help_index.table + system-help.png + help-browser.png + gtk-zoom-in.png + gtk-zoom-out.png + gtk-zoom-fit.png + edit-delete.png + object-rotate-right.png + object-rotate-left.png + gtk-go-up.png + gtk-go-down.png + document-save-as.png + document-open-recent.png + document-open.png + document-new.png + edit-undo.png + edit-redo.png + edit-paste.png + edit-cut.png + edit-copy.png + application-exit.png + utilities-terminal.png + x-office-drawing.png + document-save.png + document-revert.png + preferences-desktop.png + preferences-desktop-personal.png + preferences-desktop-font.png + help-faq.png + help-about.png + emblem-photos.png + process-stop.png + emblem-default.png + window-close.png + application-plot.png + application-calc.png + system-box.png + axes-img.png + hd-img.png + antialias.png + ovito.png + vmd.png + diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index cc8f6fad50..6bda61dbb4 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -13,19 +13,13 @@ LammpsGui - - - - - - true - - - true - - - - + + + true + + + true + @@ -33,7 +27,7 @@ 0 0 600 - 23 + 24 @@ -41,8 +35,15 @@ &File + + + + + + + @@ -69,7 +70,11 @@ + + + + @@ -77,219 +82,162 @@ + + + + &View + + + + + + - - .. + &New - - Start a New Input File - - - Start a New Input File - Ctrl+N - - .. + &Open - - Open an Input File - - - Open an Input File - Ctrl+O - - .. + &Save - - Save Input File - - - Save Input File - Ctrl+S - - .. + Save &As - - Save Input File As... - - - Save Input File As... - Ctrl+Shift+S - - .. + &Quit - - Quit LAMMPS-GUI - - - Quit LAMMPS-GUI - Ctrl+Q - - .. + Cu&t - - Cut Selected Text to Clipboard - Ctrl+X - - .. + &Copy - - Copy Selected Text to Clipboard - Ctrl+C - - .. + &Paste - - Paste Text from Clipboard - Ctrl+V - - .. + &Undo - - Undo Edit - Ctrl+Z - - .. + &Redo - - Redo Edit - Ctrl+Shift+Z - - .. + &Run LAMMPS - - Run LAMMPS with Input - Ctrl+Return - - .. + &Stop LAMMPS - - Stop LAMMPS Process - Ctrl+/ - - .. + - &View Snapshot - - - View Snapshot of current LAMMPS state + View &Image Ctrl+I @@ -297,35 +245,29 @@ - - .. + - &About LAMMPS-GUI + &About LAMMPS - - About LAMMPS-GUI + + Ctrl+Shift+A - - .. + Quick &Help - - Quick Help - - Ctrl+Shift+/ + Ctrl+Shift+H - - .. + Pre&ferences... @@ -336,21 +278,140 @@ - - .. + LAMMPS &Manual + + Ctrl+Shift+M + - + Reset to &Defaults + + + + + + View in &OVITO + + + Ctrl+Shift+O + + + + + + + + View in VM&D + + + Ctrl+Shift+D + + + + + + + + &Log Window + + + Ctrl+Shift+L + + + + + + + + &Chart Window + + + Ctrl+Shift+C + + + + + + + + &1. + + + + + + + + &2. + + + + + + + + &3. + + + + + + + + &4. + + + + + + + + &5. + + + + + + + + &Image Window + + + Ctrl+Shift+I + + + + + + + + Set &Variables... + + + Ctrl+Shift+V + + + + + + + + LAMMPS GUI Howto + + + Ctrl+Shift+G + + diff --git a/tools/lammps-gui/lammpsrunner.h b/tools/lammps-gui/lammpsrunner.h index a8cd6a1502..72ad52986e 100644 --- a/tools/lammps-gui/lammpsrunner.h +++ b/tools/lammps-gui/lammpsrunner.h @@ -27,17 +27,17 @@ public: // execute LAMMPS in runner thread void run() override { - lammps->command("clear"); lammps->commands_string(input); delete[] input; emit resultReady(); } - // transfer info to worker thread + // transfer info to worker thread and reset LAMMPS instance void setup_run(LammpsWrapper *_lammps, const char *_input) { lammps = _lammps; input = _input; + lammps->command("clear"); } signals: diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index 3292217d77..ff5a4f2213 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -23,13 +23,13 @@ LammpsWrapper::LammpsWrapper() : lammps_handle(nullptr), plugin_handle(nullptr) void LammpsWrapper::open(int narg, char **args) { - if (!lammps_handle) { + // since there may only be one LAMMPS instance in LAMMPS GUI we don't open a second + if (lammps_handle) return; #if defined(LAMMPS_GUI_USE_PLUGIN) - lammps_handle = ((liblammpsplugin_t *)plugin_handle)->open_no_mpi(narg, args, nullptr); + lammps_handle = ((liblammpsplugin_t *)plugin_handle)->open_no_mpi(narg, args, nullptr); #else - lammps_handle = lammps_open_no_mpi(narg, args, nullptr); + lammps_handle = lammps_open_no_mpi(narg, args, nullptr); #endif - } } int LammpsWrapper::extract_setting(const char *keyword) @@ -39,7 +39,33 @@ int LammpsWrapper::extract_setting(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->extract_setting(lammps_handle, keyword); #else - val = lammps_extract_setting(lammps_handle, keyword); + val = lammps_extract_setting(lammps_handle, keyword); +#endif + } + return val; +} + +int LammpsWrapper::id_count(const char *keyword) +{ + int val = 0; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + val = ((liblammpsplugin_t *)plugin_handle)->id_count(lammps_handle, keyword); +#else + val = lammps_id_count(lammps_handle, keyword); +#endif + } + return val; +} + +int LammpsWrapper::id_name(const char *keyword, int idx, char *buf, int len) +{ + int val = 0; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + val = ((liblammpsplugin_t *)plugin_handle)->id_name(lammps_handle, keyword, idx, buf, len); +#else + val = lammps_id_name(lammps_handle, keyword, idx, buf, len); #endif } return val; @@ -52,12 +78,25 @@ double LammpsWrapper::get_thermo(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->get_thermo(lammps_handle, keyword); #else - val = lammps_get_thermo(lammps_handle, keyword); + val = lammps_get_thermo(lammps_handle, keyword); #endif } return val; } +void *LammpsWrapper::last_thermo(const char *keyword, int index) +{ + void *ptr = nullptr; + if (lammps_handle) { +#if defined(LAMMPS_GUI_USE_PLUGIN) + ptr = ((liblammpsplugin_t *)plugin_handle)->last_thermo(lammps_handle, keyword, index); +#else + ptr = lammps_last_thermo(lammps_handle, keyword, index); +#endif + } + return ptr; +} + bool LammpsWrapper::is_running() { int val = 0; @@ -65,7 +104,7 @@ bool LammpsWrapper::is_running() #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->is_running(lammps_handle); #else - val = lammps_is_running(lammps_handle); + val = lammps_is_running(lammps_handle); #endif } return val != 0; @@ -103,6 +142,7 @@ bool LammpsWrapper::has_error() const #endif } +// may be called with null handle. returns global error then. int LammpsWrapper::get_last_error_message(char *buf, int buflen) { #if defined(LAMMPS_GUI_USE_PLUGIN) @@ -115,9 +155,9 @@ int LammpsWrapper::get_last_error_message(char *buf, int buflen) void LammpsWrapper::force_timeout() { #if defined(LAMMPS_GUI_USE_PLUGIN) - ((liblammpsplugin_t *)plugin_handle)->force_timeout(lammps_handle); + if (lammps_handle) ((liblammpsplugin_t *)plugin_handle)->force_timeout(lammps_handle); #else - lammps_force_timeout(lammps_handle); + if (lammps_handle) lammps_force_timeout(lammps_handle); #endif } @@ -188,7 +228,10 @@ bool LammpsWrapper::has_plugin() const bool LammpsWrapper::load_lib(const char *libfile) { - if (plugin_handle) liblammpsplugin_release((liblammpsplugin_t *)plugin_handle); + if (plugin_handle) { + close(); + liblammpsplugin_release((liblammpsplugin_t *)plugin_handle); + } plugin_handle = liblammpsplugin_load(libfile); if (!plugin_handle) return false; if (((liblammpsplugin_t *)plugin_handle)->abiversion != LAMMPSPLUGIN_ABI_VERSION) { diff --git a/tools/lammps-gui/lammpswrapper.h b/tools/lammps-gui/lammpswrapper.h index db8a0ba3d6..064e784981 100644 --- a/tools/lammps-gui/lammpswrapper.h +++ b/tools/lammps-gui/lammpswrapper.h @@ -29,7 +29,11 @@ public: void force_timeout(); int extract_setting(const char *keyword); + int id_count(const char *idtype); + int id_name(const char *idtype, int idx, char *buf, int buflen); + double get_thermo(const char *keyword); + void *last_thermo(const char *keyword, int idx); bool is_open() const { return lammps_handle != nullptr; } bool is_running(); bool has_error() const; diff --git a/tools/lammps-gui/logwindow.cpp b/tools/lammps-gui/logwindow.cpp new file mode 100644 index 0000000000..7091b34f43 --- /dev/null +++ b/tools/lammps-gui/logwindow.cpp @@ -0,0 +1,35 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "logwindow.h" +#include + +LogWindow::LogWindow(QWidget *parent) : QPlainTextEdit(parent) +{ + QSettings settings; + resize(settings.value("logx", 500).toInt(), settings.value("logy", 320).toInt()); +} + +void LogWindow::closeEvent(QCloseEvent *event) +{ + QSettings settings; + if (!isMaximized()) { + settings.setValue("logx", width()); + settings.setValue("logy", height()); + } + QPlainTextEdit::closeEvent(event); +} + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/logwindow.h b/tools/lammps-gui/logwindow.h new file mode 100644 index 0000000000..8807ef5cee --- /dev/null +++ b/tools/lammps-gui/logwindow.h @@ -0,0 +1,32 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef LOGWINDOW_H +#define LOGWINDOW_H + +#include + +class LogWindow : public QPlainTextEdit { + Q_OBJECT + +public: + LogWindow(QWidget *parent = nullptr); + +protected: + void closeEvent(QCloseEvent *event) override; +}; + +#endif +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/object-rotate-left.png b/tools/lammps-gui/object-rotate-left.png new file mode 100644 index 0000000000000000000000000000000000000000..a754bf560ad29386d0cc80fe33f0f429a2c495bf GIT binary patch literal 2235 zcmV;s2t@aZP)@lR!Wol@?IIBDM}Gj{ycsM>}deQw*IDbv>4DFYp=w4)MJOA5(s&k5J-p-2xiIKecbcwAA1)!$wF~=L-EY~_T0H= z_T1m+e1E^+J$q(FRrxkI&y9FU$u`NuVS~aP;C6)DQ8FW!&M2J%UX)f5S`}K2dkuJv zaj%6|aYEN!4&DI+IR3BC=g+up#m`6^n~R-33_C3YD=96?w-k{6w*@eO zC86FH2wITVIWP(w+al{k~$9PT;D}3j!z_;k_b& zpyJ>`Km>RO1mbc;La7Co0W5b+!6+C5 zNnMEpDEqP8W-ITF+w|Pr%w-RvT`iak72j|cK~ymUsDcQpU|C^-1k@0)ERqO7OLAfW zj&72%SQJfp__gez`9Hw4R6(F8#@WIiZ^m;%2Y0+$@$59DeXyV70{$P`p{T+`6z}*^u0on9obD?!0A#or2g&U?+o} zbk+E`5Ku)e5RFj80x%>QJCp-H6Cc3w4Kl*#K2>{W?0GH;{gw1z7wU?dblLzB?B0Q@$;&0e=X(++fC+M1(yZX@Zp;;k*E z{-3V|{hh6Q1a_%Kd54$J?|oO}jkVYn_;jPpO&vAy=fiTBW6pluKXfb)lAcN9M}MXH zlRc%5quZA3)>Dao=fn(PV8`T*&sfslg!=l2j${m@<-`XxeZ0Ha>S5)QceH~6XjV+I zf4>Y8Px9UAlkUK|P>u$Dz0L9v@byst{vQJv9#}j;&d01kcRF{Cp0_Ghf<4gF+Gpu4 zBy|Xlg@3~D>wan3ZmnbhTWleutQwxT9BpfYV4v7e$)LNXkuORPH2PE7!2q{d0j8&o zoP@SDpnZ~8AKV}gv7GxZv6tkQhy@=VyZ$4BP1yWzVe3Zf24^;cl(zdna!n}Sph)}8fC|+CV&$N z^3+pmZeDk%^dRqz$-8sGn8gKTOqfk)!zt>Dc75`%0(sT; z@kAoF)BVb5;d;3nY^t}F{|K_W$Lg$tU$jK>iED_AP``G z?wUsy%-Z}U8HDB;tX}3m@SHVz*22e}6z&}u1q?4vSi077>WgqH{t>$MWi8YdGHS^a zs4@Ac-g!L~Lf6QFyfqKykDj*@f6+70bNR|Vwh1udy9G3t7vBfGop1mHzVxvhU2z zCzEGnFPJ!W66V~0AWFHE!6VVm3sE#ph2U5H@7u{(V;4|YT~BRg?SX>5de?ve;FdtY zpZ!y&P0pVNrbH3!-5Oy-wsJYaXRa1VvqHO;e?%!F}%lR-s5O4q!E5Oxu zqvFB{AUmt*Z1=NvomRZ1ww*gIe-V1&M05x{85uc;nvx32j#r#|yN0!UPSfc=E9|^O zf|@6sNFowm6(?f#?XVhqPSfEttly|*f5*0Srq5e|ww&w@VJ9P*v#CB-#>t~)<-4m` zzxNCs?i^vqO~iBJ3ZK3TgaI_lwFhAD8QOgg8@Exq3$b%%ESitDoC4zqD;demrRqp2 zCytbszgfY?eT}q7%pDGwaPLISPuu|RDyW+ekx6E|eG=f=*NE3KZ2pNJ`x_p6*39qR zfnKgfhGtWF_!uSsK34IUayIX8!W$9ifj*AMz4BMh0XLk8c#soe9w2Fd6PJKZTeNr= zSTkoXT}tJ_gB(9tT=`}>o80k0gyX?T#}iTiulXj9@?z^-r3M2-=8Pcg(RsW!c0$(F zb7z}Bd-XUEpSVOb&<1o4q~q5G5CtX-k`cC?;bc9O$1h(m+8{&A}0DWQf|Ma&P`L_Sv=D%MQI*JM>$xi?P002ov JPDHLkV1nhFGnD`U literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/object-rotate-right.png b/tools/lammps-gui/object-rotate-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2103228dd9ec7dd0a2c0de1ef1fa5cb29bcd680a GIT binary patch literal 2332 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/preferences-desktop-font.png b/tools/lammps-gui/preferences-desktop-font.png new file mode 100644 index 0000000000000000000000000000000000000000..383eaa6ca1335a5bdf7646458e78ba51d502cc48 GIT binary patch literal 2413 zcmV-z36l1SP)#En#OeQtwqjAo@Kk|&{%sDfTcJGZA9L}D-*53Ph z*4}HKb>g{Mq@ZZVhFc!nL}s+Ku5# zg+c*Bi2rW+FA1d-cDo(_9v`!R_}BZl;F$FN`}dCtZ6pNh>+9LbO&eeS^)I_j8jXfH zolbBZ2cex@dnI>&`v@UWC=>_`48+{rEbZ)i(LX!$^>4zRki^#X}8<` z0{)|9{2|409A;)_uqkqriZI9$qLl;fd_zh@7`f_bQC!`If#yq#)b_W zFflQK_V#vkbadeM?c3<;>OxCP3s{zw09p+RIUHUI$nAhoQd3iL@8-baaSp zY&M(wvfJ$|N&udu0ofhk+yuOd@R+r>w&MBo=lJyL6Q-u7-0|?`%NGE^(9n<@fWzUy z)~#DbbM^G}ATTgc*4w_;_CWx$1Uv`6fBzo2xw#k{TY4~tg@r+<(?OwFn$}{mh&(9= z$d|KLLBMwm@EM8+pOuw`yu3W<^?In)YPU^OQxggc3w?T1IHxa=D@Lf_3KyE z)zwMnkeiDTg7NWjG&eV+r>6(O!NG`+k4IWsnk*5|EF^u9EgHyqjQ_oD+cpqFV6|Ft z2hV}LJxOMB62!jycvIK+!g#dUm#l^+AdGjU`5)u#`9E_o%A%up8 zqM)DvO-)URi;F`>Mg~$+Qru(Yc3}Pb^=N2l!0_-e>gwvSZrwV!uDZG!4u?ZT-tQRj zb%c0HNl8I!YN`Yj00adEp{lCN=Xd}(dh{q_V`BjT2?+^EOiV;WLjwTd^XJd#@9#%k zT%6z;Ax^ogIzrz1JauxHr^Ls{i{{$Bd$&kGIy&m}2>ILrIj?!kB>sq;T~t(*XsxKI zD3N}8dRjDY*(^jk?*xSHwzf7jHa22#a1d|ayaCIyh>VPc(P%_^dOA{4Qrwxz7lH2X zZs_%Tx8q*Ed@0iFbUHDC)y4qd9vK-yX=y2%o13v^%N86wco3&gpT_L$EFM38jK;=B zG&VLOBqRibgM*@DBX@*4Iy!Lp@L~7-9UUDa{pQV^!7$89in*m2@C5(i!v`cMC&OZ~ zATKWuWo2a|FX!as;QaaXsI9GqUayyw+HyN^_wHS2wOW|XW;}cL3{Rgvb?dfo-wu<> zwE8S0ywA?gB0D=97K;V3v9YMAsF3w&c6K&uYikh`6C=^f*+)i3qP)CZ(hmTaE?pA6 z49O9Y%*c5hA^s{UDRI{~m6erXSyndl=yW>l+qVzN$;pyA{k$5tyXt#HknK?nU>zGJ%L3;MBu@L2eN=wDizw>+eLkPy&f$sE$Hj( zLswT9LPJ9lA0LmfurT>zZrLm(bA%o}dW8A;c>q9qdish|tWa2%#m=2OMeFclHk)BK zn`L#r#4iG^t*vhTo;`cKW+*uk7Gj?Lp6jgy_=*V3&d$2^d|viOz@G=*YJhqZzX;6D z&AIhjtyV-p2+rYfU}k0pDwRs|jvy4Fw^!?VUcA;q{N#iX==FMc-}v~rZ2dziMMg#j z3OK+hrFhEiFY`TN@G+6Ooyj>9ff57qIZ| zjfBq~;0N#8wF@~pIRJp-;$l2}_z-h*bFf;iXl`ysVPPRED=U$hn27uL@5@%Ds|CDV zW?MD}_;yuQ70hNcN=iy_?AS3d3tXU(wu(z{LDHUZT zZ}H)ch=c&cF!PjBjU0gd{Cwo+=VN4K1Oo#DP%4!$7z~Jxj)w3nj;9AbO95XXeSxQx zf@Rrxp9BcY^xN(BzcUOY`ooD|m=FS^(Fmi_C^?(Hyy>f+krPSH!!WSh?O<89U)1k8 z@SFWx{p;7S?MkI`+3y4V2MD=7x&JnO+4~|!DTPw0#H&}Y>+2i7cJ12lgb+poYH^SffG#O1 zXIi1eo@$vCLDk>`KY&M${z!v}?DW!G* z5&{YUK>*YMSh-1mvbX?P0nAWJ7XT>%g72A$1@Qm>vc0@ed?&F$7lF%usVB=l{(hoR f55TenekJ)2+z-GXa*KJv00000NkvXXu0mjf5zTpQ literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/preferences-desktop-personal.png b/tools/lammps-gui/preferences-desktop-personal.png new file mode 100644 index 0000000000000000000000000000000000000000..dd4718435d9b3f2881d6c69a504e6cba3efcf3b3 GIT binary patch literal 2180 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 N002ovPDHLkV1j(k%W41s literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 628a50a11a..4858592dc3 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -13,16 +13,22 @@ #include "preferences.h" +#include "lammpsgui.h" #include "lammpswrapper.h" +#include "ui_lammpsgui.h" +#include #include +#include #include #include #include #include #include +#include #include #include +#include #include #include #include @@ -38,10 +44,28 @@ #include #endif +#if defined(_WIN32) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#include +#define execl(exe, arg0, arg1) _execl(exe, arg0, arg1) +#else +#include +#endif + +// duplicate string +static char *mystrdup(const std::string &text) +{ + auto tmp = new char[text.size() + 1]; + memcpy(tmp, text.c_str(), text.size() + 1); + return tmp; +} + Preferences::Preferences(LammpsWrapper *_lammps, QWidget *parent) : QDialog(parent), tabWidget(new QTabWidget), buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel)), - settings(new QSettings), lammps(_lammps) + settings(new QSettings), lammps(_lammps), need_relaunch(false) { tabWidget->addTab(new GeneralTab(settings, lammps), "&General Settings"); tabWidget->addTab(new AcceleratorTab(settings, lammps), "&Accelerators"); @@ -94,7 +118,7 @@ void Preferences::accept() if (field) if (field->hasAcceptableInput()) settings->setValue("nthreads", field->text()); - // store image width, height, and zoom + // store image width, height, zoom, and rendering settings settings->beginGroup("snapshot"); field = tabWidget->findChild("xsize"); @@ -106,14 +130,46 @@ void Preferences::accept() field = tabWidget->findChild("zoom"); if (field) if (field->hasAcceptableInput()) settings->setValue("zoom", field->text()); + QCheckBox *box = tabWidget->findChild("anti"); + if (box) settings->setValue("antialias", box->isChecked()); + box = tabWidget->findChild("ssao"); + if (box) settings->setValue("ssao", box->isChecked()); + box = tabWidget->findChild("box"); + if (box) settings->setValue("box", box->isChecked()); + box = tabWidget->findChild("axes"); + if (box) settings->setValue("axes", box->isChecked()); + QComboBox *combo = tabWidget->findChild("background"); + if (combo) settings->setValue("background", combo->currentText()); + combo = tabWidget->findChild("boxcolor"); + if (combo) settings->setValue("boxcolor", combo->currentText()); settings->endGroup(); // general settings - QCheckBox *box = tabWidget->findChild("echo"); - if (box) settings->setValue("echo", box->isChecked() ? "1" : "0"); + box = tabWidget->findChild("echo"); + if (box) settings->setValue("echo", box->isChecked()); box = tabWidget->findChild("cite"); - if (box) settings->setValue("cite", box->isChecked() ? "1" : "0"); + if (box) settings->setValue("cite", box->isChecked()); + box = tabWidget->findChild("logreplace"); + if (box) settings->setValue("logreplace", box->isChecked()); + box = tabWidget->findChild("chartreplace"); + if (box) settings->setValue("chartreplace", box->isChecked()); + box = tabWidget->findChild("imagereplace"); + if (box) settings->setValue("imagereplace", box->isChecked()); + box = tabWidget->findChild("viewlog"); + if (box) settings->setValue("viewlog", box->isChecked()); + box = tabWidget->findChild("viewchart"); + if (box) settings->setValue("viewchart", box->isChecked()); + if (need_relaunch) { + QMessageBox msg(QMessageBox::Information, QString("Relaunching LAMMPS-GUI"), + QString("LAMMPS library plugin path was changed.\n" + "LAMMPS-GUI must be relaunched."), + QMessageBox::Ok); + msg.exec(); + const char *path = mystrdup(QCoreApplication::applicationFilePath().toStdString()); + const char *arg0 = mystrdup(QCoreApplication::arguments().at(0).toStdString()); + execl(path, arg0, (char *)NULL); + } QDialog::accept(); } @@ -123,21 +179,29 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa auto *layout = new QVBoxLayout; auto *echo = new QCheckBox("Echo input to log"); - echo->setCheckState(settings->value("echo", "0").toInt() ? Qt::Checked : Qt::Unchecked); echo->setObjectName("echo"); - auto *cite = new QCheckBox("Include Citations"); - cite->setCheckState(settings->value("cite", "0").toInt() ? Qt::Checked : Qt::Unchecked); + echo->setCheckState(settings->value("echo", false).toBool() ? Qt::Checked : Qt::Unchecked); + auto *cite = new QCheckBox("Include citation details"); cite->setObjectName("cite"); -#if !defined(__APPLE__) - auto *tmplabel = new QLabel("Scratch Folder:"); - auto *tmpedit = new QLineEdit(settings->value("tempdir", ".").toString()); - auto *tmpbrowse = new QPushButton("Browse..."); - auto *tmplayout = new QHBoxLayout; - tmpedit->setObjectName("tmpedit"); - tmplayout->addWidget(tmplabel); - tmplayout->addWidget(tmpedit); - tmplayout->addWidget(tmpbrowse); -#endif + cite->setCheckState(settings->value("cite", false).toBool() ? Qt::Checked : Qt::Unchecked); + auto *logv = new QCheckBox("Show log window by default"); + logv->setObjectName("viewlog"); + logv->setCheckState(settings->value("viewlog", true).toBool() ? Qt::Checked : Qt::Unchecked); + auto *pltv = new QCheckBox("Show chart window by default"); + pltv->setObjectName("viewchart"); + pltv->setCheckState(settings->value("viewchart", true).toBool() ? Qt::Checked : Qt::Unchecked); + auto *logr = new QCheckBox("Replace log window on new run"); + logr->setObjectName("logreplace"); + logr->setCheckState(settings->value("logreplace", false).toBool() ? Qt::Checked + : Qt::Unchecked); + auto *imgr = new QCheckBox("Replace image window on new render"); + imgr->setObjectName("imagereplace"); + imgr->setCheckState(settings->value("imagereplace", false).toBool() ? Qt::Checked + : Qt::Unchecked); + auto *pltr = new QCheckBox("Replace chart window on new run"); + pltr->setObjectName("chartreplace"); + pltr->setCheckState(settings->value("chartreplace", false).toBool() ? Qt::Checked + : Qt::Unchecked); #if defined(LAMMPS_GUI_USE_PLUGIN) auto *pluginlabel = new QLabel("Path to LAMMPS Shared Library File:"); @@ -151,25 +215,69 @@ GeneralTab::GeneralTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *pa connect(pluginbrowse, &QPushButton::released, this, &GeneralTab::pluginpath); #endif + + auto *fontlayout = new QHBoxLayout; + auto *getallfont = + new QPushButton(QIcon(":/preferences-desktop-font.png"), "Select Default Font..."); + auto *gettextfont = + new QPushButton(QIcon(":/preferences-desktop-font.png"), "Select Text Font..."); + fontlayout->addWidget(getallfont); + fontlayout->addWidget(gettextfont); + connect(getallfont, &QPushButton::released, this, &GeneralTab::newallfont); + connect(gettextfont, &QPushButton::released, this, &GeneralTab::newtextfont); + layout->addWidget(echo); layout->addWidget(cite); -#if !defined(__APPLE__) - layout->addLayout(tmplayout); -#endif + layout->addWidget(logv); + layout->addWidget(pltv); + layout->addWidget(logr); + layout->addWidget(pltr); + layout->addWidget(imgr); #if defined(LAMMPS_GUI_USE_PLUGIN) layout->addWidget(pluginlabel); layout->addLayout(pluginlayout); #endif + layout->addLayout(fontlayout); layout->addStretch(1); setLayout(layout); } -void GeneralTab::newtmpfolder() +void GeneralTab::updatefonts(const QFont &all, const QFont &text) { - QLineEdit *field = findChild("tmpedit"); - QString tmpdir = - QFileDialog::getExistingDirectory(this, "Find Folder for Temporary Files", field->text()); - if (!tmpdir.isEmpty()) field->setText(tmpdir); + LammpsGui *main; + for (QWidget *widget : QApplication::topLevelWidgets()) + if (widget->objectName() == "LammpsGui") main = dynamic_cast(widget); + + QApplication::setFont(all); + main->ui->textEdit->document()->setDefaultFont(text); +} + +void GeneralTab::newallfont() +{ + QSettings settings; + QFont all, text; + all.fromString(settings.value("allfont", "").toString()); + text.fromString(settings.value("textfont", "").toString()); + + bool ok = false; + QFont font = QFontDialog::getFont(&ok, all, this, QString("Select Default Font")); + if (ok) updatefonts(font, text); + + settings.setValue("allfont", font.toString()); +} + +void GeneralTab::newtextfont() +{ + QSettings settings; + QFont all, text; + all.fromString(settings.value("allfont", "").toString()); + text.fromString(settings.value("textfont", "").toString()); + + bool ok = false; + QFont font = QFontDialog::getFont(&ok, text, this, QString("Select Text Font")); + if (ok) updatefonts(all, font); + + settings.setValue("textfont", font.toString()); } void GeneralTab::pluginpath() @@ -179,16 +287,11 @@ void GeneralTab::pluginpath() QFileDialog::getOpenFileName(this, "Select Shared LAMMPS Library to Load", field->text(), "Shared Objects (*.so *.dll *.dylib)"); if (!pluginfile.isEmpty() && pluginfile.contains("liblammps", Qt::CaseSensitive)) { - if (lammps->load_lib(pluginfile.toStdString().c_str())) { - auto canonical = QFileInfo(pluginfile).canonicalFilePath(); - field->setText(pluginfile); - settings->setValue("plugin_path", canonical); - } else { - // plugin did not load cannot continue - settings->remove("plugin_path"); - QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file"); - QCoreApplication::quit(); - } + auto canonical = QFileInfo(pluginfile).canonicalFilePath(); + field->setText(pluginfile); + settings->setValue("plugin_path", canonical); + // ugly hack + qobject_cast(parent()->parent()->parent())->need_relaunch = true; } } @@ -288,11 +391,28 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *xsize = new QLabel("Image width:"); auto *ysize = new QLabel("Image height:"); auto *zoom = new QLabel("Zoom factor:"); + auto *anti = new QLabel("Antialias:"); + auto *ssao = new QLabel("HQ Image mode:"); + auto *bbox = new QLabel("Show Box:"); + auto *axes = new QLabel("Show Axes:"); + auto *cback = new QLabel("Background Color:"); + auto *cbox = new QLabel("Box Color:"); settings->beginGroup("snapshot"); auto *xval = new QLineEdit(settings->value("xsize", "800").toString()); auto *yval = new QLineEdit(settings->value("ysize", "600").toString()); auto *zval = new QLineEdit(settings->value("zoom", "1.0").toString()); - settings->endGroup(); + auto *aval = new QCheckBox; + auto *sval = new QCheckBox; + auto *bval = new QCheckBox; + auto *eval = new QCheckBox; + sval->setCheckState(settings->value("ssao", false).toBool() ? Qt::Checked : Qt::Unchecked); + sval->setObjectName("ssao"); + aval->setCheckState(settings->value("antialias", false).toBool() ? Qt::Checked : Qt::Unchecked); + aval->setObjectName("anti"); + bval->setCheckState(settings->value("box", true).toBool() ? Qt::Checked : Qt::Unchecked); + bval->setObjectName("box"); + eval->setCheckState(settings->value("axes", false).toBool() ? Qt::Checked : Qt::Unchecked); + eval->setObjectName("axes"); auto *intval = new QIntValidator(100, 100000, this); xval->setValidator(intval); @@ -302,15 +422,48 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : zval->setValidator(new QDoubleValidator(0.01, 100.0, 100, this)); zval->setObjectName("zoom"); + auto *background = new QComboBox; + background->setObjectName("background"); + background->addItem("black"); + background->addItem("darkgray"); + background->addItem("gray"); + background->addItem("silver"); + background->addItem("white"); + background->setCurrentText(settings->value("background", "black").toString()); + + auto *boxcolor = new QComboBox; + boxcolor->setObjectName("boxcolor"); + boxcolor->addItem("yellow"); + boxcolor->addItem("silver"); + boxcolor->addItem("gray"); + boxcolor->addItem("darkred"); + boxcolor->addItem("darkgreen"); + boxcolor->addItem("darkblue"); + boxcolor->setCurrentText(settings->value("boxcolor", "yellow").toString()); + settings->endGroup(); + grid->addWidget(xsize, 0, 0, Qt::AlignTop); grid->addWidget(ysize, 1, 0, Qt::AlignTop); grid->addWidget(zoom, 2, 0, Qt::AlignTop); + grid->addWidget(anti, 3, 0, Qt::AlignTop); + grid->addWidget(ssao, 4, 0, Qt::AlignTop); + grid->addWidget(bbox, 5, 0, Qt::AlignTop); + grid->addWidget(axes, 6, 0, Qt::AlignTop); + grid->addWidget(cback, 7, 0, Qt::AlignTop); + grid->addWidget(cbox, 8, 0, Qt::AlignTop); grid->addWidget(xval, 0, 1, Qt::AlignTop); grid->addWidget(yval, 1, 1, Qt::AlignTop); grid->addWidget(zval, 2, 1, Qt::AlignTop); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 3, 0); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 3, 1); - grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 3, 2); + grid->addWidget(aval, 3, 1, Qt::AlignTop); + grid->addWidget(sval, 4, 1, Qt::AlignVCenter); + grid->addWidget(bval, 5, 1, Qt::AlignVCenter); + grid->addWidget(eval, 6, 1, Qt::AlignVCenter); + grid->addWidget(background, 7, 1, Qt::AlignVCenter); + grid->addWidget(boxcolor, 8, 1, Qt::AlignVCenter); + + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 9, 0); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Minimum, QSizePolicy::Expanding), 9, 1); + grid->addItem(new QSpacerItem(100, 100, QSizePolicy::Expanding, QSizePolicy::Expanding), 9, 2); setLayout(grid); } diff --git a/tools/lammps-gui/preferences.h b/tools/lammps-gui/preferences.h index 46a512772a..1aa447e7b1 100644 --- a/tools/lammps-gui/preferences.h +++ b/tools/lammps-gui/preferences.h @@ -17,6 +17,7 @@ #include class QDialogButtonBox; +class QFont; class QSettings; class QTabWidget; class LammpsWrapper; @@ -31,6 +32,8 @@ public: private slots: void accept() override; +public: + bool need_relaunch; private: QTabWidget *tabWidget; QDialogButtonBox *buttonBox; @@ -48,9 +51,11 @@ public: private slots: void pluginpath(); - void newtmpfolder(); + void newallfont(); + void newtextfont(); private: + void updatefonts(const QFont &all, const QFont &text); QSettings *settings; LammpsWrapper *lammps; }; diff --git a/tools/lammps-gui/process-stop.png b/tools/lammps-gui/process-stop.png new file mode 100644 index 0000000000000000000000000000000000000000..5f547cfee3f58ad10fd7f3ae211f5502aa488576 GIT binary patch literal 2287 zcmVuh5qD46_*)Bq7ldD_MjBv2D9z}Ri7N>xkpFWo*A zrG);~v^`o)2P0bMfloRnfS01$xz z0Arc!M8p6(V8VcWt58;&ss&N*%kewZ2=9qw=0 z`CKdJ;E93&;_f+o;fgiX_&7Ec5*IhprMwQ$%y=A1*ydlo{<(;)9kJe0t#mn3KUd8WEv#_ijAi+399H=NzF>2!DF- z-PE0rhW_xMe}A$2(4j-}e*$0_2LJZj)n_Zp7jLPKEeTIfPI|=OYHdYgU;y>S#n2eb zB$u5RQXTCIWD0>%AyC@TfK@(-dGqGs=DP!_J9los`NjA|OFj@e=K;eo_!Dba_c`Lz z=`@588Bs#uR%MGoLgTRgU&f>ILGG~F5q@YhYKr&Ksueq z+BNGU%f7XuDYBrb$1sdp=c%kW7>2>0ShxC2d0EBQ>e!NSDwXnxzrA-a5(5KRRay#N z)4(|gw<`;?#kvqG2mp;S)G(HTXm6hZv3}iCkrgZI8$(6BcQ%N?i-uwFHBYYYDPL64 zP+e6UPNk9%!UBdOTYcwxZJ4-z11s&A2Qnpt zh&-hupEAN3LlqImFJ8o8`*b*2mW5O*iH#dJN9yZWZJDxCy#)aXA)l?TstqR+6CUwH z2M!={?HX1rSOCoyEtMp71P~E03y|}fGlrOy7{7E0LrOR~5Di545}Qv@Fv$sF_WF zHV+7bB2uK&`0V_7EDMKS@s8!ClprCdk5x|uz-03b2T(CJg-`qYXMD$!*{f;bYE%ee zdqTP+V+_nb=9~jk0*ry|^R6Jj^#j5xn`gK^CrL#x5kZ)uFaXQ4G7oYdXpbZ%!1*+g z-8~jn?hS$FNQg}G z1cgvWwFkh{RO>rq4o?JyhZi9G9FP@2SOU`L0cS?kY|%~$b?u`jaXtV_nRdkn0_6Tp z6S$PHgheEkt&5@}JhEjAKH(gev*uBj5B|^O8$C-5rTfMIGaALC-`(Ybltch!&w*e7 z(}I)|x<2io*pb7CKD8d7=sGN)xEb9C=f77?SXX=`f`v^@SZw^%J+JFJX50D5;sN>l ztJnXSDk&*NC=_ykCdQ7ug85HBjlbIvGrSN0LOFzc#5Zq4<;&;{O$m zVBxkV#D4L!%sV(kD5N7C3FG*QuH^9W$8WrG^7Qw!0c72kFbsnWSiN<%wOcoC*c6?Z zxbLn~L4a@1QK1n$r%kE55N2v6p`7p4T)DMWG^e9q&qxjt-wb^?FZxuIJ?3 zRxu2Nr_E$fUG36_hOG_JWHRA_7(4hP?q7ZzWyxeg5E=1N6gM`Y>gAW*^PFqYLpqLk z9Z!sm44>&fb-Hb~XXUjoG?Du9bZza@#^$Ex=;UPD12OuO7jXab+gOxH{w!KY`CxcRBs#QBP?G40AP%jegYAL!V3vaW7fbL*ZxQDIk{xi;sq zov*!`7#+KJuBW?qKQd89bM}BD*57rzhj#C2`R(%M%eJ=dYma8iWZ@9Z-ba1)cfU!F zjtpNs)7$?%026>^ck=fjC>OvdoCgS3d(n=a+h19=vVPNnw)TjoY0ff8srh7|n;xA; zM6iT~&d$!%@W{tk;(h0S +#include +#include +#include +#include +#include +#include + +SetVariables::SetVariables(QList> &_vars, QWidget *parent) : + QDialog(parent), vars(_vars), layout(new QVBoxLayout) +{ + auto *top = new QLabel("Set Variables:"); + layout->addWidget(top, 0, Qt::AlignHCenter); + + int i = 1; + for (const auto &v : vars) { + auto *row = new QHBoxLayout; + auto *name = new QLineEdit(v.first); + auto *val = new QLineEdit(v.second); + auto *del = new QPushButton(QIcon(":/edit-delete.png"), ""); + name->setObjectName("varname"); + val->setObjectName("varval"); + del->setObjectName(QString::number(i)); + connect(del, &QPushButton::released, this, &SetVariables::del_row); + row->addWidget(name); + row->addWidget(val); + row->addWidget(del); + layout->addLayout(row); + ++i; + } + layout->addSpacerItem(new QSpacerItem(10, 10, QSizePolicy::Minimum, QSizePolicy::Expanding)); + + auto *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + auto *add = new QPushButton("&Add Row"); + add->setObjectName("add_row"); + buttonBox->addButton(add, QDialogButtonBox::ActionRole); + connect(add, &QPushButton::released, this, &SetVariables::add_row); + connect(buttonBox, &QDialogButtonBox::accepted, this, &SetVariables::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + + layout->addWidget(buttonBox); + setLayout(layout); + setWindowTitle("LAMMPS-GUI - Set Variables"); + resize(300, 200); +} + +void SetVariables::accept() +{ + // store all data in variables class and then confirm accepting + vars.clear(); + int nrows = layout->count() - 2; + for (int i = 1; i < nrows; ++i) { + auto *row = layout->itemAt(i)->layout(); + auto *var = dynamic_cast(row->itemAt(0)->widget()); + auto *val = dynamic_cast(row->itemAt(1)->widget()); + if (var && val) vars.append(qMakePair(var->text(), val->text())); + } + + QDialog::accept(); +} + +void SetVariables::add_row() +{ + int nrows = layout->count(); + auto *row = new QHBoxLayout; + auto *name = new QLineEdit(QString()); + auto *val = new QLineEdit(QString()); + auto *del = new QPushButton(QIcon(":/edit-delete.png"), ""); + name->setObjectName("varname"); + val->setObjectName("varval"); + del->setObjectName(QString::number(nrows - 2)); + connect(del, &QPushButton::released, this, &SetVariables::del_row); + row->addWidget(name); + row->addWidget(val); + row->addWidget(del); + layout->insertLayout(nrows - 2, row); +} + +void SetVariables::del_row() +{ + int nrows = layout->count(); + auto *who = sender(); + if (who) { + // figure out which row was deleted and delete its layout and widgets + int delrow = who->objectName().toInt(); + auto *row = layout->takeAt(delrow); + while (row->layout()->count() > 0) { + auto *item = row->layout()->takeAt(0); + if (item) { + row->layout()->removeItem(item); + delete item->widget(); + delete item; + } + } + layout->removeItem(row); + delete row->layout(); + + // renumber the delete pushbutton names + for (int i = delrow; i < nrows - 3; ++i) { + auto *row = layout->itemAt(i)->layout(); + auto *widget = row->itemAt(2)->widget(); + widget->setObjectName(QString::number(i)); + } + } +} + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/setvariables.h b/tools/lammps-gui/setvariables.h new file mode 100644 index 0000000000..1d1ca30bf2 --- /dev/null +++ b/tools/lammps-gui/setvariables.h @@ -0,0 +1,43 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, Sandia National Laboratories + LAMMPS development team: developers@lammps.org + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef SET_VARIABLES_H +#define SET_VARIABLES_H + +#include +#include +#include +#include + +class SetVariables : public QDialog { + Q_OBJECT + +public: + explicit SetVariables(QList> &vars, QWidget *parent = nullptr); + ~SetVariables() = default; + +private slots: + void accept() override; + void add_row(); + void del_row(); + +private: + QList> &vars; + class QVBoxLayout *layout; +}; + +#endif + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/system-box.png b/tools/lammps-gui/system-box.png new file mode 100644 index 0000000000000000000000000000000000000000..baa5595d27c93e13a16276568b50d50b5283e8e9 GIT binary patch literal 6301 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 literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/system-help.png b/tools/lammps-gui/system-help.png new file mode 100644 index 0000000000000000000000000000000000000000..5242b608b6142987802bdd86ca2a244a65a7a785 GIT binary patch literal 2567 zcmV+i3i$PjP)X-3iMDE&80;V^it%I zQ&FJkEvNQS?>D z?fn1u@BfHUO7SE=0-o^ai6=nXX~7S#4|~Lb@>3>iFR|_<1NpIIMWKS==Wm^izp>L& z@+cj6{a*)8fJpCsW$?A=LGKAk7G3*ttD3Ik?fb8)Z=H(E9dm%+yelBT_wx9ggR<_& z*0KsEEvtEpk9Y+616p|$UPsk9`XrYxo5=7lPK1R#X(GUytF;9| zfXC~BN9)@g0V0tnU7{aS#)r^TK@;(2B=`?I-!Qcyil&=)YV+@Un-k#obfYIXxiq5~L?x6$YAc1lo<3-r#tX6Q;x$wtYdj~3F%AMh^G=*T2EnNIk+!YsQw)Be^XeXmw(Kf zZ*)X}&ak~6|1GBazJ<_e1mb83ve?DF$G#At^Pjo@XdHL2i8^DchGcOSDF)d>8s4q| zQpyra+7`C8Gzw~p>&s&y;FaND?JXA4L0ddLZBxw08&S}`5ddcQKg)+g@7#>mIG{I~ zzb1QVf?+`(6IXV_fgR(58gkZOVv=I@A0Gj`kpO8oH_$+^VY7t>XjOvE1r4Pw9jps) zFAD`i0;<~-mAsBhp>~GbPv8y+aQTR_wwTrp{P^1NxCF^f9DaY#`GDSt#%iKsiV~^y zwJOE>OchU$pTXhNr*UoO4@f>tz*Pz3nThAne`E+gPXGd=Y->A(jr20^F3cd$J$pEU zFQ54a=GJfHlbIO|eol5EVy_%vS47$b%K9W0$~Zo87QN8`{`BE*P%2l9H7cz@2yfw2 z?Ewn8q_NW{_QD(PL*;JKSd&a8jXj^g@Fj>ii-pBoh#r;OI6!sUxfP9o@hS>bmDFrLe zdTZ=cM_(|3F!7-94rz#$?-~%22hkns#`w??+|FM%l(+uGD|1L!S8?X#b68xvhYj&I zGWk_wPWChFv_ji#ijk>xYK6G+7z8vd5E_XGsW}3a3M#s~Es@HqF>GwcP;$qhqTFUx z_!yt#Yqr$2#&}nN7!I#>eNBn67ZIX1&9!mDBtjGbm zY{fzXo71U-MoUh}^9`JGt7uiXKFxuhTkzrRiSxMj@t;xH&Nt2&8W=&zvw@Z3gQl~4 z!{bK%NKvgKfZrEjXM6!4+`Q6W?6RtNyewXIB0_LX!kBNd99e5tX2n8047mB=eSGoU zB?Nqyc!VP%B&&;UB9Wyl7#|yN^!XmX_vV8um>fRdw%)*?#sQ!CUV=PQ2kN)a6R3LC zm^2a?dooia;owLVl`O&Sh3k0n{I?Bp;^T|U^G2>vU{;AIJsfyDK3~Mc&2?i9U(5IK zz16J1&WbpM(~W4<&v7zEiR`2U+-$fQ<*G(CNg|@f0RwTt0N#n~ckt4sS8#7}7JvEs zJ1o3*7o|&n%jJxGOVtD*4jvf9kbgCI4LY6@^ z5XSh(B>ZBZA&T2t5(NfDZ4Dz6gE;;4Id+|*5q|u;{Cg;R$)PyVh=p9H2ni;RbVol> zNN69V2R4TW1`f%sB^6T7ks0uSZN7B1ZGTE#`meUzY0lA7?jjl$90~z^i+1(R@-Nrd z*K)aX+Q?@`Qon%xd#`MJZ=jf>qqia;IhP_(NzEzg*>}hfH2wWwY>i}n#|F;3LY@d* zQWxW;%vfGVl@=Kk%$Uh6x4;HQ-w6B6dC_KLYV$%vr>u5ujzzm_o_k`Bc*%(Q9Lf}J zZz)MlleoqQcpefOlMY;bz3cnFi10j-Xp}VKJ7O!|(AH*C9iz?t(AFkxXDsV$1bQh& z-@g34!cW);cQh4Bn}y1W0AgAqPK4LA03NPHvKO)^U~uhmRe0-;M;AmErLg$0vWXl| zn@tXAt&Ys`J+X}l$+Q42v%g<&_H|R{t0t&U$UpK$w@E~E4!M7|b!syxdQG355hefs dZ help_index.table diff --git a/tools/lammps-gui/utilities-terminal.png b/tools/lammps-gui/utilities-terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..362f7636f9081d1eaed43f4a4a1ee1982622561b GIT binary patch literal 2603 zcmV+`3e@$9P)MU`)%&240000NbVXQnL3MO!Z*l-k zVQ_CCLt$)TZDDR?a%E}Xks2xh001d;MObu1WpiV4X>fFDZ*BlWVRL0h76c@5~--;$0gY zCnS-A9dQw)`~X1Qkx0N5Hz2?wSNQ`#6oHT;au5&y@4&dXC&j8%& z@fm<5QGr$-e2=@ z&Rz4mIoDeApEuuF-3ct)`9=tVmtTGv03pP_va{d&_8R+Xq)I7HoH()PXEOjoh!3o) zil03G_(u-v|2c#ZJoV(0gb>&Z>nsDo17NMi7{itI^;QDi2ktx&f_v}1hvUcZ!dQd1 z4wIf?wC43UUdQ|983BRdp@$wq2!Yl*-e(MTUANzDj6rLSgA{zgr}(Z3pt-RLcrX~S zy1L5N))vNEgb+v}5K%wqT5IaM=E~Mq8_!;Hn+3q^jb&AF`t)i3`qE20|NL`|$7N(e z?q)zrMOBp;V`KKM!5YK45B|$&JYvefV0CSkNmZsmYqXBp*E#~K>KdapRbAtpYl}ee zHv+JOf#G1lj~{)MXP2lP6CynM`8PT4QvSOLNq9jj1)2uBodE z=UgYbyW*b(&=^fA1;EO|6(0HK!#wubWBlsrr+MYIS6N!3*XK~KsT$Itd4?e&cL&`t*-19}o z<1yOC>eN;nqtUfN*L6JCn!2i}lLwSiHz%P6z+f=osb`PjKl&!8wPs zF0o)*30Y%P_UpC-8*QlTYKDOunD{IqtRRGFJ+QbqB+H8kKuDw%NELwy5kVD2PJeDL zQtSgEc(l>1EH48frR4aXcOnp2=WyQPtijrx!nxSFwIMHZ3R7UUMVlI3Yl>b$IjP!s z0{fUsG+zoZDNAHs$85Jus2NWPvA}418y^CJ2;%a_2G&{tR+g6;PbP6{>>~rN>jPuj zX-88^8z~uMS_WXB9ta_{h=;==d7fVvz~W#?e{L>iC}50ZVPT=|&_|CPMM;TE^71y8 zT5BzN)AVcvV0#7HSae+P+ zO~9lqDXS6?%+JkJR%JAHvp}&HlUQiNZ)H-IxK+f?tj|G*xIknV^)408-^q4FgJ{q$JOCDpiAsUr<&RLJ0Car>v@WCh45V zdp9%HFlOoj?_7J2bFRJadSKsEi3Y%MFd!@P2qFcpltL&OuchL^!U2SscFLmPM+m`u zzmLjtf_L~3Qb3_og)G*%)cmIX!>6Dd5LY*@Osmj-B{ai8oieW!Dw~3cM}~DaYE;H` zabtD_gsOtjWIr0$r@4}IK7n$(UU#0~bSG{A3>Fs1iy~@2lhX#480kt&wyZ>tG^;ir z;zA_uG6a0exNiZZ^6DHRH9D92g}08)OB*Pqu-5Fqj5d8>G#R7ns?By}V9G|rgxvKy z-BxM0RGi;C%XWG_Ewky`#Mdm#FlHYBcCH5o2NDBnnthcu*`HpwjAY5&Dr>7$@Ka+t zn>6m5;O(BecXrCa#-+= zm`I;_JM{oz8sEM>aA5ubd9Rr2J~?se!%ipTQ$I{S(2eir7%1}8ftwzX0&lC3 z?97!^+B=f%dZAg&d+$?4@~x~QnAzs#XBcs8Tw3o)XrCr-0Bmn>@8|)s`^s+Scg&4M zXH&PEn5mR}Ta~7=ax-S`R;q@9>#hfc5aPs%6WQUlJ7yL%>lZKY`iEOFx}8`E(E}{t zLkJ-gLMTA4udmPFvHCfL5G*e*^V%z~K+59G-m{oJ*|jfyy^ZRy=PA>Tqn)3}ebi1T z7Qp9$%fLhk;WI!1{fiebE`I6c{ncnR>c98id)JBLlOG`j%Cf}!Py!DE{{k)mrU6g@ z%je#I|DV73<6T`xcz>?^u#!u>>I!dVxS7>1BZY`_W0@PHW-0eeXar< zKnZxkR4S4fcoY0>B_XDD$`V!M07TQ>#K-xi?h_uN(~`wr?fKI*{s$g_*?qousc`@R N002ovPDHLkV1g(2#P$FH literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/vmd.png b/tools/lammps-gui/vmd.png new file mode 100644 index 0000000000000000000000000000000000000000..34b8e737a12efd14a498b098b660026212edfe5e GIT binary patch literal 4332 zcmeHKYj6|S6<%Y&j<6H#BsIZdycRS#E~{O=cefI@krb?gY(iFqV#7+^?ZXww>E7^f+uG{!cA+cc9G;b|zZKum#@yhsR%b9eo~o@A!u zndYB0vwQd6bIy0p`R=)Abf0jS%uiQMS0M*>R>U}zOYi{%NgR*3Ph@nVXl zW*f=|=CG-5t+lwT@ZJNr;^s0>DC6Az%7RlTSN85pZm9k(f1xn*9qG-U z?Oy-i+wv#>GQ&PGw|i~#^T&R_z9r3a@Q8KQs(nqL&iOcA|8(xFAzjDp%-M^(+8WJ` zLGzBu7wgXE{kbRq8g;FuC~Ma0^Lx*Jl6`S^*Mzs9n!e|q>0Ed91K_TaL`7wEUNExQ_jT0HfItxx1X()Pz!@+HqgmM{45 zOitC!%sqFBW&3+}t)UG)Pv_jcV|7i%bKC#W+Y(bvTea)TGnHuD6zSo=d{Y-bvH8x9 z{11A~Q?Vk2TNuN2xdO*)`YoH?~h8R!wO* z+4ltS=DMNM~C8z#9Xdn_-K5P1;_`U05M#vA@E29A88Sn z9MuqHFrXi_i2L9n#XVeHs1g~@QO!lAnIj=sX4pPfC5DxBSO(|9Tm-7dp;zrFm-C%2 z_ppUbL6DEc6e~#fC{2kE+#+jKY_dd2XJjDId>D6>_E7GMGSqUpXuH5v$>BNeR<-P( zW(9_4Y2}kKaug9@00v0Th#5>Ig^`Tei0K2AS?4G9CJN|BKslpv2}BuAhJxT49^z1X zQXeoe1g0}nBxd0BMvNqk0AmbBEyXYa#>^Q;K$MC+tV$3b8I=shLMUJ~0KW+aVqyV= z0s#*52PlAPNdwFJDPYoTfda)c^aFwz0dPC{2ncd`EE-e+;k*)%+0>dS9YLA&X3{_z^!kCA6}*QyF%BzH#?%s;L5aLAG)x8( z3*+tkOa{u2w|&QhCpS@VX+GyCl*M+4kQkO5;{FikhIq5BTTfxL~BWm zFwn#ZeSzfzEB=?Ze0WgHz?K*Dap-@AvNUj_yjp^Q~{S3)4jFB;oMvn^t zsRoE#Q4sP7xq{`XaE0b68+HF^?V1oL?*b$YBS`G~gyDk;<8sd!%GiQ`j}wccFrvvo zyMZ;>ykIZHhnwLbXL8&55r2bw@gsVG(Bn?V#P2v=<8+OQfiWqMSJyaQV`5-T%H!4b zf1^uv>pI0n;lH37cv(uz2AknUE7QHu=TNR(NIx8ur@y~n(^=99r%95h#ETSOI12Ck zNRofSd^^%OX+|-e+!iZd97m8Tcgjx^vT@TixR@e2U5=ECsduO}nGe4*`wh5M>9iO5 z$TzPv7pXeXw23L7=dR02UET3mf4z5o`=Q!U->U~4V$bROvdeG$+TMWfIXvOPibYha z-?8#`)ypS7#qZH+AIkgr*4MI|kDs~w(4@$gt#5anK`uR;^Q#@7WhU08CSU%~?TEK< k0XW$9)sgjczA4N8?902qAhZ8^2|7odjuQLMdCMRD4sNF#&;S4c literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/window-close.png b/tools/lammps-gui/window-close.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf3eba2b13d2a1750d7fddab9d50bb1df0e1648 GIT binary patch literal 1981 zcmV;u2SWIXP)WAmF2-#?xS0hCx}x9S=kT4b z;FWT8Thb;^dfJ}v{hsIj-tYb1_cV+#7WRKeSV%xfKuADHKuExI7a)osZPjWs-w^~M zLMb9Dy=u2gr`j7978d@@1PHo}4@JH3V@~d|+5E!1DUGQ13Zjs=EaE!VTcS?${jr=Z zZ{dmjX;H8JlRg_17eL;AQ=g@sYH4j|!=r<2cw~@ucDFN3N%> zHp~VF``ExhFFSR*$SdkKXB8Eo(`&vlSsLzxbVXGetE?_(O-?%-93EgNiVD11oyNFS z@;W^^q^*g0dR?r}SS{H#TN_w^e=pN#i+`o2rmj^?0ENyCcTX3qsjKu0sH!nAdy`dK zjgyiHpR#mO(f!Hh(O551VA3wCQCg-XiQ9uv7(|A$RyT4@<;&KFV;qrUjW9! z1~zhMcLz4_G^Ojq&+H(RMby?+%^_q!1SCKn*A`m?d9jsUo1CDPIN{Zb!jMGX)y_u7 zhFGJ+;unB15Ya>AvA^`$x+Reh`Xv5GMD-j(282Kc)_R>(O5h|0Nke6sMA{Ed9yJtz z(DL-S6%nBb`6eRY*51Oa$#TE9rJ|3*X`Z-20tz<3)@Y{F*Ubt~=A(A9J$C_t zm%|3Xm+{#_;nYjHzT4GFwNAApMy@!4Mu(L)v`cD=f)x=w`79#u1o;*sRpIxnOc2#+ zD}~hYoa`A2DW98i{(R|N;jd(=rjjyK52e(CAVmaC9^UPM=c^YI2dS3UCWdAuD_ci3 zy-y^8MvkQYTk9eCJL zM)JYivIsepFdiElp_X5myCe}yc$AW!KsEl9)ozhIJfCe!7qpi+ah>!V9a1v_k;fwv z8JU@xaS%~je$|KK4rhYgM#`-ux;^v*d4;)C8jUJP>85`C;^i;q5E?Rh8Tf2(vM~n% z(hYoF{PU}WVX|b=1dV`wU$_H#g1nkg!x6{(nqJkE{J-32mB~5$_ zWdW573v)cdN+}U(QI{poq^GCq=>Et>h?1|9l9F~p#FdiEzP66})VtUozR%6iok~eb zNu)8WF@FG;@W%=WAik0hUQ1Yyrru;m15&?WGKXn|FLVIXU?~ZYPqj=&ArQ;ZG810$RGUR;3>LqJ7Fs!jti0TYQXzu!fU&B?Rr-us(-n3<-#0Jarw~-HZ#(# zMihRFj*i~JZEfTtRzFcdfQZ$65C(6KkB{FYh^kwkoj-dQZ6Ip;OT}N_qf%h@!2A0@ zp?h8@V8VC^=H6bv2rm;h5w_u8dL@&Ho1dOJeFqP;;E9^g41U^|TU$u371p^Vq z9TLlhZjXtH*?Tngh(n`Q|4z8A5;DI_OiWCr-*)nQuxinS7a#WE_whS?e!150i8pX# zahzy8$7W7wBcEt3ANMFkaB=dA#Bv*318m0exi)YIg8Yi0(`bN@bzDqz0HXN!5s#YW z5jIzGVv(F=G#3@kKS%QPyF&3=DDZ$%?2n2dZHE403JC}a2nh%YSQh>U2^?9uO&6-2 P00000NkvXXu0mjf=}(vr literal 0 HcmV?d00001 diff --git a/tools/lammps-gui/x-office-drawing.png b/tools/lammps-gui/x-office-drawing.png new file mode 100644 index 0000000000000000000000000000000000000000..e93899922eec0d2b67c7f6057617a9edda273291 GIT binary patch literal 2998 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 literal 0 HcmV?d00001

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