diff options
author | svengoldberg <102215246+svengoldberg@users.noreply.github.com> | 2023-08-24 00:48:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-23 18:48:21 -0400 |
commit | a95e061fed445df2ddee78a3ac6ccdac83e52368 (patch) | |
tree | 219be2ee43d6fc0a1b87081bca557836926f0f02 | |
parent | e01b9b38ef497b9503c8361547d8f22ae5c69f88 (diff) | |
download | spack-a95e061fed445df2ddee78a3ac6ccdac83e52368.tar.gz spack-a95e061fed445df2ddee78a3ac6ccdac83e52368.tar.bz2 spack-a95e061fed445df2ddee78a3ac6ccdac83e52368.tar.xz spack-a95e061fed445df2ddee78a3ac6ccdac83e52368.zip |
Include t8code package (#39391)
* t8code: Create new spack package
Co-authored-by: Bernhard Kaindl <bernhardkaindl7@gmail.com>
-rw-r--r-- | var/spack/repos/builtin/packages/t8code/package.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/t8code/package.py b/var/spack/repos/builtin/packages/t8code/package.py new file mode 100644 index 0000000000..a922c9a348 --- /dev/null +++ b/var/spack/repos/builtin/packages/t8code/package.py @@ -0,0 +1,75 @@ +# Copyright 2013-2023 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) + +import os + +from spack.package import * + + +class T8code(AutotoolsPackage): + """t8code is a C/C++ library to manage parallel adaptive meshes with various element types. + t8code uses a collection (a forest) of multiple connected adaptive space-trees in parallel + and scales to at least one million MPI ranks and over one Trillion mesh elements.""" + + homepage = "https://github.com/DLR-AMR/t8code" + url = "https://github.com/DLR-AMR/t8code/releases/download/v1.4.1/t8-1.4.1.tar.gz" + + maintainers = ["Davknapp", "melven"] + + version("1.4.1", sha256="b0ec0c9b4a182f8ac7e930ba80cd20e6dc5baefc328630e4a9dac8c688749e9a") + + variant("mpi", default=True, description="Enable MPI parallel code") + variant("vtk", default=False, description="Enable vtk-dependent code") + variant("petsc", default=False, description="Enable PETSc-dependent code") + variant("netcdf", default=False, description="Enable NetCDF-dependent code") + variant("metis", default=False, description="Enable metis-dependent code") + + depends_on("mpi", when="+mpi") + depends_on("vtk@9.1:", when="+vtk") + # t8code@1.4.1 doesn't build with petsc@3.19.1 + depends_on("petsc@3.18", when="+petsc") + depends_on("netcdf-c~mpi", when="+netcdf~mpi") + depends_on("netcdf-c+mpi", when="+netcdf+mpi") + depends_on("metis", when="+metis") + + # Per default, t8code uses hardcoded zlib library from vtk package + # The configure command is overwritten to choose the integrated spack package + def patch(self): + if "+vtk" in self.spec: + filter_file(r"vtkzlib-\$t8_vtk_version", "z", "configure") + + def configure_args(self): + args = ["CFLAGS=-O3", "CXXFLAGS=-O3"] + spec = self.spec + + if "+mpi" in spec: + args.append("--enable-mpi") + args.append("CC=mpicc") + args.append("CXX=mpicxx") + else: + args.append("--disable-mpi") + + if "+vtk" in spec: + args.append("--with-vtk") + vtk_ver = spec["vtk"].version.up_to(2) + include_dir = os.path.join(spec["vtk"].headers.directories[0], f"vtk-{vtk_ver}") + lib_dir = spec["vtk"].prefix.lib + + # vtk paths need to be passed to configure command + args.append(f"CPPFLAGS=-I{include_dir}") + args.append(f"LDFLAGS=-L{lib_dir}") + # Chosen vtk version number is needed for t8code to find the right version + args.append(f"--with-vtk_version_number={vtk_ver}") + + if "+petsc" in spec: + args.append(f"--with-petsc={spec['petsc'].prefix}") + + if "+netcdf" in spec: + args.append("--with-netcdf") + + if "+metis" in spec: + args.append(f"--with-metis={spec['metis'].prefix}") + + return args |