summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/openradioss-engine/package.py
diff options
context:
space:
mode:
authorkjrstory <kjrstory@gmail.com>2023-06-15 05:04:03 +0900
committerGitHub <noreply@github.com>2023-06-14 13:04:03 -0700
commitca4d60ae25775a7d7dff5b1ec89cd86171a59199 (patch)
tree8cc4ee629b77634823a49c5ba25aac30fe1f51b1 /var/spack/repos/builtin/packages/openradioss-engine/package.py
parentdc571e20d644f650fec5d58d2dfc82f951c5a8d8 (diff)
downloadspack-ca4d60ae25775a7d7dff5b1ec89cd86171a59199.tar.gz
spack-ca4d60ae25775a7d7dff5b1ec89cd86171a59199.tar.bz2
spack-ca4d60ae25775a7d7dff5b1ec89cd86171a59199.tar.xz
spack-ca4d60ae25775a7d7dff5b1ec89cd86171a59199.zip
openradioss-starter,engine: new package (#38291)
* openradioss-starter,engine: new package * openradioss-engine: change version name develop to main * openradioss-starter: change version name develop to main
Diffstat (limited to 'var/spack/repos/builtin/packages/openradioss-engine/package.py')
-rw-r--r--var/spack/repos/builtin/packages/openradioss-engine/package.py136
1 files changed, 136 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/openradioss-engine/package.py b/var/spack/repos/builtin/packages/openradioss-engine/package.py
new file mode 100644
index 0000000000..49089ee413
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openradioss-engine/package.py
@@ -0,0 +1,136 @@
+# Copyright 2013-2023 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.package import *
+
+
+class OpenradiossEngine(CMakePackage):
+ """
+ OpenRadioss is the publicly available open-source code base that a worldwide
+ community of researchers, software developers, and industry leaders are
+ enhancing every day. OpenRadioss is changing the game by empowering users to
+ make rapid contributions that tackle the latest challenges brought on by rapidly
+ evolving technologies like battery development, lightweight materials and composites,
+ human body models and biomaterials, autonomous driving and flight,
+ as well as the desire to give passengers the safest environment possible via virtual testing.
+ OpenRadioss Engine is a component of the OpenRadioss that runs the simulation in parallel.
+ """
+
+ homepage = "https://www.openradioss.org/"
+ git = "https://github.com/OpenRadioss/OpenRadioss.git"
+
+ maintainers("kjrstory")
+ version("main", branch="main")
+
+ variant("mpi", default=False, description="Enable MPI support")
+ variant("sp", default=False, description="Using single precision option")
+ variant("debug", default=False, description="Debug Option")
+ variant("static_link", default=True, description="Static_link Option")
+
+ depends_on("openmpi", when="+mpi")
+ depends_on("cmake@2.8:", type="build")
+ depends_on("perl", type="build")
+ depends_on("python", type="build")
+
+ requires(
+ "%gcc",
+ "%intel",
+ "%oneapi",
+ "%aocc",
+ "%arm",
+ policy="one_of",
+ msg="Openradioss-starter can be built using GNU Fortran, Intel Fortran, AOCC, \
+ or Armflang compilers only.",
+ )
+
+ build_directory = "engine"
+ root_cmakelists_dir = "engine"
+
+ @property
+ def compiler_name(self):
+ compiler_mapping = {
+ "aocc": "64_AOCC",
+ "intel": "64_intel",
+ "oneapi": "64_intel",
+ "gcc": "64_gf",
+ "arm": "a64_gf",
+ }
+ compiler_name = compiler_mapping[self.spec.compiler.name]
+ return compiler_name
+
+ def cmake_args(self):
+ args = [
+ "-Dmpi_os=0",
+ "-DCMAKE_Fortran_COMPILER={0}".format(spack_fc),
+ "-DCMAKE_C_COMPILER={0}".format(spack_cc),
+ "-DCMAKE_CPP_COMPILER={0}".format(spack_cxx),
+ "-DCMAKE_CXX_COMPILER={0}".format(spack_cxx),
+ "-Dsanitize=0",
+ ]
+
+ args.append("-Drach=linux" + self.compiler_name)
+
+ if "+sp" in self.spec:
+ args.append("-Dprecision=sp")
+ else:
+ args.append("-Dprecision=dp")
+
+ if "+mpi" in self.spec:
+ args.append("-DMPI=ompi")
+ args.append("-Dmpi_root=" + self.spec["mpi"].prefix)
+ args.append("-Dmpi_incdir=" + self.spec["mpi"].prefix.include)
+ args.append("-Dmpi_libdir=" + self.spec["mpi"].prefix.lib)
+ else:
+ args.append("-DMPI=smp")
+
+ if "+debug" in self.spec:
+ args.append("-Ddebug=1")
+ else:
+ args.append("-Ddebug=0")
+
+ if "+static_link" in self.spec:
+ args.append("-Dstatic_link=1")
+ else:
+ args.append("-Dstatic_link=0")
+
+ return args
+
+ def install(self, spec, prefix):
+ mkdirp(join_path(prefix, "exec"))
+
+ if "+mpi" in spec:
+ exec_file = "engine_linux" + self.compiler_name + "_ompi"
+ else:
+ exec_file = "engine_linux" + self.compiler_name
+
+ install(
+ join_path(self.stage.source_path, "engine", exec_file),
+ join_path(prefix, "exec", exec_file),
+ )
+ install_tree(
+ join_path(self.stage.source_path, "hm_cfg_files"), join_path(prefix, "hm_cfg_files")
+ ),
+ install_tree(
+ join_path(self.stage.source_path, "extlib", "h3d"), join_path(prefix, "extlib", "h3d")
+ ),
+ install_tree(
+ join_path(self.stage.source_path, "extlib", "hm_reader"),
+ join_path(prefix, "extlib", "hm_reader"),
+ )
+
+ def setup_run_environment(self, env):
+ env.set("OPENRADIOSS_PATH", self.prefix)
+ env.set("RAD_CFG_PATH", join_path(self.prefix, "hm_cfg_files"))
+ env.set("RAD_H3D_PATH", join_path(self.prefix, "extlib", "h3d", "lib", "linux64"))
+ env.set("OMP_STACKSIZE", "400m")
+ env.prepend_path("LD_LIBRARY_PATH", join_path(self.prefix, "extlib", "h3d", "linux64"))
+ env.prepend_path(
+ "LD_LIBRARY_PATH", join_path(self.prefix, "extlib", "hm_reader", "linux64")
+ )
+ env.prepend_path("PATH", join_path(self.prefix, "exec"))
+ if "+mpi" in self.spec:
+ env.prepend_path("PATH", self.spec["mpi"].prefix.bin)
+ env.prepend_path("LD_LIBRARY_PATH", self.spec["mpi"].prefix.lib)