Towards constant displacement and efield TB calculations

This commit is contained in:
Juerg Hutter 2019-02-18 18:19:14 +01:00
parent 3214a37fc5
commit 68cf02ed92
23 changed files with 492 additions and 274 deletions

View file

@ -24,7 +24,8 @@ MODULE efield_tb_methods
USE kinds, ONLY: dp
USE kpoint_types, ONLY: get_kpoint_info,&
kpoint_type
USE mathconstants, ONLY: twopi
USE mathconstants, ONLY: pi,&
twopi
USE message_passing, ONLY: mp_sum
USE particle_types, ONLY: particle_type
USE qs_energy_types, ONLY: qs_energy_type
@ -38,6 +39,8 @@ MODULE efield_tb_methods
neighbor_list_iterator_p_type,&
neighbor_list_iterator_release,&
neighbor_list_set_p_type
USE qs_period_efield_types, ONLY: efield_berry_type,&
init_efield_matrices
USE qs_rho_types, ONLY: qs_rho_get,&
qs_rho_type
USE virial_methods, ONLY: virial_pair_force
@ -85,7 +88,11 @@ CONTAINS
CALL get_qs_env(qs_env, dft_control=dft_control)
IF (dft_control%qs_control%dftb .OR. dft_control%qs_control%xtb) THEN
IF (dft_control%apply_period_efield) THEN
CALL efield_tb_berry(qs_env, ks_matrix, rho, mcharge, energy, calculate_forces, just_energy)
IF (dft_control%period_efield%displacement_field) THEN
CALL dfield_tb_berry(qs_env, ks_matrix, rho, mcharge, energy, calculate_forces, just_energy)
ELSE
CALL efield_tb_berry(qs_env, ks_matrix, rho, mcharge, energy, calculate_forces, just_energy)
END IF
ELSE IF (dft_control%apply_efield) THEN
CALL efield_tb_local(qs_env, ks_matrix, rho, mcharge, energy, calculate_forces, just_energy)
ELSE IF (dft_control%apply_efield_field) THEN
@ -411,10 +418,6 @@ CONTAINS
fij(idir) = fij(idir)+SUM(p_block*ds_block)
END DO
END DO
fdir = SUM(ria(1:3)*fieldpol(1:3))
force(ikind)%efield(1:3, atom_a) = force(ikind)%efield(1:3, atom_a)+fdir*fij(1:3)
force(jkind)%efield(1:3, atom_b) = force(jkind)%efield(1:3, atom_b)-fdir*fij(1:3)
fdir = SUM(rib(1:3)*fieldpol(1:3))
force(ikind)%efield(1:3, atom_a) = force(ikind)%efield(1:3, atom_a)+fdir*fij(1:3)
force(jkind)%efield(1:3, atom_b) = force(jkind)%efield(1:3, atom_b)-fdir*fij(1:3)
END IF
@ -473,11 +476,8 @@ CONTAINS
END DO
END DO
IF (irow == iatom) fij = -fij
force(ikind)%efield(1:3, atom_a) = force(ikind)%efield(1:3, atom_a)+0.5_dp*fdir*fij(1:3)
force(jkind)%efield(1:3, atom_b) = force(jkind)%efield(1:3, atom_b)-0.5_dp*fdir*fij(1:3)
fdir = SUM(rib(1:3)*fieldpol(1:3))
force(ikind)%efield(1:3, atom_a) = force(ikind)%efield(1:3, atom_a)+0.5_dp*fdir*fij(1:3)
force(jkind)%efield(1:3, atom_b) = force(jkind)%efield(1:3, atom_b)-0.5_dp*fdir*fij(1:3)
force(ikind)%efield(1:3, atom_a) = force(ikind)%efield(1:3, atom_a)-fdir*fij(1:3)
force(jkind)%efield(1:3, atom_b) = force(jkind)%efield(1:3, atom_b)+fdir*fij(1:3)
END IF
END DO
@ -494,4 +494,309 @@ CONTAINS
END SUBROUTINE efield_tb_berry
! **************************************************************************************************
!> \brief ...
!> \param qs_env ...
!> \param ks_matrix ...
!> \param rho ...
!> \param mcharge ...
!> \param energy ...
!> \param calculate_forces ...
!> \param just_energy ...
! **************************************************************************************************
SUBROUTINE dfield_tb_berry(qs_env, ks_matrix, rho, mcharge, energy, calculate_forces, just_energy)
TYPE(qs_environment_type), POINTER :: qs_env
TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: ks_matrix
TYPE(qs_rho_type), POINTER :: rho
REAL(dp), DIMENSION(:) :: mcharge
TYPE(qs_energy_type), POINTER :: energy
LOGICAL, INTENT(in) :: calculate_forces, just_energy
CHARACTER(LEN=*), PARAMETER :: routineN = 'dfield_tb_berry', &
routineP = moduleN//':'//routineN
COMPLEX(KIND=dp) :: zdeta
COMPLEX(KIND=dp), DIMENSION(3) :: zi(3)
INTEGER :: atom_a, atom_b, blk, handle, i, ia, &
iatom, ic, icol, idir, ikind, irow, &
is, ispin, jatom, jkind, natom, nimg, &
nspin
INTEGER, ALLOCATABLE, DIMENSION(:) :: atom_of_kind, kind_of
INTEGER, DIMENSION(3) :: cellind
INTEGER, DIMENSION(:, :, :), POINTER :: cell_to_index
LOGICAL :: found, use_virial
REAL(KIND=dp) :: charge, dd, ener_field, fdir, omega
REAL(KIND=dp), DIMENSION(3) :: ci, cqi, dfilter, di, fieldpol, fij, &
forcea, hdi, kvec, qi, rab, ria, rib, mcc
REAL(KIND=dp), DIMENSION(3, 3) :: hmat
REAL(KIND=dp), DIMENSION(:, :), POINTER :: ds_block, ks_block, p_block, s_block
TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
TYPE(cell_type), POINTER :: cell
TYPE(cp_para_env_type), POINTER :: para_env
TYPE(dbcsr_iterator_type) :: iter
TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: matrix_p, matrix_s
TYPE(dft_control_type), POINTER :: dft_control
TYPE(efield_berry_type), POINTER :: efield
TYPE(kpoint_type), POINTER :: kpoints
TYPE(neighbor_list_iterator_p_type), &
DIMENSION(:), POINTER :: nl_iterator
TYPE(neighbor_list_set_p_type), DIMENSION(:), &
POINTER :: sab_orb
TYPE(particle_type), DIMENSION(:), POINTER :: particle_set
TYPE(qs_force_type), DIMENSION(:), POINTER :: force
TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
TYPE(virial_type), POINTER :: virial
CALL timeset(routineN, handle)
NULLIFY (dft_control, cell, particle_set)
CALL get_qs_env(qs_env, dft_control=dft_control, cell=cell, &
particle_set=particle_set, virial=virial)
NULLIFY (qs_kind_set, para_env, sab_orb)
CALL get_qs_env(qs_env=qs_env, qs_kind_set=qs_kind_set, &
efield=efield, energy=energy, para_env=para_env, sab_orb=sab_orb)
! efield history
CALL init_efield_matrices(efield)
! calculate stress only if forces requested also
use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
use_virial = use_virial .AND. calculate_forces
! disable stress calculation
IF (use_virial) THEN
CPABORT("Stress tensor for periodic E-field not implemented")
END IF
dfilter(1:3) = dft_control%period_efield%d_filter(1:3)
fieldpol = dft_control%period_efield%polarisation
fieldpol = fieldpol/SQRT(DOT_PRODUCT(fieldpol, fieldpol))
fieldpol = fieldpol*dft_control%period_efield%strength
omega = cell%deth
hmat = cell%hmat(:, :)/(twopi*omega)
natom = SIZE(particle_set)
nspin = SIZE(ks_matrix, 1)
zi(:) = CMPLX(1._dp, 0._dp, dp)
DO ia = 1, natom
charge = mcharge(ia)
ria = particle_set(ia)%r
ria = pbc(ria, cell)
DO idir = 1, 3
kvec(:) = twopi*cell%h_inv(idir, :)
dd = SUM(kvec(:)*ria(:))
zdeta = CMPLX(COS(dd), SIN(dd), KIND=dp)**charge
zi(idir) = zi(idir)*zdeta
END DO
END DO
qi = AIMAG(LOG(zi))
! make sure the total normalized polarization is within [-1:1]
DO idir = 1, 3
cqi(idir) = qi(idir)
! IF (cqi(idir) > pi) cqi(idir) = cqi(idir)-twopi
! IF (cqi(idir) < -pi) cqi(idir) = cqi(idir)+twopi
! ! now check for log branch
! IF (calculate_forces) THEN
! IF (ABS(efield%polarisation(idir)-cqi(idir)) > pi) THEN
! di(idir) = (efield%polarisation(idir)-cqi(idir))/pi
! DO i = 1, 10
! cqi(idir) = cqi(idir)+SIGN(1.0_dp, di(idir))*twopi
! IF (ABS(efield%polarisation(idir)-cqi(idir)) < pi) EXIT
! END DO
! END IF
! END IF
END DO
DO idir = 1, 3
ci(idir) = 0.0_dp
DO i = 1, 3
ci(idir) = ci(idir)+hmat(idir, i)*cqi(i)
END DO
END DO
! update the references
IF (calculate_forces) THEN
ener_field = SUM(ci)
! check for smoothness of energy surface
IF (ABS(efield%field_energy-ener_field) > pi*ABS(SUM(hmat))) THEN
CPWARN("Large change of e-field energy detected. Correct for non-smooth energy surface")
END IF
efield%field_energy = ener_field
efield%polarisation(:) = cqi(:)
END IF
! Energy
ener_field = 0.0_dp
DO idir = 1, 3
ener_field = ener_field+dfilter(idir)*(fieldpol(idir)-2._dp*twopi*ci(idir))**2
END DO
energy%efield = 0.25_dp*omega/twopi*ener_field
IF (.NOT. just_energy) THEN
CALL get_qs_env(qs_env=qs_env, matrix_s_kp=matrix_s)
CALL qs_rho_get(rho, rho_ao_kp=matrix_p)
nimg = dft_control%nimages
NULLIFY (cell_to_index)
IF (nimg > 1) THEN
NULLIFY (kpoints)
CALL get_qs_env(qs_env=qs_env, kpoints=kpoints)
CALL get_kpoint_info(kpoint=kpoints, cell_to_index=cell_to_index)
END IF
IF (calculate_forces) THEN
CALL get_qs_env(qs_env=qs_env, atomic_kind_set=atomic_kind_set, force=force)
ALLOCATE (atom_of_kind(natom), kind_of(natom))
CALL get_atomic_kind_set(atomic_kind_set, atom_of_kind=atom_of_kind, kind_of=kind_of)
IF (para_env%mepos == 0) THEN
DO idir = 1, 3
di(idir) = -omega*(fieldpol(idir)-2._dp*twopi*ci(idir))*dfilter(idir)
END DO
forcea(1:3) = di(1:3)/omega
DO ia = 1, natom
charge = mcharge(ia)
iatom = atom_of_kind(ia)
ikind = kind_of(ia)
force(ikind)%efield(:, iatom) = force(ikind)%efield(:, iatom)+forcea(:)*charge
IF (use_virial) THEN
ria = particle_set(ia)%r
ria = pbc(ria, cell)
CALL virial_pair_force(virial%pv_virial, 1.0_dp, forcea*charge, ria)
END IF
END DO
END IF
END IF
IF (nimg == 1) THEN
! no k-points; all matrices have been transformed to periodic bsf
CALL dbcsr_iterator_start(iter, matrix_s(1, 1)%matrix)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, irow, icol, s_block, blk)
DO idir = 1, 3
di(idir) = -omega*(fieldpol(idir)-2._dp*twopi*ci(idir))*dfilter(idir)
END DO
DO idir = 1, 3
hdi(idir) = SUM(di(1:3)*hmat(1:3, idir))
END DO
fdir = 0.0_dp
ria = particle_set(irow)%r
rib = particle_set(icol)%r
DO idir = 1, 3
kvec(:) = twopi*cell%h_inv(idir, :)
dd = SUM(kvec(:)*ria(:))
zdeta = CMPLX(COS(dd), SIN(dd), KIND=dp)
fdir = fdir+hdi(idir)*AIMAG(LOG(zdeta))
dd = SUM(kvec(:)*rib(:))
zdeta = CMPLX(COS(dd), SIN(dd), KIND=dp)
fdir = fdir+hdi(idir)*AIMAG(LOG(zdeta))
END DO
DO is = 1, nspin
NULLIFY (ks_block)
CALL dbcsr_get_block_p(matrix=ks_matrix(is, 1)%matrix, &
row=irow, col=icol, block=ks_block, found=found)
CPASSERT(found)
ks_block = ks_block+0.5_dp*fdir*s_block
END DO
IF (calculate_forces) THEN
ikind = kind_of(irow)
jkind = kind_of(icol)
atom_a = atom_of_kind(irow)
atom_b = atom_of_kind(icol)
fij = 0.0_dp
DO ispin = 1, nspin
CALL dbcsr_get_block_p(matrix=matrix_p(ispin, 1)%matrix, &
row=irow, col=icol, BLOCK=p_block, found=found)
CPASSERT(found)
DO idir = 1, 3
CALL dbcsr_get_block_p(matrix=matrix_s(idir+1, 1)%matrix, &
row=irow, col=icol, BLOCK=ds_block, found=found)
CPASSERT(found)
fij(idir) = fij(idir)+SUM(p_block*ds_block)
END DO
END DO
force(ikind)%efield(1:3, atom_a) = force(ikind)%efield(1:3, atom_a)+fdir*fij(1:3)
force(jkind)%efield(1:3, atom_b) = force(jkind)%efield(1:3, atom_b)-fdir*fij(1:3)
END IF
ENDDO
CALL dbcsr_iterator_stop(iter)
ELSE
CALL neighbor_list_iterator_create(nl_iterator, sab_orb)
DO WHILE (neighbor_list_iterate(nl_iterator) == 0)
CALL get_iterator_info(nl_iterator, ikind=ikind, jkind=jkind, &
iatom=iatom, jatom=jatom, r=rab, cell=cellind)
icol = MAX(iatom, jatom)
irow = MIN(iatom, jatom)
ic = cell_to_index(cellind(1), cellind(2), cellind(3))
CPASSERT(ic > 0)
DO idir = 1, 3
di(idir) = -omega*(fieldpol(idir)-2._dp*twopi*ci(idir))*dfilter(idir)
END DO
DO idir = 1, 3
hdi(idir) = SUM(di(1:3)*hmat(1:3, idir))
END DO
fdir = 0.0_dp
ria = particle_set(irow)%r
rib = particle_set(icol)%r
DO idir = 1, 3
kvec(:) = twopi*cell%h_inv(idir, :)
dd = SUM(kvec(:)*ria(:))
zdeta = CMPLX(COS(dd), SIN(dd), KIND=dp)
fdir = fdir+hdi(idir)*AIMAG(LOG(zdeta))
dd = SUM(kvec(:)*rib(:))
zdeta = CMPLX(COS(dd), SIN(dd), KIND=dp)
fdir = fdir+hdi(idir)*AIMAG(LOG(zdeta))
END DO
NULLIFY (s_block)
CALL dbcsr_get_block_p(matrix=matrix_s(1, ic)%matrix, &
row=irow, col=icol, block=s_block, found=found)
CPASSERT(found)
DO is = 1, nspin
NULLIFY (ks_block)
CALL dbcsr_get_block_p(matrix=ks_matrix(is, ic)%matrix, &
row=irow, col=icol, block=ks_block, found=found)
CPASSERT(found)
ks_block = ks_block+0.5_dp*fdir*s_block
END DO
IF (calculate_forces) THEN
atom_a = atom_of_kind(iatom)
atom_b = atom_of_kind(jatom)
fij = 0.0_dp
DO ispin = 1, nspin
CALL dbcsr_get_block_p(matrix=matrix_p(ispin, ic)%matrix, &
row=irow, col=icol, BLOCK=p_block, found=found)
CPASSERT(found)
DO idir = 1, 3
CALL dbcsr_get_block_p(matrix=matrix_s(idir+1, ic)%matrix, &
row=irow, col=icol, BLOCK=ds_block, found=found)
CPASSERT(found)
fij(idir) = fij(idir)+SUM(p_block*ds_block)
END DO
END DO
IF (irow == iatom) fij = -fij
force(ikind)%efield(1:3, atom_a) = force(ikind)%efield(1:3, atom_a)-fdir*fij(1:3)
force(jkind)%efield(1:3, atom_b) = force(jkind)%efield(1:3, atom_b)+fdir*fij(1:3)
END IF
END DO
CALL neighbor_list_iterator_release(nl_iterator)
END IF
IF (calculate_forces) THEN
DEALLOCATE (atom_of_kind, kind_of)
END IF
END IF
CALL timestop(handle)
END SUBROUTINE dfield_tb_berry
END MODULE efield_tb_methods

View file

@ -22,7 +22,6 @@ MODULE qmmm_tb_methods
dbcsr_add, dbcsr_copy, dbcsr_get_block_p, dbcsr_iterator_blocks_left, &
dbcsr_iterator_next_block, dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, &
dbcsr_p_type, dbcsr_set
USE erf_fn, ONLY: erfc
USE ewald_environment_types, ONLY: ewald_env_create,&
ewald_env_get,&
ewald_env_release,&

View file

@ -7,6 +7,14 @@
!> \brief Definition of the xTB parameter types.
!> \author JGH (10.2018)
! **************************************************************************************************
! To be done:
! 1) Ewald defaults options for GMAX, ALPHA, RCUT
! 2) QM/MM debugging of forces
! 3) Periodic displacement field (debugging)
! 4) Check for RTP and EMD
! 5) Wannier localization
! 6) Charge Mixing methods: Broyden/Pulay
! **************************************************************************************************
MODULE xtb_types
USE cp_log_handling, ONLY: cp_get_default_logger,&

View file

@ -3,6 +3,9 @@
&DFT
&QS
METHOD xTB
&XTB
COULOMB_INTERACTION F
&END
&END QS
&SCF
SCF_GUESS MOPAC

View file

@ -3,6 +3,9 @@
&DFT
&QS
METHOD xTB
&XTB
COULOMB_INTERACTION F
&END
&END QS
&SCF
SCF_GUESS MOPAC

View file

@ -3,6 +3,9 @@
&DFT
&QS
METHOD xTB
&XTB
COULOMB_INTERACTION F
&END
&END QS
&SCF
SCF_GUESS MOPAC

View file

@ -8,6 +8,7 @@ QS/regtest-cdft-hirshfeld
SIRIUS/regtest-1 libxc sirius elpa scalapack mpiranks=4 libxc sirius elpa scalapack mpiranks=4
xTB/regtest-1
xTB/regtest-2
xTB/regtest-3
QS/regtest-almo-strong
QS/regtest-elpa-2 elpa
QS/regtest-cdft-5

View file

@ -4,6 +4,7 @@
LSD
&PRINT
&MOMENTS
PERIODIC T
&END
&END
&PERIODIC_EFIELD
@ -16,9 +17,6 @@
DO_EWALD T
&END
EPS_DEFAULT 1.0E-12
EXTRAPOLATION PS
EXTRAPOLATION_ORDER 2
MAP_CONSISTENT
&END QS
&SCF
EPS_SCF 1.0E-6
@ -31,7 +29,7 @@
&END SCF
&POISSON
&EWALD
ALPHA 10.0
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD

View file

@ -3,6 +3,7 @@
&DFT
&PRINT
&MOMENTS
PERIODIC T
&END
&END
&PERIODIC_EFIELD
@ -12,21 +13,18 @@
&QS
METHOD xTB
EPS_DEFAULT 1.0E-12
EXTRAPOLATION PS
EXTRAPOLATION_ORDER 2
&END QS
&KPOINTS
SCHEME GAMMA
&END
&SCF
EPS_SCF 1.0E-6
SCF_GUESS ATOMIC
MAX_SCF 6
&OT
PRECONDITIONER FULL_SINGLE_INVERSE
MINIMIZER DIIS
&END
MAX_SCF 60
&END SCF
&POISSON
&EWALD
ALPHA 10.0
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD

View file

@ -4,34 +4,32 @@
LSD
&PRINT
&MOMENTS
PERIODIC T
&END
&END
BASIS_SET_FILE_NAME GTH_BASIS_SETS
POTENTIAL_FILE_NAME POTENTIAL
&MGRID
CUTOFF 200
&END MGRID
&PERIODIC_EFIELD
POLARISATION 1 0 0
INTENSITY 0.001
&END
&QS
METHOD xTB
&XTB
DO_EWALD T
&END
EPS_DEFAULT 1.0E-12
EXTRAPOLATION PS
EXTRAPOLATION_ORDER 2
MAP_CONSISTENT
&END QS
&POISSON
&EWALD
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD
&END POISSON
&SCF
EPS_SCF 1.0E-6
SCF_GUESS ATOMIC
MAX_SCF 6
&OT
&END
MAX_SCF 60
&END SCF
&XC
&XC_FUNCTIONAL PADE
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
@ -42,14 +40,6 @@
H 0.000000 -0.757136 0.520545 H2O
H 0.000000 0.757136 0.520545 H2O
&END COORD
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q1
&END KIND
&KIND O
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q6
&END KIND
&END SUBSYS
&END FORCE_EVAL
&GLOBAL

View file

@ -3,6 +3,7 @@
&DFT
&PRINT
&MOMENTS
PERIODIC T
&END
&DERIVATIVES
&END
@ -19,31 +20,22 @@
&SCF
EPS_SCF 1.e-8
MAX_SCF 90
&OT OFF
MINIMIZER CG
LINESEARCH 3PNT
PRECONDITIONER FULL_S_INVERSE
&END OT
&END SCF
&POISSON
&EWALD
ALPHA 10.0
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD
&END POISSON
&PERIODIC_EFIELD
POLARISATION 0 0 1
INTENSITY 0.05
INTENSITY 0.005
&END
#&EFIELD
# POLARISATION 0 0.5 1
# INTENSITY 0.05
#&END
&END DFT
&SUBSYS
&CELL
ABC 6.0 6.0 6.0
ABC 4.0 4.0 4.0
&END CELL
&COORD
O 0.000000 0.000000 -0.065587 H2O
@ -61,7 +53,7 @@
&DEBUG
DEBUG_FORCES T
DEBUG_STRESS_TENSOR F
STOP_ON_MISMATCH F
DX 0.0001
STOP_ON_MISMATCH T
DX 0.001
&END DEBUG

View file

@ -6,54 +6,40 @@
PERIODIC T
&END
&END
BASIS_SET_FILE_NAME GTH_BASIS_SETS
POTENTIAL_FILE_NAME POTENTIAL
&MGRID
CUTOFF 300
&END MGRID
&PERIODIC_EFIELD
POLARISATION 1 2 5
INTENSITY 0.005
DISPLACEMENT_FIELD
DISPLACEMENT_FIELD F
&END
&QS
EPS_DEFAULT 1.0E-14
MAP_CONSISTENT
METHOD xTB
&XTB
DO_EWALD T
&END
&END QS
&POISSON
&EWALD
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD
&END POISSON
&SCF
EPS_SCF 1.0E-8
SCF_GUESS ATOMIC
MAX_SCF 100
&OT
MINIMIZER DIIS
&END
&OUTER_SCF
MAX_SCF 50
&END
&END SCF
&XC
&XC_FUNCTIONAL PADE
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
A 6.0 0.0 0.0
B 0.0 6.0 0.0
C 0.0 0.0 6.0
A 4.0 0.0 0.0
B 0.0 4.0 0.0
C 0.0 0.0 4.0
&END CELL
&COORD
H 0.000000 0.000000 0.000000
F 0.940000 0.000000 0.000000
&END COORD
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q1
&END KIND
&KIND F
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q7
&END KIND
&END SUBSYS
&END FORCE_EVAL
&GLOBAL
@ -64,6 +50,6 @@
&DEBUG
DEBUG_FORCES T
DEBUG_STRESS_TENSOR F
STOP_ON_MISMATCH T
STOP_ON_MISMATCH F
DX 0.0001
&END DEBUG

View file

@ -6,36 +6,29 @@
PERIODIC T
&END
&END
BASIS_SET_FILE_NAME GTH_BASIS_SETS
POTENTIAL_FILE_NAME POTENTIAL
&MGRID
CUTOFF 300
NGRIDS 1
&END MGRID
&PERIODIC_EFIELD
POLARISATION 1 2 5
INTENSITY 0.005
DISPLACEMENT_FIELD
&END
&QS
EPS_DEFAULT 1.0E-14
MAP_CONSISTENT
METHOD xTB
&XTB
DO_EWALD T
&END
&END QS
&POISSON
&EWALD
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD
&END POISSON
&SCF
EPS_SCF 1.0E-8
SCF_GUESS ATOMIC
MAX_SCF 100
&OT
MINIMIZER DIIS
&END
&OUTER_SCF
MAX_SCF 50
&END
&END SCF
&XC
&XC_FUNCTIONAL PADE
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
@ -47,14 +40,6 @@
H 0.000000 0.000000 0.000000
F 0.940000 0.000000 0.000000
&END COORD
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q1
&END KIND
&KIND F
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q7
&END KIND
&END SUBSYS
&END FORCE_EVAL
&GLOBAL

View file

@ -6,36 +6,29 @@
PERIODIC T
&END
&END
BASIS_SET_FILE_NAME GTH_BASIS_SETS
POTENTIAL_FILE_NAME POTENTIAL
&MGRID
CUTOFF 300
NGRIDS 1
&END MGRID
&PERIODIC_EFIELD
POLARISATION 1 2 5
INTENSITY 0.005
DISPLACEMENT_FIELD
&END
&QS
EPS_DEFAULT 1.0E-14
MAP_CONSISTENT
METHOD xTB
&XTB
DO_EWALD T
&END
&END QS
&POISSON
&EWALD
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD
&END POISSON
&SCF
EPS_SCF 1.0E-8
SCF_GUESS ATOMIC
MAX_SCF 100
&OT
MINIMIZER DIIS
&END
&OUTER_SCF
MAX_SCF 50
&END
&END SCF
&XC
&XC_FUNCTIONAL PADE
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
@ -47,14 +40,6 @@
H 0.000000 0.000000 0.000000
F 0.940000 0.000000 0.000000
&END COORD
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q1
&END KIND
&KIND F
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q7
&END KIND
&END SUBSYS
&END FORCE_EVAL
&GLOBAL

View file

@ -6,11 +6,6 @@
PERIODIC T
&END
&END
BASIS_SET_FILE_NAME GTH_BASIS_SETS
POTENTIAL_FILE_NAME POTENTIAL
&MGRID
CUTOFF 300
&END MGRID
&PERIODIC_EFIELD
POLARISATION 1 2 5
INTENSITY 0.005
@ -18,8 +13,10 @@
D_FILTER 1.0 0.0 0.0
&END
&QS
EPS_DEFAULT 1.0E-14
MAP_CONSISTENT
METHOD xTB
&XTB
DO_EWALD T
&END
&END QS
&SCF
EPS_SCF 1.0E-6
@ -27,15 +24,19 @@
MAX_SCF 100
&OT
MINIMIZER DIIS
PRECONDITIONER FULL_ALL
&END
&OUTER_SCF
MAX_SCF 50
&END
&END SCF
&XC
&XC_FUNCTIONAL PADE
&END XC_FUNCTIONAL
&END XC
&POISSON
&EWALD
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD
&END POISSON
&END DFT
&SUBSYS
&CELL
@ -47,14 +48,6 @@
H 0.000000 0.000000 0.000000
F 0.940000 0.000000 0.000000
&END COORD
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q1
&END KIND
&KIND F
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q7
&END KIND
&END SUBSYS
&END FORCE_EVAL
&GLOBAL
@ -65,6 +58,6 @@
&DEBUG
DEBUG_FORCES T
DEBUG_STRESS_TENSOR F
STOP_ON_MISMATCH T
STOP_ON_MISMATCH F
DX 0.0001
&END DEBUG

View file

@ -6,19 +6,15 @@
PERIODIC T
&END
&END
BASIS_SET_FILE_NAME GTH_BASIS_SETS
POTENTIAL_FILE_NAME POTENTIAL
&MGRID
CUTOFF 300
NGRIDS 1
&END MGRID
&PERIODIC_EFIELD
POLARISATION 1 2 5
INTENSITY 0.01
&END
&QS
EPS_DEFAULT 1.0E-14
MAP_CONSISTENT
METHOD xTB
&XTB
DO_EWALD T
&END
&END QS
&SCF
EPS_SCF 1.0E-8
@ -26,15 +22,19 @@
MAX_SCF 100
&OT
MINIMIZER DIIS
PRECONDITIONER FULL_SINGLE_INVERSE
&END
&OUTER_SCF
MAX_SCF 50
&END
&END SCF
&XC
&XC_FUNCTIONAL PADE
&END XC_FUNCTIONAL
&END XC
&POISSON
&EWALD
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD
&END POISSON
&END DFT
&SUBSYS
&CELL
@ -46,14 +46,6 @@
H 0.000000 0.000000 0.000000
F 0.940000 0.000000 0.000000
&END COORD
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q1
&END KIND
&KIND F
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q7
&END KIND
&END SUBSYS
&END FORCE_EVAL
&GLOBAL

View file

@ -6,19 +6,12 @@
PERIODIC T
&END
&END
BASIS_SET_FILE_NAME GTH_BASIS_SETS
POTENTIAL_FILE_NAME POTENTIAL
&MGRID
CUTOFF 300
NGRIDS 1
&END MGRID
&PERIODIC_EFIELD
POLARISATION 1 2 5
INTENSITY 0.01
&END
&QS
EPS_DEFAULT 1.0E-14
MAP_CONSISTENT
METHOD xTB
&END QS
&SCF
EPS_SCF 1.0E-8
@ -26,15 +19,19 @@
MAX_SCF 100
&OT
MINIMIZER DIIS
PRECONDITIONER FULL_ALL
&END
&OUTER_SCF
MAX_SCF 50
&END
&END SCF
&XC
&XC_FUNCTIONAL PADE
&END XC_FUNCTIONAL
&END XC
&POISSON
&EWALD
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD
&END POISSON
&END DFT
&SUBSYS
&CELL
@ -46,14 +43,6 @@
H 0.000000 0.000000 0.000000
F 0.940000 0.000000 0.000000
&END COORD
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q1
&END KIND
&KIND F
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q7
&END KIND
&END SUBSYS
&END FORCE_EVAL
&GLOBAL

View file

@ -3,6 +3,7 @@
&DFT
&PRINT
&MOMENTS
PERIODIC T
&END
&DERIVATIVES
&END
@ -13,22 +14,18 @@
DO_EWALD T
&END XTB
&END QS
# &KPOINTS
# #SCHEME GAMMA
# SCHEME NONE
# &END
&SCF
EPS_SCF 1.e-8
MAX_SCF 90
&OT ON
MINIMIZER CG
MINIMIZER DIIS
LINESEARCH 3PNT
PRECONDITIONER FULL_S_INVERSE
&END OT
&END SCF
&POISSON
&EWALD
ALPHA 10.0
ALPHA 1.0
EWALD_TYPE SPME
GMAX 75
&END EWALD
@ -37,14 +34,10 @@
POLARISATION 0 0 1
INTENSITY 0.05
&END
#&EFIELD
# POLARISATION 0 0.5 1
# INTENSITY 0.05
#&END
&END DFT
&SUBSYS
&CELL
ABC 10.0 10.0 10.0
ABC 5.0 5.0 5.0
&END CELL
&COORD
F 0.000000 0.000000 0.000000
@ -55,13 +48,5 @@
&GLOBAL
PROJECT HF-field
PRINT_LEVEL LOW
RUN_TYPE DEBUG
#RUN_TYPE ENERGY_FORCE
RUN_TYPE ENERGY_FORCE
&END GLOBAL
&DEBUG
DEBUG_FORCES T
DEBUG_STRESS_TENSOR F
STOP_ON_MISMATCH F
DX 0.005
&END DEBUG

View file

@ -3,22 +3,15 @@
&DFT
&PRINT
&MOMENTS
PERIODIC T
PERIODIC F
&END
&END
BASIS_SET_FILE_NAME GTH_BASIS_SETS
POTENTIAL_FILE_NAME POTENTIAL
&MGRID
CUTOFF 300
NGRIDS 1
&END MGRID
&EFIELD
POLARISATION 1 2 5
INTENSITY 0.01
&END
&QS
EPS_DEFAULT 1.0E-14
MAP_CONSISTENT
METHOD xTB
&END QS
&SCF
EPS_SCF 1.0E-8
@ -32,10 +25,6 @@
MAX_SCF 50
&END
&END SCF
&XC
&XC_FUNCTIONAL PADE
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
@ -47,14 +36,6 @@
H 0.000000 0.000000 0.000000
F 0.940000 0.000000 0.000000
&END COORD
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q1
&END KIND
&KIND F
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q7
&END KIND
&END SUBSYS
&END FORCE_EVAL
&GLOBAL
@ -65,6 +46,6 @@
&DEBUG
DEBUG_FORCES T
DEBUG_STRESS_TENSOR F
STOP_ON_MISMATCH T
STOP_ON_MISMATCH F
DX 0.0001
&END DEBUG

View file

@ -3,22 +3,15 @@
&DFT
&PRINT
&MOMENTS
PERIODIC T
PERIODIC F
&END
&END
BASIS_SET_FILE_NAME GTH_BASIS_SETS
POTENTIAL_FILE_NAME POTENTIAL
&MGRID
CUTOFF 300
NGRIDS 1
&END MGRID
&EFIELD
POLARISATION 1 2 5
INTENSITY 0.01
&END
&QS
EPS_DEFAULT 1.0E-14
MAP_CONSISTENT
METHOD xTB
&END QS
&SCF
EPS_SCF 1.0E-8
@ -26,15 +19,12 @@
MAX_SCF 100
&OT
MINIMIZER DIIS
PRECONDITIONER FULL_SINGLE_INVERSE
&END
&OUTER_SCF
MAX_SCF 50
&END
&END SCF
&XC
&XC_FUNCTIONAL PADE
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
@ -46,14 +36,6 @@
H 0.000000 0.000000 0.000000
F 0.940000 0.000000 0.000000
&END COORD
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q1
&END KIND
&KIND F
BASIS_SET DZVP-GTH
POTENTIAL GTH-BLYP-q7
&END KIND
&END SUBSYS
&END FORCE_EVAL
&GLOBAL

View file

@ -4,18 +4,18 @@
# 1 compares the last total energy in the file
# for details see cp2k/tools/do_regtest
# test mulliken constraints
H2O-field-gopt.inp 1 3e-11 -16.82099420860903
H2O-field-gopt-lsd.inp 1 4e-12 -16.84348812829990
H2O-field.inp 1 4e-13 -15.90320150373305
H2O-field-lsd.inp 1 4e-14 -15.92914916395207
HF-field.inp 1 1e-12 -24.70767796237102
HF-field-gopt.inp 1 1e-12 -24.70292863028889
H2O-field-gopt.inp 1 3e-11 -5.76948139126441
H2O-field-gopt-lsd.inp 1 4e-12 -5.77067025224893
H2O-field.inp 0 4e-13
H2O-field-lsd.inp 1 4e-14 -5.77001973441721
HF-field.inp 1 1e-12 -5.62824970194336
HF-field-gopt.inp 1 1e-12 -5.66101691611479
HF-field-debug.inp 0 1e-12
HF-dfilter-debug.inp 0 1e-12
HF-dfield-gopt.inp 1 1e-12 -24.70417205608725
HF-dfield.inp 1 1e-12 -24.70404339826408
HF-dfield-debug.inp 0 1e-12
HF-loc-field.inp 1 1e-12 -24.70412191165735
HF-loc-field-gopt.inp 1 1e-12 -24.72100063320875
HF-loc-field.inp 1 1e-12 -5.65286303322644
HF-loc-field-gopt.inp 1 1e-12 -5.66995866072124
HF-loc-field-debug.inp 0 1e-12
#EOF

View file

@ -0,0 +1,33 @@
&FORCE_EVAL
&DFT
&QS
METHOD xTB
&END QS
&SCF
SCF_GUESS MOPAC
MAX_SCF 100
EPS_SCF 1.e-8
&MIXING
METHOD DIRECT_P_MIXING
ALPHA 0.2
&END
&END SCF
&END DFT
&SUBSYS
&CELL
ABC 20.0 20.0 20.0
PERIODIC NONE
&END CELL
&COORD
Nd 0.1750022025 -0.0000000000 -0.0000000000
F 2.0341944718 0.0000000000 -0.0000000000
F -0.7545983371 1.6101062386 0.0000000000
F -0.7545983371 -1.6101062386 0.0000000000
&END COORD
&END SUBSYS
&END FORCE_EVAL
&GLOBAL
PROJECT NdF3
RUN_TYPE ENERGY
PRINT_LEVEL LOW
&END GLOBAL

View file

@ -0,0 +1,7 @@
# runs are executed in the same order as in this file
# the second field tells which test should be run in order to compare with the last available output
# e.g. 0 means do not compare anything, running is enough
# 1 compares the last total energy in the file
# for details see cp2k/tools/do_regtest
NdF3.inp 1 1.0E-12 -16.30904020314352
#EOF