231 do_hfxlr, do_exck, do_sf, qs_env, sub_env)
235 INTEGER,
INTENT(in) :: nstates
236 LOGICAL,
INTENT(in) :: do_hfx, do_admm, do_hfxlr, do_exck, do_sf
240 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_create_work_matrices'
242 INTEGER :: evecs_dim, handle, igroup, ispin, &
243 istate, nao, nao_aux, natom, ngroups, &
245 INTEGER,
DIMENSION(maxspins) :: nactive, nmo_occ, nmo_virt
252 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s, matrix_s_aux_fit, rho_ia_ao, &
254 TYPE(
dbcsr_type),
POINTER :: dbcsr_template_hfx
260 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
262 CALL timeset(routinen, handle)
265 NULLIFY (work_matrices%shalf)
266 NULLIFY (work_matrices%ewald_env)
267 NULLIFY (work_matrices%ewald_pw)
268 NULLIFY (work_matrices%gamma_exchange)
269 NULLIFY (work_matrices%ctransformed)
270 NULLIFY (work_matrices%S_eigenvalues)
271 NULLIFY (work_matrices%S_eigenvectors)
272 NULLIFY (work_matrices%slambda)
275 NULLIFY (work_matrices%hartree_local)
276 NULLIFY (work_matrices%local_rho_set)
277 NULLIFY (work_matrices%local_rho_set_admm)
280 NULLIFY (work_matrices%rho_xc_struct_sub)
282 nspins =
SIZE(gs_mos)
288 CALL get_qs_env(qs_env, blacs_env=blacs_env, matrix_s=matrix_s)
292 nactive(ispin) = gs_mos(ispin)%nmo_active
293 nmo_occ(ispin) = gs_mos(ispin)%nmo_occ
294 nmo_virt(ispin) =
SIZE(gs_mos(ispin)%evals_virt)
299 cpassert(
ASSOCIATED(sub_env%admm_A))
300 CALL get_admm_env(qs_env%admm_env, matrix_s_aux_fit=matrix_s_aux_fit)
301 CALL dbcsr_get_info(matrix_s_aux_fit(1)%matrix, nfullrows_total=nao_aux)
305 ALLOCATE (work_matrices%fm_pool_ao_mo_active(nspins))
307 NULLIFY (work_matrices%fm_pool_ao_mo_active(ispin)%pool)
308 CALL cp_fm_struct_create(fm_struct, template_fmstruct=gs_mos(ispin)%mos_active%matrix_struct, context=blacs_env)
309 CALL fm_pool_create(work_matrices%fm_pool_ao_mo_active(ispin)%pool, fm_struct)
313 ALLOCATE (work_matrices%S_C0_C0T(nspins))
316 CALL cp_fm_create(work_matrices%S_C0_C0T(ispin), fm_struct)
320 ALLOCATE (work_matrices%S_C0(nspins))
322 CALL cp_fm_struct_create(fm_struct, template_fmstruct=gs_mos(ispin)%mos_occ%matrix_struct, context=blacs_env)
325 ncol=nmo_occ(ispin), alpha=1.0_dp, beta=0.0_dp)
326 CALL parallel_gemm(
'N',
'T', nao, nao, nmo_occ(ispin), 1.0_dp, work_matrices%S_C0(ispin), &
327 gs_mos(ispin)%mos_occ, 0.0_dp, work_matrices%S_C0_C0T(ispin))
331 IF (sub_env%is_split)
THEN
332 DO ispin = 1, evecs_dim
333 CALL cp_fm_struct_create(fm_struct_evects(ispin)%struct, template_fmstruct=gs_mos(ispin)%mos_active%matrix_struct, &
334 context=sub_env%blacs_env)
337 ALLOCATE (work_matrices%evects_sub(evecs_dim, nstates), work_matrices%Aop_evects_sub(evecs_dim, nstates))
339 CALL blacs_env%get(para_env=para_env)
340 igroup = sub_env%group_distribution(para_env%mepos)
341 ngroups = sub_env%ngroups
343 DO istate = ngroups - igroup, nstates, ngroups
344 DO ispin = 1, evecs_dim
345 CALL cp_fm_create(work_matrices%evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
346 CALL cp_fm_create(work_matrices%Aop_evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
350 DO ispin = evecs_dim, 1, -1
355 CALL cp_fm_struct_create(fm_struct, nrow_global=nao, ncol_global=nao, context=sub_env%blacs_env)
356 ALLOCATE (work_matrices%rho_ao_orb_fm_sub)
357 CALL cp_fm_create(work_matrices%rho_ao_orb_fm_sub, fm_struct)
360 NULLIFY (work_matrices%rho_ao_aux_fit_fm_sub, work_matrices%wfm_aux_orb_sub)
362 CALL cp_fm_struct_create(fm_struct, nrow_global=nao_aux, ncol_global=nao_aux, context=sub_env%blacs_env)
363 ALLOCATE (work_matrices%rho_ao_aux_fit_fm_sub)
364 CALL cp_fm_create(work_matrices%rho_ao_aux_fit_fm_sub, fm_struct)
367 CALL cp_fm_struct_create(fm_struct, nrow_global=nao_aux, ncol_global=nao, context=sub_env%blacs_env)
368 ALLOCATE (work_matrices%wfm_aux_orb_sub)
369 CALL cp_fm_create(work_matrices%wfm_aux_orb_sub, fm_struct)
374 NULLIFY (work_matrices%A_ia_munu_sub)
376 DO ispin = 1, evecs_dim
377 CALL dbcsr_init_p(work_matrices%A_ia_munu_sub(ispin)%matrix)
379 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_orb)
388 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_orb)
391 NULLIFY (work_matrices%rho_orb_struct_sub)
392 ALLOCATE (work_matrices%rho_orb_struct_sub)
394 CALL qs_rho_set(work_matrices%rho_orb_struct_sub, rho_ao=rho_ia_ao)
395 CALL qs_rho_rebuild(work_matrices%rho_orb_struct_sub, qs_env, rebuild_ao=.false., &
396 rebuild_grids=.true., pw_env_external=sub_env%pw_env)
397 CALL get_qs_env(qs_env, dft_control=dft_control)
398 IF (dft_control%qs_control%gapw_xc)
THEN
404 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_orb)
406 NULLIFY (work_matrices%rho_xc_struct_sub)
407 ALLOCATE (work_matrices%rho_xc_struct_sub)
409 CALL qs_rho_set(work_matrices%rho_xc_struct_sub, rho_ao=rho_xc_ao)
410 CALL qs_rho_rebuild(work_matrices%rho_xc_struct_sub, qs_env, rebuild_ao=.false., &
411 rebuild_grids=.true., pw_env_external=sub_env%pw_env)
414 NULLIFY (work_matrices%rho_aux_fit_struct_sub)
421 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_aux_fit)
424 ALLOCATE (work_matrices%rho_aux_fit_struct_sub)
426 CALL qs_rho_set(work_matrices%rho_aux_fit_struct_sub, rho_ao=rho_ia_ao)
427 CALL qs_rho_rebuild(work_matrices%rho_aux_fit_struct_sub, qs_env, rebuild_ao=.false., &
428 rebuild_grids=.true., pw_env_external=sub_env%pw_env)
432 CALL pw_env_get(sub_env%pw_env, auxbas_pw_pool=auxbas_pw_pool)
433 ALLOCATE (work_matrices%A_ia_rspace_sub(nspins))
434 ALLOCATE (work_matrices%wpw_gspace_sub(nspins), work_matrices%wpw_rspace_sub(nspins), &
435 work_matrices%wpw_tau_rspace_sub(nspins))
437 CALL auxbas_pw_pool%create_pw(work_matrices%A_ia_rspace_sub(ispin))
438 CALL auxbas_pw_pool%create_pw(work_matrices%wpw_gspace_sub(ispin))
439 CALL auxbas_pw_pool%create_pw(work_matrices%wpw_rspace_sub(ispin))
440 CALL auxbas_pw_pool%create_pw(work_matrices%wpw_tau_rspace_sub(ispin))
446 ALLOCATE (work_matrices%fxc_rspace_sub(3))
448 CALL auxbas_pw_pool%create_pw(work_matrices%fxc_rspace_sub(ispin))
451 NULLIFY (work_matrices%fxc_rspace_sub)
455 IF (dft_control%qs_control%gapw)
THEN
457 atomic_kind_set=atomic_kind_set, &
459 qs_kind_set=qs_kind_set)
462 qs_kind_set, dft_control, sub_env%para_env)
463 CALL init_rho0(work_matrices%local_rho_set, qs_env, dft_control%qs_control%gapw_control, &
468 ELSEIF (dft_control%qs_control%gapw_xc)
THEN
470 atomic_kind_set=atomic_kind_set, &
471 qs_kind_set=qs_kind_set)
474 qs_kind_set, dft_control, sub_env%para_env)
478 NULLIFY (work_matrices%hfx_fm_ao_ao, work_matrices%hfx_rho_ao_symm, work_matrices%hfx_hmat_symm, &
479 work_matrices%hfx_rho_ao_asymm, work_matrices%hfx_hmat_asymm)
482 CALL get_qs_env(qs_env, dbcsr_dist=dbcsr_dist)
484 dbcsr_template_hfx => matrix_s_aux_fit(1)%matrix
485 IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
THEN
486 CALL get_qs_env(qs_env, admm_env=admm_env, atomic_kind_set=atomic_kind_set)
489 atomic_kind_set, admm_env%admm_gapw_env%admm_kind_set, &
490 dft_control, sub_env%para_env)
493 CALL get_qs_env(qs_env, dbcsr_dist=dbcsr_dist, sab_orb=sab_hfx)
494 dbcsr_template_hfx => matrix_s(1)%matrix
498 ALLOCATE (work_matrices%hfx_fm_ao_ao)
499 CALL cp_fm_create(work_matrices%hfx_fm_ao_ao, fm_struct)
505 CALL dbcsr_init_p(work_matrices%hfx_rho_ao_symm(ispin)%matrix)
507 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
509 CALL dbcsr_init_p(work_matrices%hfx_rho_ao_asymm(ispin)%matrix)
510 CALL dbcsr_create(work_matrices%hfx_rho_ao_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
511 template=work_matrices%hfx_rho_ao_symm(ispin)%matrix)
513 work_matrices%hfx_rho_ao_asymm(ispin)%matrix)
519 CALL dbcsr_init_p(work_matrices%hfx_hmat_symm(ispin)%matrix)
521 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
523 CALL dbcsr_init_p(work_matrices%hfx_hmat_asymm(ispin)%matrix)
524 CALL dbcsr_create(work_matrices%hfx_hmat_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
525 template=work_matrices%hfx_hmat_symm(ispin)%matrix)
527 work_matrices%hfx_hmat_asymm(ispin)%matrix)
532 NULLIFY (work_matrices%hfxsr_fm_ao_ao, work_matrices%hfxsr_rho_ao_symm, work_matrices%hfxsr_hmat_symm, &
533 work_matrices%hfxsr_rho_ao_asymm, work_matrices%hfxsr_hmat_asymm)
537 CALL cp_fm_struct_create(fm_struct_evects(ispin)%struct, template_fmstruct=gs_mos(ispin)%mos_active%matrix_struct, &
538 context=sub_env%blacs_env)
541 CALL dbcsr_create(work_matrices%shalf, template=matrix_s(1)%matrix)
542 ALLOCATE (work_matrices%ctransformed(nspins))
544 CALL cp_fm_create(work_matrices%ctransformed(ispin), fm_struct_evects(ispin)%struct)
547 ALLOCATE (work_matrices%S_eigenvalues(nao))
550 ALLOCATE (work_matrices%S_eigenvectors, work_matrices%slambda)
551 CALL cp_fm_create(work_matrices%S_eigenvectors, fm_struct)
560 CALL timestop(handle)
575 CHARACTER(LEN=*),
PARAMETER :: routinen =
'hfxsr_create_work_matrices'
577 INTEGER :: handle, ispin, nao, nao_aux, nspins
581 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s, matrix_s_aux_fit
582 TYPE(
dbcsr_type),
POINTER :: dbcsr_template_hfx
587 CALL timeset(routinen, handle)
590 NULLIFY (work_matrices%hfxsr_fm_ao_ao, work_matrices%hfxsr_rho_ao_symm, work_matrices%hfxsr_hmat_symm, &
591 work_matrices%hfxsr_rho_ao_asymm, work_matrices%hfxsr_hmat_asymm)
593 CALL get_qs_env(qs_env, dft_control=dft_control, matrix_s=matrix_s, &
594 blacs_env=blacs_env, dbcsr_dist=dbcsr_dist)
595 nspins = dft_control%nspins
597 CALL get_admm_env(admm_env, matrix_s_aux_fit=matrix_s_aux_fit)
598 dbcsr_template_hfx => matrix_s_aux_fit(1)%matrix
602 ALLOCATE (work_matrices%hfxsr_fm_ao_ao)
603 CALL cp_fm_create(work_matrices%hfxsr_fm_ao_ao, fm_struct)
610 CALL dbcsr_init_p(work_matrices%hfxsr_rho_ao_symm(ispin)%matrix)
612 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
614 CALL dbcsr_init_p(work_matrices%hfxsr_rho_ao_asymm(ispin)%matrix)
615 CALL dbcsr_create(work_matrices%hfxsr_rho_ao_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
616 template=work_matrices%hfxsr_rho_ao_symm(ispin)%matrix)
618 work_matrices%hfxsr_rho_ao_asymm(ispin)%matrix)
624 CALL dbcsr_init_p(work_matrices%hfxsr_hmat_symm(ispin)%matrix)
626 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
628 CALL dbcsr_init_p(work_matrices%hfxsr_hmat_asymm(ispin)%matrix)
629 CALL dbcsr_create(work_matrices%hfxsr_hmat_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
630 template=work_matrices%hfxsr_hmat_symm(ispin)%matrix)
632 work_matrices%hfxsr_hmat_asymm(ispin)%matrix)
635 CALL timestop(handle)
653 INTEGER,
INTENT(in) :: nstates
657 CHARACTER(LEN=*),
PARAMETER :: routinen =
'stda_create_work_matrices'
659 INTEGER :: handle, igroup, ispin, istate, nao, &
661 INTEGER,
DIMENSION(maxspins) :: nactive, nmo_occ, nmo_virt
668 CALL timeset(routinen, handle)
670 NULLIFY (work_matrices%gamma_exchange, work_matrices%ctransformed)
672 nspins =
SIZE(gs_mos)
673 CALL get_qs_env(qs_env, blacs_env=blacs_env, matrix_s=matrix_s)
677 nactive(ispin) = gs_mos(ispin)%nmo_active
678 nmo_occ(ispin) = gs_mos(ispin)%nmo_occ
679 nmo_virt(ispin) =
SIZE(gs_mos(ispin)%evals_virt)
683 ALLOCATE (work_matrices%fm_pool_ao_mo_active(nspins))
685 NULLIFY (work_matrices%fm_pool_ao_mo_active(ispin)%pool)
686 CALL cp_fm_struct_create(fm_struct, nrow_global=nao, ncol_global=nactive(ispin), context=blacs_env)
687 CALL fm_pool_create(work_matrices%fm_pool_ao_mo_active(ispin)%pool, fm_struct)
691 ALLOCATE (work_matrices%S_C0_C0T(nspins))
694 CALL cp_fm_create(work_matrices%S_C0_C0T(ispin), fm_struct)
698 ALLOCATE (work_matrices%S_C0(nspins))
700 CALL cp_fm_struct_create(fm_struct, nrow_global=nao, ncol_global=nmo_occ(ispin), context=blacs_env)
703 ncol=nmo_occ(ispin), alpha=1.0_dp, beta=0.0_dp)
704 CALL parallel_gemm(
'N',
'T', nao, nao, nmo_occ(ispin), 1.0_dp, work_matrices%S_C0(ispin), &
705 gs_mos(ispin)%mos_occ, 0.0_dp, work_matrices%S_C0_C0T(ispin))
711 ncol_global=nactive(ispin), context=sub_env%blacs_env)
714 IF (sub_env%is_split)
THEN
715 ALLOCATE (work_matrices%evects_sub(nspins, nstates), work_matrices%Aop_evects_sub(nspins, nstates))
717 CALL blacs_env%get(para_env=para_env)
718 igroup = sub_env%group_distribution(para_env%mepos)
719 ngroups = sub_env%ngroups
721 DO istate = ngroups - igroup, nstates, ngroups
723 CALL cp_fm_create(work_matrices%evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
724 CALL cp_fm_create(work_matrices%Aop_evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
730 ALLOCATE (work_matrices%ctransformed(nspins))
732 CALL cp_fm_create(work_matrices%ctransformed(ispin), fm_struct_evects(ispin)%struct)
734 NULLIFY (work_matrices%shalf)
736 CALL dbcsr_create(work_matrices%shalf, template=matrix_s(1)%matrix)
738 ALLOCATE (work_matrices%S_eigenvalues(nao))
741 ALLOCATE (work_matrices%S_eigenvectors, work_matrices%slambda)
742 CALL cp_fm_create(work_matrices%S_eigenvectors, fm_struct)
746 DO ispin = nspins, 1, -1
750 NULLIFY (work_matrices%rho_ao_orb_fm_sub)
751 NULLIFY (work_matrices%rho_ao_aux_fit_fm_sub, work_matrices%wfm_aux_orb_sub)
752 NULLIFY (work_matrices%rho_aux_fit_struct_sub)
753 NULLIFY (work_matrices%rho_orb_struct_sub)
754 NULLIFY (work_matrices%hfx_fm_ao_ao, work_matrices%hfx_rho_ao_symm, work_matrices%hfx_hmat_symm, &
755 work_matrices%hfx_rho_ao_asymm, work_matrices%hfx_hmat_asymm)
756 NULLIFY (work_matrices%hfxsr_fm_ao_ao, work_matrices%hfxsr_rho_ao_symm, work_matrices%hfxsr_hmat_symm, &
757 work_matrices%hfxsr_rho_ao_asymm, work_matrices%hfxsr_hmat_asymm)
758 NULLIFY (work_matrices%A_ia_rspace_sub, work_matrices%wpw_gspace_sub, &
759 work_matrices%wpw_rspace_sub)
760 NULLIFY (work_matrices%fxc_rspace_sub)
761 NULLIFY (work_matrices%A_ia_munu_sub)
763 NULLIFY (work_matrices%ewald_env)
764 NULLIFY (work_matrices%ewald_pw)
766 NULLIFY (work_matrices%hartree_local)
767 NULLIFY (work_matrices%local_rho_set)
768 NULLIFY (work_matrices%local_rho_set_admm)
769 NULLIFY (work_matrices%rho_xc_struct_sub)
771 CALL timestop(handle)
786 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_release_work_matrices'
788 INTEGER :: handle, ispin
791 CALL timeset(routinen, handle)
794 IF (
ASSOCIATED(work_matrices%hfx_hmat_symm))
THEN
795 DO ispin =
SIZE(work_matrices%hfx_hmat_symm), 1, -1
798 DEALLOCATE (work_matrices%hfx_hmat_symm)
801 IF (
ASSOCIATED(work_matrices%hfx_hmat_asymm))
THEN
802 DO ispin =
SIZE(work_matrices%hfx_hmat_asymm), 1, -1
805 DEALLOCATE (work_matrices%hfx_hmat_asymm)
808 IF (
ASSOCIATED(work_matrices%hfx_rho_ao_symm))
THEN
809 DO ispin =
SIZE(work_matrices%hfx_rho_ao_symm), 1, -1
812 DEALLOCATE (work_matrices%hfx_rho_ao_symm)
815 IF (
ASSOCIATED(work_matrices%hfx_rho_ao_asymm))
THEN
816 DO ispin =
SIZE(work_matrices%hfx_rho_ao_asymm), 1, -1
819 DEALLOCATE (work_matrices%hfx_rho_ao_asymm)
822 IF (
ASSOCIATED(work_matrices%hfx_fm_ao_ao))
THEN
824 DEALLOCATE (work_matrices%hfx_fm_ao_ao)
828 IF (
ASSOCIATED(work_matrices%hfxsr_hmat_symm))
THEN
829 DO ispin =
SIZE(work_matrices%hfxsr_hmat_symm), 1, -1
832 DEALLOCATE (work_matrices%hfxsr_hmat_symm)
835 IF (
ASSOCIATED(work_matrices%hfxsr_hmat_asymm))
THEN
836 DO ispin =
SIZE(work_matrices%hfxsr_hmat_asymm), 1, -1
839 DEALLOCATE (work_matrices%hfxsr_hmat_asymm)
842 IF (
ASSOCIATED(work_matrices%hfxsr_rho_ao_symm))
THEN
843 DO ispin =
SIZE(work_matrices%hfxsr_rho_ao_symm), 1, -1
846 DEALLOCATE (work_matrices%hfxsr_rho_ao_symm)
849 IF (
ASSOCIATED(work_matrices%hfxsr_rho_ao_asymm))
THEN
850 DO ispin =
SIZE(work_matrices%hfxsr_rho_ao_asymm), 1, -1
853 DEALLOCATE (work_matrices%hfxsr_rho_ao_asymm)
856 IF (
ASSOCIATED(work_matrices%hfxsr_fm_ao_ao))
THEN
858 DEALLOCATE (work_matrices%hfxsr_fm_ao_ao)
862 IF (
ASSOCIATED(sub_env%pw_env))
THEN
863 CALL pw_env_get(sub_env%pw_env, auxbas_pw_pool=auxbas_pw_pool)
864 DO ispin =
SIZE(work_matrices%wpw_rspace_sub), 1, -1
865 CALL auxbas_pw_pool%give_back_pw(work_matrices%wpw_rspace_sub(ispin))
866 CALL auxbas_pw_pool%give_back_pw(work_matrices%wpw_tau_rspace_sub(ispin))
867 CALL auxbas_pw_pool%give_back_pw(work_matrices%wpw_gspace_sub(ispin))
868 CALL auxbas_pw_pool%give_back_pw(work_matrices%A_ia_rspace_sub(ispin))
870 DEALLOCATE (work_matrices%A_ia_rspace_sub, work_matrices%wpw_gspace_sub, &
871 work_matrices%wpw_rspace_sub, work_matrices%wpw_tau_rspace_sub)
872 IF (
ASSOCIATED(work_matrices%fxc_rspace_sub))
THEN
873 DO ispin =
SIZE(work_matrices%fxc_rspace_sub), 1, -1
874 CALL auxbas_pw_pool%give_back_pw(work_matrices%fxc_rspace_sub(ispin))
876 DEALLOCATE (work_matrices%fxc_rspace_sub)
880 IF (
ASSOCIATED(work_matrices%rho_aux_fit_struct_sub))
THEN
882 DEALLOCATE (work_matrices%rho_aux_fit_struct_sub)
884 IF (
ASSOCIATED(work_matrices%rho_orb_struct_sub))
THEN
886 DEALLOCATE (work_matrices%rho_orb_struct_sub)
889 IF (
ASSOCIATED(work_matrices%A_ia_munu_sub))
THEN
890 DO ispin =
SIZE(work_matrices%A_ia_munu_sub), 1, -1
893 DEALLOCATE (work_matrices%A_ia_munu_sub)
896 IF (
ASSOCIATED(work_matrices%wfm_aux_orb_sub))
THEN
898 DEALLOCATE (work_matrices%wfm_aux_orb_sub)
899 NULLIFY (work_matrices%wfm_aux_orb_sub)
901 IF (
ASSOCIATED(work_matrices%rho_ao_aux_fit_fm_sub))
THEN
903 DEALLOCATE (work_matrices%rho_ao_aux_fit_fm_sub)
904 NULLIFY (work_matrices%rho_ao_aux_fit_fm_sub)
906 IF (
ASSOCIATED(work_matrices%rho_ao_orb_fm_sub))
THEN
908 DEALLOCATE (work_matrices%rho_ao_orb_fm_sub)
909 NULLIFY (work_matrices%rho_ao_orb_fm_sub)
918 DO ispin =
SIZE(work_matrices%fm_pool_ao_mo_active), 1, -1
921 DEALLOCATE (work_matrices%fm_pool_ao_mo_active)
924 IF (
ASSOCIATED(work_matrices%gamma_exchange))
THEN
926 NULLIFY (work_matrices%gamma_exchange)
928 IF (
ASSOCIATED(work_matrices%ctransformed))
THEN
930 NULLIFY (work_matrices%ctransformed)
934 IF (
ASSOCIATED(work_matrices%S_eigenvectors))
THEN
936 DEALLOCATE (work_matrices%S_eigenvectors)
938 IF (
ASSOCIATED(work_matrices%slambda))
THEN
940 DEALLOCATE (work_matrices%slambda)
942 IF (
ASSOCIATED(work_matrices%S_eigenvalues)) &
943 DEALLOCATE (work_matrices%S_eigenvalues)
945 IF (
ASSOCIATED(work_matrices%ewald_env))
THEN
947 DEALLOCATE (work_matrices%ewald_env)
949 IF (
ASSOCIATED(work_matrices%ewald_pw))
THEN
951 DEALLOCATE (work_matrices%ewald_pw)
954 IF (
ASSOCIATED(work_matrices%local_rho_set))
THEN
957 IF (
ASSOCIATED(work_matrices%local_rho_set_admm))
THEN
960 IF (
ASSOCIATED(work_matrices%hartree_local))
THEN
964 IF (
ASSOCIATED(work_matrices%rho_xc_struct_sub))
THEN
966 DEALLOCATE (work_matrices%rho_xc_struct_sub)
969 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, 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.