truchas: add new package (#29980)
This commit is contained in:
parent
0d2044c659
commit
e72afede17
109
var/spack/repos/builtin/packages/truchas/package.py
Normal file
109
var/spack/repos/builtin/packages/truchas/package.py
Normal file
@ -0,0 +1,109 @@
|
||||
# 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 Truchas(CMakePackage):
|
||||
"""Physics-based modeling and simulation of manufacturing processes.
|
||||
|
||||
Truchas includes coupled physics models for incompressible multi-material
|
||||
flow with interface tracking, heat transfer, phase change, view factor
|
||||
thermal radiation, species advection-diffusion, elastic/plastic mechanics
|
||||
with contact, and electromagnetics. It employs finite volume, finite element,
|
||||
and mimetic finite difference discretizations on 3-D unstructured meshes
|
||||
composed of mixed cell types.
|
||||
"""
|
||||
|
||||
homepage = "https://www.truchas.org"
|
||||
url = "https://gitlab.com/truchas/truchas/-/archive/22.04.1/truchas-22.04.1.tar.bz2"
|
||||
git = "https://gitlab.com/truchas/truchas.git"
|
||||
|
||||
maintainers = ['pbrady']
|
||||
|
||||
version('develop', branch="master")
|
||||
version('22.04.1', sha256="ed2000f27ee5c4bd3024063a374023878c61e8a3c76c37542fffd341d1226dc1")
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# Variants
|
||||
# ------------------------------------------------------------ #
|
||||
|
||||
variant("portage", default=False, description="use the portage data mapping tool")
|
||||
variant("metis", default=True, description="use metis for grid partitioning")
|
||||
variant("std_name", default=False, description="enable std_mod_proc_name with intel")
|
||||
variant("config", default=True, description="use proved truchas config files for cmake")
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# Build dependencies
|
||||
# ------------------------------------------------------------ #
|
||||
depends_on('cmake@3.16:', type='build')
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# Test suite and restart utils
|
||||
# ------------------------------------------------------------ #
|
||||
depends_on('python@3.5:')
|
||||
depends_on('py-numpy@1.12:')
|
||||
depends_on('py-h5py')
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# IO dependencies
|
||||
# ------------------------------------------------------------ #
|
||||
depends_on('exodusii@2020-05-12: +mpi')
|
||||
depends_on('scorpio')
|
||||
depends_on('petaca@22.03: +shared')
|
||||
depends_on('petaca@22.03: +shared +std_name', when='+std_name')
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# Partitioning
|
||||
# ------------------------------------------------------------ #
|
||||
depends_on('chaco')
|
||||
depends_on('metis@5:', when='+metis')
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# Radiation
|
||||
# ------------------------------------------------------------ #
|
||||
depends_on('chaparral +mpi')
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# Solvers
|
||||
# ------------------------------------------------------------ #
|
||||
depends_on('hypre@2.20: ~fortran')
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# Mapping
|
||||
# ------------------------------------------------------------ #
|
||||
depends_on('portage@3:', when='+portage')
|
||||
|
||||
def cmake_args(self):
|
||||
# baseline config args
|
||||
opts = [
|
||||
self.define_from_variant('USE_METIS', 'metis'),
|
||||
self.define_from_variant('USE_PORTAGE', 'portage'),
|
||||
self.define_from_variant("ENABLE_STD_MOD_PROC_NAME", "std_name")
|
||||
]
|
||||
|
||||
spec = self.spec
|
||||
if '+config' in spec:
|
||||
root = self.root_cmakelists_dir
|
||||
|
||||
nag = 'nag' in self.compiler.fc
|
||||
|
||||
if spec.satisfies('platform=linux'):
|
||||
if nag or '%nag' in spec:
|
||||
opts.append("-C {}/config/linux-nag.cmake".format(root))
|
||||
elif '%gcc' in spec:
|
||||
opts.append("-C {}/config/linux-gcc.cmake".format(root))
|
||||
elif '%intel' in spec:
|
||||
opts.append("-C {}/config/linux-intel.cmake".format(root))
|
||||
|
||||
elif spec.satisfies('platform=darwin'):
|
||||
if nag or '%nag' in spec:
|
||||
opts.append("-C {}/config/mac-nag.cmake".format(root))
|
||||
|
||||
if self.spec.satisfies('%apple-clang@12:'):
|
||||
opts.append(self.define("CMAKE_C_FLAGS",
|
||||
"-Wno-error=implicit-function-declaration"))
|
||||
|
||||
return opts
|
Loading…
Reference in New Issue
Block a user