SeLaLib: add new package (#39847)
This commit is contained in:
parent
15085ef6e5
commit
2de0e30016
72
var/spack/repos/builtin/packages/selalib/package.py
Normal file
72
var/spack/repos/builtin/packages/selalib/package.py
Normal file
@ -0,0 +1,72 @@
|
||||
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class Selalib(CMakePackage):
|
||||
"""SeLaLib is a modular library for the kinetic and gyrokinetic simulation
|
||||
of tokamak plasmas by the semi-lagrangian or particle-in-cell methods"""
|
||||
|
||||
homepage = "https://selalib.github.io/selalib"
|
||||
url = "https://github.com/selalib/selalib"
|
||||
git = "https://github.com/selalib/selalib"
|
||||
|
||||
maintainers("pnavaro", "freifrauvonbleifrei")
|
||||
|
||||
version("main", branch="main")
|
||||
|
||||
variant("fmempool", default=False, description="Use memory pool")
|
||||
variant("mpi", default=True, description="Build with MPI support")
|
||||
variant("openmp", default=True, description="Build with OpenMP support")
|
||||
variant("compression", default=False, description="Add compression by ZFP")
|
||||
|
||||
requires(
|
||||
"%gcc@9.0.0:",
|
||||
"%clang@16.0.0:",
|
||||
"%intel@18.0:",
|
||||
"%oneapi@18.0:",
|
||||
policy="one_of",
|
||||
msg="SeLaLib requires new-enough Fortran compiler",
|
||||
)
|
||||
|
||||
depends_on("cmake@3.6.0:", type=("build"))
|
||||
depends_on("blas")
|
||||
depends_on("fftw")
|
||||
depends_on("fftw+openmp", when="+openmp")
|
||||
depends_on("fgsl")
|
||||
depends_on("git", type=("build", "run", "test"))
|
||||
depends_on("hdf5+fortran+cxx")
|
||||
with when("+mpi"):
|
||||
depends_on("mpi")
|
||||
depends_on("fftw+mpi")
|
||||
depends_on("hdf5+mpi")
|
||||
depends_on("python@3.0.0:", type=("build"))
|
||||
# beware: compiling w/ zfp may throw type mismatch errors
|
||||
depends_on("zfp+fortran", when="+compression")
|
||||
|
||||
def cmake_args(self):
|
||||
args = [
|
||||
self.define_from_variant("OPENMP_ENABLED", "openmp"),
|
||||
self.define_from_variant("HDF5_PARALLEL_ENABLED", "mpi"),
|
||||
self.define_from_variant("USE_FMEMPOOL", "fmempool"),
|
||||
self.define("FFTW_ENABLED", "ON"),
|
||||
]
|
||||
return args
|
||||
|
||||
def setup_build_environment(self, env):
|
||||
env.set("FFTW_INCLUDE", self.spec["fftw"].prefix.include)
|
||||
env.set("FFTW_ROOT", self.spec["fftw"].prefix)
|
||||
|
||||
@run_after("build")
|
||||
@on_package_attributes(run_tests=True)
|
||||
def quick_serial_ctest(self):
|
||||
"""quickly run a serial subset of tests for sanity check"""
|
||||
ctest = which("ctest")
|
||||
with working_dir(self.build_directory):
|
||||
ctest("--output-on-failure", "-R", "test_mud2")
|
||||
ctest("--output-on-failure", "-R", "sparse_grid_4d")
|
||||
ctest("--output-on-failure", "-R", "scalar_field_2d")
|
||||
ctest("--output-on-failure", "-R", "maxwell_3d_fem_fft")
|
Loading…
Reference in New Issue
Block a user