academic/lammps: Added (molecular simulator).

Signed-off-by: Andrew Clemons <andrew.clemons@gmail.com>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
Giancarlo Dessi 2023-09-03 11:28:06 +09:00 committed by Willy Sudiarto Raharjo
parent 2ee53a3a4e
commit 469fecd964
No known key found for this signature in database
GPG key ID: 3F617144D7238786
5 changed files with 656 additions and 0 deletions

48
academic/lammps/README Normal file
View file

@ -0,0 +1,48 @@
LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
Simulator.
It is a classical molecular dynamics simulation code designed to
run efficiently on parallel computers. It was developed at Sandia
National Laboratories, a US Department of Energy facility.
A basic installation of LAMMPS can be enhanced enabling the build of
internal or external extensions (packages) that add methods and/or
give support to third parts libraries or platforms.
Dependencies strictly needed to build LAMMPS with most internal
packages enabled are already present in a full installation of
Slackware 15.0 and the slackbuild can be launched without any other
dependency not released with the official Slackware. Only openmpi is
highly recommended since LAMMPS takes advantage of the parallel
computation. Furthermore some packages require it as strictly
dependency. Instead of openmpi LAMMPS can be build with the support
of mpich, although the latter does not support the enabling of a
package (OPENMP). If any MPI platform is found in the system, LAMMPS
will be built anyway but with a reduced functionality.
Other optional dependencies available in Slackbuilds.org are
autodetected and allow the enabling of some additional packages: HDF5,
OpenBLAS, python3-numpy, voro++, PLUMED, netcdf. Other packages need
third parts libraries given by downloaded extrafile and bundled in
the application during the compilation. The slackbuild prevent the
download during the build, so you have to download these extrafiles
listed in lammps.info. Optional dependencies and the download of
extrafiles are not needed if you do not require the respective
packages.
Warning: except to GPU, all packages are enabled by default if no
dependencies are required (or they dependencies are found in the
system), but you have to disable the packages that require the
extrafiles listed in lammps.info if you do not download them,
otherwise the build fails during the check of cmake.
For GPU package you can try:
GPU=yes ./lammps.SlackBuild
or
GPU=yes STATIC_OCL=yes ./lammps.SlackBuild
The latter uses an internal static OpenCL loader.
See README.SBo for a full list of available packages and their
dependencies.
Some packages available in the source of LAMMPS cannot be enabled for
reasons reported in README.SBo.

209
academic/lammps/README.SBo Normal file
View file

@ -0,0 +1,209 @@
Table of contents
1. HOW TO DISABLE NOT REQUIRED PACKAGES
2. INTERDEPENDENT PACKAGES
3. EXTERNAL PACKAGES
4. LIST OF PACKAGES AND RELATED REQUIREMENTS
5. PACKAGES NOT AVAILABLE
6. NOTES
1. HOW TO DISABLE NOT REQUIRED PACKAGES
Almost all packages that are supported by your system and dependencies
installed (autodetected) are enabled by default. You can disable those
not required in three different ways:
A. edit the code of the slackbuild
for example, a package enabled by default has this condition:
atc="" [ "${ATC:-no}" = "yes" ] && atc="-DPKG_ATC=yes "
if you want to disable it you have to edit as following:
atc="" [ "${ATC:-no}" = "yes" ] && atc="-DPKG_ATC=yes "
B. remove the variables not required from the global $packages at line
221. The script will not pass the related flags to cmake)
for example, if you want to disable AMOEBA and ATC you have to
remove the strings $amoeba and $atc from packages=$amoeba$asphere...
C. pass to the script the related environment variable as following
AMOEBA=no ATC=no ./lammps.SlackBuild
2. INTERDEPENDENT PACKAGES
The enabling of some packages require that also other packages are
enabled. For example, the ATC package require also MANYBODY enabled.
The script or cmake check if this condition is not respected, so all
required additional packages will be enabled automatically
3. EXTERNAL PACKAGES
Various packages are build as bundled features that interface LAMMPS
to third part software that it should already installed in your
system. These deps are released with the official Slackware (fftw
for example) or available in Slackbuilds.org. Some packages require
the download of additional sources (listed in lammps.info). Please
make sure to download all required extrafiles if the dependent
package is enable. If you do not do this, the process will fail or
starts the download during the compilation.
4. LIST OF PACKAGES AND RELATED REQUIREMENTS
For description of each package see the documentation on line at
https://docs.lammps.org/Packages_list.html
Dependencies available in the official Slackware are not reported.
-----------------------------------------------------------------------
PACKAGE ; ENV. VARIABLE ; ENABLED ALSO ; EXTERNAL DEPENDENCIES
-----------------------------------------------------------------------
AMOEBA ; AMOEBA ; ;
ASPHERE ; ASPHERE ; ;
ATC ; ATC ; MANYBODY ;
AWPMD ; AWPMD ; ;
BOCS ; BOCS ; ;
BODY ; BODY ; ;
BPM ; BPM ; ;
BROWNIAN ; BROWNIAN ; ;
CG-DNA ; CGDNA ; ASPHERE \
MOLECULE ;
CG-SPICA ; CGSPICA ; ;
CLASS2 ; CLASS2 ; ;
COLLOID ; COLLOID ; ;
COLVARS ; COLVARS ; ;
COMPRESS ; COMPRESS ; ;
CORESHELL ; CORESHELL ; ;
DIELECTRIC ; DIELECTRIC ; EXTRA-PAIR \
KSPACE ;
DIFFRACTION ; DIFFRACTION ; ;
DIPOLE ; DIPOLE ; ;
DPD-BASIC ; DPDBASIC ; ;
DPD-MESO ; DPDMESO ; ;
DPD-REACT ; DPDREACT ; ;
DPD-SMOOTH ; DPDSMOOTH ; ;
DRUDE ; DRUDE ; ;
EFF ; EFF ; ;
ELECTRODE ; ELECTRODE ; KSPACE ; OpenBLAS (optional)
EXTRA-COMPUTE ; EXTRACOMPUTE ; ;
EXTRA-DUMP ; EXTRADUMP ; ;
EXTRA-FIX ; EXTRAFIX ; ;
EXTRA-MOLECULE ; EXTRAMOLECULE ; ;
EXTRA-PAIR ; EXTRAPAIR ; ;
FEP ; FEP ; ;
GPU ; GPU ; ; see NOTES
GRANULAR ; GRANULAR ; ;
H5MD ; H5MD ; ; hdf5 (needed)
INTEL ; INTEL ; OPENMP ; see NOTES
INTERLAYER ; INTERLAYER ; ;
KOKKOS ; KOKKOS ; ; see NOTES
KSPACE ; KSPACE ; ;
LATBOLTZ ; LATBOLTZ ; ; see NOTES
LEPTON ; LEPTON ; ;
MACHDYN ; MACHDYN ; ;
MANIFOLD ; MANIFOLD ; ;
MANYBODY ; MANYBODY ; ;
MC ; MC ; ;
MDI ; MDI ; ; download extrasource
MEAM ; MEAM ; ;
MESONT ; MESONT ; MOLECULE ; download data file
MGPT ; MGPT ; ;
MISC ; MISC ; ;
ML-HDNNP ; MLHDNNP ; ; download extrasource
ML-IAP ; MLIAP ; ML-SNAP \
PYTHON ; python3-numpy (needed)
ML-PACE ; MLPACE ; ; download extrasource
ML-POD ; MLPOD ; ;
ML-RANN ; MLRANN ; ;
ML-SNAP ; MLSNAP ; ;
MOFFF ; MOFFF ; ;
MOLECULE ; MOLECULE ; ;
NETCDF ; NETCDF ; ; netcdf
OPENMP ; OPENMP ; ; openmpi (needed) \
(mpich not supported)
OPT ; OPT ; ;
ORIENT ; ORIENT ; ;
PERI ; PERI ; ;
PHONON ; PHONON ; KSPACE ;
PLUMED ; PLUMED ; ; PLUMED
POEMS ; POEMS ; ;
PTM ; PTM ; ;
PYTHON ; PYTHON ; ;
QEQ ; QEQ ; ;
QTB ; QTB ; ;
REACTION ; REACTION ; ;
REAXFF ; REAXFF ; ;
REPLICA ; REPLICA ; ;
RIGID ; RIGID ; ;
SCAFACOS ; SCAFACOS ; ; download extrasource \
openmpi/mpich (needed)
SHOCK ; SHOCK ; ;
SMTBQ ; SMTBQ ; ;
SPH ; SPH ; ;
SPIN ; SPIN ; ;
SRD ; SRD ; ;
TALLY ; TALLY ; ;
UEF ; UEF ; ;
VORONOI ; VORONOI ; ; voro++
YAFF ; YAFF ; ;
-----------------------------------------------------------------------
5. PACKAGES NOT AVAILABLE
Some packages, available in the source, are not supported in this
slackbuild for various reasons. These are:
- ADIOS: requires a library not available in Slackware or SBo.
- KIM: requires the download of extrasource during the compilation
which cannot prevented by a predownload.
- ML-QUIP: the version for non-commercial uses can be downloaded only
during the compilation. A preventive download is allowed
only via git.
- MOLFILE: this package supports the VMD plugin that is must be built
and installed only by sources or packages downloaded after
registration
- MPIIO: this packages is unmantained and it should be enabled with
caution
- MSCG: requires the download of extrasource during the compilation or
the installation in the system. This library is free and open
source but the anonymous download is not permitted.
- QMMM: requires a library that can be built and installed from source
downloaded after registration
- VTK: not available at the moment because the build fails. It is
possible that this is caused by the VTK built in my system: the
issue is a conflict with the support of VTK to openmpi in my
built. I have to make some tests to find the problem.
6. NOTES
The GPU package supports OpenCL, CUDA and HIP by setting the
appropriate build configuration. See the documentation on line if you
would extend the functionality of LAMMPS adapted to you hardware. This
slackbuild sets a basic configuration build the package with OpenCL.
LAMMPS can be build linking the system OpenCL or using a static
internal OpenCL loader. To enable the build with the internal OpenCL
you have to download the extrasource from the link indicated in
lammps.info and pass the variable STATIC_OCL=yes to the slackbuild.
The enabling of this package gives different results depending on the
hardware/software configurations, so it is disabled by default because
we have to apply additional settings to prevent the issues (build
failures and segmentation faults). With a basic configuration I enabled
it in a Slackware current with a an old Nvidia GPU and driver and
using the system OpenCL (the bundled OpenCL gives segmentation fault).
In other tests (Slackware 15 with older Nvidia GPU and driver,
Slackware 32-bit in virtual machine) the build not works. You could
passing GPU=yes (and eventually STATIC_OCL=yes) to the slackbuild to
try if it works in your system with a basic configuration, but it is no
guaranteed.
The INTEL package takes advantage in build and runtime of an advanced
configuration using Intel compilers and hardware it should work also
with other with reduced performances. If detected, the build takes
advantage of the parallelism (MPI and tbb, for example).
KOKKOS is another package that enhance the functionality of LAMMPS
taking advandage of the parallel computation. Since its build requires
resources and a build with a single core seems very long, I set the
enabling by default only for 64-bit architectures because I do not know
how it can be useful in 32-bit systems.
The LATBOLTZ package must be enabled only if LAMMPS is built with the
support to MPI (openmpi or mpich). The script allows the enabling of
LATBOLTZ if one of these dependencies are found in the system.
By default, LAMMPS will be built with Python anyway, even if packages
that require it will not be enabled. If you want disable the support
to Python, you have to launch the slackbuild with
PYTHON=no ./lammps.SlackBuild

View file

@ -0,0 +1,358 @@
#!/bin/bash
# Slackware build script for lammps
# Copyright 2023 Giancarlo Dessi, Cagliari, IT
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=lammps
VERSION=${VERSION:-2023.08.02}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
SRCNAM=lammps-stable
SRCVERSION=${SRCVERSION:-2Aug2023}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
# First detect if openmpi or mpich are installed, so we can build LAMMPS with the
# parallel computing and enable some packages
MP=""
mpi=""
if pkg-config --exists ompi; then
MP="openmpi";
mpi="-DBUILD_OMP=yes "
fi
if pkg-config --exists mpich; then
MP="mpich";
mpi="-DBUILD_MPI=yes "
fi
# These internal packages are enabled by default.
# If you do not require some of them you have to edit the conditions in this block
# otherwise pass the respective environment variables set to "no" to the script
# for each package not desired
# (for example: AMOEBA=no ASPHERE=no ./lammps.SlackBuild)
amoeba="" [ "${AMOEBA:-yes}" = "yes" ] && amoeba="-DPKG_AMOEBA=yes "
asphere="" ; [ "${ASPHERE:-yes}" = "yes" ] && asphere="-DPKG_ASPHERE=yes "
atc="" ; [ "${ATC:-yes}" = "yes" ] && atc="-DPKG_ATC=yes "
awpmd="" ; [ "${AWPMD:-yes}" = "yes" ] && awpmd="-DPKG_AWPMD=yes "
bocs="" ; [ "${BOCS:-yes}" = "yes" ] && bocs="-DPKG_BOCS=yes "
body="" ; [ "${BODY:-yes}" = "yes" ] && body="-DPKG_BODY=yes "
bpm="" ; [ "${BPM:-yes}" = "yes" ] && bpm="-DPKG_BPM=yes "
brownian="" ; [ "${BROWNIAN:-yes}" = "yes" ] && brownian="-DPKG_BROWNIAN=yes "
cgdna="" ; [ "${CGDNA:-yes}" = "yes" ] && cgdna="-DPKG_CG-DNA=yes "
cgspica="" ; [ "${CGSPICA:-yes}" = "yes" ] && cgspica="-DPKG_CG-SPICA=yes "
class2="" ; [ "${CLASS2:-yes}" = "yes" ] && class2="-DPKG_CLASS2=yes "
colloid="" ; [ "${COLLOID:-yes}" = "yes" ] && colloid="-DPKG_COLLOID=yes "
colvars="" ; [ "${COLVARS:-yes}" = "yes" ] && colvars="-DPKG_COLVARS=yes "
compress="" ; [ "${COMPRESS:-yes}" = "yes" ] && compress="-DPKG_COMPRESS=yes "
coreshell="" ; [ "${CORESHELL:-yes}" = "yes" ] && coreshell="-DPKG_CORESHELL=yes "
dielectric="" ; [ "${DIELECTRIC:-yes}" = "yes" ] && dielectric="-DPKG_DIELECTRIC=yes "
diffraction="" ; [ "${DIFFRACTION:-yes}" = "yes" ] && diffraction="-DPKG_DIFFRACTION=yes "
dipole="" ; [ "${DIPOLE:-yes}" = "yes" ] && dipole="-DPKG_DIPOLE=yes "
dpdbasic="" ; [ "${DPDBASIC:-yes}" = "yes" ] && dpdbasic="-DPKG_DPD-BASIC=yes "
dpdmeso="" ; [ "${DPDMESO:-yes}" = "yes" ] && dpdmeso="-DPKG_DPD-MESO=yes "
dpdreact="" ; [ "${DPDREACT:-yes}" = "yes" ] && dpdreact="-DPKG_DPD-REACT=yes "
dpdsmooth="" ; [ "${DPDSMOOTH:-yes}" = "yes" ] && dpdsmooth="-DPKG_DPD-SMOOTH=yes "
drude="" ; [ "${DRUDE:-yes}" = "yes" ] && drude="-DPKG_DRUDE=yes "
eff="" ; [ "${EFF:-yes}" = "yes" ] && eff="-DPKG_EFF=yes "
electrode="" ; [ "${ELECTRODE:-yes}" = "yes" ] && electrode="-DPKG_ELECTRODE=yes "
extracompute="" ; [ "${EXTRACOMPUTE:-yes}" = "yes" ] && extracompute="-DPKG_EXTRA-COMPUTE=yes "
extradump="" ; [ "${EXTRADUMP:-yes}" = "yes" ] && extradump="-DPKG_EXTRA-DUMP=yes "
extrafix="" ; [ "${EXTRAFIX:-yes}" = "yes" ] && extrafix="-DPKG_EXTRA-FIX=yes "
extramolecule="" ; [ "${EXTRAMOLECULE:-yes}" = "yes" ] && extramolecule="-DPKG_EXTRA-MOLECULE=yes "
extrapair="" ; [ "${EXTRAPAIR:-yes}" = "yes" ] && extrapair="-DPKG_EXTRA-PAIR=yes "
fep="" ; [ "${FEP:-yes}" = "yes" ] && fep="-DPKG_FEP=yes "
granular="" ; [ "${GRANULAR:-yes}" = "yes" ] && granular="-DPKG_GRANULAR=yes "
intel="" ; [ "${INTEL:-yes}" = "yes" ] && intel="-DPKG_INTEL=yes "
interlayer="" ; [ "${INTERLAYER:-yes}" = "yes" ] && interlayer="-DPKG_INTERLAYER=yes "
kspace="" ; [ "${KSPACE:-yes}" = "yes" ] && kspace="-DPKG_KSPACE=yes "
lepton="" ; [ "${LEPTON:-yes}" = "yes" ] && lepton="-DPKG_LEPTON=yes "
machdyn="" ; [ "${MACHDYN:-yes}" = "yes" ] && machdyn="-DPKG_MACHDYN=yes "
manifold="" ; [ "${MANIFOLD:-yes}" = "yes" ] && manifold="-DPKG_MANIFOLD=yes "
manybody="" ; [ "${MANYBODY:-yes}" = "yes" ] && manybody="-DPKG_MANYBODY=yes "
mc="" ; [ "${MC:-yes}" = "yes" ] && mc="-DPKG_MC=yes "
mdi="" ; [ "${MDI:-yes}" = "yes" ] && mdi="-DPKG_MDI=yes -DDOWNLOAD_MDI=yes "
meam="" ; [ "${MEAM:-yes}" = "yes" ] && meam="-DPKG_MEAM=yes "
mesont="" ; [ "${MESONT:-yes}" = "yes" ] && mesont="-DPKG_MESONT=yes "
mgpt="" ; [ "${MGPT:-yes}" = "yes" ] && mgpt="-DPKG_MGPT=yes "
misc="" ; [ "${MISC:-yes}" = "yes" ] && misc="-DPKG_MISC=yes "
mlhdnnp="" ; [ "${MLHDNNP:-yes}" = "yes" ] && mlhdnnp="-DPKG_ML-HDNNP=yes "
mliap="" ; [ "${MLIAP:-yes}" = "yes" ] && mliap="-DPKG_ML-IAP=yes -DMLIAP_ENABLE_PYTHON=autodetected "
mlpace="" ; [ "${MLPACE:-yes}" = "yes" ] && mlpace="-DPKG_ML-PACE=yes "
mlpod="" ; [ "${MLPOD:-yes}" = "yes" ] && mlpod="-DPKG_ML-POD=yes "
mlrann="" ; [ "${MLRANN:-yes}" = "yes" ] && mlrann="-DPKG_ML-RANN=yes "
mlsnap="" ; [ "${MLSNAP:-yes}" = "yes" ] && mlsnap="-DPKG_ML-SNAP=yes "
mofff="" ; [ "${MOFFF:-yes}" = "yes" ] && mofff="-DPKG_MOFFF=yes "
molecule="" ; [ "${MOLECULE:-yes}" = "yes" ] && molecule="-DPKG_MOLECULE=yes "
opt="" ; [ "${OPT:-yes}" = "yes" ] && opt="-DPKG_OPT=yes "
orient="" ; [ "${ORIENT:-yes}" = "yes" ] && orient="-DPKG_ORIENT=yes "
peri="" ; [ "${PERI:-yes}" = "yes" ] && peri="-DPKG_PERI=yes "
phonon="" ; [ "${PHONON:-yes}" = "yes" ] && phonon="-DPKG_PHONON=yes "
plugin="" ; [ "${PLUGIN:-yes}" = "yes" ] && plugin="-DPKG_PLUGIN=yes "
poems="" ; [ "${POEMS:-yes}" = "yes" ] && poems="-DPKG_POEMS=yes "
ptm="" ; [ "${PTM:-yes}" = "yes" ] && ptm="-DPKG_PTM=yes "
qeq="" ; [ "${QEQ:-yes}" = "yes" ] && qeq="-DPKG_QEQ=yes "
qtb="" ; [ "${QTB:-yes}" = "yes" ] && qtb="-DPKG_QTB=yes "
reaction="" ; [ "${REACTION:-yes}" = "yes" ] && reaction="-DPKG_REACTION=yes "
reaxff="" ; [ "${REAXFF:-yes}" = "yes" ] && reaxff="-DPKG_REAXFF=yes "
replica="" ; [ "${REPLICA:-yes}" = "yes" ] && replica="-DPKG_REPLICA=yes "
rigid="" ; [ "${RIGID:-yes}" = "yes" ] && rigid="-DPKG_RIGID=yes "
shock="" ; [ "${SHOCK:-yes}" = "yes" ] && shock="-DPKG_SHOCK=yes "
smtbq="" ; [ "${SMTBQ:-yes}" = "yes" ] && smtbq="-DPKG_SMTBQ=yes "
sph="" ; [ "${SPH:-yes}" = "yes" ] && sph="-DPKG_SPH=yes "
spin="" ; [ "${SPIN:-yes}" = "yes" ] && spin="-DPKG_SPIN=yes "
srd="" ; [ "${SRD:-yes}" = "yes" ] && srd="-DPKG_SRD=yes "
tally="" ; [ "${TALLY:-yes}" = "yes" ] && tally="-DPKG_TALLY=yes "
uef="" ; [ "${UEF:-yes}" = "yes" ] && uef="-DPKG_UEF=yes "
yaff="" ; [ "${YAFF:-yes}" = "yes" ] && yaff="-DPKG_YAFF=yes "
# If OpenBLAS is installed ELECTRODE will be enabled using the system LAPACK
# otherwise a bundled linear algebra is used. To force the use of internal
# linear algebra edit the CMake flag setting "-DUSE_INTERNAL_LINALG=yes "
if [ "$electrode" = "-DPKG_ELECTRODE=yes " ]; then
if pkg-config --exists openblas; then
electrode=$electrode"-DUSE_INTERNAL_LINALG=no "
fi
fi
if [ "${PYTHON:-yes}" = "yes" ]; then
python="-DPKG_PYTHON=yes "
else
python=""
mliap=""
fi
# The GPU package requires some basic settings that may be customized through environment
# variables. For advanced options requiring specific hardware configurations (GPU) see the
# documentation in lammps.org
# This package causes many issues depending on the hardware/software configuration (build
# failure or segmentation fault) that require additional settings to be solved, so it is
# disabled by default.
if [ "${GPU:-no}" = "yes" ]; then
# by default the GPU package is enabled using bundled OpenCL ICD loader library/headers
# but users may prefer the local opencl installed in the system
opencl_loader="yes" ; [ "${STATIC_OCL:-no}" = "no" ] && opencl_loader="no"
gpu="-DPKG_GPU=yes -DGPU_API=opencl -DUSE_STATIC_OPENCL_LOADER=${opencl_loader} "
else
opencl_loader=""
gpu=""
fi
# Following conditions enable by default all packages that require dependencies if these
# are installed in the system
latboltz=""
openmp=""
scafacos=""
if [ "$MP" = "openmpi" ]; then
latboltz="" ; [ "${LATBOLTZ:-yes}" = "yes" ] && latboltz="-DPKG_LATBOLTZ=yes "
openmp="" ; [ "${OPENMP:-yes}" = "yes" ] && openmp="-DPKG_OPENMP=yes "
scafacos="" ; [ "${SCAFACOS:-yes}" = "yes" ] && scafacos="-DPKG_SCAFACOS=yes "
fi
if [ "$MP" = "mpich" ]; then
latboltz="" ; [ "${LATBOLTZ:-yes}" = "yes" ] && latboltz="-DPKG_LATBOLTZ=yes "
scafacos="" ; [ "${SCAFACOS:-yes}" = "yes" ] && scafacos="-DPKG_SCAFACOS=yes "
fi
if pkg-config --exists plumed; then
plumed="" ; [ "${PLUMED:-yes}" = "yes" ] && plumed="-DPKG_PLUMED=yes -DDOWNLOAD_PLUMED=no "
else
plumed=""
fi
netcdf=""
if pkg-config --exists netcdf; then
netcdf="" ; [ "${NETCDF:-yes}" = "yes" ] && netcdf="-DPKG_NETCDF=yes "
fi
voronoi=""
if [ -f /usr/bin/voro++ ]; then
voronoi="" ; [ "${VORONOI:-yes}" = "yes" ] && voronoi="-DPKG_VORONOI=yes "
fi
h5md=""
if [ -f /usr/bin/h5cc ]; then
h5md="" ; [ "${H5MD:-yes}" = "yes" ] && h5md="-DPKG_H5MD=yes "
fi
# This shouldn't need in 32-bit architectures, however it significantly extends the build times
# and absorbs many resources. Openmpi is strictly required.
kokkos=""
if [ "$ARCH" = "x86_64" ]; then
if [ "${KOKKOS:-yes}" = "yes" ] ; then
kokkos="-DPKG_KOKKOS=yes -DKokkos_ARCH_NATIVE=yes -DKokkos_ENABLE_OPENMP=yes "
fi
if [ "$MP" != "openmpi" ]; then
kokkos=""
fi
fi
# All required cmake flags related to packages are included in a single global variable
packages=$amoeba$asphere$atc$awpmd$bocs$body$bpm$brownian$cgdna$cgspica$class2$colloid\
$colvars$compress$coreshell$dielectric$diffraction$dipole$dpdbasic$dpdmeso$dpdreact\
$dpdsmooth$drude$eff$electrode$extracompute$extradump$extrafix$extramolecule$extrapair\
$fep$gpu$granular$h5md$intel$interlayer$kokkos$kspace$latboltz$lepton$machdyn$manifold\
$manybody$mc$mdi$meam$mesont$mgpt$misc$mlhdnnp$mliap$mlpace$mlpod$mlrann$mlsnap$mofff\
$molecule$netcdf$openmp$opt$orient$peri$phonon$plugin$plumed$poems$ptm$qeq$qtb$reaction\
$reaxff$replica$rigid$scafacos$shock$smtbq$sph$spin$srd$tally$uef$voronoi$yaff
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf ${SRCNAM}_${SRCVERSION}
tar xvf $CWD/${SRCNAM}_${SRCVERSION}.tar.gz
cd ${SRCNAM}_${SRCVERSION}
echo -e "\nFLAGS FOR PACKAGES ENABLED:\n "$packages"\n"
echo -e "FLAGS FOR PYTHON:\n "$python
echo -e "\nFLAGS FOR MPI:\n "$mpi
if [ "$mesont" != "" ]; then
cp -a $CWD/C_10_10.mesocnt ./potentials
if [ "$molecule" = "" ]; then
echo -e "\n\033[33mYou have enabled the package MESONT. Since this package requires also "
echo -e "the package MOLECULE, the build of MOLECULE will be automatically enabled\033[0m\n"
packages=$packages" -DPKG_MOLECULE=yes "
fi
fi
if [ "$MP" = "" ]; then
echo -e "\n\033[33m******************** WARNING ********************\n"
echo " no API supporting MPI (mpich or openmpi) are "
echo " installed on your system. This does not affect "
echo " the build and installation of LAMMPS, but some "
echo " packages cannot be enabled and other may work "
echo " not optimally. "
echo -e "\n*************************************************\n\033[0m"
fi
# Prepare directories to move the extrafiles needed to build some packages
mkdir -p cmake/build
if [ "$opencl_loader" = "yes" ]; then
mkdir -p cmake/build/_deps
cp -a $CWD/opencl-loader-2022.01.04.tar.gz cmake/build/_deps
fi
if [ "$mdi" != "" ]; then
mkdir -p cmake/build/mdi_build_ext/src/
cp -a $CWD/MDI_Library-1.4.16.tar.gz cmake/build/mdi_build_ext/src/v1.4.16.tar.gz
fi
if [ "$mlhdnnp" != "" ]; then
mkdir -p cmake/build/n2p2_build-prefix/src/
cp -a $CWD/n2p2-2.2.0.tar.gz cmake/build/n2p2_build-prefix/src/v2.2.0.tar.gz
fi
if [ "$mlpace" != "" ]; then
cp -a $CWD/lammps-user-pace-v.2023.01.3.fix.tar.gz cmake/build/libpace.tar.gz
fi
if [ "$scafacos" != "" ]; then
mkdir -p cmake/build/scafacos_build-prefix/src
cp -a $CWD/scafacos-1.0.1.tar.gz cmake/build/scafacos_build-prefix/src
fi
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
# The Source has not a CMakeLists.txt file in the root directory we
# need to change in the cmake directory
cd cmake
cd build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
$mpi \
$python \
$packages \
..
make
make install DESTDIR=$PKG
cd ..
rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
#Since the build installs man in /usr/share we move the directory in /usr
mv -v $PKG/usr/share/man $PKG/usr
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
#Since the build installs etc as subfolder of /usr (?), we move it in the root directory
mv -v $PKG/usr/etc $PKG
cd $TMP/${SRCNAM}_${SRCVERSION}
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a LICENSE README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE

View file

@ -0,0 +1,22 @@
PRGNAM="lammps"
VERSION="2023.08.02"
HOMEPAGE="https://www.lammps.org"
DOWNLOAD="https://github.com/lammps/lammps/archive/stable_2Aug2023/lammps-stable_2Aug2023.tar.gz \
https://download.lammps.org/potentials/C_10_10.mesocnt \
https://download.lammps.org/thirdparty/opencl-loader-2022.01.04.tar.gz \
https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.16.tar.gz \
https://github.com/CompPhysVienna/n2p2/archive/v2.2.0.tar.gz \
https://github.com/ICAMS/lammps-user-pace/archive/v.2023.01.3.fix.tar.gz \
https://github.com/scafacos/scafacos/releases/download/v1.0.1/scafacos-1.0.1.tar.gz"
MD5SUM="276af48be230518d8a281387838d6efd \
68b5ca26283968fd9889aa0a37f7b7fb \
8d3a801e87a2c6653bf0e27707063914 \
407db44e2d79447ab5c1233af1965f65 \
a2d9ab7f676b3a74a324fc1eda0a911d \
4f0b3b5b14456fe9a73b447de3765caa \
bd46d74e3296bd8a444d731bb10c1738"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="openmpi"
MAINTAINER="Giancarlo Dessi"
EMAIL="slack@giand.it"

View file

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
lammps: lammps (LAMMPS Molecular Dynamics Simulator)
lammps:
lammps: LAMMPS stands for
lammps: Large-scale Atomic/Molecular Massively Parallel Simulator.
lammps: It was developed at Sandia National Laboratories (US Department of
lammps: Energy) and is designed to run efficiently on parallel computers.
lammps:
lammps:
lammps: Home page: https://www.lamps.org
lammps:
lammps: