spack/var/spack/repos/builtin/packages/thornado-mini/package.py
2025-01-03 23:00:18 +01:00

87 lines
2.7 KiB
Python

# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
from spack.package import *
class ThornadoMini(MakefilePackage):
"""Code to solve the equation of radiative transfer in the
multi-group two-moment approximation"""
tags = ["proxy-app", "ecp-proxy-app"]
homepage = "https://sites.google.com/lbl.gov/exastar/home"
url = "https://github.com/ECP-Astro/thornado_mini/archive/v1.0.tar.gz"
git = "https://github.com/ECP-Astro/thornado_mini.git"
version("1.0", sha256="8a9f97acc823d374cce567831270cfcc50fa968949e49159c7e3442b93a2827d")
depends_on("fortran", type="build") # generated
depends_on("mpi")
depends_on("hdf5+fortran")
depends_on("lapack")
parallel = False
def edit(self, spec, prefix):
os.environ["THORNADO_MACHINE"] = "mymachine"
os.environ["THORNADO_DIR"] = os.getcwd()
file = open("Makefile", "w")
file.write(
"FORTRAN_mymachine = %s %s\n" % (self.spec["mpi"].mpifc, self.compiler.openmp_flag)
)
file.write(
"FLINKER_mymachine = %s %s\n" % (self.spec["mpi"].mpifc, self.compiler.openmp_flag)
)
file.write("DEBUG_mymachine = -g -ffpe-trap=invalid,zero -fcheck=bounds\n")
file.write("OPTIMIZE_mymachine = -O2\n")
file.write("INCLUDE_HDF5_mymachine = \n")
file.write("INCLUDE_LAPACK_mymachine = \n")
file.write("LIBRARIES_HDF5_mymachine = \n")
file.write("LIBRARIES_LAPACK_mymachine = \n")
file.write(
"export FORTRAN_mymachine FLINKER_mymachine DEBUG_mymachine OPTIMIZE_mymachine\n"
)
file.write("all:\n")
file.write(
"\t@$(MAKE) -C $(THORNADO_DIR)/DeleptonizationProblem/Executables -f Makefile\n"
)
file.close()
@property
def build_targets(self):
targets = []
targets.append("INCLUDE_HDF5_mymachine = -I{0}".format(self.spec["hdf5"].prefix.include))
targets.append(
"INCLUDE_LAPACK_mymachine = -I{0}".format(self.spec["lapack"].prefix.include)
)
targets.append(
"LIBRARIES_HDF5_mymachine = {0} -lhdf5_fortran".format(self.spec["hdf5"].libs.ld_flags)
)
targets.append(
"LIBRARIES_LAPACK_mymachine = {0}".format(self.spec["lapack"].libs.ld_flags)
)
return targets
def install(self, spec, prefix):
install_tree("Documents", prefix.docs)
install("README.md", prefix.docs)
mkdirp(prefix.bin)
install(
"DeleptonizationProblem/Executables/"
"DeleptonizationProblem1D_%s" % os.environ["THORNADO_MACHINE"],
prefix.bin,
)