mirror of https://gitlab.com/QEF/q-e.git
Merge branch 'develop' into syncqe8
This commit is contained in:
commit
0c285826d2
|
@ -7,9 +7,12 @@
|
|||
[submodule "external/wannier90"]
|
||||
path = external/wannier90
|
||||
url = https://github.com/wannier-developers/wannier90.git
|
||||
[submodule "external/devxlib"]
|
||||
path = external/devxlib
|
||||
url = https://gitlab.com/max-centre/components/devicexlib.git
|
||||
[submodule "external/mbd"]
|
||||
path = external/mbd
|
||||
url = https://github.com/jhrmnn/libmbd.git
|
||||
[submodule "external/eigensolver_gpu"]
|
||||
path = external/eigensolver_gpu
|
||||
url = https://github.com/NVIDIA/Eigensolver_gpu.git
|
||||
[submodule "external/devxlib"]
|
||||
path = external/devxlib
|
||||
url = https://gitlab.com/max-centre/components/devicexlib.git
|
||||
|
|
|
@ -10,12 +10,12 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
|||
set(CMAKE_POLICY_DEFAULT_CMP0048 NEW)
|
||||
|
||||
project(qe
|
||||
VERSION 6.6.0
|
||||
VERSION 6.7.1
|
||||
DESCRIPTION "ESPRESSO: opEn-Source Package for Research in Electronic Structure, Simulation, and Optimization"
|
||||
LANGUAGES Fortran C)
|
||||
|
||||
if(${qe_BINARY_DIR} STREQUAL ${qe_SOURCE_DIR})
|
||||
message(FATAL_ERROR "QE source folder cannot be safely used as a build folder!")
|
||||
message(FATAL_ERROR "QE source folder cannot be safely used as a build folder!")
|
||||
endif()
|
||||
|
||||
# CMake < v3.18 cannot discover the ARM Performance Library
|
||||
|
@ -25,14 +25,17 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)")
|
|||
endif()
|
||||
endif()
|
||||
|
||||
######################################################################
|
||||
##########################################################
|
||||
# Define the paths for static libraries and executables
|
||||
######################################################################
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${qe_BINARY_DIR}/lib CACHE PATH "Single output directory for building all libraries.")
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${qe_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.")
|
||||
##########################################################
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${qe_BINARY_DIR}/lib
|
||||
CACHE
|
||||
PATH "Single output directory for building all libraries.")
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${qe_BINARY_DIR}/bin
|
||||
CACHE
|
||||
PATH "Single output directory for building all executables.")
|
||||
set(QE_TESTS_DIR ${qe_BINARY_DIR}/tests/bin)
|
||||
|
||||
|
||||
###########################################################
|
||||
# Build helpers
|
||||
###########################################################
|
||||
|
@ -59,12 +62,22 @@ include(GNUInstallDirs)
|
|||
###########################################################
|
||||
# Build Options
|
||||
###########################################################
|
||||
option(QE_ENABLE_TEST
|
||||
"enable unit tests" ON)
|
||||
option(QE_ENABLE_CUDA
|
||||
"enable CUDA acceleration on NVIDIA GPUs" OFF)
|
||||
if(QE_ENABLE_CUDA)
|
||||
option(QE_ENABLE_LAXLIB_CUSOLVER
|
||||
"enable CUDA solver acceleration for LAXLib on NVIDIA GPUs" ON)
|
||||
# OpenMP enable by default if CUDA is enable
|
||||
option(QE_ENABLE_OPENMP
|
||||
"enable distributed execution support via OpenMP" ON)
|
||||
else()
|
||||
option(QE_ENABLE_OPENMP
|
||||
"enable distributed execution support via OpenMP" OFF)
|
||||
endif()
|
||||
option(QE_ENABLE_MPI
|
||||
"enable distributed execution support via MPI" ON)
|
||||
option(QE_ENABLE_OPENMP
|
||||
"enable distributed execution support via OpenMP" OFF)
|
||||
option(QE_ENABLE_TEST
|
||||
"enable unit tests" OFF)
|
||||
option(QE_ENABLE_TRACE
|
||||
"enable execution tracing output" OFF)
|
||||
option(QE_ENABLE_MPI_INPLACE
|
||||
|
@ -81,8 +94,6 @@ option(QE_ENABLE_ELPA
|
|||
"enable ELPA execution units" OFF)
|
||||
option(QE_ENABLE_HDF5
|
||||
"enable HDF5 data collection" OFF)
|
||||
option(QE_ENABLE_CUDA
|
||||
"enable CUDA acceleration on NVIDIA GPUs" OFF)
|
||||
option(QE_ENABLE_DOC
|
||||
"enable documentation building" OFF)
|
||||
set(QE_FFTW_VENDOR "AUTO" CACHE
|
||||
|
@ -99,6 +110,12 @@ set(QE_FFTW_VENDOR "AUTO" CACHE
|
|||
# by configure (see <qe>/include/)
|
||||
qe_add_global_compile_definitions(QE_NO_CONFIG_H)
|
||||
|
||||
if(QE_ENABLE_CUDA)
|
||||
include(CheckLanguage)
|
||||
check_language(CUDA)
|
||||
enable_language(CUDA)
|
||||
qe_add_global_compile_definitions(__CUDA)
|
||||
endif()
|
||||
if(QE_ENABLE_TRACE)
|
||||
qe_add_global_compile_definitions(__TRACE)
|
||||
endif()
|
||||
|
@ -135,6 +152,12 @@ endif()
|
|||
if(QE_ENABLE_SCALAPACK AND NOT QE_ENABLE_MPI)
|
||||
message(FATAL_ERROR "SCALAPACK requires MPI support, enable it with '-DQE_ENABLE_MPI=ON' or disable SCALAPACK with '-DQE_ENABLE_SCALAPACK=OFF'")
|
||||
endif()
|
||||
if(QE_ENABLE_CUDA AND NOT CMAKE_Fortran_COMPILER_ID MATCHES "PGI")
|
||||
message(FATAL_ERROR "PGI compiler is mandatory when CUDA is enable due QE is based on CUDA Fortran language")
|
||||
endif()
|
||||
if(QE_ENABLE_LAXLIB_CUSOLVER AND (NOT QE_ENABLE_CUDA))
|
||||
message(FATAL_ERROR "CUDA Solver for LAXLib requires CUDA support, enable it with '-DQE_ENABLE_CUDA=ON' or disable CUDA Solver for LAXLib with '-DQE_ENABLE_LAXLIB_CUSOLVER=OFF'")
|
||||
endif()
|
||||
# if(QE_ENABLE_HDF5 AND NOT QE_ENABLE_MPI)
|
||||
# message(FATAL_ERROR "HDF5 requires MPI support, enable it with '-DQE_ENABLE_MPI=ON' or disable HDF5 with '-DQE_ENABLE_HDF5=OFF'")
|
||||
# endif()
|
||||
|
@ -145,9 +168,9 @@ endif()
|
|||
###########################################################
|
||||
# TODO need to require all compilers using the same one
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "PGI")
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_C_EXTENSIONS OFF)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_C_EXTENSIONS OFF)
|
||||
endif()
|
||||
|
||||
############################################################
|
||||
|
@ -161,13 +184,18 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "XL")
|
|||
include(${PROJECT_CMAKE}/IBMFortranCompiler.cmake)
|
||||
endif()
|
||||
|
||||
###########################################################
|
||||
# CUDA
|
||||
###########################################################
|
||||
if(QE_ENABLE_CUDA)
|
||||
find_package(CUDAToolkit REQUIRED)
|
||||
endif(QE_ENABLE_CUDA)
|
||||
|
||||
###########################################################
|
||||
# OpenMP
|
||||
# The following targets will be defined:
|
||||
add_library(qe_openmp_fortran INTERFACE)
|
||||
add_library(QE::OpenMP_Fortran ALIAS qe_openmp_fortran)
|
||||
add_library(qe_openmp_c INTERFACE)
|
||||
add_library(QE::OpenMP_C ALIAS qe_openmp_c)
|
||||
qe_install_targets(qe_openmp_fortran qe_openmp_c)
|
||||
###########################################################
|
||||
if(QE_ENABLE_OPENMP)
|
||||
|
@ -182,7 +210,6 @@ endif(QE_ENABLE_OPENMP)
|
|||
# MPI
|
||||
# The following targets will be defined:
|
||||
add_library(qe_mpi_fortran INTERFACE)
|
||||
add_library(QE::MPI_Fortran ALIAS qe_mpi_fortran)
|
||||
qe_install_targets(qe_mpi_fortran)
|
||||
###########################################################
|
||||
if(QE_ENABLE_MPI)
|
||||
|
@ -195,9 +222,8 @@ endif(QE_ENABLE_MPI)
|
|||
# Lapack
|
||||
# The following targets will be defined:
|
||||
add_library(qe_lapack INTERFACE)
|
||||
add_library(QE::LAPACK ALIAS qe_lapack)
|
||||
qe_install_targets(qe_lapack)
|
||||
#######################################################################
|
||||
###########################################################
|
||||
if(NOT QE_LAPACK_INTERNAL)
|
||||
if(NOT BLA_VENDOR)
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64.*")
|
||||
|
@ -251,7 +277,7 @@ else()
|
|||
"due to the conflict in flags for free vs fixed format. "
|
||||
"Please use an optimized LAPACK or build internal reference LAPACK separately.")
|
||||
endif()
|
||||
message(STATUS "Installing QE::LAPACK via submodule")
|
||||
message(STATUS "Installing LAPACK via submodule")
|
||||
qe_git_submodule_update(external/lapack)
|
||||
add_subdirectory(external/lapack EXCLUDE_FROM_ALL)
|
||||
target_link_libraries(qe_lapack INTERFACE lapack)
|
||||
|
@ -263,7 +289,6 @@ endif()
|
|||
# SCALAPACK
|
||||
# The following targets will be defined:
|
||||
add_library(qe_scalapack INTERFACE)
|
||||
add_library(QE::SCALAPACK ALIAS qe_scalapack)
|
||||
qe_install_targets(qe_scalapack)
|
||||
###########################################################
|
||||
if(QE_ENABLE_SCALAPACK)
|
||||
|
@ -279,7 +304,6 @@ endif(QE_ENABLE_SCALAPACK)
|
|||
# ELPA
|
||||
# The following targets will be defined:
|
||||
add_library(qe_elpa INTERFACE)
|
||||
add_library(QE::ELPA ALIAS qe_elpa)
|
||||
qe_install_targets(qe_elpa)
|
||||
###########################################################
|
||||
if(QE_ENABLE_ELPA)
|
||||
|
@ -324,9 +348,7 @@ endif(QE_ENABLE_ELPA)
|
|||
# HDF5
|
||||
# The following targets will be defined:
|
||||
add_library(qe_hdf5_fortran INTERFACE)
|
||||
add_library(QE::HDF5_Fortran ALIAS qe_hdf5_fortran)
|
||||
add_library(qe_hdf5_c INTERFACE)
|
||||
add_library(QE::HDF5_C ALIAS qe_hdf5_c)
|
||||
qe_install_targets(qe_hdf5_fortran qe_hdf5_c)
|
||||
###########################################################
|
||||
if(QE_ENABLE_HDF5)
|
||||
|
@ -368,14 +390,6 @@ if(QE_ENABLE_HDF5)
|
|||
${HDF5_C_DEFINITIONS})
|
||||
endif(QE_ENABLE_HDF5)
|
||||
|
||||
###########################################################
|
||||
# CUDA
|
||||
# FIXME just a place holder for the moment
|
||||
###########################################################
|
||||
if(QE_ENABLE_CUDA)
|
||||
qe_add_global_compile_definitions(__CUDA)
|
||||
endif(QE_ENABLE_CUDA)
|
||||
|
||||
###########################################################
|
||||
# Tests
|
||||
# Any executable target marked as test runner via
|
||||
|
@ -433,7 +447,6 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/quantum_espresso.pc
|
|||
###########################################################
|
||||
install(EXPORT qeTargets
|
||||
FILE qeTargets.cmake
|
||||
NAMESPACE qe::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/qe)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
@ -621,4 +634,4 @@ add_custom_target(epw
|
|||
DEPENDS
|
||||
qe_epw_exe
|
||||
COMMENT
|
||||
"electron-Phonon Coupling with wannier functions")
|
||||
"electron-Phonon Coupling with wannier functions")
|
||||
|
|
|
@ -1,18 +1,17 @@
|
|||
set(sources
|
||||
set(src_couple
|
||||
src/libpwscf.f90
|
||||
src/libcpv.f90
|
||||
src/libqemod.f90)
|
||||
qe_enable_cuda_fortran("${src_couple}")
|
||||
|
||||
qe_add_library(qe_couple ${sources})
|
||||
add_library(QE::COUPLE ALIAS qe_couple)
|
||||
qe_add_library(qe_couple ${src_couple})
|
||||
target_link_libraries(qe_couple
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::LAX
|
||||
QE::FFTX
|
||||
QE::UTILX
|
||||
QE::CPV)
|
||||
qe_modules
|
||||
qe_lax
|
||||
qe_fftx
|
||||
qe_cpv)
|
||||
|
||||
###########################################################
|
||||
|
||||
qe_install_targets(qe_couple)
|
||||
qe_install_targets(qe_couple)
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_cpv
|
||||
src/berryion.f90
|
||||
src/bforceion.f90
|
||||
src/cell_nose.f90
|
||||
|
@ -104,75 +104,88 @@ set(sources
|
|||
src/wf.f90
|
||||
src/makov_payne.f90
|
||||
src/entropy.f90)
|
||||
qe_enable_cuda_fortran("${src_cpv}")
|
||||
|
||||
qe_add_library(qe_cpv ${sources})
|
||||
add_library(QE::CPV ALIAS qe_cpv)
|
||||
qe_add_library(qe_cpv ${src_cpv})
|
||||
target_link_libraries(qe_cpv
|
||||
PRIVATE
|
||||
QE::LAX
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::FOX
|
||||
QE::FFTX
|
||||
QE::UPF
|
||||
QE::OpenMP_Fortran
|
||||
QE::MPI_Fortran)
|
||||
qe_lax
|
||||
qe_modules
|
||||
qe_fftx
|
||||
qe_upflib
|
||||
qe_openmp_fortran
|
||||
qe_mpi_fortran
|
||||
qe_xclib)
|
||||
if(QE_ENABLE_CUDA)
|
||||
target_link_libraries(qe_cpv
|
||||
PRIVATE
|
||||
qe_devxlib)
|
||||
endif()
|
||||
|
||||
###########################################################
|
||||
# cp.x
|
||||
###########################################################
|
||||
set(sources src/cprstart.f90)
|
||||
qe_add_executable(qe_cpv_exe ${sources})
|
||||
set_target_properties(qe_cpv_exe PROPERTIES OUTPUT_NAME cp.x)
|
||||
set(src_cp_x src/cprstart.f90)
|
||||
qe_enable_cuda_fortran("${src_cp_x}")
|
||||
qe_add_executable(qe_cpv_exe ${src_cp_x})
|
||||
set_target_properties(qe_cpv_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME cp.x)
|
||||
target_link_libraries(qe_cpv_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::LAX
|
||||
QE::CPV
|
||||
QE::UTILX)
|
||||
qe_modules
|
||||
qe_lax
|
||||
qe_cpv
|
||||
qe_lapack
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# manycp.x
|
||||
###########################################################
|
||||
set(sources src/manycp.f90)
|
||||
qe_add_executable(qe_cpv_manycp_exe ${sources})
|
||||
set_target_properties(qe_cpv_manycp_exe PROPERTIES OUTPUT_NAME manycp.x)
|
||||
set(src_manycp_x src/manycp.f90)
|
||||
qe_enable_cuda_fortran("${src_manycp_x}")
|
||||
qe_add_executable(qe_cpv_manycp_exe ${src_manycp_x})
|
||||
set_target_properties(qe_cpv_manycp_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME manycp.x)
|
||||
target_link_libraries(qe_cpv_manycp_exe
|
||||
PRIVATE
|
||||
QE::LAX
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::UTILX
|
||||
QE::CPV)
|
||||
qe_lax
|
||||
qe_modules
|
||||
qe_cpv
|
||||
qe_lapack
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# cppp.x
|
||||
###########################################################
|
||||
set(sources src/cppp.f90)
|
||||
qe_add_executable(qe_cpv_cppp_exe ${sources})
|
||||
set_target_properties(qe_cpv_cppp_exe PROPERTIES OUTPUT_NAME cppp.x)
|
||||
set(src_cppp_x src/cppp.f90)
|
||||
qe_add_executable(qe_cpv_cppp_exe ${src_cppp_x})
|
||||
set_target_properties(qe_cpv_cppp_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME cppp.x)
|
||||
target_link_libraries(qe_cpv_cppp_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::CPV
|
||||
QE::CLIB
|
||||
QE::UTILX)
|
||||
qe_modules
|
||||
qe_cpv
|
||||
qe_clib
|
||||
qe_lapack
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# wfdd.x
|
||||
###########################################################
|
||||
set(sources src/wfdd.f90)
|
||||
qe_add_executable(qe_cpv_wfdd_exe ${sources})
|
||||
set_target_properties(qe_cpv_wfdd_exe PROPERTIES OUTPUT_NAME wfdd.x)
|
||||
set(src_wfdd_x src/wfdd.f90)
|
||||
qe_add_executable(qe_cpv_wfdd_exe ${src_wfdd_x})
|
||||
set_target_properties(qe_cpv_wfdd_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME wfdd.x)
|
||||
target_link_libraries(qe_cpv_wfdd_exe
|
||||
PRIVATE
|
||||
QE::LAPACK
|
||||
QE::XClib
|
||||
QE::Modules
|
||||
QE::CPV)
|
||||
qe_lapack
|
||||
qe_modules
|
||||
qe_cpv
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,69 +1,6 @@
|
|||
These are instructions on how to run the examples for CP package.
|
||||
These examples try to exercise all the programs and features
|
||||
of the CP package.
|
||||
If you find that any relevant feature isn't being tested,
|
||||
please contact us (or even better, write and send us a new example).
|
||||
|
||||
To run the examples, you should follow this procedure:
|
||||
|
||||
1) Edit the "environment_variables" file from the main
|
||||
ESPRESSO directory, setting the following variables as needed:
|
||||
|
||||
BIN_DIR = directory where ESPRESSO executables reside
|
||||
PSEUDO_DIR = directory where pseudopotential files reside
|
||||
TMP_DIR = directory to be used as temporary storage area
|
||||
|
||||
If you have downloaded the full ESPRESSO distribution, you may set
|
||||
BIN_DIR=$TOPDIR/bin and PSEUDO_DIR=$TOPDIR/pseudo, where $TOPDIR is
|
||||
the root of the ESPRESSO source tree.
|
||||
|
||||
TMP_DIR must be a directory you have read and write access to, with
|
||||
enough available space to host the temporary files produced by the
|
||||
example runs, and possibly offering high I/O performance (i.e.,
|
||||
don't use an NFS-mounted directory).
|
||||
|
||||
2) If you want to test the parallel version of ESPRESSO, you will
|
||||
usually have to specify a driver program (such as "poe" or "mpirun")
|
||||
and the number of processors. This can be done by editing PARA_PREFIX
|
||||
and PARA_POSTFIX variables (in the "environment_variables" file).
|
||||
Parallel executables will be run by a command like this:
|
||||
|
||||
$PARA_PREFIX cp.x $PARA_POSTFIX < file.in > file.out
|
||||
|
||||
For example, if the command line is like this (as for an IBM SP):
|
||||
|
||||
poe cp.x -procs 4 < file.in > file.out
|
||||
|
||||
you should set PARA_PREFIX="poe", PARA_POSTFIX="-procs 4".
|
||||
|
||||
See section "Running on parallel machines" of the user guide for details.
|
||||
Furthermore, if your machine does not support interactive use, you
|
||||
must run the commands specified below through the batch queueing
|
||||
system installed on that machine. Ask your system administrator
|
||||
for instructions.
|
||||
|
||||
3) To run a single example, go to the corresponding directory (for
|
||||
instance, "example/example01") and execute:
|
||||
|
||||
./run_example
|
||||
|
||||
(except for example 04, see below)
|
||||
This will create a subdirectory "results", containing the input and
|
||||
output files generated by the calculation.
|
||||
|
||||
Some examples take only a few seconds to run, while others may
|
||||
require several minutes depending on your system.
|
||||
|
||||
4) In each example's directory, the "reference" subdirectory contains
|
||||
verified output files, that you can check your results against.
|
||||
|
||||
The reference results were generated on a Linux PC with Intel compiler.
|
||||
On different architectures the precise numbers could be slightly
|
||||
different, in particular if different FFT dimensions are
|
||||
automatically selected. For this reason, a plain "diff" of your
|
||||
results against the reference data doesn't work, or at least, it
|
||||
requires human inspection of the results.
|
||||
|
||||
These examples cover most programs and features of the CP package.
|
||||
See comments in file "environment_variables" in the top QE directory
|
||||
for instructions on how to run these examples.
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
LIST AND CONTENT OF THE EXAMPLES
|
||||
|
|
|
@ -809,7 +809,7 @@ Then \qe\ can be compiled as usual. If the version of \libxc\ is older than 5.0.
|
|||
\begin{itemize}
|
||||
\item set \texttt{LD\_LIBS=-L/path/to/libxc/lib/ -lxcf03 -lxc}
|
||||
\end{itemize}
|
||||
\paragraph{Note for version 5.0.0:} the \texttt{f03} interfaces are no longer available in \libxc\ 5.0.0. They have been reintroduced in the current develop version. Version 5.0.0 is still usable, but, before compiling \qe, a string replacement is necessary, namely `\texttt{xc\_f03}' must be repalced with `\texttt{xc\_f90}' everywhere in the following files: \texttt{funct.f90}, \texttt{xc\_lda\_lsda\_drivers.f90}, \texttt{xc\_gga\_drivers.f90}, \texttt{xc\_mgga\_drivers.f90}, \texttt{dmxc\_drivers.f90} and \texttt{dgcxc\_drivers.f90} in \texttt{Modules} folder and \texttt{xctest\_qe\_libxc.f90} in \texttt{PP/src} folder.
|
||||
\paragraph{Note for version 5.0.0:} the \texttt{f03} interfaces are no longer available in \libxc\ 5.0.0. They have been reintroduced in the current develop version. Version 5.0.0 is still usable, but, before compiling \qe, a string replacement is necessary, namely `\texttt{xc\_f03}' must be repalced with `\texttt{xc\_f90}' everywhere in the \texttt{XClib} folder.
|
||||
|
||||
\subsubsection{Usage}
|
||||
In order to use \libxc\ functionals, you must enforce them from input by including the \texttt{input\_dft} string in the \texttt{system} namelist. For example, to use the \libxc\ version of the PBE functionals (both exchange and correlation):
|
||||
|
@ -826,24 +826,24 @@ Combinations of \qe\ and \libxc\ functionals are allowed in \texttt{PW}, but som
|
|||
\begin{verbatim}
|
||||
input_dft = `sla pbe gga_c_pbe'
|
||||
\end{verbatim}
|
||||
Note that when using GGA functionals of \qe\ you must always specify the LDA term too, while it is not the case for the \libxc\ ones. \\
|
||||
Outside \texttt{PW} (\texttt{PHonon}, \texttt{PP}, etc.), \libxc\ functionals are still usable, but in these cases it is highly recommended to avoid combinations of QE and \libxc\ functionals together, since, at present, they may lead to some issues in the dft detection.
|
||||
Note that when using GGA functionals of \qe\ you must always specify the LDA term too, while it is not the case for the \libxc\ ones.
|
||||
%
|
||||
\subsubsection{Differences between Libxc and internal functionals}
|
||||
There are some differences between \qe\ functionals and \libxc\ ones. In \qe\ the LDA and the GGA terms are separated and must be specified independently. In \libxc\ the GGA functionals already include the LDA part (Slater exchange and Perdew\&Wang correlation in most of the cases with the exception, for example, of Lee Yang Parr functionals).\\
|
||||
The \libxc\ metaGGA functionals may or may not need the LDA and GGA terms, depending on the cases, therefore a good check of the chosen functionals is recommended before doing expensive runs.\\
|
||||
Some functionals in \libxc\ incorporate the exchange part and the correlation one into one term only (e.g. the ones that include the `\texttt{\_xc}' label in their name). In these cases the whole functional is formally treated as `exchange only' by \qe. This does not imply any loss of information.
|
||||
Some functionals in \libxc\ incorporate the exchange part and the correlation one into one term only (e.g. the ones that include the `\texttt{\_xc}' kind label in their name). In these cases the whole functional is formally treated as `exchange only' by \qe. This does not imply any loss of information.
|
||||
%
|
||||
\subsubsection{Special cases}
|
||||
A number of \libxc\ functional routines need extra information on input and/or provide only partial information on output (e.g. the energy or the potential only). In these cases the use of such functionals may not be straightforward and, depending on the cases, may require some work on the \qe\ source code.
|
||||
%
|
||||
\paragraph{External parameters.}
|
||||
Several functionals in \libxc\ depend on one or more external parameters. Some of these can be recovered inside \qe, some others are not directly available. In all these cases a direct intervention on the \qe\ source code could be necessary in order to be able to properly use such functionals. However two routines have been defined in the XC library of \qe\ that ease the task of setting and recovering the external parameters in \libxc.
|
||||
Several functionals in \libxc\ depend on one or more external parameters. Some of these can be recovered inside \qe, some others are not directly available. In all these cases a direct intervention on the \qe\ source code might be necessary in order to be able to properly use such functionals. However two routines have been defined in the XC library of \qe\ that ease the task of setting and recovering the external parameters in \libxc:
|
||||
\begin{itemize}
|
||||
\item \texttt{get\_libxc\_ext\_param}: this function receives as input the ID of the \libxc\ functional and the index of the chosen parameter and returns its value. If the parameter has not been set before it returns the default value.
|
||||
\item \texttt{set\_libxc\_ext\_param}: routine that receives as input the index of the functional family-type (from 1 to 6: lda-exch, lda-corr, gga-exch, etc.), the index of the chosen \libxc\ parameter and the value to set to.
|
||||
\item \texttt{get\_libxc\_ext\_param}: this function receives as input the ID of the \libxc\ functional and the index of the chosen parameter and returns its value. If the parameter has not been set before it returns its default value.
|
||||
\item \texttt{set\_libxc\_ext\_param}: this routine receives as input the index of the functional family-type (from 1 to 6: lda-exch, lda-corr, gga-exch, ...), the index of the chosen \libxc\ parameter and the value to set it to.
|
||||
\end{itemize}
|
||||
In order to see the available parameters for a given \libxc\ functional and the corresponding indexes, the \texttt{dft\_info} test is available as an option of the \texttt{xclib\_test.x} program in \texttt{XClib} folder. For more details see Sec. \ref{SubSec:XCtest}.\\
|
||||
In order to see the available parameters for a given \libxc\ functional and their corresponding indexes, the \texttt{dft\_info} test is available as an option of the \texttt{xclib\_test.x} program in \texttt{XClib} folder. For more details see Sec. \ref{SubSec:XCtest}.\\
|
||||
The two routines can be called almost anywhere in \qe, however, as any other \texttt{XClib} setting routine, they must be declared through the \texttt{xc\_lib} module.\\
|
||||
Without setting the external parameters inside the code, their default value will be assumed. This could lead to results different from the expectations.\\
|
||||
In any case, when external parameters are needed by the chosen functionals, a warning message will appear in the output of \qe.
|
||||
%
|
||||
|
@ -856,13 +856,13 @@ A few \libxc\ functional routines provides the energy and some others the potent
|
|||
%
|
||||
\subsubsection{XC test}
|
||||
\label{SubSec:XCtest}
|
||||
A testing program, \texttt{xclib\_test.x}, for the \texttt{XClib} library of \qe\ is available. Three options available:
|
||||
A testing program, \texttt{xclib\_test.x}, for the \texttt{XClib} library of \qe\ is available. Three options:
|
||||
\begin{itemize}
|
||||
\item \texttt{dft-info}: infos on the input dft are provided. If the functionals are from \libxc\ the external parameters, when present, are listed with a brief description and their default value.
|
||||
\item \texttt{xc-benchmark}: the program gets a data file generated previously as input (by running the same program with the \texttt{gen-benchmark} option) and compares the output data, namely energy and potential on a selected number of grid points. It also compares total energy and potential summed up on a large grid in order to better span the input domain. This option shoud be used to test modifications in the \texttt{XClib} library or to check the output matching among different parallelization schemes.
|
||||
\item \texttt{dft-comparison}: comparison between two different dfts on a large grid of points. Max, min and average percentage difference between the two dft outputs (energy and potential) are provided and the points of the grid where the two output differ are shown. This option can be used, for example, to find differences between internal \qe\ functional and the \libxc\ ones.
|
||||
\item \texttt{dft-info}: infos on the input dft are provided. If the functionals are from \libxc\ the external parameters, when present, are listed with a brief description and their default value.
|
||||
\item \texttt{exe-benchmark} (\texttt{gen-benchmark}): the program gets a data file generated previously as input (by running the same program with the \texttt{gen-benchmark} option) and compares the output data, namely energy and potential on a selected number of grid points. It also compares total energy and potential summed up on a large grid in order to better span the input domain. This option shoud be used to test modifications in the \texttt{XClib} library or to check the output matching among different parallelization schemes.
|
||||
\item \texttt{dft-comparison}: comparison between two different dfts on a large grid of points. Max, min and average percentage difference between the two dft outputs (energy and potential) are provided and the points of the grid where the two output differ are shown. This option can be used, for example, to find differences between internal \qe\ functionals and the \libxc\ ones.
|
||||
\end{itemize}
|
||||
The testing program is available for LDA, GGA and MGGA functionals. It also tests the XC-derivative part (mainly used in \texttt{PHonon}).
|
||||
The testing program is available for LDA, GGA and MGGA functionals. It also tests the potential derivatives for LDA (\texttt{dmxc}) and GGA (\texttt{dgcxc}).
|
||||
|
||||
\subsection{Compilation}
|
||||
\label{SubSec:Compilation}
|
||||
|
|
|
@ -54,19 +54,17 @@ set(sources
|
|||
src/test_tools.f90)
|
||||
|
||||
qe_add_library(qe_epw ${sources})
|
||||
add_library(QE::EPW ALIAS qe_epw)
|
||||
target_link_libraries(qe_epw
|
||||
PRIVATE
|
||||
QE::WANNIER90
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::LR_Modules
|
||||
QE::PHonon::PH
|
||||
QE::PW
|
||||
QE::MPI_Fortran
|
||||
QE::UTILX
|
||||
QE::UPF
|
||||
QE::FFTX)
|
||||
qe_wannier90
|
||||
qe_modules
|
||||
qe_lr_modules
|
||||
qe_phonon_ph
|
||||
qe_pw
|
||||
qe_mpi_fortran
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# epw.x
|
||||
|
@ -76,12 +74,12 @@ qe_add_executable(qe_epw_exe ${sources})
|
|||
set_target_properties(qe_epw_exe PROPERTIES OUTPUT_NAME epw.x)
|
||||
target_link_libraries(qe_epw_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::PW
|
||||
QE::FFTX
|
||||
QE::UTILX
|
||||
QE::EPW)
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_pw
|
||||
qe_fftx
|
||||
qe_epw
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
# FFT
|
||||
# The following targets will be defined:
|
||||
add_library(qe_fft INTERFACE)
|
||||
add_library(QE::FFT ALIAS qe_fft)
|
||||
qe_install_targets(qe_fft)
|
||||
###########################################################
|
||||
SET(BLA_VENDOR_SAVED ${BLA_VENDOR})
|
||||
|
@ -124,7 +123,7 @@ else()
|
|||
endif()
|
||||
SET(BLA_VENDOR ${BLA_VENDOR_SAVED})
|
||||
|
||||
set(f_sources
|
||||
set(f_src_fftx
|
||||
fft_scatter.f90
|
||||
fft_scatter_2d.f90
|
||||
scatter_mod.f90
|
||||
|
@ -145,29 +144,39 @@ set(f_sources
|
|||
tg_gather.f90
|
||||
fft_helper_subroutines.f90
|
||||
fft_param.f90)
|
||||
|
||||
if(QE_ENABLE_CUDA)
|
||||
set(f_sources ${f_sources}
|
||||
fft_scatter_gpu.f90
|
||||
fft_scatter_2d_gpu.f90
|
||||
fft_buffers.f90
|
||||
fft_scalar.cuFFT.f90)
|
||||
set(f_src_fftx
|
||||
${f_src_fftx}
|
||||
fft_scalar.cuFFT.f90
|
||||
fft_buffers.f90
|
||||
fft_scatter_gpu.f90
|
||||
fft_scatter_2d_gpu.f90)
|
||||
endif()
|
||||
qe_enable_cuda_fortran("${f_src_fftx}")
|
||||
|
||||
set(c_sources
|
||||
set(c_src_fftx
|
||||
fft_stick.c
|
||||
fftw.c
|
||||
fftw_sp.c
|
||||
fftw_dp.c)
|
||||
|
||||
qe_add_library(qe_fftx ${f_sources} ${c_sources} ${qe_fft_wrappers})
|
||||
add_library(QE::FFTX ALIAS qe_fftx)
|
||||
qe_add_library(qe_fftx
|
||||
${f_src_fftx}
|
||||
${c_src_fftx}
|
||||
${qe_fft_wrappers})
|
||||
|
||||
target_link_libraries(qe_fftx
|
||||
PRIVATE
|
||||
QE::FFT
|
||||
QE::OpenMP_Fortran
|
||||
QE::MPI_Fortran
|
||||
QE::LAPACK)
|
||||
qe_fft
|
||||
qe_openmp_fortran
|
||||
qe_mpi_fortran
|
||||
qe_utilx)
|
||||
if(QE_ENABLE_CUDA)
|
||||
target_link_libraries(qe_fftx
|
||||
PRIVATE
|
||||
CUDA::cufft)
|
||||
endif()
|
||||
|
||||
qe_install_targets(qe_fftx)
|
||||
|
||||
###########################################################
|
||||
|
@ -175,14 +184,17 @@ qe_install_targets(qe_fftx)
|
|||
# TODO move all tests to a proper location
|
||||
###########################################################
|
||||
if(QE_ENABLE_TEST)
|
||||
set(sources fft_test.f90)
|
||||
qe_add_executable(qe_fftx_test ${sources})
|
||||
set_target_properties(qe_fftx_test PROPERTIES OUTPUT_NAME qe_fftx_test.x RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
set(src_fftx_test fft_test.f90)
|
||||
qe_add_executable(qe_fftx_test ${src_fftx_test})
|
||||
set_target_properties(qe_fftx_test
|
||||
PROPERTIES
|
||||
OUTPUT_NAME qe_fftx_test.x
|
||||
RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
target_link_libraries(qe_fftx_test
|
||||
PRIVATE
|
||||
QE::OpenMP_Fortran
|
||||
QE::MPI_Fortran
|
||||
QE::LAPACK
|
||||
QE::FFTX)
|
||||
add_test(NAME test_qe_fftx COMMAND ${QE_TESTS_DIR}/qe_fftx_test.x)
|
||||
qe_openmp_fortran
|
||||
qe_mpi_fortran
|
||||
qe_fftx)
|
||||
add_test(NAME test_qe_fftx
|
||||
COMMAND ${QE_TESTS_DIR}/qe_fftx_test.x)
|
||||
endif()
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources_gww
|
||||
set(src_gww
|
||||
gww/basic_structures.f90
|
||||
gww/compact_product.f90
|
||||
gww/contour.f90
|
||||
|
@ -33,7 +33,7 @@ set(sources_gww
|
|||
gww/times_gw.f90
|
||||
gww/vcprim.f90)
|
||||
|
||||
set(sources_pw4gww
|
||||
set(src_pw4gww
|
||||
pw4gww/allocate_wannier.f90
|
||||
pw4gww/produce_wannier_gamma.f90
|
||||
pw4gww/start_pw4gww.f90
|
||||
|
@ -70,9 +70,11 @@ set(sources_pw4gww
|
|||
pw4gww/wannier_bse.f90
|
||||
pw4gww/hpsi_pw4gww.f90
|
||||
pw4gww/cgsolve_all_gamma.f90
|
||||
pw4gww/realus.f90)
|
||||
pw4gww/realus.f90
|
||||
pw4gww/operator_1_vp.f90)
|
||||
qe_enable_cuda_fortran("${src_pw4gww}")
|
||||
|
||||
set(sources_bse
|
||||
set(src_bse
|
||||
bse/openfil_bse.f90
|
||||
bse/start_bse.f90
|
||||
bse/bse_wannier.f90
|
||||
|
@ -108,7 +110,7 @@ set(sources_bse
|
|||
bse/qpe_exc.f90
|
||||
bse/qpcorrections.f90)
|
||||
|
||||
set(sources_head
|
||||
set(src_head
|
||||
head/bcast_ph_input.f90
|
||||
head/close_phq.f90
|
||||
head/lanczos_k.f90
|
||||
|
@ -116,7 +118,7 @@ set(sources_head
|
|||
head/phq_readin.f90
|
||||
head/solve_head.f90)
|
||||
|
||||
set(sources_minpack
|
||||
set(src_minpack
|
||||
minpack/dpmpar.f90
|
||||
minpack/fdjac2.f90
|
||||
minpack/lmder1.f90
|
||||
|
@ -131,7 +133,7 @@ set(sources_minpack
|
|||
minpack/mlegzo.f90
|
||||
minpack/qrsolv.f90)
|
||||
|
||||
set(sources_simple
|
||||
set(src_simple
|
||||
simple/stop_pp.f90
|
||||
simple/read_export.f90
|
||||
simple/openfile_simple.f90
|
||||
|
@ -145,7 +147,7 @@ set(sources_simple
|
|||
simple/init_us_2_max.f90
|
||||
simple/commutator.f90)
|
||||
|
||||
set(sources_simple_bse
|
||||
set(src_simple_bse
|
||||
simple_bse/simple_object.f90
|
||||
simple_bse/start_end.f90
|
||||
simple_bse/input_simple_exc.f90
|
||||
|
@ -158,7 +160,7 @@ set(sources_simple_bse
|
|||
simple_bse/lanczos.f90
|
||||
simple_bse/build_eemat.f90)
|
||||
|
||||
set(sources_simple_ip
|
||||
set(src_simple_ip
|
||||
simple_ip/simple_ip_objects.f90
|
||||
simple_ip/start_end.f90
|
||||
simple_ip/input_simple_ip.f90
|
||||
|
@ -167,170 +169,200 @@ set(sources_simple_ip
|
|||
simple_ip/diagonalization.f90
|
||||
simple_ip/dielectric.f90)
|
||||
|
||||
qe_add_library(qe_gww ${sources_gww})
|
||||
add_library(QE::GWW ALIAS qe_gww)
|
||||
qe_add_library(qe_gww ${src_gww})
|
||||
target_link_libraries(qe_gww
|
||||
PRIVATE
|
||||
QE::FFTX
|
||||
PUBLIC
|
||||
QE::UTILX
|
||||
QE::Modules)
|
||||
qe_fftx
|
||||
qe_modules)
|
||||
|
||||
qe_add_library(qe_gww_pw4gww ${sources_pw4gww})
|
||||
add_library(QE::GWW::pw4gww ALIAS qe_gww_pw4gww)
|
||||
qe_add_library(qe_gww_pw4gww ${src_pw4gww})
|
||||
target_link_libraries(qe_gww_pw4gww
|
||||
PRIVATE
|
||||
QE::SCALAPACK
|
||||
QE::PW
|
||||
QE::XClib
|
||||
QE::GWW
|
||||
QE::FFTX
|
||||
QE::UPF
|
||||
QE::LAX)
|
||||
qe_scalapack
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_gww
|
||||
qe_utilx
|
||||
qe_fftx
|
||||
qe_upflib
|
||||
qe_lax
|
||||
qe_gww_minpack
|
||||
qe_xclib)
|
||||
|
||||
qe_add_library(qe_gww_bse ${sources_bse})
|
||||
add_library(QE::GWW::bse ALIAS qe_gww_bse)
|
||||
qe_add_library(qe_gww_bse ${src_bse})
|
||||
target_link_libraries(qe_gww_bse
|
||||
PUBLIC
|
||||
QE::GWW
|
||||
QE::PW
|
||||
QE::GWW::pw4gww
|
||||
QE::UPF)
|
||||
PRIVATE
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_gww
|
||||
qe_gww_pw4gww
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
qe_add_library(qe_gww_head ${sources_head})
|
||||
add_library(QE::GWW::head ALIAS qe_gww_head)
|
||||
qe_add_library(qe_gww_head ${src_head})
|
||||
target_link_libraries(qe_gww_head
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::LR_Modules
|
||||
QE::XClib
|
||||
QE::Modules
|
||||
QE::PHonon::PH
|
||||
QE::UTILX
|
||||
QE::UPF
|
||||
QE::FFTX)
|
||||
qe_pw
|
||||
qe_lr_modules
|
||||
qe_modules
|
||||
qe_phonon_ph
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
qe_add_library(qe_gww_minpack ${sources_minpack})
|
||||
add_library(QE::GWW::minpack ALIAS qe_gww_minpack)
|
||||
qe_add_library(qe_gww_minpack ${src_minpack})
|
||||
target_link_libraries(qe_gww_minpack
|
||||
PRIVATE
|
||||
QE::Modules)
|
||||
qe_modules)
|
||||
|
||||
qe_add_library(qe_gww_simple ${sources_simple})
|
||||
add_library(QE::GWW::simple ALIAS qe_gww_simple)
|
||||
qe_add_library(qe_gww_simple ${src_simple})
|
||||
target_link_libraries(qe_gww_simple
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::GWW
|
||||
QE::UPF
|
||||
QE::FFTX)
|
||||
qe_pw
|
||||
qe_gww
|
||||
qe_modules
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
qe_add_library(qe_gww_simplebse ${sources_simple_bse})
|
||||
add_library(QE::GWW::simple_bse ALIAS qe_gww_simplebse)
|
||||
qe_add_library(qe_gww_simplebse ${src_simple_bse})
|
||||
target_link_libraries(qe_gww_simplebse
|
||||
PRIVATE
|
||||
QE::UTILX
|
||||
QE::Modules)
|
||||
qe_modules)
|
||||
|
||||
qe_add_library(qe_gww_simpleip ${sources_simple_ip})
|
||||
add_library(QE::GWW::simple_ip ALIAS qe_gww_simpleip)
|
||||
qe_add_library(qe_gww_simpleip ${src_simple_ip})
|
||||
target_link_libraries(qe_gww_simpleip
|
||||
PRIVATE
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PW
|
||||
)
|
||||
qe_modules
|
||||
qe_pw)
|
||||
|
||||
###########################################################
|
||||
# graph.x
|
||||
###########################################################
|
||||
set(sources util/graph.f90)
|
||||
qe_add_executable(qe_gww_util_grap_exe ${sources})
|
||||
set_target_properties(qe_gww_util_grap_exe PROPERTIES OUTPUT_NAME graph.x)
|
||||
set(src_graph_x util/graph.f90)
|
||||
qe_add_executable(qe_gww_util_grap_exe ${src_graph_x})
|
||||
set_target_properties(qe_gww_util_grap_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME graph.x)
|
||||
set_target_properties(qe_gww_util_grap_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME graph.x)
|
||||
|
||||
###########################################################
|
||||
# abcoeff_to_eps.x
|
||||
###########################################################
|
||||
set(sources util/abcoeff_to_eps.f90)
|
||||
qe_add_executable(qe_gww_util_abcoefftoeps_exe ${sources})
|
||||
set_target_properties(qe_gww_util_abcoefftoeps_exe PROPERTIES OUTPUT_NAME abcoeff_to_eps.x)
|
||||
set(src_abcoeff_to_eps_x util/abcoeff_to_eps.f90)
|
||||
qe_add_executable(qe_gww_util_abcoefftoeps_exe ${src_abcoeff_to_eps_x})
|
||||
set_target_properties(qe_gww_util_abcoefftoeps_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME abcoeff_to_eps.x)
|
||||
set_target_properties(qe_gww_util_abcoefftoeps_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME abcoeff_to_eps.x)
|
||||
|
||||
###########################################################
|
||||
# memory_pw4gww.x
|
||||
###########################################################
|
||||
set(sources util/memory_pw4gww.f90)
|
||||
qe_add_executable(qe_gww_util_memorypw4gww_exe ${sources})
|
||||
set_target_properties(qe_gww_util_memorypw4gww_exe PROPERTIES OUTPUT_NAME memory_pw4gww.x)
|
||||
set(src_memory_pw4gww_x util/memory_pw4gww.f90)
|
||||
qe_add_executable(qe_gww_util_memorypw4gww_exe ${src_memory_pw4gww_x})
|
||||
set_target_properties(qe_gww_util_memorypw4gww_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME memory_pw4gww.x)
|
||||
set_target_properties(qe_gww_util_memorypw4gww_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME memory_pw4gww.x)
|
||||
|
||||
#############################################################
|
||||
#bse_main.x
|
||||
# bse_main.x
|
||||
############################################################
|
||||
set(sources bse/bse_main.f90)
|
||||
qe_add_executable(qe_gww_bse_bse_main_exe ${sources})
|
||||
set_target_properties(qe_gww_bse_bse_main_exe PROPERTIES OUTPUT_NAME bse_main.x)
|
||||
set(src_bse_main_x bse/bse_main.f90)
|
||||
qe_add_executable(qe_gww_bse_bse_main_exe ${src_bse_main_x})
|
||||
set_target_properties(qe_gww_bse_bse_main_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME bse_main.x)
|
||||
target_link_libraries(qe_gww_bse_bse_main_exe
|
||||
PRIVATE
|
||||
QE::GWW::bse )
|
||||
qe_gww_bse
|
||||
qe_gww_pw4gww
|
||||
qe_gww_minpack
|
||||
qe_modules
|
||||
qe_pw
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
################################################################
|
||||
#gww.x
|
||||
# gww.x
|
||||
################################################################
|
||||
set (sources gww/gww.f90)
|
||||
qe_add_executable(qe_gww_gww_exe ${sources})
|
||||
set_target_properties(qe_gww_gww_exe PROPERTIES OUTPUT_NAME gww.x)
|
||||
set(src_gww_x gww/gww.f90)
|
||||
qe_add_executable(qe_gww_gww_exe ${src_gww_x})
|
||||
set_target_properties(qe_gww_gww_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME gww.x)
|
||||
target_link_libraries(qe_gww_gww_exe
|
||||
PRIVATE
|
||||
QE::GWW
|
||||
QE::GWW::minpack
|
||||
QE::PW
|
||||
)
|
||||
PRIVATE
|
||||
qe_gww
|
||||
qe_gww_minpack
|
||||
qe_pw
|
||||
qe_modules)
|
||||
|
||||
################################################################
|
||||
#gww_fit.x
|
||||
# gww_fit.x
|
||||
################################################################
|
||||
set (sources gww/gww_fit.f90)
|
||||
qe_add_executable(qe_gww_gww_fit_exe ${sources})
|
||||
set_target_properties(qe_gww_gww_fit_exe PROPERTIES OUTPUT_NAME gww.x)
|
||||
set(src_gww_fit_x gww/gww_fit.f90)
|
||||
qe_add_executable(qe_gww_gww_fit_exe ${src_gww_fit_x})
|
||||
set_target_properties(qe_gww_gww_fit_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME gww.x)
|
||||
target_link_libraries(qe_gww_gww_fit_exe
|
||||
PRIVATE
|
||||
QE::GWW
|
||||
QE::GWW::minpack
|
||||
)
|
||||
PRIVATE
|
||||
qe_gww
|
||||
qe_gww_minpack
|
||||
qe_modules)
|
||||
|
||||
################################################################
|
||||
#head.x
|
||||
# head.x
|
||||
################################################################
|
||||
set (sources head/head.f90)
|
||||
qe_add_executable(qe_gww_head_exe ${sources})
|
||||
set_target_properties(qe_gww_head_exe PROPERTIES OUTPUT_NAME head.x)
|
||||
set(src_head_x head/head.f90)
|
||||
qe_add_executable(qe_gww_head_exe ${src_head_x})
|
||||
set_target_properties(qe_gww_head_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME head.x)
|
||||
target_link_libraries(qe_gww_head_exe
|
||||
PRIVATE
|
||||
QE::GWW::head
|
||||
QE::GWW::minpack
|
||||
QE::PHonon::PH
|
||||
QE::Modules
|
||||
)
|
||||
PRIVATE
|
||||
qe_gww_head
|
||||
qe_gww_minpack
|
||||
qe_phonon_ph
|
||||
qe_modules
|
||||
qe_pw)
|
||||
|
||||
###########################################################
|
||||
#simple_bse.x
|
||||
# simple_bse.x
|
||||
###########################################################
|
||||
set (sources simple_bse/simple_bse.f90)
|
||||
qe_add_executable(qe_gww_simple_bse_exe ${sources})
|
||||
set_target_properties(qe_gww_simple_bse_exe PROPERTIES OUTPUT_NAME simple_bse.x)
|
||||
set(src_simple_bse_x simple_bse/simple_bse.f90)
|
||||
qe_add_executable(qe_gww_simple_bse_exe ${src_simple_bse_x})
|
||||
set_target_properties(qe_gww_simple_bse_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME simple_bse.x)
|
||||
target_link_libraries(qe_gww_simple_bse_exe
|
||||
PRIVATE
|
||||
QE::GWW::simple_bse
|
||||
)
|
||||
qe_gww_simplebse
|
||||
qe_upflib
|
||||
qe_modules)
|
||||
|
||||
###############################################################
|
||||
#simple_ip.x
|
||||
# simple_ip.x
|
||||
################################################################
|
||||
set (sources simple_ip/simple_ip.f90)
|
||||
qe_add_executable(qe_gww_simple_ip_exe ${sources})
|
||||
set_target_properties(qe_gww_simple_ip_exe PROPERTIES OUTPUT_NAME simple_ip.x)
|
||||
set(src_simple_ip_x simple_ip/simple_ip.f90)
|
||||
qe_add_executable(qe_gww_simple_ip_exe ${src_simple_ip_x})
|
||||
set_target_properties(qe_gww_simple_ip_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME simple_ip.x)
|
||||
target_link_libraries(qe_gww_simple_ip_exe
|
||||
PRIVATE
|
||||
QE::GWW::simple_ip
|
||||
)
|
||||
qe_gww_simpleip
|
||||
qe_modules)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
@ -347,4 +379,10 @@ qe_install_targets(
|
|||
# Executables
|
||||
qe_gww_util_grap_exe
|
||||
qe_gww_util_abcoefftoeps_exe
|
||||
qe_gww_util_memorypw4gww_exe)
|
||||
qe_gww_util_memorypw4gww_exe
|
||||
qe_gww_bse_bse_main_exe
|
||||
qe_gww_gww_exe
|
||||
qe_gww_gww_fit_exe
|
||||
qe_gww_head_exe
|
||||
qe_gww_simple_bse_exe
|
||||
qe_gww_simple_ip_exe)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_hp
|
||||
src/hp_allocate_q.f90
|
||||
src/hp_bcast_input.f90
|
||||
src/hpcom.f90
|
||||
|
@ -43,32 +43,32 @@ set(sources
|
|||
src/hp_write_chi_full.f90
|
||||
src/hp_write_dnsq.f90)
|
||||
|
||||
qe_add_library(qe_hp ${sources})
|
||||
add_library(QE::HP ALIAS qe_hp)
|
||||
qe_add_library(qe_hp ${src_hp})
|
||||
target_link_libraries(qe_hp
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::LR_Modules
|
||||
QE::XClib
|
||||
QE::Modules
|
||||
QE::FFTX
|
||||
QE::UTILX
|
||||
QE::UPF)
|
||||
qe_pw
|
||||
qe_lr_modules
|
||||
qe_modules
|
||||
qe_fftx
|
||||
qe_upflib
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# hp.x
|
||||
###########################################################
|
||||
set(sources src/hp_main.f90)
|
||||
qe_add_executable(qe_hp_exe ${sources})
|
||||
set_target_properties(qe_hp_exe PROPERTIES OUTPUT_NAME hp.x)
|
||||
set(src_hp_x src/hp_main.f90)
|
||||
qe_enable_cuda_fortran("${src_hp_x}")
|
||||
qe_add_executable(qe_hp_exe ${src_hp_x})
|
||||
set_target_properties(qe_hp_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME hp.x)
|
||||
target_link_libraries(qe_hp_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::LAX
|
||||
QE::XClib
|
||||
QE::Modules
|
||||
QE::HP
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_lax
|
||||
qe_modules
|
||||
qe_hp
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,50 +1,6 @@
|
|||
These are instructions on how to run the examples for HP package.
|
||||
To run the examples, you should follow this procedure:
|
||||
|
||||
1) Edit the "environment_variables" file from the main
|
||||
ESPRESSO directory, setting the following variables as needed:
|
||||
|
||||
BIN_DIR = directory where ESPRESSO executables reside
|
||||
PSEUDO_DIR = directory where pseudopotential files reside
|
||||
TMP_DIR = directory to be used as temporary storage area
|
||||
|
||||
2) If you want to test the parallel version of ESPRESSO, you will
|
||||
usually have to specify a driver program (such as "poe" or "mpirun")
|
||||
and the number of processors. This can be done by editing PARA_PREFIX
|
||||
and PARA_POSTFIX variables (in the "environment_variables" file).
|
||||
Parallel executables will be run by a command like this:
|
||||
|
||||
$PARA_PREFIX hp.x $PARA_POSTFIX < file.in > file.out
|
||||
|
||||
For example, if the command line is like this:
|
||||
|
||||
mpirun -np 8 hp.x -npool 4 < file.in > file.out
|
||||
|
||||
you should set PARA_PREFIX="mpirun -np 8", PARA_POSTFIX="-npool 4".
|
||||
|
||||
See section "Running on parallel machines" of the user guide for details.
|
||||
Furthermore, if your machine does not support interactive use, you
|
||||
must run the commands specified below through the batch queueing
|
||||
system installed on that machine. Ask your system administrator
|
||||
for instructions.
|
||||
|
||||
3) To run a single example, go to the corresponding directory (for
|
||||
instance, "example/example01") and execute:
|
||||
|
||||
./run_example
|
||||
|
||||
This will create a subdirectory "results", containing the input and
|
||||
output files generated by the calculation.
|
||||
|
||||
4) In each example's directory, the "reference" subdirectory contains
|
||||
verified output files, that you can check your results against.
|
||||
|
||||
The reference results were generated on a Linux PC with Intel compiler.
|
||||
On different architectures the precise numbers could be slightly
|
||||
different, in particular if different FFT dimensions are
|
||||
automatically selected. For this reason, a plain "diff" of your
|
||||
results against the reference data doesn't work, or at least, it
|
||||
requires human inspection of the results.
|
||||
These examples cover most programs and features of the HP package.
|
||||
See comments in file "environment_variables" in the top QE directory
|
||||
for instructions on how to run these examples.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -1,20 +1,29 @@
|
|||
set(sources_davidson
|
||||
set(src_davidson
|
||||
Davidson_RCI/david_rci.f90
|
||||
Davidson/cegterg.f90
|
||||
Davidson/regterg.f90)
|
||||
qe_enable_cuda_fortran("${src_davidson}")
|
||||
|
||||
set(sources_davidson_rci
|
||||
set(src_davidson_rci
|
||||
Davidson_RCI/david_rci.f90)
|
||||
|
||||
set(sources_cg
|
||||
set(src_cg
|
||||
CG/ccgdiagg.f90
|
||||
CG/rcgdiagg.f90)
|
||||
|
||||
set(sources_ppcg
|
||||
set(src_ppcg
|
||||
PPCG/ppcg_gamma.f90
|
||||
PPCG/ppcg_k.f90)
|
||||
qe_enable_cuda_fortran("${src_ppcg}")
|
||||
|
||||
set(sources_paro
|
||||
set(src_dense
|
||||
DENSE/rotate_HSpsi_gamma.f90
|
||||
DENSE/rotate_HSpsi_k.f90
|
||||
DENSE/rotate_wfc_gamma.f90
|
||||
DENSE/rotate_wfc_k.f90)
|
||||
qe_enable_cuda_fortran("${src_dense}")
|
||||
|
||||
set(src_paro
|
||||
ParO/bpcg_gamma.f90
|
||||
ParO/bpcg_k.f90
|
||||
ParO/paro_gamma.f90
|
||||
|
@ -23,64 +32,64 @@ set(sources_paro
|
|||
ParO/pcg_k.f90
|
||||
ParO/paro_gamma_new.f90
|
||||
ParO/paro_k_new.f90)
|
||||
qe_enable_cuda_fortran("${src_paro}")
|
||||
|
||||
set(sources_dense
|
||||
DENSE/rotate_HSpsi_gamma.f90
|
||||
DENSE/rotate_HSpsi_k.f90
|
||||
DENSE/rotate_wfc_gamma.f90
|
||||
DENSE/rotate_wfc_k.f90)
|
||||
|
||||
qe_add_library(qe_kssolver_davidson ${sources_davidson})
|
||||
add_library(QE::KS_Solvers::Davidson ALIAS qe_kssolver_davidson)
|
||||
qe_add_library(qe_kssolver_davidson ${src_davidson})
|
||||
target_link_libraries(qe_kssolver_davidson
|
||||
PRIVATE
|
||||
QE::OpenMP_Fortran
|
||||
QE::LAX
|
||||
QE::UTILX
|
||||
QE::MPI_Fortran)
|
||||
qe_openmp_fortran
|
||||
qe_lax
|
||||
qe_utilx
|
||||
qe_mpi_fortran)
|
||||
if(QE_ENABLE_CUDA)
|
||||
target_link_libraries(qe_kssolver_davidson
|
||||
PRIVATE
|
||||
qe_devxlib)
|
||||
endif()
|
||||
|
||||
qe_add_library(qe_kssolver_davidsonrci ${sources_davidson_rci})
|
||||
add_library(QE::KS_Solvers::Davidson_RCI ALIAS qe_kssolver_davidsonrci)
|
||||
qe_add_library(qe_kssolver_davidsonrci ${src_davidson_rci})
|
||||
target_link_libraries(qe_kssolver_davidsonrci
|
||||
PRIVATE
|
||||
QE::LAX
|
||||
QE::UTILX
|
||||
QE::MPI_Fortran)
|
||||
qe_lax
|
||||
qe_utilx
|
||||
qe_mpi_fortran)
|
||||
|
||||
qe_add_library(qe_kssolver_cg ${sources_cg})
|
||||
add_library(QE::KS_Solvers::CG ALIAS qe_kssolver_cg)
|
||||
qe_add_library(qe_kssolver_cg ${src_cg})
|
||||
target_link_libraries(qe_kssolver_cg
|
||||
PRIVATE
|
||||
QE::LAX
|
||||
QE::UTILX
|
||||
QE::MPI_Fortran)
|
||||
qe_lax
|
||||
qe_utilx
|
||||
qe_mpi_fortran)
|
||||
if(QE_ENABLE_CUDA)
|
||||
target_link_libraries(qe_kssolver_cg
|
||||
PRIVATE
|
||||
qe_devxlib)
|
||||
endif()
|
||||
|
||||
qe_add_library(qe_kssolver_ppcg ${sources_ppcg})
|
||||
add_library(QE::KS_Solvers::PPCG ALIAS qe_kssolver_ppcg)
|
||||
qe_add_library(qe_kssolver_ppcg ${src_ppcg})
|
||||
target_link_libraries(qe_kssolver_ppcg
|
||||
PRIVATE
|
||||
QE::SCALAPACK
|
||||
QE::OpenMP_Fortran
|
||||
QE::LAX
|
||||
QE::UTILX
|
||||
QE::MPI_Fortran)
|
||||
qe_scalapack
|
||||
qe_openmp_fortran
|
||||
qe_lax
|
||||
qe_lapack
|
||||
qe_utilx
|
||||
qe_mpi_fortran)
|
||||
|
||||
qe_add_library(qe_kssolver_dense ${sources_dense})
|
||||
add_library(QE::KS_Solvers::DENSE ALIAS qe_kssolver_dense)
|
||||
qe_add_library(qe_kssolver_dense ${src_dense})
|
||||
target_link_libraries(qe_kssolver_dense
|
||||
PRIVATE
|
||||
QE::LAX
|
||||
QE::UTILX
|
||||
QE::MPI_Fortran)
|
||||
qe_lax
|
||||
qe_utilx
|
||||
qe_mpi_fortran)
|
||||
|
||||
qe_add_library(qe_kssolver_paro ${sources_paro})
|
||||
add_library(QE::KS_Solvers::ParO ALIAS qe_kssolver_paro)
|
||||
qe_add_library(qe_kssolver_paro ${src_paro})
|
||||
target_link_libraries(qe_kssolver_paro
|
||||
PRIVATE
|
||||
QE::KS_Solvers::DENSE
|
||||
QE::LAX
|
||||
QE::UTILX
|
||||
QE::MPI_Fortran)
|
||||
qe_kssolver_dense
|
||||
qe_lax
|
||||
qe_utilx
|
||||
qe_mpi_fortran)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_lax
|
||||
distools.f90
|
||||
dspev_drv.f90
|
||||
la_error.f90
|
||||
|
@ -11,17 +11,36 @@ set(sources
|
|||
transto.f90
|
||||
zhpev_drv.f90
|
||||
cdiaghg.f90)
|
||||
qe_enable_cuda_fortran("${src_lax}")
|
||||
|
||||
qe_add_library(qe_lax ${sources})
|
||||
add_library(QE::LAX ALIAS qe_lax)
|
||||
qe_add_library(qe_lax ${src_lax})
|
||||
target_link_libraries(qe_lax
|
||||
PRIVATE
|
||||
QE::ELPA
|
||||
QE::SCALAPACK
|
||||
QE::OpenMP_Fortran
|
||||
QE::MPI_Fortran
|
||||
QE::LAPACK
|
||||
QE::UTILX)
|
||||
qe_elpa
|
||||
qe_scalapack
|
||||
qe_openmp_fortran
|
||||
qe_mpi_fortran
|
||||
qe_lapack
|
||||
qe_utilx)
|
||||
if(QE_ENABLE_CUDA)
|
||||
if(QE_ENABLE_LAXLIB_CUSOLVER)
|
||||
if(CUDAToolkit_VERSION VERSION_LESS 11)
|
||||
message(FATAL_ERROR "cuSOLVER for LAXLib is only supported from CUDA compiler 11, disable it with '-DQE_ENABLE_LAXLIB_CUSOLVER=OFF'")
|
||||
endif()
|
||||
target_link_libraries(qe_lax
|
||||
PRIVATE
|
||||
qe_devxlib
|
||||
CUDA::cusolver)
|
||||
set_property(TARGET qe_lax APPEND
|
||||
PROPERTY
|
||||
COMPILE_DEFINITIONS __USE_CUSOLVER)
|
||||
else()
|
||||
target_link_libraries(qe_lax
|
||||
PRIVATE
|
||||
qe_devxlib
|
||||
qe_eigensolver_gpu)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# LAX relies on header files that should be preprocessed
|
||||
# and renamed *.h -> *.fh due to the fact that those
|
||||
|
@ -60,12 +79,18 @@ qe_install_targets(qe_lax)
|
|||
# TODO move all tests to a proper location
|
||||
###########################################################
|
||||
if(QE_ENABLE_TEST)
|
||||
qe_add_executable(qe_lax_test test.f90)
|
||||
set_target_properties(qe_lax_test PROPERTIES OUTPUT_NAME qe_lax_test.x RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
set(src_lax_test test.f90)
|
||||
qe_enable_cuda_fortran("${src_lax_test}")
|
||||
qe_add_executable(qe_lax_test ${src_lax_test})
|
||||
set_target_properties(qe_lax_test
|
||||
PROPERTIES
|
||||
OUTPUT_NAME qe_lax_test.x
|
||||
RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
target_link_libraries(qe_lax_test
|
||||
PRIVATE
|
||||
QE::MPI_Fortran
|
||||
QE::LAPACK
|
||||
QE::LAX)
|
||||
add_test(NAME test_qe_lax COMMAND ${QE_TESTS_DIR}/qe_lax_test.x)
|
||||
qe_mpi_fortran
|
||||
qe_lapack
|
||||
qe_lax)
|
||||
add_test(NAME test_qe_lax
|
||||
COMMAND ${QE_TESTS_DIR}/qe_lax_test.x)
|
||||
endif(QE_ENABLE_TEST)
|
||||
|
|
|
@ -58,15 +58,13 @@ set(sources
|
|||
addusddenseq.f90)
|
||||
|
||||
qe_add_library(qe_lr_modules ${sources})
|
||||
add_library(QE::LR_Modules ALIAS qe_lr_modules)
|
||||
target_link_libraries(qe_lr_modules
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::PW
|
||||
QE::UPF
|
||||
QE::UTILX
|
||||
QE::FFTX)
|
||||
qe_modules
|
||||
qe_pw
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_modules
|
||||
additional_kpoints.f90
|
||||
autopilot.f90
|
||||
basic_algebra_routines.f90
|
||||
|
@ -128,24 +128,23 @@ set(sources
|
|||
w0gauss.f90
|
||||
w1gauss.f90
|
||||
deviatoric.f90)
|
||||
qe_enable_cuda_fortran("${src_modules}")
|
||||
|
||||
qe_add_library(qe_modules ${sources})
|
||||
add_library(QE::Modules ALIAS qe_modules)
|
||||
qe_add_library(qe_modules ${src_modules})
|
||||
target_link_libraries(qe_modules
|
||||
PRIVATE
|
||||
QE::HDF5_Fortran
|
||||
QE::OpenMP_Fortran
|
||||
QE::FFTX
|
||||
QE::LAX
|
||||
QE::XClib
|
||||
QE::UPF
|
||||
QE::CLIB # this is needed only by wrappers.f90
|
||||
QE::libbeef
|
||||
QE::MPI_Fortran
|
||||
QE::MBD
|
||||
qe_hdf5_fortran
|
||||
qe_openmp_fortran
|
||||
qe_fftx
|
||||
qe_lax
|
||||
qe_upflib
|
||||
qe_clib # this is needed only by wrappers.f90
|
||||
qe_mpi_fortran
|
||||
qe_mbd
|
||||
qe_xclib
|
||||
PUBLIC
|
||||
QE::FOX
|
||||
QE::UTILX)
|
||||
qe_fox
|
||||
qe_utilx)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_neb
|
||||
src/compute_scf.f90
|
||||
src/engine_to_path_pos.f90
|
||||
src/engine_to_path_alat.f90
|
||||
|
@ -25,41 +25,44 @@ set(sources
|
|||
src/set_defaults.f90
|
||||
src/stop_run_path.f90)
|
||||
|
||||
qe_add_library(qe_neb ${sources})
|
||||
add_library(QE::NEB ALIAS qe_neb)
|
||||
qe_add_library(qe_neb ${src_neb})
|
||||
target_link_libraries(qe_neb
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::XClib
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::UPF)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# neb.x
|
||||
###########################################################
|
||||
set(sources src/neb.f90)
|
||||
qe_add_executable(qe_neb_exe ${sources})
|
||||
set_target_properties(qe_neb_exe PROPERTIES OUTPUT_NAME neb.x)
|
||||
set(src_neb_x src/neb.f90)
|
||||
qe_enable_cuda_fortran("${src_neb_x}")
|
||||
qe_add_executable(qe_neb_exe ${src_neb_x})
|
||||
set_target_properties(qe_neb_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME neb.x)
|
||||
target_link_libraries(qe_neb_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::LAX
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::NEB)
|
||||
qe_pw
|
||||
qe_lax
|
||||
qe_modules
|
||||
qe_neb)
|
||||
|
||||
###########################################################
|
||||
# path_interpolation.x
|
||||
###########################################################
|
||||
set(sources src/path_interpolation.f90)
|
||||
qe_add_executable(qe_neb_pathinterpolation_exe ${sources})
|
||||
set_target_properties(qe_neb_pathinterpolation_exe PROPERTIES OUTPUT_NAME path_interpolation.x)
|
||||
set(src_path_interpolation_x src/path_interpolation.f90)
|
||||
qe_add_executable(qe_neb_pathinterpolation_exe ${src_path_interpolation_x})
|
||||
set_target_properties(qe_neb_pathinterpolation_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME path_interpolation.x)
|
||||
target_link_libraries(qe_neb_pathinterpolation_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::NEB
|
||||
QE::UPF)
|
||||
qe_modules
|
||||
qe_neb
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources_ph
|
||||
set(src_ph
|
||||
PH/acfdtest.f90
|
||||
PH/add_dkmds.f90
|
||||
PH/add_for_charges.f90
|
||||
|
@ -186,10 +186,10 @@ set(sources_ph
|
|||
PH/ahc.f90
|
||||
PH/postahc.f90)
|
||||
|
||||
set(sources_phaux
|
||||
set(src_phaux
|
||||
PH/write_eigenvectors.f90)
|
||||
|
||||
set(sources_gamma
|
||||
set(src_gamma
|
||||
Gamma/a_h.f90
|
||||
Gamma/cg_readin.f90
|
||||
Gamma/cg_setup.f90
|
||||
|
@ -214,213 +214,201 @@ set(sources_gamma
|
|||
Gamma/solve_e.f90
|
||||
Gamma/solve_ph.f90
|
||||
Gamma/writedyn.f90)
|
||||
qe_enable_cuda_fortran("${src_gamma}")
|
||||
|
||||
set(sources_fd
|
||||
set(src_fd
|
||||
FD/stop_pp.f90)
|
||||
|
||||
|
||||
qe_add_library(qe_phonon_ph ${sources_ph})
|
||||
add_library(QE::PHonon::PH ALIAS qe_phonon_ph)
|
||||
qe_add_library(qe_phonon_ph ${src_ph})
|
||||
target_link_libraries(qe_phonon_ph
|
||||
PRIVATE
|
||||
QE::HDF5_Fortran
|
||||
QE::OpenMP_Fortran
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::LR_Modules
|
||||
QE::UTILX
|
||||
QE::UPF
|
||||
QE::FFTX)
|
||||
qe_hdf5_fortran
|
||||
qe_openmp_fortran
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_lr_modules
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_fox
|
||||
qe_xclib)
|
||||
|
||||
qe_add_library(qe_phonon_phaux ${sources_phaux})
|
||||
add_library(QE::PHonon::PHAUX ALIAS qe_phonon_phaux)
|
||||
qe_add_library(qe_phonon_phaux ${src_phaux})
|
||||
target_link_libraries(qe_phonon_phaux
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::LR_Modules)
|
||||
qe_modules
|
||||
qe_lr_modules)
|
||||
|
||||
qe_add_library(qe_phonon_gamma ${sources_gamma})
|
||||
add_library(QE::PHonon::Gamma ALIAS qe_phonon_gamma)
|
||||
qe_add_library(qe_phonon_gamma ${src_gamma})
|
||||
target_link_libraries(qe_phonon_gamma
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::LR_Modules
|
||||
QE::UPF
|
||||
QE::FFTX
|
||||
QE::UTILX
|
||||
QE::LAX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_lr_modules
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_lax
|
||||
qe_xclib)
|
||||
|
||||
qe_add_library(qe_phonon_fd ${sources_fd})
|
||||
add_library(QE::PHonon::FD ALIAS qe_phonon_fd)
|
||||
qe_add_library(qe_phonon_fd ${src_fd})
|
||||
target_link_libraries(qe_phonon_fd
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::LR_Modules)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_lr_modules)
|
||||
|
||||
|
||||
###########################################################
|
||||
# ph.x
|
||||
###########################################################
|
||||
set(sources PH/phonon.f90)
|
||||
qe_add_executable(qe_phonon_ph_exe ${sources})
|
||||
set(src_phonon_x PH/phonon.f90)
|
||||
qe_enable_cuda_fortran("${src_phonon_x}")
|
||||
qe_add_executable(qe_phonon_ph_exe ${src_phonon_x})
|
||||
set_target_properties(qe_phonon_ph_exe PROPERTIES OUTPUT_NAME ph.x)
|
||||
target_link_libraries(qe_phonon_ph_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::LAX
|
||||
QE::Modules
|
||||
QE::PHonon::PH
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_lax
|
||||
qe_modules
|
||||
qe_phonon_ph)
|
||||
|
||||
###########################################################
|
||||
# dynmat.x
|
||||
###########################################################
|
||||
set(sources PH/dynmat.f90)
|
||||
qe_add_executable(qe_phonon_dynmat_exe ${sources})
|
||||
set(src_dynmat_x PH/dynmat.f90)
|
||||
qe_add_executable(qe_phonon_dynmat_exe ${src_dynmat_x})
|
||||
set_target_properties(qe_phonon_dynmat_exe PROPERTIES OUTPUT_NAME dynmat.x)
|
||||
target_link_libraries(qe_phonon_dynmat_exe
|
||||
PRIVATE
|
||||
QE::LR_Modules
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::PHonon::PH
|
||||
QE::PHonon::PHAUX)
|
||||
qe_lr_modules
|
||||
qe_modules
|
||||
qe_phonon_ph
|
||||
qe_phonon_phaux
|
||||
qe_fox)
|
||||
|
||||
###########################################################
|
||||
# q2r.x
|
||||
###########################################################
|
||||
set(sources PH/q2r.f90)
|
||||
qe_add_executable(qe_phonon_q2r_exe ${sources})
|
||||
set(src_q2r_x PH/q2r.f90)
|
||||
qe_add_executable(qe_phonon_q2r_exe ${src_q2r_x})
|
||||
set_target_properties(qe_phonon_q2r_exe PROPERTIES OUTPUT_NAME q2r.x)
|
||||
target_link_libraries(qe_phonon_q2r_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::PHonon::PH)
|
||||
qe_modules
|
||||
qe_phonon_ph)
|
||||
|
||||
##################################################################
|
||||
# matdyn.x
|
||||
##################################################################
|
||||
set(sources PH/matdyn.f90)
|
||||
qe_add_executable(qe_phonon_matdyn_exe ${sources})
|
||||
set(src_matdyn_x PH/matdyn.f90)
|
||||
qe_add_executable(qe_phonon_matdyn_exe ${src_matdyn_x})
|
||||
set_target_properties(qe_phonon_matdyn_exe PROPERTIES OUTPUT_NAME matdyn.x)
|
||||
target_link_libraries(qe_phonon_matdyn_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::PW
|
||||
QE::PHonon::PH
|
||||
QE::PHonon::PHAUX
|
||||
QE::LR_Modules)
|
||||
qe_modules
|
||||
qe_pw
|
||||
qe_phonon_ph
|
||||
qe_phonon_phaux
|
||||
qe_lr_modules)
|
||||
|
||||
###########################################################
|
||||
# q2qstar.x
|
||||
###########################################################
|
||||
set(sources PH/q2qstar.f90)
|
||||
qe_add_executable(qe_phonon_q2qstar_exe ${sources})
|
||||
set(src_q2qstar_x PH/q2qstar.f90)
|
||||
qe_add_executable(qe_phonon_q2qstar_exe ${src_q2qstar_x})
|
||||
set_target_properties(qe_phonon_q2qstar_exe PROPERTIES OUTPUT_NAME q2qstar.x)
|
||||
target_link_libraries(qe_phonon_q2qstar_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::LR_Modules
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::PHonon::PH)
|
||||
qe_pw
|
||||
qe_lr_modules
|
||||
qe_modules
|
||||
qe_phonon_ph)
|
||||
|
||||
###########################################################
|
||||
# lambda.x
|
||||
###########################################################
|
||||
set(sources PH/lambda.f90)
|
||||
qe_add_executable(qe_phonon_lambda_exe ${sources})
|
||||
set(src_lambda_x PH/lambda.f90)
|
||||
qe_add_executable(qe_phonon_lambda_exe ${src_lambda_x})
|
||||
set_target_properties(qe_phonon_lambda_exe PROPERTIES OUTPUT_NAME lambda.x)
|
||||
target_link_libraries(qe_phonon_lambda_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::PHonon::PH)
|
||||
qe_modules
|
||||
qe_phonon_ph)
|
||||
|
||||
###########################################################
|
||||
# alpha2f.x
|
||||
###########################################################
|
||||
set(sources PH/alpha2f.f90)
|
||||
qe_add_executable(qe_phonon_alpha2f_exe ${sources})
|
||||
set(src_alpha2f_x PH/alpha2f.f90)
|
||||
qe_add_executable(qe_phonon_alpha2f_exe ${src_alpha2f_x})
|
||||
set_target_properties(qe_phonon_alpha2f_exe PROPERTIES OUTPUT_NAME alpha2f.x)
|
||||
target_link_libraries(qe_phonon_alpha2f_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::PHonon::PH)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_phonon_ph)
|
||||
|
||||
###########################################################
|
||||
# epa.x
|
||||
###########################################################
|
||||
set(sources PH/epa.f90)
|
||||
qe_add_executable(qe_phonon_epa_exe ${sources})
|
||||
set(src_epa_x PH/epa.f90)
|
||||
qe_add_executable(qe_phonon_epa_exe ${src_epa_x})
|
||||
set_target_properties(qe_phonon_epa_exe PROPERTIES OUTPUT_NAME epa.x)
|
||||
target_link_libraries(qe_phonon_epa_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::PHonon::PH)
|
||||
qe_modules
|
||||
qe_phonon_ph)
|
||||
|
||||
###########################################################
|
||||
# fqha.x
|
||||
###########################################################
|
||||
set(sources PH/fqha.f90)
|
||||
qe_add_executable(qe_phonon_fqha_exe ${sources})
|
||||
set(src_fqha_x PH/fqha.f90)
|
||||
qe_add_executable(qe_phonon_fqha_exe ${src_fqha_x})
|
||||
set_target_properties(qe_phonon_fqha_exe PROPERTIES OUTPUT_NAME fqha.x)
|
||||
target_link_libraries(qe_phonon_fqha_exe
|
||||
PRIVATE
|
||||
QE::UTILX
|
||||
QE::PHonon::PH)
|
||||
qe_utilx
|
||||
qe_phonon_ph)
|
||||
|
||||
###########################################################
|
||||
# fd.x
|
||||
###########################################################
|
||||
set(sources FD/fd.f90)
|
||||
qe_add_executable(qe_phonon_fd_exe ${sources})
|
||||
set(src_fd_x FD/fd.f90)
|
||||
qe_add_executable(qe_phonon_fd_exe ${src_fd_x})
|
||||
set_target_properties(qe_phonon_fd_exe PROPERTIES OUTPUT_NAME fd.x)
|
||||
target_link_libraries(qe_phonon_fd_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PHonon::FD
|
||||
QE::PHonon::PH)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_phonon_fd
|
||||
qe_phonon_ph
|
||||
qe_fftx)
|
||||
|
||||
###########################################################
|
||||
# fd_ef.x
|
||||
###########################################################
|
||||
set(sources FD/fd_ef.f90)
|
||||
qe_add_executable(qe_phonon_fdef_exe ${sources})
|
||||
set(src_fd_ef_x FD/fd_ef.f90)
|
||||
qe_add_executable(qe_phonon_fdef_exe ${src_fd_ef_x})
|
||||
set_target_properties(qe_phonon_fdef_exe PROPERTIES OUTPUT_NAME fd_ef.x)
|
||||
target_link_libraries(qe_phonon_fdef_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PHonon::FD
|
||||
QE::PHonon::PH)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_phonon_fd
|
||||
qe_phonon_ph
|
||||
qe_fftx)
|
||||
|
||||
###########################################################
|
||||
# fd_ifc.x
|
||||
###########################################################
|
||||
set(sources FD/fd_ifc.f90)
|
||||
qe_add_executable(qe_phonon_fdifc_exe ${sources})
|
||||
set(src_fd_ifc_x FD/fd_ifc.f90)
|
||||
qe_add_executable(qe_phonon_fdifc_exe ${src_fd_ifc_x})
|
||||
set_target_properties(qe_phonon_fdifc_exe PROPERTIES OUTPUT_NAME fd_ifc.x)
|
||||
target_link_libraries(qe_phonon_fdifc_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PHonon::FD
|
||||
QE::PHonon::PH)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_phonon_fd
|
||||
qe_phonon_ph
|
||||
qe_fftx)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,68 +1,6 @@
|
|||
These are instructions on how to run the examples for PHonon package.
|
||||
These examples try to exercise all the programs and features
|
||||
of the PHonon package.
|
||||
If you find that any relevant feature isn't being tested,
|
||||
please contact us (or even better, write and send us a new example).
|
||||
|
||||
To run the examples, you should follow this procedure:
|
||||
|
||||
1) Edit the "environment_variables" file from the main
|
||||
ESPRESSO directory, setting the following variables as needed:
|
||||
|
||||
BIN_DIR = directory where ESPRESSO executables reside
|
||||
PSEUDO_DIR = directory where pseudopotential files reside
|
||||
TMP_DIR = directory to be used as temporary storage area
|
||||
|
||||
If you have downloaded the full ESPRESSO distribution, you may set
|
||||
BIN_DIR=$TOPDIR/bin and PSEUDO_DIR=$TOPDIR/pseudo, where $TOPDIR is
|
||||
the root of the ESPRESSO source tree.
|
||||
|
||||
TMP_DIR must be a directory you have read and write access to, with
|
||||
enough available space to host the temporary files produced by the
|
||||
example runs, and possibly offering high I/O performance (i.e.,
|
||||
don't use an NFS-mounted directory).
|
||||
|
||||
2) If you want to test the parallel version of ESPRESSO, you will
|
||||
usually have to specify a driver program (such as "poe" or "mpirun")
|
||||
and the number of processors. This can be done by editing PARA_PREFIX
|
||||
and PARA_POSTFIX variables (in the "environment_variables" file).
|
||||
Parallel executables will be run by a command like this:
|
||||
|
||||
$PARA_PREFIX ph.x $PARA_POSTFIX < file.in > file.out
|
||||
|
||||
For example, if the command line is like this (as for an IBM SP):
|
||||
|
||||
poe ph.x -procs 4 < file.in > file.out
|
||||
|
||||
you should set PARA_PREFIX="poe", PARA_POSTFIX="-procs 4".
|
||||
|
||||
See section "Running on parallel machines" of the user guide for details.
|
||||
Furthermore, if your machine does not support interactive use, you
|
||||
must run the commands specified below through the batch queueing
|
||||
system installed on that machine. Ask your system administrator
|
||||
for instructions.
|
||||
|
||||
3) To run a single example, go to the corresponding directory (for
|
||||
instance, "example/example01") and execute:
|
||||
|
||||
./run_example
|
||||
|
||||
This will create a subdirectory "results", containing the input and
|
||||
output files generated by the calculation.
|
||||
|
||||
Some examples take only a few seconds to run, while others may
|
||||
require several minutes depending on your system.
|
||||
|
||||
4) In each example's directory, the "reference" subdirectory contains
|
||||
verified output files, that you can check your results against.
|
||||
|
||||
The reference results were generated on a Linux PC with Intel compiler.
|
||||
On different architectures the precise numbers could be slightly
|
||||
different, in particular if different FFT dimensions are
|
||||
automatically selected. For this reason, a plain "diff" of your
|
||||
results against the reference data doesn't work, or at least, it
|
||||
requires human inspection of the results.
|
||||
|
||||
These examples cover most programs and features of the PHonon package.
|
||||
See comments in file "environment_variables" in the top QE directory
|
||||
for instructions on how to run these examples.
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
LIST AND CONTENT OF THE EXAMPLES
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_pp
|
||||
src/addusdens1d.f90
|
||||
src/add_shift_cc.f90
|
||||
src/add_shift_lc.f90
|
||||
|
@ -43,466 +43,451 @@ set(sources
|
|||
src/write_hamiltonians.f90
|
||||
src/xc_vdW_scale_mod.f90
|
||||
src/projwfc.f90)
|
||||
qe_enable_cuda_fortran("${src_pp}")
|
||||
|
||||
qe_add_library(qe_pp ${sources})
|
||||
add_library(QE::PP ALIAS qe_pp)
|
||||
qe_add_library(qe_pp ${src_pp})
|
||||
target_compile_definitions(qe_pp PRIVATE "__WANLIB")
|
||||
target_link_libraries(qe_pp
|
||||
PRIVATE
|
||||
QE::OpenMP_Fortran
|
||||
QE::FOX
|
||||
QE::XClib
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::FFTX
|
||||
QE::UPF
|
||||
QE::LAX)
|
||||
qe_openmp_fortran
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_fftx
|
||||
qe_upflib
|
||||
qe_lax
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# pp.x
|
||||
###########################################################
|
||||
set(sources src/postproc.f90)
|
||||
qe_add_executable(qe_pp_exe ${sources})
|
||||
set(src_pp_x src/postproc.f90)
|
||||
qe_add_executable(qe_pp_exe ${src_pp_x})
|
||||
set_target_properties(qe_pp_exe PROPERTIES OUTPUT_NAME pp.x)
|
||||
target_link_libraries(qe_pp_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::PP
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# open_grid.x
|
||||
###########################################################
|
||||
set(sources src/open_grid.f90)
|
||||
qe_add_executable(qe_pp_opengrid_exe ${sources})
|
||||
set(src_open_grid_x src/open_grid.f90)
|
||||
qe_add_executable(qe_pp_opengrid_exe ${src_open_grid_x})
|
||||
set_target_properties(qe_pp_opengrid_exe PROPERTIES OUTPUT_NAME open_grid.x)
|
||||
target_link_libraries(qe_pp_opengrid_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::PP
|
||||
QE::FFTX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_fftx
|
||||
qe_upflib
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# average.x
|
||||
###########################################################
|
||||
set(sources src/average.f90)
|
||||
qe_add_executable(qe_pp_average_exe ${sources})
|
||||
set(src_average_x src/average.f90)
|
||||
qe_add_executable(qe_pp_average_exe ${src_average_x})
|
||||
set_target_properties(qe_pp_average_exe PROPERTIES OUTPUT_NAME average.x)
|
||||
target_link_libraries(qe_pp_average_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::FFTX
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_fftx
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_upflib
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# bands.x
|
||||
###########################################################
|
||||
set(sources src/bands.f90)
|
||||
qe_add_executable(qe_pp_bands_exe ${sources})
|
||||
set(src_bands_x src/bands.f90)
|
||||
qe_add_executable(qe_pp_bands_exe ${src_bands_x})
|
||||
set_target_properties(qe_pp_bands_exe PROPERTIES OUTPUT_NAME bands.x)
|
||||
target_link_libraries(qe_pp_bands_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UTILX
|
||||
QE::UPF)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# dos.x
|
||||
###########################################################
|
||||
set(sources src/dos.f90)
|
||||
qe_add_executable(qe_pp_dos_exe ${sources})
|
||||
set(src_dos_x src/dos.f90)
|
||||
qe_add_executable(qe_pp_dos_exe ${src_dos_x})
|
||||
set_target_properties(qe_pp_dos_exe PROPERTIES OUTPUT_NAME dos.x)
|
||||
target_link_libraries(qe_pp_dos_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::PP
|
||||
QE::Modules
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_pp
|
||||
qe_modules)
|
||||
|
||||
###########################################################
|
||||
# pawplot.x
|
||||
###########################################################
|
||||
set(sources src/pawplot.f90)
|
||||
qe_add_executable(qe_pp_pawplot_exe ${sources})
|
||||
set(src_pawplot_x src/pawplot.f90)
|
||||
qe_add_executable(qe_pp_pawplot_exe ${src_pawplot_x})
|
||||
set_target_properties(qe_pp_pawplot_exe PROPERTIES OUTPUT_NAME pawplot.x)
|
||||
target_link_libraries(qe_pp_pawplot_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UPF
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# plan_avg.x
|
||||
###########################################################
|
||||
set(sources src/plan_avg.f90)
|
||||
qe_add_executable(qe_pp_planavg_exe ${sources})
|
||||
set(src_plan_avg_x src/plan_avg.f90)
|
||||
qe_add_executable(qe_pp_planavg_exe ${src_plan_avg_x})
|
||||
set_target_properties(qe_pp_planavg_exe PROPERTIES OUTPUT_NAME plan_avg.x)
|
||||
target_link_libraries(qe_pp_planavg_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UTILX
|
||||
QE::UPF)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_upflib
|
||||
qe_fftx)
|
||||
|
||||
###########################################################
|
||||
# plotband.x
|
||||
###########################################################
|
||||
set(sources src/plotband.f90)
|
||||
qe_add_executable(qe_pp_plotband_exe ${sources})
|
||||
set(src_plotband_x src/plotband.f90)
|
||||
qe_add_executable(qe_pp_plotband_exe ${src_plotband_x})
|
||||
set_target_properties(qe_pp_plotband_exe PROPERTIES OUTPUT_NAME plotband.x)
|
||||
target_link_libraries(qe_pp_plotband_exe
|
||||
PRIVATE
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PP)
|
||||
qe_modules
|
||||
qe_pp)
|
||||
|
||||
###########################################################
|
||||
# plotproj.x
|
||||
###########################################################
|
||||
set(sources src/plotproj.f90)
|
||||
qe_add_executable(qe_pp_plotproj_exe ${sources})
|
||||
set(src_plotproj_x src/plotproj.f90)
|
||||
qe_add_executable(qe_pp_plotproj_exe ${src_plotproj_x})
|
||||
set_target_properties(qe_pp_plotproj_exe PROPERTIES OUTPUT_NAME plotproj.x)
|
||||
target_link_libraries(qe_pp_plotproj_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::PP)
|
||||
qe_modules
|
||||
qe_pp)
|
||||
|
||||
###########################################################
|
||||
# plotrho.x
|
||||
###########################################################
|
||||
set(sources src/plotrho.f90)
|
||||
qe_add_executable(qe_pp_plotrho_exe ${sources})
|
||||
set(src_plotrho_x src/plotrho.f90)
|
||||
qe_add_executable(qe_pp_plotrho_exe ${src_plotrho_x})
|
||||
set_target_properties(qe_pp_plotrho_exe PROPERTIES OUTPUT_NAME plotrho.x)
|
||||
target_link_libraries(qe_pp_plotrho_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::PP)
|
||||
qe_modules
|
||||
qe_pp)
|
||||
|
||||
###########################################################
|
||||
# pmw.x
|
||||
###########################################################
|
||||
set(sources src/poormanwannier.f90)
|
||||
qe_add_executable(qe_pp_pmw_exe ${sources})
|
||||
set(src_pmw_x src/poormanwannier.f90)
|
||||
qe_add_executable(qe_pp_pmw_exe ${src_pmw_x})
|
||||
set_target_properties(qe_pp_pmw_exe PROPERTIES OUTPUT_NAME pmw.x)
|
||||
target_link_libraries(qe_pp_pmw_exe
|
||||
PRIVATE
|
||||
QE::LAPACK
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UPF)
|
||||
qe_lapack
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# xctest.x
|
||||
###########################################################
|
||||
set(sources src/xctest.f90)
|
||||
qe_add_executable(qe_pp_xctest_exe ${sources})
|
||||
set(src_xctest_x src/xctest.f90)
|
||||
qe_add_executable(qe_pp_xctest_exe ${src_xctest_x})
|
||||
set_target_properties(qe_pp_xctest_exe PROPERTIES OUTPUT_NAME xctest.x)
|
||||
target_link_libraries(qe_pp_xctest_exe
|
||||
PRIVATE
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::CPV
|
||||
QE::PP)
|
||||
qe_modules
|
||||
qe_cpv
|
||||
qe_pp
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# projwfc.x
|
||||
###########################################################
|
||||
set(sources src/projwfc.f90)
|
||||
qe_add_executable(qe_pp_projwfc_exe ${sources})
|
||||
set(src_projwfc_x src/projwfc.f90)
|
||||
qe_add_executable(qe_pp_projwfc_exe ${src_projwfc_x})
|
||||
set_target_properties(qe_pp_projwfc_exe PROPERTIES OUTPUT_NAME projwfc.x)
|
||||
target_link_libraries(qe_pp_projwfc_exe
|
||||
PRIVATE
|
||||
QE::LAPACK
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::LAX
|
||||
QE::UTILX
|
||||
QE::UPF)
|
||||
qe_lapack
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_lax
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# pw2wannier90.x
|
||||
###########################################################
|
||||
set(sources src/pw2wannier90.f90)
|
||||
qe_add_executable(qe_pp_pw2wannier90_exe ${sources})
|
||||
set(src_pw2wannier90_x src/pw2wannier90.f90)
|
||||
qe_add_executable(qe_pp_pw2wannier90_exe ${src_pw2wannier90_x})
|
||||
set_target_properties(qe_pp_pw2wannier90_exe PROPERTIES OUTPUT_NAME pw2wannier90.x)
|
||||
target_link_libraries(qe_pp_pw2wannier90_exe
|
||||
PRIVATE
|
||||
QE::LAPACK
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::FFTX
|
||||
QE::UPF)
|
||||
qe_lapack
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_fftx
|
||||
qe_upflib
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# pw2critic.x
|
||||
###########################################################
|
||||
set(sources src/pw2critic.f90)
|
||||
qe_add_executable(qe_pp_pw2critic_exe ${sources})
|
||||
set(src_pw2critic_x src/pw2critic.f90)
|
||||
qe_add_executable(qe_pp_pw2critic_exe ${src_pw2critic_x})
|
||||
set_target_properties(qe_pp_pw2critic_exe PROPERTIES OUTPUT_NAME pw2critic.x)
|
||||
target_link_libraries(qe_pp_pw2critic_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_fftx)
|
||||
|
||||
###########################################################
|
||||
# wfck2r.x
|
||||
###########################################################
|
||||
set(sources src/wfck2r.f90)
|
||||
qe_add_executable(qe_pp_wfck2r_exe ${sources})
|
||||
set(src_wfck2r_x src/wfck2r.f90)
|
||||
qe_add_executable(qe_pp_wfck2r_exe ${src_wfck2r_x})
|
||||
set_target_properties(qe_pp_wfck2r_exe PROPERTIES OUTPUT_NAME wfck2r.x)
|
||||
target_link_libraries(qe_pp_wfck2r_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UTILX
|
||||
QE::FFTX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_fftx)
|
||||
|
||||
###########################################################
|
||||
# initial_state.x
|
||||
###########################################################
|
||||
set(sources src/initial_state.f90)
|
||||
qe_add_executable(qe_pp_initial_state_exe ${sources})
|
||||
set(src_initial_state_x src/initial_state.f90)
|
||||
qe_add_executable(qe_pp_initial_state_exe ${src_initial_state_x})
|
||||
set_target_properties(qe_pp_initial_state_exe PROPERTIES OUTPUT_NAME initial_state.x)
|
||||
target_link_libraries(qe_pp_initial_state_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UPF
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# pw2gw.x
|
||||
###########################################################
|
||||
set(sources src/pw2gw.f90)
|
||||
qe_add_executable(qe_pp_pw2gw_exe ${sources})
|
||||
set(src_pw2gw_x src/pw2gw.f90)
|
||||
qe_add_executable(qe_pp_pw2gw_exe ${src_pw2gw_x})
|
||||
set_target_properties(qe_pp_pw2gw_exe PROPERTIES OUTPUT_NAME pw2gw.x)
|
||||
target_link_libraries(qe_pp_pw2gw_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::FFTX
|
||||
QE::UPF
|
||||
QE::MPI_Fortran)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_fftx
|
||||
qe_upflib
|
||||
qe_mpi_fortran
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# sumpdos.x
|
||||
###########################################################
|
||||
set(sources src/sumpdos.f90)
|
||||
qe_add_executable(qe_pp_sumpdos_exe ${sources})
|
||||
set(src_sumpdos_x src/sumpdos.f90)
|
||||
qe_add_executable(qe_pp_sumpdos_exe ${src_sumpdos_x})
|
||||
set_target_properties(qe_pp_sumpdos_exe PROPERTIES OUTPUT_NAME sumpdos.x)
|
||||
target_link_libraries(qe_pp_sumpdos_exe
|
||||
PRIVATE
|
||||
QE::PP)
|
||||
qe_pp)
|
||||
|
||||
###########################################################
|
||||
# epsilon.x
|
||||
###########################################################
|
||||
set(sources src/epsilon.f90)
|
||||
qe_add_executable(qe_pp_epsilon_exe ${sources})
|
||||
set(src_epsilon_x src/epsilon.f90)
|
||||
qe_add_executable(qe_pp_epsilon_exe ${src_epsilon_x})
|
||||
set_target_properties(qe_pp_epsilon_exe PROPERTIES OUTPUT_NAME epsilon.x)
|
||||
target_link_libraries(qe_pp_epsilon_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UPF
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# wannier_ham.x
|
||||
###########################################################
|
||||
set(sources src/wannier_ham.f90)
|
||||
qe_add_executable(qe_pp_wannierham_exe ${sources})
|
||||
set(src_wannier_ham_x src/wannier_ham.f90)
|
||||
qe_add_executable(qe_pp_wannierham_exe ${src_wannier_ham_x})
|
||||
set_target_properties(qe_pp_wannierham_exe PROPERTIES OUTPUT_NAME wannier_ham.x)
|
||||
target_link_libraries(qe_pp_wannierham_exe
|
||||
PRIVATE
|
||||
QE::CLIB
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PP)
|
||||
qe_clib
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp)
|
||||
|
||||
###########################################################
|
||||
# wannier_plot.x
|
||||
###########################################################
|
||||
set(sources src/wannier_plot.f90)
|
||||
qe_add_executable(qe_pp_wannierplot_exe ${sources})
|
||||
set(src_wannier_plot_x src/wannier_plot.f90)
|
||||
qe_add_executable(qe_pp_wannierplot_exe ${src_wannier_plot_x})
|
||||
set_target_properties(qe_pp_wannierplot_exe PROPERTIES OUTPUT_NAME wannier_plot.x)
|
||||
target_link_libraries(qe_pp_wannierplot_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::FFTX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_fftx)
|
||||
|
||||
###########################################################
|
||||
# molecularpdos.x
|
||||
###########################################################
|
||||
set(sources src/molecularpdos.f90)
|
||||
qe_add_executable(qe_pp_molecularpdos_exe ${sources})
|
||||
set(src_molecularpdos_x src/molecularpdos.f90)
|
||||
qe_add_executable(qe_pp_molecularpdos_exe ${src_molecularpdos_x})
|
||||
set_target_properties(qe_pp_molecularpdos_exe PROPERTIES OUTPUT_NAME molecularpdos.x)
|
||||
target_link_libraries(qe_pp_molecularpdos_exe
|
||||
PRIVATE
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PP)
|
||||
qe_modules
|
||||
qe_pp)
|
||||
|
||||
###########################################################
|
||||
# pw2bgw.x
|
||||
###########################################################
|
||||
set(sources src/pw2bgw.f90)
|
||||
qe_add_executable(qe_pp_pw2bgw_exe ${sources})
|
||||
set(src_pw2bgw_x src/pw2bgw.f90)
|
||||
qe_add_executable(qe_pp_pw2bgw_exe ${src_pw2bgw_x})
|
||||
set_target_properties(qe_pp_pw2bgw_exe PROPERTIES OUTPUT_NAME pw2bgw.x)
|
||||
target_link_libraries(qe_pp_pw2bgw_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::PP
|
||||
QE::UTILX
|
||||
QE::UPF
|
||||
QE::FFTX
|
||||
QE::MPI_Fortran)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_mpi_fortran
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# fs.x
|
||||
###########################################################
|
||||
set(sources src/fermisurface.f90)
|
||||
qe_add_executable(qe_pp_fermisurface_exe ${sources})
|
||||
set(src_fs_x src/fermisurface.f90)
|
||||
qe_add_executable(qe_pp_fermisurface_exe ${src_fs_x})
|
||||
set_target_properties(qe_pp_fermisurface_exe PROPERTIES OUTPUT_NAME fs.x)
|
||||
target_link_libraries(qe_pp_fermisurface_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PP)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp)
|
||||
|
||||
###########################################################
|
||||
# fermi_velocity.x
|
||||
###########################################################
|
||||
set(sources src/fermi_velocity.f90)
|
||||
qe_add_executable(qe_pp_fermivelocity_exe ${sources})
|
||||
set(src_fermi_velocity_x src/fermi_velocity.f90)
|
||||
qe_add_executable(qe_pp_fermivelocity_exe ${src_fermi_velocity_x})
|
||||
set_target_properties(qe_pp_fermivelocity_exe PROPERTIES OUTPUT_NAME fermi_velocity.x)
|
||||
target_link_libraries(qe_pp_fermivelocity_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::PP)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp)
|
||||
|
||||
###########################################################
|
||||
# fermi_proj.x
|
||||
###########################################################
|
||||
set(sources src/fermi_proj.f90)
|
||||
qe_add_executable(qe_pp_fermiproj_exe ${sources})
|
||||
set(src_fermi_proj_x src/fermi_proj.f90)
|
||||
qe_add_executable(qe_pp_fermiproj_exe ${src_fermi_proj_x})
|
||||
set_target_properties(qe_pp_fermiproj_exe PROPERTIES OUTPUT_NAME fermi_proj.x)
|
||||
target_link_libraries(qe_pp_fermiproj_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::PP
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_pp
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# ppacf.x
|
||||
###########################################################
|
||||
set(sources src/ppacf.f90)
|
||||
qe_add_executable(qe_pp_ppacf_exe ${sources})
|
||||
set(src_ppacf_x src/ppacf.f90)
|
||||
qe_add_executable(qe_pp_ppacf_exe ${src_ppacf_x})
|
||||
set_target_properties(qe_pp_ppacf_exe PROPERTIES OUTPUT_NAME ppacf.x)
|
||||
target_link_libraries(qe_pp_ppacf_exe
|
||||
PRIVATE
|
||||
QE::LAPACK
|
||||
QE::PW
|
||||
QE::XClib
|
||||
QE::PP
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::FFTX)
|
||||
qe_lapack
|
||||
qe_pw
|
||||
qe_pp
|
||||
qe_modules
|
||||
qe_fftx
|
||||
qe_upflib
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# ef.x
|
||||
###########################################################
|
||||
set(sources
|
||||
set(src_ef_x
|
||||
simple_transport/src/cryst_to_car.f90
|
||||
simple_transport/src/lint.f90
|
||||
simple_transport/src/ef.f90)
|
||||
qe_add_executable(qe_pp_st_ef_exe ${sources})
|
||||
qe_add_executable(qe_pp_st_ef_exe ${src_ef_x})
|
||||
set_target_properties(qe_pp_st_ef_exe PROPERTIES OUTPUT_NAME ef.x)
|
||||
target_link_libraries(qe_pp_st_ef_exe
|
||||
PRIVATE
|
||||
QE::OpenMP_Fortran
|
||||
QE::Modules)
|
||||
qe_openmp_fortran
|
||||
qe_modules)
|
||||
|
||||
###########################################################
|
||||
# dos_sp.x
|
||||
###########################################################
|
||||
set(sources
|
||||
set(src_dos_sp_x
|
||||
simple_transport/src/smearing_mod.f90
|
||||
simple_transport/src/cryst_to_car.f90
|
||||
simple_transport/src/lint.f90
|
||||
simple_transport/src/vband_ibz.f90
|
||||
simple_transport/src/dos.f90)
|
||||
qe_add_executable(qe_pp_st_dos_exe ${sources})
|
||||
qe_add_executable(qe_pp_st_dos_exe ${src_dos_sp_x})
|
||||
set_target_properties(qe_pp_st_dos_exe PROPERTIES OUTPUT_NAME dos_sp.x)
|
||||
target_link_libraries(qe_pp_st_dos_exe
|
||||
PRIVATE
|
||||
QE::OpenMP_Fortran
|
||||
QE::Modules)
|
||||
qe_openmp_fortran
|
||||
qe_modules)
|
||||
|
||||
###########################################################
|
||||
# fermi_int_0.x
|
||||
###########################################################
|
||||
set(sources
|
||||
set(src_fermi_int_0_x
|
||||
simple_transport/src/cryst_to_car.f90
|
||||
simple_transport/src/lint.f90
|
||||
simple_transport/src/vband_ibz.f90
|
||||
simple_transport/src/fermi_int_0.f90)
|
||||
qe_add_executable(qe_pp_st_fermiint0_exe ${sources})
|
||||
qe_add_executable(qe_pp_st_fermiint0_exe ${src_fermi_int_0_x})
|
||||
set_target_properties(qe_pp_st_fermiint0_exe PROPERTIES OUTPUT_NAME fermi_int_0.x)
|
||||
target_link_libraries(qe_pp_st_ef_exe
|
||||
PRIVATE
|
||||
QE::OpenMP_Fortran)
|
||||
qe_openmp_fortran)
|
||||
|
||||
###########################################################
|
||||
# fermi_int_1.x
|
||||
###########################################################
|
||||
set(sources
|
||||
set(src_fermi_int_1_x
|
||||
simple_transport/src/cryst_to_car.f90
|
||||
simple_transport/src/reducegrid.f90
|
||||
simple_transport/src/lint.f90
|
||||
simple_transport/src/vband_ibz.f90
|
||||
simple_transport/src/fermi_int_1.f90)
|
||||
qe_add_executable(qe_pp_st_fermiint1_exe ${sources})
|
||||
qe_add_executable(qe_pp_st_fermiint1_exe ${src_fermi_int_1_x})
|
||||
set_target_properties(qe_pp_st_fermiint1_exe PROPERTIES OUTPUT_NAME fermi_int_1.x)
|
||||
target_link_libraries(qe_pp_st_ef_exe
|
||||
PRIVATE
|
||||
QE::OpenMP_Fortran)
|
||||
qe_openmp_fortran)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,67 +1,6 @@
|
|||
These are instructions on how to run the examples for some PostProc
|
||||
programs included in the Quantum ESPRESSO distribution.
|
||||
These examples try to exercise all the programs and features
|
||||
of the PP package.
|
||||
If you find that any relevant feature isn't being tested,
|
||||
please contact us (or even better, write and send us a new example).
|
||||
To run the examples, you should follow this procedure:
|
||||
|
||||
1) Edit the "environment_variables" file from the main
|
||||
ESPRESSO directory, setting the following variables as needed:
|
||||
|
||||
BIN_DIR = directory where ESPRESSO executables reside
|
||||
PSEUDO_DIR = directory where pseudopotential files reside
|
||||
TMP_DIR = directory to be used as temporary storage area
|
||||
|
||||
If you have downloaded the full ESPRESSO distribution, you may set
|
||||
BIN_DIR=$TOPDIR/bin and PSEUDO_DIR=$TOPDIR/pseudo, where $TOPDIR is
|
||||
the root of the ESPRESSO source tree.
|
||||
|
||||
TMP_DIR must be a directory you have read and write access to, with
|
||||
enough available space to host the temporary files produced by the
|
||||
example runs, and possibly offering high I/O performance (i.e.,
|
||||
don't use an NFS-mounted directory).
|
||||
|
||||
2) If you want to test the parallel version of ESPRESSO, you will
|
||||
usually have to specify a driver program (such as "poe" or "mpirun")
|
||||
and the number of processors. This can be done by editing PARA_PREFIX
|
||||
and PARA_POSTFIX variables (in the "environment_variables" file).
|
||||
Parallel executables will be run by a command like this:
|
||||
|
||||
$PARA_PREFIX pp.x $PARA_POSTFIX < file.in > file.out
|
||||
|
||||
For example, if the command line is like this (as for an IBM SP):
|
||||
|
||||
poe pp.x -procs 4 < file.in > file.out
|
||||
|
||||
you should set PARA_PREFIX="poe", PARA_POSTFIX="-procs 4".
|
||||
|
||||
See section "Running on parallel machines" of the user guide for details.
|
||||
Furthermore, if your machine does not support interactive use, you
|
||||
must run the commands specified below through the batch queueing
|
||||
system installed on that machine. Ask your system administrator
|
||||
for instructions.
|
||||
|
||||
3) To run a single example, go to the corresponding directory (for
|
||||
instance, "example/example01") and execute:
|
||||
|
||||
./run_example
|
||||
|
||||
This will create a subdirectory "results", containing the input and
|
||||
output files generated by the calculation.
|
||||
|
||||
Some examples take only a few seconds to run, while others may
|
||||
require several minutes depending on your system.
|
||||
|
||||
4) In each example's directory, the "reference" subdirectory contains
|
||||
verified output files, that you can check your results against.
|
||||
|
||||
The reference results were generated on a Linux PC with Intel compiler.
|
||||
On different architectures the precise numbers could be slightly
|
||||
different, in particular if different FFT dimensions are
|
||||
automatically selected. For this reason, a plain "diff" of your
|
||||
results against the reference data doesn't work, or at least, it
|
||||
requires human inspection of the results.
|
||||
These examples cover most programs and features of the PostProc package.
|
||||
See comments in file "environment_variables" in the top QE directory
|
||||
for instructions on how to run these examples.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_pw
|
||||
src/a2fmod.f90
|
||||
src/add_bfield.f90
|
||||
src/add_efield.f90
|
||||
|
@ -254,98 +254,119 @@ set(sources
|
|||
src/wannier_check.f90
|
||||
src/wannier_clean.f90
|
||||
src/wannier_occ.f90)
|
||||
|
||||
qe_add_library(qe_pw ${sources})
|
||||
add_library(QE::PW ALIAS qe_pw)
|
||||
qe_enable_cuda_fortran("${src_pw}")
|
||||
|
||||
qe_add_library(qe_pw ${src_pw})
|
||||
target_link_libraries(qe_pw
|
||||
PRIVATE
|
||||
QE::HDF5_Fortran
|
||||
QE::ELPA
|
||||
QE::SCALAPACK
|
||||
QE::LAX
|
||||
QE::XClib
|
||||
QE::UTILX # TODO direct or transitive via QE::LAX?
|
||||
QE::KS_Solvers::Davidson
|
||||
QE::KS_Solvers::CG
|
||||
QE::KS_Solvers::PPCG
|
||||
QE::KS_Solvers::ParO
|
||||
QE::UPF # TODO turn to vendorized library from MaX gitrepo ?
|
||||
QE::Modules
|
||||
QE::FFTX
|
||||
QE::DFTD3
|
||||
QE::OpenMP_Fortran
|
||||
QE::MPI_Fortran)
|
||||
qe_hdf5_fortran
|
||||
qe_elpa
|
||||
qe_scalapack
|
||||
qe_lax
|
||||
qe_kssolver_davidson
|
||||
qe_kssolver_cg
|
||||
qe_kssolver_ppcg
|
||||
qe_kssolver_paro
|
||||
qe_upflib # TODO turn to vendorized library from MaX gitrepo ?
|
||||
qe_modules
|
||||
qe_fftx
|
||||
qe_dftd3
|
||||
qe_openmp_fortran
|
||||
qe_mpi_fortran
|
||||
qe_xclib)
|
||||
if(QE_ENABLE_CUDA)
|
||||
target_link_libraries(qe_pw
|
||||
PRIVATE
|
||||
qe_devxlib
|
||||
CUDA::cublas)
|
||||
endif()
|
||||
|
||||
###########################################################
|
||||
# pw.x
|
||||
###########################################################
|
||||
set(sources src/pwscf.f90)
|
||||
qe_add_executable(qe_pw_exe ${sources})
|
||||
set_target_properties(qe_pw_exe PROPERTIES OUTPUT_NAME pw.x)
|
||||
set(src_pw_x src/pwscf.f90)
|
||||
qe_enable_cuda_fortran("${src_pw_x}")
|
||||
qe_add_executable(qe_pw_exe ${src_pw_x})
|
||||
set_target_properties(qe_pw_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME pw.x)
|
||||
target_link_libraries(qe_pw_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::LAX
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_lax
|
||||
qe_lapack
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# ibrav2cell.x
|
||||
###########################################################
|
||||
set(sources tools/ibrav2cell.f90)
|
||||
qe_add_executable(qe_pw_tools_ibrav2cell_exe ${sources})
|
||||
set_target_properties(qe_pw_tools_ibrav2cell_exe PROPERTIES OUTPUT_NAME ibrav2cell.x)
|
||||
set(src_ibrav2cell_X tools/ibrav2cell.f90)
|
||||
qe_add_executable(qe_pw_tools_ibrav2cell_exe ${src_ibrav2cell_X})
|
||||
set_target_properties(qe_pw_tools_ibrav2cell_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME ibrav2cell.x)
|
||||
target_link_libraries(qe_pw_tools_ibrav2cell_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_lapack)
|
||||
|
||||
###########################################################
|
||||
# cell2ibrav.x
|
||||
###########################################################
|
||||
set(sources tools/cell2ibrav.f90)
|
||||
qe_add_executable(qe_pw_tools_cell2ibrav_exe ${sources})
|
||||
set_target_properties(qe_pw_tools_cell2ibrav_exe PROPERTIES OUTPUT_NAME cell2ibrav.x)
|
||||
set(src_cell2ibrav_x tools/cell2ibrav.f90)
|
||||
qe_add_executable(qe_pw_tools_cell2ibrav_exe ${src_cell2ibrav_x})
|
||||
set_target_properties(qe_pw_tools_cell2ibrav_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME cell2ibrav.x)
|
||||
target_link_libraries(qe_pw_tools_cell2ibrav_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_lapack)
|
||||
|
||||
###########################################################
|
||||
# ev.x
|
||||
###########################################################
|
||||
set(sources tools/ev.f90)
|
||||
qe_add_executable(qe_pw_tools_ev_exe ${sources})
|
||||
set_target_properties(qe_pw_tools_ev_exe PROPERTIES OUTPUT_NAME ev.x)
|
||||
set(src_ev_x tools/ev.f90)
|
||||
qe_add_executable(qe_pw_tools_ev_exe ${src_ev_x})
|
||||
set_target_properties(qe_pw_tools_ev_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME ev.x)
|
||||
target_link_libraries(qe_pw_tools_ev_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_lapack)
|
||||
|
||||
###########################################################
|
||||
# kpoints.x
|
||||
###########################################################
|
||||
set(sources tools/kpoints.f90)
|
||||
qe_add_executable(qe_pw_tools_kpoints_exe ${sources})
|
||||
set_target_properties(qe_pw_tools_kpoints_exe PROPERTIES OUTPUT_NAME kpoints.x)
|
||||
set(src_kpoints_x tools/kpoints.f90)
|
||||
qe_add_executable(qe_pw_tools_kpoints_exe ${src_kpoints_x})
|
||||
set_target_properties(qe_pw_tools_kpoints_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME kpoints.x)
|
||||
target_link_libraries(qe_pw_tools_kpoints_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_lapack)
|
||||
|
||||
###########################################################
|
||||
# pwi2xsf.x
|
||||
###########################################################
|
||||
set(sources tools/pwi2xsf.f90)
|
||||
qe_add_executable(qe_pw_tools_pwi2xsf_exe ${sources})
|
||||
set_target_properties(qe_pw_tools_pwi2xsf_exe PROPERTIES OUTPUT_NAME pwi2xsf.x)
|
||||
set(src_pwi2xsf_x tools/pwi2xsf.f90)
|
||||
qe_add_executable(qe_pw_tools_pwi2xsf_exe ${src_pwi2xsf_x})
|
||||
set_target_properties(qe_pw_tools_pwi2xsf_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME pwi2xsf.x)
|
||||
target_link_libraries(qe_pw_tools_pwi2xsf_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_lapack)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,67 +1,6 @@
|
|||
These are instructions on how to run the examples for PW package.
|
||||
These examples try to exercise all the programs and features
|
||||
of the PW package.
|
||||
If you find that any relevant feature isn't being tested,
|
||||
please contact us (or even better, write and send us a new example).
|
||||
|
||||
To run the examples, you should follow this procedure:
|
||||
|
||||
1) Edit the "environment_variables" file from the main
|
||||
ESPRESSO directory, setting the following variables as needed:
|
||||
|
||||
BIN_DIR = directory where ESPRESSO executables reside
|
||||
PSEUDO_DIR = directory where pseudopotential files reside
|
||||
TMP_DIR = directory to be used as temporary storage area
|
||||
|
||||
If you have downloaded the full ESPRESSO distribution, you may set
|
||||
BIN_DIR=$TOPDIR/bin and PSEUDO_DIR=$TOPDIR/pseudo, where $TOPDIR is
|
||||
the root of the ESPRESSO source tree.
|
||||
|
||||
TMP_DIR must be a directory you have read and write access to, with
|
||||
enough available space to host the temporary files produced by the
|
||||
example runs, and possibly offering high I/O performance (i.e.,
|
||||
don't use an NFS-mounted directory).
|
||||
|
||||
2) If you want to test the parallel version of ESPRESSO, you will
|
||||
usually have to specify a driver program (such as "poe" or "mpirun")
|
||||
and the number of processors. This can be done by editing PARA_PREFIX
|
||||
and PARA_POSTFIX variables (in the "environment_variables" file).
|
||||
Parallel executables will be run by a command like this:
|
||||
|
||||
$PARA_PREFIX pw.x $PARA_POSTFIX < file.in > file.out
|
||||
|
||||
For example, if the command line is like this (as for an IBM SP):
|
||||
|
||||
poe pw.x -procs 4 < file.in > file.out
|
||||
|
||||
you should set PARA_PREFIX="poe", PARA_POSTFIX="-procs 4".
|
||||
|
||||
See section "Running on parallel machines" of the user guide for details.
|
||||
Furthermore, if your machine does not support interactive use, you
|
||||
must run the commands specified below through the batch queueing
|
||||
system installed on that machine. Ask your system administrator
|
||||
for instructions.
|
||||
|
||||
3) To run a single example, go to the corresponding directory (for
|
||||
instance, "example/example01") and execute:
|
||||
|
||||
./run_example
|
||||
|
||||
This will create a subdirectory "results", containing the input and
|
||||
output files generated by the calculation.
|
||||
|
||||
Some examples take only a few seconds to run, while others may
|
||||
require several minutes depending on your system.
|
||||
|
||||
4) In each example's directory, the "reference" subdirectory contains
|
||||
verified output files, that you can check your results against.
|
||||
|
||||
The reference results were generated on a Linux PC with Intel compiler.
|
||||
On different architectures the precise numbers could be slightly
|
||||
different, in particular if different FFT dimensions are
|
||||
automatically selected. For this reason, a plain "diff" of your
|
||||
results against the reference data doesn't work, or at least, it
|
||||
requires human inspection of the results.
|
||||
These examples cover most programs and features of the PW package.
|
||||
See comments in file "environment_variables" in the top QE directory
|
||||
for instructions on how to run these examples.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
This is a test, this file represents 2D cutoff modifications
|
|
@ -44,13 +44,13 @@ qe_add_executable(qe_pwcond_exe ${sources})
|
|||
set_target_properties(qe_pwcond_exe PROPERTIES OUTPUT_NAME pwcond.x)
|
||||
target_link_libraries(qe_pwcond_exe
|
||||
PRIVATE
|
||||
QE::LAPACK
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::UPF
|
||||
QE::UTILX
|
||||
QE::FFTX
|
||||
QE::MPI_Fortran)
|
||||
qe_lapack
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_mpi_fortran
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,23 +1,29 @@
|
|||
###########################################################
|
||||
# k_for_bands.x
|
||||
###########################################################
|
||||
set(sources SRC/K_for_bands.f90)
|
||||
qe_add_executable(qe_plotphon_kforbands_exe ${sources})
|
||||
set_target_properties(qe_plotphon_kforbands_exe PROPERTIES OUTPUT_NAME k_for_bands.x)
|
||||
set(src_k_for_bands_x SRC/K_for_bands.f90)
|
||||
qe_add_executable(qe_plotphon_kforbands_exe ${src_k_for_bands_x})
|
||||
set_target_properties(qe_plotphon_kforbands_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME k_for_bands.x)
|
||||
|
||||
###########################################################
|
||||
# k_for_bands.x
|
||||
###########################################################
|
||||
set(sources SRC/Bands_to_gnuplot.f90)
|
||||
qe_add_executable(qe_plotphon_bandstognuplot_exe ${sources})
|
||||
set_target_properties(qe_plotphon_bandstognuplot_exe PROPERTIES OUTPUT_NAME bands_to_gnuplot.x)
|
||||
set(src_k_for_bands_x SRC/Bands_to_gnuplot.f90)
|
||||
qe_add_executable(qe_plotphon_bandstognuplot_exe ${src_k_for_bands_x})
|
||||
set_target_properties(qe_plotphon_bandstognuplot_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME bands_to_gnuplot.x)
|
||||
|
||||
###########################################################
|
||||
# E_min_max.x
|
||||
###########################################################
|
||||
set(sources SRC/E_min_max.f90)
|
||||
qe_add_executable(qe_plotphon_eminmax_exe ${sources})
|
||||
set_target_properties(qe_plotphon_eminmax_exe PROPERTIES OUTPUT_NAME E_min_max.x)
|
||||
set(src_E_min_max_x SRC/E_min_max.f90)
|
||||
qe_add_executable(qe_plotphon_eminmax_exe ${src_E_min_max_x})
|
||||
set_target_properties(qe_plotphon_eminmax_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME E_min_max.x)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
@ -25,4 +31,4 @@ qe_install_targets(
|
|||
# Executables
|
||||
qe_plotphon_kforbands_exe
|
||||
qe_plotphon_bandstognuplot_exe
|
||||
qe_plotphon_eminmax_exe)
|
||||
qe_plotphon_eminmax_exe)
|
||||
|
|
|
@ -1,61 +1,75 @@
|
|||
###########################################################
|
||||
# atom_info.x
|
||||
###########################################################
|
||||
set(sources SRC/atom_info.f90)
|
||||
qe_add_executable(qe_qha_atominfo_exe ${sources})
|
||||
set_target_properties(qe_qha_atominfo_exe PROPERTIES OUTPUT_NAME atom_info.x)
|
||||
set(src_atom_info_x SRC/atom_info.f90)
|
||||
qe_add_executable(qe_qha_atominfo_exe ${src_atom_info_x})
|
||||
set_target_properties(qe_qha_atominfo_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME atom_info.x)
|
||||
|
||||
###########################################################
|
||||
# Atom_projected_properties.x
|
||||
###########################################################
|
||||
set(sources SRC/Atom_projected_properties.f90)
|
||||
qe_add_executable(qe_qha_atomprojectedproperties_exe ${sources})
|
||||
set_target_properties(qe_qha_atomprojectedproperties_exe PROPERTIES OUTPUT_NAME Atom_projected_properties.x)
|
||||
set(src_Atom_projected_properties_X SRC/Atom_projected_properties.f90)
|
||||
qe_add_executable(qe_qha_atomprojectedproperties_exe ${src_Atom_projected_properties_X})
|
||||
set_target_properties(qe_qha_atomprojectedproperties_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME Atom_projected_properties.x)
|
||||
|
||||
###########################################################
|
||||
# F_QHA.x
|
||||
###########################################################
|
||||
set(sources SRC/F_QHA.f90)
|
||||
qe_add_executable(qe_qha_fqha_exe ${sources})
|
||||
set_target_properties(qe_qha_fqha_exe PROPERTIES OUTPUT_NAME F_QHA.x)
|
||||
set(src_F_QHA_x SRC/F_QHA.f90)
|
||||
qe_add_executable(qe_qha_fqha_exe ${src_F_QHA_x})
|
||||
set_target_properties(qe_qha_fqha_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME F_QHA.x)
|
||||
|
||||
###########################################################
|
||||
# Ghost_DOS.x
|
||||
###########################################################
|
||||
set(sources SRC/Ghost_DOS.f90)
|
||||
qe_add_executable(qe_qha_ghostdos_exe ${sources})
|
||||
set_target_properties(qe_qha_ghostdos_exe PROPERTIES OUTPUT_NAME Ghost_DOS.x)
|
||||
set(src_Ghost_DOS_x SRC/Ghost_DOS.f90)
|
||||
qe_add_executable(qe_qha_ghostdos_exe ${src_Ghost_DOS_x})
|
||||
set_target_properties(qe_qha_ghostdos_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME Ghost_DOS.x)
|
||||
|
||||
###########################################################
|
||||
# Mean_square_displacement.x
|
||||
###########################################################
|
||||
set(sources SRC/Mean_square_displacement.f90)
|
||||
qe_add_executable(qe_qha_meansquaredisplacement_exe ${sources})
|
||||
set_target_properties(qe_qha_meansquaredisplacement_exe PROPERTIES OUTPUT_NAME Mean_square_displacement.x)
|
||||
set(src_Mean_square_displacement_x SRC/Mean_square_displacement.f90)
|
||||
qe_add_executable(qe_qha_meansquaredisplacement_exe ${src_Mean_square_displacement_x})
|
||||
set_target_properties(qe_qha_meansquaredisplacement_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME Mean_square_displacement.x)
|
||||
|
||||
###########################################################
|
||||
# Partial_phonon_DOS.x
|
||||
###########################################################
|
||||
set(sources SRC/Partial_phonon_DOS.f90)
|
||||
qe_add_executable(qe_qha_partialphonondos_exe ${sources})
|
||||
set_target_properties(qe_qha_partialphonondos_exe PROPERTIES OUTPUT_NAME Partial_phonon_DOS.x)
|
||||
set(src_Partial_phonon_DOS_x SRC/Partial_phonon_DOS.f90)
|
||||
qe_add_executable(qe_qha_partialphonondos_exe ${src_Partial_phonon_DOS_x})
|
||||
set_target_properties(qe_qha_partialphonondos_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME Partial_phonon_DOS.x)
|
||||
|
||||
###########################################################
|
||||
# Debye.x
|
||||
###########################################################
|
||||
set(sources
|
||||
set(src_Debye_x
|
||||
Debye/cheval.f
|
||||
Debye/d1mach.f
|
||||
Debye/debye3.f
|
||||
Debye/Debye.f90
|
||||
Debye/Debye_T.f)
|
||||
qe_add_executable(qe_qha_debye_exe ${sources})
|
||||
set_target_properties(qe_qha_debye_exe PROPERTIES OUTPUT_NAME Debye.x)
|
||||
qe_add_executable(qe_qha_debye_exe ${src_Debye_x})
|
||||
set_target_properties(qe_qha_debye_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME Debye.x)
|
||||
|
||||
###########################################################
|
||||
# phonon_dos.x
|
||||
###########################################################
|
||||
set(sources
|
||||
set(src_phonon_dos_x
|
||||
Phonon_DOS/phonon_dos.f
|
||||
Phonon_DOS/k_brillouin.f
|
||||
Phonon_DOS/generate_tetra.f
|
||||
|
@ -63,20 +77,24 @@ set(sources
|
|||
Phonon_DOS/det4.f
|
||||
Phonon_DOS/Tetrahedra.f
|
||||
Phonon_DOS/Integration.f)
|
||||
qe_add_executable(qe_qha_phonondos_exe ${sources})
|
||||
set_target_properties(qe_qha_phonondos_exe PROPERTIES OUTPUT_NAME phonon_dos.x)
|
||||
qe_add_executable(qe_qha_phonondos_exe ${src_phonon_dos_x})
|
||||
set_target_properties(qe_qha_phonondos_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME phonon_dos.x)
|
||||
|
||||
###########################################################
|
||||
# tetra.x
|
||||
###########################################################
|
||||
set(sources
|
||||
set(src_tetra_x
|
||||
Phonon_DOS/tetra.f
|
||||
Phonon_DOS/k_brillouin.f
|
||||
Phonon_DOS/generate_tetra.f
|
||||
Phonon_DOS/det3.f
|
||||
Phonon_DOS/det4.f)
|
||||
qe_add_executable(qe_qha_tetra_exe ${sources})
|
||||
set_target_properties(qe_qha_tetra_exe PROPERTIES OUTPUT_NAME tetra.x)
|
||||
qe_add_executable(qe_qha_tetra_exe ${src_tetra_x})
|
||||
set_target_properties(qe_qha_tetra_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME tetra.x)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
@ -89,4 +107,4 @@ qe_install_targets(
|
|||
qe_qha_partialphonondos_exe
|
||||
qe_qha_debye_exe
|
||||
qe_qha_phonondos_exe
|
||||
qe_qha_tetra_exe)
|
||||
qe_qha_tetra_exe)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_tddfpt
|
||||
src/lr_variables.f90
|
||||
src/lr_charg_resp.f90
|
||||
src/bcast_lr_input.f90
|
||||
|
@ -52,77 +52,83 @@ set(sources
|
|||
src/orthogonalize_omega.f90
|
||||
src/mix_pot.f90)
|
||||
|
||||
qe_add_library(qe_tddfpt ${sources})
|
||||
add_library(QE::TDDFPT ALIAS qe_tddfpt)
|
||||
qe_add_library(qe_tddfpt ${src_tddfpt})
|
||||
target_link_libraries(qe_tddfpt
|
||||
PRIVATE
|
||||
QE::LR_Modules
|
||||
QE::PW
|
||||
QE::XClib
|
||||
QE::Modules
|
||||
QE::UTILX
|
||||
QE::UPF
|
||||
QE::FFTX)
|
||||
qe_lr_modules
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# turbo_lanczos.x
|
||||
###########################################################
|
||||
set(sources src/lr_main.f90)
|
||||
qe_add_executable(qe_tddfpt_turbolanczos_exe ${sources})
|
||||
set_target_properties(qe_tddfpt_turbolanczos_exe PROPERTIES OUTPUT_NAME turbo_lanczos.x)
|
||||
set(src_turbo_lanczos_x src/lr_main.f90)
|
||||
qe_add_executable(qe_tddfpt_turbolanczos_exe ${src_turbo_lanczos_x})
|
||||
set_target_properties(qe_tddfpt_turbolanczos_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME turbo_lanczos.x)
|
||||
target_link_libraries(qe_tddfpt_turbolanczos_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::XClib
|
||||
QE::Modules
|
||||
QE::TDDFPT
|
||||
QE::UPF
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_tddfpt
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# turbo_davidson.x
|
||||
###########################################################
|
||||
set(sources src/lr_dav_main.f90)
|
||||
qe_add_executable(qe_tddfpt_turbodavidson_exe ${sources})
|
||||
set_target_properties(qe_tddfpt_turbodavidson_exe PROPERTIES OUTPUT_NAME turbo_davidson.x)
|
||||
set(src_turbo_davidson_x src/lr_dav_main.f90)
|
||||
qe_add_executable(qe_tddfpt_turbodavidson_exe ${src_turbo_davidson_x})
|
||||
set_target_properties(qe_tddfpt_turbodavidson_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME turbo_davidson.x)
|
||||
target_link_libraries(qe_tddfpt_turbodavidson_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::XClib
|
||||
QE::Modules
|
||||
QE::TDDFPT
|
||||
QE::UPF
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_tddfpt
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# turbo_eels.x
|
||||
###########################################################
|
||||
set(sources src/lr_eels_main.f90)
|
||||
qe_add_executable(qe_tddfpt_turboeels_exe ${sources})
|
||||
set_target_properties(qe_tddfpt_turboeels_exe PROPERTIES OUTPUT_NAME turbo_eels.x)
|
||||
set(src_turbo_eels_x src/lr_eels_main.f90)
|
||||
qe_enable_cuda_fortran("${src_turbo_eels_x}")
|
||||
qe_add_executable(qe_tddfpt_turboeels_exe ${src_turbo_eels_x})
|
||||
set_target_properties(qe_tddfpt_turboeels_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME turbo_eels.x)
|
||||
target_link_libraries(qe_tddfpt_turboeels_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::LAX
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::TDDFPT
|
||||
QE::LR_Modules
|
||||
QE::UPF
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_lax
|
||||
qe_modules
|
||||
qe_tddfpt
|
||||
qe_lr_modules
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# tddfpt_calculate_spectrum.x
|
||||
###########################################################
|
||||
set(sources tools/tddfpt_calculate_spectrum.f90)
|
||||
qe_add_executable(qe_tddfpt_calculatespectrum_exe ${sources})
|
||||
set_target_properties(qe_tddfpt_calculatespectrum_exe PROPERTIES OUTPUT_NAME tddfpt_calculate_spectrum.x)
|
||||
set(src_tddfpt_calculate_spectrum_x tools/tddfpt_calculate_spectrum.f90)
|
||||
qe_add_executable(qe_tddfpt_calculatespectrum_exe ${src_tddfpt_calculate_spectrum_x})
|
||||
set_target_properties(qe_tddfpt_calculatespectrum_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME tddfpt_calculate_spectrum.x)
|
||||
target_link_libraries(qe_tddfpt_calculatespectrum_exe
|
||||
PRIVATE
|
||||
QE::LAPACK
|
||||
QE::UTILX
|
||||
QE::XClib
|
||||
QE::Modules)
|
||||
qe_lapack
|
||||
qe_modules
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -1,51 +1,8 @@
|
|||
These are instructions on how to run the examples for the TDDFPT package.
|
||||
To run the examples, you should follow this procedure:
|
||||
|
||||
1) Edit the "environment_variables" file from the main
|
||||
ESPRESSO directory, setting the following variables as needed:
|
||||
|
||||
BIN_DIR = directory where ESPRESSO executables reside
|
||||
PSEUDO_DIR = directory where pseudopotential files reside
|
||||
TMP_DIR = directory to be used as temporary storage area
|
||||
|
||||
2) If you want to test the parallel version of ESPRESSO, you will
|
||||
usually have to specify a driver program (such as "poe" or "mpirun")
|
||||
and the number of processors. This can be done by editing PARA_PREFIX
|
||||
and PARA_POSTFIX variables (in the "environment_variables" file).
|
||||
Parallel executables will be run by a command like this:
|
||||
|
||||
$PARA_PREFIX turbo_lanczos.x $PARA_POSTFIX < file.in > file.out
|
||||
|
||||
For example, if the command line is like this:
|
||||
|
||||
mpirun -np 8 turbo_lanczos.x < file.in > file.out
|
||||
|
||||
you should set PARA_PREFIX="mpirun -np 8", PARA_POSTFIX=" ".
|
||||
|
||||
See section "Running on parallel machines" of the user guide for details.
|
||||
Furthermore, if your machine does not support interactive use, you
|
||||
must run the commands specified below through the batch queueing
|
||||
system installed on that machine. Ask your system administrator
|
||||
for instructions.
|
||||
|
||||
3) To run a single example, go to the corresponding directory (for
|
||||
instance, "example/example01") and execute:
|
||||
|
||||
./run_example
|
||||
|
||||
This will create a subdirectory "results", containing the input and
|
||||
output files generated by the calculation.
|
||||
|
||||
4) In each example's directory, the "reference" subdirectory contains
|
||||
verified output files, that you can check your results against.
|
||||
|
||||
The reference results were generated on a Linux PC with Intel compiler.
|
||||
On different architectures the precise numbers could be slightly
|
||||
different, in particular if different FFT dimensions are
|
||||
automatically selected. For this reason, a plain "diff" of your
|
||||
results against the reference data doesn't work, or at least, it
|
||||
requires human inspection of the results.
|
||||
These examples cover most programs and features of the TDDFPT package.
|
||||
See comments in file "environment_variables" in the top QE directory
|
||||
for instructions on how to run these examples.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
LIST AND CONTENT OF THE EXAMPLES
|
||||
|
||||
|
|
|
@ -236,7 +236,6 @@ CONTAINS
|
|||
IF (nkb > 0) THEN
|
||||
!
|
||||
IF (.not. allocated(becp%r)) CALL allocate_bec_type(nkb,nbnd,becp)
|
||||
becp%r(:,:) = 0.0d0
|
||||
!
|
||||
ALLOCATE(becp_1(nkb,nbnd))
|
||||
becp_1(:,:) = 0.0d0
|
||||
|
@ -257,7 +256,6 @@ CONTAINS
|
|||
IF (nkb > 0) THEN
|
||||
!
|
||||
IF(.not. allocated(becp%k)) CALL allocate_bec_type(nkb,nbnd,becp)
|
||||
becp%k(:,:) = (0.0d0,0.0d0)
|
||||
!
|
||||
IF (.NOT.eels) THEN
|
||||
ALLOCATE(becp1_c(nkb,nbnd,nks))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources_util
|
||||
set(src_util
|
||||
clocks_handler.f90
|
||||
cuda_util.f90
|
||||
divide.f90
|
||||
|
@ -16,82 +16,87 @@ set(sources_util
|
|||
thread_util.f90
|
||||
export_gstart_2_solvers.f90
|
||||
set_mpi_comm_4_solvers.f90)
|
||||
qe_enable_cuda_fortran("${src_util}")
|
||||
|
||||
set(sources_util_tests
|
||||
tests/tester.f90
|
||||
tests/utils.f90
|
||||
tests/mp_world.f90)
|
||||
|
||||
qe_add_library(qe_utilx ${sources_util})
|
||||
add_library(QE::UTILX ALIAS qe_utilx)
|
||||
qe_add_library(qe_utilx ${src_util})
|
||||
target_link_libraries(qe_utilx
|
||||
PRIVATE
|
||||
QE::OpenMP_Fortran
|
||||
QE::CLIB
|
||||
QE::MPI_Fortran)
|
||||
qe_openmp_fortran
|
||||
qe_clib
|
||||
qe_mpi_fortran)
|
||||
|
||||
qe_install_targets(qe_utilx)
|
||||
|
||||
qe_add_library(qe_utilx_tests ${sources_util_tests})
|
||||
add_library(QE::UTILX::TESTS ALIAS qe_utilx_tests)
|
||||
target_link_libraries(qe_utilx_tests
|
||||
PRIVATE
|
||||
QE::UTILX
|
||||
QE::MPI_Fortran)
|
||||
|
||||
qe_install_targets(qe_utilx_tests)
|
||||
|
||||
###########################################################
|
||||
# tests
|
||||
###########################################################
|
||||
set(source_names
|
||||
test_mp_count_nodes
|
||||
test_mp_bcast_i1
|
||||
test_mp_bcast_i1_gpu
|
||||
test_mp_bcast_iv
|
||||
test_mp_bcast_iv_gpu
|
||||
test_mp_bcast_im
|
||||
test_mp_bcast_im_gpu
|
||||
test_mp_bcast_it
|
||||
test_mp_bcast_it_gpu
|
||||
test_mp_bcast_i4d_gpu
|
||||
test_mp_bcast_r4d_gpu
|
||||
test_mp_bcast_c4d_gpu
|
||||
test_mp_bcast_c5d_gpu
|
||||
test_mp_bcast_r5d_gpu
|
||||
test_mp_bcast_c6d_gpu
|
||||
test_mp_bcast_iv_buffer
|
||||
test_mp_bcast_iv_buffer_gpu
|
||||
test_mp_bcast_lv_buffer
|
||||
test_mp_bcast_lv_buffer_gpu
|
||||
test_mp_bcast_rv_buffer
|
||||
test_mp_bcast_rv_buffer_gpu
|
||||
test_mp_max_iv_buffer_gpu
|
||||
test_mp_max_iv_buffer
|
||||
test_mp_max_rv_buffer
|
||||
test_mp_max_rv_buffer_gpu
|
||||
test_mp_min_iv_buffer_gpu
|
||||
test_mp_min_iv_buffer
|
||||
test_mp_min_rv_buffer
|
||||
test_mp_min_rv_buffer_gpu
|
||||
test_mp_sum_iv_buffer
|
||||
test_mp_sum_rv_buffer
|
||||
test_mp_sum_iv_buffer_gpu
|
||||
test_mp_sum_rv_buffer_gpu)
|
||||
|
||||
# TODO rename all sources *.f90 -> *.F90
|
||||
FOREACH(NAME ${source_names})
|
||||
set(sources tests/${NAME}.f90)
|
||||
string(REPLACE "test_" "test_qe_utilx_" TGT_NAME ${NAME})
|
||||
qe_add_executable(${TGT_NAME} ${sources})
|
||||
set_target_properties(${TGT_NAME} PROPERTIES
|
||||
OUTPUT_NAME ${TGT_NAME}.x RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
target_link_libraries(${TGT_NAME}
|
||||
PRIVATE
|
||||
QE::UTILX
|
||||
QE::UTILX::TESTS
|
||||
QE::MPI_Fortran
|
||||
QE::Modules)
|
||||
if(QE_ENABLE_TEST)
|
||||
set(src_util_tests
|
||||
tests/tester.f90
|
||||
tests/utils.f90
|
||||
tests/mp_world.f90)
|
||||
qe_enable_cuda_fortran("${src_util_tests}")
|
||||
|
||||
add_test(NAME ${TGT_NAME} COMMAND ${QE_TESTS_DIR}/${TGT_NAME}.x)
|
||||
ENDFOREACH(NAME)
|
||||
qe_add_library(qe_utilx_tests ${src_util_tests})
|
||||
target_link_libraries(qe_utilx_tests
|
||||
PRIVATE
|
||||
qe_utilx
|
||||
qe_mpi_fortran)
|
||||
|
||||
qe_install_targets(qe_utilx_tests)
|
||||
|
||||
set(source_names
|
||||
test_mp_count_nodes
|
||||
test_mp_bcast_i1
|
||||
test_mp_bcast_i1_gpu
|
||||
test_mp_bcast_iv
|
||||
test_mp_bcast_iv_gpu
|
||||
test_mp_bcast_im
|
||||
test_mp_bcast_im_gpu
|
||||
test_mp_bcast_it
|
||||
test_mp_bcast_it_gpu
|
||||
test_mp_bcast_i4d_gpu
|
||||
test_mp_bcast_r4d_gpu
|
||||
test_mp_bcast_c4d_gpu
|
||||
test_mp_bcast_c5d_gpu
|
||||
test_mp_bcast_r5d_gpu
|
||||
test_mp_bcast_c6d_gpu
|
||||
test_mp_bcast_iv_buffer
|
||||
test_mp_bcast_iv_buffer_gpu
|
||||
test_mp_bcast_lv_buffer
|
||||
test_mp_bcast_lv_buffer_gpu
|
||||
test_mp_bcast_rv_buffer
|
||||
test_mp_bcast_rv_buffer_gpu
|
||||
test_mp_max_iv_buffer_gpu
|
||||
test_mp_max_iv_buffer
|
||||
test_mp_max_rv_buffer
|
||||
test_mp_max_rv_buffer_gpu
|
||||
test_mp_min_iv_buffer_gpu
|
||||
test_mp_min_iv_buffer
|
||||
test_mp_min_rv_buffer
|
||||
test_mp_min_rv_buffer_gpu
|
||||
test_mp_sum_iv_buffer
|
||||
test_mp_sum_rv_buffer
|
||||
test_mp_sum_iv_buffer_gpu
|
||||
test_mp_sum_rv_buffer_gpu)
|
||||
|
||||
# TODO rename all sources *.f90 -> *.F90
|
||||
set(src_tests)
|
||||
FOREACH(NAME ${source_names})
|
||||
set(src_test tests/${NAME}.f90)
|
||||
set(src_tests ${src_tests} "${src_test}")
|
||||
string(REPLACE "test_" "test_qe_utilx_" TGT_NAME ${NAME})
|
||||
qe_add_executable(${TGT_NAME} ${src_test})
|
||||
set_target_properties(${TGT_NAME}
|
||||
PROPERTIES
|
||||
OUTPUT_NAME ${TGT_NAME}.x
|
||||
RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
target_link_libraries(${TGT_NAME}
|
||||
PRIVATE
|
||||
qe_utilx
|
||||
qe_utilx_tests
|
||||
qe_mpi_fortran
|
||||
qe_modules)
|
||||
add_test(NAME ${TGT_NAME} COMMAND ${QE_TESTS_DIR}/${TGT_NAME}.x)
|
||||
ENDFOREACH(NAME)
|
||||
endif()
|
||||
|
|
|
@ -1159,7 +1159,7 @@ SUBROUTINE parallel_max_real_gpu( dim, ps_d, comm, root )
|
|||
RETURN
|
||||
!
|
||||
END SUBROUTINE parallel_max_real_gpu
|
||||
#else
|
||||
MODULE isntused
|
||||
END module
|
||||
!#else
|
||||
!MODULE isntused
|
||||
!END module
|
||||
#endif
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
set(sources
|
||||
beefun.c
|
||||
pbecor.c
|
||||
set(sources_xclib
|
||||
dft_mod.f90
|
||||
qe_constants.f90
|
||||
qe_drivers_d_gga.f90
|
||||
|
@ -25,25 +23,42 @@ set(sources
|
|||
xc_wrapper_lda_lsda.f90
|
||||
xc_wrapper_mgga.f90)
|
||||
|
||||
qe_add_library(qe_xclib ${sources})
|
||||
add_library(QE::XClib ALIAS qe_xclib)
|
||||
qe_add_library(qe_xclib ${sources_xclib})
|
||||
target_link_libraries(qe_xclib
|
||||
PRIVATE
|
||||
QE::OpenMP_Fortran
|
||||
QE::MPI_Fortran)
|
||||
qe_openmp_fortran
|
||||
qe_mpi_fortran
|
||||
qe_libbeef)
|
||||
|
||||
qe_install_targets(qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# libbeef target
|
||||
# Note: Moving it to a subdirectory XClib/libbeef is prefered.
|
||||
# But the legacy Makefile is hard to handle.
|
||||
###########################################################
|
||||
set(sources_libbeef
|
||||
pbecor.c
|
||||
beefun.c
|
||||
)
|
||||
qe_add_library(qe_libbeef ${sources_libbeef})
|
||||
target_link_libraries(qe_libbeef PRIVATE qe_lapack)
|
||||
|
||||
qe_install_targets(qe_libbeef)
|
||||
|
||||
###########################################################
|
||||
# xclib_test.x
|
||||
###########################################################
|
||||
#if(QE_ENABLE_TEST)
|
||||
# qe_add_executable(qe_xclib_test xclib_test.f90)
|
||||
# set_target_properties(qe_xclib_test PROPERTIES OUTPUT_NAME qe_xclib_test.x RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
# target_link_libraries(qe_xclib_test
|
||||
# PRIVATE
|
||||
# QE::OpenMP_Fortran
|
||||
# QE::MPI_Fortran
|
||||
# QE::XClib)
|
||||
# add_test(NAME test_qe_xclib COMMAND ${QE_TESTS_DIR}/qe_xclib_test.x)
|
||||
#endif(QE_ENABLE_TEST)
|
||||
if(QE_ENABLE_TEST)
|
||||
qe_add_executable(qe_xclib_test xclib_test.f90)
|
||||
set_target_properties(qe_xclib_test
|
||||
PROPERTIES
|
||||
OUTPUT_NAME qe_xclib_test.x
|
||||
RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
target_link_libraries(qe_xclib_test
|
||||
PRIVATE
|
||||
qe_openmp_fortran
|
||||
qe_mpi_fortran
|
||||
qe_xclib)
|
||||
add_test(NAME test_qe_xclib COMMAND ${QE_TESTS_DIR}/qe_xclib_test.x)
|
||||
endif(QE_ENABLE_TEST)
|
||||
|
|
|
@ -31,7 +31,7 @@ BEEF = \
|
|||
pbecor.o \
|
||||
beefun.o
|
||||
|
||||
all: xc_lib.a xclib_test.x
|
||||
all: xc_lib.a
|
||||
|
||||
xc_lib.a: $(XCL) $(BEEF)
|
||||
$(AR) $(ARFLAGS) $@ $?
|
||||
|
@ -42,6 +42,8 @@ xclib_test.x : xclib_test.o xc_lib.a
|
|||
xclib_test.o xc_lib.a $(BLAS_LIBS) $(LD_LIBS) $(LIBXC_LIBS)
|
||||
- ( cd ../bin ; ln -fs ../XClib/$@ . )
|
||||
|
||||
test : xclib_test.x
|
||||
|
||||
clean :
|
||||
- /bin/rm -f *.o *.a *.d *.i *~ *_tmp.f90 *.mod *.L *.x
|
||||
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
xclib_test.x is a testing program for the XClib library.
|
||||
|
||||
To compile the test program, once you have properly configured QE,
|
||||
inside the directory XClib type:
|
||||
|
||||
make test
|
||||
|
||||
Then you can run tests using commands like:
|
||||
|
||||
./xclib_test.x < input_file > output_file
|
||||
|
||||
Four options available:
|
||||
|
||||
* dft-info: infos on the input dft are provided. If the functionals
|
||||
functionals are from libxc the external parameters, when
|
||||
present, are listed with a brief description and their
|
||||
default value.
|
||||
Example of input_file content:
|
||||
|
||||
&INPUT_NAMELIST
|
||||
test='dft-info'
|
||||
dft1='mgga_x_scan mgga_c_scan'
|
||||
/
|
||||
|
||||
* gen-benchmark: the program generates a set of data to compare the
|
||||
XC output to.
|
||||
Example of input file content:
|
||||
|
||||
&INPUT_NAMELIST
|
||||
test='gen-benchmark'
|
||||
family='GGA'
|
||||
dft1='PBE'
|
||||
nspin=2
|
||||
DF_OK=.FALSE.
|
||||
/
|
||||
|
||||
* exe-benchmark: the program takes as input the data file generated
|
||||
previously with the 'gen-benchmark' option and
|
||||
compares the output of the XC routines.
|
||||
|
||||
* dft-comparison: the program compares two different DFTs on a large
|
||||
grid of points. Max, min and average percentage
|
||||
difference between the two dft outputs (energy and
|
||||
potential) are provided and the points of the grid
|
||||
where the two output differ are shown. This option
|
||||
can be used, for example, to find differences between
|
||||
internal QE functionals and the libxc ones.
|
||||
Example of input file content:
|
||||
|
||||
&INPUT_NAMELIST
|
||||
test='dft-comparison',
|
||||
nspin=2,
|
||||
family='LDA',
|
||||
DF_OK=.FALSE.,
|
||||
dft1='sla pz',
|
||||
dft2='lda_x lda_c_pz'
|
||||
/
|
||||
|
||||
The testing program is available for LDA, GGA and MGGA functionals. It
|
||||
also tests the potential derivatives for LDA (dmxc) and GGA (dgcxc) when
|
||||
the DF_OK variable is set to TRUE.
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
/* ---------------------------------------------------------------------- */
|
||||
/* ###################################################################### */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* Subroutine */ void gcor2(double a, double a1, double b1,
|
||||
/* Subroutine */ static void gcor2(double a, double a1, double b1,
|
||||
double b2, double b3, double b4, double rtrs,
|
||||
double *gg, double *ggrs)
|
||||
{
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
!============================================================================
|
||||
PROGRAM xclib_test
|
||||
!==========================================================================
|
||||
!! Testing program for xc_lib library in QE. Different options:
|
||||
!! Testing program for xc\_lib library in QE. Different options:
|
||||
!
|
||||
!! * dft-info: provides infos on the input DFT (both QE and Libxc);
|
||||
!! * xc-benchmark: difference with respect to a given set of benchmark data
|
||||
!! (on file);
|
||||
!! * gen-benchmark: generate set of benchmark data on file;
|
||||
!! * dft-comparison: show difference between two DFTs (E and V differences).
|
||||
!! * gen-benchmark: generates set of benchmark data on file;
|
||||
!! * dft-comparison: shows difference between two DFTs (E and V differences).
|
||||
!
|
||||
!! Available cases:
|
||||
!
|
||||
|
@ -312,6 +312,10 @@ PROGRAM xclib_test
|
|||
WRITE(stdout,*) CHAR(10)//"MGGA IDs"
|
||||
WRITE(stdout,121) imeta1, is_libxc(5), imetac1, is_libxc(6)
|
||||
!
|
||||
IF (ANY(.NOT.is_libxc(:))) THEN
|
||||
WRITE(stdout,*) CHAR(10)//"References for QE functionals are temporarily&
|
||||
& listed in Modules/funct.f90"
|
||||
ENDIF
|
||||
!
|
||||
#if defined(__LIBXC)
|
||||
!
|
||||
|
@ -356,7 +360,7 @@ PROGRAM xclib_test
|
|||
WRITE(lxc_family,'(a)') "unknown"
|
||||
END SELECT
|
||||
!
|
||||
WRITE(*,'("The functional ''", a, "'' is an ", a, ", it belongs to &
|
||||
WRITE(*,'("The functional ''", a, "'' is a ", a, ", it belongs to &
|
||||
&the ''", a, "'' family and is defined in the reference(s): &
|
||||
&")') TRIM(xc_f03_func_info_get_name(xc_info(i))), TRIM(lxc_kind)&
|
||||
,TRIM(lxc_family)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
set(sources_x
|
||||
set(src_xspectra
|
||||
src/xspectra.f90
|
||||
src/gaunt_mod.f90
|
||||
src/xspectra_mod.f90
|
||||
src/radin_mod.f90
|
||||
|
@ -22,71 +23,75 @@ set(sources_x
|
|||
src/io_routines.f90
|
||||
src/xanes_quadrupole.f90)
|
||||
|
||||
set(sources_gipaw
|
||||
set(src_gipaw
|
||||
src/paw_gipaw.f90
|
||||
src/gipaw_module.f90
|
||||
src/init_gipaw_1.f90
|
||||
src/init_gipaw_2.f90)
|
||||
|
||||
qe_add_library(qe_xspectra_gipaw ${sources_gipaw})
|
||||
add_library(QE::XSpectra::GIPAW ALIAS qe_xspectra_gipaw)
|
||||
qe_add_library(qe_xspectra_gipaw ${src_gipaw})
|
||||
target_link_libraries(qe_xspectra_gipaw
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::Modules
|
||||
QE::UPF)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
qe_add_library(qe_xspectra ${sources_x})
|
||||
add_library(QE::XSpectra ALIAS qe_xspectra)
|
||||
qe_add_library(qe_xspectra ${src_xspectra})
|
||||
target_link_libraries(qe_xspectra
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::UTILX
|
||||
QE::XSpectra::GIPAW
|
||||
QE::Modules
|
||||
QE::UPF)
|
||||
qe_pw
|
||||
qe_xspectra_gipaw
|
||||
qe_modules
|
||||
qe_upflib
|
||||
qe_fftx
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# xspectra.x
|
||||
###########################################################
|
||||
set(sources src/xspectra.f90)
|
||||
qe_add_executable(qe_xspectra_exe ${sources})
|
||||
set_target_properties(qe_xspectra_exe PROPERTIES OUTPUT_NAME xspectra.x)
|
||||
set_target_properties(qe_xspectra_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME xspectra.x)
|
||||
target_link_libraries(qe_xspectra_exe
|
||||
PRIVATE
|
||||
QE::PW
|
||||
QE::Modules
|
||||
QE::XSpectra
|
||||
QE::XSpectra::GIPAW
|
||||
QE::UPF
|
||||
QE::UTILX)
|
||||
qe_pw
|
||||
qe_modules
|
||||
qe_xspectra
|
||||
qe_xspectra_gipaw
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# spectra_correction.x
|
||||
###########################################################
|
||||
set(sources
|
||||
src/spectra_correction.f90
|
||||
src/gaunt_mod.f90)
|
||||
qe_add_executable(qe_xspectra_spectracorrection_exe ${sources})
|
||||
set_target_properties(qe_xspectra_spectracorrection_exe PROPERTIES OUTPUT_NAME spectra_correction.x)
|
||||
set(src_spectra_correction_x src/spectra_correction.f90)
|
||||
qe_add_executable(qe_xspectra_spectracorrection_exe ${src_spectra_correction_x})
|
||||
set_target_properties(qe_xspectra_spectracorrection_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME spectra_correction.x)
|
||||
target_link_libraries(qe_xspectra_spectracorrection_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::XSpectra
|
||||
QE::XSpectra::GIPAW
|
||||
QE::UTILX)
|
||||
qe_modules
|
||||
qe_xspectra
|
||||
qe_xspectra_gipaw
|
||||
qe_pw
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# molecularnexafs.x
|
||||
###########################################################
|
||||
set(sources src/molecularnexafs.f90)
|
||||
qe_add_executable(qe_xspectra_molecularnexafs_exe ${sources})
|
||||
set_target_properties(qe_xspectra_molecularnexafs_exe PROPERTIES OUTPUT_NAME molecularnexafs.x)
|
||||
set(src_molecularnexafs_x src/molecularnexafs.f90)
|
||||
qe_add_executable(qe_xspectra_molecularnexafs_exe ${src_molecularnexafs_x})
|
||||
set_target_properties(qe_xspectra_molecularnexafs_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME molecularnexafs.x)
|
||||
target_link_libraries(qe_xspectra_molecularnexafs_exe
|
||||
PRIVATE
|
||||
QE::XSpectra
|
||||
QE::XSpectra::GIPAW)
|
||||
qe_xspectra
|
||||
qe_xspectra_gipaw)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -98,13 +98,11 @@ set(sources
|
|||
src/parameters.f90)
|
||||
|
||||
qe_add_library(qe_atomic ${sources})
|
||||
add_library(QE::ATOMIC ALIAS qe_atomic)
|
||||
target_link_libraries(qe_atomic
|
||||
PRIVATE
|
||||
QE::UPF
|
||||
QE::UTILX
|
||||
QE::XClib
|
||||
QE::Modules)
|
||||
qe_upflib
|
||||
qe_modules
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
# ld1.x
|
||||
|
@ -114,12 +112,11 @@ qe_add_executable(qe_atomic_exe ${sources})
|
|||
set_target_properties(qe_atomic_exe PROPERTIES OUTPUT_NAME ld1.x)
|
||||
target_link_libraries(qe_atomic_exe
|
||||
PRIVATE
|
||||
QE::UPF
|
||||
QE::Modules
|
||||
QE::XClib
|
||||
QE::ATOMIC
|
||||
QE::UTILX)
|
||||
|
||||
qe_upflib
|
||||
qe_modules
|
||||
qe_atomic
|
||||
qe_xclib)
|
||||
|
||||
###########################################################
|
||||
|
||||
qe_install_targets(
|
||||
|
|
|
@ -15,7 +15,6 @@ set(sources
|
|||
qsort.c)
|
||||
|
||||
qe_add_library(qe_clib ${sources})
|
||||
add_library(QE::CLIB ALIAS qe_clib)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
|
|
@ -2,3 +2,8 @@ qe_add_global_compile_definitions(__PGI)
|
|||
|
||||
# set optimization specific flags
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Mcache_align -Mlarge_arrays")
|
||||
|
||||
if(QE_ENABLE_CUDA)
|
||||
set(QE_CUDA_COMPILE_OPTIONS "-Mcuda")
|
||||
set(QE_CUDA_LINK_OPTIONS "-Mcuda")
|
||||
endif()
|
|
@ -47,8 +47,8 @@ function(qe_preprocess_source IN OUT)
|
|||
VERBATIM)
|
||||
endfunction(qe_preprocess_source)
|
||||
|
||||
function(qe_fix_fortran_modules LIB)
|
||||
set(targets ${LIB} ${ARGN})
|
||||
function(qe_fix_fortran_modules TGT)
|
||||
set(targets ${TGT} ${ARGN})
|
||||
foreach(tgt IN LISTS targets)
|
||||
get_target_property(tgt_type ${tgt} TYPE)
|
||||
# All of the following target modifications make
|
||||
|
@ -59,17 +59,38 @@ function(qe_fix_fortran_modules LIB)
|
|||
get_target_property(tgt_binary_dir ${tgt} BINARY_DIR)
|
||||
set_target_properties(${tgt}
|
||||
PROPERTIES
|
||||
Fortran_MODULE_DIRECTORY ${tgt_binary_dir}/mod/${LIB})
|
||||
# make module directory available for clients of LIB
|
||||
Fortran_MODULE_DIRECTORY ${tgt_binary_dir}/mod/${TGT})
|
||||
# make module directory available for clients of TGT
|
||||
target_include_directories(${tgt}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${tgt_binary_dir}/mod/${LIB}>
|
||||
$<BUILD_INTERFACE:${tgt_binary_dir}/mod/${TGT}>
|
||||
INTERFACE
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/qe/${LIB}>)
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/qe/${TGT}>)
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction(qe_fix_fortran_modules)
|
||||
|
||||
function(qe_enable_cuda_fortran SRCS)
|
||||
if(QE_ENABLE_CUDA)
|
||||
foreach(src IN LISTS SRCS)
|
||||
set_source_files_properties(${src}
|
||||
PROPERTIES
|
||||
COMPILE_OPTIONS ${QE_CUDA_COMPILE_OPTIONS})
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction(qe_enable_cuda_fortran)
|
||||
|
||||
function(_qe_add_cuda_link_flags TGT)
|
||||
if(CMAKE_Fortran_COMPILER_ID MATCHES "PGI")
|
||||
get_target_property(target_type ${TGT} TYPE)
|
||||
if(target_type STREQUAL "EXECUTABLE")
|
||||
target_link_options(${TGT}
|
||||
PRIVATE
|
||||
${QE_CUDA_COMPILE_OPTIONS})
|
||||
endif()
|
||||
endif()
|
||||
endfunction(_qe_add_cuda_link_flags)
|
||||
|
||||
function(qe_git_submodule_update PATH)
|
||||
find_package(Git)
|
||||
# Old versions of git aren't able to run init+update
|
||||
|
@ -98,6 +119,9 @@ function(_qe_add_target TGT)
|
|||
qe_fix_fortran_modules(${TGT})
|
||||
qe_get_fortran_cpp_flag(f_cpp_flag)
|
||||
target_compile_options(${TGT} PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${f_cpp_flag}>)
|
||||
if(QE_ENABLE_CUDA)
|
||||
_qe_add_cuda_link_flags(${TGT})
|
||||
endif()
|
||||
endfunction(_qe_add_target)
|
||||
|
||||
function(qe_install_targets TGT)
|
||||
|
@ -140,4 +164,4 @@ endfunction(qe_ensure_build_type)
|
|||
|
||||
if(TARGET QEGlobalCompileDefinitions)
|
||||
qe_install_targets(QEGlobalCompileDefinitions)
|
||||
endif()
|
||||
endif()
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_dftd3
|
||||
common.f90
|
||||
sizes.f90
|
||||
pars.f90
|
||||
|
@ -6,24 +6,27 @@ set(sources
|
|||
api.f90
|
||||
dftd3_qe.f90)
|
||||
|
||||
qe_add_library(qe_dftd3 ${sources})
|
||||
add_library(QE::DFTD3 ALIAS qe_dftd3)
|
||||
qe_add_library(qe_dftd3 ${src_dftd3})
|
||||
target_link_libraries(qe_dftd3
|
||||
PRIVATE
|
||||
QE::UTILX
|
||||
QE::Modules)
|
||||
qe_modules)
|
||||
|
||||
###########################################################
|
||||
# test.x
|
||||
###########################################################
|
||||
set(sources test_code.f90)
|
||||
qe_add_executable(qe_atomic_test_exe ${sources})
|
||||
set_target_properties(qe_atomic_test_exe PROPERTIES OUTPUT_NAME qe_dftd3_test_atomic.x RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
target_link_libraries(qe_atomic_test_exe
|
||||
PRIVATE
|
||||
QE::Modules
|
||||
QE::DFTD3)
|
||||
# FIXME: Does it work?
|
||||
#add_test(NAME test_qe_dftd3_atomic COMMAND ${QE_TESTS_DIR}/qe_dftd3_test_atomic.x)
|
||||
if(QE_ENABLE_TEST)
|
||||
set(src_dftd3_test test_code.f90)
|
||||
qe_add_executable(qe_atomic_test_exe ${src_dftd3_test})
|
||||
set_target_properties(qe_atomic_test_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME qe_dftd3_test_atomic.x
|
||||
RUNTIME_OUTPUT_DIRECTORY ${QE_TESTS_DIR})
|
||||
target_link_libraries(qe_atomic_test_exe
|
||||
PRIVATE
|
||||
qe_modules
|
||||
qe_dftd3)
|
||||
# FIXME: Does it work?
|
||||
#add_test(NAME test_qe_dftd3_atomic COMMAND ${QE_TESTS_DIR}/qe_dftd3_test_atomic.x)
|
||||
endif()
|
||||
|
||||
qe_install_targets(qe_dftd3)
|
||||
|
|
|
@ -1,32 +1,114 @@
|
|||
# environment_variables -- settings for running Quantum ESPRESSO examples
|
||||
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
# environment_variables -- settings for running Quantum ESPRESSO examples
|
||||
|
||||
######## YOU MAY NEED TO EDIT THIS FILE TO MATCH YOUR CONFIGURATION ########
|
||||
|
||||
# BIN_DIR = path of compiled executables
|
||||
# Usually this is $PREFIX/bin, where $PREFIX is the root of the
|
||||
# Quantum ESPRESSO source tree.
|
||||
# PSEUDO_DIR = path of pseudopotentials required by the examples
|
||||
# if required pseudopotentials are not found in $PSEUDO_DIR,
|
||||
# example scripts will try to download them from NETWORK_PSEUDO
|
||||
# TMP_DIR = temporary directory to be used by the examples
|
||||
# Make sure that it is writable by you and that it doesn't contain
|
||||
# any valuable data (EVERYTHING THERE WILL BE DESTROYED)
|
||||
# To run the examples, you should follow this procedure:
|
||||
|
||||
# The following should be good for most cases
|
||||
# 1) Optionally, edit the following variables:
|
||||
|
||||
# BIN_DIR = directory where ESPRESSO executables reside
|
||||
# PSEUDO_DIR = directory where pseudopotential files reside
|
||||
# if needed pseudopotentials are not found there,
|
||||
# they will be downloaded from NETWORK_PSEUDO
|
||||
# TMP_DIR = directory to be used as temporary storage area
|
||||
# Make sure that it is writable by you, that it has
|
||||
# enough available space to host the temporary files,
|
||||
# preferably offering high I/O performance (i.e.,
|
||||
# don't use an NFS-mounted directory), and that
|
||||
# it doesn't contain any valuable data:
|
||||
# EVERYTHING THERE WILL BE DESTROYED
|
||||
|
||||
# The default values set below should be good for most cases
|
||||
|
||||
# 2) For parallel execution, edit the following variables:
|
||||
|
||||
# PARA_PREFIX: prepended to the executable name, typically contains
|
||||
# the launcher program and the number of processors
|
||||
# PARA_PREFIX: appended to the executable name, typically contains
|
||||
# parallelization options
|
||||
|
||||
# Example: if you need to run the code as
|
||||
# mpirun -np 4 pw.x -nk 1 < file.in > file.out
|
||||
# then PARA_PREFIX="mpirun -np 4", PARA_POSTFIX="-nk 1"
|
||||
|
||||
# For execution with OpenMP or mixed MPI/OpenMP, you may also need to set
|
||||
# OMP_NUM_THREADS: number of threads for OpenMP parallelization.
|
||||
|
||||
# For serial execution it should not be needed to specify anything.
|
||||
|
||||
# See section "Running on parallel machines" of the user guide
|
||||
# for more details
|
||||
|
||||
# BEWARE: most tests and examples are devised to be run serially or on
|
||||
# a small number of processors; do not use tests and examples to benchmark
|
||||
# parallelism, do not run on too many processors
|
||||
|
||||
# 3) To run a single example, go to the corresponding directory (for
|
||||
# instance, "example/example01") and execute:
|
||||
|
||||
# ./run_example
|
||||
|
||||
# This will create a subdirectory "results", containing the input and
|
||||
# output files generated by the calculation.
|
||||
# If your machine does not support interactive use, you must execute
|
||||
# "run_example" throught the batch queueing system running on that machine.
|
||||
# Ask your system administrator for instructions.
|
||||
|
||||
# Some examples take only a few seconds to run, while others may
|
||||
# require several minutes depending on your system.
|
||||
|
||||
# 4) In each example's directory, the "reference" subdirectory contains
|
||||
# verified output files, that you can check your results against.
|
||||
|
||||
# Your results might be slightly different from reference results,
|
||||
# in particular if different FFT dimensions are automatically selected.
|
||||
# For this reason, a plain "diff" of your results against the reference
|
||||
# data may not work and human inspection of the results may be needed.
|
||||
|
||||
PREFIX=`cd ../../.. ; pwd`
|
||||
# $PREFIX is the root of the Quantum ESPRESSO source tree.
|
||||
BIN_DIR=$PREFIX/bin
|
||||
PSEUDO_DIR=$PREFIX/pseudo
|
||||
# Beware: everything in $TMP_DIR will be destroyed !
|
||||
TMP_DIR=$PREFIX/tempdir
|
||||
|
||||
PARA_PREFIX=" "
|
||||
# PARA_PREFIX="mpirun -np 4"
|
||||
|
||||
# available flags:
|
||||
# -ni n number of images (or -nimage)
|
||||
# (only for NEB; for PHonon, see below)
|
||||
# -nk n number of pools (or -npool, -npools)
|
||||
# -nb n number of band groups (or -nbgrp,-nband_group)
|
||||
# -nt n number of task groups (or -ntg, -ntask_groups)
|
||||
# -nd n number of processors for linear algebra
|
||||
# (or -ndiag, -northo)
|
||||
|
||||
PARA_POSTFIX=" -nk 1 -nd 1 -nb 1 -nt 1 "
|
||||
|
||||
# The following variables are used for image parallelization of PHonon
|
||||
# (see example in PHonon/examples/Image_example)
|
||||
# NB: the number of processors in PARA_IMAGE_PREFIX is the product of the
|
||||
# number of processors in PARA_PREFIX and the number of images in
|
||||
# PARA_IMAGE_POSTFIX
|
||||
|
||||
PARA_IMAGE_POSTFIX="-ni 2 $PARA_POSTFIX"
|
||||
PARA_IMAGE_PREFIX="mpirun -np 4"
|
||||
|
||||
# In case of mixed MPI / OpenMP parallelization you may want to limit
|
||||
# the maximum number to OpenMP threads so that the number of threads
|
||||
# per MPI process times the number of MPI processes equals the number
|
||||
# of available cores to avoid hyperthreading
|
||||
|
||||
export OMP_NUM_THREADS=1
|
||||
|
||||
# There should be no need to change anything below this line
|
||||
|
||||
NETWORK_PSEUDO=http://www.quantum-espresso.org/wp-content/uploads/upf_files/
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
|
||||
NETWORK_PSEUDO=http://www.quantum-espresso.org/wp-content/uploads/upf_files/
|
||||
|
||||
# wget or curl needed if some PP has to be downloaded from web site
|
||||
# script wizard will surely find a better way to find what is available
|
||||
|
@ -42,53 +124,6 @@ else
|
|||
# echo "curl found"
|
||||
fi
|
||||
|
||||
# To run the ESPRESSO programs on a parallel machine, you may have to
|
||||
# add the appropriate commands (poe, mpirun, mpprun...) and/or options
|
||||
# (specifying number of processors, pools...) before and after the
|
||||
# executable's name. That depends on how your machine is configured.
|
||||
# For example on an IBM SP4:
|
||||
#
|
||||
# poe pw.x -procs 4 < file.in > file.out
|
||||
# ^^^ PARA_PREFIX ^^^^^^^^ PARA_POSTFIX
|
||||
#
|
||||
# To run on a single processor, you can usually leave them empty.
|
||||
# BEWARE: most tests and examples are devised to be run serially or on
|
||||
# a small number of processors; do not use tests and examples to benchmark
|
||||
# parallelism, do not run on too many processors
|
||||
|
||||
|
||||
PARA_PREFIX=" "
|
||||
PARA_PREFIX="mpirun -np 4"
|
||||
#
|
||||
# available flags:
|
||||
# -ni n number of images (or -nimage)
|
||||
# (only for NEB; for PHonon, see below)
|
||||
# -nk n number of pools (or -npool, -npools)
|
||||
# -nb n number of band groups (or -nbgrp,-nband_group)
|
||||
# -nt n number of task groups (or -ntg, -ntask_groups)
|
||||
# -nd n number of processors for linear algebra
|
||||
# (or -ndiag, -northo)
|
||||
#
|
||||
PARA_POSTFIX=" -nk 1 -nd 1 -nb 1 -nt 1 "
|
||||
#
|
||||
# The following variables are used for image parallelization of PHonon
|
||||
# (see example in PHonon/examples/Image_example)
|
||||
# NB: the number of processors in PARA_IMAGE_PREFIX is the product of the
|
||||
# number of processors in PARA_PREFIX and the number of images in
|
||||
# PARA_IMAGE_POSTFIX
|
||||
#
|
||||
PARA_IMAGE_POSTFIX="-ni 2 $PARA_POSTFIX"
|
||||
PARA_IMAGE_PREFIX="mpirun -np 4"
|
||||
|
||||
#
|
||||
# In case of mixed MPI / OpenMP parallelization you may want to limit the maximum
|
||||
# number to OpenMP threads so that the number of threads per MPI process times the
|
||||
# number of MPI processes equals the number of available cores to avoid hyperthreading
|
||||
#
|
||||
# OpenMP parallelization max number of threads
|
||||
#
|
||||
export OMP_NUM_THREADS=1
|
||||
|
||||
# function to test the exit status of a job
|
||||
check_failure () {
|
||||
# usage: check_failure $?
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
|
||||
###########################################################
|
||||
# QE::FOX
|
||||
# FoX
|
||||
###########################################################
|
||||
if(FOX_ROOT)
|
||||
add_library(qe_fox INTERFACE)
|
||||
add_library(QE::FOX ALIAS qe_fox)
|
||||
qe_install_targets(qe_fox)
|
||||
target_link_libraries(qe_fox INTERFACE "-L${FOX_ROOT}/lib;-lFoX_dom;-lFoX_sax;-lFoX_wxml;-lFoX_common;-lFoX_utils;-lFoX_fsys")
|
||||
target_include_directories(qe_fox INTERFACE ${FOX_ROOT}/finclude)
|
||||
target_include_directories(qe_fox INTERFACE ${FOX_ROOT}/include)
|
||||
else()
|
||||
message(STATUS "Installing QE::FOX via submodule")
|
||||
message(STATUS "Installing FoX via submodule")
|
||||
set(fox_targets
|
||||
FoX_fsys
|
||||
FoX_utils
|
||||
|
@ -20,20 +20,13 @@ else()
|
|||
qe_git_submodule_update(external/fox)
|
||||
add_subdirectory(fox EXCLUDE_FROM_ALL)
|
||||
add_library(qe_fox INTERFACE)
|
||||
add_library(QE::FOX ALIAS qe_fox)
|
||||
target_link_libraries(qe_fox INTERFACE ${fox_targets})
|
||||
qe_fix_fortran_modules(${fox_targets})
|
||||
qe_install_targets(qe_fox ${fox_targets})
|
||||
endif()
|
||||
|
||||
###########################################################
|
||||
# QE::libbeef
|
||||
###########################################################
|
||||
add_subdirectory(libbeef)
|
||||
target_link_libraries(qe_libbeef PRIVATE QE::LAPACK)
|
||||
|
||||
###########################################################
|
||||
# QE::WANNIER90
|
||||
# WANNIER90
|
||||
###########################################################
|
||||
# TODO look for an externally-provided wannier90
|
||||
qe_git_submodule_update(external/wannier90)
|
||||
|
@ -67,10 +60,9 @@ set(sources
|
|||
wannier90/src/ws_distance.F90)
|
||||
|
||||
qe_add_library(qe_wannier90 ${sources})
|
||||
add_library(QE::WANNIER90 ALIAS qe_wannier90)
|
||||
target_link_libraries(qe_wannier90
|
||||
PRIVATE
|
||||
QE::LAPACK)
|
||||
qe_lapack)
|
||||
|
||||
###########################################################
|
||||
# wannier_prog.x
|
||||
|
@ -80,7 +72,7 @@ qe_add_executable(qe_wannierprog_exe ${sources})
|
|||
set_target_properties(qe_wannierprog_exe PROPERTIES OUTPUT_NAME wannier_prog.x)
|
||||
target_link_libraries(qe_wannierprog_exe
|
||||
PRIVATE
|
||||
QE::WANNIER90)
|
||||
qe_wannier90)
|
||||
|
||||
###########################################################
|
||||
# w90chk2chk.x
|
||||
|
@ -90,7 +82,7 @@ qe_add_executable(qe_w90chk2chk_exe ${sources})
|
|||
set_target_properties(qe_w90chk2chk_exe PROPERTIES OUTPUT_NAME w90chk2chk.x)
|
||||
target_link_libraries(qe_w90chk2chk_exe
|
||||
PRIVATE
|
||||
QE::WANNIER90)
|
||||
qe_wannier90)
|
||||
|
||||
###########################################################
|
||||
# postw90.x
|
||||
|
@ -100,7 +92,7 @@ qe_add_executable(qe_wannier90_postw90_exe ${sources})
|
|||
set_target_properties(qe_wannier90_postw90_exe PROPERTIES OUTPUT_NAME postw90.x)
|
||||
target_link_libraries(qe_wannier90_postw90_exe
|
||||
PRIVATE
|
||||
QE::WANNIER90)
|
||||
qe_wannier90)
|
||||
|
||||
###########################################################
|
||||
|
||||
|
@ -113,16 +105,15 @@ qe_install_targets(
|
|||
qe_wannier90_postw90_exe)
|
||||
|
||||
###########################################################
|
||||
# QE::MBD
|
||||
# MBD
|
||||
###########################################################
|
||||
if(MBD_ROOT)
|
||||
add_library(qe_mbd INTERFACE)
|
||||
add_library(QE::MBD ALIAS qe_mbd)
|
||||
qe_install_targets(qe_mbd)
|
||||
target_link_libraries(qe_mbd INTERFACE "-L${MBD_ROOT}/lib;-lmbd")
|
||||
target_include_directories(qe_mbd INTERFACE ${MBD_ROOT}/finclude)
|
||||
target_include_directories(qe_mbd INTERFACE ${MBD_ROOT}/include)
|
||||
else()
|
||||
message(STATUS "Installing QE::MBD via submodule")
|
||||
message(STATUS "Installing MBD via submodule")
|
||||
qe_git_submodule_update(external/mbd)
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
|
@ -135,8 +126,106 @@ else()
|
|||
unset(BUILD_SHARED_LIBS)
|
||||
endif()
|
||||
add_library(qe_mbd INTERFACE)
|
||||
add_library(QE::MBD ALIAS qe_mbd)
|
||||
target_link_libraries(qe_mbd INTERFACE Mbd)
|
||||
qe_fix_fortran_modules(Mbd)
|
||||
qe_install_targets(qe_mbd Mbd)
|
||||
endif()
|
||||
|
||||
###########################################################
|
||||
# Eigensolver_GPU
|
||||
###########################################################
|
||||
if(QE_ENABLE_CUDA)
|
||||
qe_git_submodule_update(external/eigensolver_gpu)
|
||||
|
||||
set(src_eigensolver_gpu
|
||||
eigensolver_gpu/lib_eigsolve/dsyevd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsygst_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsygvdx_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsymv_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsytd2_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsytrd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/eigsolve_vars.F90
|
||||
eigensolver_gpu/lib_eigsolve/toolbox.F90
|
||||
eigensolver_gpu/lib_eigsolve/zheevd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhegst_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhegvdx_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhemv_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhetd2_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhetrd_gpu.F90)
|
||||
|
||||
# See: https://github.com/NVIDIA/Eigensolver_gpu/blob/master/lib_eigsolve/Makefile
|
||||
# Comment: the flags "-O3 -mp -Mlarge_arrays" are inherited
|
||||
# from the global flags of PGI compiler
|
||||
set(FLAGS -pgf90libs -Mcuda)
|
||||
set(FLAGS2 -pgf90libs -Mcuda,maxregcount:64)
|
||||
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
|
||||
set(FLAGS3 -pgf90libs -Mcuda=cc35,cc60,nordc,maxregcount:255)
|
||||
elseif(CMAKE_CUDA_ARCHITECTURES GREATER 60)
|
||||
set(FLAGS3 -pgf90libs -Mcuda=cc60,nordc,maxregcount:255)
|
||||
else()
|
||||
set(FLAGS3 -pgf90libs -Mcuda=nordc,maxregcount:255)
|
||||
endif()
|
||||
set_source_files_properties(
|
||||
eigensolver_gpu/lib_eigsolve/dsyevd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsygst_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsygvdx_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsytd2_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsytrd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/eigsolve_vars.F90
|
||||
eigensolver_gpu/lib_eigsolve/toolbox.F90
|
||||
eigensolver_gpu/lib_eigsolve/zheevd_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhegst_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhegvdx_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/zhetrd_gpu.F90
|
||||
PROPERTIES
|
||||
COMPILE_OPTIONS "${FLAGS}")
|
||||
set_source_files_properties(
|
||||
eigensolver_gpu/lib_eigsolve/zhetd2_gpu.F90
|
||||
eigensolver_gpu/lib_eigsolve/dsymv_gpu.F90
|
||||
PROPERTIES
|
||||
COMPILE_OPTIONS "${FLAGS2}")
|
||||
set_source_files_properties(
|
||||
eigensolver_gpu/lib_eigsolve/zhemv_gpu.F90
|
||||
PROPERTIES
|
||||
COMPILE_OPTIONS "${FLAGS3}")
|
||||
|
||||
add_library(qe_eigensolver_gpu ${src_eigensolver_gpu})
|
||||
qe_fix_fortran_modules(qe_eigensolver_gpu)
|
||||
|
||||
target_link_libraries(qe_eigensolver_gpu
|
||||
PRIVATE
|
||||
qe_openmp_fortran)
|
||||
if(QE_ENABLE_CUDA)
|
||||
target_link_libraries(qe_eigensolver_gpu
|
||||
PRIVATE
|
||||
CUDA::cusolver)
|
||||
endif()
|
||||
|
||||
qe_install_targets(qe_eigensolver_gpu)
|
||||
endif()
|
||||
|
||||
###########################################################
|
||||
# DeviceXlib
|
||||
###########################################################
|
||||
qe_git_submodule_update(external/devxlib)
|
||||
|
||||
set(src_devxlib
|
||||
devxlib/src/deviceXlib_mod.f90
|
||||
devxlib/src/device_memcpy.f90
|
||||
devxlib/src/device_memcpy_mod.f90
|
||||
devxlib/src/device_auxfunc.f90
|
||||
devxlib/src/device_auxfunc_mod.f90
|
||||
devxlib/src/device_fbuff.f90
|
||||
devxlib/src/device_fbuff_mod.f90
|
||||
devxlib/src/timer_mod.f90
|
||||
devxlib/src/timer.c)
|
||||
qe_enable_cuda_fortran("${src_devxlib}")
|
||||
|
||||
qe_add_library(qe_devxlib ${src_devxlib})
|
||||
|
||||
target_include_directories(qe_devxlib
|
||||
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/devxlib/src")
|
||||
target_include_directories(qe_devxlib
|
||||
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/devxlib/include")
|
||||
|
||||
qe_install_targets(qe_devxlib)
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit a9f7a1b01ab10e00cae22a5dca4f73ebf7e4917d
|
||||
Subproject commit 00c140557725bdd9b155566924c01cfe3d61081a
|
|
@ -0,0 +1 @@
|
|||
Subproject commit d0197c76ae76bbf4d3fed20444fac31af550069d
|
|
@ -1 +1 @@
|
|||
Subproject commit 6fef49bcfc4a380432f15734ed0ca1f0b0388977
|
||||
Subproject commit 819745f5849de5c9de516be133ab206691738257
|
|
@ -1,2 +0,0 @@
|
|||
Johannes Voss <vossj@slac.stanford.edu>
|
||||
Chris P. O'Grady <cpo@slac.stanford.edu>
|
|
@ -1,11 +0,0 @@
|
|||
set(sources
|
||||
pbecor.c
|
||||
beefun.c
|
||||
)
|
||||
|
||||
qe_add_library(qe_libbeef ${sources})
|
||||
add_library(QE::libbeef ALIAS qe_libbeef)
|
||||
|
||||
###########################################################
|
||||
|
||||
qe_install_targets(qe_libbeef)
|
|
@ -1,165 +0,0 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
|
@ -1,27 +0,0 @@
|
|||
# Makefile for libbeef
|
||||
|
||||
include ../make.inc
|
||||
|
||||
OBJS = \
|
||||
pbecor.o \
|
||||
beefun.o
|
||||
|
||||
# PGI requires -c11 to understand __thread
|
||||
# See https://www.pgroup.com/userforum/viewtopic.php?t=5504
|
||||
ifneq (,$(findstring -D__PGI,$(DFLAGS)))
|
||||
CFLAGS := -c11 $(CFLAGS)
|
||||
endif
|
||||
|
||||
all : libbeef.a
|
||||
|
||||
libbeef.a : $(OBJS)
|
||||
$(AR) $(ARFLAGS) $@ $?
|
||||
$(RANLIB) $@
|
||||
|
||||
source :
|
||||
co -l $(OBJS:.o=.c)
|
||||
|
||||
clean :
|
||||
- rm -f libbeef.a *.o *.mod *.i core*
|
||||
|
||||
include make.depend
|
|
@ -1,604 +0,0 @@
|
|||
#ifndef beefleg_h
|
||||
#define beefleg_h 1
|
||||
|
||||
#define PACKAGE "libbeef"
|
||||
#define VERSION "0.1.2"
|
||||
|
||||
#define nsamples 2000
|
||||
|
||||
#define nmax 30
|
||||
|
||||
extern void dgemv_(const char *, const int *, const int *, const double *,
|
||||
double *, const int *, double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
|
||||
extern double ddot_(const int *, double *, const int *, double *, const int *);
|
||||
|
||||
//beef exchange enhancement factor legendre polynomial coefficients
|
||||
static double mi[] = {
|
||||
1.516501714304992365356,
|
||||
0.441353209874497942611,
|
||||
-0.091821352411060291887,
|
||||
-0.023527543314744041314,
|
||||
0.034188284548603550816,
|
||||
0.002411870075717384172,
|
||||
-0.014163813515916020766,
|
||||
0.000697589558149178113,
|
||||
0.009859205136982565273,
|
||||
-0.006737855050935187551,
|
||||
-0.001573330824338589097,
|
||||
0.005036146253345903309,
|
||||
-0.002569472452841069059,
|
||||
-0.000987495397608761146,
|
||||
0.002033722894696920677,
|
||||
-0.000801871884834044583,
|
||||
-0.000668807872347525591,
|
||||
0.001030936331268264214,
|
||||
-0.000367383865990214423,
|
||||
-0.000421363539352619543,
|
||||
0.000576160799160517858,
|
||||
-0.000083465037349510408,
|
||||
-0.000445844758523195788,
|
||||
0.000460129009232047457,
|
||||
-0.000005231775398304339,
|
||||
-0.000423957047149510404,
|
||||
0.000375019067938866537,
|
||||
0.000021149381251344578,
|
||||
-0.000190491156503997170,
|
||||
0.000073843624209823442
|
||||
};
|
||||
|
||||
//LDA & PBE correlation fractions used in beef-vdw xc
|
||||
#define beefldacfrac 0.600166476948828631066
|
||||
#define beefpbecfrac (1.-beefldacfrac)
|
||||
|
||||
|
||||
// beefmat * v = beefcoeff
|
||||
// v: random (normal distr.) vector of length nmax+1
|
||||
static double beefmat[] = {
|
||||
-2.7893711480032735e-01, -8.6580724524194852e-02, -5.5855907920886121e-02,
|
||||
-3.3705005058645578e-02, -4.3991742039673903e-02, -2.4503491855613693e-02,
|
||||
-1.3276193914397489e-02, -1.0509981726996720e-02, 4.2736634878270653e-04,
|
||||
-4.9364956797540301e-04, -1.6134327119866773e-05, 3.4041925565998549e-04,
|
||||
4.2194739762228741e-04, 3.9977584934996758e-04, 1.1522770556196138e-04,
|
||||
-5.2518450332638647e-04, -6.8117173319719984e-04, 2.0498699215888136e-04,
|
||||
4.0709718001654695e-04, -3.1397756373086392e-04, -6.0280544285656027e-05,
|
||||
3.3690663944239876e-05, -8.7385100446171526e-05, 1.5545027014986438e-04,
|
||||
2.7350091678557105e-04, -2.9477110266707567e-04, -5.5111864348780239e-04,
|
||||
-1.9845827344304281e-06, -5.5546346992523670e-07, 1.5757159312984489e-09,
|
||||
-9.8638360313498823e-10, -5.6208383185068933e-01, 2.2379503986741371e-02,
|
||||
-5.0188674858065566e-02, -1.0302738542444243e-02, 3.0842482402716567e-03,
|
||||
7.9398824949748013e-03, 1.0555998187519086e-02, 1.3916427746131796e-02,
|
||||
1.7298034502763783e-03, -5.8169770527605202e-04, 4.9364929282124325e-04,
|
||||
-4.4290949121031880e-04, -3.9198121318981879e-04, -3.6534622625584713e-04,
|
||||
-4.7114114975009910e-04, -2.4624251970801044e-04, 1.7073071859719576e-04,
|
||||
2.0139877514473921e-04, -1.3423791911459609e-03, 9.9452128430699261e-04,
|
||||
2.8066850900814681e-04, -2.5321027319004011e-04, 1.4191449559300789e-04,
|
||||
-2.5212971013654833e-04, -4.3474684754492607e-04, 4.6639558737092136e-04,
|
||||
8.6407197243737791e-04, 2.6613581886016500e-06, 5.9459265456201591e-07,
|
||||
-2.1667614837265335e-09, 1.8987772398720476e-09, -4.1889825595060054e-01,
|
||||
8.5309440012684659e-02, 8.2089214257576273e-02, 2.1077454514367565e-02,
|
||||
2.4532065239845659e-02, 7.4593299022751702e-03, -8.7517164279600317e-04,
|
||||
-7.5265340074405305e-03, -2.5422677040271217e-03, 1.9258113062046427e-03,
|
||||
-1.4277299038031868e-03, 1.1632400701295784e-03, 7.7905784582151959e-04,
|
||||
7.1923875622523117e-04, 1.1434833169743359e-03, 1.2109589432120641e-03,
|
||||
3.7371827694673783e-04, -6.7100742746982825e-04, 2.0114487626275396e-03,
|
||||
-1.3549460104091665e-03, -3.9362157100724109e-04, 3.7367806138690598e-04,
|
||||
-1.8998730194510536e-04, 3.1812219820918941e-04, 5.1233069841357781e-04,
|
||||
-5.4519175224189951e-04, -1.0076338494328359e-03, -2.6644162301442129e-06,
|
||||
-5.5425012262767719e-07, 2.0811491412188100e-09, -1.0854717505095305e-08,
|
||||
-7.8070096027212280e-02, 1.5779809309447619e-03, 1.6547556985414585e-01,
|
||||
-1.3284202027172546e-02, -4.8425651568221604e-03, -1.5820217046914831e-02,
|
||||
-8.3911788548852520e-03, -9.8708341526036868e-03, 1.9755560754605148e-03,
|
||||
-1.4412634043633693e-03, 2.5726826620675299e-03, -1.5774278285877145e-03,
|
||||
-1.6040605215626427e-03, -9.9797875806281093e-04, -1.6266596812565389e-03,
|
||||
-1.3222744001110936e-03, -5.5977328518908812e-04, 6.7762959885338150e-04,
|
||||
-1.6052185640557444e-03, 7.9066006345622562e-04, 2.7398130030301674e-04,
|
||||
-1.4701727220069440e-04, 1.8423874587621713e-04, -3.2444289888527587e-04,
|
||||
-4.2892623856473176e-04, 4.6193135460255924e-04, 8.4044927357011508e-04,
|
||||
2.5615438451876899e-06, -5.1314624282347763e-07, 2.8785391639650792e-08,
|
||||
3.4633391551776865e-09, 7.4241087552789436e-02, -5.4280040120440022e-03,
|
||||
6.5534412833281500e-02, -7.3676789884596569e-02, 4.9126066596337937e-04,
|
||||
-6.3741847170612764e-03, 1.8022920362862328e-02, 1.8147438420912709e-02,
|
||||
5.1281518861036367e-03, 1.5643329785525021e-03, -3.7674334940365298e-05,
|
||||
1.9161460751596674e-03, 5.1303002399607958e-04, 1.1737495095273077e-03,
|
||||
2.7424831860945863e-04, 2.8929440491493800e-04, -1.3643930832243434e-04,
|
||||
-3.8451058499636436e-04, -1.6446493569519672e-04, 2.8198101717418872e-04,
|
||||
2.6836258430682717e-04, -3.6245004889293744e-04, -2.7038853806751870e-04,
|
||||
2.6824785565116667e-04, 3.4596717548757025e-04, -3.3476584292450472e-04,
|
||||
-6.2707939650082545e-04, 1.6303349067490777e-06, -5.3243973391468833e-07,
|
||||
9.8897384913597132e-10, -1.1961348316752441e-07, 1.9219539790640294e-02,
|
||||
-2.0206764138287829e-04, -5.1969726886217447e-02, -5.1327669591491869e-02,
|
||||
3.7207131447838271e-02, -9.1864376240948491e-03, 4.0521588009745941e-03,
|
||||
-1.9708740524219115e-02, -1.5528257052606061e-04, 5.5272314173948405e-03,
|
||||
3.6065107786608893e-04, 2.2921209578475239e-03, -6.0493119937173306e-04,
|
||||
1.3264010830068790e-03, 1.1925154671001486e-03, 2.5367108496124960e-03,
|
||||
2.0471466747371895e-04, -1.0084615091179223e-03, 2.0269870158526730e-03,
|
||||
-1.8142343224067773e-03, -3.1916624486206900e-04, 1.0899323113728922e-03,
|
||||
1.5977194189760289e-04, -3.6993982697979287e-04, -2.8095429889228639e-04,
|
||||
3.3673412008212799e-04, 5.3016256566782382e-04, 2.2603641905826421e-06,
|
||||
-6.0162376060668507e-06, 2.0626271307694735e-07, 2.7080875890664975e-10,
|
||||
-1.9932513600214176e-02, -3.1590139025144408e-03, -4.1290926781928680e-02,
|
||||
2.2930887771390233e-02, 2.8588480718176067e-02, -2.5422538807935227e-02,
|
||||
7.4291651267536559e-03, -5.6441743796061304e-03, 9.6583047441454531e-03,
|
||||
2.4324308684833340e-03, 5.3063140357734774e-03, 6.1327502623585652e-04,
|
||||
-3.3301168451738139e-03, -1.8166489805542909e-04, -4.2805082728751571e-03,
|
||||
-2.7235276457503932e-03, -1.2671126744029327e-03, 3.3085897019266428e-04,
|
||||
-3.7988540725469797e-03, 1.9997662400812392e-03, 1.2349981809226202e-03,
|
||||
-1.3462418114106411e-03, -5.3437809436454619e-04, 2.4103065487655935e-04,
|
||||
3.4813005143659336e-04, -2.3243343778689025e-04, -4.5159874040786652e-04,
|
||||
1.5119074547806086e-05, -6.9011025175958165e-07, 2.3330273843525182e-09,
|
||||
-5.3842762631498313e-07, 4.3011798669764258e-04, 9.9552785066539138e-04,
|
||||
1.6367943477601170e-02, 4.2785050543760354e-02, -2.0452568930084115e-02,
|
||||
-1.9227084404651550e-02, 1.4373130724756761e-02, 5.7276357414483758e-03,
|
||||
1.2758307452167408e-02, 3.2112729756378741e-03, 5.4991197676025035e-03,
|
||||
3.2296047342698880e-03, -2.1286546465503209e-03, 2.9476536066769593e-03,
|
||||
1.0201559844743992e-03, 3.2954854849929749e-03, -1.1813139734199577e-03,
|
||||
-1.4174365268660759e-03, 2.5658999230135306e-03, -2.9526732455200390e-03,
|
||||
-9.7004938493557751e-05, 1.7437271881877081e-03, 5.9754565134489387e-05,
|
||||
-6.0036116600961198e-04, -1.3230631539389915e-04, 2.6028153195231722e-04,
|
||||
1.6677911152304927e-04, 1.3884201313790570e-06, -2.2530742330382744e-05,
|
||||
7.3805127855484125e-07, -5.8273323257104446e-10, 4.9290906772224263e-03,
|
||||
3.0610869932292733e-03, 1.4313796146577058e-02, 4.8181769157442842e-04,
|
||||
-2.5982977487858137e-02, 2.4348378769669884e-02, 9.0510010545148799e-03,
|
||||
-1.3516528967376500e-02, -1.8726098827207454e-03, 1.2390557446126603e-02,
|
||||
-9.1227025683008613e-04, 7.0364465776508378e-03, -1.4088125053006069e-03,
|
||||
3.4067454992656385e-03, -1.2603784560760989e-03, 2.1812385869284081e-03,
|
||||
2.1084324466647831e-05, -2.2698924902178428e-03, -2.2226191104179477e-03,
|
||||
1.3339278571527775e-03, 1.8204956012944679e-03, -1.3446791863853983e-03,
|
||||
-9.9909759668189119e-04, 2.3435102450791270e-04, 2.5254141307444526e-04,
|
||||
1.1134484630654041e-04, 1.5286842865445637e-04, 4.7770176810314048e-05,
|
||||
-3.0570574206400900e-09, -1.8280421027556346e-09, -1.5932607092782039e-06,
|
||||
-2.8110227717260271e-03, -3.1231467242703289e-03, -7.5951163296362686e-03,
|
||||
-2.1260181962774405e-02, 1.4990600431812426e-03, 2.6948085160114123e-02,
|
||||
-1.3125993744515290e-02, 2.5328095875940654e-03, 5.1350312584983243e-03,
|
||||
-1.6143115098225704e-03, 8.1287346936694729e-03, -3.6059174026760633e-04,
|
||||
-5.6502508444833946e-03, 6.6779252331724626e-04, -5.0326662554609552e-03,
|
||||
-1.8088213195257283e-03, -3.7431045571209194e-03, 8.3448014976049661e-05,
|
||||
-9.8614380505414540e-04, -2.6401009553883316e-03, 5.9341419291161312e-04,
|
||||
2.0739686828981424e-03, -5.9797634333075985e-05, -1.0872087775937360e-03,
|
||||
8.0967213780402546e-05, 1.7373279075753355e-04, -3.9850700378931683e-04,
|
||||
4.7334970806959295e-07, -5.5985173946584438e-05, 1.9031863901026922e-06,
|
||||
3.4027792381324185e-09, -3.1280359588473967e-04, 5.0300486943160054e-04,
|
||||
-2.8683399135020489e-03, -1.2008277866989911e-03, 1.4099834934249001e-02,
|
||||
-9.5346660390286091e-03, -2.3740581166392327e-02, 1.3188455344687964e-02,
|
||||
-1.4460548177748710e-03, -4.2037545782719751e-03, 1.4670013169385359e-03,
|
||||
1.9671337767890882e-03, -1.3025084329530438e-03, 3.1550217754350482e-03,
|
||||
8.6233628968752322e-04, 5.0634050666416948e-03, 6.8840641553373526e-04,
|
||||
-3.8643121063023107e-03, 2.7532585912541218e-04, -2.1002860074291254e-04,
|
||||
2.2359939934659696e-03, -1.3840652254543024e-03, -1.6763605667005842e-03,
|
||||
3.7098662305387614e-04, 5.0284264148414009e-04, 2.1342825683299952e-04,
|
||||
2.9361015559854043e-04, 1.0312347464059402e-04, 2.3987071391277137e-07,
|
||||
-2.9324654172546502e-09, -3.6710510430712760e-06, 1.3368121380154261e-03,
|
||||
1.4877365013506760e-03, 4.2337278687268184e-03, 8.9532297499984297e-03,
|
||||
3.2367419938850294e-03, -1.6509842616506145e-02, 4.2662388175525008e-03,
|
||||
5.1287520687677045e-03, -1.9318765281838401e-02, 1.2840401098951606e-03,
|
||||
-8.9041973081194960e-03, 2.5805526816426402e-03, 1.9426554396526879e-03,
|
||||
2.1383002718137539e-03, -1.1198522043181984e-03, -4.5860467230069113e-04,
|
||||
-3.0213216077694940e-03, 4.3803366522670416e-05, -2.8955020910217968e-03,
|
||||
-7.6188510148852908e-04, 1.4406655488350538e-03, 1.9913160267415798e-03,
|
||||
-1.9574454921368270e-04, -1.6206278579913766e-03, -4.2397416300276465e-05,
|
||||
5.2668955401950952e-04, -3.1473706074703137e-04, 1.1305854764916919e-06,
|
||||
-1.1025780419487959e-04, 4.0231475478550114e-06, 7.4448742155610599e-10,
|
||||
-5.7542806536456988e-04, -1.3962047676911223e-03, -7.7910733149695881e-04,
|
||||
-2.0293445396823073e-03, -8.0584277113443983e-03, 9.2561802708384982e-04,
|
||||
1.8365141864082186e-02, -8.0855208176669503e-03, -5.9567473717600629e-03,
|
||||
-1.0813373009694597e-02, -5.3648971000046697e-04, -8.0483569657769771e-03,
|
||||
-1.1786907195179093e-03, -3.4585921438278584e-03, -2.8048252033714858e-03,
|
||||
-1.3298062340290390e-03, 1.2174093629560551e-04, -1.8509549096989374e-03,
|
||||
1.7726580693748909e-03, -2.4617807425807501e-03, 1.3327542858251992e-03,
|
||||
-4.2946375589953463e-04, -1.9574487953845573e-03, 3.0631609184529331e-04,
|
||||
8.7082976920211514e-04, 2.2107939301901358e-04, 2.5002382690157145e-04,
|
||||
1.8567319491871292e-04, 1.0950042045068506e-06, -1.4260985857055198e-09,
|
||||
-7.2146860148408335e-06, -2.6604588926341721e-04, 1.1930752380141212e-04,
|
||||
-1.5904049684056826e-03, -2.5464828659123254e-03, 2.4562492448205900e-04,
|
||||
8.2137273331999595e-03, 7.2372122281901669e-04, -8.0305782586859338e-03,
|
||||
1.6461891735701385e-02, -7.4726404087930879e-03, -3.3308999994364785e-03,
|
||||
-3.8605578571737301e-03, 5.1939018263187650e-03, -7.4783594984583011e-04,
|
||||
4.7329846259356904e-03, 2.5576434013004864e-03, 1.3184094162786905e-03,
|
||||
-2.2296241792944498e-04, -2.1461375216242336e-03, 1.7064815869658875e-03,
|
||||
1.6793057923813973e-03, 5.9966950380175297e-04, -4.2596934644769784e-04,
|
||||
-1.6262797376181580e-03, 5.5748735064045878e-06, 7.1301762682680220e-04,
|
||||
-5.4170894930021419e-04, 4.0926971253201973e-07, -1.8615721232857828e-04,
|
||||
7.4644639020998914e-06, -8.8402142176878236e-10, 3.1357190287392180e-04,
|
||||
7.9597866907847245e-04, 1.2242374484315670e-03, 2.2432983924643968e-03,
|
||||
3.7360392631435374e-03, -1.8346315422847415e-04, -8.9447986235832600e-03,
|
||||
5.1170003773556103e-03, 9.8612943651755561e-03, 1.2982450375216243e-02,
|
||||
-5.9568539025605695e-03, 8.8293572499739410e-04, 5.2355853108957354e-03,
|
||||
-2.5140777372805192e-03, 9.4718806147847093e-04, -4.8498469710574546e-03,
|
||||
-1.1455902067634613e-03, 2.5278263036861127e-03, 8.7518557957694308e-04,
|
||||
-1.4988946837090279e-03, -1.6587461108646788e-04, 5.3010146581652820e-04,
|
||||
-1.4769598311308706e-03, 1.4099290153743994e-04, 1.0210377105148046e-03,
|
||||
3.4652152930751690e-04, 4.2894782721634181e-04, 2.8827160262158191e-04,
|
||||
1.9605575118429994e-06, -2.6869941750589450e-09, -1.2686959481251205e-05,
|
||||
6.2118690045315475e-05, -6.9266581150996000e-04, 6.5114347606650224e-05,
|
||||
-4.6299515842343356e-04, -2.6341253451073600e-03, -4.1145044177758354e-03,
|
||||
-1.3119014396461980e-03, 4.3517571287416384e-03, -9.0629517469005098e-03,
|
||||
1.0876617207688946e-02, 9.5074167710495622e-03, -2.5681139285186438e-03,
|
||||
-2.5209727209737111e-03, -4.9645213357883220e-03, 5.0815058814798492e-04,
|
||||
-9.0717430454276401e-04, 4.8990052765759216e-03, -3.5042177275447457e-04,
|
||||
2.2376237780211885e-03, 1.3560371613952321e-03, -3.8279814357953214e-05,
|
||||
-6.5921630983060725e-04, -3.2119768671761486e-04, -1.1111879074490862e-03,
|
||||
-4.4176453802506131e-05, 8.8890690397482855e-04, -5.3043155420778626e-04,
|
||||
1.6971000247480230e-06, -2.7469671290871004e-04, 1.2580575273862472e-05,
|
||||
-9.0683882200211484e-10, -2.1359674139973282e-04, -4.0018169945925451e-05,
|
||||
-5.7750576026077195e-04, -6.4180711343731465e-04, 2.0302930490348061e-04,
|
||||
1.6351119341946150e-03, 3.9857022191808573e-03, -2.7095680824841474e-03,
|
||||
-7.2175363048520022e-03, -7.8163708147656330e-03, 1.0173365767109905e-02,
|
||||
6.1359344279036691e-03, -6.9549366450624847e-04, 2.6363883393387536e-03,
|
||||
4.5181771577114923e-03, 7.7785558025172258e-04, -4.3496217454422854e-05,
|
||||
4.1922339149713331e-03, -1.4074237424951059e-03, 1.5659520740856784e-03,
|
||||
-1.6703844903901651e-03, 9.5438736622087395e-04, -1.6173074048544354e-04,
|
||||
3.9478874219593374e-05, 1.1039556457800360e-03, 1.9664021921996113e-04,
|
||||
1.6363589600986673e-04, 3.9163960761265886e-04, 2.3447662266569635e-06,
|
||||
-1.4333073815630597e-09, -2.0502087244552265e-05, 2.2157620440394014e-06,
|
||||
6.6750032941751845e-04, 2.9172971033746323e-04, 7.9020703940250027e-04,
|
||||
1.5587178279708612e-03, 1.1620151775589892e-03, 6.2240236463069490e-05,
|
||||
-1.3811367430065333e-03, 4.3748403598123124e-03, -8.6101227336660233e-03,
|
||||
-7.4310448077580761e-03, 8.9021093046344479e-03, -3.0274072215419764e-03,
|
||||
3.1660132630635129e-03, -3.1477368993255051e-03, -2.9597559782082706e-03,
|
||||
-2.1155096110190175e-04, 7.7091015293960735e-04, 3.3072902087843219e-03,
|
||||
4.6210608863975580e-04, -1.6061209355446389e-03, -2.0187418413509014e-03,
|
||||
-6.4876860796269075e-06, 1.6522153071454654e-04, -1.6726296267198875e-04,
|
||||
9.2431208321653788e-04, -2.2287583148094444e-04, 2.5511431088727062e-06,
|
||||
-3.6039970881849361e-04, 1.9688235979535197e-05, -3.7457192432901044e-09,
|
||||
2.5807620945812000e-04, -7.2244544324433571e-04, 1.0790368127414874e-04,
|
||||
-4.1760238948185046e-04, -1.7448269612268148e-03, -1.8016710613760290e-03,
|
||||
-1.5859335586748617e-03, 1.4175473106720754e-03, 3.3556271404118544e-03,
|
||||
3.5652147444237134e-03, -8.8148399469076526e-03, -6.3781804659885089e-03,
|
||||
-6.8481681048368718e-03, 1.0276546730352168e-03, -3.5612851303833347e-03,
|
||||
3.8919808800686800e-03, 1.9980897223815432e-03, -1.2128395513872237e-03,
|
||||
-5.8259865297205136e-04, 1.8850909766925110e-03, -2.0200258452286943e-03,
|
||||
1.0659318264400290e-03, 1.6146290527533289e-03, -2.5678274788187096e-04,
|
||||
6.8608350772634814e-04, 4.4674639554755061e-05, -2.3738712621118025e-05,
|
||||
4.6909565196073496e-04, 3.2750985126758742e-06, -1.0508877359882054e-09,
|
||||
-3.0995955086127838e-05, -2.6090295873073399e-04, 2.2593157068985373e-04,
|
||||
-2.5873340354153014e-04, -1.0432034069002237e-04, 5.3396230602151349e-04,
|
||||
8.3941703085044705e-04, 7.7616674863855578e-04, -7.3565108539809835e-05,
|
||||
-2.3655096266623783e-03, 4.8338632155411811e-03, 3.7305174303572204e-03,
|
||||
-9.4123048258186546e-03, 4.0467754114985001e-03, 4.1042735786481280e-03,
|
||||
4.5660113084445712e-04, 2.9056073274273363e-03, -4.9773047112733606e-03,
|
||||
7.5914148822592612e-04, -1.3672500116079960e-03, -1.1515008332860619e-03,
|
||||
-1.5774145860636551e-03, -1.3874200763924686e-03, 2.9523415504071265e-04,
|
||||
1.6475835121375531e-03, -8.6718480733062874e-05, 4.5719257547222248e-04,
|
||||
-8.8416958937781763e-05, 2.5419846171150652e-06, -4.1745943816031057e-04,
|
||||
2.9037338003440348e-05, -4.8641001503932725e-09, -3.3875340880671390e-06,
|
||||
3.8854434947631496e-04, 1.5255986580861542e-04, 4.4231876423827599e-04,
|
||||
8.5687765241308279e-04, 4.9705062382093303e-04, 7.8437184053581466e-05,
|
||||
-5.8370635976557955e-04, -6.5015462417685062e-04, -1.9275788771249507e-03,
|
||||
5.4025542446396813e-03, 3.7050329130392900e-03, 9.5337152347673010e-03,
|
||||
-1.8500719493484013e-03, -2.5998770090829969e-03, -1.7921763933910746e-03,
|
||||
-1.5070360642670615e-03, -4.6225189534133604e-03, 9.6896548007970973e-04,
|
||||
1.9780464301734265e-04, 7.8226350391399229e-04, -7.4948199490994564e-04,
|
||||
2.2162510831858499e-03, -3.7065352470400629e-04, -1.9080725631003573e-04,
|
||||
-5.1697784965698951e-05, -5.6772926264705180e-05, 4.8008042025353599e-04,
|
||||
2.9689347658160229e-06, -4.0508153712783222e-09, -4.4376992450690561e-05,
|
||||
2.8656860643779843e-04, -6.0723827461135922e-04, 8.9652701855479268e-05,
|
||||
-3.3722363780791357e-04, -1.2273225745712776e-03, -1.1208506603616873e-03,
|
||||
-5.7376759633318995e-04, 5.0470316291295603e-04, 1.1372295314039857e-03,
|
||||
-1.8742615395240399e-03, -1.7699835210057207e-03, 6.4172581555616923e-03,
|
||||
-2.2641737523530618e-03, -8.3905329914488857e-03, 1.1962776747535253e-03,
|
||||
1.1168936154126797e-03, 1.7441657118701060e-03, -1.5880517854128917e-03,
|
||||
-3.3283970696354036e-03, -1.9452225624805367e-03, 2.7709962173234177e-04,
|
||||
1.7334196123640587e-03, 4.8378489526356490e-04, 1.8299929821834237e-03,
|
||||
1.4411009104043159e-05, -2.5608521367940406e-04, 1.3956561131376027e-04,
|
||||
3.8404496716179571e-06, -4.1420194476987372e-04, 4.0763682598377557e-05,
|
||||
-4.3001030012746268e-09, -3.2795025947796546e-04, 2.7837362859566109e-04,
|
||||
-2.5801815520712324e-04, -7.6884800996573273e-05, 4.4699382189544756e-04,
|
||||
6.8551289269577612e-04, 6.0741397737702470e-04, -1.8499524748852945e-05,
|
||||
-5.4196601279355773e-04, 1.3208939489178523e-03, -2.5964000584312000e-03,
|
||||
-1.7336470429971179e-03, -7.5603676752781131e-03, 2.9070149137429155e-04,
|
||||
6.4482227927468751e-03, -2.1489444199310035e-03, -1.4230490906760446e-03,
|
||||
1.8169764635181242e-03, 6.7983720224022826e-05, -2.1561275597188445e-03,
|
||||
2.7260521253352332e-03, -1.8300026665438493e-03, 5.4963459881875632e-04,
|
||||
-4.5219985324618448e-05, -9.7394557008500474e-04, -2.1933952472490118e-04,
|
||||
-2.2310319932044201e-04, 3.8834937158853952e-04, 1.9039628159021295e-06,
|
||||
-5.5536157089227886e-09, -6.0675975477065685e-05, 9.3302639864854266e-05,
|
||||
2.3339579903288108e-04, 1.7775902384819042e-04, 3.4243433084381097e-04,
|
||||
5.5750335496336815e-04, 2.5233808615771091e-04, -1.1281124813925308e-04,
|
||||
-3.4268677698185476e-04, -8.3165051103961077e-05, 8.8429111750297617e-05,
|
||||
1.1803214341051613e-03, -3.3597902952208895e-03, 8.2300563761220677e-04,
|
||||
7.7568191353945860e-03, -2.1323883809726602e-04, -4.5235513690711085e-03,
|
||||
3.3544646570372125e-03, -1.8547392389106984e-04, 1.7056584504294026e-03,
|
||||
1.7389044210859308e-03, 2.5624656326692715e-03, 2.1075918064110007e-03,
|
||||
1.7655688651649145e-04, 2.4347639496794055e-04, 8.0341660812841874e-05,
|
||||
-8.6035464445300672e-04, 4.0853119890643127e-04, 3.1106201761768523e-06,
|
||||
-3.2463367641115013e-04, 5.4867873654193066e-05, -7.1952746762362615e-09,
|
||||
2.0035305510703163e-04, -4.1470564629065068e-04, 7.7757242307016758e-05,
|
||||
-2.0649053086643453e-04, -8.1705094869878570e-04, -7.7590949646469095e-04,
|
||||
-4.4764387897257323e-04, 2.4235976605899791e-04, 5.0719709556882437e-04,
|
||||
-6.0619460486065918e-04, 7.7723307065286659e-04, 9.7970695866240890e-04,
|
||||
4.4325535716739336e-03, 8.6565714933583399e-04, -5.6874671538713886e-03,
|
||||
3.6369082580526703e-03, 3.9496935822962058e-03, 3.9128965494382630e-03,
|
||||
-6.2754528357869619e-04, -1.1570007004839940e-03, -3.3166553408609271e-04,
|
||||
5.4384291000910984e-04, -1.8705788666701219e-03, 2.9405172845078166e-04,
|
||||
-1.2222588412306808e-03, -2.2891603541204061e-04, -2.1467092296314339e-04,
|
||||
1.7478332775632674e-04, 1.3972574343180186e-06, -5.7279591476758486e-09,
|
||||
-7.9742615225032346e-05, -3.0075798989147681e-04, 1.4118701101636561e-04,
|
||||
-2.4240631409222973e-04, -1.1785201583561527e-04, 2.4193417610447515e-04,
|
||||
4.6523705060868783e-04, 4.9129251547784113e-04, 9.9916536450085264e-05,
|
||||
-4.1041593831106369e-04, 5.0541939579484883e-04, -7.7438126257460419e-04,
|
||||
1.3270121215682937e-03, -4.2642936680703606e-04, -5.0811628681540644e-03,
|
||||
-1.2244180097435811e-03, 4.5000172726604943e-03, -4.6485436804198947e-03,
|
||||
2.4095129398396579e-03, 2.6249577773794232e-03, 2.0560610805366521e-03,
|
||||
4.2673006136392647e-04, -1.0417284476604593e-03, -4.4756553523878279e-04,
|
||||
-1.7156599571386166e-03, 1.5837278146672791e-04, -1.0292671007440847e-03,
|
||||
3.5034243358238187e-04, 9.3524701103512595e-07, -1.3324582404794741e-04,
|
||||
7.1217236168440604e-05, -8.4826920074820654e-09, 8.8487458676305089e-05,
|
||||
2.5411257464301760e-04, 1.1631330722711955e-04, 2.4706559772584943e-04,
|
||||
5.0363596168365393e-04, 3.2925334215437298e-04, 5.4865482297388669e-05,
|
||||
-2.4984731108154343e-04, -1.5023316925162974e-04, 5.7089788276837070e-05,
|
||||
3.9200009487858244e-05, -6.0053644013143307e-04, -1.9471560296367080e-03,
|
||||
-8.0439039738820761e-04, 2.8398775343293813e-03, -2.5148892944348586e-03,
|
||||
-3.4385946494612835e-03, -4.3967414780182847e-03, 4.8062801167336061e-04,
|
||||
3.2538487861870366e-03, -2.4653635511351106e-03, 1.6210813355552567e-03,
|
||||
-1.8960620163814548e-03, 2.9334053827329834e-04, -4.6008176198270929e-04,
|
||||
-5.2750995834480166e-05, -3.5881015258430354e-05, -1.5733251013534650e-04,
|
||||
-8.0433630524953438e-07, -9.3134893153291366e-09, -1.0126700420616725e-04,
|
||||
1.3524438560090350e-04, -2.3657150167652783e-04, 8.4063693464263644e-05,
|
||||
-7.3284196918286295e-05, -4.5747684911547662e-04, -4.9385229541419780e-04,
|
||||
-3.4615227602379921e-04, 7.6053373209164201e-05, 3.4515183198076101e-04,
|
||||
-3.4930928458053499e-04, 2.9241034735481098e-04, -2.7639227986046247e-04,
|
||||
3.6654015848700347e-04, 2.4583473727325294e-03, 1.3808700892046131e-03,
|
||||
-2.2854206521655813e-03, 2.8668302261101726e-03, -2.3837177410215723e-03,
|
||||
-3.2669763894858229e-03, -3.1927275211167719e-03, -3.2249104816820815e-03,
|
||||
-1.7758589472062628e-03, -4.6211772345946937e-04, -1.5913577025463228e-03,
|
||||
5.2209681324993251e-05, -3.3172305063837123e-04, 9.3645090863664495e-05,
|
||||
-4.0531462102762323e-07, 1.5379696379095242e-04, 8.9553577540403740e-05,
|
||||
-8.3095679845718682e-09, -7.7614312182869432e-05, -6.9224510403129077e-05,
|
||||
-7.0511436907771101e-05, -9.2092390003882744e-05, -1.3108592128347423e-04,
|
||||
-5.2166463363986037e-05, 3.8189747222245900e-05, 9.7034215578165717e-05,
|
||||
6.6698289420144591e-06, 4.1465837932271208e-05, -8.6491223894963871e-05,
|
||||
1.8599835598442636e-04, 4.5419293400123992e-04, 2.4637402659425338e-04,
|
||||
-6.6384442423605484e-04, 7.0859502436792013e-04, 1.0992380591874002e-03,
|
||||
1.4314937223341589e-03, -1.4570501008170258e-04, -1.3731334006113543e-03,
|
||||
1.2298515850134274e-03, -8.9292439144695148e-04, 1.6314598205173117e-03,
|
||||
-2.6215137530695448e-04, 1.1695055548712869e-03, 2.1630290489579952e-04,
|
||||
2.0790865575842334e-04, -5.6795284112210593e-04, -3.6817519448666263e-06,
|
||||
-1.3232041203107141e-08, -1.2483857322058414e-04, -6.8648130614685716e-06,
|
||||
9.4884349344528113e-05, 2.8169710973816057e-06, 5.5314611665325722e-05,
|
||||
1.8193865910137160e-04, 1.6376627773798306e-04, 8.6804623936378438e-05,
|
||||
-5.8747038363387132e-05, -1.0309325547777985e-04, 8.5655035651616525e-05,
|
||||
-3.9013644288256400e-05, -2.9972201744199742e-06, -1.4223835592234795e-04,
|
||||
-6.1728813484959516e-04, -4.8730493463071016e-04, 5.0616799947066483e-04,
|
||||
-7.6210587996690783e-04, 7.8977404395214165e-04, 1.1085140504767312e-03,
|
||||
1.1732659695961691e-03, 1.5071570177655463e-03, 1.0707318594434011e-03,
|
||||
3.9653242216132148e-04, 1.4685549102334643e-03, -1.3178963305750352e-04,
|
||||
1.0036937264612503e-03, -3.8330969230438306e-04, -4.6956191298802305e-06,
|
||||
5.0244872004260070e-04, 1.0955078418257361e-04, -1.4102930471052401e-08,
|
||||
5.3903360902318162e-02, 4.5646784742740532e-01, -2.3775359618348597e-02,
|
||||
-1.0804428280726967e-02, -1.2685075587595527e-02, -6.5186790847643755e-03,
|
||||
-2.6801719660519757e-03, -1.0219114528977680e-03, 6.2601830432405575e-04,
|
||||
-5.0759231993347616e-04, 3.5935438417533216e-04, -2.0299577991029813e-04,
|
||||
-1.1528037487456212e-04, -8.6914308586454053e-05, -2.3170116329541290e-04,
|
||||
-3.4162104059285499e-04, -2.0297105465141889e-04, 1.6362554140599247e-04,
|
||||
-2.5010861768559074e-04, 1.3249006118439094e-04, 4.3449210292733832e-05,
|
||||
-4.5596513172512997e-05, 9.5088226421318060e-06, -1.4531856486312905e-05,
|
||||
-1.3596189144146172e-05, 1.3812870532393629e-05, 2.4491439899588591e-05,
|
||||
2.8004467174549986e-08, -1.8015504836958041e-08, 1.1727867063472466e-10,
|
||||
3.1916369403073135e-10
|
||||
};
|
||||
|
||||
|
||||
//Legendre polynomial calculation macros and functions
|
||||
|
||||
#define calcleg(x) { \
|
||||
L[1] = x; int i=0; \
|
||||
for(i=2;i<nmax;i++) \
|
||||
L[i] = 2.*(x)*L[i-1] - L[i-2] - ((x)*L[i-1] - L[i-2])/((double) i); \
|
||||
}
|
||||
|
||||
#define calclegdleg(x) { \
|
||||
L[1] = x; int i=0;\
|
||||
for(i=2;i<nmax;i++) { \
|
||||
L[i] = 2.*(x)*L[i-1] - L[i-2] - ((x)*L[i-1] - L[i-2])/((double) i); \
|
||||
dL[i] = L[i-1]*i + dL[i-1]*(x); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define calcNleg(n,x) { \
|
||||
int i=0; \
|
||||
for(i=2;i<n+1;i++) \
|
||||
L[i] = 2.*(x)*L[i-1] - L[i-2] - ((x)*L[i-1] - L[i-2])/((double) i); \
|
||||
}
|
||||
|
||||
#define calcNlegdleg(n,x) { \
|
||||
int i=0; \
|
||||
for(i=2;i<n+1;i++) { \
|
||||
L[i] = 2.*(x)*L[i-1] - L[i-2] - ((x)*L[i-1] - L[i-2])/((double) i); \
|
||||
dL[i] = L[i-1]*i + dL[i-1]*(x); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define defL(n) \
|
||||
static double L ## n (double x) { \
|
||||
double L[n+1]; \
|
||||
L[0] = 1.; \
|
||||
L[1] = x; \
|
||||
calcNleg(n,x); \
|
||||
return L[n]; \
|
||||
}
|
||||
|
||||
#define defLdL(n) \
|
||||
static void LdL ## n (double x, double *y, double *z) { \
|
||||
double L[n+1]; \
|
||||
double dL[n+1]; \
|
||||
L[0] = 1.; \
|
||||
L[1] = x; \
|
||||
dL[0] = 0.; \
|
||||
dL[1] = 1.; \
|
||||
calcNlegdleg(n,x); \
|
||||
*y = L[n]; \
|
||||
*z = dL[n]; \
|
||||
}
|
||||
|
||||
|
||||
double L0(double x) {return 1.;}
|
||||
double L1(double x) {return x;}
|
||||
defL(2)
|
||||
defL(3)
|
||||
defL(4)
|
||||
defL(5)
|
||||
defL(6)
|
||||
defL(7)
|
||||
defL(8)
|
||||
defL(9)
|
||||
defL(10)
|
||||
defL(11)
|
||||
defL(12)
|
||||
defL(13)
|
||||
defL(14)
|
||||
defL(15)
|
||||
defL(16)
|
||||
defL(17)
|
||||
defL(18)
|
||||
defL(19)
|
||||
defL(20)
|
||||
defL(21)
|
||||
defL(22)
|
||||
defL(23)
|
||||
defL(24)
|
||||
defL(25)
|
||||
defL(26)
|
||||
defL(27)
|
||||
defL(28)
|
||||
defL(29)
|
||||
|
||||
static double(*Ln[])(double) = {
|
||||
L0,
|
||||
L1,
|
||||
L2,
|
||||
L3,
|
||||
L4,
|
||||
L5,
|
||||
L6,
|
||||
L7,
|
||||
L8,
|
||||
L9,
|
||||
L10,
|
||||
L11,
|
||||
L12,
|
||||
L13,
|
||||
L14,
|
||||
L15,
|
||||
L16,
|
||||
L17,
|
||||
L18,
|
||||
L19,
|
||||
L20,
|
||||
L21,
|
||||
L22,
|
||||
L23,
|
||||
L24,
|
||||
L25,
|
||||
L26,
|
||||
L27,
|
||||
L28,
|
||||
L29
|
||||
};
|
||||
|
||||
|
||||
static void LdL0(double x, double *y, double *z) {*y=1.; *z=0.;}
|
||||
static void LdL1(double x, double *y, double *z) {*y=x; *z=1.;}
|
||||
defLdL(2)
|
||||
defLdL(3)
|
||||
defLdL(4)
|
||||
defLdL(5)
|
||||
defLdL(6)
|
||||
defLdL(7)
|
||||
defLdL(8)
|
||||
defLdL(9)
|
||||
defLdL(10)
|
||||
defLdL(11)
|
||||
defLdL(12)
|
||||
defLdL(13)
|
||||
defLdL(14)
|
||||
defLdL(15)
|
||||
defLdL(16)
|
||||
defLdL(17)
|
||||
defLdL(18)
|
||||
defLdL(19)
|
||||
defLdL(20)
|
||||
defLdL(21)
|
||||
defLdL(22)
|
||||
defLdL(23)
|
||||
defLdL(24)
|
||||
defLdL(25)
|
||||
defLdL(26)
|
||||
defLdL(27)
|
||||
defLdL(28)
|
||||
defLdL(29)
|
||||
|
||||
static void(*LdLn[])(double,double *,double *) = {
|
||||
LdL0,
|
||||
LdL1,
|
||||
LdL2,
|
||||
LdL3,
|
||||
LdL4,
|
||||
LdL5,
|
||||
LdL6,
|
||||
LdL7,
|
||||
LdL8,
|
||||
LdL9,
|
||||
LdL10,
|
||||
LdL11,
|
||||
LdL12,
|
||||
LdL13,
|
||||
LdL14,
|
||||
LdL15,
|
||||
LdL16,
|
||||
LdL17,
|
||||
LdL18,
|
||||
LdL19,
|
||||
LdL20,
|
||||
LdL21,
|
||||
LdL22,
|
||||
LdL23,
|
||||
LdL24,
|
||||
LdL25,
|
||||
LdL26,
|
||||
LdL27,
|
||||
LdL28,
|
||||
LdL29
|
||||
};
|
||||
|
||||
// LDA and PBEc coefficients
|
||||
|
||||
//pix = 1./(2.*(3.*pi**2)**(1./3.))**2
|
||||
#define pix 0.026121172985233605
|
||||
//LDA exchange energy = r2e*rho**4/3
|
||||
#define r2e (-0.73855876638202245)
|
||||
|
||||
|
||||
#define defaultseed 1
|
||||
|
||||
//random number generation macros
|
||||
#define unirandinc0() \
|
||||
( ((double) random()) / ((double) RAND_MAX) )
|
||||
|
||||
#define unirandex0() \
|
||||
( (1.+random()) / (1.+RAND_MAX) )
|
||||
|
||||
#define normrand() \
|
||||
( sqrt(-2.*log(unirandex0())) * cos(M_PI*2.*unirandinc0()) )
|
||||
|
||||
|
||||
// beeforder==-1 : calculate beefxc with standard expansion coefficients
|
||||
// (is changed by beefsetmode_)
|
||||
static int beeforder = -1;
|
||||
|
||||
//arrays holding current Legendre polynomials and derivatives
|
||||
static __thread double L[nmax] = {1.};
|
||||
static __thread double dL[nmax] = {0.,1.};
|
||||
|
||||
|
||||
static inline double sq(double x) {return x*x;}
|
||||
|
||||
// beeftype is a switch set by beef_set_type
|
||||
// which determines which version/type of beef is used
|
||||
static int beeftype = 0;
|
||||
|
||||
#define output_spacing " "
|
||||
#define output_marker "**************************************************************************"
|
||||
|
||||
#endif
|
|
@ -1,381 +0,0 @@
|
|||
#define _XOPEN_SOURCE 500
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "beefleg.h"
|
||||
|
||||
#include "pbecor.h"
|
||||
|
||||
// evaluate bee exchange energy and its derivatives de/drho and ( de/d|grad rho| ) / |grad rho|
|
||||
void beefx_(double *r, double *g, double *e, double *dr, double *dg, int *addlda)
|
||||
{
|
||||
double s2,t,r43,r83,s,sx,dx,fx,dl,dfx;
|
||||
const int n=nmax;
|
||||
const int i1=1;
|
||||
const int i2=1;
|
||||
|
||||
switch(beeftype) {
|
||||
case 0: //BEEF-vdW xc
|
||||
r43 = pow(*r, 4./3.);
|
||||
r83 = r43*r43;
|
||||
sx = r2e * r43;
|
||||
dx = 4./3. * sx / (*r);
|
||||
|
||||
s2 = *g*pix / r83;
|
||||
s = sqrt(s2);
|
||||
t = 2.*s2/(4.+s2)-1.;
|
||||
|
||||
if(beeforder==-1)
|
||||
{
|
||||
calclegdleg(t);
|
||||
|
||||
if(!(*addlda))
|
||||
fx = ddot_(&n, mi, &i1, L, &i2) - 1.;
|
||||
else
|
||||
fx = ddot_(&n, mi, &i1, L, &i2);
|
||||
dl = ddot_(&n, mi, &i1, dL, &i2);
|
||||
|
||||
dfx = dl*( 4.*s / (4.+s2) - 4.*s2*s/sq(4.+s2) );
|
||||
*dr = dx*fx - 4./3.*s2/(s*(*r))*sx*dfx;
|
||||
*dg = sx*dfx*pix/(s*r83);
|
||||
*e = sx*fx;
|
||||
return;
|
||||
}
|
||||
|
||||
if(beeforder>=0)
|
||||
{
|
||||
(*LdLn[beeforder])(t, &fx, &dl);
|
||||
|
||||
dfx = dl*( 4.*s / (4.+s2) - 4.*s2*s/sq(4.+s2) );
|
||||
*dr = dx*fx - 4./3.*s2/(s*(*r))*sx*dfx;
|
||||
*dg = sx*dfx*pix/(s*r83);
|
||||
*e = sx*fx;
|
||||
}
|
||||
else
|
||||
{
|
||||
*dr = 0.;
|
||||
*dg = 0.;
|
||||
*e = 0.;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// evaluate local part of bee correlation and its derivatives de/drho and ( de/d|grad rho| ) / |grad rho|
|
||||
void beeflocalcorr_(double *r, double *g, double *e, double *dr, double *dg, int *addlda)
|
||||
{
|
||||
double rs, ldac, ldadr, pbec, pbedr, pbed2rho;
|
||||
|
||||
if(beeforder>=0)
|
||||
{
|
||||
*e = 0.;
|
||||
*dr = 0.;
|
||||
*dg = 0.;
|
||||
return;
|
||||
}
|
||||
|
||||
switch(beeftype) {
|
||||
case 0: //BEEF-vdW xc
|
||||
rs = invpi075tothird / pow(*r,1./3.);
|
||||
corpbe(rs, 0.5/r2k * sqrt(*g*rs) / (*r),
|
||||
(beeforder>-3), 1, &ldac, &ldadr, &pbec, &pbedr, &pbed2rho);
|
||||
|
||||
if(beeforder==-1)
|
||||
{
|
||||
if(!(*addlda))
|
||||
{
|
||||
*e = beefpbecfrac*pbec*(*r);
|
||||
*dr = beefpbecfrac*pbedr;
|
||||
}
|
||||
else
|
||||
{
|
||||
*e = (beefpbecfrac*pbec+ldac)*(*r);
|
||||
*dr = beefpbecfrac*pbedr+ldadr;
|
||||
}
|
||||
*dg = beefpbecfrac*pbed2rho / (*r);
|
||||
return;
|
||||
}
|
||||
|
||||
if(beeforder==-2)
|
||||
{
|
||||
*e = pbec*(*r);
|
||||
*dr = pbedr;
|
||||
*dg = pbed2rho / (*r);
|
||||
}
|
||||
else if(beeforder==-3)
|
||||
{
|
||||
*e = ldac*(*r);
|
||||
*dr = ldadr;
|
||||
*dg = 0.;
|
||||
}
|
||||
else
|
||||
{
|
||||
*e = 0.;
|
||||
*dr = 0.;
|
||||
*dg = 0.;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// evaluate bee exchange energy only
|
||||
void beefxpot_(double *r, double *g, double *e, int *addlda)
|
||||
{
|
||||
double s2,t,s,r43;
|
||||
const int n=nmax;
|
||||
const int i1=1;
|
||||
const int i2=1;
|
||||
|
||||
switch(beeftype) {
|
||||
case 0: //BEEF-vdW xc
|
||||
r43 = pow(*r, 4./3.);
|
||||
|
||||
s2 = *g*pix / (r43*r43);
|
||||
t = 2.*s2/(4.+s2)-1.;
|
||||
|
||||
if(beeforder==-1)
|
||||
{
|
||||
calcleg(t);
|
||||
|
||||
if(!(*addlda))
|
||||
*e = (ddot_(&n, mi, &i1, L, &i2) - 1.) * r2e * r43;
|
||||
else
|
||||
*e = ddot_(&n, mi, &i1, L, &i2) * r2e * r43;
|
||||
return;
|
||||
}
|
||||
|
||||
if(beeforder>=0)
|
||||
*e = (*Ln[beeforder])(t) * r2e * r43;
|
||||
else
|
||||
*e = 0.;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// evaluate local part of bee correlation - energy only
|
||||
void beeflocalcorrpot_(double *r, double *g, double *e, int *addlda)
|
||||
{
|
||||
double rs, ldac, ldadr, pbec, pbedr, pbed2rho;
|
||||
|
||||
if(beeforder>=0)
|
||||
{
|
||||
*e = 0.;
|
||||
return;
|
||||
}
|
||||
|
||||
switch(beeftype) {
|
||||
case 0: //BEEF-vdW xc
|
||||
rs = invpi075tothird / pow(*r,1./3.);
|
||||
corpbe(rs, 0.5/r2k * sqrt(*g*rs) / (*r),
|
||||
(beeforder>-3), 0, &ldac, &ldadr, &pbec, &pbedr, &pbed2rho);
|
||||
|
||||
if(beeforder==-1)
|
||||
{
|
||||
if(!(*addlda))
|
||||
*e = beefpbecfrac*pbec*(*r);
|
||||
else
|
||||
*e = (beefpbecfrac*pbec+ldac)*(*r);
|
||||
return;
|
||||
}
|
||||
|
||||
if(beeforder==-2)
|
||||
*e = pbec*(*r);
|
||||
else if(beeforder==-3)
|
||||
*e = ldac*(*r);
|
||||
else
|
||||
*e = 0.;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// evaluate local part of bee correlation for spin polarized system
|
||||
void beeflocalcorrspin_(double *r, double *z, double *g, double *e,
|
||||
double *drup, double *drdown, double *dg, int *addlda) {
|
||||
double rs, ldac, ldadrup, ldadrdown, pbec, pbedrup, pbedrdown, pbed2rho;
|
||||
|
||||
if(beeforder>=0)
|
||||
{
|
||||
*e = 0.;
|
||||
*drup = 0.;
|
||||
*drdown = 0.;
|
||||
*dg = 0.;
|
||||
return;
|
||||
}
|
||||
|
||||
switch(beeftype) {
|
||||
case 0: //BEEF-vdW xc
|
||||
rs = invpi075tothird / pow(*r,1./3.);
|
||||
corpbespin(rs, 0.5/r2k * sqrt(*g*rs) / (*r), *z,
|
||||
(beeforder>-3), 1, &ldac, &ldadrup, &ldadrdown, &pbec,
|
||||
&pbedrup, &pbedrdown, &pbed2rho);
|
||||
|
||||
if(beeforder==-1)
|
||||
{
|
||||
if(!(*addlda))
|
||||
{
|
||||
*e = beefpbecfrac*pbec*(*r);
|
||||
*drup = beefpbecfrac*pbedrup;
|
||||
*drdown = beefpbecfrac*pbedrdown;
|
||||
}
|
||||
else
|
||||
{
|
||||
*e = (beefpbecfrac*pbec+ldac)*(*r);
|
||||
*drup = beefpbecfrac*pbedrup+ldadrup;
|
||||
*drdown = beefpbecfrac*pbedrdown+ldadrdown;
|
||||
}
|
||||
*dg = beefpbecfrac*pbed2rho / (*r);
|
||||
return;
|
||||
}
|
||||
|
||||
if(beeforder==-2)
|
||||
{
|
||||
*e = pbec*(*r);
|
||||
*drup = pbedrup;
|
||||
*drdown = pbedrdown;
|
||||
*dg = pbed2rho / (*r);
|
||||
}
|
||||
else if(beeforder==-3)
|
||||
{
|
||||
*e = ldac*(*r);
|
||||
*drup = ldadrup;
|
||||
*drdown = ldadrdown;
|
||||
*dg = 0.;
|
||||
}
|
||||
else
|
||||
{
|
||||
*e = 0.;
|
||||
*drup = 0.;
|
||||
*drdown = 0.;
|
||||
*dg = 0.;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// evaluate local part of bee correlation for spin polarized system - energy only
|
||||
void beeflocalcorrpotspin_(double *r, double *z, double *g, double *e, int *addlda)
|
||||
{
|
||||
double rs, ldac, ldadrup, ldadrdown, pbec, pbedrup, pbedrdown, pbed2rho;
|
||||
|
||||
if(beeforder>=0)
|
||||
{
|
||||
*e = 0.;
|
||||
return;
|
||||
}
|
||||
|
||||
switch(beeftype) {
|
||||
case 0: //BEEF-vdW xc
|
||||
rs = invpi075tothird / pow(*r,1./3.);
|
||||
corpbespin(rs, 0.5/r2k * sqrt(*g*rs) / (*r), *z,
|
||||
(beeforder>-3), 0, &ldac, &ldadrup, &ldadrdown, &pbec,
|
||||
&pbedrup, &pbedrdown, &pbed2rho);
|
||||
|
||||
if(beeforder==-1)
|
||||
{
|
||||
if(!(*addlda))
|
||||
*e = beefpbecfrac*pbec*(*r);
|
||||
else
|
||||
*e = (beefpbecfrac*pbec+ldac)*(*r);
|
||||
return;
|
||||
}
|
||||
|
||||
if(beeforder==-2)
|
||||
*e = pbec*(*r);
|
||||
else if(beeforder==-3)
|
||||
*e = ldac*(*r);
|
||||
else
|
||||
*e = 0.;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// mode >= 0: for perturbed parameters --- calc Legendre order mode only
|
||||
// -1: standard beefxc expansion coefficients
|
||||
// -2: PBE correlation only
|
||||
// -3: LDA correlation only
|
||||
// else: no correlation either
|
||||
void beefsetmode_(int *mode)
|
||||
{
|
||||
beeforder = *mode;
|
||||
}
|
||||
|
||||
// initialize pseudo random number generator
|
||||
void beefrandinit_(unsigned int *seed)
|
||||
{
|
||||
srandom(*seed);
|
||||
}
|
||||
|
||||
// initialize pseudo random number generator with default seed
|
||||
void beefrandinitdef_()
|
||||
{
|
||||
srandom(defaultseed);
|
||||
}
|
||||
|
||||
// calculate ensemble energies
|
||||
void beefensemble_(double *beefxc, double *ensemble)
|
||||
{
|
||||
double vec[nmax+2],randvec[nmax+1];
|
||||
const double alpha=1.;
|
||||
const double beta=0.;
|
||||
const int m=nmax+1;
|
||||
const int n=nmax+1;
|
||||
const int la=nmax+1;
|
||||
const int ix=1;
|
||||
const int iy=1;
|
||||
const int n2=nmax+2;
|
||||
|
||||
int i=0;
|
||||
int j=0;
|
||||
for(i=0;i<nsamples;i++)
|
||||
{
|
||||
for(j=0;j<nmax+1;j++) randvec[j] = normrand();
|
||||
dgemv_("T", &m, &n, &alpha, beefmat, &la, randvec, &ix,
|
||||
&beta, vec, &iy);
|
||||
vec[nmax+1] = -vec[nmax];
|
||||
ensemble[i] = ddot_(&n2, vec, &ix, beefxc, &iy);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//set type of beef functional to be used
|
||||
//returns true on success
|
||||
//0: BEEF-vdW
|
||||
int beef_set_type_(int *tbeef, int *ionode)
|
||||
{
|
||||
beeftype = *tbeef;
|
||||
|
||||
if(*ionode)
|
||||
{
|
||||
puts("\n" output_spacing output_marker);
|
||||
printf(output_spacing "Initializing " PACKAGE " V" VERSION " ");
|
||||
|
||||
switch(beeftype) {
|
||||
case 0:
|
||||
puts("with the BEEF-vdW functional.");
|
||||
puts(output_spacing "Citation: Wellendorff et al., PRB 85, 235149 (2012).");
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
puts(output_spacing output_marker "\n");
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
|
@ -1,292 +0,0 @@
|
|||
/* taken from K. Burke's homepage: http://dft.uci.edu/node/187
|
||||
translated by f2c (version 20090411).
|
||||
code for deriv. wrt. absolute gradient divided by abs. grad. added
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
/* Table of constant values */
|
||||
|
||||
#define c_b3 .0310907
|
||||
#define c_b4 .2137
|
||||
#define c_b5 7.5957
|
||||
#define c_b6 3.5876
|
||||
#define c_b7 1.6382
|
||||
#define c_b8 .49294
|
||||
#define c_b9 .01554535
|
||||
#define c_b10 .20548
|
||||
#define c_b11 14.1189
|
||||
#define c_b12 6.1977
|
||||
#define c_b13 3.3662
|
||||
#define c_b14 .62517
|
||||
#define c_b15 .0168869
|
||||
#define c_b16 .11125
|
||||
#define c_b17 10.357
|
||||
#define c_b18 3.6231
|
||||
#define c_b19 .88026
|
||||
#define c_b20 .49671
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ###################################################################### */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* Subroutine */ static void gcor2(double a, double a1, double b1,
|
||||
double b2, double b3, double b4, double rtrs,
|
||||
double *gg, double *ggrs)
|
||||
{
|
||||
/* Local variables */
|
||||
double q0, q1, q2, q3;
|
||||
|
||||
/* slimmed down version of GCOR used in PW91 routines, to interpolate */
|
||||
/* LSD correlation energy, as given by (10) of */
|
||||
/* J. P. Perdew and Y. Wang, Phys. Rev. B {\bf 45}, 13244 (1992). */
|
||||
/* K. Burke, May 11, 1996. */
|
||||
q0 = a * -2. * (a1 * rtrs * rtrs + 1.);
|
||||
q1 = a * 2. * rtrs * (b1 + rtrs * (b2 + rtrs * (b3 + b4 * rtrs)))
|
||||
;
|
||||
q2 = log(1. / q1 + 1.);
|
||||
*gg = q0 * q2;
|
||||
q3 = a * (b1 / rtrs + b2 * 2. + rtrs * (b3 * 3. + b4 * 4. * rtrs))
|
||||
;
|
||||
*ggrs = a * -2. * a1 * q2 - q0 * q3 / (q1 * (q1 + 1.));
|
||||
} /* gcor2_ */
|
||||
|
||||
|
||||
#define gamma 0.03109069086965489503494086371273
|
||||
#define beta 0.06672455060314922
|
||||
#define delta (beta/gamma)
|
||||
#define phi 0.409240950261429630406974844266531
|
||||
#define GAM 0.5198420997897463295344212145565
|
||||
#define fzz (8./(9.*GAM))
|
||||
|
||||
|
||||
/* ###################################################################### */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* Subroutine */ void corpbe(double rs, double t,
|
||||
int lgga,
|
||||
int lpot, double *ec, double *vc,
|
||||
double *h__, double *dvc, double *dv2rho)
|
||||
{
|
||||
/* Local variables */
|
||||
double b, b2, q4, t2, q5, t4,
|
||||
ep, eu, pon,
|
||||
eurs, rtrs;
|
||||
double tmp1,tmp2,tmp3;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* Official PBE correlation code. K. Burke, May 14, 1996. */
|
||||
/* INPUT: RS=SEITZ RADIUS=(3/4pi rho)^(1/3) */
|
||||
/* : ZET=RELATIVE SPIN POLARIZATION = (rhoup-rhodn)/rho */
|
||||
/* : t=ABS(GRAD rho)/(rho*2.*KS*G) -- only needed for PBE */
|
||||
/* : UU=(GRAD rho)*GRAD(ABS(GRAD rho))/(rho**2 * (2*KS*G)**3) */
|
||||
/* : VV=(LAPLACIAN rho)/(rho * (2*KS*G)**2) */
|
||||
/* : WW=(GRAD rho)*(GRAD ZET)/(rho * (2*KS*G)**2 */
|
||||
/* : UU,VV,WW, only needed for PBE potential */
|
||||
/* : lgga=flag to do gga (0=>LSD only) */
|
||||
/* : lpot=flag to do potential (0=>energy only) */
|
||||
/* output: ec=lsd correlation energy from [a] */
|
||||
/* : vcup=lsd up correlation potential */
|
||||
/* : vcdn=lsd dn correlation potential */
|
||||
/* : h=NONLOCAL PART OF CORRELATION ENERGY PER ELECTRON */
|
||||
/* : dvcup=nonlocal correction to vcup */
|
||||
/* : dvcdn=nonlocal correction to vcdn */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* References: */
|
||||
/* [a] J.P.~Perdew, K.~Burke, and M.~Ernzerhof, */
|
||||
/* {\sl Generalized gradient approximation made simple}, sub. */
|
||||
/* to Phys. Rev.Lett. May 1996. */
|
||||
/* [b] J. P. Perdew, K. Burke, and Y. Wang, {\sl Real-space cutoff */
|
||||
/* construction of a generalized gradient approximation: The PW91 */
|
||||
/* density functional}, submitted to Phys. Rev. B, Feb. 1996. */
|
||||
/* [c] J. P. Perdew and Y. Wang, Phys. Rev. B {\bf 45}, 13244 (1992). */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* thrd*=various multiples of 1/3 */
|
||||
/* numbers for use in LSD energy spin-interpolation formula, [c](9). */
|
||||
/* GAM= 2^(4/3)-2 */
|
||||
/* FZZ=f''(0)= 8/(9*GAM) */
|
||||
/* numbers for construction of PBE */
|
||||
/* gamma=(1-log(2))/pi^2 */
|
||||
/* bet=coefficient in gradient expansion for correlation, [a](4). */
|
||||
/* eta=small number to stop d phi/ dzeta from blowing up at */
|
||||
/* |zeta|=1. */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* find LSD energy contributions, using [c](10) and Table I[c]. */
|
||||
/* EU=unpolarized LSD correlation energy */
|
||||
/* EURS=dEU/drs */
|
||||
/* EP=fully polarized LSD correlation energy */
|
||||
/* EPRS=dEP/drs */
|
||||
/* ALFM=-spin stiffness, [c](3). */
|
||||
/* ALFRSM=-dalpha/drs */
|
||||
/* F=spin-scaling factor from [c](9). */
|
||||
/* construct ec, using [c](8) */
|
||||
rtrs = sqrt(rs);
|
||||
gcor2(c_b3, c_b4, c_b5, c_b6, c_b7, c_b8, rtrs, &eu, &eurs);
|
||||
/* Computing 4th power */
|
||||
*ec = eu;
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* LSD potential from [c](A1) */
|
||||
/* ECRS = dEc/drs [c](A2) */
|
||||
/* ECZET=dEc/dzeta [c](A3) */
|
||||
/* FZ = dF/dzeta [c](A4) */
|
||||
/* Computing 3rd power */
|
||||
*vc = eu - rs * eurs / 3.;
|
||||
if (lgga == 0) {
|
||||
return;
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* PBE correlation energy */
|
||||
/* G=phi(zeta), given after [a](3) */
|
||||
/* DELT=bet/gamma */
|
||||
/* B=A of [a](8) */
|
||||
/* Computing 3rd power */
|
||||
pon = -eu / gamma;
|
||||
b = delta / (exp(pon) - 1.);
|
||||
b2 = b * b;
|
||||
t2 = t * t;
|
||||
t4 = t2 * t2;
|
||||
q4 = b * t2 + 1.;
|
||||
q5 = b * t2 + 1. + b2 * t4;
|
||||
*h__ = gamma * log(q4 * delta * t2 / q5 + 1.);
|
||||
if (lpot == 0) {
|
||||
return;
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ENERGY DONE. NOW THE POTENTIAL. */
|
||||
tmp1 = q4/q5;
|
||||
tmp2 = b2*t4*(1.+q4)/(q5*q5);
|
||||
tmp3 = 1./(1.+delta*t2*tmp1);
|
||||
|
||||
*dvc = *h__ - beta*t2 * (7./3.*tmp1 + tmp2*((b+delta)*(*vc-eu)/beta-7./3.)) * tmp3;
|
||||
*dv2rho = 0.5*beta*phi*rs*(tmp1 - tmp2) * tmp3;
|
||||
} /* corpbe_ */
|
||||
|
||||
|
||||
/* ###################################################################### */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* Subroutine */ void corpbespin(double rs, double t, double zet,
|
||||
int lgga,
|
||||
int lpot, double *ec, double *vcup, double *vcdown,
|
||||
double *h__, double *dvcup, double *dvcdown, double *dv2rho)
|
||||
{
|
||||
/* Local variables */
|
||||
double b, b2, q4, t2, q5, t4,
|
||||
ep, eu, pon,
|
||||
alfm, eprs, eurs, rtrs, f, z4, ecrs, fz, eczet, comm, g, g2, g3, dg;
|
||||
double tmp1,tmp2,tmp3,tmp4;
|
||||
double alfrsm;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* Official PBE correlation code. K. Burke, May 14, 1996. */
|
||||
/* INPUT: RS=SEITZ RADIUS=(3/4pi rho)^(1/3) */
|
||||
/* : ZET=RELATIVE SPIN POLARIZATION = (rhoup-rhodn)/rho */
|
||||
/* : t=ABS(GRAD rho)/(rho*2.*KS*G) -- only needed for PBE */
|
||||
/* : UU=(GRAD rho)*GRAD(ABS(GRAD rho))/(rho**2 * (2*KS*G)**3) */
|
||||
/* : VV=(LAPLACIAN rho)/(rho * (2*KS*G)**2) */
|
||||
/* : WW=(GRAD rho)*(GRAD ZET)/(rho * (2*KS*G)**2 */
|
||||
/* : UU,VV,WW, only needed for PBE potential */
|
||||
/* : lgga=flag to do gga (0=>LSD only) */
|
||||
/* : lpot=flag to do potential (0=>energy only) */
|
||||
/* output: ec=lsd correlation energy from [a] */
|
||||
/* : vcup=lsd up correlation potential */
|
||||
/* : vcdn=lsd dn correlation potential */
|
||||
/* : h=NONLOCAL PART OF CORRELATION ENERGY PER ELECTRON */
|
||||
/* : dvcup=nonlocal correction to vcup */
|
||||
/* : dvcdn=nonlocal correction to vcdn */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* References: */
|
||||
/* [a] J.P.~Perdew, K.~Burke, and M.~Ernzerhof, */
|
||||
/* {\sl Generalized gradient approximation made simple}, sub. */
|
||||
/* to Phys. Rev.Lett. May 1996. */
|
||||
/* [b] J. P. Perdew, K. Burke, and Y. Wang, {\sl Real-space cutoff */
|
||||
/* construction of a generalized gradient approximation: The PW91 */
|
||||
/* density functional}, submitted to Phys. Rev. B, Feb. 1996. */
|
||||
/* [c] J. P. Perdew and Y. Wang, Phys. Rev. B {\bf 45}, 13244 (1992). */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* thrd*=various multiples of 1/3 */
|
||||
/* numbers for use in LSD energy spin-interpolation formula, [c](9). */
|
||||
/* GAM= 2^(4/3)-2 */
|
||||
/* FZZ=f''(0)= 8/(9*GAM) */
|
||||
/* numbers for construction of PBE */
|
||||
/* gamma=(1-log(2))/pi^2 */
|
||||
/* bet=coefficient in gradient expansion for correlation, [a](4). */
|
||||
/* eta=small number to stop d phi/ dzeta from blowing up at */
|
||||
/* |zeta|=1. */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* find LSD energy contributions, using [c](10) and Table I[c]. */
|
||||
/* EU=unpolarized LSD correlation energy */
|
||||
/* EURS=dEU/drs */
|
||||
/* EP=fully polarized LSD correlation energy */
|
||||
/* EPRS=dEP/drs */
|
||||
/* ALFM=-spin stiffness, [c](3). */
|
||||
/* ALFRSM=-dalpha/drs */
|
||||
/* F=spin-scaling factor from [c](9). */
|
||||
/* construct ec, using [c](8) */
|
||||
rtrs = sqrt(rs);
|
||||
gcor2(c_b3, c_b4, c_b5, c_b6, c_b7, c_b8, rtrs, &eu, &eurs);
|
||||
gcor2(c_b9, c_b10, c_b11, c_b12, c_b13, c_b14, rtrs, &ep, &eprs);
|
||||
gcor2(c_b15, c_b16, c_b17, c_b18, c_b19, c_b20, rtrs, &alfm, &alfrsm);
|
||||
/* Computing 4th power */
|
||||
z4 = zet*zet*zet*zet;
|
||||
f = (pow(1.+zet,4./3.)+pow(1.-zet,4./3.)-2.)/GAM;
|
||||
*ec = eu*(1.-f*z4) + ep*f*z4 - alfm*f*(1.-z4)/fzz;
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* LSD potential from [c](A1) */
|
||||
/* ECRS = dEc/drs [c](A2) */
|
||||
/* ECZET=dEc/dzeta [c](A3) */
|
||||
/* FZ = dF/dzeta [c](A4) */
|
||||
/* Computing 3rd power */
|
||||
ecrs = eurs*(1.-f*z4)+eprs*f*z4-alfrsm*f*(1.-z4)/fzz;
|
||||
fz = 4./3.*(pow(1.+zet,1./3.)-pow(1.-zet,1./3.))/GAM;
|
||||
eczet = 4.*pow(zet,3)*f*(ep-eu+alfm/fzz)+fz*(z4*ep-z4*eu-(1.-z4)*alfm/fzz);
|
||||
comm = *ec - rs*ecrs/3. - zet*eczet;
|
||||
*vcup = comm + eczet;
|
||||
*vcdown = comm - eczet;
|
||||
if (lgga == 0) {
|
||||
return;
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* PBE correlation energy */
|
||||
/* G=phi(zeta), given after [a](3) */
|
||||
/* DELT=bet/gamma */
|
||||
/* B=A of [a](8) */
|
||||
/* Computing 3rd power */
|
||||
g = 0.5*(pow(1.+zet,2./3.)+pow(1.-zet,2./3.));
|
||||
g2 = g*g;
|
||||
g3 = g2*g;
|
||||
dg = (1./3.) * (pow(1.+zet,-1./3.)-pow(1.-zet,-1./3.));
|
||||
pon = -(*ec) / (g3*gamma);
|
||||
b = delta / (exp(pon) - 1.);
|
||||
t /= g;
|
||||
b2 = b * b;
|
||||
t2 = t * t;
|
||||
t4 = t2 * t2;
|
||||
q4 = b * t2 + 1.;
|
||||
q5 = b * t2 + 1. + b2 * t4;
|
||||
*h__ = g3 * gamma * log(q4 * delta * t2 / q5 + 1.);
|
||||
if (lpot == 0) {
|
||||
return;
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ENERGY DONE. NOW THE POTENTIAL. */
|
||||
tmp1 = q4/q5;
|
||||
tmp2 = b2*t4*(1.+q4)/(q5*q5);
|
||||
tmp3 = 1./(1.+delta*t2*tmp1);
|
||||
tmp4 = dg * (3.*(*h__)/g - beta*t2*g2*(2.*tmp1 - tmp2*(3.*(b+delta)*(*ec)/(beta*g3)+2.))*tmp3);
|
||||
|
||||
*dvcup = *h__ - beta*g3*t2 * (7./3.*tmp1 + tmp2*((b+delta)*(*vcup-(*ec))/(beta*g3)-7./3.)) * tmp3
|
||||
+ tmp4*(1.-zet);
|
||||
*dvcdown = *h__ - beta*g3*t2 * (7./3.*tmp1 + tmp2*((b+delta)*(*vcdown-(*ec))/(beta*g3)-7./3.)) * tmp3
|
||||
- tmp4*(1.+zet);
|
||||
*dv2rho = 0.5*beta*g*phi*rs*(tmp1 - tmp2) * tmp3;
|
||||
} /* corpbe_ */
|
|
@ -1,15 +0,0 @@
|
|||
#ifndef pbecor_h
|
||||
#define pbecor_h 1
|
||||
|
||||
extern void corpbe(double, double,
|
||||
int, int, double *, double *,
|
||||
double *, double *, double *);
|
||||
|
||||
void corpbespin(double, double, double,
|
||||
int, int, double *, double *, double *,
|
||||
double *, double *, double *, double *);
|
||||
|
||||
#define invpi075tothird 0.620350490899400016668006812047780
|
||||
#define r2k 1.56318528359354405905402280568002
|
||||
|
||||
#endif
|
|
@ -9,7 +9,7 @@ case "$arch:$f90_flavor" in
|
|||
*:ifort* )
|
||||
try_cc="icc ecc $try_cc"
|
||||
;;
|
||||
*:pgf90 )
|
||||
*:pgf90 | *:nvfortran )
|
||||
try_cc="pgcc $try_cc"
|
||||
;;
|
||||
cray*:* )
|
||||
|
@ -45,8 +45,9 @@ try_cpp="cpp"
|
|||
|
||||
case "$arch:$cc" in
|
||||
*:pgcc )
|
||||
# Do I need preprocessing here?
|
||||
try_cflags="-fast -Mpreprocess"
|
||||
# Workaround for BEEF compilation with PGI v.19 and previous
|
||||
if test "$f90_flavor" = "pgf90"; then try_cflags="-c11 $try_cflags"; fi
|
||||
;;
|
||||
crayxt*:cc )
|
||||
# Actually we need something like is done for ftn to detect
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
set(sources
|
||||
set(src_upflib
|
||||
atom.f90
|
||||
atomic_number.f90
|
||||
upf_erf.f90
|
||||
|
@ -30,38 +30,46 @@ set(sources
|
|||
xmltools.f90
|
||||
ylmr2.f90)
|
||||
|
||||
qe_add_library(qe_upflib ${sources})
|
||||
add_library(QE::UPF ALIAS qe_upflib)
|
||||
qe_add_library(qe_upflib ${src_upflib})
|
||||
target_link_libraries(qe_upflib
|
||||
PRIVATE
|
||||
QE::MPI_Fortran
|
||||
QE::LAPACK
|
||||
QE::UTILX
|
||||
QE::FOX)
|
||||
qe_mpi_fortran
|
||||
qe_lapack
|
||||
qe_utilx
|
||||
qe_fox)
|
||||
if(QE_ENABLE_CUDA)
|
||||
target_link_libraries(qe_upflib
|
||||
PRIVATE
|
||||
qe_devxlib)
|
||||
endif()
|
||||
|
||||
##############################################################
|
||||
# virtual_v2.x
|
||||
##############################################################
|
||||
set(sources virtual_v2.f90)
|
||||
qe_add_executable(qe_upflib_virtual_v2_exe ${sources})
|
||||
set_target_properties(qe_upflib_virtual_v2_exe PROPERTIES OUTPUT_NAME virtual_v2.x)
|
||||
set(src_virtual_v2_x virtual_v2.f90)
|
||||
qe_add_executable(qe_upflib_virtual_v2_exe ${src_virtual_v2_x})
|
||||
set_target_properties(qe_upflib_virtual_v2_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME virtual_v2.x)
|
||||
target_link_libraries(qe_upflib_virtual_v2_exe
|
||||
PRIVATE
|
||||
QE::UPF)
|
||||
PRIVATE
|
||||
qe_upflib)
|
||||
|
||||
###########################################################
|
||||
# upfconv.x
|
||||
###########################################################
|
||||
set(sources
|
||||
set(src_upfconv_x
|
||||
upfconv.f90
|
||||
casino_pp.f90 )
|
||||
qe_add_executable(qe_upflib_upfconv_exe ${sources})
|
||||
set_target_properties(qe_upflib_upfconv_exe PROPERTIES OUTPUT_NAME upfconv.x)
|
||||
qe_add_executable(qe_upflib_upfconv_exe ${src_upfconv_x})
|
||||
set_target_properties(qe_upflib_upfconv_exe
|
||||
PROPERTIES
|
||||
OUTPUT_NAME upfconv.x)
|
||||
target_link_libraries(qe_upflib_upfconv_exe
|
||||
PRIVATE
|
||||
QE::UPF)
|
||||
PRIVATE
|
||||
qe_upflib)
|
||||
|
||||
############################################################################
|
||||
qe_install_targets(qe_upflib
|
||||
qe_upflib_virtual_v2_exe
|
||||
qe_upflib_upfconv_exe)
|
||||
qe_upflib_virtual_v2_exe
|
||||
qe_upflib_upfconv_exe)
|
||||
|
|
Loading…
Reference in New Issue