mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-28 22:25:32 -04:00
Bug-fixes and upgrades to the Active Space Module
- bug fixes of some incorrect indices - extension to support UKS calculations - implementation of an FCIDump checksum to ease testing - addition of regression tests - minor documentation improvements After this PR, the active space module can be used in conjunction with HF-style calculations. This includes: - GAPW with the ALL electron potential - GAPW with the GTH-HF potential - GPW with the GTH-HF potential Regression tests for all of the above scenarios have been added in `tests/QS/regtest-as-1`. ``` % ../tools/regtesting/do_regtest -cp2kdir ../ -version sdbg -arch local -nobuild -restrictdir QS/regtest-as-1 <...> --------------------------------- Summary -------------------------------- Number of FAILED tests 0 Number of WRONG tests 0 Number of CORRECT tests 26 Total number of tests 26 GREPME 0 0 26 0 26 X Summary: correct: 26 / 26; 3min Status: OK ```
This commit is contained in:
parent
5bf4af4099
commit
6964239efd
18 changed files with 1450 additions and 167 deletions
|
|
@ -140,17 +140,38 @@ MODULE qs_active_space_methods
|
|||
PUBLIC :: active_space_main
|
||||
|
||||
TYPE, EXTENDS(eri_type_eri_element_func) :: eri_fcidump_print
|
||||
INTEGER :: unit_nr
|
||||
INTEGER :: unit_nr, bra_start, ket_start
|
||||
CONTAINS
|
||||
PROCEDURE :: func => eri_fcidump_print_func
|
||||
END TYPE
|
||||
|
||||
TYPE, EXTENDS(eri_type_eri_element_func) :: eri_fcidump_checksum
|
||||
INTEGER :: bra_start = 0, ket_start = 0
|
||||
REAL(KIND=dp) :: checksum = 0.0_dp
|
||||
CONTAINS
|
||||
PROCEDURE, PASS :: set => eri_fcidump_set
|
||||
PROCEDURE :: func => eri_fcidump_checksum_func
|
||||
END TYPE eri_fcidump_checksum
|
||||
|
||||
! **************************************************************************************************
|
||||
|
||||
CONTAINS
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief ...
|
||||
!> \brief Sets the starting indices of the bra and ket.
|
||||
!> \param this object reference
|
||||
!> \param bra_start starting index of the bra
|
||||
!> \param ket_start starting index of the ket
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE eri_fcidump_set(this, bra_start, ket_start)
|
||||
CLASS(eri_fcidump_checksum) :: this
|
||||
INTEGER, INTENT(IN) :: bra_start, ket_start
|
||||
this%bra_start = bra_start
|
||||
this%ket_start = ket_start
|
||||
END SUBROUTINE eri_fcidump_set
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief Main method for determining the active space Hamiltonian
|
||||
!> \param input ...
|
||||
!> \param logger ...
|
||||
!> \param qs_env ...
|
||||
|
|
@ -164,8 +185,8 @@ CONTAINS
|
|||
|
||||
CHARACTER(len=10) :: cshell, lnam(5)
|
||||
INTEGER :: eri_method, eri_operator, eri_print, handle, i, iatom, ishell, isp, ispin, iw, j, &
|
||||
jm, m, mselect, n1, n2, nactive, nao, natom, ncol, nel, ninactive, ninactive_alpha, &
|
||||
ninactive_beta, nmo, nn1, nn2, nspins, ntot, zval
|
||||
jm, m, mselect, n1, n2, nao, natom, ncol, nel, nelec_active, nelec_inactive, &
|
||||
nelec_inactive_alpha, nelec_inactive_beta, nelec_total, nmo, nn1, nn2, nspins, zval
|
||||
INTEGER, DIMENSION(2) :: nactive_orb, nepol, ninactive_orb
|
||||
INTEGER, DIMENSION(5) :: nshell
|
||||
INTEGER, DIMENSION(:), POINTER :: invals
|
||||
|
|
@ -250,9 +271,9 @@ CONTAINS
|
|||
END IF
|
||||
END IF
|
||||
|
||||
CALL section_vals_val_get(as_input, "ACTIVE_ELECTRONS", i_val=nactive)
|
||||
IF (nactive <= 0) CPABORT("Specify a positive number of active electrons.")
|
||||
CALL get_qs_env(qs_env, nelectron_total=ntot, nelectron_spin=nepol)
|
||||
CALL section_vals_val_get(as_input, "ACTIVE_ELECTRONS", i_val=nelec_active)
|
||||
IF (nelec_active <= 0) CPABORT("Specify a positive number of active electrons.")
|
||||
CALL get_qs_env(qs_env, nelectron_total=nelec_total, nelectron_spin=nepol)
|
||||
CALL get_qs_env(qs_env, dft_control=dft_control)
|
||||
nspins = dft_control%nspins
|
||||
CALL section_vals_val_get(as_input, "INACTIVE_ELECTRONS", explicit=explicit)
|
||||
|
|
@ -262,51 +283,53 @@ CONTAINS
|
|||
CALL cp_abort(__LOCATION__, "Number of Inactive Electrons has to be specified"// &
|
||||
" in spin polarised case.")
|
||||
END IF
|
||||
ninactive_alpha = invals(1)
|
||||
ninactive_beta = invals(2)
|
||||
ninactive = ninactive_alpha + ninactive_beta
|
||||
nelec_inactive_alpha = invals(1)
|
||||
nelec_inactive_beta = invals(2)
|
||||
nelec_inactive = nelec_inactive_alpha + nelec_inactive_beta
|
||||
ELSE
|
||||
IF (explicit) THEN
|
||||
ninactive = invals(1)
|
||||
nelec_inactive = invals(1)
|
||||
ELSE
|
||||
ninactive = ntot - nactive
|
||||
nelec_inactive = nelec_total - nelec_active
|
||||
END IF
|
||||
ninactive_alpha = ninactive
|
||||
ninactive_beta = 0
|
||||
END IF
|
||||
CPASSERT(ninactive >= 0)
|
||||
CPASSERT(ninactive_alpha >= 0)
|
||||
CPASSERT(ninactive_beta >= 0)
|
||||
CPASSERT(ntot == ninactive + nactive)
|
||||
IF (nspins > 1) THEN
|
||||
CPASSERT(nepol(1) >= ninactive_alpha)
|
||||
CPASSERT(nepol(2) >= ninactive_beta)
|
||||
nelec_inactive_alpha = nelec_inactive
|
||||
nelec_inactive_beta = 0
|
||||
END IF
|
||||
|
||||
IF (iw > 0) THEN
|
||||
IF (nspins < 2) THEN
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Total number of electrons", ntot
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of active electrons", nactive
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of inactive electrons", ninactive
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Total number of electrons", nelec_total
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of active electrons", nelec_active
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of inactive electrons", nelec_inactive
|
||||
ELSE
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Total number of electrons", ntot
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of active electrons", nactive
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of inactive electrons", ninactive
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of inactive electrons (alpha)", ninactive_alpha
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of inactive electrons (beta)", ninactive_beta
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Total number of electrons", nelec_total
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of active electrons", nelec_active
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of inactive electrons", nelec_inactive
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of inactive electrons (alpha)", nelec_inactive_alpha
|
||||
WRITE (iw, '(T4,A,T69,I10)') "Number of inactive electrons (beta)", nelec_inactive_beta
|
||||
END IF
|
||||
END IF
|
||||
active_space_env%nactive = nactive
|
||||
active_space_env%ninactive = ninactive
|
||||
IF (nspins == 1) THEN
|
||||
active_space_env%nelectrons(1) = ntot
|
||||
active_space_env%nelectrons(2) = 0
|
||||
ELSE
|
||||
active_space_env%nelectrons(1) = nepol(1)
|
||||
active_space_env%nelectrons(2) = nepol(2)
|
||||
|
||||
CPASSERT(nelec_inactive >= 0)
|
||||
CPASSERT(nelec_inactive_alpha >= 0)
|
||||
CPASSERT(nelec_inactive_beta >= 0)
|
||||
CPASSERT(nelec_total == nelec_inactive + nelec_active)
|
||||
IF (nspins > 1) THEN
|
||||
CPASSERT(nepol(1) >= nelec_inactive_alpha)
|
||||
CPASSERT(nepol(2) >= nelec_inactive_beta)
|
||||
END IF
|
||||
active_space_env%ninspin(1) = ninactive_alpha
|
||||
active_space_env%ninspin(2) = ninactive_beta
|
||||
|
||||
active_space_env%nelec_active = nelec_active
|
||||
active_space_env%nelec_inactive = nelec_inactive
|
||||
IF (nspins == 1) THEN
|
||||
active_space_env%nelec_total(1) = nelec_total
|
||||
active_space_env%nelec_total(2) = 0
|
||||
ELSE
|
||||
active_space_env%nelec_total(1) = nepol(1)
|
||||
active_space_env%nelec_total(2) = nepol(2)
|
||||
END IF
|
||||
active_space_env%nelec_inactive_spinwise(1) = nelec_inactive_alpha
|
||||
active_space_env%nelec_inactive_spinwise(2) = nelec_inactive_beta
|
||||
active_space_env%multiplicity = dft_control%multiplicity
|
||||
active_space_env%nspins = nspins
|
||||
|
||||
|
|
@ -325,10 +348,10 @@ CONTAINS
|
|||
CALL section_vals_val_get(as_input, "INACTIVE_ORBITALS", i_vals=invals)
|
||||
IF (.NOT. explicit) THEN
|
||||
IF (nspins == 1) THEN
|
||||
ninactive_orb(1) = active_space_env%ninspin(1)/2
|
||||
ninactive_orb(1) = active_space_env%nelec_inactive_spinwise(1)/2
|
||||
ELSE
|
||||
DO ispin = 1, nspins
|
||||
ninactive_orb(ispin) = active_space_env%ninspin(ispin)
|
||||
ninactive_orb(ispin) = active_space_env%nelec_inactive_spinwise(ispin)
|
||||
END DO
|
||||
END IF
|
||||
ELSE
|
||||
|
|
@ -338,11 +361,11 @@ CONTAINS
|
|||
END DO
|
||||
END IF
|
||||
IF (nspins == 1) THEN
|
||||
CPASSERT(MOD(ninactive, 2) == 0)
|
||||
CPASSERT(ninactive_orb(1) >= ninactive/2)
|
||||
CPASSERT(MOD(nelec_inactive, 2) == 0)
|
||||
CPASSERT(ninactive_orb(1) >= nelec_inactive/2)
|
||||
ELSE
|
||||
CPASSERT(ninactive_orb(1) >= ninactive_alpha)
|
||||
CPASSERT(ninactive_orb(2) >= ninactive_beta)
|
||||
CPASSERT(ninactive_orb(1) >= nelec_inactive_alpha)
|
||||
CPASSERT(ninactive_orb(2) >= nelec_inactive_beta)
|
||||
END IF
|
||||
|
||||
CALL get_qs_env(qs_env, mos=mos)
|
||||
|
|
@ -363,7 +386,7 @@ CONTAINS
|
|||
active_space_env%mos_active(ispin)%mo_set => mo_set
|
||||
mo_set => active_space_env%mos_inactive(ispin)%mo_set
|
||||
nmo = ninactive_orb(ispin)
|
||||
nel = active_space_env%ninspin(ispin)
|
||||
nel = active_space_env%nelec_inactive_spinwise(ispin)
|
||||
NULLIFY (mo_set)
|
||||
CALL allocate_mo_set(mo_set, nao, nmo, nel, REAL(nel, KIND=dp), maxocc, 0.0_dp)
|
||||
CALL init_mo_set(mo_set, fm_ref=fm_ref, name="Inactive Space MO")
|
||||
|
|
@ -474,11 +497,11 @@ CONTAINS
|
|||
"[atomic units]"
|
||||
DO i = 1, ninactive_orb(ispin), 4
|
||||
jm = MIN(3, ninactive_orb(ispin) - i)
|
||||
WRITE (iw, '(T3,4(F14.6,A5))') (eigenvalues(i + j, 1), " [I]", j=0, jm)
|
||||
WRITE (iw, '(T3,4(F14.6,A5))') (eigenvalues(i + j, ispin), " [I]", j=0, jm)
|
||||
END DO
|
||||
DO i = ninactive_orb(ispin) + 1, ninactive_orb(ispin) + nactive_orb(ispin), 4
|
||||
jm = MIN(3, ninactive_orb(ispin) + nactive_orb(ispin) - i)
|
||||
WRITE (iw, '(T3,4(F14.6,A5))') (eigenvalues(i + j, 1), " [A]", j=0, jm)
|
||||
WRITE (iw, '(T3,4(F14.6,A5))') (eigenvalues(i + j, ispin), " [A]", j=0, jm)
|
||||
END DO
|
||||
END DO
|
||||
END IF
|
||||
|
|
@ -668,7 +691,7 @@ CONTAINS
|
|||
nn1 = (n1*(n1 + 1))/2
|
||||
nn2 = (n2*(n2 + 1))/2
|
||||
CALL dbcsr_csr_create(eri_mat, nn1, nn2, 0_int_8, 0, 0, para_env%group)
|
||||
CALL get_mo_set(active_space_env%mos_active(i)%mo_set, nmo=active_space_env%eri%norb)
|
||||
CALL get_mo_set(active_space_env%mos_active(1)%mo_set, nmo=active_space_env%eri%norb)! here replace i with 1, i can be > nspins
|
||||
END DO
|
||||
|
||||
SELECT CASE (eri_method)
|
||||
|
|
@ -708,12 +731,12 @@ CONTAINS
|
|||
|
||||
! set the reference active space density matrix
|
||||
nspins = active_space_env%nspins
|
||||
ALLOCATE (active_space_env%p_ref(nspins))
|
||||
ALLOCATE (active_space_env%p_active(nspins))
|
||||
DO isp = 1, nspins
|
||||
mo_set => active_space_env%mos_active(isp)%mo_set
|
||||
CALL get_mo_set(mo_set, mo_coeff=mo_coeff, nmo=nmo)
|
||||
NULLIFY (active_space_env%p_ref(isp)%matrix)
|
||||
CALL create_subspace_matrix(mo_coeff, active_space_env%p_ref(isp)%matrix, nmo)
|
||||
NULLIFY (active_space_env%p_active(isp)%matrix)
|
||||
CALL create_subspace_matrix(mo_coeff, active_space_env%p_active(isp)%matrix, nmo)
|
||||
END DO
|
||||
SELECT CASE (mselect)
|
||||
CASE DEFAULT
|
||||
|
|
@ -722,9 +745,9 @@ CONTAINS
|
|||
focc = 2.0_dp
|
||||
IF (nspins == 2) focc = 1.0_dp
|
||||
DO isp = 1, nspins
|
||||
fmat => active_space_env%p_ref(isp)%matrix
|
||||
fmat => active_space_env%p_active(isp)%matrix
|
||||
CALL cp_fm_set_all(fmat, alpha=0.0_dp)
|
||||
n1 = active_space_env%nelectrons(isp) - active_space_env%ninspin(isp)
|
||||
n1 = active_space_env%nelec_total(isp) - active_space_env%nelec_inactive_spinwise(isp)
|
||||
DO i = 1, nactive_orb(isp)
|
||||
fel = MIN(focc, REAL(n1, KIND=dp))
|
||||
CALL cp_fm_set_element(fmat, i, i, fel)
|
||||
|
|
@ -757,7 +780,7 @@ CONTAINS
|
|||
|
||||
! **************************************************************************************************
|
||||
!> \brief computes the one-electron operators in the subspace of the provided orbital set
|
||||
!> \param mos ...
|
||||
!> \param mos the molecular orbital set within the active subspace
|
||||
!> \param qs_env ...
|
||||
!> \param active_space_env ...
|
||||
!> \par History
|
||||
|
|
@ -844,8 +867,8 @@ CONTAINS
|
|||
|
||||
! **************************************************************************************************
|
||||
!> \brief computes a one-electron operator in the subspace of the provided orbital set
|
||||
!> \param orbitals ...
|
||||
!> \param nmo ...
|
||||
!> \param orbitals the orbital coefficient matrix
|
||||
!> \param nmo the number of orbitals
|
||||
!> \param op_matrix operator matrix in AO basis
|
||||
!> \param op_sub operator in orbital basis
|
||||
!> \par History
|
||||
|
|
@ -890,9 +913,9 @@ CONTAINS
|
|||
|
||||
! **************************************************************************************************
|
||||
!> \brief creates a matrix of subspace size
|
||||
!> \param orbitals ...
|
||||
!> \param orbitals the orbital coefficient matrix
|
||||
!> \param op_sub operator in orbital basis
|
||||
!> \param n ...
|
||||
!> \param n the number of orbitals
|
||||
!> \par History
|
||||
!> 04.2016 created [JGH]
|
||||
! **************************************************************************************************
|
||||
|
|
@ -920,7 +943,7 @@ CONTAINS
|
|||
|
||||
! **************************************************************************************************
|
||||
!> \brief computes a electron repulsion integrals using GPW technology
|
||||
!> \param mos ...
|
||||
!> \param mos the molecular orbital set within the active subspace
|
||||
!> \param eri_env ...
|
||||
!> \param qs_env ...
|
||||
!> \param iw ...
|
||||
|
|
@ -1155,7 +1178,7 @@ CONTAINS
|
|||
END IF
|
||||
wfn_r%pw%cr3d = rho_r%pw%cr3d*wfn3%pw%cr3d*wfn4%pw%cr3d
|
||||
erint = pw_integrate_function(wfn_r%pw)
|
||||
IF (erint > eri_env%eps_integral) THEN
|
||||
IF (ABS(erint) > eri_env%eps_integral) THEN
|
||||
intcount = intcount + 1
|
||||
IF (print2 .AND. iw > 0) THEN
|
||||
WRITE (iw, "(T4,'ERI_GPW|',T20,2I4,' [',I1,']',2I4,' [',I1,']',T58,G20.14)") &
|
||||
|
|
@ -1475,6 +1498,7 @@ CONTAINS
|
|||
CALL pw_pool_give_back_pw(auxbas_pw_pool, wf_g%pw)
|
||||
|
||||
END SUBROUTINE print_orbital_cubes
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief Writes a FCIDUMP file
|
||||
!> \param active_space_env ...
|
||||
|
|
@ -1488,10 +1512,12 @@ CONTAINS
|
|||
TYPE(section_vals_type), POINTER :: as_input
|
||||
|
||||
INTEGER :: i, i1, i2, i3, i4, isym, iw, nspins
|
||||
REAL(KIND=dp) :: esub, mval
|
||||
REAL(KIND=dp) :: checksum, esub
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: fmat
|
||||
TYPE(cp_fm_type), POINTER :: matrix
|
||||
TYPE(cp_logger_type), POINTER :: logger
|
||||
TYPE(eri_fcidump_checksum) :: eri_checksum
|
||||
|
||||
checksum = 0.0_dp
|
||||
|
||||
logger => cp_get_default_logger()
|
||||
IF (BTEST(cp_print_key_should_output(logger%iter_info, &
|
||||
|
|
@ -1503,7 +1529,7 @@ CONTAINS
|
|||
IF (nspins == 1) THEN
|
||||
ASSOCIATE (norb=>active_space_env%eri%norb, &
|
||||
ms2=>0, & ! active_space_env%multiplicity ?
|
||||
nelec=>active_space_env%nactive)
|
||||
nelec=>active_space_env%nelec_active)
|
||||
|
||||
IF (iw > 0) THEN
|
||||
WRITE (iw, "(A,A,I4,A,I4,A,I2,A)") "&FCI", " NORB=", norb, ",NELEC=", nelec, ",MS2=", ms2, ","
|
||||
|
|
@ -1515,23 +1541,19 @@ CONTAINS
|
|||
END IF
|
||||
!
|
||||
! Print integrals: ERI
|
||||
CALL active_space_env%eri%eri_foreach(1, eri_fcidump_print(iw))
|
||||
CALL active_space_env%eri%eri_foreach(1, eri_fcidump_print(iw, 1, 1))
|
||||
CALL eri_checksum%set(1, 1)
|
||||
CALL active_space_env%eri%eri_foreach(1, eri_checksum)
|
||||
|
||||
! Print integrals: Fij
|
||||
! replicate Fock matrix
|
||||
ALLOCATE (fmat(norb, norb))
|
||||
fmat = 0.0_dp
|
||||
matrix => active_space_env%fock_sub(1)%matrix
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
CALL cp_fm_get_element(matrix, i1, i2, mval)
|
||||
fmat(i1, i2) = mval
|
||||
fmat(i2, i1) = mval
|
||||
END DO
|
||||
END DO
|
||||
CALL replicate_and_symmetrize_matrix(norb, active_space_env%fock_sub(1)%matrix, fmat)
|
||||
IF (iw > 0) THEN
|
||||
i3 = 0; i4 = 0
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
checksum = checksum + ABS(fmat(i1, i2))
|
||||
WRITE (iw, "(ES23.16,4I4)") fmat(i1, i2), i1, i2, i3, i4
|
||||
END DO
|
||||
END DO
|
||||
|
|
@ -1540,16 +1562,108 @@ CONTAINS
|
|||
! Print energy
|
||||
esub = active_space_env%energy_inactive
|
||||
i1 = 0; i2 = 0; i3 = 0; i4 = 0
|
||||
checksum = checksum + ABS(esub)
|
||||
IF (iw > 0) WRITE (iw, "(ES23.16,4I4)") esub, i1, i2, i3, i4
|
||||
END ASSOCIATE
|
||||
ELSE
|
||||
CPABORT("Option not yet available")
|
||||
|
||||
ASSOCIATE (norb=>active_space_env%eri%norb, &
|
||||
ms2=>0, & ! active_space_env%multiplicity ?
|
||||
nelec=>active_space_env%nelec_active)
|
||||
|
||||
IF (iw > 0) THEN
|
||||
WRITE (iw, "(A,A,I4,A,I4,A,I2,A)") "&FCI", " NORB=", norb, ",NELEC=", nelec, ",MS2=", ms2, ","
|
||||
isym = 1
|
||||
WRITE (iw, "(A,1000(I1,','))") " ORBSYM=", (isym, i=1, norb)
|
||||
isym = 0
|
||||
WRITE (iw, "(A,I1,A)") " ISYM=", isym, ","
|
||||
WRITE (iw, "(A,I1,A)") " UHF=", 1, ","
|
||||
WRITE (iw, "(A)") " /"
|
||||
END IF
|
||||
!
|
||||
! Print integrals: ERI
|
||||
! alpha-alpha
|
||||
CALL active_space_env%eri%eri_foreach(1, eri_fcidump_print(iw, 1, 1))
|
||||
CALL eri_checksum%set(1, 1)
|
||||
CALL active_space_env%eri%eri_foreach(1, eri_checksum)
|
||||
! alpha-beta
|
||||
CALL active_space_env%eri%eri_foreach(2, eri_fcidump_print(iw, 1, norb + 1))
|
||||
CALL eri_checksum%set(1, norb + 1)
|
||||
CALL active_space_env%eri%eri_foreach(2, eri_checksum)
|
||||
! beta-beta
|
||||
CALL active_space_env%eri%eri_foreach(3, eri_fcidump_print(iw, norb + 1, norb + 1))
|
||||
CALL eri_checksum%set(norb + 1, norb + 1)
|
||||
CALL active_space_env%eri%eri_foreach(3, eri_checksum)
|
||||
! Print integrals: Fij
|
||||
! alpha
|
||||
ALLOCATE (fmat(norb, norb))
|
||||
CALL replicate_and_symmetrize_matrix(norb, active_space_env%fock_sub(1)%matrix, fmat)
|
||||
IF (iw > 0) THEN
|
||||
i3 = 0; i4 = 0
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
checksum = checksum + ABS(fmat(i1, i2))
|
||||
WRITE (iw, "(ES23.16,4I4)") fmat(i1, i2), i1, i2, i3, i4
|
||||
END DO
|
||||
END DO
|
||||
END IF
|
||||
DEALLOCATE (fmat)
|
||||
! beta
|
||||
ALLOCATE (fmat(norb, norb))
|
||||
CALL replicate_and_symmetrize_matrix(norb, active_space_env%fock_sub(2)%matrix, fmat)
|
||||
IF (iw > 0) THEN
|
||||
i3 = 0; i4 = 0
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
checksum = checksum + ABS(fmat(i1, i2))
|
||||
WRITE (iw, "(ES23.16,4I4)") fmat(i1, i2), i1 + norb, i2 + norb, i3, i4
|
||||
END DO
|
||||
END DO
|
||||
END IF
|
||||
DEALLOCATE (fmat)
|
||||
! Print energy
|
||||
esub = active_space_env%energy_inactive
|
||||
i1 = 0; i2 = 0; i3 = 0; i4 = 0
|
||||
checksum = checksum + ABS(esub)
|
||||
IF (iw > 0) WRITE (iw, "(ES23.16,4I4)") esub, i1, i2, i3, i4
|
||||
END ASSOCIATE
|
||||
END IF
|
||||
!
|
||||
CALL cp_print_key_finished_output(iw, logger, as_input, "FCIDUMP")
|
||||
|
||||
!>>
|
||||
iw = cp_logger_get_default_io_unit(logger)
|
||||
IF (iw > 0) WRITE (iw, '(T4,A,T66,F12.8)') "FCIDUMP| Checksum:", eri_checksum%checksum + checksum
|
||||
!<<
|
||||
|
||||
END IF
|
||||
|
||||
END SUBROUTINE fcidump
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief replicate and symmetrize a matrix
|
||||
!> \param norb the number of orbitals
|
||||
!> \param distributed_matrix ...
|
||||
!> \param replicated_matrix ...
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE replicate_and_symmetrize_matrix(norb, distributed_matrix, replicated_matrix)
|
||||
INTEGER, INTENT(IN) :: norb
|
||||
TYPE(cp_fm_type), INTENT(IN), POINTER :: distributed_matrix
|
||||
REAL(dp), DIMENSION(:, :), INTENT(INOUT) :: replicated_matrix
|
||||
|
||||
INTEGER :: i1, i2
|
||||
REAL(dp) :: mval
|
||||
|
||||
replicated_matrix(:, :) = 0.0_dp
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
CALL cp_fm_get_element(distributed_matrix, i1, i2, mval)
|
||||
replicated_matrix(i1, i2) = mval
|
||||
replicated_matrix(i2, i1) = mval
|
||||
END DO
|
||||
END DO
|
||||
END SUBROUTINE replicate_and_symmetrize_matrix
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief Calculates active space Fock matrix and inactive energy
|
||||
!> \param active_space_env ...
|
||||
|
|
@ -1560,89 +1674,36 @@ CONTAINS
|
|||
|
||||
TYPE(active_space_type), POINTER :: active_space_env
|
||||
|
||||
INTEGER :: i1, i12, i12l, i2, i3, i34, i34l, i4, &
|
||||
irange(2), irptr, is, nelec, nindex, &
|
||||
norb, nspins
|
||||
REAL(KIND=dp) :: eeri, eref, erint, esub, mval
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: ks_mat, ks_ref, p_mat
|
||||
CHARACTER(len=*), PARAMETER :: routineN = 'subspace_fock_matrix', &
|
||||
routineP = moduleN//':'//routineN
|
||||
|
||||
INTEGER :: i1, i2, is, norb, nspins
|
||||
REAL(KIND=dp) :: eeri, eref, esub, mval
|
||||
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: ks_a_mat, ks_a_ref, ks_b_mat, ks_b_ref, &
|
||||
ks_mat, ks_ref, p_a_mat, p_b_mat, p_mat
|
||||
TYPE(cp_fm_type), POINTER :: matrix
|
||||
TYPE(dbcsr_csr_type), POINTER :: eri
|
||||
TYPE(dbcsr_csr_type), POINTER :: eri, eri_aa, eri_ab, eri_bb
|
||||
|
||||
eref = active_space_env%energy_ref
|
||||
nspins = active_space_env%nspins
|
||||
IF (nspins == 1) THEN
|
||||
nelec = active_space_env%nactive
|
||||
CALL get_mo_set(active_space_env%mos_active(1)%mo_set, nmo=norb)
|
||||
!
|
||||
! Loop over ERI, calculate subspace HF energy and Fock matrix
|
||||
!
|
||||
! replicate KS, Core, and P matrices
|
||||
ALLOCATE (ks_mat(norb, norb), ks_ref(norb, norb), p_mat(norb, norb))
|
||||
ks_mat = 0.0_dp
|
||||
ks_ref = 0.0_dp
|
||||
p_mat = 0.0_dp
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
matrix => active_space_env%p_ref(1)%matrix
|
||||
CALL cp_fm_get_element(matrix, i1, i2, mval)
|
||||
p_mat(i1, i2) = mval
|
||||
p_mat(i2, i1) = mval
|
||||
matrix => active_space_env%ks_sub(1)%matrix
|
||||
CALL cp_fm_get_element(matrix, i1, i2, mval)
|
||||
ks_mat(i1, i2) = mval
|
||||
ks_mat(i2, i1) = mval
|
||||
END DO
|
||||
END DO
|
||||
|
||||
CALL replicate_and_symmetrize_matrix(norb, active_space_env%p_active(1)%matrix, p_mat)
|
||||
CALL replicate_and_symmetrize_matrix(norb, active_space_env%ks_sub(1)%matrix, ks_mat)
|
||||
!
|
||||
!
|
||||
eri => active_space_env%eri%eri(1)%csr_mat
|
||||
CALL build_subspace_fock_matrix(norb, eri, p_mat, ks_ref)
|
||||
!
|
||||
! calculate energy
|
||||
eeri = 0.0_dp
|
||||
eri => active_space_env%eri%eri(1)%csr_mat
|
||||
nindex = (norb*(norb + 1))/2
|
||||
irange = get_irange_csr(nindex, eri%mp_group)
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
i12 = csr_idx_to_combined(i1, i2, norb)
|
||||
IF (i12 >= irange(1) .AND. i12 <= irange(2)) THEN
|
||||
i12l = i12 - irange(1) + 1
|
||||
irptr = eri%rowptr_local(i12l) - 1
|
||||
DO i34l = 1, eri%nzerow_local(i12l)
|
||||
i34 = eri%colind_local(irptr + i34l)
|
||||
CALL csr_idx_from_combined(i34, norb, i3, i4)
|
||||
erint = eri%nzval_local%r_dp(irptr + i34l)
|
||||
! Coulomb
|
||||
ks_ref(i1, i2) = ks_ref(i1, i2) + erint*p_mat(i3, i4)
|
||||
IF (i3 /= i4) THEN
|
||||
ks_ref(i1, i2) = ks_ref(i1, i2) + erint*p_mat(i3, i4)
|
||||
END IF
|
||||
IF (i12 /= i34) THEN
|
||||
ks_ref(i3, i4) = ks_ref(i3, i4) + erint*p_mat(i1, i2)
|
||||
IF (i1 /= i2) THEN
|
||||
ks_ref(i3, i4) = ks_ref(i3, i4) + erint*p_mat(i1, i2)
|
||||
END IF
|
||||
END IF
|
||||
! Exchange
|
||||
erint = -0.5_dp*erint
|
||||
ks_ref(i1, i3) = ks_ref(i1, i3) + erint*p_mat(i2, i4)
|
||||
IF (i1 /= i2) THEN
|
||||
ks_ref(i2, i3) = ks_ref(i2, i3) + erint*p_mat(i1, i4)
|
||||
END IF
|
||||
IF (i3 /= i4) THEN
|
||||
ks_ref(i1, i4) = ks_ref(i1, i4) + erint*p_mat(i2, i3)
|
||||
END IF
|
||||
IF (i1 /= i2 .AND. i3 /= i4) THEN
|
||||
ks_ref(i2, i4) = ks_ref(i2, i4) + erint*p_mat(i1, i3)
|
||||
END IF
|
||||
END DO
|
||||
END IF
|
||||
END DO
|
||||
END DO
|
||||
!
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
ks_ref(i1, i2) = ks_ref(i2, i1)
|
||||
END DO
|
||||
END DO
|
||||
CALL mp_sum(ks_ref, eri%mp_group)
|
||||
!
|
||||
eeri = 0.5_dp*SUM(ks_ref*p_mat)
|
||||
esub = eref - SUM(ks_mat(1:norb, 1:norb)*p_mat(1:norb, 1:norb)) + eeri
|
||||
ks_mat(1:norb, 1:norb) = ks_mat(1:norb, 1:norb) - ks_ref(1:norb, 1:norb)
|
||||
|
|
@ -1669,10 +1730,233 @@ CONTAINS
|
|||
END DO
|
||||
END DO
|
||||
ELSE
|
||||
CPABORT("Spin option not yet available")
|
||||
|
||||
CALL get_mo_set(active_space_env%mos_active(1)%mo_set, nmo=norb)
|
||||
!
|
||||
! Loop over ERI, calculate subspace HF energy and Fock matrix
|
||||
!
|
||||
! replicate KS, Core, and P matrices
|
||||
ALLOCATE (ks_a_mat(norb, norb), ks_b_mat(norb, norb), &
|
||||
& ks_a_ref(norb, norb), ks_b_ref(norb, norb), &
|
||||
& p_a_mat(norb, norb), p_b_mat(norb, norb))
|
||||
ks_a_ref(:, :) = 0.0_dp; ks_b_ref(:, :) = 0.0_dp
|
||||
|
||||
CALL replicate_and_symmetrize_matrix(norb, active_space_env%p_active(1)%matrix, p_a_mat)
|
||||
CALL replicate_and_symmetrize_matrix(norb, active_space_env%p_active(2)%matrix, p_b_mat)
|
||||
CALL replicate_and_symmetrize_matrix(norb, active_space_env%ks_sub(1)%matrix, ks_a_mat)
|
||||
CALL replicate_and_symmetrize_matrix(norb, active_space_env%ks_sub(2)%matrix, ks_b_mat)
|
||||
!
|
||||
!
|
||||
eri_aa => active_space_env%eri%eri(1)%csr_mat
|
||||
eri_ab => active_space_env%eri%eri(2)%csr_mat
|
||||
eri_bb => active_space_env%eri%eri(3)%csr_mat
|
||||
CALL build_subspace_spin_fock_matrix(norb, eri_aa, eri_ab, p_a_mat, p_b_mat, ks_a_ref, tr_mixed_eri=.FALSE.)
|
||||
CALL build_subspace_spin_fock_matrix(norb, eri_bb, eri_ab, p_b_mat, p_a_mat, ks_b_ref, tr_mixed_eri=.TRUE.)
|
||||
!
|
||||
! calculate energy
|
||||
eeri = 0.0_dp
|
||||
eeri = 0.5_dp*(SUM(ks_a_ref*p_a_mat) + SUM(ks_b_ref*p_b_mat))
|
||||
esub = eref - SUM(ks_a_mat*p_a_mat) - SUM(ks_b_mat*p_b_mat) + eeri
|
||||
ks_a_mat(:, :) = ks_a_mat(:, :) - ks_a_ref(:, :)
|
||||
ks_b_mat(:, :) = ks_b_mat(:, :) - ks_b_ref(:, :)
|
||||
!
|
||||
active_space_env%energy_inactive = esub
|
||||
!
|
||||
IF (ASSOCIATED(active_space_env%fock_sub)) THEN
|
||||
DO is = 1, SIZE(active_space_env%fock_sub)
|
||||
CALL cp_fm_release(active_space_env%fock_sub(is)%matrix)
|
||||
END DO
|
||||
DEALLOCATE (active_space_env%fock_sub)
|
||||
END IF
|
||||
ALLOCATE (active_space_env%fock_sub(nspins))
|
||||
DO is = 1, nspins
|
||||
matrix => active_space_env%ks_sub(is)%matrix
|
||||
CALL cp_fm_create(active_space_env%fock_sub(is)%matrix, matrix%matrix_struct, &
|
||||
name="Active Fock operator")
|
||||
END DO
|
||||
|
||||
matrix => active_space_env%fock_sub(1)%matrix
|
||||
DO i1 = 1, norb
|
||||
DO i2 = 1, norb
|
||||
mval = ks_a_mat(i1, i2)
|
||||
CALL cp_fm_set_element(matrix, i1, i2, mval)
|
||||
END DO
|
||||
END DO
|
||||
matrix => active_space_env%fock_sub(2)%matrix
|
||||
DO i1 = 1, norb
|
||||
DO i2 = 1, norb
|
||||
mval = ks_b_mat(i1, i2)
|
||||
CALL cp_fm_set_element(matrix, i1, i2, mval)
|
||||
END DO
|
||||
END DO
|
||||
|
||||
END IF
|
||||
|
||||
END SUBROUTINE subspace_fock_matrix
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief build subspace fockian
|
||||
!> \param norb number of orbitals
|
||||
!> \param eri two electon integrals in MO
|
||||
!> \param p_mat density matrix
|
||||
!> \param ks_ref fockian matrix
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE build_subspace_fock_matrix(norb, eri, p_mat, ks_ref)
|
||||
INTEGER, INTENT(IN) :: norb
|
||||
TYPE(dbcsr_csr_type), INTENT(IN) :: eri
|
||||
REAL(dp), DIMENSION(:, :), INTENT(IN) :: p_mat
|
||||
REAL(dp), DIMENSION(:, :), INTENT(INOUT) :: ks_ref
|
||||
|
||||
INTEGER :: i1, i12, i12l, i2, i3, i34, i34l, i4, &
|
||||
irptr, nindex
|
||||
INTEGER, DIMENSION(2) :: irange
|
||||
REAL(dp) :: erint
|
||||
|
||||
nindex = (norb*(norb + 1))/2
|
||||
irange = get_irange_csr(nindex, eri%mp_group)
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
i12 = csr_idx_to_combined(i1, i2, norb)
|
||||
IF (i12 >= irange(1) .AND. i12 <= irange(2)) THEN
|
||||
i12l = i12 - irange(1) + 1
|
||||
irptr = eri%rowptr_local(i12l) - 1
|
||||
DO i34l = 1, eri%nzerow_local(i12l)
|
||||
i34 = eri%colind_local(irptr + i34l)
|
||||
CALL csr_idx_from_combined(i34, norb, i3, i4)
|
||||
erint = eri%nzval_local%r_dp(irptr + i34l)
|
||||
! Coulomb
|
||||
ks_ref(i1, i2) = ks_ref(i1, i2) + erint*p_mat(i3, i4)
|
||||
IF (i3 /= i4) THEN
|
||||
ks_ref(i1, i2) = ks_ref(i1, i2) + erint*p_mat(i3, i4)
|
||||
END IF
|
||||
IF (i12 /= i34) THEN
|
||||
ks_ref(i3, i4) = ks_ref(i3, i4) + erint*p_mat(i1, i2)
|
||||
IF (i1 /= i2) THEN
|
||||
ks_ref(i3, i4) = ks_ref(i3, i4) + erint*p_mat(i1, i2)
|
||||
END IF
|
||||
END IF
|
||||
! Exchange
|
||||
erint = -0.5_dp*erint
|
||||
ks_ref(i1, i3) = ks_ref(i1, i3) + erint*p_mat(i2, i4)
|
||||
IF (i1 /= i2) THEN
|
||||
ks_ref(i2, i3) = ks_ref(i2, i3) + erint*p_mat(i1, i4)
|
||||
END IF
|
||||
IF (i3 /= i4) THEN
|
||||
ks_ref(i1, i4) = ks_ref(i1, i4) + erint*p_mat(i2, i3)
|
||||
END IF
|
||||
IF (i1 /= i2 .AND. i3 /= i4) THEN
|
||||
ks_ref(i2, i4) = ks_ref(i2, i4) + erint*p_mat(i1, i3)
|
||||
END IF
|
||||
END DO
|
||||
END IF
|
||||
END DO
|
||||
END DO
|
||||
!
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
ks_ref(i2, i1) = ks_ref(i1, i2)
|
||||
END DO
|
||||
END DO
|
||||
CALL mp_sum(ks_ref, eri%mp_group)
|
||||
|
||||
END SUBROUTINE build_subspace_fock_matrix
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief build subspace fockian for unrestricted spins
|
||||
!> \param norb number of orbitals
|
||||
!> \param eri_aa two electon integrals in MO with parallel spins
|
||||
!> \param eri_ab two electon integrals in MO with anti-parallel spins
|
||||
!> \param p_a_mat density matrix for up-spin
|
||||
!> \param p_b_mat density matrix for down-spin
|
||||
!> \param ks_a_ref fockian matrix for up-spin
|
||||
!> \param tr_mixed_eri boolean to indicate Coulomb interaction alignment
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE build_subspace_spin_fock_matrix(norb, eri_aa, eri_ab, p_a_mat, p_b_mat, ks_a_ref, tr_mixed_eri)
|
||||
INTEGER, INTENT(IN) :: norb
|
||||
TYPE(dbcsr_csr_type), INTENT(IN) :: eri_aa, eri_ab
|
||||
REAL(dp), DIMENSION(:, :), INTENT(IN) :: p_a_mat, p_b_mat
|
||||
REAL(dp), DIMENSION(:, :), INTENT(INOUT) :: ks_a_ref
|
||||
LOGICAL, INTENT(IN) :: tr_mixed_eri
|
||||
|
||||
INTEGER :: i1, i12, i12l, i2, i3, i34, i34l, i4, &
|
||||
irptr, nindex
|
||||
INTEGER, DIMENSION(2) :: irange
|
||||
REAL(dp) :: erint
|
||||
|
||||
nindex = (norb*(norb + 1))/2
|
||||
irange = get_irange_csr(nindex, eri_aa%mp_group)
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
i12 = csr_idx_to_combined(i1, i2, norb)
|
||||
IF (i12 >= irange(1) .AND. i12 <= irange(2)) THEN
|
||||
i12l = i12 - irange(1) + 1
|
||||
irptr = eri_aa%rowptr_local(i12l) - 1
|
||||
DO i34l = 1, eri_aa%nzerow_local(i12l)
|
||||
i34 = eri_aa%colind_local(irptr + i34l)
|
||||
CALL csr_idx_from_combined(i34, norb, i3, i4)
|
||||
erint = eri_aa%nzval_local%r_dp(irptr + i34l)
|
||||
! Coulomb
|
||||
!F_ij += (ij|kl)*d_kl
|
||||
ks_a_ref(i1, i2) = ks_a_ref(i1, i2) + erint*p_a_mat(i3, i4)
|
||||
IF (i12 /= i34) THEN
|
||||
!F_kl += (ij|kl)*d_ij
|
||||
ks_a_ref(i3, i4) = ks_a_ref(i3, i4) + erint*p_a_mat(i1, i2)
|
||||
END IF
|
||||
! Exchange
|
||||
erint = -1.0_dp*erint
|
||||
!F_ik -= (ij|kl)*d_jl
|
||||
ks_a_ref(i1, i3) = ks_a_ref(i1, i3) + erint*p_a_mat(i2, i4)
|
||||
IF (i1 /= i2) THEN
|
||||
!F_jk -= (ij|kl)*d_il
|
||||
ks_a_ref(i2, i3) = ks_a_ref(i2, i3) + erint*p_a_mat(i1, i4)
|
||||
END IF
|
||||
IF (i3 /= i4) THEN
|
||||
!F_il -= (ij|kl)*d_jk
|
||||
ks_a_ref(i1, i4) = ks_a_ref(i1, i4) + erint*p_a_mat(i2, i3)
|
||||
END IF
|
||||
IF (i1 /= i2 .AND. i3 /= i4) THEN
|
||||
!F_jl -= (ij|kl)*d_ik
|
||||
ks_a_ref(i2, i4) = ks_a_ref(i2, i4) + erint*p_a_mat(i1, i3)
|
||||
END IF
|
||||
END DO
|
||||
END IF
|
||||
END DO
|
||||
END DO
|
||||
!
|
||||
|
||||
irange = get_irange_csr(nindex, eri_ab%mp_group)
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
i12 = csr_idx_to_combined(i1, i2, norb)
|
||||
IF (i12 >= irange(1) .AND. i12 <= irange(2)) THEN
|
||||
i12l = i12 - irange(1) + 1
|
||||
irptr = eri_ab%rowptr_local(i12l) - 1
|
||||
DO i34l = 1, eri_ab%nzerow_local(i12l)
|
||||
i34 = eri_ab%colind_local(irptr + i34l)
|
||||
CALL csr_idx_from_combined(i34, norb, i3, i4)
|
||||
erint = eri_ab%nzval_local%r_dp(irptr + i34l)
|
||||
! Coulomb
|
||||
IF (tr_mixed_eri) THEN
|
||||
!F_kl += (kl beta|ij alpha )*d_alpha_ij
|
||||
ks_a_ref(i3, i4) = ks_a_ref(i3, i4) + erint*p_b_mat(i1, i2)
|
||||
ELSE
|
||||
!F_ij += (ij alpha|kl beta )*d_beta_kl
|
||||
ks_a_ref(i1, i2) = ks_a_ref(i1, i2) + erint*p_b_mat(i3, i4)
|
||||
ENDIF
|
||||
END DO
|
||||
END IF
|
||||
END DO
|
||||
END DO
|
||||
!
|
||||
DO i1 = 1, norb
|
||||
DO i2 = i1, norb
|
||||
ks_a_ref(i2, i1) = ks_a_ref(i1, i2)
|
||||
END DO
|
||||
END DO
|
||||
CALL mp_sum(ks_a_ref, eri_aa%mp_group)
|
||||
|
||||
END SUBROUTINE build_subspace_spin_fock_matrix
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief Creates a local basis
|
||||
!> \param pro_basis_set ...
|
||||
|
|
@ -1763,7 +2047,7 @@ CONTAINS
|
|||
CALL qs_rho_get(rho, rho_ao=rho_ao)
|
||||
|
||||
nspins = active_space_env%nspins
|
||||
p_ref => active_space_env%p_ref
|
||||
p_ref => active_space_env%p_active
|
||||
mos => active_space_env%mos_active
|
||||
DO ispin = 1, nspins
|
||||
pinact => active_space_env%pmat_inactive(ispin)%matrix
|
||||
|
|
@ -1856,10 +2140,35 @@ CONTAINS
|
|||
|
||||
! write to the actual file only on the master
|
||||
IF (this%unit_nr > 0) THEN
|
||||
WRITE (this%unit_nr, "(ES23.16,4I4)") val, i, j, k, l
|
||||
WRITE (this%unit_nr, "(ES23.16,4I4)") val, i + this%bra_start - 1, j + this%bra_start - 1, &
|
||||
& k + this%ket_start - 1, l + this%ket_start - 1
|
||||
END IF
|
||||
|
||||
cont = .TRUE.
|
||||
END FUNCTION eri_fcidump_print_func
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief checksum each value on the master node
|
||||
!> \param this object reference
|
||||
!> \param i i-index
|
||||
!> \param j j-index
|
||||
!> \param k k-index
|
||||
!> \param l l-index
|
||||
!> \param val value of the integral at (i,j,k.l)
|
||||
!> \return always true to dump all integrals
|
||||
! **************************************************************************************************
|
||||
LOGICAL FUNCTION eri_fcidump_checksum_func(this, i, j, k, l, val) RESULT(cont)
|
||||
CLASS(eri_fcidump_checksum), INTENT(inout) :: this
|
||||
INTEGER, INTENT(in) :: i, j, k, l
|
||||
REAL(KIND=dp), INTENT(in) :: val
|
||||
MARK_USED(i)
|
||||
MARK_USED(j)
|
||||
MARK_USED(k)
|
||||
MARK_USED(l)
|
||||
|
||||
this%checksum = this%checksum + ABS(val)
|
||||
|
||||
cont = .TRUE.
|
||||
END FUNCTION eri_fcidump_checksum_func
|
||||
|
||||
END MODULE qs_active_space_methods
|
||||
|
|
|
|||
|
|
@ -71,10 +71,10 @@ MODULE qs_active_space_types
|
|||
END TYPE eri_type_eri_element_func
|
||||
|
||||
TYPE active_space_type
|
||||
INTEGER :: nactive
|
||||
INTEGER :: ninactive
|
||||
INTEGER, DIMENSION(2) :: ninspin
|
||||
INTEGER, DIMENSION(2) :: nelectrons
|
||||
INTEGER :: nelec_active
|
||||
INTEGER :: nelec_inactive
|
||||
INTEGER, DIMENSION(2) :: nelec_inactive_spinwise
|
||||
INTEGER, DIMENSION(2) :: nelec_total
|
||||
INTEGER :: multiplicity
|
||||
INTEGER :: nspins
|
||||
LOGICAL :: molecule
|
||||
|
|
@ -86,7 +86,7 @@ MODULE qs_active_space_types
|
|||
TYPE(mo_set_p_type), DIMENSION(:), POINTER :: mos_active
|
||||
TYPE(mo_set_p_type), DIMENSION(:), POINTER :: mos_inactive
|
||||
TYPE(eri_type) :: eri
|
||||
TYPE(cp_fm_p_type), DIMENSION(:), POINTER :: p_ref
|
||||
TYPE(cp_fm_p_type), DIMENSION(:), POINTER :: p_active
|
||||
TYPE(cp_fm_p_type), DIMENSION(:), POINTER :: ks_sub
|
||||
TYPE(cp_fm_p_type), DIMENSION(:), POINTER :: vxc_sub
|
||||
TYPE(cp_fm_p_type), DIMENSION(:), POINTER :: h_sub
|
||||
|
|
@ -118,8 +118,8 @@ MODULE qs_active_space_types
|
|||
CONTAINS
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief ...
|
||||
!> \param active_space_env ...
|
||||
!> \brief Creates an active space environment type, nullifying all quantities.
|
||||
!> \param active_space_env the active space environment to be initialized
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE create_active_space_type(active_space_env)
|
||||
TYPE(active_space_type), POINTER :: active_space_env
|
||||
|
|
@ -130,15 +130,15 @@ CONTAINS
|
|||
|
||||
ALLOCATE (active_space_env)
|
||||
NULLIFY (active_space_env%mos_active, active_space_env%mos_inactive)
|
||||
NULLIFY (active_space_env%ks_sub, active_space_env%p_ref)
|
||||
NULLIFY (active_space_env%ks_sub, active_space_env%p_active)
|
||||
NULLIFY (active_space_env%vxc_sub, active_space_env%h_sub)
|
||||
NULLIFY (active_space_env%fock_sub, active_space_env%pmat_inactive)
|
||||
|
||||
END SUBROUTINE create_active_space_type
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief ...
|
||||
!> \param active_space_env ...
|
||||
!> \brief Releases all quantities in the active space environment.
|
||||
!> \param active_space_env the active space environment to be released
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE release_active_space_type(active_space_env)
|
||||
TYPE(active_space_type), POINTER :: active_space_env
|
||||
|
|
@ -163,11 +163,11 @@ CONTAINS
|
|||
|
||||
CALL release_eri_type(active_space_env%eri)
|
||||
|
||||
IF (ASSOCIATED(active_space_env%p_ref)) THEN
|
||||
DO isp = 1, SIZE(active_space_env%p_ref)
|
||||
CALL cp_fm_release(active_space_env%p_ref(isp)%matrix)
|
||||
IF (ASSOCIATED(active_space_env%p_active)) THEN
|
||||
DO isp = 1, SIZE(active_space_env%p_active)
|
||||
CALL cp_fm_release(active_space_env%p_active(isp)%matrix)
|
||||
END DO
|
||||
DEALLOCATE (active_space_env%p_ref)
|
||||
DEALLOCATE (active_space_env%p_active)
|
||||
END IF
|
||||
|
||||
IF (ASSOCIATED(active_space_env%ks_sub)) THEN
|
||||
|
|
@ -207,8 +207,8 @@ CONTAINS
|
|||
END SUBROUTINE release_active_space_type
|
||||
|
||||
! **************************************************************************************************
|
||||
!> \brief ...
|
||||
!> \param eri_env ...
|
||||
!> \brief Releases the ERI environment type.
|
||||
!> \param eri_env the ERI environment to be released
|
||||
! **************************************************************************************************
|
||||
SUBROUTINE release_eri_type(eri_env)
|
||||
TYPE(eri_type) :: eri_env
|
||||
|
|
@ -279,8 +279,8 @@ CONTAINS
|
|||
|
||||
! **************************************************************************************************
|
||||
!> \brief calculates index range for processor in group mp_group
|
||||
!> \param nindex ...
|
||||
!> \param mp_group ...
|
||||
!> \param nindex the number of indices
|
||||
!> \param mp_group message-passing group ID
|
||||
!> \return a range tuple
|
||||
!> \par History
|
||||
!> 04.2016 created [JGH]
|
||||
|
|
|
|||
33
tests/QS/regtest-as-1/TEST_FILES
Normal file
33
tests/QS/regtest-as-1/TEST_FILES
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# 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
|
||||
#
|
||||
h2_gapw_2-2.inp 1 1e-12 -1.12703481947359
|
||||
h2_gapw_2-2.inp 92 1e-8 4.08762365
|
||||
h2_gapw_2-3.inp 1 1e-12 -1.12703481947359
|
||||
h2_gapw_2-3.inp 92 1e-8 6.34129968
|
||||
h2_gapw_2-4.inp 1 1e-12 -1.12703481947359
|
||||
h2_gapw_2-4.inp 92 1e-8 10.57997133
|
||||
h2_gapw_pp_2-2.inp 1 1e-12 -1.12609343153655
|
||||
h2_gapw_pp_2-2.inp 92 1e-8 4.08439200
|
||||
h2_gapw_pp_2-3.inp 1 1e-12 -1.12609343153655
|
||||
h2_gapw_pp_2-3.inp 92 1e-8 6.33490411
|
||||
h2_gapw_pp_2-4.inp 1 1e-12 -1.12609343153655
|
||||
h2_gapw_pp_2-4.inp 92 1e-8 10.58497448
|
||||
h2_gpw_pp_2-2.inp 1 1e-12 -1.12622646044780
|
||||
h2_gpw_pp_2-2.inp 92 1e-8 4.08480362
|
||||
h2_gpw_pp_2-3.inp 1 1e-12 -1.12622646044780
|
||||
h2_gpw_pp_2-3.inp 92 1e-8 6.33542725
|
||||
h2_gpw_pp_2-4.inp 1 1e-12 -1.12622646044780
|
||||
h2_gpw_pp_2-4.inp 92 1e-8 10.58532335
|
||||
h2o_gapw_2-2.inp 1 1e-12 -76.011970410506123
|
||||
h2o_gapw_2-2.inp 92 1e-8 77.48403361
|
||||
ch2_gapw_2-3.inp 1 1e-12 -38.91914381184247
|
||||
ch2_gapw_2-3.inp 92 1e-8 50.38752107
|
||||
ch2_gapw_pp_2-3.inp 1 1e-12 -6.51646227467145
|
||||
ch2_gapw_pp_2-3.inp 92 1e-8 17.95445655
|
||||
ch2_gpw_pp_2-3.inp 1 1e-12 -6.51682932586237
|
||||
ch2_gpw_pp_2-3.inp 92 1e-8 17.95513412
|
||||
#EOF
|
||||
78
tests/QS/regtest-as-1/ch2_gapw_2-3.inp
Normal file
78
tests/QS/regtest-as-1/ch2_gapw_2-3.inp
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GAPW
|
||||
&END QS
|
||||
UKS TRUE
|
||||
MULTIPLICITY 3
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 17
|
||||
MAX_SCF 20
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 3 3
|
||||
INACTIVE_ELECTRONS 3 3
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
C 0.000 0.000 0.112
|
||||
H 0.000 0.974 0.335
|
||||
H 0.000 -0.974 -0.335
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL ALL
|
||||
&END KIND
|
||||
&KIND C
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL ALL
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT ch2_gapw
|
||||
&END GLOBAL
|
||||
78
tests/QS/regtest-as-1/ch2_gapw_pp_2-3.inp
Normal file
78
tests/QS/regtest-as-1/ch2_gapw_pp_2-3.inp
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GAPW
|
||||
&END QS
|
||||
UKS TRUE
|
||||
MULTIPLICITY 3
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 17
|
||||
MAX_SCF 20
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 3 3
|
||||
INACTIVE_ELECTRONS 2 2
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
C 0.000 0.000 0.112
|
||||
H 0.000 0.974 0.335
|
||||
H 0.000 -0.974 -0.335
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&KIND C
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT ch2_gapw_pp
|
||||
&END GLOBAL
|
||||
78
tests/QS/regtest-as-1/ch2_gpw_pp_2-3.inp
Normal file
78
tests/QS/regtest-as-1/ch2_gpw_pp_2-3.inp
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GPW
|
||||
&END QS
|
||||
UKS TRUE
|
||||
MULTIPLICITY 3
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 17
|
||||
MAX_SCF 20
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 3 3
|
||||
INACTIVE_ELECTRONS 2 2
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
C 0.000 0.000 0.112
|
||||
H 0.000 0.974 0.335
|
||||
H 0.000 -0.974 -0.335
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&KIND C
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT ch2_gpw_pp
|
||||
&END GLOBAL
|
||||
70
tests/QS/regtest-as-1/h2_gapw_2-2.inp
Normal file
70
tests/QS/regtest-as-1/h2_gapw_2-2.inp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GAPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 3
|
||||
MAX_SCF 10
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 2
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000 0.000 0.356
|
||||
H 0.000 0.000 -0.356
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL ALL
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gapw
|
||||
&END GLOBAL
|
||||
70
tests/QS/regtest-as-1/h2_gapw_2-3.inp
Normal file
70
tests/QS/regtest-as-1/h2_gapw_2-3.inp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GAPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 3
|
||||
MAX_SCF 10
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 3
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000 0.000 0.356
|
||||
H 0.000 0.000 -0.356
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL ALL
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gapw
|
||||
&END GLOBAL
|
||||
70
tests/QS/regtest-as-1/h2_gapw_2-4.inp
Normal file
70
tests/QS/regtest-as-1/h2_gapw_2-4.inp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GAPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 3
|
||||
MAX_SCF 10
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 4
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000 0.000 0.356
|
||||
H 0.000 0.000 -0.356
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL ALL
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gapw
|
||||
&END GLOBAL
|
||||
70
tests/QS/regtest-as-1/h2_gapw_pp_2-2.inp
Normal file
70
tests/QS/regtest-as-1/h2_gapw_pp_2-2.inp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GAPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 3
|
||||
MAX_SCF 10
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 2
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000 0.000 0.356
|
||||
H 0.000 0.000 -0.356
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gapw_pp
|
||||
&END GLOBAL
|
||||
70
tests/QS/regtest-as-1/h2_gapw_pp_2-3.inp
Normal file
70
tests/QS/regtest-as-1/h2_gapw_pp_2-3.inp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GAPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 3
|
||||
MAX_SCF 10
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 3
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000 0.000 0.356
|
||||
H 0.000 0.000 -0.356
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gapw_pp
|
||||
&END GLOBAL
|
||||
70
tests/QS/regtest-as-1/h2_gapw_pp_2-4.inp
Normal file
70
tests/QS/regtest-as-1/h2_gapw_pp_2-4.inp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GAPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 3
|
||||
MAX_SCF 10
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 4
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000 0.000 0.356
|
||||
H 0.000 0.000 -0.356
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gapw_pp
|
||||
&END GLOBAL
|
||||
70
tests/QS/regtest-as-1/h2_gpw_pp_2-2.inp
Normal file
70
tests/QS/regtest-as-1/h2_gpw_pp_2-2.inp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 3
|
||||
MAX_SCF 10
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 2
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000 0.000 0.356
|
||||
H 0.000 0.000 -0.356
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gpw_pp
|
||||
&END GLOBAL
|
||||
70
tests/QS/regtest-as-1/h2_gpw_pp_2-3.inp
Normal file
70
tests/QS/regtest-as-1/h2_gpw_pp_2-3.inp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 3
|
||||
MAX_SCF 10
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 3
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000 0.000 0.356
|
||||
H 0.000 0.000 -0.356
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gpw_pp
|
||||
&END GLOBAL
|
||||
70
tests/QS/regtest-as-1/h2_gpw_pp_2-4.inp
Normal file
70
tests/QS/regtest-as-1/h2_gpw_pp_2-4.inp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 3
|
||||
MAX_SCF 10
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 4
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
H 0.000 0.000 0.356
|
||||
H 0.000 0.000 -0.356
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL GTH-HF
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gpw_pp
|
||||
&END GLOBAL
|
||||
75
tests/QS/regtest-as-1/h2o_gapw_2-2.inp
Normal file
75
tests/QS/regtest-as-1/h2o_gapw_2-2.inp
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GAPW
|
||||
&END QS
|
||||
&XC
|
||||
&XC_FUNCTIONAL NONE
|
||||
&END XC_FUNCTIONAL
|
||||
&HF 1.0
|
||||
&END HF
|
||||
&END XC
|
||||
&POISSON
|
||||
POISSON_SOLVER ANALYTIC
|
||||
PERIODIC NONE
|
||||
&END POISSON
|
||||
&MGRID
|
||||
CUTOFF 500
|
||||
&END MGRID
|
||||
&SCF
|
||||
ADDED_MOS 17
|
||||
MAX_SCF 20
|
||||
&PRINT
|
||||
&RESTART OFF
|
||||
&END RESTART
|
||||
&END PRINT
|
||||
&END SCF
|
||||
&PRINT
|
||||
&AO_MATRICES
|
||||
CORE_HAMILTONIAN TRUE
|
||||
KINETIC_ENERGY TRUE
|
||||
POTENTIAL_ENERGY TRUE
|
||||
&END AO_MATRICES
|
||||
&ACTIVE_SPACE
|
||||
ACTIVE_ELECTRONS 2
|
||||
ACTIVE_ORBITALS 2
|
||||
ISOLATED_SYSTEM TRUE
|
||||
&ERI
|
||||
METHOD FULL_GPW
|
||||
PERIODICITY 0 0 0
|
||||
&END ERI
|
||||
&ERI_GPW
|
||||
CUTOFF 500
|
||||
&END ERI_GPW
|
||||
&FCIDUMP
|
||||
FILENAME __STD_OUT__
|
||||
&END FCIDUMP
|
||||
&END ACTIVE_SPACE
|
||||
&END PRINT
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC 6.0 6.0 6.0
|
||||
PERIODIC NONE
|
||||
&END CELL
|
||||
&COORD
|
||||
O 0.000 0.000 0.115
|
||||
H 0.000 0.754 -0.459
|
||||
H 0.000 -0.754 -0.459
|
||||
&END COORD
|
||||
&KIND H
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL ALL
|
||||
&END KIND
|
||||
&KIND O
|
||||
BASIS_SET 6-31G*
|
||||
POTENTIAL ALL
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
RUN_TYPE ENERGY
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT h2_gapw
|
||||
&END GLOBAL
|
||||
|
|
@ -272,3 +272,4 @@ QS/regtest-nlmo
|
|||
QS/regtest-hfx-ri libint
|
||||
Fist/regtest-gal19
|
||||
NNP/regtest-1
|
||||
QS/regtest-as-1 libint
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
91
|
||||
92
|
||||
Total energy:!3
|
||||
MD| Potential energy!5
|
||||
Total energy \[eV\]:!4
|
||||
|
|
@ -90,6 +90,7 @@ XAS excitation energy (eV): !7
|
|||
Electronic density on regular grids:!7
|
||||
Final localization: !3
|
||||
Ionization potentials for XPS !8
|
||||
FCIDUMP| Checksum: !3
|
||||
#
|
||||
# these are the tests the can be selected for regtesting.
|
||||
# do regtest will grep for test_grep (first column) and look if the numeric value
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue