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      ;              ; scafacos
SHOCK          ; SHOCK         ;              ;
SMTBQ          ; SMTBQ         ;              ;
SPH            ; SPH           ;              ;
SPIN           ; SPIN          ;              ;
SRD            ; SRD           ;              ;
TALLY          ; TALLY         ;              ;
UEF            ; UEF           ;              ;
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 be 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
- VORONOI: since the required dependency available in this repository
        can be build as static library, this package is not compatible
        when lammps is built enabling shared libraries, so support to
        it is disabled
- 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 enhances 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
