summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/gchp/package.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/gchp/package.py b/var/spack/repos/builtin/packages/gchp/package.py
new file mode 100644
index 0000000000..acbc3786e3
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gchp/package.py
@@ -0,0 +1,54 @@
+# 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 shutil
+
+
+class Gchp(CMakePackage):
+ """GEOS-Chem High Performance model of atmospheric chemistry"""
+
+ homepage = "https://gchp.readthedocs.io/"
+ url = "https://github.com/geoschem/GCHP/archive/13.0.0-rc.0.tar.gz"
+
+ maintainers = ['williamdowns']
+
+ version('13.0.0-rc.0', git='https://github.com/geoschem/GCHP.git',
+ commit='4bd15316faf4e5f06517d3a6b1df1986b1126d90', submodules=True)
+ # NOTE: Post-13.0.0-rc.0 versions will have fix that
+ # allows these ESMF variants to be enabled
+ depends_on('esmf@8.0.1: -lapack -pio -pnetcdf -xerces')
+ depends_on('mpi@3')
+ depends_on('netcdf-fortran')
+ depends_on('cmake@3.13:')
+
+ variant('omp', default=False, description="OpenMP parallelization")
+ variant('real8', default=True, description="REAL*8 precision")
+ variant('apm', default=False, description="APM Microphysics (Experimental)")
+ variant('rrtmg', default=False, description="RRTMG radiative transfer model")
+ variant('luo', default=False, description="Luo et al 2019 wet deposition scheme")
+ variant('tomas', default=False, description="TOMAS Microphysics (Experimental)")
+
+ def cmake_args(self):
+ args = [self.define("RUNDIR", self.prefix),
+ self.define_from_variant('OMP', 'omp'),
+ self.define_from_variant('USE_REAL8', 'real8'),
+ self.define_from_variant('APM', 'apm'),
+ self.define_from_variant('RRTMG', 'rrtmg'),
+ self.define_from_variant('LUO_WETDEP', 'luo'),
+ self.define_from_variant('TOMAS', 'tomas')]
+ return args
+
+ def install(self, spec, prefix):
+ super().install(spec, prefix)
+ # Preserve source code in prefix for two reasons:
+ # 1. Run directory creation occurs independently of code compilation,
+ # possibly multiple times depending on user needs,
+ # and requires the preservation of some of the source code structure.
+ # 2. Run configuration is relatively complex and can result in error
+ # messages that point to specific modules / lines of the source code.
+ # Including source code thus facilitates runtime debugging.
+ shutil.move(self.stage.source_path,
+ join_path(prefix, 'source_code'))