223 do_hfxlr, do_exck, qs_env, sub_env)
227 INTEGER,
INTENT(in) :: nstates
228 LOGICAL,
INTENT(in) :: do_hfx, do_admm, do_hfxlr, do_exck
232 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_create_work_matrices'
234 INTEGER :: handle, igroup, ispin, istate, nao, &
235 nao_aux, natom, ngroups, nspins
236 INTEGER,
DIMENSION(maxspins) :: nmo_occ, nmo_virt
243 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s, matrix_s_aux_fit, rho_ia_ao, &
245 TYPE(
dbcsr_type),
POINTER :: dbcsr_template_hfx
251 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
253 CALL timeset(routinen, handle)
256 NULLIFY (work_matrices%shalf)
257 NULLIFY (work_matrices%ewald_env)
258 NULLIFY (work_matrices%ewald_pw)
259 NULLIFY (work_matrices%gamma_exchange)
260 NULLIFY (work_matrices%ctransformed)
261 NULLIFY (work_matrices%S_eigenvalues)
262 NULLIFY (work_matrices%S_eigenvectors)
263 NULLIFY (work_matrices%slambda)
266 NULLIFY (work_matrices%hartree_local)
267 NULLIFY (work_matrices%local_rho_set)
268 NULLIFY (work_matrices%local_rho_set_admm)
271 NULLIFY (work_matrices%rho_xc_struct_sub)
273 nspins =
SIZE(gs_mos)
274 CALL get_qs_env(qs_env, blacs_env=blacs_env, matrix_s=matrix_s)
278 nmo_occ(ispin) =
SIZE(gs_mos(ispin)%evals_occ)
279 nmo_virt(ispin) =
SIZE(gs_mos(ispin)%evals_virt)
284 cpassert(
ASSOCIATED(sub_env%admm_A))
285 CALL get_admm_env(qs_env%admm_env, matrix_s_aux_fit=matrix_s_aux_fit)
286 CALL dbcsr_get_info(matrix_s_aux_fit(1)%matrix, nfullrows_total=nao_aux)
290 ALLOCATE (work_matrices%fm_pool_ao_mo_occ(nspins))
292 NULLIFY (work_matrices%fm_pool_ao_mo_occ(ispin)%pool)
293 CALL cp_fm_struct_create(fm_struct, nrow_global=nao, ncol_global=nmo_occ(ispin), context=blacs_env)
294 CALL fm_pool_create(work_matrices%fm_pool_ao_mo_occ(ispin)%pool, fm_struct)
298 ALLOCATE (work_matrices%S_C0_C0T(nspins))
301 CALL cp_fm_create(work_matrices%S_C0_C0T(ispin), fm_struct)
305 ALLOCATE (work_matrices%S_C0(nspins))
307 CALL fm_pool_create_fm(work_matrices%fm_pool_ao_mo_occ(ispin)%pool, work_matrices%S_C0(ispin))
310 ncol=nmo_occ(ispin), alpha=1.0_dp, beta=0.0_dp)
311 CALL parallel_gemm(
'N',
'T', nao, nao, nmo_occ(ispin), 1.0_dp, work_matrices%S_C0(ispin), &
312 gs_mos(ispin)%mos_occ, 0.0_dp, work_matrices%S_C0_C0T(ispin))
315 IF (sub_env%is_split)
THEN
318 ncol_global=nmo_occ(ispin), context=sub_env%blacs_env)
321 ALLOCATE (work_matrices%evects_sub(nspins, nstates), work_matrices%Aop_evects_sub(nspins, nstates))
323 CALL blacs_env%get(para_env=para_env)
324 igroup = sub_env%group_distribution(para_env%mepos)
325 ngroups = sub_env%ngroups
327 DO istate = ngroups - igroup, nstates, ngroups
329 CALL cp_fm_create(work_matrices%evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
330 CALL cp_fm_create(work_matrices%Aop_evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
334 DO ispin = nspins, 1, -1
339 CALL cp_fm_struct_create(fm_struct, nrow_global=nao, ncol_global=nao, context=sub_env%blacs_env)
340 ALLOCATE (work_matrices%rho_ao_orb_fm_sub)
341 CALL cp_fm_create(work_matrices%rho_ao_orb_fm_sub, fm_struct)
344 NULLIFY (work_matrices%rho_ao_aux_fit_fm_sub, work_matrices%wfm_aux_orb_sub)
346 CALL cp_fm_struct_create(fm_struct, nrow_global=nao_aux, ncol_global=nao_aux, context=sub_env%blacs_env)
347 ALLOCATE (work_matrices%rho_ao_aux_fit_fm_sub)
348 CALL cp_fm_create(work_matrices%rho_ao_aux_fit_fm_sub, fm_struct)
351 CALL cp_fm_struct_create(fm_struct, nrow_global=nao_aux, ncol_global=nao, context=sub_env%blacs_env)
352 ALLOCATE (work_matrices%wfm_aux_orb_sub)
353 CALL cp_fm_create(work_matrices%wfm_aux_orb_sub, fm_struct)
358 NULLIFY (work_matrices%A_ia_munu_sub)
361 CALL dbcsr_init_p(work_matrices%A_ia_munu_sub(ispin)%matrix)
363 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_orb)
372 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_orb)
375 NULLIFY (work_matrices%rho_orb_struct_sub)
376 ALLOCATE (work_matrices%rho_orb_struct_sub)
378 CALL qs_rho_set(work_matrices%rho_orb_struct_sub, rho_ao=rho_ia_ao)
379 CALL qs_rho_rebuild(work_matrices%rho_orb_struct_sub, qs_env, rebuild_ao=.false., &
380 rebuild_grids=.true., pw_env_external=sub_env%pw_env)
381 CALL get_qs_env(qs_env, dft_control=dft_control)
382 IF (dft_control%qs_control%gapw_xc)
THEN
388 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_orb)
390 NULLIFY (work_matrices%rho_xc_struct_sub)
391 ALLOCATE (work_matrices%rho_xc_struct_sub)
393 CALL qs_rho_set(work_matrices%rho_xc_struct_sub, rho_ao=rho_xc_ao)
394 CALL qs_rho_rebuild(work_matrices%rho_xc_struct_sub, qs_env, rebuild_ao=.false., &
395 rebuild_grids=.true., pw_env_external=sub_env%pw_env)
398 NULLIFY (work_matrices%rho_aux_fit_struct_sub)
405 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_aux_fit)
408 ALLOCATE (work_matrices%rho_aux_fit_struct_sub)
410 CALL qs_rho_set(work_matrices%rho_aux_fit_struct_sub, rho_ao=rho_ia_ao)
411 CALL qs_rho_rebuild(work_matrices%rho_aux_fit_struct_sub, qs_env, rebuild_ao=.false., &
412 rebuild_grids=.true., pw_env_external=sub_env%pw_env)
416 CALL pw_env_get(sub_env%pw_env, auxbas_pw_pool=auxbas_pw_pool)
417 ALLOCATE (work_matrices%A_ia_rspace_sub(nspins))
418 ALLOCATE (work_matrices%wpw_gspace_sub(nspins), work_matrices%wpw_rspace_sub(nspins), &
419 work_matrices%wpw_tau_rspace_sub(nspins))
421 CALL auxbas_pw_pool%create_pw(work_matrices%A_ia_rspace_sub(ispin))
422 CALL auxbas_pw_pool%create_pw(work_matrices%wpw_gspace_sub(ispin))
423 CALL auxbas_pw_pool%create_pw(work_matrices%wpw_rspace_sub(ispin))
424 CALL auxbas_pw_pool%create_pw(work_matrices%wpw_tau_rspace_sub(ispin))
430 ALLOCATE (work_matrices%fxc_rspace_sub(3))
432 CALL auxbas_pw_pool%create_pw(work_matrices%fxc_rspace_sub(ispin))
435 NULLIFY (work_matrices%fxc_rspace_sub)
439 IF (dft_control%qs_control%gapw)
THEN
441 atomic_kind_set=atomic_kind_set, &
443 qs_kind_set=qs_kind_set)
446 qs_kind_set, dft_control, sub_env%para_env)
447 CALL init_rho0(work_matrices%local_rho_set, qs_env, dft_control%qs_control%gapw_control, &
452 ELSEIF (dft_control%qs_control%gapw_xc)
THEN
454 atomic_kind_set=atomic_kind_set, &
455 qs_kind_set=qs_kind_set)
458 qs_kind_set, dft_control, sub_env%para_env)
462 NULLIFY (work_matrices%hfx_fm_ao_ao, work_matrices%hfx_rho_ao_symm, work_matrices%hfx_hmat_symm, &
463 work_matrices%hfx_rho_ao_asymm, work_matrices%hfx_hmat_asymm)
466 CALL get_qs_env(qs_env, dbcsr_dist=dbcsr_dist)
468 dbcsr_template_hfx => matrix_s_aux_fit(1)%matrix
469 IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
THEN
470 CALL get_qs_env(qs_env, admm_env=admm_env, atomic_kind_set=atomic_kind_set)
473 atomic_kind_set, admm_env%admm_gapw_env%admm_kind_set, &
474 dft_control, sub_env%para_env)
477 CALL get_qs_env(qs_env, dbcsr_dist=dbcsr_dist, sab_orb=sab_hfx)
478 dbcsr_template_hfx => matrix_s(1)%matrix
482 ALLOCATE (work_matrices%hfx_fm_ao_ao)
483 CALL cp_fm_create(work_matrices%hfx_fm_ao_ao, fm_struct)
489 CALL dbcsr_init_p(work_matrices%hfx_rho_ao_symm(ispin)%matrix)
491 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
493 CALL dbcsr_init_p(work_matrices%hfx_rho_ao_asymm(ispin)%matrix)
494 CALL dbcsr_create(work_matrices%hfx_rho_ao_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
495 template=work_matrices%hfx_rho_ao_symm(ispin)%matrix)
497 work_matrices%hfx_rho_ao_asymm(ispin)%matrix)
503 CALL dbcsr_init_p(work_matrices%hfx_hmat_symm(ispin)%matrix)
505 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
507 CALL dbcsr_init_p(work_matrices%hfx_hmat_asymm(ispin)%matrix)
508 CALL dbcsr_create(work_matrices%hfx_hmat_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
509 template=work_matrices%hfx_hmat_symm(ispin)%matrix)
511 work_matrices%hfx_hmat_asymm(ispin)%matrix)
516 NULLIFY (work_matrices%hfxsr_fm_ao_ao, work_matrices%hfxsr_rho_ao_symm, work_matrices%hfxsr_hmat_symm, &
517 work_matrices%hfxsr_rho_ao_asymm, work_matrices%hfxsr_hmat_asymm)
522 ncol_global=nmo_occ(ispin), context=sub_env%blacs_env)
525 CALL dbcsr_create(work_matrices%shalf, template=matrix_s(1)%matrix)
526 ALLOCATE (work_matrices%ctransformed(nspins))
528 CALL cp_fm_create(work_matrices%ctransformed(ispin), fm_struct_evects(ispin)%struct)
531 ALLOCATE (work_matrices%S_eigenvalues(nao))
534 ALLOCATE (work_matrices%S_eigenvectors, work_matrices%slambda)
535 CALL cp_fm_create(work_matrices%S_eigenvectors, fm_struct)
544 CALL timestop(handle)
559 CHARACTER(LEN=*),
PARAMETER :: routinen =
'hfxsr_create_work_matrices'
561 INTEGER :: handle, ispin, nao, nao_aux, nspins
565 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s, matrix_s_aux_fit
566 TYPE(
dbcsr_type),
POINTER :: dbcsr_template_hfx
571 CALL timeset(routinen, handle)
574 NULLIFY (work_matrices%hfxsr_fm_ao_ao, work_matrices%hfxsr_rho_ao_symm, work_matrices%hfxsr_hmat_symm, &
575 work_matrices%hfxsr_rho_ao_asymm, work_matrices%hfxsr_hmat_asymm)
577 CALL get_qs_env(qs_env, dft_control=dft_control, matrix_s=matrix_s, &
578 blacs_env=blacs_env, dbcsr_dist=dbcsr_dist)
579 nspins = dft_control%nspins
581 CALL get_admm_env(admm_env, matrix_s_aux_fit=matrix_s_aux_fit)
582 dbcsr_template_hfx => matrix_s_aux_fit(1)%matrix
586 ALLOCATE (work_matrices%hfxsr_fm_ao_ao)
587 CALL cp_fm_create(work_matrices%hfxsr_fm_ao_ao, fm_struct)
594 CALL dbcsr_init_p(work_matrices%hfxsr_rho_ao_symm(ispin)%matrix)
596 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
598 CALL dbcsr_init_p(work_matrices%hfxsr_rho_ao_asymm(ispin)%matrix)
599 CALL dbcsr_create(work_matrices%hfxsr_rho_ao_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
600 template=work_matrices%hfxsr_rho_ao_symm(ispin)%matrix)
602 work_matrices%hfxsr_rho_ao_asymm(ispin)%matrix)
608 CALL dbcsr_init_p(work_matrices%hfxsr_hmat_symm(ispin)%matrix)
610 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
612 CALL dbcsr_init_p(work_matrices%hfxsr_hmat_asymm(ispin)%matrix)
613 CALL dbcsr_create(work_matrices%hfxsr_hmat_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
614 template=work_matrices%hfxsr_hmat_symm(ispin)%matrix)
616 work_matrices%hfxsr_hmat_asymm(ispin)%matrix)
619 CALL timestop(handle)
637 INTEGER,
INTENT(in) :: nstates
641 CHARACTER(LEN=*),
PARAMETER :: routinen =
'stda_create_work_matrices'
643 INTEGER :: handle, igroup, ispin, istate, nao, &
645 INTEGER,
DIMENSION(maxspins) :: nmo_occ, nmo_virt
652 CALL timeset(routinen, handle)
654 NULLIFY (work_matrices%gamma_exchange, work_matrices%ctransformed)
656 nspins =
SIZE(gs_mos)
657 CALL get_qs_env(qs_env, blacs_env=blacs_env, matrix_s=matrix_s)
661 nmo_occ(ispin) =
SIZE(gs_mos(ispin)%evals_occ)
662 nmo_virt(ispin) =
SIZE(gs_mos(ispin)%evals_virt)
666 ALLOCATE (work_matrices%fm_pool_ao_mo_occ(nspins))
668 NULLIFY (work_matrices%fm_pool_ao_mo_occ(ispin)%pool)
669 CALL cp_fm_struct_create(fm_struct, nrow_global=nao, ncol_global=nmo_occ(ispin), context=blacs_env)
670 CALL fm_pool_create(work_matrices%fm_pool_ao_mo_occ(ispin)%pool, fm_struct)
674 ALLOCATE (work_matrices%S_C0_C0T(nspins))
677 CALL cp_fm_create(work_matrices%S_C0_C0T(ispin), fm_struct)
681 ALLOCATE (work_matrices%S_C0(nspins))
683 CALL fm_pool_create_fm(work_matrices%fm_pool_ao_mo_occ(ispin)%pool, work_matrices%S_C0(ispin))
686 ncol=nmo_occ(ispin), alpha=1.0_dp, beta=0.0_dp)
687 CALL parallel_gemm(
'N',
'T', nao, nao, nmo_occ(ispin), 1.0_dp, work_matrices%S_C0(ispin), &
688 gs_mos(ispin)%mos_occ, 0.0_dp, work_matrices%S_C0_C0T(ispin))
693 ncol_global=nmo_occ(ispin), context=sub_env%blacs_env)
696 IF (sub_env%is_split)
THEN
697 ALLOCATE (work_matrices%evects_sub(nspins, nstates), work_matrices%Aop_evects_sub(nspins, nstates))
699 CALL blacs_env%get(para_env=para_env)
700 igroup = sub_env%group_distribution(para_env%mepos)
701 ngroups = sub_env%ngroups
703 DO istate = ngroups - igroup, nstates, ngroups
705 CALL cp_fm_create(work_matrices%evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
706 CALL cp_fm_create(work_matrices%Aop_evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
712 ALLOCATE (work_matrices%ctransformed(nspins))
714 CALL cp_fm_create(work_matrices%ctransformed(ispin), fm_struct_evects(ispin)%struct)
716 NULLIFY (work_matrices%shalf)
718 CALL dbcsr_create(work_matrices%shalf, template=matrix_s(1)%matrix)
720 ALLOCATE (work_matrices%S_eigenvalues(nao))
723 ALLOCATE (work_matrices%S_eigenvectors, work_matrices%slambda)
724 CALL cp_fm_create(work_matrices%S_eigenvectors, fm_struct)
728 DO ispin = nspins, 1, -1
732 NULLIFY (work_matrices%rho_ao_orb_fm_sub)
733 NULLIFY (work_matrices%rho_ao_aux_fit_fm_sub, work_matrices%wfm_aux_orb_sub)
734 NULLIFY (work_matrices%rho_aux_fit_struct_sub)
735 NULLIFY (work_matrices%rho_orb_struct_sub)
736 NULLIFY (work_matrices%hfx_fm_ao_ao, work_matrices%hfx_rho_ao_symm, work_matrices%hfx_hmat_symm, &
737 work_matrices%hfx_rho_ao_asymm, work_matrices%hfx_hmat_asymm)
738 NULLIFY (work_matrices%hfxsr_fm_ao_ao, work_matrices%hfxsr_rho_ao_symm, work_matrices%hfxsr_hmat_symm, &
739 work_matrices%hfxsr_rho_ao_asymm, work_matrices%hfxsr_hmat_asymm)
740 NULLIFY (work_matrices%A_ia_rspace_sub, work_matrices%wpw_gspace_sub, &
741 work_matrices%wpw_rspace_sub)
742 NULLIFY (work_matrices%fxc_rspace_sub)
743 NULLIFY (work_matrices%A_ia_munu_sub)
745 NULLIFY (work_matrices%ewald_env)
746 NULLIFY (work_matrices%ewald_pw)
748 NULLIFY (work_matrices%hartree_local)
749 NULLIFY (work_matrices%local_rho_set)
750 NULLIFY (work_matrices%local_rho_set_admm)
751 NULLIFY (work_matrices%rho_xc_struct_sub)
753 CALL timestop(handle)
768 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_release_work_matrices'
770 INTEGER :: handle, ispin
773 CALL timeset(routinen, handle)
776 IF (
ASSOCIATED(work_matrices%hfx_hmat_symm))
THEN
777 DO ispin =
SIZE(work_matrices%hfx_hmat_symm), 1, -1
780 DEALLOCATE (work_matrices%hfx_hmat_symm)
783 IF (
ASSOCIATED(work_matrices%hfx_hmat_asymm))
THEN
784 DO ispin =
SIZE(work_matrices%hfx_hmat_asymm), 1, -1
787 DEALLOCATE (work_matrices%hfx_hmat_asymm)
790 IF (
ASSOCIATED(work_matrices%hfx_rho_ao_symm))
THEN
791 DO ispin =
SIZE(work_matrices%hfx_rho_ao_symm), 1, -1
794 DEALLOCATE (work_matrices%hfx_rho_ao_symm)
797 IF (
ASSOCIATED(work_matrices%hfx_rho_ao_asymm))
THEN
798 DO ispin =
SIZE(work_matrices%hfx_rho_ao_asymm), 1, -1
801 DEALLOCATE (work_matrices%hfx_rho_ao_asymm)
804 IF (
ASSOCIATED(work_matrices%hfx_fm_ao_ao))
THEN
806 DEALLOCATE (work_matrices%hfx_fm_ao_ao)
810 IF (
ASSOCIATED(work_matrices%hfxsr_hmat_symm))
THEN
811 DO ispin =
SIZE(work_matrices%hfxsr_hmat_symm), 1, -1
814 DEALLOCATE (work_matrices%hfxsr_hmat_symm)
817 IF (
ASSOCIATED(work_matrices%hfxsr_hmat_asymm))
THEN
818 DO ispin =
SIZE(work_matrices%hfxsr_hmat_asymm), 1, -1
821 DEALLOCATE (work_matrices%hfxsr_hmat_asymm)
824 IF (
ASSOCIATED(work_matrices%hfxsr_rho_ao_symm))
THEN
825 DO ispin =
SIZE(work_matrices%hfxsr_rho_ao_symm), 1, -1
828 DEALLOCATE (work_matrices%hfxsr_rho_ao_symm)
831 IF (
ASSOCIATED(work_matrices%hfxsr_rho_ao_asymm))
THEN
832 DO ispin =
SIZE(work_matrices%hfxsr_rho_ao_asymm), 1, -1
835 DEALLOCATE (work_matrices%hfxsr_rho_ao_asymm)
838 IF (
ASSOCIATED(work_matrices%hfxsr_fm_ao_ao))
THEN
840 DEALLOCATE (work_matrices%hfxsr_fm_ao_ao)
844 IF (
ASSOCIATED(sub_env%pw_env))
THEN
845 CALL pw_env_get(sub_env%pw_env, auxbas_pw_pool=auxbas_pw_pool)
846 DO ispin =
SIZE(work_matrices%wpw_rspace_sub), 1, -1
847 CALL auxbas_pw_pool%give_back_pw(work_matrices%wpw_rspace_sub(ispin))
848 CALL auxbas_pw_pool%give_back_pw(work_matrices%wpw_tau_rspace_sub(ispin))
849 CALL auxbas_pw_pool%give_back_pw(work_matrices%wpw_gspace_sub(ispin))
850 CALL auxbas_pw_pool%give_back_pw(work_matrices%A_ia_rspace_sub(ispin))
852 DEALLOCATE (work_matrices%A_ia_rspace_sub, work_matrices%wpw_gspace_sub, &
853 work_matrices%wpw_rspace_sub, work_matrices%wpw_tau_rspace_sub)
854 IF (
ASSOCIATED(work_matrices%fxc_rspace_sub))
THEN
855 DO ispin =
SIZE(work_matrices%fxc_rspace_sub), 1, -1
856 CALL auxbas_pw_pool%give_back_pw(work_matrices%fxc_rspace_sub(ispin))
858 DEALLOCATE (work_matrices%fxc_rspace_sub)
862 IF (
ASSOCIATED(work_matrices%rho_aux_fit_struct_sub))
THEN
864 DEALLOCATE (work_matrices%rho_aux_fit_struct_sub)
866 IF (
ASSOCIATED(work_matrices%rho_orb_struct_sub))
THEN
868 DEALLOCATE (work_matrices%rho_orb_struct_sub)
871 IF (
ASSOCIATED(work_matrices%A_ia_munu_sub))
THEN
872 DO ispin =
SIZE(work_matrices%A_ia_munu_sub), 1, -1
875 DEALLOCATE (work_matrices%A_ia_munu_sub)
878 IF (
ASSOCIATED(work_matrices%wfm_aux_orb_sub))
THEN
880 DEALLOCATE (work_matrices%wfm_aux_orb_sub)
881 NULLIFY (work_matrices%wfm_aux_orb_sub)
883 IF (
ASSOCIATED(work_matrices%rho_ao_aux_fit_fm_sub))
THEN
885 DEALLOCATE (work_matrices%rho_ao_aux_fit_fm_sub)
886 NULLIFY (work_matrices%rho_ao_aux_fit_fm_sub)
888 IF (
ASSOCIATED(work_matrices%rho_ao_orb_fm_sub))
THEN
890 DEALLOCATE (work_matrices%rho_ao_orb_fm_sub)
891 NULLIFY (work_matrices%rho_ao_orb_fm_sub)
900 DO ispin =
SIZE(work_matrices%fm_pool_ao_mo_occ), 1, -1
903 DEALLOCATE (work_matrices%fm_pool_ao_mo_occ)
906 IF (
ASSOCIATED(work_matrices%gamma_exchange))
THEN
908 NULLIFY (work_matrices%gamma_exchange)
910 IF (
ASSOCIATED(work_matrices%ctransformed))
THEN
912 NULLIFY (work_matrices%ctransformed)
916 IF (
ASSOCIATED(work_matrices%S_eigenvectors))
THEN
918 DEALLOCATE (work_matrices%S_eigenvectors)
920 IF (
ASSOCIATED(work_matrices%slambda))
THEN
922 DEALLOCATE (work_matrices%slambda)
924 IF (
ASSOCIATED(work_matrices%S_eigenvalues)) &
925 DEALLOCATE (work_matrices%S_eigenvalues)
927 IF (
ASSOCIATED(work_matrices%ewald_env))
THEN
929 DEALLOCATE (work_matrices%ewald_env)
931 IF (
ASSOCIATED(work_matrices%ewald_pw))
THEN
933 DEALLOCATE (work_matrices%ewald_pw)
936 IF (
ASSOCIATED(work_matrices%local_rho_set))
THEN
939 IF (
ASSOCIATED(work_matrices%local_rho_set_admm))
THEN
942 IF (
ASSOCIATED(work_matrices%hartree_local))
THEN
946 IF (
ASSOCIATED(work_matrices%rho_xc_struct_sub))
THEN
948 DEALLOCATE (work_matrices%rho_xc_struct_sub)
951 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.