
- [x] add `concretize.lp`, `spack.yaml`, etc. to licensed files - [x] update all licensed files to say 2013-2021 using `spack license update-copyright-year` - [x] appease mypy with some additions to package.py that needed for oneapi.py
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
# 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 *
|
|
|
|
|
|
class PpopenApplFvm(MakefilePackage):
|
|
"""
|
|
ppOpen-APPL/FVM ia a coupling library that enables weak
|
|
coupling on various simulation models, such as an
|
|
atmospheric model and an ocean model, a seismic model
|
|
and a structure model. For getting very wide
|
|
applicability, ppohMATHMP is designed so as that it is
|
|
independent from grid structure. Instead of grid
|
|
structure, ppOpen-APPL/FVM requires a data set
|
|
called 'mapping table'. Mapping table is composed of
|
|
a correspondence table of grid indexes between a send
|
|
model and a receive model and interpolation coefficients.
|
|
A subroutine for making a mapping table file is provided
|
|
by ppohMATHMP API.
|
|
|
|
Current version of ppohMATHMP is ver.1.0 which targets
|
|
scalar data exchange. An exchange code of vector data
|
|
which requires rotation calculation is under
|
|
"""
|
|
|
|
homepage = "http://ppopenhpc.cc.u-tokyo.ac.jp/ppopenhpc/"
|
|
git = "https://github.com/Post-Peta-Crest/ppOpenHPC.git"
|
|
|
|
version('master', branch='APPL/FVM')
|
|
|
|
depends_on('mpi')
|
|
depends_on('metis@:4')
|
|
|
|
def edit(self, spec, prefix):
|
|
mkdirp('bin')
|
|
mkdirp('lib')
|
|
mkdirp('include')
|
|
fflags = ['-O3']
|
|
if spec.satisfies('%gcc'):
|
|
fflags.append('-ffree-line-length-none')
|
|
makefile_in = FileFilter('Makefile.in')
|
|
makefile_in.filter(
|
|
r'^PREFIX *=.*$',
|
|
'PREFIX = {0}'.format(prefix)
|
|
)
|
|
makefile_in.filter(
|
|
r'^METISDIR *=.*$',
|
|
'METISDIR = {0}'.format(spec['metis'].prefix.lib)
|
|
)
|
|
makefile_in.filter('mpifrtpx', spec['mpi'].mpifc)
|
|
makefile_in.filter('frtpx', spack_fc)
|
|
makefile_in.filter('-Kfast', ' '.join(fflags))
|
|
makefile_in.filter(
|
|
',openmp',
|
|
' {0}'.format(self.compiler.openmp_flag)
|
|
)
|
|
|
|
def install(self, spec, prefix):
|
|
make('install')
|
|
install_tree('examples', prefix.examples)
|
|
install_tree('doc', prefix.doc)
|