summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorAdam J. Stewart <ajstewart426@gmail.com>2019-08-30 18:18:33 -0500
committerGitHub <noreply@github.com>2019-08-30 18:18:33 -0500
commit9c983230807efe12b17ab30501c1c5e10674edfc (patch)
tree9c60bee974a08154d0843318779dadb8f76f944d /var
parent7e7e0723b5098a9b14e1b73e4a5af29f46709886 (diff)
downloadspack-9c983230807efe12b17ab30501c1c5e10674edfc.tar.gz
spack-9c983230807efe12b17ab30501c1c5e10674edfc.tar.bz2
spack-9c983230807efe12b17ab30501c1c5e10674edfc.tar.xz
spack-9c983230807efe12b17ab30501c1c5e10674edfc.zip
Add athena package (#12663)
* Add athena package * Flake8 fix * Fix missing separator error * Add master branch
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/athena/missing-separator.patch13
-rw-r--r--var/spack/repos/builtin/packages/athena/package.py226
2 files changed, 239 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/athena/missing-separator.patch b/var/spack/repos/builtin/packages/athena/missing-separator.patch
new file mode 100644
index 0000000000..8b89488941
--- /dev/null
+++ b/var/spack/repos/builtin/packages/athena/missing-separator.patch
@@ -0,0 +1,13 @@
+diff --git a/Makeoptions.in b/Makeoptions.in
+index b680132..4d1aa4e 100644
+--- a/Makeoptions.in
++++ b/Makeoptions.in
+@@ -96,7 +96,7 @@ ifeq ($(MACHINE),macosx)
+ FFTWLIB = -L/opt/local/lib -lfftw3
+ FFTWINC = -I/opt/local/include
+ else
+- abort Unsupported MACHINE=$(MACHINE)
++ $(abort Unsupported MACHINE=$(MACHINE))
+ endif
+ endif
+ endif
diff --git a/var/spack/repos/builtin/packages/athena/package.py b/var/spack/repos/builtin/packages/athena/package.py
new file mode 100644
index 0000000000..c543eb8c1e
--- /dev/null
+++ b/var/spack/repos/builtin/packages/athena/package.py
@@ -0,0 +1,226 @@
+# Copyright 2013-2019 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 *
+
+
+class Athena(AutotoolsPackage):
+ """Athena is a grid-based code for astrophysical magnetohydrodynamics
+ (MHD). It was developed primarily for studies of the interstellar medium,
+ star formation, and accretion flows."""
+
+ homepage = "https://princetonuniversity.github.io/Athena-Cversion/"
+ url = "https://github.com/PrincetonUniversity/Athena-Cversion/archive/version-4.2.tar.gz"
+ git = "https://github.com/PrincetonUniversity/Athena-Cversion.git"
+
+ version('master', branch='master')
+ version('4.2', sha256='6334848d7f1325aa44859418feac8ce223b56793ae8907103000af5b27f50e7e')
+
+ # PHYSICS "packages":
+ variant('problem', default='linear_wave', description='Problem generator',
+ values=[
+ 'blast', 'carbuncle', 'collapse3d', 'cpaw', 'cshock1d',
+ 'current_sheet', 'cyladvect', 'cylblast', 'cylbphi', 'cylbr',
+ 'cylcvmri', 'cyldiff', 'cylfieldloop', 'cylnewtmri', 'cylrayleigh',
+ 'cylspiral', 'cylwind', 'cylwindrot', 'cylwindrotb', 'dmr', 'fft_test',
+ 'field_loop', 'firehose', 'hall_drift', 'hb3', 'hgb', 'hkdisk',
+ 'jeans', 'jet', 'kh', 'linear_wave', 'lw_implode', 'msa', 'noh',
+ 'orszag-tang', 'par_collision', 'par_epicycle', 'par_strat2d',
+ 'par_strat3d', 'pgflow', 'rotor', 'rt', 'shk_cloud', 'shkset1d',
+ 'shkset2d', 'shkset3d', 'shu-osher', 'strat', 'streaming2d_multi',
+ 'streaming2d_single', 'streaming3d_multi', 'streaming3d_single',
+ 'twoibw'])
+ variant('gas', default='mhd', description='Gas properties',
+ values=['mhd', 'hydro'])
+ variant('eos', default='adiabatic', description='Equation of state',
+ values=['adiabatic', 'isothermal'])
+ variant('nscalars', default=0, description='Number of advected scalars')
+ variant('gravity', default='none', description='Algorithm for self gravity',
+ values=['fft', 'fft_disk', 'fft_obc', 'multigrid', 'none'])
+ variant('particles', default='none',
+ description='Dust particle integration algorithm',
+ values=['feedback', 'passive', 'none'])
+ variant('coord', default='cartesian', description='Coordinate System',
+ values=['cartesian', 'cylindrical'])
+
+ # PHYSICS "features":
+ variant('conduction', default=False, description='Enable thermal conduction')
+ variant('resistivity', default=False, description='Enable resistivity')
+ variant('special_relativity', default=False, description='Enable special relativistic hydro or MHD')
+ variant('viscosity', default=False, description='Enable viscosity')
+
+ # ALGORITHM "packages":
+ variant('order', default='2',
+ description='Order and type of spatial reconstruction',
+ values=['1', '2', '3', '2p', '3p'])
+ variant('flux', default='roe', description='Flux function',
+ values=['roe', 'hllc', 'hlld', 'hlle', 'force', 'exact',
+ 'two-shock'])
+ variant('integrator', default='ctu',
+ description='Unsplit integration algorithm',
+ values=['ctu', 'vl'])
+ variant('cflags', default='opt', description='Compiler flags',
+ values=['opt', 'debug', 'profile'])
+
+ # ALGORITHM "features":
+ variant('fargo', default=False, description='Enable FARGO algorithm')
+ variant('fft', default=False, description='Use FFTW block decomposition')
+ variant('fofc', default=False, description='Enable first-order flux correction')
+ variant('ghost', default=False, description='Write ghost zones')
+ variant('h_correction', default=False, description='Turn on H-correction')
+ variant('mpi', default=True, description='Enable MPI parallelization')
+ variant('shearing_box', default=False, description='Turn on shearing-box')
+ variant('single', default=False, description='Use single-precision instead of double-precision')
+ variant('sts', default=False, description='Turn on super timestepping')
+ variant('smr', default=False, description='Use static mesh refinement')
+ variant('rotating_frame', default=False, description='Turn on rotating_frame')
+ variant('l1_inflow', default=False, description='Enable inflow from L1 point')
+
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
+ depends_on('mpi', when='+mpi')
+ depends_on('fftw', when='+fft')
+
+ conflicts('flux=hllc', when='gas=mhd')
+ conflicts('flux=exact', when='gas=mhd')
+ conflicts('flux=two-shock', when='gas=mhd')
+ conflicts('+h_correction', when='flux=hllc')
+ conflicts('+h_correction', when='flux=hlld')
+ conflicts('+h_correction', when='flux=hlle')
+ conflicts('+h_correction', when='flux=force')
+ conflicts('+h_correction', when='flux=exact')
+ conflicts('+h_correction', when='flux=two-shock')
+ conflicts('coord=cylindrical', when='gravity=none')
+ conflicts('coord=cylindrical', when='particles=none')
+ conflicts('integrator=vl', when='order=3')
+ conflicts('integrator=vl', when='order=2')
+
+ build_targets = ['all']
+
+ patch('missing-separator.patch')
+
+ def setup_environment(self, spack_env, run_env):
+ spec = self.spec
+
+ spack_env.set('OPT', '-O3')
+
+ if '+mpi' in spec:
+ spack_env.set('CC', spec['mpi'].mpicc)
+ spack_env.set('LDR', spec['mpi'].mpicc)
+ spack_env.set('MPILIB', spec['mpi'].libs.ld_flags)
+ spack_env.set('MPIINC', spec['mpi'].headers.include_flags)
+ else:
+ spack_env.set('CC', spack_cc)
+ spack_env.set('LDR', spack_cc)
+
+ if '+fft' in spec:
+ spack_env.set('FFTWLIB', spec['fftw'].libs.ld_flags)
+ spack_env.set('FFTWINC', spec['fftw'].headers.include_flags)
+
+ def configure_args(self):
+ spec = self.spec
+ args = []
+
+ if '+conduction' in spec:
+ args.append('--enable-conduction')
+ else:
+ args.append('--disable-conduction')
+
+ if '+resistivity' in spec:
+ args.append('--enable-resistivity')
+ else:
+ args.append('--disable-resistivity')
+
+ if '+special_relativity' in spec:
+ args.append('--enable-special-relativity')
+ else:
+ args.append('--disable-special-relativity')
+
+ if '+viscosity' in spec:
+ args.append('--enable-viscosity')
+ else:
+ args.append('--disable-viscosity')
+
+ if '+single' in spec:
+ args.append('--enable-single')
+ else:
+ args.append('--disable-single')
+
+ if '+ghost' in spec:
+ args.append('--enable-ghost')
+ else:
+ args.append('--disable-ghost')
+
+ if '+mpi' in spec:
+ args.append('--enable-mpi')
+ else:
+ args.append('--disable-mpi')
+
+ if '+h_correction' in spec:
+ args.append('--enable-h-correction')
+ else:
+ args.append('--disable-h-correction')
+
+ if '+fft' in spec:
+ args.append('--enable-fft')
+ else:
+ args.append('--disable-fft')
+
+ if '+shearing_box' in spec:
+ args.append('--enable-shearing-box')
+ else:
+ args.append('--disable-shearing-box')
+
+ if '+fargo' in spec:
+ args.append('--enable-fargo')
+ else:
+ args.append('--disable-fargo')
+
+ if '+sts' in spec:
+ args.append('--enable-sts')
+ else:
+ args.append('--disable-sts')
+
+ if '+smr' in spec:
+ args.append('--enable-smr')
+ else:
+ args.append('--disable-smr')
+
+ if '+fofc' in spec:
+ args.append('--enable-fofc')
+ else:
+ args.append('--disable-fofc')
+
+ if '+rotating_frame' in spec:
+ args.append('--enable-rotating_frame')
+ else:
+ args.append('--disable-rotating_frame')
+
+ if '+l1_inflow' in spec:
+ args.append('--enable-l1_inflow')
+ else:
+ args.append('--disable-l1_inflow')
+
+ args.extend([
+ '--with-problem=' + spec.variants['problem'].value,
+ '--with-gas=' + spec.variants['gas'].value,
+ '--with-eos=' + spec.variants['eos'].value,
+ '--with-nscalars=' + spec.variants['nscalars'].value,
+ '--with-gravity=' + spec.variants['gravity'].value,
+ '--with-particles=' + spec.variants['particles'].value,
+ '--with-coord=' + spec.variants['coord'].value,
+ '--with-order=' + spec.variants['order'].value,
+ '--with-flux=' + spec.variants['flux'].value,
+ '--with-integrator=' + spec.variants['integrator'].value,
+ '--with-cflags=' + spec.variants['cflags'].value,
+ ])
+
+ return args
+
+ def install(self, spec, prefix):
+ mkdir(prefix.bin)
+ install('bin/athena', prefix.bin)