129 LOGICAL,
INTENT(IN) :: calc_forces
131 CHARACTER(len=*),
PARAMETER :: routinen =
'mp2_main'
133 INTEGER :: bin, cholesky_method, dimen, handle, handle2, i, i_thread, iatom, ii, ikind, &
134 irep, ispin, max_nset, my_bin_size, n_rep_hf, n_threads, nao, natom, ndep, &
135 nfullcols_total, nfullrows_total, nkind, nmo, nspins, unit_nr
136 INTEGER(KIND=int_8) :: mem
137 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: kind_of, nelec
138 LOGICAL :: calc_ex, do_admm, do_admm_rpa_exx, do_dynamic_load_balancing, do_exx, do_gw, &
139 do_im_time, do_kpoints_cubic_rpa, free_hfx_buffer, reuse_hfx, update_xc_energy
140 REAL(kind=
dp) :: e_admm_from_gw(2), e_ex_from_gw, emp2, emp2_aa, emp2_aa_cou, emp2_aa_ex, &
141 emp2_ab, emp2_ab_cou, emp2_ab_ex, emp2_bb, emp2_bb_cou, emp2_bb_ex, emp2_cou, emp2_ex, &
142 emp2_s, emp2_t, maxocc, mem_real, t1, t2, t3
143 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: evals
144 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: auto
145 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: c
146 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mo_eigenvalues
151 TYPE(
cp_fm_type) :: evecs, fm_matrix_ks, fm_matrix_s, &
153 TYPE(
cp_fm_type),
POINTER :: fm_matrix_ks_red, fm_matrix_s_red, &
154 fm_work_red, mo_coeff
156 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_s
157 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_ks_transl, matrix_s_kp
164 TYPE(
hfx_type),
POINTER :: actual_x_data
166 TYPE(
mo_set_type),
ALLOCATABLE,
DIMENSION(:) :: mos_mp2
173 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
180 IF (qs_env%mp2_env%hf_fail)
THEN
181 CALL cp_abort(__location__,
"SCF not converged: "// &
182 "not possible to run MP2")
185 NULLIFY (virial, dft_control, blacs_env, kpoints, fm_matrix_s_red, fm_matrix_ks_red, fm_work_red)
186 CALL timeset(routinen, handle)
191 do_kpoints_cubic_rpa = qs_env%mp2_env%ri_rpa_im_time%do_im_time_kpoints
194 IF (do_kpoints_cubic_rpa)
THEN
198 atomic_kind_set=atomic_kind_set, &
199 qs_kind_set=qs_kind_set, &
200 dft_control=dft_control, &
201 particle_set=particle_set, &
203 blacs_env=blacs_env, &
207 scf_control=scf_control, &
208 matrix_ks_kp=matrix_ks_transl, &
209 matrix_s_kp=matrix_s_kp, &
212 CALL get_gamma(matrix_s, matrix_ks, mos, &
213 matrix_s_kp, matrix_ks_transl, kpoints)
219 atomic_kind_set=atomic_kind_set, &
220 qs_kind_set=qs_kind_set, &
221 dft_control=dft_control, &
222 particle_set=particle_set, &
224 blacs_env=blacs_env, &
228 scf_control=scf_control, &
230 matrix_ks=matrix_ks, &
243 ALLOCATE (ex_env%matrix_ks(ispin)%matrix)
244 CALL dbcsr_create(ex_env%matrix_ks(ispin)%matrix, template=matrix_s(1)%matrix)
245 CALL dbcsr_copy(ex_env%matrix_ks(ispin)%matrix, matrix_ks(ispin)%matrix)
251 IF (unit_nr > 0)
THEN
255 WRITE (unit_nr,
'(T2,A)')
'MP2 section'
256 WRITE (unit_nr,
'(T2,A)')
'-----------'
261 WRITE (unit_nr,
'(T2,A)')
'RI-RPA section'
262 WRITE (unit_nr,
'(T2,A)')
'--------------'
267 IF (calc_forces)
THEN
276 cpabort(
"No forces/gradients for the selected method.")
280 IF (.NOT. do_kpoints_cubic_rpa)
THEN
281 IF (virial%pv_availability .AND. (.NOT. virial%pv_numer) .AND. mp2_env%eri_method ==
do_eri_mme)
THEN
282 cpabort(
"analytical stress not implemented with ERI_METHOD = MME")
286 IF (mp2_env%do_im_time .AND. mp2_env%eri_method .NE.
do_eri_gpw)
THEN
287 mp2_env%mp2_num_proc = 1
290 IF (mp2_env%mp2_num_proc < 1 .OR. mp2_env%mp2_num_proc > para_env%num_pe)
THEN
291 cpwarn(
"GROUP_SIZE is reset because of a too small or too large value.")
292 mp2_env%mp2_num_proc = max(min(para_env%num_pe, mp2_env%mp2_num_proc), 1)
295 IF (mod(para_env%num_pe, mp2_env%mp2_num_proc) /= 0)
THEN
296 cpabort(
"GROUP_SIZE must be a divisor of the total number of MPI ranks!")
299 IF (.NOT. mp2_env%do_im_time)
THEN
300 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T76,I5)')
'Used number of processes per group:', mp2_env%mp2_num_proc
301 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T68,F9.2,A4)')
'Maximum allowed memory usage per MPI process:', &
302 mp2_env%mp2_memory,
' MiB'
310 mem_real = (mem + 1024*1024 - 1)/(1024*1024)
311 CALL para_env%max(mem_real)
312 mp2_env%mp2_memory = mp2_env%mp2_memory - mem_real
313 IF (mp2_env%mp2_memory < 0.0_dp) mp2_env%mp2_memory = 1.0_dp
315 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T68,F9.2,A4)')
'Available memory per MPI process for MP2:', &
316 mp2_env%mp2_memory,
' MiB'
319 IF (unit_nr > 0)
CALL m_flush(unit_nr)
321 nspins = dft_control%nspins
322 natom =
SIZE(particle_set, 1)
325 nkind =
SIZE(atomic_kind_set, 1)
327 do_admm_rpa_exx = mp2_env%ri_rpa%do_admm
328 IF (do_admm_rpa_exx .AND. .NOT. dft_control%do_admm)
THEN
329 cpabort(
"Need an ADMM input section for ADMM RI_RPA EXX to work")
331 IF (do_admm_rpa_exx)
THEN
340 ikind = kind_of(iatom)
341 dimen = dimen + sum(basis_parameter(ikind)%nsgf)
342 max_nset = max(max_nset, basis_parameter(ikind)%nset)
350 CALL dbcsr_get_info(matrix_s(1)%matrix, nfullrows_total=nfullrows_total, nfullcols_total=nfullcols_total)
352 ncol_global=nfullcols_total, para_env=para_env)
353 CALL cp_fm_create(fm_matrix_s, fm_struct, name=
"fm_matrix_s")
356 CALL cp_fm_create(fm_matrix_ks, fm_struct, name=
"fm_matrix_ks")
358 CALL cp_fm_create(fm_matrix_work, fm_struct, name=
"fm_matrix_work")
364 ALLOCATE (nelec(nspins))
366 ALLOCATE (evals(nao))
378 IF (evals(ii) > scf_control%eps_eigval)
THEN
386 CALL get_mo_set(mo_set=mos(ispin), nelectron=nelec(ispin))
388 IF (maxval(nelec)/(3 - nspins) > nmo)
THEN
390 cpabort(
"Not enough MOs found!")
394 evals(1:ndep) = 0.0_dp
396 evals(ndep + 1:nao) = 1.0_dp/sqrt(evals(ndep + 1:nao))
399 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T76,I5)')
'Number of removed MOs:', ndep
400 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T76,I5)')
'Number of available MOs:', nmo
404 CALL cp_fm_struct_create(fm_struct, template_fmstruct=fm_matrix_s%matrix_struct, ncol_global=nmo)
406 ALLOCATE (fm_matrix_s_red, fm_work_red)
411 ALLOCATE (fm_matrix_ks_red)
413 nrow_global=nmo, ncol_global=nmo)
418 CALL cp_fm_to_fm(evecs, fm_matrix_s_red, nmo, ndep + 1)
422 CALL parallel_gemm(
"N",
"T", nao, nao, nmo, 1.0_dp, fm_matrix_s_red, evecs, &
423 0.0_dp, fm_matrix_s, b_first_col=ndep + 1)
428 CALL cp_fm_syrk(
"U",
"N", nao, 1.0_dp, evecs, 1, 1, 0.0_dp, fm_matrix_s)
441 ALLOCATE (mos_mp2(nspins))
444 CALL get_mo_set(mo_set=mos(ispin), maxocc=maxocc, nelectron=nelec(ispin))
449 nelectron=nelec(ispin), &
450 n_el_f=real(nelec(ispin),
dp), &
452 flexible_electron_count=dft_control%relax_multiplicity)
456 ncol_global=nmo, para_env=para_env, &
460 fm_struct=fm_struct, &
468 IF (dft_control%do_admm)
THEN
474 IF (dft_control%do_admm)
THEN
482 mo_set=mos_mp2(ispin), &
484 work=fm_matrix_work, &
485 cholesky_method=cholesky_method, &
486 do_level_shift=.false., &
487 level_shift=0.0_dp, &
492 IF (
ASSOCIATED(fm_matrix_s_red))
THEN
494 mo_set=mos_mp2(ispin), &
496 work=fm_matrix_work, &
497 do_level_shift=.false., &
498 level_shift=0.0_dp, &
499 use_jacobi=.false., &
500 jacobi_threshold=0.0_dp, &
501 ortho_red=fm_matrix_s_red, &
502 matrix_ks_fm_red=fm_matrix_ks_red, &
503 work_red=fm_work_red)
506 mo_set=mos_mp2(ispin), &
508 work=fm_matrix_work, &
509 do_level_shift=.false., &
510 level_shift=0.0_dp, &
511 use_jacobi=.false., &
512 jacobi_threshold=0.0_dp)
516 CALL get_mo_set(mos_mp2(ispin), mo_coeff=mo_coeff)
522 IF (
ASSOCIATED(fm_matrix_s_red))
THEN
524 DEALLOCATE (fm_matrix_s_red)
526 IF (
ASSOCIATED(fm_matrix_ks_red))
THEN
528 DEALLOCATE (fm_matrix_ks_red)
530 IF (
ASSOCIATED(fm_work_red))
THEN
532 DEALLOCATE (fm_work_red)
539 ALLOCATE (mp2_biel%index_table(natom, max_nset))
541 CALL build_index_table(natom, max_nset, mp2_biel%index_table, basis_parameter, kind_of)
544 free_hfx_buffer = .false.
545 IF (
ASSOCIATED(qs_env%x_data))
THEN
546 free_hfx_buffer = .true.
547 IF (calc_forces .AND. (.NOT. mp2_env%ri_grad%free_hfx_buffer)) free_hfx_buffer = .false.
548 IF (qs_env%x_data(1, 1)%do_hfx_ri) free_hfx_buffer = .false.
549 IF (calc_forces .AND. mp2_env%do_im_time) free_hfx_buffer = .false.
550 IF (mp2_env%ri_rpa%reuse_hfx) free_hfx_buffer = .false.
553 IF (.NOT. do_kpoints_cubic_rpa)
THEN
554 IF (virial%pv_numer)
THEN
556 free_hfx_buffer = .false.
557 mp2_env%ri_grad%free_hfx_buffer = free_hfx_buffer
563 IF (mp2_env%ri_rpa%do_ri_g0w0)
THEN
567 IF (free_hfx_buffer)
THEN
568 CALL timeset(routinen//
"_free_hfx", handle2)
573 DO irep = 1, n_rep_hf
574 DO i_thread = 0, n_threads - 1
575 actual_x_data => qs_env%x_data(irep, i_thread + 1)
577 do_dynamic_load_balancing = .true.
578 IF (n_threads == 1 .OR. actual_x_data%memory_parameter%do_disk_storage) do_dynamic_load_balancing = .false.
580 IF (do_dynamic_load_balancing)
THEN
581 my_bin_size =
SIZE(actual_x_data%distribution_energy)
586 IF (.NOT. actual_x_data%memory_parameter%do_all_on_the_fly)
THEN
587 CALL dealloc_containers(actual_x_data%store_ints, actual_x_data%memory_parameter%actual_memory_usage)
591 CALL timestop(handle2)
600 SELECT CASE (mp2_env%method)
602 IF (unit_nr > 0)
WRITE (unit_nr, *)
604 ALLOCATE (auto(dimen, nspins))
605 ALLOCATE (c(dimen, dimen, nspins))
610 eigenvalues=mo_eigenvalues, &
614 auto(:, ispin) = mo_eigenvalues(:)
617 IF (nspins == 2)
THEN
618 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A)')
'Unrestricted Canonical Direct Methods:'
626 mp2_env, c(:, :, 1), auto(:, 1), emp2_aa, emp2_aa_cou, emp2_aa_ex, &
627 qs_env, para_env, unit_nr)
628 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy Alpha-Alpha = ', emp2_aa
629 IF (unit_nr > 0)
WRITE (unit_nr, *)
635 c(:, :, 2), auto(:, 2), emp2_bb, emp2_bb_cou, emp2_bb_ex, &
636 qs_env, para_env, unit_nr)
637 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy Beta-Beta= ', emp2_bb
638 IF (unit_nr > 0)
WRITE (unit_nr, *)
643 CALL mp2_direct_energy(dimen, nelec(1), nelec(2), mp2_biel, mp2_env, c(:, :, 1), &
644 auto(:, 1), emp2_ab, emp2_ab_cou, emp2_ab_ex, &
645 qs_env, para_env, unit_nr, c(:, :, 2), auto(:, 2))
646 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy Alpha-Beta= ', emp2_ab
647 IF (unit_nr > 0)
WRITE (unit_nr, *)
649 emp2 = emp2_aa + emp2_bb + emp2_ab*2.0_dp
650 emp2_cou = emp2_aa_cou + emp2_bb_cou + emp2_ab_cou*2.0_dp
651 emp2_ex = emp2_aa_ex + emp2_bb_ex + emp2_ab_ex*2.0_dp
653 emp2_s = emp2_ab*2.0_dp
654 emp2_t = emp2_aa + emp2_bb
658 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A)')
'Canonical Direct Methods:'
661 c(:, :, 1), auto(:, 1), emp2, emp2_cou, emp2_ex, &
662 qs_env, para_env, unit_nr)
670 IF (unit_nr > 0)
THEN
672 WRITE (unit_nr,
'(T3,A)')
'Optimization of the auxiliary RI-MP2 basis'
676 ALLOCATE (auto(dimen, nspins))
677 ALLOCATE (c(dimen, dimen, nspins))
682 eigenvalues=mo_eigenvalues, &
686 auto(:, ispin) = mo_eigenvalues(:)
690 IF (nspins == 2)
THEN
692 mp2_biel, mp2_env, c(:, :, 1), auto(:, 1), &
693 kind_of, qs_env, para_env, unit_nr, &
694 nelec(2), c(:, :, 2), auto(:, 2))
698 mp2_biel, mp2_env, c(:, :, 1), auto(:, 1), &
699 kind_of, qs_env, para_env, unit_nr)
706 IF (mp2_env%scale_T == 0.0_dp .AND. (nspins == 2)) calc_ex = .false.
709 CALL mp2_gpw_main(qs_env, mp2_env, emp2, emp2_cou, emp2_ex, emp2_s, emp2_t, &
710 mos_mp2, para_env, unit_nr, calc_forces, calc_ex)
714 IF (mp2_env%scale_T == 0.0_dp .AND. (nspins == 2)) calc_ex = .false.
717 CALL mp2_gpw_main(qs_env, mp2_env, emp2, emp2_cou, emp2_ex, emp2_s, emp2_t, &
718 mos_mp2, para_env, unit_nr, calc_forces, calc_ex, do_ri_mp2=.true.)
728 CALL mp2_gpw_main(qs_env, mp2_env, emp2, emp2_cou, emp2_ex, emp2_s, emp2_t, &
729 mos_mp2, para_env, unit_nr, calc_forces, calc_ex, do_ri_rpa=.true.)
731 emp2 = emp2*mp2_env%ri_rpa%scale_rpa
732 mp2_env%ri_rpa%ener_exchange = mp2_env%ri_rpa%ener_exchange*mp2_env%ri_rpa%scale_rpa
742 CALL mp2_gpw_main(qs_env, mp2_env, emp2, emp2_cou, emp2_ex, emp2_s, emp2_t, &
743 mos_mp2, para_env, unit_nr, calc_forces, calc_ex, do_ri_sos_laplace_mp2=.true.)
750 IF (unit_nr > 0)
WRITE (unit_nr, *)
752 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.6)')
'Total MP2 Time=', t2 - t1
756 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy SO component (singlet) = ', emp2_s
757 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Scaling factor SO = ', mp2_env%scale_S
759 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Coulomb Energy = ', emp2_cou/2.0_dp
760 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Exchange Energy = ', emp2_ex
761 IF (nspins == 1)
THEN
763 emp2_s = emp2_cou/2.0_dp
765 emp2_t = emp2_ex + emp2_cou/2.0_dp
771 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy SO component (singlet) = ', emp2_s
772 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy SS component (triplet) = ', emp2_t
773 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Scaling factor SO = ', mp2_env%scale_S
774 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Scaling factor SS = ', mp2_env%scale_T
776 emp2_s = emp2_s*mp2_env%scale_S
777 emp2_t = emp2_t*mp2_env%scale_T
778 emp2 = emp2_s + emp2_t
779 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Second order perturbation energy = ', emp2
781 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.6)')
'Total RI-RPA Time=', t2 - t1
783 update_xc_energy = .true.
784 IF (mp2_env%ri_rpa%do_ri_g0w0 .AND. .NOT. mp2_env%ri_g0w0%update_xc_energy) update_xc_energy = .false.
785 IF (.NOT. update_xc_energy) emp2 = 0.0_dp
787 IF (unit_nr > 0 .AND. update_xc_energy)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'RI-RPA energy = ', emp2
788 IF (unit_nr > 0 .AND. mp2_env%ri_rpa%sigma_param /=
sigma_none)
THEN
789 WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Sigma corr. to RI-RPA energy = ', &
790 mp2_env%ri_rpa%e_sigma_corr
793 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'RI-RPA-AXK energy=', mp2_env%ri_rpa%ener_exchange
795 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'RI-RPA-SOSEX energy=', mp2_env%ri_rpa%ener_exchange
797 IF (mp2_env%ri_rpa%do_rse)
THEN
798 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Diagonal singles correction (dRSE) = ', &
799 mp2_env%ri_rpa%rse_corr_diag
800 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Full singles correction (RSE) =', &
801 mp2_env%ri_rpa%rse_corr
802 IF (dft_control%do_admm) cpabort(
"RPA RSE not implemented with RI_RPA%ADMM on")
805 IF (unit_nr > 0)
WRITE (unit_nr, *)
809 emp2 = emp2 + mp2_env%ri_rpa%ener_exchange
811 IF (mp2_env%ri_rpa%do_rse)
THEN
812 emp2 = emp2 + mp2_env%ri_rpa%rse_corr
814 IF (mp2_env%ri_rpa%sigma_param /=
sigma_none)
THEN
816 emp2 = emp2 + mp2_env%ri_rpa%e_sigma_corr
819 energy%total = energy%total + emp2
827 IF (free_hfx_buffer .AND. (.NOT. calc_forces) .AND. &
828 (mp2_env%ri_g0w0%do_ri_Sigma_x .OR. .NOT. mp2_env%ri_rpa_im_time%do_kpoints_from_Gamma))
THEN
829 CALL timeset(routinen//
"_alloc_hfx", handle2)
830 DO irep = 1, n_rep_hf
831 DO i_thread = 0, n_threads - 1
832 actual_x_data => qs_env%x_data(irep, i_thread + 1)
834 do_dynamic_load_balancing = .true.
835 IF (n_threads == 1 .OR. actual_x_data%memory_parameter%do_disk_storage) do_dynamic_load_balancing = .false.
837 IF (do_dynamic_load_balancing)
THEN
838 my_bin_size =
SIZE(actual_x_data%distribution_energy)
843 IF (.NOT. actual_x_data%memory_parameter%do_all_on_the_fly)
THEN
846 DO bin = 1, my_bin_size
847 maxval_container => actual_x_data%store_ints%maxval_container(bin)
848 integral_containers => actual_x_data%store_ints%integral_containers(:, bin)
849 CALL hfx_init_container(maxval_container, actual_x_data%memory_parameter%actual_memory_usage, .false.)
851 CALL hfx_init_container(integral_containers(i), actual_x_data%memory_parameter%actual_memory_usage, .false.)
857 CALL timestop(handle2)
868 do_gw = mp2_env%ri_rpa%do_ri_g0w0
869 do_admm = mp2_env%ri_rpa%do_admm
870 reuse_hfx = qs_env%mp2_env%ri_rpa%reuse_hfx
871 do_im_time = qs_env%mp2_env%do_im_time
875 hfx_sections=hfx_sections, &
876 x_data=qs_env%mp2_env%ri_rpa%x_data, &
879 calc_forces=.false., &
880 reuse_hfx=reuse_hfx, &
881 do_im_time=do_im_time, &
882 e_ex_from_gw=e_ex_from_gw, &
883 e_admm_from_gw=e_admm_from_gw, &
890 "DFT%XC%WF_CORRELATION%PRINT")
892 CALL timestop(handle)
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, wanniercentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, do_rixs, tb_tblite)
Get the QUICKSTEP environment.