diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/lammps/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/lammps/package.py | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py new file mode 100644 index 0000000000..7eeea42773 --- /dev/null +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -0,0 +1,112 @@ +############################################################################## +# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/spack/spack +# +# Please also see the NOTICE and LICENSE files for our notice and the LGPL. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * +import datetime as dt + + +class Lammps(CMakePackage): + """LAMMPS stands for Large-scale Atomic/Molecular Massively + Parallel Simulator. This package uses patch releases, not + stable release. + See https://github.com/spack/spack/pull/5342 for a detailed + discussion. + """ + homepage = "http://lammps.sandia.gov/" + url = "https://github.com/lammps/lammps/archive/patch_1Sep2017.tar.gz" + + version('20170922', '4306071f919ec7e759bda195c26cfd9a') + version('20170901', '767e7f07289663f033474dfe974974e7') + version('develop', git='https://github.com/lammps/lammps', branch='master') + + def url_for_version(self, version): + vdate = dt.datetime.strptime(str(version), "%Y%m%d") + return "https://github.com/lammps/lammps/archive/patch_{0}.tar.gz".format( + vdate.strftime("%d%b%Y").lstrip('0')) + + supported_packages = ['asphere', 'body', 'class2', 'colloid', 'compress', + 'coreshell', 'dipole', 'granular', 'kspace', 'latte', + 'manybody', 'mc', 'meam', 'misc', 'molecule', + 'mpiio', 'peri', 'poems', 'python', 'qeq', 'reax', + 'replica', 'rigid', 'shock', 'snap', 'srd', + 'user-atc', 'user-h5md', 'user-lb', 'user-misc', + 'user-netcdf', 'user-omp', 'voronoi'] + + for pkg in supported_packages: + variant(pkg, default=False, + description='Activate the {0} package'.format(pkg)) + variant('lib', default=True, + description='Build the liblammps in addition to the executable') + variant('mpi', default=True, + description='Build with mpi') + + depends_on('mpi', when='+mpi') + depends_on('mpi', when='+mpiio') + depends_on('fftw', when='+kspace') + depends_on('voropp', when='+voronoi') + depends_on('netcdf+mpi', when='+user-netcdf') + depends_on('blas', when='+user-atc') + depends_on('lapack', when='+user-atc') + depends_on('latte', when='+latte') + depends_on('blas', when='+latte') + depends_on('lapack', when='+latte') + depends_on('python', when='+python') + depends_on('mpi', when='+user-lb') + depends_on('mpi', when='+user-h5md') + depends_on('hdf5', when='+user-h5md') + + conflicts('+body', when='+poems') + conflicts('+latte', when='@:20170921') + conflicts('+python', when='~lib') + conflicts('+qeq', when='~manybody') + conflicts('+user-atc', when='~manybody') + conflicts('+user-misc', when='~manybody') + conflicts('+user-phonon', when='~kspace') + conflicts('+user-misc', when='~manybody') + + patch("lib.patch", when="@20170901") + patch("660.patch", when="@20170922") + + root_cmakelists_dir = 'cmake' + + def cmake_args(self): + spec = self.spec + + args = [ + '-DBUILD_SHARED_LIBS={0}'.format( + 'ON' if '+lib' in spec else 'OFF'), + '-DENABLE_MPI={0}'.format( + 'ON' if '+mpi' in spec else 'OFF') + ] + + for pkg in self.supported_packages: + opt = '-DENABLE_{0}'.format(pkg.upper()) + if '+{0}'.format(pkg) in spec: + args.append('{0}=ON'.format(opt)) + else: + args.append('{0}=OFF'.format(opt)) + if '+kspace' in spec: + args.append('-DFFT=FFTW3') + + return args |