summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorSteven Smith <smith84@llnl.gov>2021-06-16 05:56:36 -0700
committerGitHub <noreply@github.com>2021-06-16 14:56:36 +0200
commit058ae3f0fd6ed2c27d4a64858959ead7a6844f80 (patch)
tree35e948e6df398b36484e57e3a51e566fc5140f70 /var
parent2439b8d59c089be465312fd94539fcb2358cfb9d (diff)
downloadspack-058ae3f0fd6ed2c27d4a64858959ead7a6844f80.tar.gz
spack-058ae3f0fd6ed2c27d4a64858959ead7a6844f80.tar.bz2
spack-058ae3f0fd6ed2c27d4a64858959ead7a6844f80.tar.xz
spack-058ae3f0fd6ed2c27d4a64858959ead7a6844f80.zip
ParFlow: add new package (#24331)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/parflow/package.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/parflow/package.py b/var/spack/repos/builtin/packages/parflow/package.py
new file mode 100644
index 0000000000..c4040859ad
--- /dev/null
+++ b/var/spack/repos/builtin/packages/parflow/package.py
@@ -0,0 +1,81 @@
+# Copyright 2013-2021 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 import *
+import os
+
+
+class Parflow(CMakePackage):
+ """ParFlow is an open-source parallel watershed simulator which
+ includes overland flow, complex topology, heterogeneity and coupled
+ land-surface processes."""
+
+ homepage = "https://www.parflow.org/"
+ url = "https://github.com/parflow/parflow/archive/v3.9.0.tar.gz"
+ git = "https://github.com/parflow/parflow.git"
+
+ maintainers = ['smithsg84']
+
+ version('develop', branch='master')
+ version('3.9.0', sha256='0ac610208baf973ac07ca93187ec289ba3f6e904d3f01d721ee96a2ace0f5e48')
+ version('3.8.0', sha256='5ad01457bb03265d1e221090450e3bac5a680d6290db7e3872c295ce6d6aaa08')
+
+ variant('mpi', default=True, description='Enable MPI support')
+
+ # Using explicit versions to keep builds consistent
+ depends_on('tcl@8.6.11')
+ depends_on('mpi@3.0.0', when='+mpi')
+ depends_on('hdf5@1.10.7 +mpi', when='+mpi')
+ depends_on('netcdf-c@4.5.0')
+ depends_on('silo@4.10.2 -hzip -fpzip')
+ depends_on('hypre@2.20.0')
+
+ parallel = False
+
+ def cmake_args(self):
+ """Populate cmake arguments for ParFlow."""
+ spec = self.spec
+
+ cmake_args = [
+ '-DCMAKE_BUILD_TYPE=Release',
+ '-DPARFLOW_AMPS_LAYER=mpi1',
+ '-DPARFLOW_HAVE_CLM=TRUE',
+ '-DTCL_TCLSH={0}'.format(spec['tcl'].prefix.bin.tclsh),
+ '-DTCL_LIBRARY={0}'.format(LibraryList(find_libraries('libtcl*',
+ self.spec['tcl'].prefix,
+ shared=True, recursive=True))),
+ '-DHDF5_ROOT={0}'.format(spec['hdf5'].prefix),
+ '-DSILO_ROOT={0}'.format(spec['silo'].prefix),
+ '-DHYPRE_ROOT={0}'.format(spec['hypre'].prefix),
+ '-DPARFLOW_ENABLE_NETCDF=TRUE',
+ '-DNETCDF_DIR={0}'.format(spec['netcdf-c'].prefix),
+ ]
+
+ return cmake_args
+
+ def setup_run_environment(self, env):
+ """Setup the run environment for ParFlow package."""
+ # ParFlow requires a PARFLOW_DIR env variable for correct execution
+ env.set('PARFLOW_DIR', self.spec.prefix)
+
+ examples_dir = "examples"
+
+ def test(self):
+ """Perform smoke test on installed ParFlow package."""
+ # Run the single phase flow test
+ run_path = join_path(self.spec.prefix, self.examples_dir)
+ if os.path.isdir(run_path):
+ with working_dir(run_path):
+ self.run_test(
+ '{0}/tclsh'.format(self.spec['tcl'].prefix.bin),
+ ['default_single.tcl', '1', '1' '1'])
+ else:
+ # If examples are not installed test if exe executes
+ exes = ['parflow']
+ for exe in exes:
+ reason = 'test version of {0} is {1}'.format(exe,
+ self.spec.version)
+ self.run_test(exe, ['-v'], [self.spec.version.string],
+ installed=True, purpose=reason)