summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/alquimia/package.py
blob: 5fb67270a82f6178929b93b1a748128ce50dd9cf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Copyright 2013-2024 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 Alquimia(CMakePackage):
    """Alquimia is an interface that exposes the capabilities
    of mature geochemistry codes such as CrunchFlow and PFLOTRAN"""

    homepage = "https://github.com/LBL-EESA/alquimia-dev"
    git = "https://github.com/LBL-EESA/alquimia-dev.git"

    maintainers("smolins", "balay")

    license("BSD-3-Clause-LBNL")

    version("master")
    version("1.1.0", commit="211931c3e76b1ae7cdb48c46885b248412d6fe3d")  # tag v1.1.0
    version("1.0.10", commit="b2c11b6cde321f4a495ef9fcf267cb4c7a9858a0")  # tag v.1.0.10
    version("1.0.9", commit="2ee3bcfacc63f685864bcac2b6868b48ad235225")  # tag v.1.0.9
    version("xsdk-0.6.0", commit="9a0aedd3a927d4d5e837f8fd18b74ad5a78c3821")
    version("xsdk-0.5.0", commit="8397c3b00a09534c5473ff3ab21f0e32bb159380")

    variant("shared", default=True, description="Enables the build of shared libraries")

    depends_on("mpi")
    depends_on("hdf5")
    depends_on("pflotran@5.0.0", when="@1.1.0")
    depends_on("pflotran@4.0.1", when="@1.0.10")
    depends_on("pflotran@3.0.2", when="@1.0.9")
    depends_on("pflotran@xsdk-0.6.0", when="@xsdk-0.6.0")
    depends_on("pflotran@xsdk-0.5.0", when="@xsdk-0.5.0")
    depends_on("pflotran@develop", when="@develop")
    depends_on("petsc@3.10:", when="@develop")

    @when("@1.0.10:1.1.0")
    def patch(self):
        filter_file(
            "use iso_[cC]_binding",
            "use, intrinsic :: iso_c_binding",
            "alquimia/c_f_interface_module.F90",
            "alquimia/alquimia_fortran_interface_mod.F90",
        )

    def cmake_args(self):
        spec = self.spec

        options = [
            "-DCMAKE_C_COMPILER=%s" % spec["mpi"].mpicc,
            "-DCMAKE_Fortran_COMPILER=%s" % spec["mpi"].mpifc,
            "-DUSE_XSDK_DEFAULTS=YES",
            self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
            "-DTPL_ENABLE_MPI:BOOL=ON",
            "-DMPI_BASE_DIR:PATH=%s" % spec["mpi"].prefix,
            "-DTPL_ENABLE_HDF5:BOOL=ON",
            "-DXSDK_WITH_PFLOTRAN:BOOL=ON",
            # This is not good.
            # It assumes that the .a file exists and is not a .so
            "-DTPL_PFLOTRAN_LIBRARIES=%s" % (spec["pflotran"].prefix.lib + "/libpflotranchem.a"),
            "-DTPL_PFLOTRAN_INCLUDE_DIRS=%s" % (spec["pflotran"].prefix.include),
            "-DTPL_ENABLE_PETSC:BOOL=ON",
            "-DPETSC_EXECUTABLE_RUNS=ON",
            "-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib" % self.prefix,
        ]
        return options