Merge pull request #1207 from davydden/pkg/dealii_update_petsc37

dealii: update for petsc37
This commit is contained in:
Todd Gamblin 2016-07-11 15:32:32 -07:00 committed by GitHub
commit 15790d7018

View File

@ -37,7 +37,7 @@ class Dealii(Package):
version('8.3.0', 'fc6cdcb16309ef4bea338a4f014de6fa') version('8.3.0', 'fc6cdcb16309ef4bea338a4f014de6fa')
version('8.2.1', '71c728dbec14f371297cd405776ccf08') version('8.2.1', '71c728dbec14f371297cd405776ccf08')
version('8.1.0', 'aa8fadc2ce5eb674f44f997461bf668d') version('8.1.0', 'aa8fadc2ce5eb674f44f997461bf668d')
version('dev', git='https://github.com/dealii/dealii.git') version('develop', git='https://github.com/dealii/dealii.git')
variant('mpi', default=True, description='Compile with MPI') variant('mpi', default=True, description='Compile with MPI')
variant('arpack', default=True, description='Compile with Arpack and PArpack (only with MPI)') variant('arpack', default=True, description='Compile with Arpack and PArpack (only with MPI)')
@ -73,20 +73,21 @@ class Dealii(Package):
depends_on("doxygen+graphviz", when='+doc') depends_on("doxygen+graphviz", when='+doc')
depends_on("graphviz", when='+doc') depends_on("graphviz", when='+doc')
depends_on("gsl", when='@8.5.0:+gsl') depends_on("gsl", when='@8.5.0:+gsl')
depends_on("gsl", when='@dev+gsl')
depends_on("hdf5+mpi", when='+hdf5+mpi') depends_on("hdf5+mpi", when='+hdf5+mpi')
depends_on("metis@5:", when='+metis') depends_on("metis@5:", when='+metis')
depends_on("netcdf+mpi", when="+netcdf+mpi") depends_on("netcdf+mpi", when="+netcdf+mpi")
depends_on("netcdf-cxx", when='+netcdf+mpi') depends_on("netcdf-cxx", when='+netcdf+mpi')
depends_on("oce", when='+oce') depends_on("oce", when='+oce')
depends_on("p4est", when='+p4est+mpi') depends_on("p4est", when='+p4est+mpi')
depends_on("petsc@:3.6.4+mpi", when='+petsc+mpi') # FIXME: update after 3.7 is supported upstream. # NOQA: ignore=E501 depends_on("petsc+mpi", when='@8.5.0:+petsc+mpi')
depends_on("slepc@:3.6.3", when='+slepc+petsc+mpi') depends_on("slepc", when='@8.5.0:+slepc+petsc+mpi')
depends_on("petsc@:3.6.4+mpi", when='@:8.4.1+petsc+mpi')
depends_on("slepc@:3.6.3", when='@:8.4.1+slepc+petsc+mpi')
depends_on("trilinos", when='+trilinos+mpi') depends_on("trilinos", when='+trilinos+mpi')
# developer dependnecies # developer dependnecies
depends_on("numdiff", when='@dev') depends_on("numdiff", when='@develop')
depends_on("astyle@2.04", when='@dev') depends_on("astyle@2.04", when='@develop')
def install(self, spec, prefix): def install(self, spec, prefix):
options = [] options = []
@ -119,6 +120,16 @@ def install(self, spec, prefix):
'-DZLIB_DIR=%s' % spec['zlib'].prefix '-DZLIB_DIR=%s' % spec['zlib'].prefix
]) ])
# Set directory structure:
if spec.satisfies('@:8.2.1'):
options.extend(['-DDEAL_II_COMPONENT_COMPAT_FILES=OFF'])
else:
options.extend([
'-DDEAL_II_EXAMPLES_RELDIR=share/deal.II/examples',
'-DDEAL_II_DOCREADME_RELDIR=share/deal.II/',
'-DDEAL_II_DOCHTML_RELDIR=share/deal.II/doc'
])
# MPI # MPI
if '+mpi' in spec: if '+mpi' in spec:
options.extend([ options.extend([
@ -193,12 +204,13 @@ def install(self, spec, prefix):
]) ])
cmake('.', *options) cmake('.', *options)
make() make()
if self.run_tests:
make("test") make("test")
make("install") make("install")
# run some MPI examples with different solvers from PETSc and Trilinos # run some MPI examples with different solvers from PETSc and Trilinos
if self.run_tests:
env['DEAL_II_DIR'] = prefix env['DEAL_II_DIR'] = prefix
print('=====================================') print('=====================================')
print('============ EXAMPLES ===============') print('============ EXAMPLES ===============')
@ -219,7 +231,8 @@ def install(self, spec, prefix):
print('============= Step-18 ===============') print('============= Step-18 ===============')
print('=====================================') print('=====================================')
# list the number of cycles to speed up # list the number of cycles to speed up
filter_file(r'(end_time = 10;)', ('end_time = 3;'), 'step-18.cc') filter_file(r'(end_time = 10;)', ('end_time = 3;'),
'step-18.cc')
if '^petsc' in spec and '^metis' in spec: if '^petsc' in spec and '^metis' in spec:
cmake('.') cmake('.')
make('release') make('release')
@ -245,9 +258,10 @@ def install(self, spec, prefix):
# change Linear Algebra to Trilinos # change Linear Algebra to Trilinos
# The below filter_file should be different for versions # The below filter_file should be different for versions
# before and after 8.4.0 # before and after 8.4.0
if spec.satisfies('@8.4.0:') or spec.satisfies('@dev'): if spec.satisfies('@8.4.0:'):
filter_file(r'(\/\/ #define FORCE_USE_OF_TRILINOS.*)', filter_file(r'(\/\/ #define FORCE_USE_OF_TRILINOS.*)',
('#define FORCE_USE_OF_TRILINOS'), 'step-40.cc') ('#define FORCE_USE_OF_TRILINOS'),
'step-40.cc')
else: else:
filter_file(r'(#define USE_PETSC_LA.*)', filter_file(r'(#define USE_PETSC_LA.*)',
('// #define USE_PETSC_LA'), 'step-40.cc') ('// #define USE_PETSC_LA'), 'step-40.cc')
@ -257,7 +271,7 @@ def install(self, spec, prefix):
# the rest of the tests on step 40 only works for # the rest of the tests on step 40 only works for
# dealii version 8.4.0 and after # dealii version 8.4.0 and after
if spec.satisfies('@8.4.0:') or spec.satisfies('@dev'): if spec.satisfies('@8.4.0:'):
print('=====================================') print('=====================================')
print('=== Step-40 Trilinos SuperluDist ====') print('=== Step-40 Trilinos SuperluDist ====')
print('=====================================') print('=====================================')