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
|