Merge pull request #270650 from sheepforce/quantum-espresso
quantum-espresso: 6.6 -> 7.2
This commit is contained in:
commit
566008762b
5 changed files with 213 additions and 16 deletions
|
@ -1,41 +1,119 @@
|
||||||
{ lib
|
{ lib
|
||||||
, stdenv
|
, stdenv
|
||||||
, fetchFromGitLab
|
, fetchFromGitLab
|
||||||
|
, fetchFromGitHub
|
||||||
|
, fetchurl
|
||||||
|
, git
|
||||||
|
, cmake
|
||||||
|
, gnum4
|
||||||
, gfortran
|
, gfortran
|
||||||
|
, pkg-config
|
||||||
, fftw
|
, fftw
|
||||||
, blas
|
, blas
|
||||||
, lapack
|
, lapack
|
||||||
, useMpi ? false
|
, scalapack
|
||||||
|
, wannier90
|
||||||
|
, hdf5
|
||||||
|
, libmbd
|
||||||
|
, libxc
|
||||||
|
, enableMpi ? true
|
||||||
, mpi
|
, mpi
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
assert ! blas.isILP64;
|
||||||
|
assert ! lapack.isILP64;
|
||||||
|
|
||||||
|
let
|
||||||
|
# "rev"s must exactly match the git submodule commits in the QE repo
|
||||||
|
gitSubmodules = {
|
||||||
|
devxlib = fetchFromGitLab {
|
||||||
|
group = "max-centre";
|
||||||
|
owner = "components";
|
||||||
|
repo = "devicexlib";
|
||||||
|
rev = "a6b89ef77b1ceda48e967921f1f5488d2df9226d";
|
||||||
|
hash = "sha256-p3fRplVG4YSN6ILNlOwf+aSEhpTJPXqiS1+wnzWVA2U=";
|
||||||
|
};
|
||||||
|
|
||||||
|
pw2qmcpack = fetchFromGitHub {
|
||||||
|
owner = "QMCPACK";
|
||||||
|
repo = "pw2qmcpack";
|
||||||
|
rev = "f72ab25fa4ea755c1b4b230ae8074b47d5509c70";
|
||||||
|
hash = "sha256-K1Z90xexsUvk4SdEb8FGryRal0GAFoLz3j1h/RT2nYw=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "6.6";
|
version = "7.2";
|
||||||
pname = "quantum-espresso";
|
pname = "quantum-espresso";
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
src = fetchFromGitLab {
|
||||||
owner = "QEF";
|
owner = "QEF";
|
||||||
repo = "q-e";
|
repo = "q-e";
|
||||||
rev = "qe-${version}";
|
rev = "qe-${version}";
|
||||||
sha256 = "1mkfmw0fq1dabplzdn6v1abhw0ds55gzlvbx3a9brv493whk21yp";
|
hash = "sha256-0q0QWX4BVjVHjcbKOBpjbBADuL+2S5LAALyrxmjVs4c=";
|
||||||
};
|
};
|
||||||
|
|
||||||
passthru = {
|
# add git submodules manually and fix pkg-config file
|
||||||
inherit mpi;
|
prePatch = ''
|
||||||
};
|
chmod -R +rwx external/
|
||||||
|
|
||||||
preConfigure = ''
|
substituteInPlace external/devxlib.cmake \
|
||||||
patchShebangs configure
|
--replace "qe_git_submodule_update(external/devxlib)" ""
|
||||||
|
substituteInPlace external/CMakeLists.txt \
|
||||||
|
--replace "qe_git_submodule_update(external/pw2qmcpack)" "" \
|
||||||
|
--replace "qe_git_submodule_update(external/d3q)" "" \
|
||||||
|
--replace "qe_git_submodule_update(external/qe-gipaw)" ""
|
||||||
|
|
||||||
|
${builtins.toString (builtins.attrValues
|
||||||
|
(builtins.mapAttrs
|
||||||
|
(name: val: ''
|
||||||
|
cp -r ${val}/* external/${name}/.
|
||||||
|
chmod -R +rwx external/${name}
|
||||||
|
'')
|
||||||
|
gitSubmodules
|
||||||
|
)
|
||||||
|
)}
|
||||||
|
|
||||||
|
substituteInPlace cmake/quantum_espresso.pc.in \
|
||||||
|
--replace 'libdir="''${prefix}/@CMAKE_INSTALL_LIBDIR@"' 'libdir="@CMAKE_INSTALL_FULL_LIBDIR@"'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [ gfortran ];
|
passthru = { inherit mpi; };
|
||||||
|
|
||||||
buildInputs = [ fftw blas lapack ]
|
nativeBuildInputs = [
|
||||||
++ (lib.optionals useMpi [ mpi ]);
|
cmake
|
||||||
|
gfortran
|
||||||
|
git
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
configureFlags = if useMpi then [ "LD=${mpi}/bin/mpif90" ] else [ "LD=${gfortran}/bin/gfortran" ];
|
buildInputs = [
|
||||||
|
fftw
|
||||||
|
blas
|
||||||
|
lapack
|
||||||
|
wannier90
|
||||||
|
libmbd
|
||||||
|
libxc
|
||||||
|
hdf5
|
||||||
|
] ++ lib.optional enableMpi scalapack;
|
||||||
|
|
||||||
makeFlags = [ "all" ];
|
propagatedBuildInputs = lib.optional enableMpi mpi;
|
||||||
|
propagatedUserEnvPkgs = lib.optional enableMpi mpi;
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DBUILD_SHARED_LIBS=ON"
|
||||||
|
"-DWANNIER90_ROOT=${wannier90}"
|
||||||
|
"-DMBD_ROOT=${libmbd}"
|
||||||
|
"-DQE_ENABLE_OPENMP=ON"
|
||||||
|
"-DQE_ENABLE_LIBXC=ON"
|
||||||
|
"-DQE_ENABLE_HDF5=ON"
|
||||||
|
"-DQE_ENABLE_PLUGINS=pw2qmcpack"
|
||||||
|
] ++ lib.optionals enableMpi [
|
||||||
|
"-DQE_ENABLE_MPI=ON"
|
||||||
|
"-DQE_ENABLE_MPI_MODULE=ON"
|
||||||
|
"-DQE_ENABLE_SCALAPACK=ON"
|
||||||
|
];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Electronic-structure calculations and materials modeling at the nanoscale";
|
description = "Electronic-structure calculations and materials modeling at the nanoscale";
|
||||||
|
|
45
pkgs/by-name/li/libmbd/package.nix
Normal file
45
pkgs/by-name/li/libmbd/package.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, lib
|
||||||
|
, cmake
|
||||||
|
, mpi
|
||||||
|
, blas
|
||||||
|
, lapack
|
||||||
|
, scalapack
|
||||||
|
, gfortran
|
||||||
|
} :
|
||||||
|
|
||||||
|
assert !blas.isILP64;
|
||||||
|
assert !lapack.isILP64;
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "libMBD";
|
||||||
|
version = "0.12.7";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "libmbd";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
hash = "sha256-39cvOUTAuuWLGOLdapR5trmCttCnijOWvPhSBTeTxTA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
|
cat > cmake/libMBDVersionTag.cmake << EOF
|
||||||
|
set(VERSION_TAG "${version}")
|
||||||
|
EOF
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake gfortran ];
|
||||||
|
|
||||||
|
buildInputs = [ blas lapack scalapack ];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ mpi ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Many-body dispersion library";
|
||||||
|
homepage = "https://github.com/libmbd/libmbd";
|
||||||
|
license = licenses.mpl20;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = [ maintainers.sheepforce ];
|
||||||
|
};
|
||||||
|
}
|
73
pkgs/by-name/wa/wannier90/package.nix
Normal file
73
pkgs/by-name/wa/wannier90/package.nix
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
{ stdenv
|
||||||
|
, lib
|
||||||
|
, gfortran
|
||||||
|
, blas
|
||||||
|
, lapack
|
||||||
|
, python3
|
||||||
|
, fetchFromGitHub
|
||||||
|
}:
|
||||||
|
assert (!blas.isILP64);
|
||||||
|
assert blas.isILP64 == lapack.isILP64;
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "wannier90";
|
||||||
|
version = "3.1.0";
|
||||||
|
|
||||||
|
nativeBuildInputs = [ gfortran ];
|
||||||
|
buildInputs = [
|
||||||
|
blas
|
||||||
|
lapack
|
||||||
|
];
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "wannier-developers";
|
||||||
|
repo = "wannier90";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-+Mq7lM6WuwAnK/2FlDz9gNRIg2sRazQRezb3BfD0veY=";
|
||||||
|
};
|
||||||
|
|
||||||
|
# test cases are removed as error bounds of wannier90 are obviously to tight
|
||||||
|
postPatch = ''
|
||||||
|
rm -r test-suite/tests/testpostw90_{fe_kpathcurv,fe_kslicecurv,si_geninterp,si_geninterp_wsdistance}
|
||||||
|
rm -r test-suite/tests/testw90_example26 # Fails without AVX optimizations
|
||||||
|
patchShebangs test-suite/run_tests test-suite/testcode/bin/testcode.py
|
||||||
|
'';
|
||||||
|
|
||||||
|
configurePhase = ''
|
||||||
|
cp config/make.inc.gfort make.inc
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildFlags = [ "all" "dynlib" ];
|
||||||
|
|
||||||
|
preInstall = ''
|
||||||
|
installFlagsArray+=(
|
||||||
|
PREFIX=$out
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
cp libwannier.so $out/lib/libwannier.so
|
||||||
|
|
||||||
|
mkdir $out/include
|
||||||
|
find ./src/obj/ -name "*.mod" -exec cp {} $out/include/. \;
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
checkInputs = [ python3 ];
|
||||||
|
checkTarget = [ "test-serial" ];
|
||||||
|
preCheck = ''
|
||||||
|
export OMP_NUM_THREADS=4
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
hardeningDisable = [ "format" ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Calculation of maximally localised Wannier functions";
|
||||||
|
homepage = "https://github.com/wannier-developers/wannier90";
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
maintainers = [ maintainers.sheepforce ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -776,6 +776,7 @@ mapAliases ({
|
||||||
qt6ct = qt6Packages.qt6ct; # Added 2023-03-07
|
qt6ct = qt6Packages.qt6ct; # Added 2023-03-07
|
||||||
qtcurve = libsForQt5.qtcurve; # Added 2020-11-07
|
qtcurve = libsForQt5.qtcurve; # Added 2020-11-07
|
||||||
qtile-unwrapped = python3.pkgs.qtile; # Added 2023-05-12
|
qtile-unwrapped = python3.pkgs.qtile; # Added 2023-05-12
|
||||||
|
quantum-espresso-mpi = quantum-espresso; # Added 2023-11-23
|
||||||
qutebrowser-qt6 = throw "'qutebrowser-qt6' has been replaced by 'qutebrowser', since the the qt5 version has been removed"; # Added 2023-08-19
|
qutebrowser-qt6 = throw "'qutebrowser-qt6' has been replaced by 'qutebrowser', since the the qt5 version has been removed"; # Added 2023-08-19
|
||||||
quvi = throw "'quvi' has been removed, as it was broken and unmaintained"; # Added 2023-11-25
|
quvi = throw "'quvi' has been removed, as it was broken and unmaintained"; # Added 2023-11-25
|
||||||
|
|
||||||
|
|
|
@ -38839,9 +38839,9 @@ with pkgs;
|
||||||
|
|
||||||
pymol = callPackage ../applications/science/chemistry/pymol { };
|
pymol = callPackage ../applications/science/chemistry/pymol { };
|
||||||
|
|
||||||
quantum-espresso = callPackage ../applications/science/chemistry/quantum-espresso { };
|
quantum-espresso = callPackage ../applications/science/chemistry/quantum-espresso {
|
||||||
|
hdf5 = hdf5-fortran;
|
||||||
quantum-espresso-mpi = callPackage ../applications/science/chemistry/quantum-espresso { useMpi = true; };
|
};
|
||||||
|
|
||||||
siesta = callPackage ../applications/science/chemistry/siesta { };
|
siesta = callPackage ../applications/science/chemistry/siesta { };
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue