omm-bundle: add new package (#42304)
This commit is contained in:
parent
23e586fd85
commit
0d89083cb5
2 changed files with 69 additions and 0 deletions
|
@ -0,0 +1,15 @@
|
||||||
|
--- a/pspBLAS/src/pspUtility/pspBasicTool.F90 2023-11-01 10:34:05.000000000 +0900
|
||||||
|
+++ b/pspBLAS/src/pspUtility/pspBasicTool.F90 2023-11-01 10:34:39.000000000 +0900
|
||||||
|
@@ -15,9 +15,9 @@ MODULE pspBasicTool
|
||||||
|
use pspVariable
|
||||||
|
! This module contains routines for indexing, generating, copying, transforming (sparse) data
|
||||||
|
|
||||||
|
-#ifdef HAVE_MPI
|
||||||
|
- include 'mpif.h'
|
||||||
|
-#endif
|
||||||
|
+!#ifdef HAVE_MPI
|
||||||
|
+! include 'mpif.h'
|
||||||
|
+!#endif
|
||||||
|
|
||||||
|
private
|
||||||
|
|
54
var/spack/repos/builtin/packages/omm-bundle/package.py
Normal file
54
var/spack/repos/builtin/packages/omm-bundle/package.py
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# 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)
|
||||||
|
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
from spack.package import *
|
||||||
|
|
||||||
|
|
||||||
|
class OmmBundle(MakefilePackage):
|
||||||
|
"""Omm-bundle is a library implementing the orbital minimization method for
|
||||||
|
solving the Kohn-Sham equation as a generalized eigenvalue problem and
|
||||||
|
a bundle of four separate libraries: pspBLAS, MatrixSwitch, libOMM, tomato."""
|
||||||
|
|
||||||
|
homepage = "https://esl.cecam.org/"
|
||||||
|
git = "https://gitlab.com/ElectronicStructureLibrary/omm/omm-bundle.git"
|
||||||
|
|
||||||
|
version("master", branch="master")
|
||||||
|
version("1.0.0", tag="v1.0.0", commit="8b644267284695ff1a40b78d098bda6464a7b821")
|
||||||
|
|
||||||
|
depends_on("mpi")
|
||||||
|
depends_on("blas")
|
||||||
|
depends_on("lapack")
|
||||||
|
depends_on("scalapack")
|
||||||
|
depends_on("dbcsr")
|
||||||
|
|
||||||
|
# Avoid duplicate include error in mpi.h in Fujitsu compiler
|
||||||
|
patch("fjmpi_pspBasicTool.patch", when="@: %fj")
|
||||||
|
|
||||||
|
def edit(self, spec, prefix):
|
||||||
|
# edit make.inc
|
||||||
|
shutil.copy("make.inc.example", "make.inc")
|
||||||
|
makeinc = FileFilter("make.inc")
|
||||||
|
makeinc.filter("FORTRAN =.*", "FORTRAN = {0}".format(spec["mpi"].mpifc))
|
||||||
|
linalg_libs = (
|
||||||
|
self.spec["lapack"].libs + self.spec["blas"].libs + self.spec["scalapack"].libs
|
||||||
|
)
|
||||||
|
makeinc.filter("LINALG_LIBS =.*", "LINALG_LIBS = {0}".format(linalg_libs.ld_flags))
|
||||||
|
makeinc.filter("#FPPFLAGS ", "FPPFLAGS ")
|
||||||
|
makeinc.filter("#DBCSR =.*", "DBCSR = {0}".format(spec["dbcsr"].prefix))
|
||||||
|
makeinc.filter("#DBCSRINC ", "DBCSRINC ")
|
||||||
|
makeinc.filter("#DBCSRLIB =.*", "DBCSRLIB = -L$(DBCSR)/lib64 -ldbcsr")
|
||||||
|
|
||||||
|
# fix Makefile of tomato to avoid error(cp: cannot stat '*.mod': No such file or directory)
|
||||||
|
tomato_makefile = FileFilter("tomato/src/Makefile.manual")
|
||||||
|
tomato_makefile.filter(" cp *.mod $(BUILDPATH)/include; \\\n", "")
|
||||||
|
|
||||||
|
def build(self, spec, prefix):
|
||||||
|
make("-f", "Makefile.manual", "all", parallel=False)
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
for d in ["pspBLAS", "MatrixSwitch", "libOMM", "tomato"]:
|
||||||
|
install_tree("build_" + d, prefix + "/build_" + d)
|
Loading…
Reference in a new issue