openturbine: add new package (#48683)

This commit is contained in:
ddement 2025-02-06 05:32:14 -07:00 committed by GitHub
parent c8994ee50f
commit bb0517f4d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -0,0 +1,62 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Openturbine(CMakePackage, CudaPackage, ROCmPackage):
"""An open-source wind turbine structural dynamics simulation code."""
license("MIT License", checked_by="ddement")
homepage = "https://www.exascaleproject.org/research-project/exawind/"
url = "https://github.com/Exawind/openturbine.git"
git = "https://github.com/Exawind/openturbine.git"
maintainers("faisal-bhuiyan", "ddement", "deslaughter")
version("main", branch="main")
variant("tests", default=False, description="Build OpenTurbine Test Suite")
variant("openmp", default=False, description="Build OpenTurbine with OpenMP support")
variant("vtk", default=False, description="Enable VTK")
variant("adi", default=False, description="Build the OpenFAST ADI external project")
variant("rosco", default=False, description="Build the ROSCO controller external project")
depends_on("cxx", type="build")
depends_on("yaml-cpp")
depends_on("kokkos-kernels+blas+lapack")
depends_on("trilinos+amesos2")
depends_on("kokkos-kernels@4.3:")
depends_on("trilinos@16:")
depends_on("kokkos-kernels+cuda+cublas+cusparse+cusolver", when="+cuda")
depends_on("kokkos-kernels+rocblas+rocsparse+rocsolver", when="+rocm")
depends_on("kokkos-kernels+openmp", when="+openmp")
depends_on("trilinos+cuda+basker", when="+cuda")
depends_on("trilinos+rocm+basker", when="+rocm")
depends_on("trilinos+openmp+basker", when="+openmp")
depends_on("kokkos-kernels~cuda", when="~cuda")
depends_on("kokkos-kernels~openmp", when="~openmp")
depends_on("trilinos~cuda", when="~cuda")
depends_on("trilinos~rocm", when="~rocm")
depends_on("trilinos~openmp", when="~openmp")
depends_on("googletest", when="+tests")
depends_on("vtk", when="+vtk")
depends_on("fortran", type="build", when="+adi")
depends_on("fortran", type="build", when="+rosco")
def cmake_args(self):
options = [
self.define_from_variant("OpenTurbine_ENABLE_TESTS", "tests"),
self.define_from_variant("OpenTurbine_ENABLE_VTK", "vtk"),
self.define_from_variant("OpenTurbine_BUILD_OPENFAST_ADI", "adi"),
self.define_from_variant("OpenTurbine_BUILD_ROSCO_CONTROLLER", "rosco"),
]
return options