mpas-model: New package. (#21124)
* mpas-model: New package. * remove pnetcdf variant. remove debug print. * remove unnessesary line. * style fix.
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							2cfe349828
						
					
				
				
					commit
					3ee8c11910
				
			
							
								
								
									
										13
									
								
								var/spack/repos/builtin/packages/mpas-model/makefile.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								var/spack/repos/builtin/packages/mpas-model/makefile.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					--- spack-src/Makefile.org	2021-01-06 10:11:15.852202444 +0900
 | 
				
			||||||
 | 
					+++ spack-src/Makefile	2021-01-06 10:35:16.191769328 +0900
 | 
				
			||||||
 | 
					@@ -459,8 +459,10 @@
 | 
				
			||||||
 | 
					 # Keep open the possibility of shared libraries in future with, e.g., .so suffix
 | 
				
			||||||
 | 
					 #
 | 
				
			||||||
 | 
					 ifneq ($(wildcard $(PIO_LIB)/libpio\.*), )
 | 
				
			||||||
 | 
					+ifneq ($(wildcard $(PIO_LIB)/libpio\.*),$(PIO_LIB)/libpio.settings)
 | 
				
			||||||
 | 
					 	LIBS += -lpio
 | 
				
			||||||
 | 
					 endif
 | 
				
			||||||
 | 
					+endif
 | 
				
			||||||
 | 
					 ifneq ($(wildcard $(PIO_LIB)/libpiof\.*), )
 | 
				
			||||||
 | 
					 	LIBS += -lpiof
 | 
				
			||||||
 | 
					 endif
 | 
				
			||||||
							
								
								
									
										83
									
								
								var/spack/repos/builtin/packages/mpas-model/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								var/spack/repos/builtin/packages/mpas-model/package.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
				
			|||||||
 | 
					# 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 MpasModel(MakefilePackage):
 | 
				
			||||||
 | 
					    """The Model for Prediction Across Scales (MPAS) is a collaborative
 | 
				
			||||||
 | 
					    project for developing atmosphere, ocean and other earth-system
 | 
				
			||||||
 | 
					    simulation components for use in climate, regional climate and weather
 | 
				
			||||||
 | 
					    studies."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    homepage = "https://mpas-dev.github.io/"
 | 
				
			||||||
 | 
					    url = "https://github.com/MPAS-Dev/MPAS-Model/archive/v7.0.tar.gz"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version('7.0', sha256='f898ce257e66cff9e29320458870570e55721d16cb000de7f2cc27de7fdef14f')
 | 
				
			||||||
 | 
					    version('6.3', sha256='e7f1d9ebfeb6ada37d42a286aaedb2e69335cbc857049dc5c5544bb51e7a8db8')
 | 
				
			||||||
 | 
					    version('6.2', sha256='2a81825a62a468bf5c56ef9d9677aa2eb88acf78d4f996cb49a7db98b94a6b16')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    depends_on('mpi')
 | 
				
			||||||
 | 
					    depends_on('parallelio')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    patch('makefile.patch', when='@7.0')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    parallel = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def target(self, model, action):
 | 
				
			||||||
 | 
					        spec = self.spec
 | 
				
			||||||
 | 
					        satisfies = spec.satisfies
 | 
				
			||||||
 | 
					        fflags = [self.compiler.openmp_flag]
 | 
				
			||||||
 | 
					        cppflags = ['-D_MPI']
 | 
				
			||||||
 | 
					        if satisfies('%gcc'):
 | 
				
			||||||
 | 
					            fflags.extend([
 | 
				
			||||||
 | 
					                '-ffree-line-length-none',
 | 
				
			||||||
 | 
					                '-fconvert=big-endian',
 | 
				
			||||||
 | 
					                '-ffree-form',
 | 
				
			||||||
 | 
					                '-fdefault-real-8',
 | 
				
			||||||
 | 
					                '-fdefault-double-8',
 | 
				
			||||||
 | 
					            ])
 | 
				
			||||||
 | 
					            cppflags.append('-DUNDERSCORE')
 | 
				
			||||||
 | 
					        elif satisfies('%fj'):
 | 
				
			||||||
 | 
					            fflags.extend([
 | 
				
			||||||
 | 
					                '-Free',
 | 
				
			||||||
 | 
					                '-Fwide',
 | 
				
			||||||
 | 
					                '-CcdRR8',
 | 
				
			||||||
 | 
					            ])
 | 
				
			||||||
 | 
					            cppflags.append('-DUNDERSCORE')
 | 
				
			||||||
 | 
					        targets = [
 | 
				
			||||||
 | 
					            'FC_PARALLEL={0}'.format(spec['mpi'].mpifc),
 | 
				
			||||||
 | 
					            'CC_PARALLEL={0}'.format(spec['mpi'].mpicc),
 | 
				
			||||||
 | 
					            'CXX_PARALLEL={0}'.format(spec['mpi'].mpicxx),
 | 
				
			||||||
 | 
					            'FC_SERIAL={0}'.format(spack_fc),
 | 
				
			||||||
 | 
					            'CC_SERIAL={0}'.format(spack_cc),
 | 
				
			||||||
 | 
					            'CXX_SERIAL={0}'.format(spack_cxx),
 | 
				
			||||||
 | 
					            'CFLAGS_OMP={0}'.format(self.compiler.openmp_flag),
 | 
				
			||||||
 | 
					            'FFLAGS_OMP={0}'.format(' '.join(fflags)),
 | 
				
			||||||
 | 
					            'CPPFLAGS={0}'.format(' '.join(cppflags)),
 | 
				
			||||||
 | 
					            'PIO={0}'.format(spec['parallelio'].prefix),
 | 
				
			||||||
 | 
					            'NETCDF={0}'.format(spec['netcdf-c'].prefix),
 | 
				
			||||||
 | 
					            'NETCDFF={0}'.format(spec['netcdf-fortran'].prefix)
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					        if satisfies('^parallelio+pnetcdf'):
 | 
				
			||||||
 | 
					            targets.append(
 | 
				
			||||||
 | 
					                'PNETCDF={0}'.format(spec['parallel-netcdf'].prefix)
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        targets.extend([
 | 
				
			||||||
 | 
					            'USE_PIO2=true', 'CPP_FLAGS=-D_MPI', 'OPENMP=true',
 | 
				
			||||||
 | 
					            'CORE={0}'.format(model), action
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					        return targets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def build(self, spec, prefix):
 | 
				
			||||||
 | 
					        make(*self.target('init_atmosphere', 'all'))
 | 
				
			||||||
 | 
					        mkdir('bin')
 | 
				
			||||||
 | 
					        copy('init_atmosphere_model', 'bin')
 | 
				
			||||||
 | 
					        make(*self.target('init_atmosphere', 'clean'))
 | 
				
			||||||
 | 
					        make(*self.target('atmosphere', 'all'))
 | 
				
			||||||
 | 
					        copy('atmosphere_model', 'bin')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def install(self, spec, prefix):
 | 
				
			||||||
 | 
					        install_tree('bin', prefix.bin)
 | 
				
			||||||
		Reference in New Issue
	
	Block a user