mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-29 06:35:28 -04:00
RTP| Enabled ADMM with GAPW
This commit is contained in:
parent
89e83184de
commit
4733487c4d
5 changed files with 126 additions and 10 deletions
|
|
@ -270,10 +270,6 @@ CONTAINS
|
|||
CPABORT("GAPW ADMM not implemented for MCWEENY or NONE_DM purification.")
|
||||
END IF
|
||||
|
||||
IF (admm_env%do_gapw .AND. qs_env%run_rtp) THEN
|
||||
CPABORT("GAPW ADMM not implemented for real-time propagation.")
|
||||
END IF
|
||||
|
||||
IF (dft_control%do_admm_dm .AND. .NOT. ASSOCIATED(admm_env%admm_dm)) THEN
|
||||
CALL admm_dm_create(admm_env%admm_dm, dft_control%admm_control, nspins=dft_control%nspins, natoms=natoms)
|
||||
END IF
|
||||
|
|
|
|||
|
|
@ -775,6 +775,7 @@ CONTAINS
|
|||
|
||||
IF (dft_control%do_admm) THEN
|
||||
!Single atom contribution to the AUX matrices
|
||||
!Note: also update ks_aux_fit matrix in case of rtp
|
||||
CALL admm_update_ks_atom(qs_env, calculate_forces)
|
||||
END IF
|
||||
END IF
|
||||
|
|
|
|||
|
|
@ -35,7 +35,8 @@ MODULE rtp_admm_methods
|
|||
do_admm_purify_none
|
||||
USE input_section_types, ONLY: section_vals_get_subs_vals,&
|
||||
section_vals_type
|
||||
USE kinds, ONLY: dp
|
||||
USE kinds, ONLY: default_string_length,&
|
||||
dp
|
||||
USE mathconstants, ONLY: one,&
|
||||
zero
|
||||
USE message_passing, ONLY: mp_para_env_type
|
||||
|
|
@ -45,11 +46,13 @@ MODULE rtp_admm_methods
|
|||
USE qs_environment_types, ONLY: get_qs_env,&
|
||||
qs_environment_type,&
|
||||
set_qs_env
|
||||
USE qs_gapw_densities, ONLY: prepare_gapw_den
|
||||
USE qs_kind_types, ONLY: get_qs_kind_set,&
|
||||
qs_kind_type
|
||||
USE qs_ks_types, ONLY: qs_ks_env_type
|
||||
USE qs_mo_types, ONLY: get_mo_set,&
|
||||
mo_set_type
|
||||
USE qs_rho_atom_methods, ONLY: calculate_rho_atom_coeff
|
||||
USE qs_rho_types, ONLY: qs_rho_get,&
|
||||
qs_rho_set,&
|
||||
qs_rho_type
|
||||
|
|
@ -81,8 +84,9 @@ CONTAINS
|
|||
|
||||
CHARACTER(LEN=*), PARAMETER :: routineN = 'rtp_admm_calc_rho_aux'
|
||||
|
||||
CHARACTER(LEN=default_string_length) :: basis_type
|
||||
INTEGER :: handle, ispin, nspins
|
||||
LOGICAL :: s_mstruct_changed
|
||||
LOGICAL :: gapw, s_mstruct_changed
|
||||
REAL(KIND=dp), DIMENSION(:), POINTER :: tot_rho_r_aux
|
||||
TYPE(admm_type), POINTER :: admm_env
|
||||
TYPE(cp_fm_type), DIMENSION(:), POINTER :: rtp_coeff_aux_fit
|
||||
|
|
@ -115,10 +119,7 @@ CONTAINS
|
|||
CALL get_admm_env(admm_env, matrix_s_aux_fit=matrix_s_aux_fit, task_list_aux_fit=task_list_aux_fit, &
|
||||
matrix_s_aux_fit_vs_orb=matrix_s_aux_fit_vs_orb, mos_aux_fit=mos_aux_fit, &
|
||||
rho_aux_fit=rho_aux_fit)
|
||||
|
||||
IF (admm_env%do_gapw) THEN
|
||||
CPABORT("GAPW ADMM not implemented for real time propagation")
|
||||
END IF
|
||||
gapw = admm_env%do_gapw
|
||||
|
||||
nspins = dft_control%nspins
|
||||
|
||||
|
|
@ -141,6 +142,13 @@ CONTAINS
|
|||
matrix_p_aux_im(ispin)%matrix, &
|
||||
ispin)
|
||||
|
||||
!IF GAPW, only do the soft basis with PW
|
||||
basis_type = "AUX_FIT"
|
||||
IF (gapw) THEN
|
||||
basis_type = "AUX_FIT_SOFT"
|
||||
task_list_aux_fit => admm_env%admm_gapw_env%task_list
|
||||
END IF
|
||||
|
||||
CALL calculate_rho_elec(matrix_p=matrix_p_aux(ispin)%matrix, &
|
||||
rho=rho_r_aux(ispin), &
|
||||
rho_gspace=rho_g_aux(ispin), &
|
||||
|
|
@ -148,6 +156,18 @@ CONTAINS
|
|||
ks_env=ks_env, soft_valid=.FALSE., &
|
||||
basis_type="AUX_FIT", &
|
||||
task_list_external=task_list_aux_fit)
|
||||
|
||||
!IF GAPW, also need to atomic densities
|
||||
IF (gapw) THEN
|
||||
CALL calculate_rho_atom_coeff(qs_env, matrix_p_aux, &
|
||||
rho_atom_set=admm_env%admm_gapw_env%local_rho_set%rho_atom_set, &
|
||||
qs_kind_set=admm_env%admm_gapw_env%admm_kind_set, &
|
||||
oce=admm_env%admm_gapw_env%oce, sab=admm_env%sab_aux_fit, &
|
||||
para_env=para_env)
|
||||
|
||||
CALL prepare_gapw_den(qs_env, local_rho_set=admm_env%admm_gapw_env%local_rho_set, &
|
||||
do_rho0=.FALSE., kind_set_external=admm_env%admm_gapw_env%admm_kind_set)
|
||||
END IF
|
||||
END DO
|
||||
CALL set_qs_env(qs_env, admm_env=admm_env)
|
||||
CALL qs_rho_set(rho_aux_fit, rho_r_valid=.TRUE., rho_g_valid=.TRUE.)
|
||||
|
|
@ -432,6 +452,8 @@ CONTAINS
|
|||
matrix_ks_im=matrix_ks_im)
|
||||
CALL get_admm_env(admm_env, matrix_ks_aux_fit=matrix_ks_aux_fit, matrix_ks_aux_fit_im=matrix_ks_aux_fit_im)
|
||||
|
||||
!note: the GAPW contribution to ks_aux_fit taken care of in qs_ks_methods.F/update_admm_ks_atom
|
||||
|
||||
DO ispin = 1, dft_control%nspins
|
||||
|
||||
SELECT CASE (admm_env%purification_method)
|
||||
|
|
|
|||
95
tests/QS/regtest-admm-gapw/H2O-admm-emd.inp
Normal file
95
tests/QS/regtest-admm-gapw/H2O-admm-emd.inp
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
|
||||
&FORCE_EVAL
|
||||
METHOD QUICKSTEP
|
||||
&DFT
|
||||
&AUXILIARY_DENSITY_MATRIX_METHOD
|
||||
METHOD BASIS_PROJECTION
|
||||
ADMM_PURIFICATION_METHOD NONE
|
||||
&END
|
||||
&REAL_TIME_PROPAGATION
|
||||
MAX_ITER 7
|
||||
MAT_EXP ARNOLDI
|
||||
PROPAGATOR ETRS
|
||||
EXP_ACCURACY 1.0E-11
|
||||
EPS_ITER 1.0E-2
|
||||
INITIAL_WFN SCF_WFN
|
||||
&END
|
||||
BASIS_SET_FILE_NAME BASIS_MOLOPT
|
||||
BASIS_SET_FILE_NAME BASIS_ADMM
|
||||
POTENTIAL_FILE_NAME POTENTIAL
|
||||
&MGRID
|
||||
CUTOFF 100
|
||||
&END MGRID
|
||||
&QS
|
||||
EPS_DEFAULT 1.0E-10
|
||||
METHOD GAPW
|
||||
FORCE_PAW
|
||||
&END QS
|
||||
&POISSON
|
||||
PERIODIC NONE
|
||||
PSOLVER MT
|
||||
&END
|
||||
|
||||
&SCF
|
||||
MAX_SCF 5
|
||||
EPS_SCF 1.0E-6
|
||||
SCF_GUESS ATOMIC
|
||||
&OT ON
|
||||
ROTATION
|
||||
&END OT
|
||||
&END SCF
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF
|
||||
&SCREENING
|
||||
EPS_SCHWARZ 1.0E-10
|
||||
EPS_SCHWARZ_FORCES 1.0E-10
|
||||
SCREEN_ON_INITIAL_P FALSE
|
||||
&END
|
||||
&INTERACTION_POTENTIAL
|
||||
POTENTIAL_TYPE COULOMB
|
||||
&END
|
||||
&MEMORY
|
||||
MAX_MEMORY 50
|
||||
EPS_STORAGE_SCALING 0.1
|
||||
TREAT_FORCES_IN_CORE TRUE
|
||||
&END
|
||||
&END
|
||||
&END XC
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 8.0 8.0 8.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
O 0.000000 0.000000 -0.065587
|
||||
H 0.000000 -0.757136 0.520545
|
||||
H 0.000000 0.757136 0.520545
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET ORB DZVP-MOLOPT-GTH
|
||||
POTENTIAL GTH-PBE-q1
|
||||
BASIS_SET AUX_FIT cFIT3
|
||||
&END KIND
|
||||
&KIND O
|
||||
BASIS_SET ORB DZVP-MOLOPT-GTH
|
||||
POTENTIAL GTH-PBE-q6
|
||||
BASIS_SET AUX_FIT cFIT3
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
PROJECT H2O-hybrid-EMD
|
||||
RUN_TYPE EHRENFEST_DYN
|
||||
PRINT_LEVEL MEDIUM
|
||||
&END GLOBAL
|
||||
&MOTION
|
||||
&MD
|
||||
ENSEMBLE NVE
|
||||
STEPS 2
|
||||
TIMESTEP [au_t] 0.25
|
||||
TEMPERATURE 300.0
|
||||
&END MD
|
||||
&END MOTION
|
||||
|
|
@ -17,4 +17,6 @@ MD-2-ALL.inp 1 5e-10
|
|||
# GAPW_XC tests
|
||||
H2-geo-XC.inp 1 5e-10 -1.15201574159787
|
||||
H2O-ADMMP-XC.inp 1 1e-12 -16.85600729246631
|
||||
# GAPW ADMM with RTP
|
||||
H2O-admm-emd.inp 2 1e-10 -0.167597110002E+02
|
||||
#EOF
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue