20 deallocate_arnoldi_data,&
21 get_selected_ritz_val,&
22 get_selected_ritz_vector,&
23 set_arnoldi_initial_vector,&
30 USE dbcsr_api,
ONLY: &
31 dbcsr_convert_csr_to_dbcsr, dbcsr_convert_dbcsr_to_csr, dbcsr_copy, &
32 dbcsr_copy_into_existing, dbcsr_create, dbcsr_csr_create, dbcsr_csr_create_from_dbcsr, &
33 dbcsr_csr_destroy, dbcsr_csr_eqrow_floor_dist, dbcsr_csr_print_sparsity, &
34 dbcsr_desymmetrize, dbcsr_distribution_get, dbcsr_distribution_type, dbcsr_get_info, &
35 dbcsr_has_symmetry, dbcsr_p_type, dbcsr_release, dbcsr_scale, dbcsr_set, dbcsr_type, &
36 dbcsr_type_no_symmetry, dbcsr_type_real_8
58 #include "./base/base_uses.f90"
63 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'pexsi_methods'
65 LOGICAL,
PARAMETER,
PRIVATE :: careful_mod = .false.
81 TYPE(section_vals_type),
INTENT(IN),
POINTER :: pexsi_section
82 TYPE(lib_pexsi_env),
INTENT(INOUT) :: pexsi_env
84 INTEGER :: isinertiacount_int, maxpexsiiter, &
85 min_ranks_per_pole, npsymbfact, &
86 numpole, ordering, rowordering, &
88 LOGICAL :: csr_screening, isinertiacount
89 REAL(kind=
dp) :: gap, muinertiaexpansion, muinertiatolerance, mumax0, mumin0, &
90 mupexsisafeguard, numelectroninitialtolerance, numelectrontargettolerance, temperature
104 l_val=isinertiacount)
112 r_val=muinertiatolerance)
114 r_val=muinertiaexpansion)
116 r_val=mupexsisafeguard)
118 r_val=numelectroninitialtolerance)
120 r_val=numelectrontargettolerance)
130 i_val=min_ranks_per_pole)
134 isinertiacount_int = merge(1, 0, isinertiacount)
141 numpole=numpole, isinertiacount=isinertiacount_int, maxpexsiiter=maxpexsiiter, &
142 mumin0=mumin0, mumax0=mumax0, muinertiatolerance=muinertiatolerance, &
143 muinertiaexpansion=muinertiaexpansion, mupexsisafeguard=mupexsisafeguard, &
144 ordering=ordering, rowordering=rowordering, npsymbfact=npsymbfact, verbosity=verbosity)
146 pexsi_env%num_ranks_per_pole = min_ranks_per_pole
147 pexsi_env%csr_screening = csr_screening
149 IF (numelectroninitialtolerance .LT. numelectrontargettolerance) &
150 numelectroninitialtolerance = numelectrontargettolerance
152 pexsi_env%tol_nel_initial = numelectroninitialtolerance
153 pexsi_env%tol_nel_target = numelectrontargettolerance
165 TYPE(qs_ks_env_type),
POINTER :: ks_env
166 TYPE(lib_pexsi_env),
INTENT(INOUT) :: pexsi_env
167 TYPE(dbcsr_type),
INTENT(IN) :: template_matrix
169 CHARACTER(len=*),
PARAMETER :: routinen =
'pexsi_init_scf'
171 INTEGER :: handle, ispin, unit_nr
172 TYPE(cp_logger_type),
POINTER :: logger
174 CALL timeset(routinen, handle)
177 IF (logger%para_env%is_source())
THEN
185 IF (dbcsr_has_symmetry(template_matrix))
THEN
186 CALL dbcsr_copy(pexsi_env%dbcsr_template_matrix_sym, template_matrix, &
187 "symmetric template matrix for CSR conversion")
188 CALL dbcsr_desymmetrize(pexsi_env%dbcsr_template_matrix_sym, &
189 pexsi_env%dbcsr_template_matrix_nonsym)
191 CALL dbcsr_copy(pexsi_env%dbcsr_template_matrix_nonsym, template_matrix, &
192 "non-symmetric template matrix for CSR conversion")
193 CALL dbcsr_copy(pexsi_env%dbcsr_template_matrix_sym, template_matrix, &
194 "symmetric template matrix for CSR conversion")
197 CALL dbcsr_create(pexsi_env%csr_sparsity,
"CSR sparsity", &
198 template=pexsi_env%dbcsr_template_matrix_sym, &
199 data_type=dbcsr_type_real_8)
200 CALL dbcsr_copy(pexsi_env%csr_sparsity, pexsi_env%dbcsr_template_matrix_sym)
204 IF (.NOT. pexsi_env%csr_screening)
CALL dbcsr_set(pexsi_env%csr_sparsity, 1.0)
205 CALL dbcsr_csr_create_from_dbcsr(pexsi_env%dbcsr_template_matrix_nonsym, &
206 pexsi_env%csr_mat_s, &
207 dbcsr_csr_eqrow_floor_dist, &
208 csr_sparsity=pexsi_env%csr_sparsity, &
209 numnodes=pexsi_env%num_ranks_per_pole)
211 IF (unit_nr > 0)
WRITE (unit_nr,
"(/T2,A)")
"SPARSITY OF THE OVERLAP MATRIX IN CSR FORMAT"
212 CALL dbcsr_csr_print_sparsity(pexsi_env%csr_mat_s, unit_nr)
214 CALL dbcsr_convert_dbcsr_to_csr(pexsi_env%dbcsr_template_matrix_nonsym, pexsi_env%csr_mat_s)
216 CALL dbcsr_csr_create(pexsi_env%csr_mat_ks, pexsi_env%csr_mat_s)
217 CALL dbcsr_csr_create(pexsi_env%csr_mat_p, pexsi_env%csr_mat_s)
218 CALL dbcsr_csr_create(pexsi_env%csr_mat_E, pexsi_env%csr_mat_s)
219 CALL dbcsr_csr_create(pexsi_env%csr_mat_F, pexsi_env%csr_mat_s)
221 DO ispin = 1, pexsi_env%nspin
223 CALL dbcsr_create(pexsi_env%matrix_w(ispin)%matrix,
"W matrix", &
224 template=template_matrix, matrix_type=dbcsr_type_no_symmetry)
227 CALL cp_pexsi_set_options(pexsi_env%options, numelectronpexsitolerance=pexsi_env%tol_nel_initial)
229 CALL timestop(handle)
239 TYPE(lib_pexsi_env),
INTENT(INOUT) :: pexsi_env
240 REAL(kind=
dp),
DIMENSION(2),
INTENT(IN) :: mu_spin
242 CHARACTER(len=*),
PARAMETER :: routinen =
'pexsi_finalize_scf'
244 INTEGER :: handle, ispin, unit_nr
245 REAL(kind=
dp) :: kts_total, mu_total
246 TYPE(cp_logger_type),
POINTER :: logger
248 CALL timeset(routinen, handle)
251 IF (logger%para_env%is_source())
THEN
257 mu_total = sum(mu_spin(1:pexsi_env%nspin))/real(pexsi_env%nspin, kind=
dp)
258 kts_total = sum(pexsi_env%kTS)
259 IF (pexsi_env%nspin .EQ. 1) kts_total = kts_total*2.0_dp
261 IF (unit_nr > 0)
THEN
262 WRITE (unit_nr,
"(/A,T55,F26.15)") &
263 " PEXSI| Electronic entropic energy (a.u.):", kts_total
264 WRITE (unit_nr,
"(A,T55,F26.15)") &
265 " PEXSI| Chemical potential (a.u.):", mu_total
268 CALL dbcsr_release(pexsi_env%dbcsr_template_matrix_sym)
269 CALL dbcsr_release(pexsi_env%dbcsr_template_matrix_nonsym)
270 CALL dbcsr_release(pexsi_env%csr_sparsity)
271 CALL dbcsr_csr_destroy(pexsi_env%csr_mat_p)
272 CALL dbcsr_csr_destroy(pexsi_env%csr_mat_ks)
273 CALL dbcsr_csr_destroy(pexsi_env%csr_mat_s)
274 CALL dbcsr_csr_destroy(pexsi_env%csr_mat_E)
275 CALL dbcsr_csr_destroy(pexsi_env%csr_mat_F)
276 DO ispin = 1, pexsi_env%nspin
277 CALL dbcsr_release(pexsi_env%max_ev_vector(ispin))
278 CALL dbcsr_release(pexsi_env%matrix_w(ispin)%matrix)
280 CALL timestop(handle)
281 pexsi_env%tol_nel_initial = pexsi_env%tol_nel_target
302 nelectron_exact, mu, iscf, ispin)
303 TYPE(lib_pexsi_env),
INTENT(INOUT) :: pexsi_env
304 TYPE(dbcsr_type),
INTENT(INOUT) :: matrix_p
305 TYPE(dbcsr_p_type),
INTENT(INOUT) :: matrix_w
306 REAL(kind=
dp),
INTENT(OUT) :: kts
307 TYPE(dbcsr_type),
INTENT(IN),
TARGET :: matrix_ks, matrix_s
308 INTEGER,
INTENT(IN) :: nelectron_exact
309 REAL(kind=
dp),
INTENT(OUT) :: mu
310 INTEGER,
INTENT(IN) :: iscf, ispin
312 CHARACTER(LEN=*),
PARAMETER :: routinen =
'density_matrix_pexsi'
313 INTEGER,
PARAMETER :: s_not_identity = 0
315 INTEGER :: handle, is_symbolic_factorize, isinertiacount, isinertiacount_out, mynode, &
316 n_total_inertia_iter, n_total_pexsi_iter, unit_nr
317 LOGICAL :: first_call, pexsi_convergence
318 REAL(kind=
dp) :: delta_e, energy_h, energy_s, free_energy, mu_max_in, mu_max_out, mu_min_in, &
319 mu_min_out, nel_tol, nelectron_diff, nelectron_exact_pexsi, nelectron_out
320 TYPE(arnoldi_data_type) :: my_arnoldi
321 TYPE(cp_logger_type),
POINTER :: logger
322 TYPE(dbcsr_distribution_type) :: dist
323 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: arnoldi_matrices
325 CALL timeset(routinen, handle)
329 IF (logger%para_env%is_source())
THEN
335 first_call = (iscf .EQ. 1) .AND. (ispin .EQ. 1)
341 IF (.NOT. dbcsr_has_symmetry(matrix_ks)) &
342 cpabort(
"PEXSI interface expects a non-symmetric DBCSR Kohn-Sham matrix")
343 IF (.NOT. dbcsr_has_symmetry(matrix_s)) &
344 cpabort(
"PEXSI interface expects a non-symmetric DBCSR overlap matrix")
347 IF ((pexsi_env%csr_mat_s%nzval_local%data_type .NE. dbcsr_type_real_8) &
348 .OR. (pexsi_env%csr_mat_ks%nzval_local%data_type .NE. dbcsr_type_real_8)) &
349 cpabort(
"Complex data type not supported by PEXSI")
353 IF (pexsi_env%csr_mat_s%nze_total .GE. int(2, kind=
int_8)**31) &
354 cpabort(
"Total number of non-zero elements of CSR matrix is too large to be handled by PEXSI")
357 CALL dbcsr_get_info(matrix_ks, distribution=dist)
358 CALL dbcsr_distribution_get(dist, mynode=mynode)
363 CALL dbcsr_copy_into_existing(pexsi_env%dbcsr_template_matrix_sym, matrix_s)
364 CALL dbcsr_convert_dbcsr_to_csr(pexsi_env%dbcsr_template_matrix_sym, &
367 CALL dbcsr_copy_into_existing(pexsi_env%dbcsr_template_matrix_sym, &
369 CALL dbcsr_convert_dbcsr_to_csr(pexsi_env%dbcsr_template_matrix_sym, &
370 pexsi_env%csr_mat_ks)
373 NULLIFY (arnoldi_matrices)
375 arnoldi_matrices(1)%matrix => matrix_ks
376 arnoldi_matrices(2)%matrix => matrix_s
377 CALL setup_arnoldi_data(my_arnoldi, arnoldi_matrices, max_iter=20, &
378 threshold=1.0e-2_dp, selection_crit=2, nval_request=1, nrestarts=21, &
379 generalized_ev=.true., iram=.false.)
380 IF (iscf .GT. 1)
CALL set_arnoldi_initial_vector(my_arnoldi, pexsi_env%max_ev_vector(ispin))
382 delta_e = real(get_selected_ritz_val(my_arnoldi, 1),
dp)
384 delta_e = delta_e + 1.0e-2_dp*abs(delta_e)
385 CALL get_selected_ritz_vector(my_arnoldi, 1, arnoldi_matrices(1)%matrix, &
386 pexsi_env%max_ev_vector(ispin))
387 CALL deallocate_arnoldi_data(my_arnoldi)
388 DEALLOCATE (arnoldi_matrices)
390 nelectron_exact_pexsi = nelectron_exact
395 IF (iscf .EQ. 1)
THEN
399 issymbolicfactorize=1)
404 issymbolicfactorize=is_symbolic_factorize, &
405 mumin0=mu_min_in, mumax0=mu_max_in, &
406 numelectronpexsitolerance=nel_tol)
411 IF (unit_nr > 0)
WRITE (unit_nr,
'(/A,T41,L20)')
" PEXSI| Do inertia counting?", &
412 isinertiacount_out .EQ. 1
413 IF (unit_nr > 0)
WRITE (unit_nr,
'(A,T50,F5.2,T56,F5.2)') &
414 " PEXSI| Guess for min mu, max mu", mu_min_in, mu_max_in
416 IF (unit_nr > 0)
WRITE (unit_nr,
'(A,T41,E20.3)') &
417 " PEXSI| Tolerance in number of electrons", nel_tol
422 IF (unit_nr > 0)
WRITE (unit_nr,
'(A,T41,F20.2)') &
423 " PEXSI| Arnoldi est. spectral radius", delta_e
429 pexsi_env%csr_mat_ks%nrows_total, &
430 int(pexsi_env%csr_mat_ks%nze_total, kind=
int_4), &
431 pexsi_env%csr_mat_ks%nze_local, &
432 pexsi_env%csr_mat_ks%nrows_local, &
433 pexsi_env%csr_mat_ks%rowptr_local, &
434 pexsi_env%csr_mat_ks%colind_local, &
435 pexsi_env%csr_mat_ks%nzval_local%r_dp, &
437 pexsi_env%csr_mat_s%nzval_local%r_dp)
441 numelectron=nelectron_exact_pexsi)
445 nelectron_exact_pexsi, mu, nelectron_out, mu_min_out, mu_max_out, &
446 n_total_inertia_iter, n_total_pexsi_iter)
449 nelectron_diff = nelectron_out - nelectron_exact_pexsi
450 pexsi_convergence = abs(nelectron_diff) .LT. nel_tol
452 IF (unit_nr > 0)
THEN
453 IF (pexsi_convergence)
THEN
454 WRITE (unit_nr,
'(/A)')
" PEXSI| Converged"
456 WRITE (unit_nr,
'(/A)')
" PEXSI| PEXSI did not converge!"
462 WRITE (unit_nr,
'(A,T41,F20.6)')
" PEXSI| Chemical potential", mu
464 WRITE (unit_nr,
'(A,T41,I20)')
" PEXSI| PEXSI iterations", n_total_pexsi_iter
465 WRITE (unit_nr,
'(A,T41,I20/)')
" PEXSI| Inertia counting iterations", &
469 IF (.NOT. pexsi_convergence) &
470 cpabort(
"PEXSI did not converge. Consider logPEXSI0 for more information.")
473 IF (mynode < pexsi_env%mp_dims(1)*pexsi_env%mp_dims(2))
THEN
476 pexsi_env%csr_mat_p%nzval_local%r_dp, &
477 pexsi_env%csr_mat_E%nzval_local%r_dp, &
478 pexsi_env%csr_mat_F%nzval_local%r_dp, &
479 energy_h, energy_s, free_energy)
481 kts = (free_energy - energy_h)
485 CALL pexsi_env%mp_group%bcast(kts, 0)
488 CALL dbcsr_convert_csr_to_dbcsr(pexsi_env%dbcsr_template_matrix_nonsym, &
490 CALL dbcsr_copy(matrix_p, pexsi_env%dbcsr_template_matrix_nonsym)
491 CALL dbcsr_convert_csr_to_dbcsr(pexsi_env%dbcsr_template_matrix_nonsym, &
493 CALL dbcsr_copy(matrix_w%matrix, pexsi_env%dbcsr_template_matrix_nonsym)
497 matrix_w=matrix_w, kts=kts)
504 IF (iscf .EQ. 1)
THEN
514 CALL timestop(handle)
537 TYPE(lib_pexsi_env),
INTENT(INOUT) :: pexsi_env
538 REAL(kind=
dp),
INTENT(IN) :: delta_scf, eps_scf
539 LOGICAL,
INTENT(IN) :: initialize
540 LOGICAL,
INTENT(OUT) :: check_convergence
542 CHARACTER(len=*),
PARAMETER :: routinen =
'pexsi_set_convergence_tolerance'
545 REAL(kind=
dp) :: tol_nel
547 CALL timeset(routinen, handle)
549 tol_nel = pexsi_env%tol_nel_initial
552 pexsi_env%adaptive_nel_alpha = &
553 (pexsi_env%tol_nel_initial - pexsi_env%tol_nel_target)/(abs(delta_scf) - eps_scf)
554 pexsi_env%adaptive_nel_beta = &
555 pexsi_env%tol_nel_initial - pexsi_env%adaptive_nel_alpha*abs(delta_scf)
556 pexsi_env%do_adaptive_tol_nel = .true.
558 IF (pexsi_env%do_adaptive_tol_nel)
THEN
559 tol_nel = pexsi_env%adaptive_nel_alpha*abs(delta_scf) + pexsi_env%adaptive_nel_beta
560 tol_nel = max(tol_nel, pexsi_env%tol_nel_target)
561 tol_nel = min(tol_nel, pexsi_env%tol_nel_initial)
564 check_convergence = (tol_nel .LE. pexsi_env%tol_nel_target)
567 CALL timestop(handle)
582 TYPE(ls_scf_env_type) :: ls_scf_env
583 TYPE(qs_environment_type),
INTENT(INOUT),
POINTER :: qs_env
584 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN),
OPTIONAL :: kts
585 TYPE(dbcsr_p_type),
DIMENSION(:),
INTENT(IN), &
588 CHARACTER(len=*),
PARAMETER :: routinen =
'pexsi_to_qs'
590 INTEGER :: handle, ispin, unit_nr
591 REAL(kind=
dp) :: kts_total
592 TYPE(cp_logger_type),
POINTER :: logger
593 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_w_qs
594 TYPE(qs_energy_type),
POINTER :: energy
596 CALL timeset(routinen, handle)
602 IF (logger%para_env%is_source())
THEN
608 CALL get_qs_env(qs_env, energy=energy, matrix_w=matrix_w_qs)
610 IF (
PRESENT(matrix_w))
THEN
611 DO ispin = 1, ls_scf_env%nspins
612 CALL matrix_ls_to_qs(matrix_w_qs(ispin)%matrix, matrix_w(ispin)%matrix, &
613 ls_scf_env%ls_mstruct, covariant=.false.)
614 IF (ls_scf_env%nspins .EQ. 1)
CALL dbcsr_scale(matrix_w_qs(ispin)%matrix, 2.0_dp)
618 IF (
PRESENT(kts))
THEN
620 IF (ls_scf_env%nspins .EQ. 1) kts_total = kts_total*2.0_dp
621 energy%kTS = kts_total
624 CALL timestop(handle)
arnoldi iteration using dbcsr
subroutine, public arnoldi_ev(matrix, arnoldi_data)
Driver routine for different arnoldi eigenvalue methods the selection which one is to be taken is mad...
Routines that link DBCSR and CP2K concepts together.
subroutine, public cp_dbcsr_to_csr_screening(ks_env, csr_sparsity)
Apply distance screening to refine sparsity pattern of matrices in CSR format (using eps_pgf_orb)....
DBCSR operations in CP2K.
various routines to log and control the output. The idea is that decisions about where to log should ...
recursive integer function, public cp_logger_get_default_unit_nr(logger, local, skip_not_ionode)
asks the default unit number of the given logger. try to use cp_logger_get_unit_nr
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
Routines for a linear scaling quickstep SCF run based on the density matrix, with a focus on the inte...
subroutine, public matrix_ls_to_qs(matrix_qs, matrix_ls, ls_mstruct, covariant, keep_sparsity)
second link to QS, copy a LS matrix to QS matrix used to isolate QS style matrices from LS style will...
Types needed for a linear scaling quickstep SCF run based on the density matrix.
Defines the basic variable types.
integer, parameter, public int_8
integer, parameter, public dp
integer, parameter, public int_4
Interface to the PEXSI library, providing wrappers for all PEXSI routines that are called inside CP2K...
subroutine, public cp_pexsi_get_options(pexsi_options, temperature, gap, deltaE, numPole, isInertiaCount, maxPEXSIIter, muMin0, muMax0, mu0, muInertiaTolerance, muInertiaExpansion, muPEXSISafeGuard, numElectronPEXSITolerance, matrixType, isSymbolicFactorize, ordering, rowOrdering, npSymbFact, verbosity)
Access PEXSI internal options.
subroutine, public cp_pexsi_retrieve_real_dft_matrix(plan, DMnzvalLocal, EDMnzvalLocal, FDMnzvalLocal, totalEnergyH, totalEnergyS, totalFreeEnergy)
...
subroutine, public cp_pexsi_set_default_options(pexsi_options)
...
subroutine, public cp_pexsi_set_options(pexsi_options, temperature, gap, deltaE, numPole, isInertiaCount, maxPEXSIIter, muMin0, muMax0, mu0, muInertiaTolerance, muInertiaExpansion, muPEXSISafeGuard, numElectronPEXSITolerance, matrixType, isSymbolicFactorize, ordering, rowOrdering, npSymbFact, verbosity)
Set PEXSI internal options.
subroutine, public cp_pexsi_dft_driver(plan, pexsi_options, numElectronExact, muPEXSI, numElectronPEXSI, muMinInertia, muMaxInertia, numTotalInertiaIter, numTotalPEXSIIter)
...
subroutine, public cp_pexsi_load_real_hs_matrix(plan, pexsi_options, nrows, nnz, nnzLocal, numColLocal, colptrLocal, rowindLocal, HnzvalLocal, isSIdentity, SnzvalLocal)
...
Methods using the PEXSI library to calculate the density matrix and related quantities using the Kohn...
subroutine, public pexsi_init_read_input(pexsi_section, pexsi_env)
Read CP2K input section PEXSI and pass it to the PEXSI environment.
subroutine, public pexsi_finalize_scf(pexsi_env, mu_spin)
Deallocations and post-processing after SCF.
subroutine, public pexsi_to_qs(ls_scf_env, qs_env, kTS, matrix_w)
Pass energy weighted density matrix and entropic energy contribution to QS environment.
subroutine, public density_matrix_pexsi(pexsi_env, matrix_p, matrix_w, kTS, matrix_ks, matrix_s, nelectron_exact, mu, iscf, ispin)
Calculate density matrix, energy-weighted density matrix and entropic energy contribution with the DF...
subroutine, public pexsi_init_scf(ks_env, pexsi_env, template_matrix)
Initializations needed before SCF.
subroutine, public pexsi_set_convergence_tolerance(pexsi_env, delta_scf, eps_scf, initialize, check_convergence)
Set PEXSI convergence tolerance (numElectronPEXSITolerance), adapted to the convergence error of the ...
Environment storing all data that is needed in order to call the DFT driver of the PEXSI library with...
integer, parameter, public cp2k_to_pexsi
subroutine, public convert_nspin_cp2k_pexsi(direction, numElectron, matrix_p, matrix_w, kTS)
Scale various quantities with factors of 2. This converts spin restricted DFT calculations (PEXSI) to...
integer, parameter, public pexsi_to_cp2k
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_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, 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, rhs)
Get the QUICKSTEP environment.