DD-CAM in CP2k

82 views
Skip to first unread message

Michele Loriso

unread,
Jul 9, 2025, 8:04:56 AM7/9/25
to cp2k
Dear CP2k community, 
our team is currently performing geometry optimizations and single points on several zinc(II) bulks, and using v. 10.0.
While attempting to run geo_opts and wfn_opts using a DD-CAM functional (reported below the input file), we obtained an absurd value for the HOMO-LUMO gap (ca. 9 eV) of ZnO.
May I ask you for an advice in assemblying the input file?
Thanks in advance!

&XC
 &XC_FUNCTIONAL
        &HYB_GGA_XC_CAM_PBEH
          SCALE 0.0         
          _OMEGA 0.75          ! Range-separation parameter (in Bohr⁻¹)
          _ALPHA 1.0           ! Short-range HF exchange
          _BETA 0.20           ! Long-range HF exchange
        &END HYB_GGA_XC_CAM_PBEH
 &END XC_FUNCTIONAL
&HF
&SCREENING
EPS_SCHWARZ 1.0E-6
SCREEN_ON_INITIAL_P FALSE
&END SCREENING
&INTERACTION_POTENTIAL
POTENTIAL_TYPE TRUNCATED
CUTOFF_RADIUS 5.5
T_C_G_DATA  /g100_work/IscrC_MHP-DEF/t_c_g.dat
&END INTERACTION_POTENTIAL
&MEMORY
MAX_MEMORY 3600
EPS_STORAGE_SCALING 0.1
&END MEMORY

&END HF
    &END XC

Frederick Stein

unread,
Jul 9, 2025, 8:22:06 AM7/9/25
to cp2k
Dear Michele,
Because you are interested in a range-separated hybrid functional, you have to setup the HF section accordingly (CP2K does not do that automatically, see https://www.cp2k.org/_media/events:2019_ghent:admm.pdf or https://github.com/cp2k/cp2k/tree/master/data/xc_section for more inspiration). Beware that you need to convert the short-range/long-range-split to a Coulomb/long-range split. Your HF section should look as follows
&HF
&INTERACTION_POTENTIAL
POTENTIAL_TYPE MIXED_CL_TRUNC
OMEGA 0.75
# the same as the amount of HF short-range exchange
SCALE_COULOMB 1.0
# the same as the amount of long-range MINUS the amount of short-range exchange
SCALE_LONGRANGE -0.8
# A bit less than half of the distance to the nearest neighbor
CUTOFF_RADIUS 5.5
T_C_G_DATA  /g100_work/IscrC_MHP-DEF/t_c_g.dat
&END
<your other options>
&END HF

HTH,
Frederick

Michele Loriso

unread,
Jul 9, 2025, 8:47:52 AM7/9/25
to cp2k
Dear Frederick, many thanks for your quick answer! 
Following your suggestion, we modified our input file as reported below and obtained a 0.09 eV for the HOMO-LUMO gap. 
For the sake of completeness, we already obtained an HOMO-LUMO gap of 2.77 eV using a KPBE functional, and we were expecting 
a value close to 3.4 eV (as reported in this work: https://www.nature.com/articles/s41524-023-01064-x/tables/2).

!&END EXT_RESTART
&FORCE_EVAL
  METHOD         Quickstep
!  STRESS_TENSOR  ANALYTICAL
!  &PRINT
!    &STRESS_TENSOR
!    &END STRESS_TENSOR
!  &END PRINT
  &DFT
            BASIS_SET_FILE_NAME /g100_work/IscrC_MHP-DEF/BASIS/BASIS_MOLOPT.txt
            POTENTIAL_FILE_NAME /g100_work/IscrC_MHP-DEF/BASIS/GTH_POTENTIALS.txt
            BASIS_SET_FILE_NAME /g100_work/IscrC_MHP-DEF/BASIS/BASIS_ADMM_MOLOPT.txt
            BASIS_SET_FILE_NAME /g100_work/IscrC_MHP-DEF/BASIS/BASIS_ADMM.txt
            WFN_RESTART_FILE_NAME ./ZnO-KPBE-RESTART.wfn
!   CHARGE -1
!    UKS T
    &MGRID
      CUTOFF       600
      REL_CUTOFF    60
    &END MGRID
    &QS
    &END QS
    &SCF
      SCF_GUESS  RESTART
      MAX_SCF    50
      &OT
        MINIMIZER       CG
        PRECONDITIONER  FULL_SINGLE_INVERSE
      &END
      &OUTER_SCF
        MAX_SCF  50
      &END
!      &PRINT
!        &RESTART OFF
!        &END
!      &END
    &END SCF
    &AUXILIARY_DENSITY_MATRIX_METHOD
        METHOD BASIS_PROJECTION
        ADMM_PURIFICATION_METHOD MO_DIAG
     &END AUXILIARY_DENSITY_MATRIX_METHOD
    &PRINT
!       &MO LOW
!          EIGENVALUES
!          &EACH
!              QS_SCF 0
!          &END EACH
!       &END MO
       &MO_CUBES
        NHOMO 1
       NLUMO 1
!        WRITE_CUBE
!         &EACH
!          MD 50
!         &END EACH
      &END MO_CUBES
!       &TOT_DENSITY_CUBE
!       &END
    &END PRINT
&XC
&XC_FUNCTIONAL
        &HYB_GGA_XC_CAM_PBEH

          _OMEGA 0.75          ! Range-separation parameter (in Bohr⁻¹)
          _ALPHA 1.00           ! Short-range HF exchange

          _BETA  0.20           ! Long-range HF exchange
        &END HYB_GGA_XC_CAM_PBEH
 &END XC_FUNCTIONAL
&HF
&SCREENING
EPS_SCHWARZ 1.0E-6
SCREEN_ON_INITIAL_P FALSE
&END SCREENING
&INTERACTION_POTENTIAL
POTENTIAL_TYPE MIX_CL_TRUNC
OMEGA 0.75
CUTOFF_RADIUS 5.5
SCALE_COULOMB  1.00
SCALE_LONGRANGE -0.80

T_C_G_DATA  /g100_work/IscrC_MHP-DEF/t_c_g.dat
&END INTERACTION_POTENTIAL
&MEMORY
MAX_MEMORY 3600
EPS_STORAGE_SCALING 0.1
&END MEMORY
FRACTION 1.0
&END HF
    &END XC
  &END DFT
  &SUBSYS
    &CELL
      ABC  12.880 12.880 15.600
      ALPHA_BETA_GAMMA 90.0 90.0 120.0
    &END CELL
    &TOPOLOGY
      COORD_FILE_NAME  ./ZnO-opt.xyz
      COORD_FILE_FORMAT xyz
    &END TOPOLOGY
    &KIND Zn
      BASIS_SET DZVP-MOLOPT-SR-GTH-q12
      BASIS_SET AUX_FIT cFIT9
      POTENTIAL GTH-PBE-q12
    &END KIND
    &KIND O
      BASIS_SET DZVP-MOLOPT-SR-GTH-q6
      BASIS_SET AUX_FIT cFIT3
      POTENTIAL GTH-PBE-q6
    &END KIND
  &END SUBSYS
&END FORCE_EVAL
&MOTION
! &MD
!    STEPS        50000000
!    TIMESTEP     1.00
!    TEMPERATURE  300
!    ENSEMBLE     NVT
!    &THERMOSTAT
!      REGION MASSIVE
!      TYPE NOSE
!      &NOSE
!        TIMECON  16.68
!      &END NOSE
!    &END THERMOSTAT
!    &BAROSTAT
!      PRESSURE  0.0
!      TIMECON   300
!    &END BAROSTAT
!  &END MD
!  &PRINT
!   &TRAJECTORY
!     &EACH
!       MD 1
!     &END EACH
!   &END TRAJECTORY
!   &CELL
!     &EACH
!       MD 1
!     &END EACH
!   &END CELL
!   &VELOCITIES OFF
!   &END VELOCITIES
!   &FORCES OFF
!   &END FORCES
!   &RESTART_HISTORY
!     &EACH
!       MD 500
!     &END EACH
!   &END RESTART_HISTORY
!   &RESTART
!     BACKUP_COPIES 3
!     &EACH
!       MD 1
!     &END EACH
!   &END RESTART
!  &END PRINT
&GEO_OPT
  OPTIMIZER BFGS
    &BFGS
     TRUST_RADIUS 0.1
    &END
&END GEO_OPT
&END MOTION
&GLOBAL
  PROJECT      ZnO-DDCAM
  RUN_TYPE     WFN_OPT
  PRINT_LEVEL  LOW
&END GLOBAL

Frederick Stein

unread,
Jul 9, 2025, 8:55:10 AM7/9/25
to cp2k
Dear Michele,
You use pseudopotentials optimized for PBE but you need pseudopotentials optimized for hybrid functionals. If there are none in the files you provide to CP2K, check out POTENTIAL_UZH in the data directory.
Best,
Frederick
Reply all
Reply to author
Forward
0 new messages