diff --git a/src/motion/rt_propagation.F b/src/motion/rt_propagation.F index 69c965190f..01adf2e532 100644 --- a/src/motion/rt_propagation.F +++ b/src/motion/rt_propagation.F @@ -13,13 +13,9 @@ MODULE rt_propagation USE bibliography, ONLY: Andermatt2016,& cite_reference - USE cp_blacs_env, ONLY: cp_blacs_env_type USE cp_control_types, ONLY: dft_control_type,& rtp_control_type USE cp_external_control, ONLY: external_control - USE cp_fm_struct, ONLY: cp_fm_struct_create,& - cp_fm_struct_release,& - cp_fm_struct_type USE cp_fm_types, ONLY: cp_fm_set_all,& cp_fm_to_fm,& cp_fm_type @@ -37,6 +33,7 @@ MODULE rt_propagation USE force_env_types, ONLY: force_env_get,& force_env_type USE global_types, ONLY: global_environment_type + USE hfx_admm_utils, ONLY: hfx_admm_init USE input_constants, ONLY: real_time_propagation,& use_restart_wfn,& use_rt_restart,& @@ -50,7 +47,6 @@ MODULE rt_propagation USE kinds, ONLY: dp USE machine, ONLY: m_walltime USE md_environment_types, ONLY: md_environment_type - USE message_passing, ONLY: mp_para_env_type USE pw_env_types, ONLY: pw_env_type USE qs_core_hamiltonian, ONLY: qs_matrix_h_allocate_imag_from_real USE qs_energy_init, ONLY: qs_energies_init @@ -59,8 +55,6 @@ MODULE rt_propagation qs_environment_type USE qs_external_potential, ONLY: external_c_potential,& external_e_potential - USE qs_kind_types, ONLY: get_qs_kind_set,& - qs_kind_type USE qs_ks_methods, ONLY: qs_ks_allocate_basics,& qs_ks_update_qs_env USE qs_ks_types, ONLY: qs_ks_did_change,& @@ -452,17 +446,13 @@ CONTAINS TYPE(force_env_type), POINTER :: force_env TYPE(rtp_control_type), POINTER :: rtp_control - INTEGER :: homo, ispin, nao_aux_fit, nmo + INTEGER :: homo, ispin LOGICAL :: energy_consistency - TYPE(cp_blacs_env_type), POINTER :: blacs_env - TYPE(cp_fm_struct_type), POINTER :: aux_fit_fm_struct - TYPE(cp_fm_type), POINTER :: mo_coeff, mo_coeff_aux_fit + TYPE(cp_fm_type), POINTER :: mo_coeff TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: matrix_s TYPE(dft_control_type), POINTER :: dft_control - TYPE(mp_para_env_type), POINTER :: para_env - TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set - NULLIFY (matrix_s, dft_control, blacs_env, para_env, qs_kind_set, aux_fit_fm_struct) + NULLIFY (matrix_s, dft_control) CALL get_qs_env(qs_env, dft_control=dft_control) SELECT CASE (rtp_control%initial_wfn) @@ -478,7 +468,7 @@ CONTAINS ALLOCATE (qs_env%rtp) CALL get_qs_env(qs_env, matrix_s=matrix_s) IF (dft_control%do_admm) THEN - CPASSERT(ASSOCIATED(qs_env%admm_env)) + CALL hfx_admm_init(qs_env) CALL rt_prop_create(qs_env%rtp, qs_env%mos, qs_env%mpools, dft_control, matrix_s(1)%matrix, & rtp_control%linear_scaling, qs_env%admm_env%mos_aux_fit) ELSE @@ -497,23 +487,7 @@ CONTAINS name="qs_env%mo"//TRIM(ADJUSTL(cp_to_string(ispin)))) END IF END DO - IF (dft_control%do_admm) THEN - CPASSERT(ASSOCIATED(qs_env%admm_env%mos_aux_fit)) - CALL get_qs_env(qs_env, blacs_env=blacs_env, para_env=para_env, qs_kind_set=qs_kind_set) - CALL get_qs_kind_set(qs_kind_set, nsgf=nao_aux_fit, basis_type="AUX_FIT") - DO ispin = 1, SIZE(qs_env%admm_env%mos_aux_fit) - CALL get_mo_set(mo_set=qs_env%mos(ispin), nmo=nmo) - CALL cp_fm_struct_create(aux_fit_fm_struct, context=blacs_env, para_env=para_env, & - nrow_global=nao_aux_fit, ncol_global=nmo) - CALL get_mo_set(qs_env%admm_env%mos_aux_fit(ispin), mo_coeff=mo_coeff_aux_fit, homo=homo) - IF (.NOT. ASSOCIATED(mo_coeff_aux_fit)) THEN - CALL init_mo_set(qs_env%admm_env%mos_aux_fit(ispin), & - fm_struct=aux_fit_fm_struct, & - name="qs_env%mo_aux_fit"//TRIM(ADJUSTL(cp_to_string(ispin)))) - END IF - CALL cp_fm_struct_release(aux_fit_fm_struct) - END DO - END IF + IF (dft_control%do_admm) CALL hfx_admm_init(qs_env) END IF ALLOCATE (qs_env%rtp) CALL get_qs_env(qs_env, matrix_s=matrix_s) diff --git a/tests/QS/regtest-admm-1/H2-admm-rtp.inp b/tests/QS/regtest-admm-1/H2-admm-rtp.inp new file mode 100644 index 0000000000..6d41f93161 --- /dev/null +++ b/tests/QS/regtest-admm-1/H2-admm-rtp.inp @@ -0,0 +1,82 @@ +&FORCE_EVAL + METHOD QUICKSTEP + &DFT + &REAL_TIME_PROPAGATION + MAX_ITER 5 + MAT_EXP TAYLOR + EPS_ITER 1.0E-9 + INITIAL_WFN SCF_WFN + &END + BASIS_SET_FILE_NAME BASIS_SET + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME POTENTIAL + &AUXILIARY_DENSITY_MATRIX_METHOD + METHOD BASIS_PROJECTION + ADMM_PURIFICATION_METHOD NONE + &END + &MGRID + CUTOFF 100 + &END MGRID + &QS + EPS_DEFAULT 1.0E-10 + &END QS + &SCF + MAX_SCF 60 + EPS_SCF 1.0E-3 + SCF_GUESS ATOMIC + &OUTER_SCF + EPS_SCF 1.0E-3 + &END + &OT ON + ROTATION + &END OT + &END SCF + &XC + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &HF + &INTERACTION_POTENTIAL + POTENTIAL_TYPE TRUNCATED + CUTOFF_RADIUS 2.5 + &END + &SCREENING + EPS_SCHWARZ 1.0E-14 + &END + &END + &END XC + &END DFT + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + &END CELL + &COORD + H 6.000000 4.5000000 6.000000 + H 6.000000 1.5000000 6.000000 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PBE + BASIS_SET AUX_FIT FIT3 + POTENTIAL GTH-PBE-q1 + &END KIND + &END SUBSYS +&END FORCE_EVAL +&GLOBAL + PROJECT H2-admm-rtp + RUN_TYPE RT_PROPAGATION + PRINT_LEVEL LOW +&END GLOBAL +&MOTION + &MD + ENSEMBLE NVE + STEPS 2 + TIMESTEP [au_t] 0.25 + TEMPERATURE 300.0 + &END MD + &PRINT + &TRAJECTORY + &EACH + MD 1 + &END + &END + &END +&END MOTION diff --git a/tests/QS/regtest-admm-1/H2-admm-rtp_restart.inp b/tests/QS/regtest-admm-1/H2-admm-rtp_restart.inp new file mode 100644 index 0000000000..55c6d1d035 --- /dev/null +++ b/tests/QS/regtest-admm-1/H2-admm-rtp_restart.inp @@ -0,0 +1,85 @@ +&FORCE_EVAL + METHOD QUICKSTEP + &DFT + &REAL_TIME_PROPAGATION + MAX_ITER 5 + MAT_EXP TAYLOR + EPS_ITER 1.0E-9 + INITIAL_WFN SCF_WFN + &END + BASIS_SET_FILE_NAME BASIS_SET + BASIS_SET_FILE_NAME BASIS_ADMM + POTENTIAL_FILE_NAME POTENTIAL + &AUXILIARY_DENSITY_MATRIX_METHOD + METHOD BASIS_PROJECTION + ADMM_PURIFICATION_METHOD NONE + &END + &MGRID + CUTOFF 100 + &END MGRID + &QS + EPS_DEFAULT 1.0E-10 + &END QS + &SCF + MAX_SCF 60 + EPS_SCF 1.0E-3 + SCF_GUESS ATOMIC + &OUTER_SCF + EPS_SCF 1.0E-3 + &END + &OT ON + ROTATION + &END OT + &END SCF + &XC + &XC_FUNCTIONAL NONE + &END XC_FUNCTIONAL + &HF + &INTERACTION_POTENTIAL + POTENTIAL_TYPE TRUNCATED + CUTOFF_RADIUS 2.5 + &END + &SCREENING + EPS_SCHWARZ 1.0E-14 + &END + &END + &END XC + &END DFT + &SUBSYS + &CELL + ABC 6.0 6.0 6.0 + &END CELL + &COORD + H 6.000000 4.5000000 6.000000 + H 6.000000 1.5000000 6.000000 + &END COORD + &KIND H + BASIS_SET DZVP-GTH-PBE + BASIS_SET AUX_FIT FIT3 + POTENTIAL GTH-PBE-q1 + &END KIND + &END SUBSYS +&END FORCE_EVAL +&GLOBAL + PROJECT H2-admm-rtp + RUN_TYPE RT_PROPAGATION + PRINT_LEVEL LOW +&END GLOBAL +&MOTION + &MD + ENSEMBLE NVE + STEPS 4 + TIMESTEP [au_t] 0.25 + TEMPERATURE 300.0 + &END MD + &PRINT + &TRAJECTORY + &EACH + MD 1 + &END + &END + &END +&END MOTION +&EXT_RESTART + RESTART_FILE_NAME H2-admm-rtp-1.restart +&END EXT_RESTART diff --git a/tests/QS/regtest-admm-1/TEST_FILES b/tests/QS/regtest-admm-1/TEST_FILES index 1ef1a9c01c..d955df7851 100644 --- a/tests/QS/regtest-admm-1/TEST_FILES +++ b/tests/QS/regtest-admm-1/TEST_FILES @@ -8,4 +8,6 @@ CH3-BP-NONE_OT_OFF.inp 1 5e-14 CH3-BP-NO_CORR_GPW.inp 1 1e-13 -7.40339636702633 CH3-BP-NO_CORR_GAPW.inp 1 5e-13 -38.83705343348557 H2O-admm-emd.inp 2 1.0E-14 -0.167643118101E+02 +H2-admm-rtp.inp 1 1e-12 -0.76379607928513 +H2-admm-rtp_restart.inp 1 1e-12 -0.76379608071662 #EOF