125 LOGICAL,
INTENT(IN) :: calc_forces
127 CHARACTER(len=*),
PARAMETER :: routinen =
'mp2_main'
129 INTEGER :: bin, cholesky_method, dimen, handle, handle2, i, i_thread, iatom, ii, ikind, &
130 irep, ispin, max_nset, my_bin_size, n_rep_hf, n_threads, nao, natom, ndep, &
131 nfullcols_total, nfullrows_total, nkind, nmo, nspins, unit_nr
132 INTEGER(KIND=int_8) :: mem
133 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: kind_of, nelec
134 LOGICAL :: calc_ex, do_admm, do_admm_rpa_exx, do_dynamic_load_balancing, do_exx, do_gw, &
135 do_im_time, do_kpoints_cubic_rpa, free_hfx_buffer, reuse_hfx, update_xc_energy
136 REAL(kind=
dp) :: e_admm_from_gw(2), e_ex_from_gw, emp2, emp2_aa, emp2_aa_cou, emp2_aa_ex, &
137 emp2_ab, emp2_ab_cou, emp2_ab_ex, emp2_bb, emp2_bb_cou, emp2_bb_ex, emp2_cou, emp2_ex, &
138 emp2_s, emp2_t, maxocc, mem_real, t1, t2, t3
139 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: evals
140 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: auto
141 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: c
142 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mo_eigenvalues
147 TYPE(
cp_fm_type) :: evecs, fm_matrix_ks, fm_matrix_s, &
149 TYPE(
cp_fm_type),
POINTER :: fm_matrix_ks_red, fm_matrix_s_red, &
150 fm_work_red, mo_coeff
152 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_s
153 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_ks_transl, matrix_s_kp
159 TYPE(
hfx_type),
POINTER :: actual_x_data
161 TYPE(
mo_set_type),
ALLOCATABLE,
DIMENSION(:) :: mos_mp2
168 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
175 IF (qs_env%mp2_env%hf_fail)
THEN
176 CALL cp_abort(__location__,
"SCF not converged: "// &
177 "not possible to run MP2")
180 NULLIFY (virial, dft_control, blacs_env, kpoints, fm_matrix_s_red, fm_matrix_ks_red, fm_work_red)
181 CALL timeset(routinen, handle)
186 do_kpoints_cubic_rpa = qs_env%mp2_env%ri_rpa_im_time%do_im_time_kpoints
189 IF (do_kpoints_cubic_rpa)
THEN
193 atomic_kind_set=atomic_kind_set, &
194 qs_kind_set=qs_kind_set, &
195 dft_control=dft_control, &
196 particle_set=particle_set, &
198 blacs_env=blacs_env, &
202 scf_control=scf_control, &
203 matrix_ks_kp=matrix_ks_transl, &
204 matrix_s_kp=matrix_s_kp, &
207 CALL get_gamma(matrix_s, matrix_ks, mos, &
208 matrix_s_kp, matrix_ks_transl, kpoints)
214 atomic_kind_set=atomic_kind_set, &
215 qs_kind_set=qs_kind_set, &
216 dft_control=dft_control, &
217 particle_set=particle_set, &
219 blacs_env=blacs_env, &
223 scf_control=scf_control, &
225 matrix_ks=matrix_ks, &
235 IF (unit_nr > 0)
THEN
239 WRITE (unit_nr,
'(T2,A)')
'MP2 section'
240 WRITE (unit_nr,
'(T2,A)')
'-----------'
245 WRITE (unit_nr,
'(T2,A)')
'RI-RPA section'
246 WRITE (unit_nr,
'(T2,A)')
'--------------'
251 IF (calc_forces)
THEN
260 cpabort(
"No forces/gradients for the selected method.")
264 IF (.NOT. do_kpoints_cubic_rpa)
THEN
265 IF (virial%pv_availability .AND. (.NOT. virial%pv_numer) .AND. mp2_env%eri_method ==
do_eri_mme)
THEN
266 cpabort(
"analytical stress not implemented with ERI_METHOD = MME")
270 IF (mp2_env%do_im_time .AND. mp2_env%eri_method .NE.
do_eri_gpw)
THEN
271 mp2_env%mp2_num_proc = 1
274 IF (mp2_env%mp2_num_proc < 1 .OR. mp2_env%mp2_num_proc > para_env%num_pe)
THEN
275 cpwarn(
"GROUP_SIZE is reset because of a too small or too large value.")
276 mp2_env%mp2_num_proc = max(min(para_env%num_pe, mp2_env%mp2_num_proc), 1)
279 IF (mod(para_env%num_pe, mp2_env%mp2_num_proc) /= 0)
THEN
280 cpabort(
"GROUP_SIZE must be a divisor of the total number of MPI ranks!")
283 IF (.NOT. mp2_env%do_im_time)
THEN
284 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T76,I5)')
'Used number of processes per group:', mp2_env%mp2_num_proc
285 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T68,F9.2,A4)')
'Maximum allowed memory usage per MPI process:', &
286 mp2_env%mp2_memory,
' MiB'
294 mem_real = (mem + 1024*1024 - 1)/(1024*1024)
295 CALL para_env%max(mem_real)
296 mp2_env%mp2_memory = mp2_env%mp2_memory - mem_real
297 IF (mp2_env%mp2_memory < 0.0_dp) mp2_env%mp2_memory = 1.0_dp
299 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T68,F9.2,A4)')
'Available memory per MPI process for MP2:', &
300 mp2_env%mp2_memory,
' MiB'
303 IF (unit_nr > 0)
CALL m_flush(unit_nr)
305 nspins = dft_control%nspins
306 natom =
SIZE(particle_set, 1)
309 nkind =
SIZE(atomic_kind_set, 1)
311 do_admm_rpa_exx = mp2_env%ri_rpa%do_admm
312 IF (do_admm_rpa_exx .AND. .NOT. dft_control%do_admm)
THEN
313 cpabort(
"Need an ADMM input section for ADMM RI_RPA EXX to work")
315 IF (do_admm_rpa_exx)
THEN
324 ikind = kind_of(iatom)
325 dimen = dimen + sum(basis_parameter(ikind)%nsgf)
326 max_nset = max(max_nset, basis_parameter(ikind)%nset)
334 CALL dbcsr_get_info(matrix_s(1)%matrix, nfullrows_total=nfullrows_total, nfullcols_total=nfullcols_total)
336 ncol_global=nfullcols_total, para_env=para_env)
337 CALL cp_fm_create(fm_matrix_s, fm_struct, name=
"fm_matrix_s")
340 CALL cp_fm_create(fm_matrix_ks, fm_struct, name=
"fm_matrix_ks")
342 CALL cp_fm_create(fm_matrix_work, fm_struct, name=
"fm_matrix_work")
348 ALLOCATE (nelec(nspins))
350 ALLOCATE (evals(nao))
362 IF (evals(ii) > scf_control%eps_eigval)
THEN
369 CALL get_mo_set(mo_set=mos(1), nelectron=nelec(1))
370 IF (maxval(nelec) > nmo)
THEN
372 cpabort(
"Not enough MOs found!")
376 evals(1:ndep) = 0.0_dp
378 evals(ndep + 1:nao) = 1.0_dp/sqrt(evals(ndep + 1:nao))
381 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T76,I5)')
'Number of removed MOs:', ndep
382 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T76,I5)')
'Number of available MOs:', nmo
386 CALL cp_fm_struct_create(fm_struct, template_fmstruct=fm_matrix_s%matrix_struct, ncol_global=nmo)
388 ALLOCATE (fm_matrix_s_red, fm_work_red)
393 ALLOCATE (fm_matrix_ks_red)
395 nrow_global=nmo, ncol_global=nmo)
400 CALL cp_fm_to_fm(evecs, fm_matrix_s_red, nmo, ndep + 1)
404 CALL parallel_gemm(
"N",
"T", nao, nao, nmo, 1.0_dp, fm_matrix_s_red, evecs, &
405 0.0_dp, fm_matrix_s, b_first_col=ndep + 1)
410 CALL cp_fm_syrk(
"U",
"N", nao, 1.0_dp, evecs, 1, 1, 0.0_dp, fm_matrix_s)
423 ALLOCATE (mos_mp2(nspins))
426 CALL get_mo_set(mo_set=mos(ispin), maxocc=maxocc, nelectron=nelec(ispin))
431 nelectron=nelec(ispin), &
432 n_el_f=real(nelec(ispin),
dp), &
434 flexible_electron_count=dft_control%relax_multiplicity)
438 ncol_global=nmo, para_env=para_env, &
442 fm_struct=fm_struct, &
450 IF (dft_control%do_admm)
THEN
456 IF (dft_control%do_admm)
THEN
464 mo_set=mos_mp2(ispin), &
466 work=fm_matrix_work, &
467 cholesky_method=cholesky_method, &
468 do_level_shift=.false., &
469 level_shift=0.0_dp, &
474 IF (
ASSOCIATED(fm_matrix_s_red))
THEN
476 mo_set=mos_mp2(ispin), &
478 work=fm_matrix_work, &
479 do_level_shift=.false., &
480 level_shift=0.0_dp, &
481 use_jacobi=.false., &
482 jacobi_threshold=0.0_dp, &
483 ortho_red=fm_matrix_s_red, &
484 matrix_ks_fm_red=fm_matrix_ks_red, &
485 work_red=fm_work_red)
488 mo_set=mos_mp2(ispin), &
490 work=fm_matrix_work, &
491 do_level_shift=.false., &
492 level_shift=0.0_dp, &
493 use_jacobi=.false., &
494 jacobi_threshold=0.0_dp)
498 CALL get_mo_set(mos_mp2(ispin), mo_coeff=mo_coeff)
504 IF (
ASSOCIATED(fm_matrix_s_red))
THEN
506 DEALLOCATE (fm_matrix_s_red)
508 IF (
ASSOCIATED(fm_matrix_ks_red))
THEN
510 DEALLOCATE (fm_matrix_ks_red)
512 IF (
ASSOCIATED(fm_work_red))
THEN
514 DEALLOCATE (fm_work_red)
521 ALLOCATE (mp2_biel%index_table(natom, max_nset))
523 CALL build_index_table(natom, max_nset, mp2_biel%index_table, basis_parameter, kind_of)
526 free_hfx_buffer = .false.
527 IF (
ASSOCIATED(qs_env%x_data))
THEN
528 free_hfx_buffer = .true.
529 IF (calc_forces .AND. (.NOT. mp2_env%ri_grad%free_hfx_buffer)) free_hfx_buffer = .false.
530 IF (qs_env%x_data(1, 1)%do_hfx_ri) free_hfx_buffer = .false.
531 IF (calc_forces .AND. mp2_env%do_im_time) free_hfx_buffer = .false.
532 IF (mp2_env%ri_rpa%reuse_hfx) free_hfx_buffer = .false.
535 IF (.NOT. do_kpoints_cubic_rpa)
THEN
536 IF (virial%pv_numer)
THEN
538 free_hfx_buffer = .false.
539 mp2_env%ri_grad%free_hfx_buffer = free_hfx_buffer
545 IF (mp2_env%ri_rpa%do_ri_g0w0)
THEN
549 IF (free_hfx_buffer)
THEN
550 CALL timeset(routinen//
"_free_hfx", handle2)
555 DO irep = 1, n_rep_hf
556 DO i_thread = 0, n_threads - 1
557 actual_x_data => qs_env%x_data(irep, i_thread + 1)
559 do_dynamic_load_balancing = .true.
560 IF (n_threads == 1 .OR. actual_x_data%memory_parameter%do_disk_storage) do_dynamic_load_balancing = .false.
562 IF (do_dynamic_load_balancing)
THEN
563 my_bin_size =
SIZE(actual_x_data%distribution_energy)
568 IF (.NOT. actual_x_data%memory_parameter%do_all_on_the_fly)
THEN
569 CALL dealloc_containers(actual_x_data%store_ints, actual_x_data%memory_parameter%actual_memory_usage)
573 CALL timestop(handle2)
582 SELECT CASE (mp2_env%method)
584 IF (unit_nr > 0)
WRITE (unit_nr, *)
586 ALLOCATE (auto(dimen, nspins))
587 ALLOCATE (c(dimen, dimen, nspins))
592 eigenvalues=mo_eigenvalues, &
596 auto(:, ispin) = mo_eigenvalues(:)
599 IF (nspins == 2)
THEN
600 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A)')
'Unrestricted Canonical Direct Methods:'
608 mp2_env, c(:, :, 1), auto(:, 1), emp2_aa, emp2_aa_cou, emp2_aa_ex, &
609 qs_env, para_env, unit_nr)
610 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy Alpha-Alpha = ', emp2_aa
611 IF (unit_nr > 0)
WRITE (unit_nr, *)
617 c(:, :, 2), auto(:, 2), emp2_bb, emp2_bb_cou, emp2_bb_ex, &
618 qs_env, para_env, unit_nr)
619 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy Beta-Beta= ', emp2_bb
620 IF (unit_nr > 0)
WRITE (unit_nr, *)
625 CALL mp2_direct_energy(dimen, nelec(1), nelec(2), mp2_biel, mp2_env, c(:, :, 1), &
626 auto(:, 1), emp2_ab, emp2_ab_cou, emp2_ab_ex, &
627 qs_env, para_env, unit_nr, c(:, :, 2), auto(:, 2))
628 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy Alpha-Beta= ', emp2_ab
629 IF (unit_nr > 0)
WRITE (unit_nr, *)
631 emp2 = emp2_aa + emp2_bb + emp2_ab*2.0_dp
632 emp2_cou = emp2_aa_cou + emp2_bb_cou + emp2_ab_cou*2.0_dp
633 emp2_ex = emp2_aa_ex + emp2_bb_ex + emp2_ab_ex*2.0_dp
635 emp2_s = emp2_ab*2.0_dp
636 emp2_t = emp2_aa + emp2_bb
640 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A)')
'Canonical Direct Methods:'
643 c(:, :, 1), auto(:, 1), emp2, emp2_cou, emp2_ex, &
644 qs_env, para_env, unit_nr)
652 IF (unit_nr > 0)
THEN
654 WRITE (unit_nr,
'(T3,A)')
'Optimization of the auxiliary RI-MP2 basis'
658 ALLOCATE (auto(dimen, nspins))
659 ALLOCATE (c(dimen, dimen, nspins))
664 eigenvalues=mo_eigenvalues, &
668 auto(:, ispin) = mo_eigenvalues(:)
672 IF (nspins == 2)
THEN
674 mp2_biel, mp2_env, c(:, :, 1), auto(:, 1), &
675 kind_of, qs_env, para_env, unit_nr, &
676 nelec(2), c(:, :, 2), auto(:, 2))
680 mp2_biel, mp2_env, c(:, :, 1), auto(:, 1), &
681 kind_of, qs_env, para_env, unit_nr)
688 IF (mp2_env%scale_T == 0.0_dp .AND. (nspins == 2)) calc_ex = .false.
691 CALL mp2_gpw_main(qs_env, mp2_env, emp2, emp2_cou, emp2_ex, emp2_s, emp2_t, &
692 mos_mp2, para_env, unit_nr, calc_forces, calc_ex)
696 IF (mp2_env%scale_T == 0.0_dp .AND. (nspins == 2)) calc_ex = .false.
699 CALL mp2_gpw_main(qs_env, mp2_env, emp2, emp2_cou, emp2_ex, emp2_s, emp2_t, &
700 mos_mp2, para_env, unit_nr, calc_forces, calc_ex, do_ri_mp2=.true.)
710 CALL mp2_gpw_main(qs_env, mp2_env, emp2, emp2_cou, emp2_ex, emp2_s, emp2_t, &
711 mos_mp2, para_env, unit_nr, calc_forces, calc_ex, do_ri_rpa=.true.)
713 emp2 = emp2*mp2_env%ri_rpa%scale_rpa
714 mp2_env%ri_rpa%ener_exchange = mp2_env%ri_rpa%ener_exchange*mp2_env%ri_rpa%scale_rpa
724 CALL mp2_gpw_main(qs_env, mp2_env, emp2, emp2_cou, emp2_ex, emp2_s, emp2_t, &
725 mos_mp2, para_env, unit_nr, calc_forces, calc_ex, do_ri_sos_laplace_mp2=.true.)
732 IF (unit_nr > 0)
WRITE (unit_nr, *)
734 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.6)')
'Total MP2 Time=', t2 - t1
738 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy SO component (singlet) = ', emp2_s
739 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Scaling factor SO = ', mp2_env%scale_S
741 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Coulomb Energy = ', emp2_cou/2.0_dp
742 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Exchange Energy = ', emp2_ex
743 IF (nspins == 1)
THEN
745 emp2_s = emp2_cou/2.0_dp
747 emp2_t = emp2_ex + emp2_cou/2.0_dp
753 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy SO component (singlet) = ', emp2_s
754 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'MP2 Energy SS component (triplet) = ', emp2_t
755 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Scaling factor SO = ', mp2_env%scale_S
756 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Scaling factor SS = ', mp2_env%scale_T
758 emp2_s = emp2_s*mp2_env%scale_S
759 emp2_t = emp2_t*mp2_env%scale_T
760 emp2 = emp2_s + emp2_t
761 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Second order perturbation energy = ', emp2
763 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.6)')
'Total RI-RPA Time=', t2 - t1
765 update_xc_energy = .true.
766 IF (mp2_env%ri_rpa%do_ri_g0w0 .AND. .NOT. mp2_env%ri_g0w0%update_xc_energy) update_xc_energy = .false.
767 IF (.NOT. update_xc_energy) emp2 = 0.0_dp
769 IF (unit_nr > 0 .AND. update_xc_energy)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'RI-RPA energy = ', emp2
770 IF (unit_nr > 0 .AND. mp2_env%ri_rpa%sigma_param /=
sigma_none)
THEN
771 WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Sigma corr. to RI-RPA energy = ', &
772 mp2_env%ri_rpa%e_sigma_corr
775 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'RI-RPA-AXK energy=', mp2_env%ri_rpa%ener_exchange
777 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'RI-RPA-SOSEX energy=', mp2_env%ri_rpa%ener_exchange
779 IF (mp2_env%ri_rpa%do_rse)
THEN
780 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Diagonal singles correction (dRSE) = ', &
781 mp2_env%ri_rpa%rse_corr_diag
782 IF (unit_nr > 0)
WRITE (unit_nr,
'(T3,A,T56,F25.14)')
'Full singles correction (RSE) =', &
783 mp2_env%ri_rpa%rse_corr
784 IF (dft_control%do_admm) cpabort(
"RPA RSE not implemented with RI_RPA%ADMM on")
787 IF (unit_nr > 0)
WRITE (unit_nr, *)
791 emp2 = emp2 + mp2_env%ri_rpa%ener_exchange
793 IF (mp2_env%ri_rpa%do_rse)
THEN
794 emp2 = emp2 + mp2_env%ri_rpa%rse_corr
796 IF (mp2_env%ri_rpa%sigma_param /=
sigma_none)
THEN
798 emp2 = emp2 + mp2_env%ri_rpa%e_sigma_corr
801 energy%total = energy%total + emp2
809 IF (free_hfx_buffer .AND. (.NOT. calc_forces) .AND. &
810 (mp2_env%ri_g0w0%do_ri_Sigma_x .OR. .NOT. mp2_env%ri_rpa_im_time%do_kpoints_from_Gamma))
THEN
811 CALL timeset(routinen//
"_alloc_hfx", handle2)
812 DO irep = 1, n_rep_hf
813 DO i_thread = 0, n_threads - 1
814 actual_x_data => qs_env%x_data(irep, i_thread + 1)
816 do_dynamic_load_balancing = .true.
817 IF (n_threads == 1 .OR. actual_x_data%memory_parameter%do_disk_storage) do_dynamic_load_balancing = .false.
819 IF (do_dynamic_load_balancing)
THEN
820 my_bin_size =
SIZE(actual_x_data%distribution_energy)
825 IF (.NOT. actual_x_data%memory_parameter%do_all_on_the_fly)
THEN
828 DO bin = 1, my_bin_size
829 maxval_container => actual_x_data%store_ints%maxval_container(bin)
830 integral_containers => actual_x_data%store_ints%integral_containers(:, bin)
831 CALL hfx_init_container(maxval_container, actual_x_data%memory_parameter%actual_memory_usage, .false.)
833 CALL hfx_init_container(integral_containers(i), actual_x_data%memory_parameter%actual_memory_usage, .false.)
839 CALL timestop(handle2)
850 do_gw = mp2_env%ri_rpa%do_ri_g0w0
851 do_admm = mp2_env%ri_rpa%do_admm
852 reuse_hfx = qs_env%mp2_env%ri_rpa%reuse_hfx
853 do_im_time = qs_env%mp2_env%do_im_time
857 hfx_sections=hfx_sections, &
858 x_data=qs_env%mp2_env%ri_rpa%x_data, &
861 calc_forces=.false., &
862 reuse_hfx=reuse_hfx, &
863 do_im_time=do_im_time, &
864 e_ex_from_gw=e_ex_from_gw, &
865 e_admm_from_gw=e_admm_from_gw, &
872 "DFT%XC%WF_CORRELATION%PRINT")
874 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, 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, ecoul_1c, rho0_s_rs, rho0_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)
Get the QUICKSTEP environment.