quantum-espresso/PHonon/CMakeLists.txt

493 lines
13 KiB
CMake

set(src_ph
PH/acfdtest.f90
PH/add_dkmds.f90
PH/add_for_charges.f90
PH/add_zstar_ue.f90
PH/add_zstar_ue_us.f90
PH/addcore.f90
PH/addnlcc.f90
PH/addnlcc_zstar_eu_us.f90
PH/addusddens.f90
PH/addusddense.f90
PH/addusdynmat.f90
PH/allocate_part.f90
PH/allocate_pert.f90
PH/allocate_phq.f90
PH/yambo.f90
PH/bcast_ph_input.f90
PH/cch_psi_all.f90
PH/check_if_partial_dyn.f90
PH/check_initial_status.f90
PH/check_restart_recover.f90
PH/clean_pw_ph.f90
PH/clinear.f90
PH/close_phq.f90
PH/compute_alphasum.f90
PH/compute_becalp.f90
PH/compute_becsum_ph.f90
PH/compute_drhous.f90
PH/compute_drhous_nc.f90
PH/compute_dvloc.f90
PH/compute_nldyn.f90
PH/compute_weight.f90
PH/deallocate_part.f90
PH/deallocate_phq.f90
PH/d2ionq.f90
PH/d2ionq_disp.f90
PH/d2nsq_bare.f90
PH/dnsq_bare.f90
PH/dnsq_orth.f90
PH/dnsq_scf.f90
PH/davcio_drho.f90
PH/dfile_autoname.f90
PH/dfile_star.f90
PH/dielec.f90
PH/do_phonon.f90
PH/do_q2r.f90
PH/drho.f90
PH/drhodv.f90
PH/drhodvloc.f90
PH/drhodvnl.f90
PH/drhodvus.f90
PH/dvanqq.f90
PH/dvkb3.f90
PH/dvpsi_e.f90
PH/dvqpsi_us.f90
PH/dvqpsi_us_only.f90
PH/dyndia.f90
PH/dynmat0.f90
PH/dynmat_us.f90
PH/dynmatcc.f90
PH/dynmatrix.f90
PH/dynmat_hub_bare.f90
PH/dynmat_hub_scf.f90
PH/dwfc.f90
PH/dvqhub_barepsi_us.f90
PH/dvqhub_barepsi_us2.f90
PH/delta_sphi.f90
PH/dpsi_orth.f90
PH/ep_matrix_element_wannier.f90
PH/elph.f90
PH/el_ph_collect.f90
PH/elphon.f90
PH/elph_scdft_mod.f90
PH/elph_tetra_mod.f90
PH/find_equiv_sites.f90
PH/find_mode_sym.f90
PH/find_irrep.f90
PH/generate_dynamical_matrix_c.f90
PH/generate_effective_charges_c.f90
PH/gmressolve_all.f90
PH/incdrhous.f90
PH/incdrhous_nc.f90
PH/initialize_ph.f90
PH/init_representations.f90
PH/io_dyn_mat.f90
PH/io_dyn_mat_old.f90
PH/io_pattern.f90
PH/obsolete.f90
PH/openfilq.f90
PH/phcom.f90
PH/ph_restart.f90
PH/phescf.f90
PH/phq_init.f90
PH/phq_readin.f90
PH/phq_recover.f90
PH/phq_setup.f90
PH/phq_summary.f90
PH/phqscf.f90
PH/polariz.f90
PH/print_clock_ph.f90
PH/prepare_q.f90
PH/prepare_sym_analysis.f90
PH/psidspsi.f90
PH/psymdvscf.f90
PH/psyme.f90
PH/psym_dmag.f90
PH/psym_dmage.f90
PH/punch_plot_e.f90
PH/q_points.f90
PH/q_points_wannier.f90
PH/q2qstar_ph.f90
PH/random_matrix.f90
PH/read_wfc_rspace_and_fwfft.f90
PH/rigid.f90
PH/rotate_dvscf_star.f90
PH/rotate_and_add_dyn.f90
PH/rotate_pattern_add.f90
PH/run_nscf.f90
PH/save_ph_input.f90
PH/set_asr_c.f90
PH/set_drhoc.f90
PH/set_int12_nc.f90
PH/set_irr.f90
PH/set_irr_nosym.f90
PH/set_irr_sym.f90
PH/setlocq.f90
PH/solve_e.f90
PH/solve_e_fpol.f90
PH/solve_linter.f90
PH/stop_ph.f90
PH/summarize.f90
PH/sym_and_write_zue.f90
PH/sym_def.f90
PH/sym_dmag.f90
PH/sym_dmage.f90
PH/symdvscf.f90
PH/symdyn_munu.f90
PH/symdynph_gq.f90
PH/syme.f90
PH/symm.f90
PH/symmorphic_or_nzb.f90
PH/swfc.f90
PH/syme_dns.f90
PH/sym_dns.f90
PH/sym_dns_wrapper.f90
PH/transform_int_so.f90
PH/transform_int_nc.f90
PH/transform_alphasum_nc.f90
PH/transform_alphasum_so.f90
PH/tra_write_matrix.f90
PH/trntnsc.f90
PH/write_epsilon_and_zeu.f90
PH/write_qplot_data.f90
PH/write_matrix.f90
PH/write_modes.f90
PH/write_rec.f90
PH/write_hub.f90
PH/zstar_eu.f90
PH/zstar_eu_us.f90
# Raman
PH/psyme2.f90
PH/chi_test.f90
PH/dielec_test.f90
PH/dvpsi_e2.f90
PH/el_opt.f90
PH/hdiag.f90
PH/pcgreen.f90
PH/ramanm.f90
PH/syme2.f90
PH/solve_e2.f90
PH/solve_e_nscf.f90
PH/write_ramtns.f90
PH/d2mxc.f90
PH/raman_mat.f90
PH/raman.f90
PH/dhdrhopsi.f90
PH/set_dvscf.f90
PH/dvscf_interpolate.f90
PH/ahc.f90)
qe_enable_cuda_fortran("${src_ph}")
set(src_phaux
PH/write_eigenvectors.f90)
set(src_gamma
Gamma/a_h.f90
Gamma/cg_readin.f90
Gamma/cg_setup.f90
Gamma/cgcom.f90
Gamma/cgsolve.f90
Gamma/d2ion.f90
Gamma/dgradcorr.f90
Gamma/dielec.f90
Gamma/drhodv.f90
Gamma/dvb_cc.f90
Gamma/dvpsi_e.f90
Gamma/dvpsi_kb.f90
Gamma/dyndiar.f90
Gamma/dynmat_init.f90
Gamma/dynmatcc.f90
Gamma/find_equiv_sites.f90
Gamma/generate_dynamical_matrix.f90
Gamma/generate_effective_charges.f90
Gamma/h_h.f90
Gamma/macro.f90
Gamma/rhod2vkb.f90
Gamma/solve_e.f90
Gamma/solve_ph.f90
Gamma/writedyn.f90)
qe_enable_cuda_fortran("${src_gamma}")
set(src_fd
FD/stop_pp.f90)
qe_add_library(qe_phonon_ph ${src_ph})
target_link_libraries(qe_phonon_ph
PRIVATE
qe_hdf5_fortran
qe_openmp_fortran
qe_openacc_fortran
qe_mpi_fortran
qe_pw
qe_modules
qe_lr_modules
qe_upflib
qe_fftx
qe_dftd3
qe_fox
qe_xclib)
qe_add_library(qe_phonon_phaux ${src_phaux})
target_link_libraries(qe_phonon_phaux
PRIVATE
qe_modules
qe_lr_modules)
qe_add_library(qe_phonon_gamma ${src_gamma})
target_link_libraries(qe_phonon_gamma
PRIVATE
qe_pw
qe_modules
qe_lr_modules
qe_upflib
qe_fftx
qe_lax
qe_xclib)
qe_add_library(qe_phonon_fd ${src_fd})
target_link_libraries(qe_phonon_fd
PRIVATE
qe_pw
qe_modules
qe_lr_modules)
if(QE_ENABLE_CUDA)
target_link_libraries(qe_modules
PRIVATE
CUDA::cublas)
endif()
###########################################################
# ph.x
###########################################################
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_openacc_fortran
qe_openmp_fortran
qe_mpi_fortran
qe_pw
qe_lax
qe_modules
qe_phonon_ph)
###########################################################
# dynmat.x
###########################################################
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_phonon_ph
qe_phonon_phaux
qe_fox)
###########################################################
# q2r.x
###########################################################
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_phonon_ph)
###########################################################
# dvscf_q2r.x
###########################################################
set(src_dvscf_q2r_x PH/dvscf_q2r.f90)
qe_add_executable(qe_phonon_dvscf_q2r_exe ${src_dvscf_q2r_x})
set_target_properties(qe_phonon_dvscf_q2r_exe PROPERTIES OUTPUT_NAME dvscf_q2r.x)
target_link_libraries(qe_phonon_dvscf_q2r_exe
PRIVATE
qe_pw
qe_lr_modules
qe_modules
qe_fftx
qe_lapack
qe_phonon_ph)
##################################################################
# matdyn.x
##################################################################
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_pw
qe_phonon_ph
qe_phonon_phaux
qe_lr_modules)
###########################################################
# q2qstar.x
###########################################################
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_phonon_ph)
###########################################################
# lambda.x
###########################################################
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_phonon_ph)
###########################################################
# alpha2f.x
###########################################################
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_openacc_fortran
qe_pw
qe_modules
qe_phonon_ph)
###########################################################
# epa.x
###########################################################
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_phonon_ph)
###########################################################
# fqha.x
###########################################################
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)
###########################################################
# postahc.x
###########################################################
set(src_postahc_x PH/postahc.f90)
qe_add_executable(qe_phonon_postahc_exe ${src_postahc_x})
set_target_properties(qe_phonon_postahc_exe PROPERTIES OUTPUT_NAME postahc.x)
target_link_libraries(qe_phonon_postahc_exe
PRIVATE
qe_modules
qe_phonon_ph)
###########################################################
# phcg.x
###########################################################
set(src_phonon_phcg_x Gamma/phcg.f90)
qe_enable_cuda_fortran("${src_phonon_phcg_x}")
qe_add_executable(qe_phonon_phcg_exe ${src_phonon_phcg_x})
set_target_properties(qe_phonon_phcg_exe PROPERTIES OUTPUT_NAME phcg.x)
target_link_libraries(qe_phonon_phcg_exe
PRIVATE
qe_pw
qe_fftx
qe_xclib
qe_lr_modules
qe_phonon_gamma
qe_modules)
###########################################################
# fd.x
###########################################################
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_modules
qe_phonon_fd
qe_phonon_ph
qe_fftx)
###########################################################
# fd_ef.x
###########################################################
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_modules
qe_phonon_fd
qe_phonon_ph
qe_fftx)
###########################################################
# fd_ifc.x
###########################################################
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_modules
qe_phonon_fd
qe_phonon_ph
qe_fftx)
###########################################################
set(PH_EXE_TARGETS
qe_phonon_ph_exe
qe_phonon_phcg_exe
qe_phonon_dynmat_exe
qe_phonon_q2r_exe
qe_phonon_dvscf_q2r_exe
qe_phonon_matdyn_exe
qe_phonon_q2qstar_exe
qe_phonon_lambda_exe
qe_phonon_alpha2f_exe
qe_phonon_epa_exe
qe_phonon_fqha_exe
qe_phonon_fd_exe
qe_phonon_fdef_exe
qe_phonon_fdifc_exe
qe_phonon_postahc_exe)
qe_install_targets(
# Libraries
qe_phonon_ph
qe_phonon_phaux
qe_phonon_gamma
qe_phonon_fd
# Executables
${PH_EXE_TARGETS})
add_custom_target(ph
DEPENDS
${PH_EXE_TARGETS}
COMMENT
"phonon code, Gamma-only and third-order derivatives")