summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/pflotran/package.py
blob: 57ec70631f1adef0269283770482dbcb002512a8 (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
# 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)


from spack.package import *


class Pflotran(AutotoolsPackage):
    """PFLOTRAN is an open source, state-of-the-art massively parallel
    subsurface flow and reactive transport code.
    """

    homepage = "https://www.pflotran.org"
    git = "https://bitbucket.org/pflotran/pflotran.git"

    maintainers("ghammond86", "balay")

    license("LGPL-3.0-only")

    version("develop")
    version("5.0.0", commit="f0fe931c72c03580e489724afeb8c5451406b942")  # tag v5.0.0
    version("4.0.1", commit="fd351a49b687e27f46eae92e9259156eea74897d")  # tag v4.0.1
    version("3.0.2", commit="9e07f416a66b0ad304c720b61aa41cba9a0929d5")  # tag v3.0.2
    version("xsdk-0.6.0", commit="46e14355c1827c057f2e1b3e3ae934119ab023b2")
    version("xsdk-0.5.0", commit="98a959c591b72f73373febf5f9735d2c523b4c20")
    version("xsdk-0.4.0", commit="c851cbc94fc56a32cfdb0678f3c24b9936a5584e")
    version("xsdk-0.3.0", branch="release/xsdk-0.3.0")

    variant("rxn", default=False, description="Use inbuilt reaction code, useful with cray ftn")

    depends_on("mpi")
    depends_on("hdf5@1.8.12:+mpi+fortran+hl")
    depends_on("petsc@main:+hdf5+metis", when="@develop")
    depends_on("petsc@3.20:+hdf5+metis", when="@5.0.0")
    depends_on("petsc@3.18:+hdf5+metis", when="@4.0.1")
    depends_on("petsc@3.16:+hdf5+metis", when="@3.0.2")
    depends_on("petsc@3.14:+hdf5+metis", when="@xsdk-0.6.0")
    depends_on("petsc@3.12:+hdf5+metis", when="@xsdk-0.5.0")
    depends_on("petsc@3.10:+hdf5+metis", when="@xsdk-0.4.0")
    depends_on("petsc@3.8.0:+hdf5+metis", when="@xsdk-0.3.0")

    # https://github.com/spack/spack/pull/37579#issuecomment-1545998141
    conflicts("^hdf5@1.14.1", when="%oneapi")

    def build(self, spec, prefix):
        if spec.satisfies("+rxn"):
            with working_dir("src/pflotran"):
                make("pflotran_rxn")
        else:
            make("all")

    @property
    def parallel(self):
        return self.spec.satisfies("@xsdk-0.4.0:")

    def flag_handler(self, name, flags):
        if "%gcc@10:" in self.spec and name == "fflags":
            flags.append("-fallow-argument-mismatch")
        return flags, None, None

    @when("@5.0.0")
    def patch(self):
        filter_file(
            "use iso_[cC]_binding", "use, intrinsic :: iso_c_binding", "src/pflotran/hdf5_aux.F90"
        )