63 CHARACTER(LEN=*),
PARAMETER :: routinen =
'do_mtlr_u_j'
65 INTEGER :: handle, ikind, iset, k, max_mtlr_iter, &
66 n, nkind, output_unit, p_iter, u_iter
67 INTEGER,
DIMENSION(:),
POINTER :: atom_list
68 LOGICAL :: any_dft_plus_u, any_mtlr_kind, &
69 converged, do_reference_scf
70 LOGICAL,
ALLOCATABLE,
DIMENSION(:) :: mtlr_kind
71 REAL(kind=
dp) :: delta_j, delta_u, denominator_minus, denominator_plus, eps_u_j_loop, &
72 fhxc_minus, fhxc_plus, intercept_minus, intercept_plus, l, max_delta_j, max_delta_u, &
73 std_j, std_minus, std_plus, std_u, sum_trq_minus, sum_trq_minus_x_trq_minus, &
74 sum_trq_minus_x_vhxc_minus, sum_trq_plus, sum_trq_plus_x_trq_plus, &
75 sum_trq_plus_x_vhxc_plus, sum_vhxc_minus, sum_vhxc_plus
76 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: j_new, j_old, perturbation_strength, &
77 trq_minus, trq_plus, u_new, u_old, &
82 TYPE(
mo_set_type),
ALLOCATABLE,
DIMENSION(:) :: reference_mos
86 CALL timeset(routinen, handle)
88 NULLIFY (atom_list, qs_kind_set, dft_control, logger, mos)
93 cpassert(
ASSOCIATED(force_env))
94 cpassert(
ASSOCIATED(force_env%qs_env))
97 qs_kind_set=qs_kind_set, &
98 dft_control=dft_control, &
100 atomic_kind_set=atomic_kind_set)
102 cpassert(
ASSOCIATED(atomic_kind_set))
103 cpassert(
ASSOCIATED(dft_control))
104 cpassert(
ASSOCIATED(mos))
105 cpassert(
ASSOCIATED(qs_kind_set))
107 nkind =
SIZE(atomic_kind_set)
108 IF (
SIZE(qs_kind_set) /= nkind)
THEN
109 cpabort(
"The atomic-kind and Quickstep-kind arrays have inconsistent sizes.")
111 ALLOCATE (mtlr_kind(nkind))
112 mtlr_kind(:) = .false.
113 any_dft_plus_u = .false.
114 any_mtlr_kind = .false.
116 IF (.NOT.
ASSOCIATED(qs_kind_set(ikind)%dft_plus_u)) cycle
117 any_dft_plus_u = .true.
118 IF (qs_kind_set(ikind)%dft_plus_u%do_mtlr)
THEN
119 mtlr_kind(ikind) = .true.
120 any_mtlr_kind = .true.
123 IF (.NOT. any_dft_plus_u)
THEN
124 CALL cp_abort(__location__,
"RUN_TYPE MTLR requires at least one active "// &
125 "DFT_PLUS_U section.")
127 IF (.NOT. any_mtlr_kind)
THEN
128 CALL cp_abort(__location__,
"RUN_TYPE MTLR requires an active "// &
129 "MINIMUM_TRACKING_LINEAR_RESPONSE subsection.")
132 SELECT CASE (dft_control%mtlr_initialization_mode)
134 do_reference_scf = .false.
136 do_reference_scf = .true.
138 cpabort(
"The MTLR SCF initialization mode was not resolved.")
141 IF (output_unit > 0)
THEN
142 WRITE (unit=output_unit, fmt=
"(/,T2,78('='))")
143 WRITE (unit=output_unit, fmt=
"(T2,A)") &
144 "MTLR| SCF initialization"
145 WRITE (unit=output_unit, fmt=
"(T2,78('-'))")
146 SELECT CASE (dft_control%mtlr_initialization_mode)
148 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A13)") &
149 "MTLR| Reference SCF:",
"OFF"
150 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A13)") &
151 "MTLR| Perturbation initial guess:",
"ATOMIC"
153 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A13)") &
154 "MTLR| Reference SCF:",
"ON"
155 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A13)") &
156 "MTLR| Reference SCF initial guess:",
"ATOMIC"
157 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A13)") &
158 "MTLR| Perturbation initial guess:",
"REFERENCE MOs"
160 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A13)") &
161 "MTLR| Reference SCF:",
"ON"
162 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A13)") &
163 "MTLR| Reference SCF initial guess:",
"RESTART"
164 WRITE (unit=output_unit, fmt=
"(T2,A,T66,A13)") &
165 "MTLR| Perturbation initial guess:",
"REFERENCE MOs"
167 WRITE (unit=output_unit, fmt=
"(T2,78('='))")
170 ALLOCATE (u_new(nkind))
171 ALLOCATE (j_new(nkind))
172 ALLOCATE (u_old(nkind))
173 ALLOCATE (j_old(nkind))
179 eps_u_j_loop = dft_control%eps_u_j_loop
180 max_mtlr_iter = dft_control%max_mtlr_iter
181 IF (dft_control%nspins /= 2)
THEN
182 cpabort(
"Unrestricted KS has to be used (the number of spin channels should be 2).")
184 IF (max_mtlr_iter < 1)
THEN
185 cpabort(
"MAX_MTLR_LOOP must be at least one.")
187 IF (eps_u_j_loop <= 0.0_dp)
THEN
188 cpabort(
"EPS_U_J_LOOP must be positive.")
194 IF (.NOT. mtlr_kind(ikind)) cycle
195 IF (qs_kind_set(ikind)%dft_plus_u%u_minus_j == 0.0_dp)
THEN
196 qs_kind_set(ikind)%dft_plus_u%u_minus_j = epsilon(1.0_dp)
198 IF (qs_kind_set(ikind)%dft_plus_u%hund_j == 0.0_dp)
THEN
199 qs_kind_set(ikind)%dft_plus_u%hund_j = epsilon(1.0_dp)
201 j_old(ikind) = qs_kind_set(ikind)%dft_plus_u%hund_j
202 u_old(ikind) = qs_kind_set(ikind)%dft_plus_u%u_minus_j + &
203 qs_kind_set(ikind)%dft_plus_u%hund_j
206 DO u_iter = 1, max_mtlr_iter
208 dft_control%mtlr_dft_with_perturbation = .false.
210 IF (do_reference_scf)
THEN
211 IF (output_unit > 0)
THEN
212 WRITE (unit=output_unit, fmt=
"(/,T2,78('='))")
213 WRITE (unit=output_unit, fmt=
"(T2,A)") &
214 "MTLR| Starting the unperturbed reference SCF."
215 WRITE (unit=output_unit, fmt=
"(T2,A,T72,I8)") &
216 "MTLR| U/J iteration:", u_iter
217 WRITE (unit=output_unit, fmt=
"(T2,78('='))")
221 IF (.NOT.
ALLOCATED(reference_mos))
THEN
222 ALLOCATE (reference_mos(
SIZE(mos)))
224 DO iset = 1,
SIZE(reference_mos)
228 DO iset = 1,
SIZE(mos)
235 IF (.NOT. mtlr_kind(ikind)) cycle
237 IF (.NOT. any(atom_list == qs_kind_set(ikind)%dft_plus_u%lr_atom))
THEN
238 cpabort(
"INDEX_PERTURBED_ATOM does not belong to the KIND containing the MTLR section.")
240 IF (.NOT.
ALLOCATED( &
241 qs_kind_set(ikind)%dft_plus_u%perturbation_strength))
THEN
242 cpabort(
"MTLR target does not contain perturbation strengths.")
245 dft_control%mtlr_ikind = ikind
247 n =
SIZE(qs_kind_set(ikind)%dft_plus_u%perturbation_strength)
249 cpabort(
"MTLR linear regression requires at least three perturbation strengths.")
252 ALLOCATE (perturbation_strength(n))
253 ALLOCATE (trq_plus(n))
254 ALLOCATE (vhxc_plus(n))
255 ALLOCATE (trq_minus(n))
256 ALLOCATE (vhxc_minus(n))
261 sum_trq_plus = 0.0_dp
262 sum_vhxc_plus = 0.0_dp
263 sum_trq_plus_x_trq_plus = 0.0_dp
264 sum_trq_plus_x_vhxc_plus = 0.0_dp
265 sum_trq_minus = 0.0_dp
266 sum_vhxc_minus = 0.0_dp
267 sum_trq_minus_x_trq_minus = 0.0_dp
268 sum_trq_minus_x_vhxc_minus = 0.0_dp
271 perturbation_strength(:) = qs_kind_set(ikind)%dft_plus_u%perturbation_strength(:)
275 IF (output_unit > 0)
THEN
276 WRITE (unit=output_unit, fmt=
"(/,T2,78('='))")
277 WRITE (unit=output_unit, fmt=
"(T2,A,T72,I8)") &
278 "MTLR| U/J iteration:", u_iter
279 WRITE (unit=output_unit, fmt=
"(T2,A,T74,I1,A4,I1)") &
280 "MTLR| Perturbation SCF:", p_iter,
" of ", n
281 WRITE (unit=output_unit, fmt=
"(T2,A,T72,I8)") &
282 "MTLR| Target KIND index:", ikind
283 WRITE (unit=output_unit, fmt=
"(T2,A,T72,I8)") &
284 "MTLR| Target atom index:", &
285 qs_kind_set(ikind)%dft_plus_u%lr_atom
286 WRITE (unit=output_unit, fmt=
"(T2,A,T63,F14.8,A3)") &
287 "MTLR| Perturbation strength:", &
288 perturbation_strength(p_iter)*
evolt,
" eV"
289 WRITE (unit=output_unit, fmt=
"(T2,78('='))")
292 dft_control%perturbation_strength = perturbation_strength(p_iter)
293 dft_control%mtlr_dft_with_perturbation = .true.
295 IF (do_reference_scf)
CALL restore_reference_mos(mos, reference_mos)
298 trq_plus(p_iter) = dft_control%trq(1) + dft_control%trq(2)
299 trq_minus(p_iter) = dft_control%trq(1) - dft_control%trq(2)
300 vhxc_plus(p_iter) = dft_control%vhxc(1) + dft_control%vhxc(2)
301 vhxc_minus(p_iter) = dft_control%vhxc(1) - dft_control%vhxc(2)
307 sum_trq_plus_x_vhxc_plus = sum_trq_plus_x_vhxc_plus + trq_plus(k)*vhxc_plus(k)
308 sum_trq_plus = sum_trq_plus + trq_plus(k)
309 sum_vhxc_plus = sum_vhxc_plus + vhxc_plus(k)
310 sum_trq_plus_x_trq_plus = sum_trq_plus_x_trq_plus + trq_plus(k)*trq_plus(k)
314 sum_trq_minus_x_vhxc_minus = sum_trq_minus_x_vhxc_minus + trq_minus(k)*vhxc_minus(k)
315 sum_trq_minus = sum_trq_minus + trq_minus(k)
316 sum_vhxc_minus = sum_vhxc_minus + vhxc_minus(k)
317 sum_trq_minus_x_trq_minus = sum_trq_minus_x_trq_minus + trq_minus(k)*trq_minus(k)
320 denominator_plus = l*sum_trq_plus_x_trq_plus - sum_trq_plus**2.0_dp
321 denominator_minus = l*sum_trq_minus_x_trq_minus - sum_trq_minus**2.0_dp
322 IF (abs(denominator_plus) < 100.0_dp*epsilon(1.0_dp))
THEN
323 cpabort(
"MTLR regression is singular.")
325 IF (abs(denominator_minus) < 100.0_dp*epsilon(1.0_dp))
THEN
326 cpabort(
"MTLR regression is singular.")
328 fhxc_minus = (l*sum_trq_minus_x_vhxc_minus - sum_trq_minus*sum_vhxc_minus) &
330 fhxc_plus = (l*sum_trq_plus_x_vhxc_plus - sum_trq_plus*sum_vhxc_plus) &
332 intercept_minus = (sum_vhxc_minus - fhxc_minus*sum_trq_minus)/l
333 intercept_plus = (sum_vhxc_plus - fhxc_plus*sum_trq_plus)/l
335 std_minus = std_minus + (vhxc_minus(k) - (trq_minus(k)*fhxc_minus + intercept_minus))**2/(l - 2)
338 std_plus = std_plus + (vhxc_plus(k) - (trq_plus(k)*fhxc_plus + intercept_plus))**2/(l - 2)
340 std_minus = sqrt(std_minus)
341 std_plus = sqrt(std_plus)
343 u_new(ikind) = 0.5_dp*fhxc_plus
344 j_new(ikind) = -0.5_dp*fhxc_minus
345 delta_u = u_new(ikind) - u_old(ikind)
346 delta_j = j_new(ikind) - j_old(ikind)
347 std_u = 0.5_dp*std_plus
348 std_j = 0.5_dp*std_minus
350 IF (output_unit > 0)
THEN
351 WRITE (unit=output_unit, fmt=
"(/,T2,78('='))")
352 WRITE (unit=output_unit, fmt=
"(T2,A,I0,A,I0,A)") &
353 "MTLR| U/J iteration ", u_iter, &
354 " results for KIND ", ikind,
"."
355 WRITE (unit=output_unit, fmt=
"(T2,78('-'))")
356 WRITE (unit=output_unit, fmt=
"(T2,A)") &
357 "MTLR| Linear-regression data for Hubbard U"
358 WRITE (unit=output_unit, &
359 fmt=
"(T2,A3,T8,A10,T22,A12,T37,A13,T52,A13,T67,A13)") &
367 WRITE (unit=output_unit, &
368 fmt=
"(T2,I3,T8,F10.4,T22,ES12.4,T37,ES13.5,"// &
369 " T52,ES13.5,T67,ES13.4)") &
371 perturbation_strength(k)*
evolt, &
373 vhxc_plus(k)*
evolt, &
374 (fhxc_plus*trq_plus(k) + intercept_plus)*
evolt, &
376 (fhxc_plus*trq_plus(k) + intercept_plus))*
evolt
378 WRITE (unit=output_unit, fmt=
"(T2,78('-'))")
379 WRITE (unit=output_unit, fmt=
"(T2,A)") &
380 "MTLR| Linear-regression data for Hund J"
381 WRITE (unit=output_unit, &
382 fmt=
"(T2,A3,T8,A10,T22,A12,T37,A13,T52,A13,T67,A13)") &
390 WRITE (unit=output_unit, &
391 fmt=
"(T2,I3,T8,F10.4,T22,ES12.4,T37,ES13.5,"// &
392 " T52,ES13.5,T67,ES13.4)") &
394 perturbation_strength(k)*
evolt, &
396 vhxc_minus(k)*
evolt, &
397 (fhxc_minus*trq_minus(k) + intercept_minus)*
evolt, &
399 (fhxc_minus*trq_minus(k) + intercept_minus))*
evolt
401 WRITE (unit=output_unit, fmt=
"(T2,78('-'))")
402 WRITE (unit=output_unit, &
403 fmt=
"(T2,A,T22,A16,T43,A16,T64,A16)") &
408 WRITE (unit=output_unit, fmt=
"(T2,78('-'))")
409 WRITE (unit=output_unit, &
410 fmt=
"(T2,A,T22,ES16.8,T43,ES16.8,T64,ES16.8)") &
412 u_old(ikind)*
evolt, &
413 u_new(ikind)*
evolt, &
414 (u_new(ikind) - u_old(ikind))*
evolt
415 WRITE (unit=output_unit, &
416 fmt=
"(T2,A,T22,ES16.8,T43,ES16.8,T64,ES16.8)") &
418 j_old(ikind)*
evolt, &
419 j_new(ikind)*
evolt, &
420 (j_new(ikind) - j_old(ikind))*
evolt
421 WRITE (unit=output_unit, fmt=
"(T2,78('-'))")
422 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES16.8,A3)") &
423 "MTLR| Absolute change in U:", &
424 abs(u_new(ikind) - u_old(ikind))*
evolt,
" eV"
425 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES16.8,A3)") &
426 "MTLR| Absolute change in J:", &
427 abs(j_new(ikind) - j_old(ikind))*
evolt,
" eV"
428 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES16.8,A3)") &
429 "MTLR| U fit residual:", &
431 WRITE (unit=output_unit, fmt=
"(T2,A,T61,ES16.8,A3)") &
432 "MTLR| J fit residual:", &
434 WRITE (unit=output_unit, fmt=
"(T2,78('='))")
437 DEALLOCATE (perturbation_strength)
438 DEALLOCATE (trq_plus)
439 DEALLOCATE (vhxc_plus)
440 DEALLOCATE (trq_minus)
441 DEALLOCATE (vhxc_minus)
445 IF (do_reference_scf)
CALL restore_reference_mos(mos, reference_mos)
448 IF (.NOT. mtlr_kind(ikind)) cycle
449 qs_kind_set(ikind)%dft_plus_u%u_minus_j = u_new(ikind) - j_new(ikind)
450 qs_kind_set(ikind)%dft_plus_u%hund_j = j_new(ikind)
453 max_delta_u = maxval(abs(pack(u_new(:) - u_old(:), mtlr_kind)))
454 max_delta_j = maxval(abs(pack(j_new(:) - j_old(:), mtlr_kind)))
455 IF (max_delta_u < eps_u_j_loop .AND. max_delta_j < eps_u_j_loop)
THEN
459 IF (output_unit > 0)
THEN
460 WRITE (unit=output_unit, fmt=
"(/,T2,78('='))")
462 WRITE (unit=output_unit, fmt=
"(T2,A,I0,A)") &
463 "MTLR| Iteration ", u_iter, &
464 " completed for all atomic kinds."
466 WRITE (unit=output_unit, fmt=
"(T2,78('-'))")
468 WRITE (unit=output_unit, fmt=
"(T2,A,ES16.8,A)") &
469 "MTLR| Maximum change in U: ", &
470 max_delta_u*
evolt,
" eV"
472 WRITE (unit=output_unit, fmt=
"(T2,A,ES16.8,A)") &
473 "MTLR| Maximum change in J: ", &
474 max_delta_j*
evolt,
" eV"
476 WRITE (unit=output_unit, fmt=
"(T2,A,ES16.8,A)") &
477 "MTLR| Convergence threshold: ", &
478 eps_u_j_loop*
evolt,
" eV"
480 WRITE (unit=output_unit, fmt=
"(T2,78('-'))")
483 WRITE (unit=output_unit, fmt=
"(T2,A)") &
484 "MTLR| U and J have converged."
486 WRITE (unit=output_unit, fmt=
"(T2,A)") &
487 "MTLR| Both maximum changes are below the convergence threshold."
489 ELSE IF (u_iter < max_mtlr_iter)
THEN
490 WRITE (unit=output_unit, fmt=
"(T2,A)") &
491 "MTLR| U and J have not yet converged."
493 WRITE (unit=output_unit, fmt=
"(T2,A)") &
494 "MTLR| Proceeding to the next linear response U/J iteration."
497 WRITE (unit=output_unit, fmt=
"(T2,A)") &
498 "MTLR| U and J have not converged."
500 WRITE (unit=output_unit, fmt=
"(T2,A)") &
501 "MTLR| The maximum number of MTLR iterations has been reached."
504 WRITE (unit=output_unit, fmt=
"(T2,78('='))")
508 IF (output_unit > 0)
THEN
509 WRITE (unit=output_unit, fmt=
"(/,T2,78('*'))")
510 WRITE (unit=output_unit, fmt=
"(T2,A,I0,A)") &
511 "MTLR| U and J converged after ", &
512 u_iter,
" iterations."
513 WRITE (unit=output_unit, fmt=
"(T2,78('*'),/)")
515 ELSE IF (u_iter == max_mtlr_iter)
THEN
516 IF (output_unit > 0)
THEN
517 WRITE (unit=output_unit, fmt=
"(/,T2,78('*'))")
518 WRITE (unit=output_unit, fmt=
"(T2,A,I0,A)") &
519 "MTLR| U and J did not converge within the maximum of ", &
520 max_mtlr_iter,
" iterations."
521 WRITE (unit=output_unit, fmt=
"(T2,A)") &
522 "MTLR| Results from the final iteration will be reported."
523 WRITE (unit=output_unit, fmt=
"(T2,78('*'),/)")
527 IF (converged .OR. u_iter == max_mtlr_iter)
THEN
528 IF (output_unit > 0)
THEN
529 WRITE (unit=output_unit, fmt=
"(/,T2,78('*'))")
530 WRITE (unit=output_unit, fmt=
"(T2,A,ES16.8,A)") &
531 "MTLR| Maximum change in U: ", &
532 max_delta_u*
evolt,
" eV"
533 WRITE (unit=output_unit, fmt=
"(T2,A,ES16.8,A)") &
534 "MTLR| Maximum change in J: ", &
535 max_delta_j*
evolt,
" eV"
536 WRITE (unit=output_unit, fmt=
"(T2,A,ES16.8,A)") &
537 "MTLR| Maximum change over U and J: ", &
538 max(max_delta_u, max_delta_j)*
evolt,
" eV"
539 WRITE (unit=output_unit, fmt=
"(T2,78('*'))")
541 IF (.NOT. mtlr_kind(ikind)) cycle
542 WRITE (unit=output_unit, fmt=
"(/,T2,A,I0,A)") &
543 "MTLR| Final parameters for KIND ", ikind,
":"
544 WRITE (unit=output_unit, fmt=
"(T2,A,F16.8,A)") &
545 "MTLR| Calculated Hubbard U: ", &
546 u_new(ikind)*
evolt,
" eV"
547 WRITE (unit=output_unit, fmt=
"(T2,A,F16.8,A)") &
548 "MTLR| Calculated Hund J: ", &
549 j_new(ikind)*
evolt,
" eV"
550 WRITE (unit=output_unit, fmt=
"(T2,A)") &
551 "MTLR| Recommended CP2K input parameters:"
552 WRITE (unit=output_unit, fmt=
"(T2,A,F16.8)") &
553 "MTLR| U_MINUS_J [eV] ", &
554 (u_new(ikind) - j_new(ikind))*
evolt
555 WRITE (unit=output_unit, fmt=
"(T2,A,F16.8)") &
559 WRITE (unit=output_unit, fmt=
"(/,T2,78('*'),/)")
573 IF (.NOT. mtlr_kind(ikind)) cycle
574 qs_kind_set(ikind)%dft_plus_u%u_minus_j = u_new(ikind) - j_new(ikind)
575 qs_kind_set(ikind)%dft_plus_u%hund_j = j_new(ikind)
577 dft_control%mtlr_dft_with_perturbation = .false.
578 dft_control%perturbation_strength = 0.0_dp
582 IF (
ALLOCATED(reference_mos))
THEN
583 DO iset = 1,
SIZE(reference_mos)
586 DEALLOCATE (reference_mos)
592 DEALLOCATE (mtlr_kind)
594 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, mimic, 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, matrix_vhxc, 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, xcint_weights, 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.