2020-10-15 17:11:26 +08:00
cmake_minimum_required ( VERSION 3.14 FATAL_ERROR )
2020-01-10 18:19:06 +08:00
# CMake < 3.13 cannot install external targets:
# https://gitlab.kitware.com/cmake/cmake/merge_requests/2152
# CMake < 3.14 generates incorrect dependency graphs with
# alias targets:
# https://gitlab.kitware.com/cmake/cmake/merge_requests/2521
2021-04-07 03:07:49 +08:00
# CMake < 3.20 does not support NVHPC compiler id
# https://cmake.org/cmake/help/latest/release/3.20.html#compilers
2019-05-25 23:58:54 +08:00
# Policy CMP0048: The project() command manages VERSION variables
set ( CMAKE_POLICY_DEFAULT_CMP0048 NEW )
2019-05-25 04:44:56 +08:00
project ( qe
2021-01-18 22:50:50 +08:00
V E R S I O N 6 . 7 . 1
2019-06-06 20:13:52 +08:00
D E S C R I P T I O N " E S P R E S S O : o p E n - S o u r c e P a c k a g e f o r R e s e a r c h i n E l e c t r o n i c S t r u c t u r e , S i m u l a t i o n , a n d O p t i m i z a t i o n "
L A N G U A G E S F o r t r a n C )
2020-01-10 07:18:09 +08:00
2020-10-01 02:56:02 +08:00
if ( ${ qe_BINARY_DIR } STREQUAL ${ qe_SOURCE_DIR } )
2021-01-18 22:50:50 +08:00
message ( FATAL_ERROR "QE source folder cannot be safely used as a build folder!" )
2020-10-01 02:56:02 +08:00
endif ( )
2020-10-22 01:11:10 +08:00
# CMake < v3.18 cannot discover the ARM Performance Library
2020-11-03 23:46:09 +08:00
if ( CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)" )
2020-10-22 01:11:10 +08:00
if ( CMAKE_VERSION VERSION_LESS 3.18.0 )
2021-02-13 17:07:35 +08:00
message ( "-- CMake versions less than 3.18 cannot automatically discover the ARM Performance Library!" )
2020-10-22 01:11:10 +08:00
endif ( )
endif ( )
2021-01-18 22:50:50 +08:00
##########################################################
2020-10-01 02:42:46 +08:00
# Define the paths for static libraries and executables
2021-01-18 22:50:50 +08:00
##########################################################
set ( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ qe_BINARY_DIR } /lib
C A C H E
P A T H " S i n g l e o u t p u t d i r e c t o r y f o r b u i l d i n g a l l l i b r a r i e s . " )
set ( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ qe_BINARY_DIR } /bin
C A C H E
P A T H " S i n g l e o u t p u t d i r e c t o r y f o r b u i l d i n g a l l e x e c u t a b l e s . " )
2020-10-01 02:42:46 +08:00
2020-01-10 07:18:09 +08:00
###########################################################
# Build helpers
###########################################################
2020-10-07 14:23:44 +08:00
set ( PROJECT_CMAKE ${ CMAKE_CURRENT_SOURCE_DIR } /cmake )
2019-05-27 05:28:14 +08:00
set ( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${ CMAKE_MODULE_PATH } )
2020-07-03 15:54:07 +08:00
include_directories ( "${CMAKE_CURRENT_SOURCE_DIR}/include" )
2020-01-10 07:18:09 +08:00
include ( cmake/qeHelpers.cmake )
2019-05-25 04:44:56 +08:00
###########################################################
# Build Type
2020-10-12 05:12:48 +08:00
# Ensure that a specific, default build type is set when
2019-05-25 04:44:56 +08:00
# none has been explicitly set by the user
###########################################################
2020-03-05 17:37:00 +08:00
qe_ensure_build_type ( "Release" )
2019-05-25 04:44:56 +08:00
2019-05-25 05:48:35 +08:00
###########################################################
2020-01-09 20:10:56 +08:00
# Modules
2019-05-25 05:48:35 +08:00
###########################################################
2020-01-09 07:49:03 +08:00
include ( CheckFunctionExists )
2019-05-25 17:09:27 +08:00
# Must use GNUInstallDirs to install libraries into correct
# locations on all platforms.
include ( GNUInstallDirs )
2019-06-07 20:29:05 +08:00
###########################################################
# Build Options
###########################################################
2021-01-18 22:50:50 +08:00
option ( QE_ENABLE_CUDA
" e n a b l e C U D A a c c e l e r a t i o n o n N V I D I A G P U s " O F F )
if ( QE_ENABLE_CUDA )
option ( QE_ENABLE_LAXLIB_CUSOLVER
" e n a b l e C U D A s o l v e r a c c e l e r a t i o n f o r L A X L i b o n N V I D I A G P U s " O N )
# OpenMP enable by default if CUDA is enable
option ( QE_ENABLE_OPENMP
" e n a b l e d i s t r i b u t e d e x e c u t i o n s u p p o r t v i a O p e n M P " O N )
else ( )
option ( QE_ENABLE_OPENMP
" e n a b l e d i s t r i b u t e d e x e c u t i o n s u p p o r t v i a O p e n M P " O F F )
endif ( )
2019-06-07 20:29:05 +08:00
option ( QE_ENABLE_MPI
" e n a b l e d i s t r i b u t e d e x e c u t i o n s u p p o r t v i a M P I " O N )
2021-06-22 13:39:47 +08:00
option ( QE_ENABLE_MPI_GPU_AWARE
" e n a b l e G P U a w a r e M P I o p e r a t i o n s " O F F )
2021-01-18 22:50:50 +08:00
option ( QE_ENABLE_TEST
2021-05-23 23:24:33 +08:00
" e n a b l e u n i t a n d s y s t e m t e s t s " O N )
2019-05-25 04:44:56 +08:00
option ( QE_ENABLE_TRACE
" e n a b l e e x e c u t i o n t r a c i n g o u t p u t " O F F )
2021-01-27 06:23:37 +08:00
option ( QE_ENABLE_PROFILE_NVTX
2021-01-29 00:40:13 +08:00
" e n a b l e e x e c u t i o n o f N V i d i a p r o f i l e r p l u g i n " O F F )
2019-05-25 04:44:56 +08:00
option ( QE_ENABLE_MPI_INPLACE
" e n a b l e i n p l a c e M P I calls ( ignored when QE_ENABLE_MPI=OFF ) " O F F )
2019-05-27 04:26:09 +08:00
option ( QE_ENABLE_MPI_MODULE
" u s e M P I v i a F o r t r a n m o d u l e i n s t e a d o f m p i f . h h e a d e r i n c l u s i o n " O F F )
2019-05-25 04:44:56 +08:00
option ( QE_ENABLE_BARRIER
" e n a b l e g l o b a l s y n c h r o n i z a t i o n b e t w e e n e x e c u t i o n u n i t s " O F F )
2020-10-25 06:21:09 +08:00
option ( QE_LAPACK_INTERNAL
" e n a b l e i n t e r n a l r e f e r e n c e L A P A C K " O F F )
2020-02-13 21:50:01 +08:00
option ( QE_ENABLE_SCALAPACK
" e n a b l e S C A L A P A C K e x e c u t i o n u n i t s " O F F )
2020-02-17 19:10:24 +08:00
option ( QE_ENABLE_ELPA
" e n a b l e E L P A e x e c u t i o n u n i t s " O F F )
2021-02-16 23:04:23 +08:00
option ( QE_ENABLE_LIBXC
" e n a b l e L I B X C e x e c u t i o n u n i t s " O F F )
2020-02-17 22:58:41 +08:00
option ( QE_ENABLE_HDF5
" e n a b l e H D F 5 d a t a c o l l e c t i o n " O F F )
2020-10-12 05:12:48 +08:00
option ( QE_ENABLE_DOC
2020-03-04 21:19:12 +08:00
" e n a b l e d o c u m e n t a t i o n b u i l d i n g " O F F )
2020-11-22 19:25:19 +08:00
set ( QE_FFTW_VENDOR "AUTO" CACHE
S T R I N G " s e l e c t a s p e c i f i c F F T W l i b r a r y [ I n t e l _ D F T I , I n t e l _ F F T W 3 , A r m P L , I B M E S S L , F F T W 3 , I n t e r n a l ] " )
2021-05-23 05:27:03 +08:00
set ( QE_ENABLE_SANITIZER "none" CACHE STRING "none,asan,ubsan,tsan,msan" )
2019-05-25 04:44:56 +08:00
2020-03-04 18:04:28 +08:00
# TODO change all ifdefs throughout code base to match
# cmake options
# TODO symbols beginning with '__' followed by a capital
# character are reserved for standard library use (at
# least in C, not sure about Fortran), change all feature
# macros to avoid weird behaviors
2020-01-09 07:49:03 +08:00
# Disable all configuration headers used to be generated
# by configure (see <qe>/include/)
2020-03-04 18:04:28 +08:00
qe_add_global_compile_definitions ( QE_NO_CONFIG_H )
2020-01-09 07:49:03 +08:00
2021-01-18 22:50:50 +08:00
if ( QE_ENABLE_CUDA )
qe_add_global_compile_definitions ( __CUDA )
endif ( )
2019-05-25 04:44:56 +08:00
if ( QE_ENABLE_TRACE )
2020-03-04 18:04:28 +08:00
qe_add_global_compile_definitions ( __TRACE )
2019-05-25 04:44:56 +08:00
endif ( )
2021-01-27 06:23:37 +08:00
if ( QE_ENABLE_PROFILE_NVTX )
qe_add_global_compile_definitions ( __PROFILE_NVTX )
2021-01-25 21:58:53 +08:00
endif ( )
2019-05-25 04:44:56 +08:00
if ( QE_ENABLE_MPI_INPLACE )
2020-03-04 18:04:28 +08:00
qe_add_global_compile_definitions ( __USE_INPLACE_MPI )
2019-05-27 04:26:09 +08:00
endif ( )
2019-05-27 04:26:09 +08:00
if ( QE_ENABLE_MPI_MODULE )
2020-03-04 18:04:28 +08:00
qe_add_global_compile_definitions ( __MPI_MODULE )
2019-05-27 04:26:09 +08:00
endif ( )
2019-05-25 04:44:56 +08:00
if ( QE_ENABLE_BARRIER )
2020-03-04 18:04:28 +08:00
qe_add_global_compile_definitions ( __USE_BARRIER )
2020-01-09 07:49:03 +08:00
endif ( )
2020-02-17 22:58:41 +08:00
if ( QE_ENABLE_MPI )
2020-02-12 23:43:45 +08:00
# OMPI_SKIP_MPICXX: skip CXX APIs on openmpi, cause trouble to C APIs
2020-03-04 18:04:28 +08:00
qe_add_global_compile_definitions ( __MPI OMPI_SKIP_MPICXX )
2021-06-22 13:39:47 +08:00
if ( QE_ENABLE_MPI_GPU_AWARE )
qe_add_global_compile_definitions ( __GPU_MPI )
endif ( )
2020-02-12 23:43:45 +08:00
endif ( )
2020-02-17 22:58:41 +08:00
if ( QE_ENABLE_SCALAPACK )
2020-03-04 18:04:28 +08:00
qe_add_global_compile_definitions ( __SCALAPACK )
2020-02-13 21:50:01 +08:00
endif ( )
2020-02-17 22:58:41 +08:00
if ( QE_ENABLE_HDF5 )
2020-03-04 18:04:28 +08:00
qe_add_global_compile_definitions ( __HDF5 )
2020-02-17 22:58:41 +08:00
endif ( )
2020-01-09 07:49:03 +08:00
2020-01-09 07:49:03 +08:00
# Feature checks
check_function_exists ( mallinfo HAVE_MALLINFO )
if ( HAVE_MALLINFO )
2020-03-04 18:04:28 +08:00
qe_add_global_compile_definitions ( HAVE_MALLINFO )
2020-01-09 07:49:03 +08:00
endif ( )
2020-02-17 19:10:24 +08:00
# Check options consistency
2020-03-04 18:04:28 +08:00
if ( QE_ENABLE_ELPA AND NOT QE_ENABLE_SCALAPACK )
message ( FATAL_ERROR "ELPA requires SCALAPACK support, enable it with '-DQE_ENABLE_SCALAPACK=ON' or disable ELPA with '-DQE_ENABLE_ELPA=OFF'" )
2020-02-17 19:10:24 +08:00
endif ( )
2020-03-04 18:04:28 +08:00
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'" )
2020-02-17 22:58:41 +08:00
endif ( )
2021-04-07 03:07:49 +08:00
if ( QE_ENABLE_CUDA AND NOT ( CMAKE_Fortran_COMPILER_ID MATCHES "PGI" OR CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC" ) )
2021-01-18 22:50:50 +08:00
message ( FATAL_ERROR "PGI compiler is mandatory when CUDA is enable due QE is based on CUDA Fortran language" )
endif ( )
2021-06-22 13:39:47 +08:00
if ( QE_ENABLE_MPI_GPU_AWARE AND NOT ( QE_ENABLE_CUDA AND QE_ENABLE_MPI ) )
message ( FATAL_ERROR "GPU aware MPI requires both MPI and CUDA features enabled" )
endif ( )
2021-01-18 22:50:50 +08:00
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 ( )
2020-09-29 01:55:59 +08:00
# 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()
2020-02-17 19:10:24 +08:00
2021-05-23 05:51:16 +08:00
# Add optional sanitizers ASAN, UBSAN, MSAN
set ( VALID_SANITIZERS "none" "asan" "ubsan" "tsan" "msan" )
# Perform sanitizer option check, only works in debug mode
if ( NOT QE_ENABLE_SANITIZER IN_LIST VALID_SANITIZERS )
message ( FATAL_ERROR "Invalid -DQE_ENABLE_SANITIZER=${QE_ENABLE_SANITIZER}, value must be one of ${VALID_SANITIZERS}" )
else ( )
message ( STATUS "Enable sanitizer QE_ENABLE_SANITIZER=${QE_ENABLE_SANITIZER}" )
endif ( )
# only GNU works right now
if ( NOT QE_ENABLE_SANITIZER STREQUAL "none" AND NOT CMAKE_Fortran_COMPILER_ID MATCHES "GNU" )
message ( FATAL_ERROR "-DQE_ENABLE_SANITIZER=${QE_ENABLE_SANITIZER} only works with the GNU compiler" )
endif ( )
2020-10-19 01:05:09 +08:00
###########################################################
2020-10-19 01:36:50 +08:00
# language standard requirements
2020-10-19 01:05:09 +08:00
###########################################################
2020-10-19 01:36:50 +08:00
# TODO need to require all compilers using the same one
2021-04-07 03:07:49 +08:00
if ( CMAKE_Fortran_COMPILER_ID MATCHES "PGI" OR CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC" )
2021-01-18 22:50:50 +08:00
set ( CMAKE_C_STANDARD 11 )
set ( CMAKE_C_STANDARD_REQUIRED ON )
set ( CMAKE_C_EXTENSIONS OFF )
2020-10-19 01:36:50 +08:00
endif ( )
2020-10-19 01:05:09 +08:00
2020-10-19 01:36:50 +08:00
############################################################
## Compiler vendor specific options
############################################################
if ( CMAKE_Fortran_COMPILER_ID MATCHES "GNU" )
include ( ${ PROJECT_CMAKE } /GNUFortranCompiler.cmake )
2021-04-07 03:07:49 +08:00
elseif ( CMAKE_Fortran_COMPILER_ID MATCHES "PGI" OR CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC" )
2020-10-19 01:36:50 +08:00
include ( ${ PROJECT_CMAKE } /NVFortranCompiler.cmake )
elseif ( CMAKE_Fortran_COMPILER_ID MATCHES "XL" )
include ( ${ PROJECT_CMAKE } /IBMFortranCompiler.cmake )
endif ( )
2019-05-25 04:44:56 +08:00
2021-01-18 22:50:50 +08:00
###########################################################
# CUDA
###########################################################
2021-01-29 00:40:13 +08:00
if ( QE_ENABLE_CUDA OR QE_ENABLE_PROFILE_NVTX )
2021-04-07 03:07:49 +08:00
if ( CMAKE_Fortran_COMPILER_ID MATCHES "PGI" OR CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC" )
2021-02-01 07:25:43 +08:00
add_library ( CUDA::cufft INTERFACE IMPORTED )
2021-04-10 20:20:16 +08:00
set_target_properties ( CUDA::cufft PROPERTIES INTERFACE_LINK_LIBRARIES "${CUDA_FLAG}lib=cufft" )
2021-02-01 07:25:43 +08:00
add_library ( CUDA::cublas INTERFACE IMPORTED )
2021-04-10 20:20:16 +08:00
set_target_properties ( CUDA::cublas PROPERTIES INTERFACE_LINK_LIBRARIES "${CUDA_FLAG}lib=cublas" )
2021-02-01 07:25:43 +08:00
add_library ( CUDA::cusolver INTERFACE IMPORTED )
2021-04-10 20:20:16 +08:00
set_target_properties ( CUDA::cusolver PROPERTIES INTERFACE_LINK_LIBRARIES "${CUDA_FLAG}lib=cusolver" )
2021-06-18 05:28:56 +08:00
add_library ( CUDA::curand INTERFACE IMPORTED )
set_target_properties ( CUDA::curand PROPERTIES INTERFACE_LINK_LIBRARIES "${CUDA_FLAG}lib=curand" )
2021-02-01 07:25:43 +08:00
else ( )
find_package ( CUDAToolkit REQUIRED )
endif ( )
2021-01-29 00:40:13 +08:00
endif ( QE_ENABLE_CUDA OR QE_ENABLE_PROFILE_NVTX )
2021-01-18 22:50:50 +08:00
2020-02-12 22:36:53 +08:00
###########################################################
# OpenMP
# The following targets will be defined:
add_library ( qe_openmp_fortran INTERFACE )
add_library ( qe_openmp_c INTERFACE )
qe_install_targets ( qe_openmp_fortran qe_openmp_c )
###########################################################
if ( QE_ENABLE_OPENMP )
find_package ( OpenMP REQUIRED Fortran C )
2020-10-12 05:12:48 +08:00
target_link_libraries ( qe_openmp_fortran
2020-02-12 23:43:45 +08:00
I N T E R F A C E O p e n M P : : O p e n M P _ F o r t r a n )
2020-10-12 05:12:48 +08:00
target_link_libraries ( qe_openmp_c
2020-02-12 23:43:45 +08:00
I N T E R F A C E O p e n M P : : O p e n M P _ C )
2020-02-12 22:36:53 +08:00
endif ( QE_ENABLE_OPENMP )
2020-10-19 01:36:50 +08:00
###########################################################
# MPI
# The following targets will be defined:
add_library ( qe_mpi_fortran INTERFACE )
qe_install_targets ( qe_mpi_fortran )
###########################################################
if ( QE_ENABLE_MPI )
find_package ( MPI REQUIRED Fortran )
target_link_libraries ( qe_mpi_fortran
I N T E R F A C E M P I : : M P I _ F o r t r a n )
2021-05-24 11:30:46 +08:00
message ( STATUS "MPI settings used by CTest" )
message ( " MPIEXEC_EXECUTABLE : ${MPIEXEC_EXECUTABLE}" )
message ( " MPIEXEC_NUMPROC_FLAG : ${MPIEXEC_NUMPROC_FLAG}" )
message ( " MPIEXEC_PREFLAGS : ${MPIEXEC_PREFLAGS}" )
string ( REPLACE ";" " " MPIEXEC_PREFLAGS_PRINT "${MPIEXEC_PREFLAGS}" )
message ( " Tests run as : ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} <NUM_PROCS> ${MPIEXEC_PREFLAGS_PRINT} <EXECUTABLE>" )
2020-10-19 01:36:50 +08:00
endif ( QE_ENABLE_MPI )
2020-10-07 14:23:44 +08:00
2020-02-13 21:48:34 +08:00
###########################################################
2021-05-18 14:16:57 +08:00
# Git
2021-05-18 12:30:03 +08:00
###########################################################
find_package ( Git 2.13 REQUIRED )
if ( EXISTS ${ qe_SOURCE_DIR } /.git )
2021-05-24 11:30:46 +08:00
message ( STATUS "Source files are cloned from a git repository." )
2021-05-18 12:30:03 +08:00
set ( IS_GIT_PROJECT 1 )
else ( )
2021-05-24 11:30:46 +08:00
message ( STATUS "Source files are not cloned from a git repository." )
2021-05-18 12:30:03 +08:00
endif ( )
2020-02-13 21:48:34 +08:00
###########################################################
2020-10-11 11:10:17 +08:00
# Lapack
# The following targets will be defined:
add_library ( qe_lapack INTERFACE )
qe_install_targets ( qe_lapack )
2021-01-18 22:50:50 +08:00
###########################################################
2020-10-25 06:21:09 +08:00
if ( NOT QE_LAPACK_INTERNAL )
2020-11-03 19:29:26 +08:00
if ( NOT BLA_VENDOR )
2020-11-03 23:46:09 +08:00
if ( CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64.*" )
2020-11-03 19:29:26 +08:00
message ( STATUS "Trying to find LAPACK from Intel MKL" )
if ( QE_ENABLE_OPENMP )
SET ( BLA_VENDOR Intel10_64lp )
else ( )
SET ( BLA_VENDOR Intel10_64lp_seq )
endif ( )
find_package ( LAPACK )
2020-11-03 23:46:09 +08:00
elseif ( CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*" )
2020-11-03 19:45:47 +08:00
message ( STATUS "Trying to find LAPACK from Intel MKL - 32bit" )
2020-11-03 19:43:51 +08:00
SET ( BLA_VENDOR Intel10_32 )
find_package ( LAPACK )
2020-11-03 23:46:09 +08:00
elseif ( CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)" )
2020-11-03 19:29:26 +08:00
message ( STATUS "Trying to find LAPACK from ARM Performance Library" )
if ( QE_ENABLE_OPENMP )
SET ( BLA_VENDOR Arm_mp )
else ( )
SET ( BLA_VENDOR Arm )
endif ( )
find_package ( LAPACK )
endif ( )
if ( NOT LAPACK_FOUND )
message ( STATUS "Trying to find alternative LAPACK libraries" )
SET ( BLA_VENDOR All )
find_package ( LAPACK )
endif ( )
else ( )
find_package ( LAPACK )
endif ( )
2020-10-25 06:21:09 +08:00
if ( LAPACK_FOUND )
list ( APPEND _lapack_libs
$ { B L A S _ L I B R A R I E S }
$ { B L A S _ L I N K E R _ F L A G S }
$ { L A P A C K _ L I B R A R I E S }
$ { L A P A C K _ L I N K E R _ F L A G S } )
list ( REMOVE_DUPLICATES "${_lapack_libs}" )
message ( STATUS "Found LAPACK: ${_lapack_libs}" )
target_link_libraries ( qe_lapack INTERFACE ${ _lapack_libs } )
2021-05-15 12:29:53 +08:00
set ( CMAKE_REQUIRED_LIBRARIES ${ _lapack_libs } )
check_fortran_function_exists ( zhpev ZHPEV_FOUND )
if ( NOT ZHPEV_FOUND )
unset ( ZHPEV_FOUND CACHE )
message ( FATAL_ERROR "Incomplete LAPACK! function zhpev not found!" )
endif ( )
2020-10-25 06:21:09 +08:00
else ( )
message ( FATAL_ERROR "Failed to find a complete set of external BLAS/LAPACK library by FindLAPACK. "
2020-11-17 00:43:52 +08:00
" V a r i a b l e s c o n t r o l l i n g F i n d L A P A C K c a n b e f o u n d a t C M a k e o n l i n e d o c u m e n t a t i o n . "
2020-10-25 06:21:09 +08:00
" A l t e r n a t i v e l y , ' - D Q E _ L A P A C K _ I N T E R N A L = O N ' m a y b e u s e d t o e n a b l e r e f e r e n c e L A P A C K "
" a t a p e r f o r m a n c e l o s s c o m p a r e d t o o p t i m i z e d l i b r a r i e s . " )
endif ( )
else ( )
message ( WARNING "Internal reference LAPACK is enabled! It is less performant than vendor optimized libraries." )
2020-10-21 19:46:37 +08:00
if ( CMAKE_Fortran_COMPILER_ID MATCHES "XL" )
message ( FATAL_ERROR "IBM XL compilers cannot build internal LAPACK with QE "
" d u e t o t h e c o n f l i c t i n f l a g s f o r f r e e v s f i x e d f o r m a t . "
2020-10-25 06:21:09 +08:00
" P l e a s e u s e a n o p t i m i z e d L A P A C K o r b u i l d i n t e r n a l r e f e r e n c e L A P A C K s e p a r a t e l y . " )
2020-10-11 11:10:17 +08:00
endif ( )
2021-01-18 22:50:50 +08:00
message ( STATUS "Installing LAPACK via submodule" )
2020-10-21 19:46:37 +08:00
qe_git_submodule_update ( external/lapack )
add_subdirectory ( external/lapack EXCLUDE_FROM_ALL )
target_link_libraries ( qe_lapack INTERFACE lapack )
qe_fix_fortran_modules ( lapack )
qe_install_targets ( lapack )
2020-10-11 11:10:17 +08:00
endif ( )
2020-03-03 01:08:32 +08:00
2020-10-11 11:10:17 +08:00
###########################################################
2020-02-13 21:50:01 +08:00
# SCALAPACK
# The following targets will be defined:
add_library ( qe_scalapack INTERFACE )
qe_install_targets ( qe_scalapack )
###########################################################
if ( QE_ENABLE_SCALAPACK )
2020-02-19 22:29:32 +08:00
find_package ( SCALAPACK REQUIRED QUIET )
message ( STATUS "Found SCALAPACK: ${SCALAPACK_LIBRARIES};${SCALAPACK_LINKER_FLAGS}" )
2020-10-11 11:10:17 +08:00
target_link_libraries ( qe_scalapack
I N T E R F A C E
2020-02-13 21:50:01 +08:00
$ { S C A L A P A C K _ L I B R A R I E S }
2020-02-19 22:29:32 +08:00
$ { S C A L A P A C K _ L I N K E R _ F L A G S } )
2020-02-13 21:50:01 +08:00
endif ( QE_ENABLE_SCALAPACK )
2020-02-17 19:10:24 +08:00
###########################################################
# ELPA
# The following targets will be defined:
add_library ( qe_elpa INTERFACE )
qe_install_targets ( qe_elpa )
###########################################################
if ( QE_ENABLE_ELPA )
find_package ( ELPA REQUIRED )
2020-10-11 15:16:46 +08:00
2020-02-17 19:10:24 +08:00
# Check if ELPA version is compatible with QE
2021-06-13 11:53:01 +08:00
if ( ELPA_VERSION VERSION_GREATER_EQUAL "2018.11" )
2020-10-11 23:23:32 +08:00
set ( QE_ELPA_DEFINITIONS __ELPA )
2021-06-13 11:53:01 +08:00
elseif ( ELPA_VERSION VERSION_GREATER_EQUAL "2016.11" )
2020-10-11 23:23:32 +08:00
set ( QE_ELPA_DEFINITIONS __ELPA_2016 )
2021-06-13 11:53:01 +08:00
elseif ( ELPA_VERSION VERSION_GREATER_EQUAL "2015" )
2020-10-11 23:23:32 +08:00
set ( QE_ELPA_DEFINITIONS __ELPA_2015 )
2020-02-17 19:10:24 +08:00
else ( )
2021-06-13 11:53:01 +08:00
message ( FATAL_ERROR "ELPA verion ${ELPA_VERSION} is not supported." )
2020-02-17 19:10:24 +08:00
endif ( )
2020-10-11 23:23:32 +08:00
message ( STATUS "Add ELPA flag : ${QE_ELPA_DEFINITIONS}" )
qe_add_global_compile_definitions ( ${ QE_ELPA_DEFINITIONS } )
2020-02-17 19:10:24 +08:00
# Add link libraries and include directories
2020-10-12 05:12:48 +08:00
target_link_libraries ( qe_elpa
2020-02-17 19:10:24 +08:00
I N T E R F A C E
$ { E L P A _ L I B R A R I E S }
$ { E L P A _ L I B R A R I E S _ D E P }
2021-06-13 11:53:01 +08:00
$ { E L P A _ L I N K E R _ F L A G S }
q e _ s c a l a p a c k )
2020-02-17 19:10:24 +08:00
target_include_directories ( qe_elpa
I N T E R F A C E
2021-06-13 11:53:01 +08:00
$ { E L P A _ F o r t r a n _ M O D S _ D I R }
2020-02-17 19:10:24 +08:00
$ { E L P A _ I N C L U D E _ D I R S }
2020-03-05 17:37:23 +08:00
$ { E L P A _ I N C L U D E _ D I R S _ D E P } )
2020-02-17 19:10:24 +08:00
endif ( QE_ENABLE_ELPA )
2021-02-16 23:04:23 +08:00
###########################################################
# LIBXC
## The following targets will be defined:
2021-02-17 23:06:18 +08:00
add_library ( qe_external_libxc INTERFACE )
qe_install_targets ( qe_external_libxc )
2021-02-16 23:04:23 +08:00
###########################################################
if ( QE_ENABLE_LIBXC )
2021-02-17 23:06:18 +08:00
target_compile_definitions ( qe_external_libxc INTERFACE "__LIBXC" )
2021-02-16 23:04:23 +08:00
2021-03-06 00:39:55 +08:00
find_package ( Libxc 5.1.2 COMPONENTS Fortran )
if ( NOT Libxc_FOUND )
2021-03-06 01:10:09 +08:00
message ( STATUS "Libxc searching failed in CMake Module mode, trying Config mode" )
2021-03-06 00:39:55 +08:00
find_package ( Libxc 5.1.2 COMPONENTS Fortran CONFIG )
endif ( )
2021-03-04 07:20:10 +08:00
2021-02-16 23:04:23 +08:00
if ( ${ Libxc_FOUND } )
if ( ${ Libxc_VERSION } VERSION_GREATER_EQUAL "5.1.2" )
2021-02-17 23:06:18 +08:00
message ( STATUS "Libxc version ${Libxc_VERSION} found." )
2021-02-16 23:04:23 +08:00
else ( )
2021-02-21 05:52:26 +08:00
message ( FATAL_ERROR "Libxc version ${Libxc_VERSION} found. "
" C M a k e c o m p i l a t i o n o f Q E t e s t e d f o r l i b x c v 5 . 1 . 2 o r l a t e r o n l y . " )
2021-02-16 23:04:23 +08:00
endif ( )
2021-02-17 23:06:18 +08:00
target_link_libraries ( qe_external_libxc INTERFACE Libxc::xcf03 )
target_include_directories ( qe_external_libxc INTERFACE ${ Libxc_INCLUDE_DIR } )
target_compile_definitions ( qe_external_libxc INTERFACE ${ Libxc_DEFINITIONS } )
2021-02-16 23:04:23 +08:00
else ( )
2021-02-21 05:52:26 +08:00
message ( FATAL_ERROR "Failed to find Libxc package (>=5.1.2) with Fortran enabled." )
2021-02-16 23:04:23 +08:00
endif ( )
endif ( QE_ENABLE_LIBXC )
2020-02-17 22:58:41 +08:00
###########################################################
# HDF5
# The following targets will be defined:
add_library ( qe_hdf5_fortran INTERFACE )
add_library ( qe_hdf5_c INTERFACE )
qe_install_targets ( qe_hdf5_fortran qe_hdf5_c )
###########################################################
2021-01-27 06:23:37 +08:00
# PROFILERS LIBRARIES
# the target for profiler libray will be defined if
# some profiler is enabled
add_library ( qe_ext_prof_tool INTERFACE )
qe_install_targets ( qe_ext_prof_tool )
###########################################################
# this should work with nvfortran
if ( QE_ENABLE_PROFILE_NVTX )
target_link_libraries ( qe_ext_prof_tool
I N T E R F A C E
2021-01-28 19:15:14 +08:00
C U D A : : n v T o o l s E x t )
2021-01-27 06:23:37 +08:00
endif ( QE_ENABLE_PROFILE_NVTX )
###########################################################
2020-02-17 22:58:41 +08:00
if ( QE_ENABLE_HDF5 )
2020-10-12 05:12:48 +08:00
if ( QE_ENABLE_MPI )
option ( HDF5_PREFER_PARALLEL "Prefer parallel HDF5" ON )
endif ( )
2020-02-17 22:58:41 +08:00
find_package ( HDF5 REQUIRED Fortran C )
2020-10-12 05:34:01 +08:00
if ( NOT HDF5_FOUND )
2020-02-17 22:58:41 +08:00
message ( FATAL_ERROR "HDF5 Fortran interface has not been found!" )
endif ( )
2020-10-12 05:12:48 +08:00
2020-09-29 01:55:59 +08:00
if ( NOT HDF5_IS_PARALLEL OR NOT QE_ENABLE_MPI )
2020-10-12 05:12:48 +08:00
message ( STATUS "Serial HDF5 enabled!" )
qe_add_global_compile_definitions ( __HDF5_SERIAL )
else ( )
message ( STATUS "Parallel HDF5 enabled!" )
endif ( )
2020-02-17 22:58:41 +08:00
2020-10-12 05:12:48 +08:00
target_link_libraries ( qe_hdf5_fortran
I N T E R F A C E
2020-02-17 22:58:41 +08:00
$ { H D F 5 _ F o r t r a n _ L I B R A R I E S }
$ { H D F 5 _ F o r t r a n _ H L _ L I B R A R I E S } )
target_include_directories ( qe_hdf5_fortran
I N T E R F A C E
$ { H D F 5 _ F o r t r a n _ I N C L U D E _ D I R S } )
target_compile_definitions ( qe_hdf5_fortran
I N T E R F A C E
$ { H D F 5 _ F o r t r a n _ D E F I N I T I O N S } )
2020-10-12 05:12:48 +08:00
target_link_libraries ( qe_hdf5_c
I N T E R F A C E
2020-02-17 22:58:41 +08:00
$ { H D F 5 _ C _ L I B R A R I E S }
$ { H D F 5 _ C _ H L _ L I B R A R I E S } )
target_include_directories ( qe_hdf5_c
I N T E R F A C E
$ { H D F 5 _ C _ I N C L U D E _ D I R S } )
target_compile_definitions ( qe_hdf5_c
I N T E R F A C E
$ { H D F 5 _ C _ D E F I N I T I O N S } )
endif ( QE_ENABLE_HDF5 )
2019-06-07 20:29:05 +08:00
###########################################################
# Tests
# Any executable target marked as test runner via
# 'add_test()' will be run by the 'test' make target
###########################################################
if ( QE_ENABLE_TEST )
2021-05-23 22:58:06 +08:00
include ( cmake/unit_test.cmake )
2019-06-07 20:29:05 +08:00
enable_testing ( )
endif ( QE_ENABLE_TEST )
2019-05-25 04:44:56 +08:00
###########################################################
2019-06-07 17:04:07 +08:00
# Components
2019-05-25 04:44:56 +08:00
###########################################################
2020-01-09 23:50:49 +08:00
add_subdirectory ( external )
2020-01-09 07:18:27 +08:00
add_subdirectory ( clib )
2020-01-09 01:34:41 +08:00
add_subdirectory ( FFTXlib )
2019-06-07 17:04:07 +08:00
add_subdirectory ( UtilXlib )
2020-01-09 01:34:41 +08:00
add_subdirectory ( Modules )
2019-06-07 17:04:07 +08:00
add_subdirectory ( LAXlib )
2020-10-14 22:49:46 +08:00
add_subdirectory ( XClib )
2020-01-09 16:49:04 +08:00
add_subdirectory ( KS_Solvers )
2020-01-09 06:51:01 +08:00
add_subdirectory ( dft-d3 )
2020-01-09 01:34:41 +08:00
add_subdirectory ( PW )
2020-01-09 16:49:12 +08:00
add_subdirectory ( CPV )
2020-02-04 23:53:08 +08:00
add_subdirectory ( atomic )
2020-07-03 15:54:07 +08:00
add_subdirectory ( upflib )
2020-02-05 00:47:38 +08:00
add_subdirectory ( COUPLE )
add_subdirectory ( LR_Modules )
2020-02-10 17:49:02 +08:00
add_subdirectory ( PHonon )
add_subdirectory ( PP )
add_subdirectory ( EPW )
add_subdirectory ( GWW )
add_subdirectory ( HP )
add_subdirectory ( NEB )
add_subdirectory ( PlotPhon )
add_subdirectory ( PWCOND )
add_subdirectory ( QHA )
add_subdirectory ( TDDFPT )
add_subdirectory ( XSpectra )
2021-06-01 23:09:27 +08:00
add_subdirectory ( QEHeat )
2020-03-04 01:06:49 +08:00
if ( QE_ENABLE_DOC )
add_subdirectory ( Doc )
endif ( )
2019-05-25 17:09:27 +08:00
2021-01-24 11:05:44 +08:00
###########################################################
# Tests
###########################################################
2021-01-24 13:42:39 +08:00
if ( QE_ENABLE_TEST )
add_subdirectory ( test-suite )
endif ( )
2021-01-24 11:05:44 +08:00
2020-03-05 00:13:11 +08:00
###########################################################
# Pkg-config
###########################################################
configure_file (
2020-03-06 23:34:46 +08:00
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e / q u a n t u m _ e s p r e s s o . p c . i n
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / q u a n t u m _ e s p r e s s o . p c
@ O N L Y )
install ( FILES ${ CMAKE_CURRENT_BINARY_DIR } /quantum_espresso.pc
D E S T I N A T I O N $ { C M A K E _ I N S T A L L _ L I B D I R } / p k g c o n f i g )
2020-03-05 00:13:11 +08:00
2019-06-07 20:29:05 +08:00
###########################################################
2019-06-07 17:04:07 +08:00
# Exports
2019-06-07 20:29:05 +08:00
###########################################################
2020-01-09 20:10:56 +08:00
install ( EXPORT qeTargets
F I L E q e T a r g e t s . c m a k e
D E S T I N A T I O N $ { C M A K E _ I N S T A L L _ L I B D I R } / c m a k e / q e )
include ( CMakePackageConfigHelpers )
write_basic_package_version_file (
q e C o n f i g V e r s i o n . c m a k e
V E R S I O N $ { P A C K A G E _ V E R S I O N }
C O M P A T I B I L I T Y A n y N e w e r V e r s i o n )
2020-10-12 05:12:48 +08:00
configure_file ( cmake/qeConfig.cmake.in
2020-01-09 20:10:56 +08:00
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / q e C o n f i g . c m a k e @ O N L Y )
2020-10-12 05:12:48 +08:00
install ( FILES
2020-01-09 20:10:56 +08:00
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / q e C o n f i g V e r s i o n . c m a k e
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / q e C o n f i g . c m a k e
D E S T I N A T I O N
$ { C M A K E _ I N S T A L L _ L I B D I R } / c m a k e / q e )
2019-06-07 20:29:05 +08:00
###########################################################
# Dependency graph generation
# Defines the custom target 'depgraph'
###########################################################
configure_file ( ${ CMAKE_CURRENT_SOURCE_DIR } /cmake/CMakeGraphVizOptions.cmake
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / C M a k e G r a p h V i z O p t i o n s . c m a k e C O P Y O N L Y )
add_custom_target ( depgraph
" $ { C M A K E _ C O M M A N D } " " - - g r a p h v i z = d e p g r a p h " .
2020-01-09 06:40:15 +08:00
W O R K I N G _ D I R E C T O R Y " $ { C M A K E _ B I N A R Y _ D I R } " )
2020-02-11 02:01:01 +08:00
###########################################################
# Custom make targets
###########################################################
2020-10-12 05:12:48 +08:00
add_custom_target ( pw
D E P E N D S
2020-02-11 02:01:01 +08:00
q e _ p w _ e x e
q e _ p w _ t o o l s _ i b r a v 2 c e l l _ e x e
q e _ p w _ t o o l s _ c e l l 2 i b r a v _ e x e
q e _ p w _ t o o l s _ e v _ e x e
q e _ p w _ t o o l s _ k p o i n t s _ e x e
q e _ p w _ t o o l s _ p w i 2 x s f _ e x e
C O M M E N T
2020-03-05 17:37:23 +08:00
" b a s i c c o d e f o r s c f , s t r u c t u r e o p t i m i z a t i o n , M D " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( ph
D E P E N D S
2020-02-11 02:01:01 +08:00
q e _ p h o n o n _ p h _ e x e
q e _ p h o n o n _ d y n m a t _ e x e
q e _ p h o n o n _ q 2 r _ e x e
2021-05-25 02:50:45 +08:00
q e _ p h o n o n _ d v s c f _ q 2 r _ e x e
2020-10-25 18:55:22 +08:00
q e _ p h o n o n _ m a t d y n _ e x e
2020-02-11 02:01:01 +08:00
q e _ p h o n o n _ q 2 q s t a r _ e x e
q e _ p h o n o n _ l a m b d a _ e x e
q e _ p h o n o n _ a l p h a 2 f _ e x e
q e _ p h o n o n _ e p a _ e x e
q e _ p h o n o n _ f q h a _ e x e
2021-05-25 02:50:45 +08:00
q e _ p h o n o n _ f d _ e x e
q e _ p h o n o n _ f d e f _ e x e
q e _ p h o n o n _ f d i f c _ e x e
q e _ p h o n o n _ p o s t a h c _ e x e
2020-02-11 02:01:01 +08:00
q e _ p l o t p h o n _ k f o r b a n d s _ e x e
q e _ p l o t p h o n _ b a n d s t o g n u p l o t _ e x e
q e _ p l o t p h o n _ e m i n m a x _ e x e
C O M M E N T
2020-03-05 17:37:23 +08:00
" p h o n o n c o d e , G a m m a - o n l y a n d t h i r d - o r d e r d e r i v a t i v e s " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( hp
D E P E N D S
2020-02-11 02:01:01 +08:00
q e _ h p _ e x e
C O M M E N T
2020-03-05 17:37:23 +08:00
" c a l c u l a t i o n o f t h e H u b b a r d p a r a m e t e r s f r o m D F P T " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( pwcond
D E P E N D S
2020-02-11 02:01:01 +08:00
q e _ p w c o n d _ e x e
C O M M E N T
2020-03-05 17:37:23 +08:00
" b a l l i s t i c c o n d u c t a n c e " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( neb
D E P E N D S
2020-02-11 02:01:01 +08:00
q e _ n e b _ e x e
q e _ n e b _ p a t h i n t e r p o l a t i o n _ e x e
C O M M E N T
2020-03-05 17:37:23 +08:00
" c o d e f o r N u d g e d E l a s t i c B a n d m e t h o d " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( pp
D E P E N D S
2020-02-11 02:01:01 +08:00
q e _ p p _ e x e
q e _ p p _ o p e n g r i d _ e x e
q e _ p p _ a v e r a g e _ e x e
q e _ p p _ b a n d s _ e x e
q e _ p p _ d o s _ e x e
q e _ p p _ p a w p l o t _ e x e
q e _ p p _ p l a n a v g _ e x e
q e _ p p _ p l o t b a n d _ e x e
q e _ p p _ p l o t p r o j _ e x e
q e _ p p _ p l o t r h o _ e x e
q e _ p p _ p m w _ e x e
q e _ p p _ x c t e s t _ e x e
q e _ p p _ p r o j w f c _ e x e
q e _ p p _ p w 2 w a n n i e r 9 0 _ e x e
q e _ p p _ p w 2 c r i t i c _ e x e
q e _ p p _ w f c k 2 r _ e x e
q e _ p p _ i n i t i a l _ s t a t e _ e x e
q e _ p p _ p w 2 g w _ e x e
q e _ p p _ s u m p d o s _ e x e
q e _ p p _ e p s i l o n _ e x e
q e _ p p _ w a n n i e r h a m _ e x e
q e _ p p _ w a n n i e r p l o t _ e x e
q e _ p p _ m o l e c u l a r p d o s _ e x e
q e _ p p _ p w 2 b g w _ e x e
q e _ p p _ f e r m i v e l o c i t y _ e x e
q e _ p p _ f e r m i s u r f a c e _ e x e
q e _ p p _ f e r m i p r o j _ e x e
q e _ p p _ p p a c f _ e x e
C O M M E N T
2020-03-05 17:37:23 +08:00
" p o s t p r o c e s s i n g p r o g r a m s " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( pwall
D E P E N D S
p w
p h
p p
p w c o n d
2020-02-11 02:01:01 +08:00
n e b
C O M M E N T
2020-03-05 17:37:23 +08:00
" s a m e a s \ " m a k e p w p h p p p w c o n d n e b \ " " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( cp
2020-02-11 02:01:01 +08:00
D E P E N D S
q e _ c p v _ e x e
q e _ c p v _ m a n y c p _ e x e
q e _ c p v _ c p p p _ e x e
q e _ c p v _ w f d d _ e x e
C O M M E N T
2020-03-05 17:37:23 +08:00
" C P c o d e : C a r - P a r r i n e l l o m o l e c u l a r d y n a m i c s " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( tddfpt
2020-02-11 02:01:01 +08:00
D E P E N D S
q e _ t d d f p t _ t u r b o l a n c z o s _ e x e
q e _ t d d f p t _ t u r b o d a v i d s o n _ e x e
q e _ t d d f p t _ t u r b o e e l s _ e x e
2021-05-31 14:50:23 +08:00
q e _ t d d f p t _ t u r b o s p e c t r u m _ e x e
2021-05-28 22:23:52 +08:00
q e _ t d d f p t _ t u r b o m a g n o n s _ e x e
2020-02-11 02:01:01 +08:00
C O M M E N T
2020-03-05 17:37:23 +08:00
" t i m e d e p e n d e n t d f t c o d e " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( gwl
2020-02-11 02:01:01 +08:00
D E P E N D S
q e _ g w w _ u t i l _ g r a p _ e x e
q e _ g w w _ u t i l _ a b c o e f f t o e p s _ e x e
q e _ g w w _ u t i l _ m e m o r y p w 4 g w w _ e x e
2021-01-20 06:16:25 +08:00
q e _ g w w _ b s e _ b s e _ m a i n _ e x e
q e _ g w w _ g w w _ e x e
q e _ g w w _ g w w _ f i t _ e x e
q e _ g w w _ h e a d _ e x e
q e _ g w w _ s i m p l e _ b s e _ e x e
q e _ g w w _ s i m p l e _ i p _ e x e
2020-02-11 02:01:01 +08:00
C O M M E N T
2020-03-05 17:37:23 +08:00
" G W w i t h L a n c z o s c h a i n s " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( ld1
2020-02-11 02:01:01 +08:00
D E P E N D S
q e _ a t o m i c _ e x e
C O M M E N T
2020-03-05 17:37:23 +08:00
" u t i l i t i e s f o r p s e u d o p o t e n t i a l g e n e r a t i o n " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( upf
2020-02-11 02:01:01 +08:00
D E P E N D S
2020-10-09 17:50:46 +08:00
#Library
q e _ u p f l i b
2020-10-12 05:12:48 +08:00
#Executables
2020-10-09 17:50:46 +08:00
q e _ u p f l i b _ v i r t u a l _ v 2 _ e x e
q e _ u p f l i b _ u p f c o n v _ e x e
2020-02-11 02:01:01 +08:00
C O M M E N T
2020-03-05 17:37:23 +08:00
" u t i l i t i e s f o r p s e u d o p o t e n t i a l c o n v e r s i o n " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( xspectra
2020-02-11 02:01:01 +08:00
D E P E N D S
q e _ x s p e c t r a _ e x e
q e _ x s p e c t r a _ s p e c t r a c o r r e c t i o n _ e x e
q e _ x s p e c t r a _ m o l e c u l a r n e x a f s _ e x e
C O M M E N T
2020-03-05 17:37:23 +08:00
" X - r a y c o r e - h o l e s p e c t r o s c o p y c a l c u l a t i o n s " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( couple
2020-02-11 02:01:01 +08:00
D E P E N D S
q e _ c o u p l e
C O M M E N T
2020-03-05 17:37:23 +08:00
" l i b r a r y i n t e r f a c e f o r c o u p l i n g t o e x t e r n a l c o d e s " )
2020-02-11 02:01:01 +08:00
2020-10-12 05:12:48 +08:00
add_custom_target ( epw
2020-02-11 02:01:01 +08:00
D E P E N D S
q e _ e p w _ e x e
C O M M E N T
2021-01-18 22:50:50 +08:00
" e l e c t r o n - P h o n o n C o u p l i n g w i t h w a n n i e r f u n c t i o n s " )
2021-06-01 23:09:27 +08:00
add_custom_target ( all_currents
D E P E N D S
q e _ q e h e a t _ e x e
C O M M E N T
" Q E H e a t c o d e t o c o m p u t e e n e r g y a n d e l e c t r o n i c d e n s i t y c u r r e n t s " )