224 do_hfxlr, do_exck, do_sf, qs_env, sub_env)
228 INTEGER,
INTENT(in) :: nstates
229 LOGICAL,
INTENT(in) :: do_hfx, do_admm, do_hfxlr, do_exck, do_sf
233 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_create_work_matrices'
235 INTEGER :: evecs_dim, handle, igroup, ispin, &
236 istate, nao, nao_aux, natom, ngroups, &
238 INTEGER,
DIMENSION(maxspins) :: nmo_occ, nmo_virt
245 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s, matrix_s_aux_fit, rho_ia_ao, &
247 TYPE(
dbcsr_type),
POINTER :: dbcsr_template_hfx
253 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
255 CALL timeset(routinen, handle)
258 NULLIFY (work_matrices%shalf)
259 NULLIFY (work_matrices%ewald_env)
260 NULLIFY (work_matrices%ewald_pw)
261 NULLIFY (work_matrices%gamma_exchange)
262 NULLIFY (work_matrices%ctransformed)
263 NULLIFY (work_matrices%S_eigenvalues)
264 NULLIFY (work_matrices%S_eigenvectors)
265 NULLIFY (work_matrices%slambda)
268 NULLIFY (work_matrices%hartree_local)
269 NULLIFY (work_matrices%local_rho_set)
270 NULLIFY (work_matrices%local_rho_set_admm)
273 NULLIFY (work_matrices%rho_xc_struct_sub)
275 nspins =
SIZE(gs_mos)
281 CALL get_qs_env(qs_env, blacs_env=blacs_env, matrix_s=matrix_s)
285 nmo_occ(ispin) =
SIZE(gs_mos(ispin)%evals_occ)
286 nmo_virt(ispin) =
SIZE(gs_mos(ispin)%evals_virt)
291 cpassert(
ASSOCIATED(sub_env%admm_A))
292 CALL get_admm_env(qs_env%admm_env, matrix_s_aux_fit=matrix_s_aux_fit)
293 CALL dbcsr_get_info(matrix_s_aux_fit(1)%matrix, nfullrows_total=nao_aux)
297 ALLOCATE (work_matrices%fm_pool_ao_mo_occ(nspins))
299 NULLIFY (work_matrices%fm_pool_ao_mo_occ(ispin)%pool)
300 CALL cp_fm_struct_create(fm_struct, nrow_global=nao, ncol_global=nmo_occ(ispin), context=blacs_env)
301 CALL fm_pool_create(work_matrices%fm_pool_ao_mo_occ(ispin)%pool, fm_struct)
305 ALLOCATE (work_matrices%S_C0_C0T(nspins))
308 CALL cp_fm_create(work_matrices%S_C0_C0T(ispin), fm_struct)
312 ALLOCATE (work_matrices%S_C0(nspins))
314 CALL fm_pool_create_fm(work_matrices%fm_pool_ao_mo_occ(ispin)%pool, work_matrices%S_C0(ispin))
317 ncol=nmo_occ(ispin), alpha=1.0_dp, beta=0.0_dp)
318 CALL parallel_gemm(
'N',
'T', nao, nao, nmo_occ(ispin), 1.0_dp, work_matrices%S_C0(ispin), &
319 gs_mos(ispin)%mos_occ, 0.0_dp, work_matrices%S_C0_C0T(ispin))
322 IF (sub_env%is_split)
THEN
323 DO ispin = 1, evecs_dim
325 ncol_global=nmo_occ(ispin), context=sub_env%blacs_env)
328 ALLOCATE (work_matrices%evects_sub(evecs_dim, nstates), work_matrices%Aop_evects_sub(evecs_dim, nstates))
330 CALL blacs_env%get(para_env=para_env)
331 igroup = sub_env%group_distribution(para_env%mepos)
332 ngroups = sub_env%ngroups
334 DO istate = ngroups - igroup, nstates, ngroups
335 DO ispin = 1, evecs_dim
336 CALL cp_fm_create(work_matrices%evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
337 CALL cp_fm_create(work_matrices%Aop_evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
341 DO ispin = evecs_dim, 1, -1
346 CALL cp_fm_struct_create(fm_struct, nrow_global=nao, ncol_global=nao, context=sub_env%blacs_env)
347 ALLOCATE (work_matrices%rho_ao_orb_fm_sub)
348 CALL cp_fm_create(work_matrices%rho_ao_orb_fm_sub, fm_struct)
351 NULLIFY (work_matrices%rho_ao_aux_fit_fm_sub, work_matrices%wfm_aux_orb_sub)
353 CALL cp_fm_struct_create(fm_struct, nrow_global=nao_aux, ncol_global=nao_aux, context=sub_env%blacs_env)
354 ALLOCATE (work_matrices%rho_ao_aux_fit_fm_sub)
355 CALL cp_fm_create(work_matrices%rho_ao_aux_fit_fm_sub, fm_struct)
358 CALL cp_fm_struct_create(fm_struct, nrow_global=nao_aux, ncol_global=nao, context=sub_env%blacs_env)
359 ALLOCATE (work_matrices%wfm_aux_orb_sub)
360 CALL cp_fm_create(work_matrices%wfm_aux_orb_sub, fm_struct)
365 NULLIFY (work_matrices%A_ia_munu_sub)
367 DO ispin = 1, evecs_dim
368 CALL dbcsr_init_p(work_matrices%A_ia_munu_sub(ispin)%matrix)
370 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_orb)
379 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_orb)
382 NULLIFY (work_matrices%rho_orb_struct_sub)
383 ALLOCATE (work_matrices%rho_orb_struct_sub)
385 CALL qs_rho_set(work_matrices%rho_orb_struct_sub, rho_ao=rho_ia_ao)
386 CALL qs_rho_rebuild(work_matrices%rho_orb_struct_sub, qs_env, rebuild_ao=.false., &
387 rebuild_grids=.true., pw_env_external=sub_env%pw_env)
388 CALL get_qs_env(qs_env, dft_control=dft_control)
389 IF (dft_control%qs_control%gapw_xc)
THEN
395 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_orb)
397 NULLIFY (work_matrices%rho_xc_struct_sub)
398 ALLOCATE (work_matrices%rho_xc_struct_sub)
400 CALL qs_rho_set(work_matrices%rho_xc_struct_sub, rho_ao=rho_xc_ao)
401 CALL qs_rho_rebuild(work_matrices%rho_xc_struct_sub, qs_env, rebuild_ao=.false., &
402 rebuild_grids=.true., pw_env_external=sub_env%pw_env)
405 NULLIFY (work_matrices%rho_aux_fit_struct_sub)
412 dbcsr_dist=sub_env%dbcsr_dist, sab=sub_env%sab_aux_fit)
415 ALLOCATE (work_matrices%rho_aux_fit_struct_sub)
417 CALL qs_rho_set(work_matrices%rho_aux_fit_struct_sub, rho_ao=rho_ia_ao)
418 CALL qs_rho_rebuild(work_matrices%rho_aux_fit_struct_sub, qs_env, rebuild_ao=.false., &
419 rebuild_grids=.true., pw_env_external=sub_env%pw_env)
423 CALL pw_env_get(sub_env%pw_env, auxbas_pw_pool=auxbas_pw_pool)
424 ALLOCATE (work_matrices%A_ia_rspace_sub(nspins))
425 ALLOCATE (work_matrices%wpw_gspace_sub(nspins), work_matrices%wpw_rspace_sub(nspins), &
426 work_matrices%wpw_tau_rspace_sub(nspins))
428 CALL auxbas_pw_pool%create_pw(work_matrices%A_ia_rspace_sub(ispin))
429 CALL auxbas_pw_pool%create_pw(work_matrices%wpw_gspace_sub(ispin))
430 CALL auxbas_pw_pool%create_pw(work_matrices%wpw_rspace_sub(ispin))
431 CALL auxbas_pw_pool%create_pw(work_matrices%wpw_tau_rspace_sub(ispin))
437 ALLOCATE (work_matrices%fxc_rspace_sub(3))
439 CALL auxbas_pw_pool%create_pw(work_matrices%fxc_rspace_sub(ispin))
442 NULLIFY (work_matrices%fxc_rspace_sub)
446 IF (dft_control%qs_control%gapw)
THEN
448 atomic_kind_set=atomic_kind_set, &
450 qs_kind_set=qs_kind_set)
453 qs_kind_set, dft_control, sub_env%para_env)
454 CALL init_rho0(work_matrices%local_rho_set, qs_env, dft_control%qs_control%gapw_control, &
459 ELSEIF (dft_control%qs_control%gapw_xc)
THEN
461 atomic_kind_set=atomic_kind_set, &
462 qs_kind_set=qs_kind_set)
465 qs_kind_set, dft_control, sub_env%para_env)
469 NULLIFY (work_matrices%hfx_fm_ao_ao, work_matrices%hfx_rho_ao_symm, work_matrices%hfx_hmat_symm, &
470 work_matrices%hfx_rho_ao_asymm, work_matrices%hfx_hmat_asymm)
473 CALL get_qs_env(qs_env, dbcsr_dist=dbcsr_dist)
475 dbcsr_template_hfx => matrix_s_aux_fit(1)%matrix
476 IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
THEN
477 CALL get_qs_env(qs_env, admm_env=admm_env, atomic_kind_set=atomic_kind_set)
480 atomic_kind_set, admm_env%admm_gapw_env%admm_kind_set, &
481 dft_control, sub_env%para_env)
484 CALL get_qs_env(qs_env, dbcsr_dist=dbcsr_dist, sab_orb=sab_hfx)
485 dbcsr_template_hfx => matrix_s(1)%matrix
489 ALLOCATE (work_matrices%hfx_fm_ao_ao)
490 CALL cp_fm_create(work_matrices%hfx_fm_ao_ao, fm_struct)
496 CALL dbcsr_init_p(work_matrices%hfx_rho_ao_symm(ispin)%matrix)
498 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
500 CALL dbcsr_init_p(work_matrices%hfx_rho_ao_asymm(ispin)%matrix)
501 CALL dbcsr_create(work_matrices%hfx_rho_ao_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
502 template=work_matrices%hfx_rho_ao_symm(ispin)%matrix)
504 work_matrices%hfx_rho_ao_asymm(ispin)%matrix)
510 CALL dbcsr_init_p(work_matrices%hfx_hmat_symm(ispin)%matrix)
512 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
514 CALL dbcsr_init_p(work_matrices%hfx_hmat_asymm(ispin)%matrix)
515 CALL dbcsr_create(work_matrices%hfx_hmat_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
516 template=work_matrices%hfx_hmat_symm(ispin)%matrix)
518 work_matrices%hfx_hmat_asymm(ispin)%matrix)
523 NULLIFY (work_matrices%hfxsr_fm_ao_ao, work_matrices%hfxsr_rho_ao_symm, work_matrices%hfxsr_hmat_symm, &
524 work_matrices%hfxsr_rho_ao_asymm, work_matrices%hfxsr_hmat_asymm)
529 ncol_global=nmo_occ(ispin), context=sub_env%blacs_env)
532 CALL dbcsr_create(work_matrices%shalf, template=matrix_s(1)%matrix)
533 ALLOCATE (work_matrices%ctransformed(nspins))
535 CALL cp_fm_create(work_matrices%ctransformed(ispin), fm_struct_evects(ispin)%struct)
538 ALLOCATE (work_matrices%S_eigenvalues(nao))
541 ALLOCATE (work_matrices%S_eigenvectors, work_matrices%slambda)
542 CALL cp_fm_create(work_matrices%S_eigenvectors, fm_struct)
551 CALL timestop(handle)
566 CHARACTER(LEN=*),
PARAMETER :: routinen =
'hfxsr_create_work_matrices'
568 INTEGER :: handle, ispin, nao, nao_aux, nspins
572 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s, matrix_s_aux_fit
573 TYPE(
dbcsr_type),
POINTER :: dbcsr_template_hfx
578 CALL timeset(routinen, handle)
581 NULLIFY (work_matrices%hfxsr_fm_ao_ao, work_matrices%hfxsr_rho_ao_symm, work_matrices%hfxsr_hmat_symm, &
582 work_matrices%hfxsr_rho_ao_asymm, work_matrices%hfxsr_hmat_asymm)
584 CALL get_qs_env(qs_env, dft_control=dft_control, matrix_s=matrix_s, &
585 blacs_env=blacs_env, dbcsr_dist=dbcsr_dist)
586 nspins = dft_control%nspins
588 CALL get_admm_env(admm_env, matrix_s_aux_fit=matrix_s_aux_fit)
589 dbcsr_template_hfx => matrix_s_aux_fit(1)%matrix
593 ALLOCATE (work_matrices%hfxsr_fm_ao_ao)
594 CALL cp_fm_create(work_matrices%hfxsr_fm_ao_ao, fm_struct)
601 CALL dbcsr_init_p(work_matrices%hfxsr_rho_ao_symm(ispin)%matrix)
603 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
605 CALL dbcsr_init_p(work_matrices%hfxsr_rho_ao_asymm(ispin)%matrix)
606 CALL dbcsr_create(work_matrices%hfxsr_rho_ao_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
607 template=work_matrices%hfxsr_rho_ao_symm(ispin)%matrix)
609 work_matrices%hfxsr_rho_ao_asymm(ispin)%matrix)
615 CALL dbcsr_init_p(work_matrices%hfxsr_hmat_symm(ispin)%matrix)
617 template=dbcsr_template_hfx, dbcsr_dist=dbcsr_dist, sab=sab_hfx)
619 CALL dbcsr_init_p(work_matrices%hfxsr_hmat_asymm(ispin)%matrix)
620 CALL dbcsr_create(work_matrices%hfxsr_hmat_asymm(ispin)%matrix, matrix_type=dbcsr_type_antisymmetric, &
621 template=work_matrices%hfxsr_hmat_symm(ispin)%matrix)
623 work_matrices%hfxsr_hmat_asymm(ispin)%matrix)
626 CALL timestop(handle)
644 INTEGER,
INTENT(in) :: nstates
648 CHARACTER(LEN=*),
PARAMETER :: routinen =
'stda_create_work_matrices'
650 INTEGER :: handle, igroup, ispin, istate, nao, &
652 INTEGER,
DIMENSION(maxspins) :: nmo_occ, nmo_virt
659 CALL timeset(routinen, handle)
661 NULLIFY (work_matrices%gamma_exchange, work_matrices%ctransformed)
663 nspins =
SIZE(gs_mos)
664 CALL get_qs_env(qs_env, blacs_env=blacs_env, matrix_s=matrix_s)
668 nmo_occ(ispin) =
SIZE(gs_mos(ispin)%evals_occ)
669 nmo_virt(ispin) =
SIZE(gs_mos(ispin)%evals_virt)
673 ALLOCATE (work_matrices%fm_pool_ao_mo_occ(nspins))
675 NULLIFY (work_matrices%fm_pool_ao_mo_occ(ispin)%pool)
676 CALL cp_fm_struct_create(fm_struct, nrow_global=nao, ncol_global=nmo_occ(ispin), context=blacs_env)
677 CALL fm_pool_create(work_matrices%fm_pool_ao_mo_occ(ispin)%pool, fm_struct)
681 ALLOCATE (work_matrices%S_C0_C0T(nspins))
684 CALL cp_fm_create(work_matrices%S_C0_C0T(ispin), fm_struct)
688 ALLOCATE (work_matrices%S_C0(nspins))
690 CALL fm_pool_create_fm(work_matrices%fm_pool_ao_mo_occ(ispin)%pool, work_matrices%S_C0(ispin))
693 ncol=nmo_occ(ispin), alpha=1.0_dp, beta=0.0_dp)
694 CALL parallel_gemm(
'N',
'T', nao, nao, nmo_occ(ispin), 1.0_dp, work_matrices%S_C0(ispin), &
695 gs_mos(ispin)%mos_occ, 0.0_dp, work_matrices%S_C0_C0T(ispin))
700 ncol_global=nmo_occ(ispin), context=sub_env%blacs_env)
703 IF (sub_env%is_split)
THEN
704 ALLOCATE (work_matrices%evects_sub(nspins, nstates), work_matrices%Aop_evects_sub(nspins, nstates))
706 CALL blacs_env%get(para_env=para_env)
707 igroup = sub_env%group_distribution(para_env%mepos)
708 ngroups = sub_env%ngroups
710 DO istate = ngroups - igroup, nstates, ngroups
712 CALL cp_fm_create(work_matrices%evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
713 CALL cp_fm_create(work_matrices%Aop_evects_sub(ispin, istate), fm_struct_evects(ispin)%struct)
719 ALLOCATE (work_matrices%ctransformed(nspins))
721 CALL cp_fm_create(work_matrices%ctransformed(ispin), fm_struct_evects(ispin)%struct)
723 NULLIFY (work_matrices%shalf)
725 CALL dbcsr_create(work_matrices%shalf, template=matrix_s(1)%matrix)
727 ALLOCATE (work_matrices%S_eigenvalues(nao))
730 ALLOCATE (work_matrices%S_eigenvectors, work_matrices%slambda)
731 CALL cp_fm_create(work_matrices%S_eigenvectors, fm_struct)
735 DO ispin = nspins, 1, -1
739 NULLIFY (work_matrices%rho_ao_orb_fm_sub)
740 NULLIFY (work_matrices%rho_ao_aux_fit_fm_sub, work_matrices%wfm_aux_orb_sub)
741 NULLIFY (work_matrices%rho_aux_fit_struct_sub)
742 NULLIFY (work_matrices%rho_orb_struct_sub)
743 NULLIFY (work_matrices%hfx_fm_ao_ao, work_matrices%hfx_rho_ao_symm, work_matrices%hfx_hmat_symm, &
744 work_matrices%hfx_rho_ao_asymm, work_matrices%hfx_hmat_asymm)
745 NULLIFY (work_matrices%hfxsr_fm_ao_ao, work_matrices%hfxsr_rho_ao_symm, work_matrices%hfxsr_hmat_symm, &
746 work_matrices%hfxsr_rho_ao_asymm, work_matrices%hfxsr_hmat_asymm)
747 NULLIFY (work_matrices%A_ia_rspace_sub, work_matrices%wpw_gspace_sub, &
748 work_matrices%wpw_rspace_sub)
749 NULLIFY (work_matrices%fxc_rspace_sub)
750 NULLIFY (work_matrices%A_ia_munu_sub)
752 NULLIFY (work_matrices%ewald_env)
753 NULLIFY (work_matrices%ewald_pw)
755 NULLIFY (work_matrices%hartree_local)
756 NULLIFY (work_matrices%local_rho_set)
757 NULLIFY (work_matrices%local_rho_set_admm)
758 NULLIFY (work_matrices%rho_xc_struct_sub)
760 CALL timestop(handle)
775 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_release_work_matrices'
777 INTEGER :: handle, ispin
780 CALL timeset(routinen, handle)
783 IF (
ASSOCIATED(work_matrices%hfx_hmat_symm))
THEN
784 DO ispin =
SIZE(work_matrices%hfx_hmat_symm), 1, -1
787 DEALLOCATE (work_matrices%hfx_hmat_symm)
790 IF (
ASSOCIATED(work_matrices%hfx_hmat_asymm))
THEN
791 DO ispin =
SIZE(work_matrices%hfx_hmat_asymm), 1, -1
794 DEALLOCATE (work_matrices%hfx_hmat_asymm)
797 IF (
ASSOCIATED(work_matrices%hfx_rho_ao_symm))
THEN
798 DO ispin =
SIZE(work_matrices%hfx_rho_ao_symm), 1, -1
801 DEALLOCATE (work_matrices%hfx_rho_ao_symm)
804 IF (
ASSOCIATED(work_matrices%hfx_rho_ao_asymm))
THEN
805 DO ispin =
SIZE(work_matrices%hfx_rho_ao_asymm), 1, -1
808 DEALLOCATE (work_matrices%hfx_rho_ao_asymm)
811 IF (
ASSOCIATED(work_matrices%hfx_fm_ao_ao))
THEN
813 DEALLOCATE (work_matrices%hfx_fm_ao_ao)
817 IF (
ASSOCIATED(work_matrices%hfxsr_hmat_symm))
THEN
818 DO ispin =
SIZE(work_matrices%hfxsr_hmat_symm), 1, -1
821 DEALLOCATE (work_matrices%hfxsr_hmat_symm)
824 IF (
ASSOCIATED(work_matrices%hfxsr_hmat_asymm))
THEN
825 DO ispin =
SIZE(work_matrices%hfxsr_hmat_asymm), 1, -1
828 DEALLOCATE (work_matrices%hfxsr_hmat_asymm)
831 IF (
ASSOCIATED(work_matrices%hfxsr_rho_ao_symm))
THEN
832 DO ispin =
SIZE(work_matrices%hfxsr_rho_ao_symm), 1, -1
835 DEALLOCATE (work_matrices%hfxsr_rho_ao_symm)
838 IF (
ASSOCIATED(work_matrices%hfxsr_rho_ao_asymm))
THEN
839 DO ispin =
SIZE(work_matrices%hfxsr_rho_ao_asymm), 1, -1
842 DEALLOCATE (work_matrices%hfxsr_rho_ao_asymm)
845 IF (
ASSOCIATED(work_matrices%hfxsr_fm_ao_ao))
THEN
847 DEALLOCATE (work_matrices%hfxsr_fm_ao_ao)
851 IF (
ASSOCIATED(sub_env%pw_env))
THEN
852 CALL pw_env_get(sub_env%pw_env, auxbas_pw_pool=auxbas_pw_pool)
853 DO ispin =
SIZE(work_matrices%wpw_rspace_sub), 1, -1
854 CALL auxbas_pw_pool%give_back_pw(work_matrices%wpw_rspace_sub(ispin))
855 CALL auxbas_pw_pool%give_back_pw(work_matrices%wpw_tau_rspace_sub(ispin))
856 CALL auxbas_pw_pool%give_back_pw(work_matrices%wpw_gspace_sub(ispin))
857 CALL auxbas_pw_pool%give_back_pw(work_matrices%A_ia_rspace_sub(ispin))
859 DEALLOCATE (work_matrices%A_ia_rspace_sub, work_matrices%wpw_gspace_sub, &
860 work_matrices%wpw_rspace_sub, work_matrices%wpw_tau_rspace_sub)
861 IF (
ASSOCIATED(work_matrices%fxc_rspace_sub))
THEN
862 DO ispin =
SIZE(work_matrices%fxc_rspace_sub), 1, -1
863 CALL auxbas_pw_pool%give_back_pw(work_matrices%fxc_rspace_sub(ispin))
865 DEALLOCATE (work_matrices%fxc_rspace_sub)
869 IF (
ASSOCIATED(work_matrices%rho_aux_fit_struct_sub))
THEN
871 DEALLOCATE (work_matrices%rho_aux_fit_struct_sub)
873 IF (
ASSOCIATED(work_matrices%rho_orb_struct_sub))
THEN
875 DEALLOCATE (work_matrices%rho_orb_struct_sub)
878 IF (
ASSOCIATED(work_matrices%A_ia_munu_sub))
THEN
879 DO ispin =
SIZE(work_matrices%A_ia_munu_sub), 1, -1
882 DEALLOCATE (work_matrices%A_ia_munu_sub)
885 IF (
ASSOCIATED(work_matrices%wfm_aux_orb_sub))
THEN
887 DEALLOCATE (work_matrices%wfm_aux_orb_sub)
888 NULLIFY (work_matrices%wfm_aux_orb_sub)
890 IF (
ASSOCIATED(work_matrices%rho_ao_aux_fit_fm_sub))
THEN
892 DEALLOCATE (work_matrices%rho_ao_aux_fit_fm_sub)
893 NULLIFY (work_matrices%rho_ao_aux_fit_fm_sub)
895 IF (
ASSOCIATED(work_matrices%rho_ao_orb_fm_sub))
THEN
897 DEALLOCATE (work_matrices%rho_ao_orb_fm_sub)
898 NULLIFY (work_matrices%rho_ao_orb_fm_sub)
907 DO ispin =
SIZE(work_matrices%fm_pool_ao_mo_occ), 1, -1
910 DEALLOCATE (work_matrices%fm_pool_ao_mo_occ)
913 IF (
ASSOCIATED(work_matrices%gamma_exchange))
THEN
915 NULLIFY (work_matrices%gamma_exchange)
917 IF (
ASSOCIATED(work_matrices%ctransformed))
THEN
919 NULLIFY (work_matrices%ctransformed)
923 IF (
ASSOCIATED(work_matrices%S_eigenvectors))
THEN
925 DEALLOCATE (work_matrices%S_eigenvectors)
927 IF (
ASSOCIATED(work_matrices%slambda))
THEN
929 DEALLOCATE (work_matrices%slambda)
931 IF (
ASSOCIATED(work_matrices%S_eigenvalues)) &
932 DEALLOCATE (work_matrices%S_eigenvalues)
934 IF (
ASSOCIATED(work_matrices%ewald_env))
THEN
936 DEALLOCATE (work_matrices%ewald_env)
938 IF (
ASSOCIATED(work_matrices%ewald_pw))
THEN
940 DEALLOCATE (work_matrices%ewald_pw)
943 IF (
ASSOCIATED(work_matrices%local_rho_set))
THEN
946 IF (
ASSOCIATED(work_matrices%local_rho_set_admm))
THEN
949 IF (
ASSOCIATED(work_matrices%hartree_local))
THEN
953 IF (
ASSOCIATED(work_matrices%rho_xc_struct_sub))
THEN
955 DEALLOCATE (work_matrices%rho_xc_struct_sub)
958 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, 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.