10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-19 04:22:32 +01:00

Merge branch 'dev-stable' of github.com:quantumpackage/qp2 into dev-stable

This commit is contained in:
Anthony Scemama 2023-10-19 23:35:51 +02:00
commit b78bbda53b
16 changed files with 72 additions and 71 deletions

2
external/irpf90 vendored

@ -1 +1 @@
Subproject commit 0007f72f677fe7d61c5e1ed461882cb239517102 Subproject commit 4ab1b175fc7ed0d96c1912f13dc53579b24157a6

View File

@ -90,7 +90,7 @@ BEGIN_PROVIDER [ logical, ao_two_e_integrals_erf_in_map ]
if (write_ao_two_e_integrals_erf) then if (write_ao_two_e_integrals_erf) then
call ezfio_set_work_empty(.False.) call ezfio_set_work_empty(.False.)
call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_erf',ao_integrals_erf_map) call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_erf',ao_integrals_erf_map)
call ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf("Read") call ezfio_set_ao_two_e_ints_io_ao_two_e_integrals_erf('Read')
endif endif
END_PROVIDER END_PROVIDER

View File

@ -4,7 +4,7 @@ subroutine save_erf_two_e_integrals_ao
PROVIDE ao_two_e_integrals_erf_in_map PROVIDE ao_two_e_integrals_erf_in_map
call ezfio_set_work_empty(.False.) call ezfio_set_work_empty(.False.)
call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_erf',ao_integrals_erf_map) call map_save_to_disk(trim(ezfio_filename)//'/work/ao_ints_erf',ao_integrals_erf_map)
call ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf('Read') call ezfio_set_ao_two_e_ints_io_ao_two_e_integrals_erf('Read')
end end
subroutine save_erf_two_e_ints_ao_into_ints_ao subroutine save_erf_two_e_ints_ao_into_ints_ao

View File

@ -10,8 +10,8 @@ function run() {
qp set perturbation do_pt2 False qp set perturbation do_pt2 False
qp set determinants n_det_max 8000 qp set determinants n_det_max 8000
qp set determinants n_states 1 qp set determinants n_states 1
qp set davidson threshold_davidson 1.e-10 qp set davidson_keywords threshold_davidson 1.e-10
qp set davidson n_states_diag 8 qp set davidson_keywords n_states_diag 8
qp run fci qp run fci
energy1="$(ezfio get fci energy | tr '[]' ' ' | cut -d ',' -f 1)" energy1="$(ezfio get fci energy | tr '[]' ' ' | cut -d ',' -f 1)"
eq $energy1 $1 $thresh eq $energy1 $1 $thresh

View File

@ -9,8 +9,8 @@ function run_stoch() {
test_exe casscf || skip test_exe casscf || skip
qp set perturbation do_pt2 True qp set perturbation do_pt2 True
qp set determinants n_det_max $3 qp set determinants n_det_max $3
qp set davidson threshold_davidson 1.e-10 qp set davidson_keywords threshold_davidson 1.e-10
qp set davidson n_states_diag 4 qp set davidson_keywords n_states_diag 4
qp run casscf | tee casscf.out qp run casscf | tee casscf.out
energy1="$(ezfio get casscf energy_pt2 | tr '[]' ' ' | cut -d ',' -f 1)" energy1="$(ezfio get casscf energy_pt2 | tr '[]' ' ' | cut -d ',' -f 1)"
eq $energy1 $1 $thresh eq $energy1 $1 $thresh

View File

@ -9,7 +9,7 @@ function run() {
qp set_file $1 qp set_file $1
qp edit --check qp edit --check
qp set determinants n_states 3 qp set determinants n_states 3
qp set davidson threshold_davidson 1.e-12 qp set davidson_keywords threshold_davidson 1.e-12
qp set mo_two_e_ints io_mo_two_e_integrals Write qp set mo_two_e_ints io_mo_two_e_integrals Write
qp set_frozen_core qp set_frozen_core
qp run cis qp run cis
@ -59,7 +59,7 @@ function run() {
@test "ClO" { # 1.65582s 2.06465s @test "ClO" { # 1.65582s 2.06465s
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
run clo.ezfio -534.263560525680 -534.256601571199 -534.062020844428 run clo.ezfio -534.2635737789097 -534.2566081298855 -534.0620070783308
} }
@test "SO" { # 1.9667s 2.91234s @test "SO" { # 1.9667s 2.91234s
@ -69,7 +69,7 @@ function run() {
@test "OH" { # 2.201s 2.65573s @test "OH" { # 2.201s 2.65573s
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
run oh.ezfio -75.4314648243896 -75.4254639668256 -75.2707675632313 run oh.ezfio -75.4314822573358 -75.4254733392003 -75.2707586997333
} }
@test "H2O2" { # 2.27079s 3.07875s @test "H2O2" { # 2.27079s 3.07875s
@ -109,7 +109,7 @@ function run() {
@test "DHNO" { # 6.42976s 12.9899s @test "DHNO" { # 6.42976s 12.9899s
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
run dhno.ezfio -130.4472288472718 -130.3571808164850 -130.2196257046987 run dhno.ezfio -130.447238897118 -130.357186843611 -130.219626716369
} }
@test "CH4" { # 6.4969s 10.9157s @test "CH4" { # 6.4969s 10.9157s
@ -129,7 +129,7 @@ function run() {
@test "[Cu(NH3)4]2+" { # 29.7711s 3.45478m @test "[Cu(NH3)4]2+" { # 29.7711s 3.45478m
[[ -n ${TRAVIS} ]] && skip [[ -n ${TRAVIS} ]] && skip
run cu_nh3_4_2plus.ezfio -1862.97958885180 -1862.92457657404 -1862.91134959451 run cu_nh3_4_2plus.ezfio -1862.97958844302 -1862.92454785007 -1862.91130869967
} }

View File

@ -8,10 +8,9 @@ function run() {
test_exe cisd || skip test_exe cisd || skip
qp edit --check qp edit --check
qp set determinants n_states 2 qp set determinants n_states 2
qp set davidson threshold_davidson 1.e-12 qp set davidson_keywords threshold_davidson 1.e-12
qp set davidson n_states_diag 24 qp set davidson_keywords n_states_diag 24
qp run cis qp run cisd
qp run cisd
energy1="$(qp get cisd energy | tr '[]' ' ' | cut -d ',' -f 1)" energy1="$(qp get cisd energy | tr '[]' ' ' | cut -d ',' -f 1)"
energy2="$(qp get cisd energy | tr '[]' ' ' | cut -d ',' -f 2)" energy2="$(qp get cisd energy | tr '[]' ' ' | cut -d ',' -f 2)"
eq $energy1 $1 $thresh eq $energy1 $1 $thresh
@ -19,7 +18,7 @@ function run() {
} }
@test "B-B" { # @test "B-B" { #
qp set_file b2_stretched.ezfio qp set_file b2_stretched.ezfio
qp set_frozen_core qp set_frozen_core
run -49.120607088648597 -49.055152453388231 run -49.120607088648597 -49.055152453388231
@ -34,7 +33,7 @@ function run() {
@test "HBO" { # 4.42968s 19.6099s @test "HBO" { # 4.42968s 19.6099s
qp set_file hbo.ezfio qp set_file hbo.ezfio
qp set_frozen_core qp set_frozen_core
run -100.2019254455993 -99.79484127741013 run -100.2019254455993 -99.79484127741013
} }
@test "HCO" { # 6.6077s 28.6801s @test "HCO" { # 6.6077s 28.6801s
@ -46,7 +45,7 @@ function run() {
@test "H2O" { # 7.0651s 30.6642s @test "H2O" { # 7.0651s 30.6642s
qp set_file h2o.ezfio qp set_file h2o.ezfio
qp set_frozen_core qp set_frozen_core
run -76.22975602077072 -75.80609108747208 run -76.22975602077072 -75.80609108747208
} }
@ -78,7 +77,7 @@ function run() {
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
qp set_file oh.ezfio qp set_file oh.ezfio
qp set_frozen_core qp set_frozen_core
run -75.6087472926588 -75.5370393736601 run -75.6088105201621 -75.5370802925698
} }
@test "CH4" { # 19.821s 1.38648m @test "CH4" { # 19.821s 1.38648m
@ -105,8 +104,9 @@ function run() {
@test "DHNO" { # 24.7077s 1.46487m @test "DHNO" { # 24.7077s 1.46487m
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
qp set_file dhno.ezfio qp set_file dhno.ezfio
qp set_mo_class --core="[1-7]" --act="[8-64]" qp set_mo_class --core="[1-7]" --act="[8-64]"
run -130.458814562403 -130.356308303681 run -130.4659881027444 -130.2692384198501
# run -130.458814562403 -130.356308303681
} }
@test "H3COH" { # 24.7248s 1.85043m @test "H3COH" { # 24.7248s 1.85043m
@ -120,7 +120,7 @@ function run() {
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
qp set_file cu_nh3_4_2plus.ezfio qp set_file cu_nh3_4_2plus.ezfio
qp set_mo_class --core="[1-24]" --act="[25-45]" --del="[46-87]" qp set_mo_class --core="[1-24]" --act="[25-45]" --del="[46-87]"
run -1862.98689579931 -1862.6883044626563 run -1862.98310702274 -1862.88506319755
} }
@ -135,14 +135,14 @@ function run() {
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
qp set_file c2h2.ezfio qp set_file c2h2.ezfio
qp set_mo_class --act="[1-30]" --del="[31-36]" qp set_mo_class --act="[1-30]" --del="[31-36]"
run -12.3566731164213 -11.9495394759914 run -12.3566731164213 -11.9495394759914
} }
@test "ClO" { # 37.6949s @test "ClO" { # 37.6949s
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
qp set_file clo.ezfio qp set_file clo.ezfio
qp set_frozen_core qp set_frozen_core
run -534.5404021326773 -534.3818725793897 run -534.540464615019 -534.381904487587
} }
@test "F2" { # 45.2078s @test "F2" { # 45.2078s
@ -155,7 +155,7 @@ function run() {
@test "SO2" { # 47.6922s @test "SO2" { # 47.6922s
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
qp set_file so2.ezfio qp set_file so2.ezfio
qp set_mo_class --core="[1-8]" --act="[9-87]" qp set_mo_class --core="[1-8]" --act="[9-87]"
run -41.5746738710350 -41.3800467740750 run -41.5746738710350 -41.3800467740750
} }
@ -177,7 +177,7 @@ function run() {
[[ -n $TRAVIS ]] && skip [[ -n $TRAVIS ]] && skip
qp set_file n2.ezfio qp set_file n2.ezfio
qp set_mo_class --core="[1,2]" --act="[3-40]" --del="[41-60]" qp set_mo_class --core="[1,2]" --act="[3-40]" --del="[41-60]"
run -109.275693633982 -108.757794570948 run -109.275693633982 -108.757794570948
} }
@test "HCN" { # 133.8696s @test "HCN" { # 133.8696s

View File

@ -3,7 +3,7 @@ BEGIN_PROVIDER [double precision, mu_erf_dft]
BEGIN_DOC BEGIN_DOC
! range separation parameter used in RS-DFT. ! range separation parameter used in RS-DFT.
! !
! It is set to mu_erf in order to be consistent with the module "ao_two_e_erf_ints" ! It is set to mu_erf in order to be consistent with the module "hamiltonian"
END_DOC END_DOC
mu_erf_dft = mu_erf mu_erf_dft = mu_erf

View File

@ -13,7 +13,7 @@ function run() {
qp set scf_utils thresh_scf 1.e-10 qp set scf_utils thresh_scf 1.e-10
qp set dft_keywords exchange_functional $functional qp set dft_keywords exchange_functional $functional
qp set dft_keywords correlation_functional $functional qp set dft_keywords correlation_functional $functional
qp set ao_two_e_erf_ints mu_erf 0.5 qp set hamiltonian mu_erf 0.5
qp set becke_numerical_grid grid_type_sgn 1 qp set becke_numerical_grid grid_type_sgn 1
qp_reset --mos $1 qp_reset --mos $1
qp run rs_ks_scf qp run rs_ks_scf

View File

@ -9,25 +9,27 @@ subroutine mo_two_e_integrals_erf_index(i,j,k,l,i1)
integer(key_kind) :: p,q,r,s,i2 integer(key_kind) :: p,q,r,s,i2
p = min(i,k) p = min(i,k)
r = max(i,k) r = max(i,k)
p = p+ishft(r*r-r,-1) p = p+shiftr(r*r-r,1)
q = min(j,l) q = min(j,l)
s = max(j,l) s = max(j,l)
q = q+ishft(s*s-s,-1) q = q+shiftr(s*s-s,1)
i1 = min(p,q) i1 = min(p,q)
i2 = max(p,q) i2 = max(p,q)
i1 = i1+ishft(i2*i2-i2,-1) i1 = i1+shiftr(i2*i2-i2,1)
end end
BEGIN_PROVIDER [ logical, mo_two_e_integrals_erf_in_map ] BEGIN_PROVIDER [ logical, mo_two_e_integrals_erf_in_map ]
use map_module use map_module
implicit none implicit none
integer(bit_kind) :: mask_ijkl(N_int,4)
integer(bit_kind) :: mask_ijk(N_int,3)
BEGIN_DOC BEGIN_DOC
! If True, the map of MO two-electron integrals is provided ! If True, the map of MO two-electron integrals is provided
END_DOC END_DOC
integer(bit_kind) :: mask_ijkl(N_int,4)
integer(bit_kind) :: mask_ijk(N_int,3)
double precision :: cpu_1, cpu_2, wall_1, wall_2
PROVIDE mo_class
real :: map_mb real :: map_mb
@ -55,7 +57,7 @@ BEGIN_PROVIDER [ logical, mo_two_e_integrals_erf_in_map ]
if (write_mo_two_e_integrals_erf) then if (write_mo_two_e_integrals_erf) then
call ezfio_set_work_empty(.False.) call ezfio_set_work_empty(.False.)
call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_erf',mo_integrals_erf_map) call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_erf',mo_integrals_erf_map)
call ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf("Read") call ezfio_set_mo_two_e_ints_io_mo_two_e_integrals_erf("Read")
endif endif
END_PROVIDER END_PROVIDER

View File

@ -4,7 +4,7 @@ subroutine save_erf_two_e_integrals_mo
PROVIDE mo_two_e_integrals_erf_in_map PROVIDE mo_two_e_integrals_erf_in_map
call ezfio_set_work_empty(.False.) call ezfio_set_work_empty(.False.)
call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_erf',mo_integrals_erf_map) call map_save_to_disk(trim(ezfio_filename)//'/work/mo_ints_erf',mo_integrals_erf_map)
call ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf('Read') call ezfio_set_mo_two_e_ints_io_mo_two_e_integrals_erf('Read')
end end

View File

@ -128,7 +128,7 @@
BEGIN_PROVIDER [double precision, mu_average_prov, (N_states)] BEGIN_PROVIDER [double precision, mu_average_prov, (N_states)]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! average value of mu(r) weighted with the total one-e density and divised by the number of electrons ! average value of mu(r) weighted with the total one-e density and divided by the number of electrons
! !
! !!!!!! WARNING !!!!!! if no_core_density == .True. then all contributions from the core orbitals ! !!!!!! WARNING !!!!!! if no_core_density == .True. then all contributions from the core orbitals
! !

View File

@ -47,7 +47,7 @@
call total_memory(mem) call total_memory(mem)
mem = max(1.d0, qp_max_mem - mem) mem = max(1.d0, qp_max_mem - mem)
n_double = mem * 1.d8 n_double = mem * 1.d8
n_blocks = min(n_double / (n_points_extra_final_grid * 4), 1.d0*n_points_final_grid) n_blocks = int(min(n_double / (n_points_extra_final_grid * 4.d0), 1.d0*n_points_final_grid))
n_rest = int(mod(n_points_final_grid, n_blocks)) n_rest = int(mod(n_points_final_grid, n_blocks))
n_pass = int((n_points_final_grid - n_rest) / n_blocks) n_pass = int((n_points_final_grid - n_rest) / n_blocks)

View File

@ -8,15 +8,15 @@ function run_Ne() {
rm -rf Ne_tc_scf rm -rf Ne_tc_scf
echo Ne > Ne.xyz echo Ne > Ne.xyz
qp create_ezfio -b cc-pcvdz Ne.xyz -o Ne_tc_scf qp create_ezfio -b cc-pcvdz Ne.xyz -o Ne_tc_scf
qp run scf qp run scf
qp set ao_two_e_erf_ints mu_erf 0.87 qp set hamiltonian mu_erf 0.87
qp set tc_keywords j1b_type 3 qp set tc_keywords j1b_type 3
qp set tc_keywords j1b_pen [1.5] qp set tc_keywords j1b_pen [1.5]
qp set tc_keywords bi_ortho True qp set tc_keywords bi_ortho True
qp set tc_keywords test_cycle_tc True qp set tc_keywords test_cycle_tc True
qp run tc_scf | tee ${EZFIO_FILE}.tc_scf.out qp run tc_scf | tee ${EZFIO_FILE}.tc_scf.out
eref=-128.552134 eref=-128.552134
energy="$(qp get tc_scf bitc_energy)" energy="$(qp get tc_scf bitc_energy)"
eq $energy $eref 1e-6 eq $energy $eref 1e-6
@ -24,22 +24,22 @@ function run_Ne() {
@test "Ne" { @test "Ne" {
run_Ne run_Ne
} }
function run_C() { function run_C() {
rm -rf C_tc_scf rm -rf C_tc_scf
echo C > C.xyz echo C > C.xyz
qp create_ezfio -b cc-pcvdz C.xyz -o C_tc_scf -m 3 qp create_ezfio -b cc-pcvdz C.xyz -o C_tc_scf -m 3
qp run scf qp run scf
qp set ao_two_e_erf_ints mu_erf 0.87 qp set hamiltonian mu_erf 0.87
qp set tc_keywords j1b_type 3 qp set tc_keywords j1b_type 3
qp set tc_keywords j1b_pen [1.5] qp set tc_keywords j1b_pen [1.5]
qp set tc_keywords bi_ortho True qp set tc_keywords bi_ortho True
qp set tc_keywords test_cycle_tc True qp set tc_keywords test_cycle_tc True
qp run tc_scf | tee ${EZFIO_FILE}.tc_scf.out qp run tc_scf | tee ${EZFIO_FILE}.tc_scf.out
eref=-37.691254356408791 eref=-37.691254356408791
energy="$(qp get tc_scf bitc_energy)" energy="$(qp get tc_scf bitc_energy)"
eq $energy $eref 1e-6 eq $energy $eref 1e-6
@ -47,7 +47,7 @@ function run_C() {
@test "C" { @test "C" {
run_C run_C
} }
@ -55,15 +55,15 @@ function run_O() {
rm -rf O_tc_scf rm -rf O_tc_scf
echo O > O.xyz echo O > O.xyz
qp create_ezfio -b cc-pcvdz O.xyz -o O_tc_scf -m 3 qp create_ezfio -b cc-pcvdz O.xyz -o O_tc_scf -m 3
qp run scf qp run scf
qp set ao_two_e_erf_ints mu_erf 0.87 qp set hamiltonian mu_erf 0.87
qp set tc_keywords j1b_type 3 qp set tc_keywords j1b_type 3
qp set tc_keywords j1b_pen [1.5] qp set tc_keywords j1b_pen [1.5]
qp set tc_keywords bi_ortho True qp set tc_keywords bi_ortho True
qp set tc_keywords test_cycle_tc True qp set tc_keywords test_cycle_tc True
qp run tc_scf | tee ${EZFIO_FILE}.tc_scf.out qp run tc_scf | tee ${EZFIO_FILE}.tc_scf.out
eref=-74.814687229354590 eref=-74.814687229354590
energy="$(qp get tc_scf bitc_energy)" energy="$(qp get tc_scf bitc_energy)"
eq $energy $eref 1e-6 eq $energy $eref 1e-6
@ -71,7 +71,7 @@ function run_O() {
@test "O" { @test "O" {
run_O run_O
} }
@ -79,16 +79,16 @@ function run_O() {
function run_ch2() { function run_ch2() {
rm -rf ch2_tc_scf rm -rf ch2_tc_scf
cp ${QP_ROOT}/tests/input/ch2.xyz . cp ${QP_ROOT}/tests/input/ch2.xyz .
qp create_ezfio -b "C:cc-pcvdz|H:cc-pvdz" ch2.xyz -o ch2_tc_scf qp create_ezfio -b "C:cc-pcvdz|H:cc-pvdz" ch2.xyz -o ch2_tc_scf
qp run scf qp run scf
qp set ao_two_e_erf_ints mu_erf 0.87 qp set hamiltonian mu_erf 0.87
qp set tc_keywords j1b_type 3 qp set tc_keywords j1b_type 3
qp set tc_keywords j1b_pen '[1.5,10000,10000]' qp set tc_keywords j1b_pen '[1.5,10000,10000]'
qp set tc_keywords bi_ortho True qp set tc_keywords bi_ortho True
qp set tc_keywords test_cycle_tc True qp set tc_keywords test_cycle_tc True
qp run tc_scf | tee ${EZFIO_FILE}.tc_scf.out qp run tc_scf | tee ${EZFIO_FILE}.tc_scf.out
eref=-38.903247818077737 eref=-38.903247818077737
energy="$(qp get tc_scf bitc_energy)" energy="$(qp get tc_scf bitc_energy)"
eq $energy $eref 1e-6 eq $energy $eref 1e-6
@ -96,6 +96,6 @@ function run_ch2() {
@test "ch2" { @test "ch2" {
run_ch2 run_ch2
} }

View File

@ -95,7 +95,12 @@ BEGIN_PROVIDER [double precision, diag_three_elem_hf]
if(.not. three_body_h_tc) then if(.not. three_body_h_tc) then
diag_three_elem_hf = 0.d0 if(noL_standard) then
PROVIDE noL_0e
diag_three_elem_hf = noL_0e
else
diag_three_elem_hf = 0.d0
endif
else else

View File

@ -71,10 +71,7 @@ subroutine rh_tcscf_diis()
etc_tot = TC_HF_energy etc_tot = TC_HF_energy
etc_1e = TC_HF_one_e_energy etc_1e = TC_HF_one_e_energy
etc_2e = TC_HF_two_e_energy etc_2e = TC_HF_two_e_energy
etc_3e = 0.d0 etc_3e = diag_three_elem_hf
if(three_body_h_tc) then
etc_3e = diag_three_elem_hf
endif
!tc_grad = grad_non_hermit !tc_grad = grad_non_hermit
er_DIIS = maxval(abs(FQS_SQF_mo)) er_DIIS = maxval(abs(FQS_SQF_mo))
e_delta = dabs(etc_tot - e_save) e_delta = dabs(etc_tot - e_save)
@ -202,10 +199,7 @@ subroutine rh_tcscf_diis()
etc_tot = TC_HF_energy etc_tot = TC_HF_energy
etc_1e = TC_HF_one_e_energy etc_1e = TC_HF_one_e_energy
etc_2e = TC_HF_two_e_energy etc_2e = TC_HF_two_e_energy
etc_3e = 0.d0 etc_3e = diag_three_elem_hf
if(three_body_h_tc) then
etc_3e = diag_three_elem_hf
endif
!tc_grad = grad_non_hermit !tc_grad = grad_non_hermit
er_DIIS = maxval(abs(FQS_SQF_mo)) er_DIIS = maxval(abs(FQS_SQF_mo))
e_delta = dabs(etc_tot - e_save) e_delta = dabs(etc_tot - e_save)