50 integrate_v_rspace_one_center
64#include "./base/base_uses.f90"
70 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'kg_correction'
90 SUBROUTINE kg_ekin_subset(qs_env, ks_matrix, ekin_mol, calc_force, do_kernel, pmat_ext)
93 REAL(kind=
dp),
INTENT(out) :: ekin_mol
94 LOGICAL,
INTENT(IN) :: calc_force, do_kernel
102 CALL get_qs_env(qs_env, kg_env=kg_env, dft_control=dft_control)
103 lrigpw = dft_control%qs_control%lrigpw
106 kg_uses_kinetic_energy_density(kg_env, dft_control%lsd))
THEN
107 cpabort(
"KG LRI/RI embedding with meta-kinetic energy functionals not implemented")
111 CALL kg_ekin_embed_lri(qs_env, kg_env, ks_matrix, ekin_mol, calc_force)
113 CALL kg_ekin_embed(qs_env, kg_env, ks_matrix, ekin_mol, calc_force, &
117 CALL kg_ekin_ri_embed(qs_env, kg_env, ks_matrix, ekin_mol, calc_force, &
120 CALL kg_ekin_atomic(qs_env, ks_matrix, ekin_mol)
124 cpabort(
"Unknown KG embedding method")
135 FUNCTION kg_uses_kinetic_energy_density(kg_env, lsd)
RESULT(res)
137 LOGICAL,
INTENT(IN) :: lsd
144 IF (.NOT.
ASSOCIATED(kg_env%xc_section_kg))
RETURN
150 END FUNCTION kg_uses_kinetic_energy_density
162 SUBROUTINE kg_ekin_embed(qs_env, kg_env, ks_matrix, ekin_mol, calc_force, do_kernel, pmat_ext)
166 REAL(kind=
dp),
INTENT(out) :: ekin_mol
167 LOGICAL,
INTENT(IN) :: calc_force, do_kernel
171 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_ekin_embed'
173 CHARACTER(LEN=10) :: basis_type
174 INTEGER :: handle, iounit, ispin, isub, nspins
175 LOGICAL :: gapw, gapw_xc, use_gapw_soft, use_virial
176 REAL(kind=
dp) :: alpha, ekin_imol
177 REAL(kind=
dp),
DIMENSION(3, 3) :: xcvirial
179 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: density_matrix
183 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho1_r, rho_r, tau1_r, vxc_rho, vxc_tau
185 TYPE(
qs_rho_type),
POINTER :: old_rho, rho1, rho1_use, rho1_xc, &
186 rho_struct, rho_use, rho_xc
187 TYPE(
rho_atom_type),
DIMENSION(:),
POINTER :: rho0_atom_set, rho1_atom_set
191 CALL timeset(routinen, handle)
196 NULLIFY (ks_env, dft_control, old_rho, pw_env, rho1_use, rho1_xc, rho_struct, &
197 rho_use, rho_xc, virial, vxc_rho, vxc_tau)
198 NULLIFY (rho0_atom_set, rho1_atom_set)
203 dft_control=dft_control, &
206 nspins = dft_control%nspins
207 gapw = dft_control%qs_control%gapw
208 gapw_xc = dft_control%qs_control%gapw_xc
209 use_gapw_soft = gapw .OR. gapw_xc
210 IF (use_gapw_soft)
THEN
211 basis_type =
"ORB_SOFT"
215 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
216 use_virial = use_virial .AND. calc_force
223 IF (do_kernel .AND. .NOT. calc_force .AND. nspins == 1) alpha = 2.0_dp
225 NULLIFY (auxbas_pw_pool)
226 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
229 CALL qs_rho_get(old_rho, rho_ao=density_matrix)
231 ALLOCATE (rho_struct)
234 CALL qs_rho_set(rho_struct, rho_ao=density_matrix)
235 CALL qs_rho_rebuild(rho_struct, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
239 CALL qs_rho_rebuild(rho_xc, qs_env, rebuild_ao=.true., rebuild_grids=.true.)
247 rho_use => rho_struct
256 IF (
PRESENT(pmat_ext))
THEN
260 CALL qs_rho_rebuild(rho1, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
264 CALL qs_rho_rebuild(rho1_xc, qs_env, rebuild_ao=.true., rebuild_grids=.true.)
275 xc_section => kg_env%xc_section_kg
282 IF (use_virial) virial%pv_xc = 0.0_dp
283 CALL qs_fxc_create(qs_env, rho_use, rho1_use, rho0_atom_set, &
284 xc_section, .false., &
285 vxc_rho, vxc_tau, rho1_atom_set, &
286 compute_virial=use_virial, virial_xc=virial%pv_xc)
289 rho_struct=rho_use, &
290 xc_section=xc_section, &
297 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
299 CALL qs_rho_get(rho1_use, rho_r=rho1_r, tau_r=tau1_r)
305 ekin_imol = ekin_imol +
pw_integral_ab(rho1_r(ispin), vxc_rho(ispin))
306 IF (
ASSOCIATED(vxc_tau))
THEN
307 ekin_imol = ekin_imol +
pw_integral_ab(tau1_r(ispin), vxc_tau(ispin))
314 CALL pw_scale(vxc_rho(ispin), alpha*vxc_rho(ispin)%pw_grid%dvol)
318 CALL integrate_v_rspace(v_rspace=vxc_rho(ispin), &
319 pmat=density_matrix(ispin), hmat=ks_matrix(ispin), &
320 qs_env=qs_env, calculate_forces=calc_force, gapw=use_gapw_soft)
321 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
322 IF (
ASSOCIATED(vxc_tau))
THEN
323 CALL pw_scale(vxc_tau(ispin), alpha*vxc_tau(ispin)%pw_grid%dvol)
324 CALL integrate_v_rspace(v_rspace=vxc_tau(ispin), &
325 pmat=density_matrix(ispin), hmat=ks_matrix(ispin), &
326 qs_env=qs_env, compute_tau=.true., &
327 calculate_forces=calc_force, gapw=use_gapw_soft)
328 CALL auxbas_pw_pool%give_back_pw(vxc_tau(ispin))
332 IF (
ASSOCIATED(vxc_tau))
DEALLOCATE (vxc_tau)
333 ekin_mol = -ekin_imol
334 xcvirial(1:3, 1:3) = 0.0_dp
336 xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) - virial%pv_xc(1:3, 1:3)
340 DO isub = 1, kg_env%nsubsets
345 task_list_external=kg_env%subset(isub)%task_list, &
346 task_list_external_soft=kg_env%subset(isub)%task_list)
350 task_list_external=kg_env%subset(isub)%task_list)
351 rho_use => rho_struct
354 IF (
PRESENT(pmat_ext))
THEN
357 task_list_external=kg_env%subset(isub)%task_list, &
358 task_list_external_soft=kg_env%subset(isub)%task_list)
362 task_list_external=kg_env%subset(isub)%task_list)
368 NULLIFY (vxc_rho, vxc_tau)
376 IF (use_virial) virial%pv_xc = 0.0_dp
377 CALL qs_fxc_create(qs_env, rho_use, rho1_use, rho0_atom_set, &
378 xc_section, .false., &
379 vxc_rho, vxc_tau, rho1_atom_set, &
380 compute_virial=use_virial, virial_xc=virial%pv_xc)
383 rho_struct=rho_use, &
384 xc_section=xc_section, &
391 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
393 CALL qs_rho_get(rho1_use, rho_r=rho1_r, tau_r=tau1_r)
399 ekin_imol = ekin_imol +
pw_integral_ab(rho1_r(ispin), vxc_rho(ispin))
400 IF (
ASSOCIATED(vxc_tau))
THEN
401 ekin_imol = ekin_imol +
pw_integral_ab(tau1_r(ispin), vxc_tau(ispin))
408 CALL pw_scale(vxc_rho(ispin), -alpha*vxc_rho(ispin)%pw_grid%dvol)
410 CALL integrate_v_rspace(v_rspace=vxc_rho(ispin), &
411 pmat=density_matrix(ispin), &
412 hmat=ks_matrix(ispin), &
414 calculate_forces=calc_force, &
415 basis_type=basis_type, &
416 task_list_external=kg_env%subset(isub)%task_list)
418 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
419 IF (
ASSOCIATED(vxc_tau))
THEN
420 CALL pw_scale(vxc_tau(ispin), -alpha*vxc_tau(ispin)%pw_grid%dvol)
421 CALL integrate_v_rspace(v_rspace=vxc_tau(ispin), &
422 pmat=density_matrix(ispin), &
423 hmat=ks_matrix(ispin), &
425 compute_tau=.true., &
426 calculate_forces=calc_force, &
427 basis_type=basis_type, &
428 task_list_external=kg_env%subset(isub)%task_list)
430 CALL auxbas_pw_pool%give_back_pw(vxc_tau(ispin))
434 IF (
ASSOCIATED(vxc_tau))
DEALLOCATE (vxc_tau)
436 ekin_mol = ekin_mol + ekin_imol
439 xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) + virial%pv_xc(1:3, 1:3)
445 virial%pv_xc(1:3, 1:3) = xcvirial(1:3, 1:3)
451 DEALLOCATE (rho_struct)
452 IF (
ASSOCIATED(rho_xc))
THEN
456 IF (
PRESENT(pmat_ext))
THEN
460 IF (
ASSOCIATED(rho1_xc))
THEN
466 CALL timestop(handle)
468 END SUBROUTINE kg_ekin_embed
478 SUBROUTINE kg_ekin_embed_lri(qs_env, kg_env, ks_matrix, ekin_mol, calc_force)
482 REAL(kind=
dp),
INTENT(out) :: ekin_mol
483 LOGICAL :: calc_force
485 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_ekin_embed_lri'
487 INTEGER :: color, handle, iatom, ikind, imol, &
488 ispin, isub, natom, nkind, nspins
489 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atomlist
490 LOGICAL :: use_virial
491 REAL(kind=
dp) :: ekin_imol
492 REAL(kind=
dp),
DIMENSION(3, 3) :: xcvirial
494 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: density_matrix, ksmat
508 CALL timeset(routinen, handle)
510 NULLIFY (vxc_rho, vxc_tau, old_rho, rho_struct, ks_env)
512 CALL get_qs_env(qs_env, dft_control=dft_control)
519 dft_control=dft_control, &
524 nspins = dft_control%nspins
525 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
526 use_virial = use_virial .AND. calc_force
528 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
531 CALL qs_rho_get(old_rho, rho_ao=density_matrix)
533 ALLOCATE (rho_struct)
536 CALL qs_rho_set(rho_struct, rho_ao=density_matrix)
537 CALL qs_rho_rebuild(rho_struct, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
539 CALL get_qs_env(qs_env, lri_env=lri_env, lri_density=lri_density, nkind=nkind)
540 IF (lri_env%exact_1c_terms)
THEN
541 cpabort(
" KG with LRI and exact one-center terms not implemented")
543 ALLOCATE (atomlist(natom))
545 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
547 lri_v_int(ikind)%v_int = 0.0_dp
549 lri_v_int(ikind)%v_dadr = 0.0_dp
550 lri_v_int(ikind)%v_dfdr = 0.0_dp
559 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho_struct, xc_section=kg_env%xc_section_kg, &
560 vxc_rho=vxc_rho, vxc_tau=vxc_tau, exc=ekin_imol)
561 IF (
ASSOCIATED(vxc_tau))
THEN
562 cpabort(
" KG with meta-kinetic energy functionals not implemented")
565 CALL pw_scale(vxc_rho(ispin), vxc_rho(ispin)%pw_grid%dvol)
566 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
567 CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, lri_v_int, calc_force,
"LRI_AUX")
568 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
571 ekin_mol = -ekin_imol
572 xcvirial(1:3, 1:3) = 0.0_dp
573 IF (use_virial) xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) - virial%pv_xc(1:3, 1:3)
576 DO isub = 1, kg_env%nsubsets
579 imol = kg_env%atom_to_molecule(iatom)
580 color = kg_env%subset_of_mol(imol)
581 IF (color == isub) atomlist(iatom) = 1
587 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho_struct, xc_section=kg_env%xc_section_kg, &
588 vxc_rho=vxc_rho, vxc_tau=vxc_tau, exc=ekin_imol)
589 ekin_mol = ekin_mol + ekin_imol
592 CALL pw_scale(vxc_rho(ispin), -vxc_rho(ispin)%pw_grid%dvol)
593 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
594 CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, &
595 lri_v_int, calc_force, &
596 "LRI_AUX", atomlist=atomlist)
598 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
603 xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) + virial%pv_xc(1:3, 1:3)
609 virial%pv_xc(1:3, 1:3) = xcvirial(1:3, 1:3)
612 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set)
615 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
617 CALL para_env%sum(lri_v_int(ikind)%v_int)
619 ksmat(1)%matrix => ks_matrix(ispin)%matrix
623 pmat(1:nspins, 1:1) => density_matrix(1:nspins)
626 DEALLOCATE (atomlist, ksmat)
631 DEALLOCATE (rho_struct)
633 CALL timestop(handle)
635 END SUBROUTINE kg_ekin_embed_lri
647 SUBROUTINE kg_ekin_ri_embed(qs_env, kg_env, ks_matrix, ekin_mol, calc_force, &
652 REAL(kind=
dp),
INTENT(out) :: ekin_mol
653 LOGICAL :: calc_force, do_kernel
657 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_ekin_ri_embed'
659 INTEGER :: color, handle, iatom, ikind, imol, &
660 iounit, ispin, isub, natom, nkind, &
662 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atomlist
663 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index
664 LOGICAL :: use_virial
665 REAL(kind=
dp) :: alpha, ekin_imol
666 REAL(kind=
dp),
DIMENSION(3, 3) :: xcvirial
669 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: density_matrix, ksmat
680 TYPE(
qs_rho_type),
POINTER :: rho, rho1, rho_struct
681 TYPE(
rho_atom_type),
DIMENSION(:),
POINTER :: rho0_atom_set, rho1_atom_set
685 CALL timeset(routinen, handle)
690 NULLIFY (rho0_atom_set, rho1_atom_set)
697 dft_control=dft_control, &
702 nspins = dft_control%nspins
703 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
704 use_virial = use_virial .AND. calc_force
711 IF (do_kernel .AND. .NOT. calc_force .AND. nspins == 1) alpha = 2.0_dp
713 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
719 ALLOCATE (rho_struct)
722 CALL qs_rho_set(rho_struct, rho_ao=density_matrix)
723 CALL qs_rho_rebuild(rho_struct, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
725 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set)
726 ALLOCATE (cell_to_index(1, 1, 1))
727 cell_to_index(1, 1, 1) = 1
728 lri_env => kg_env%lri_env
729 lri_density => kg_env%lri_density
732 ALLOCATE (pmat(nspins, 1))
734 pmat(ispin, 1)%matrix => density_matrix(ispin)%matrix
737 rho_struct, atomic_kind_set, para_env, response_density=.false.)
738 kg_env%lri_density => lri_density
742 IF (
PRESENT(pmat_ext))
THEN
750 CALL qs_rho_rebuild(rho1, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
752 lri_env1 => kg_env%lri_env1
753 lri_rho1 => kg_env%lri_rho1
756 ALLOCATE (pmat(nspins, 1))
758 pmat(ispin, 1)%matrix => pmat_ext(ispin)%matrix
761 rho1, atomic_kind_set, para_env, response_density=.false.)
762 kg_env%lri_rho1 => lri_rho1
769 xc_section => kg_env%xc_section_kg
773 NULLIFY (vxc_rho, vxc_tau)
779 CALL qs_fxc_create(qs_env, rho_struct, rho1, rho0_atom_set, &
780 xc_section, .false., &
781 vxc_rho, vxc_tau, rho1_atom_set)
785 rho_struct=rho_struct, &
786 xc_section=xc_section, &
793 IF (
ASSOCIATED(vxc_tau))
THEN
794 cpabort(
" KG with meta-kinetic energy functionals not implemented")
798 CALL pw_scale(vxc_rho(ispin), alpha*vxc_rho(ispin)%pw_grid%dvol)
800 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
802 lri_v_int => lri_rho1%lri_coefs(ispin)%lri_kinds
805 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
807 CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, lri_v_int, calc_force,
"LRI_AUX")
808 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
812 ekin_mol = -ekin_imol
813 xcvirial(1:3, 1:3) = 0.0_dp
814 IF (use_virial) xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) - virial%pv_xc(1:3, 1:3)
817 ALLOCATE (atomlist(natom))
818 DO isub = 1, kg_env%nsubsets
821 imol = kg_env%atom_to_molecule(iatom)
822 color = kg_env%subset_of_mol(imol)
823 IF (color == isub) atomlist(iatom) = 1
829 IF (
PRESENT(pmat_ext))
THEN
836 NULLIFY (vxc_rho, vxc_tau)
841 CALL qs_fxc_create(qs_env, rho_struct, rho1, rho0_atom_set, &
842 xc_section, .false., &
843 vxc_rho, vxc_tau, rho1_atom_set)
848 rho_struct=rho_struct, &
849 xc_section=xc_section, &
854 ekin_mol = ekin_mol + ekin_imol
857 CALL pw_scale(vxc_rho(ispin), -alpha*vxc_rho(ispin)%pw_grid%dvol)
859 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
861 lri_v_int => lri_rho1%lri_coefs(ispin)%lri_kinds
864 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
867 CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, &
868 lri_v_int, calc_force, &
869 "LRI_AUX", atomlist=atomlist)
871 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
876 xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) + virial%pv_xc(1:3, 1:3)
882 virial%pv_xc(1:3, 1:3) = xcvirial(1:3, 1:3)
887 ksmat(1)%matrix => ks_matrix(ispin)%matrix
888 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
890 lri_v_int => lri_rho1%lri_coefs(ispin)%lri_kinds
892 CALL para_env%sum(lri_v_int(ikind)%v_int)
897 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
899 CALL para_env%sum(lri_v_int(ikind)%v_int)
908 ALLOCATE (pmat(nspins, 1))
910 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
913 pmat(ispin, 1)%matrix => pmat_ext(ispin)%matrix
919 pmat(ispin, 1)%matrix => density_matrix(ispin)%matrix
927 DEALLOCATE (atomlist, ksmat)
932 DEALLOCATE (rho_struct)
933 IF (
PRESENT(pmat_ext))
THEN
938 DEALLOCATE (cell_to_index)
940 CALL timestop(handle)
942 END SUBROUTINE kg_ekin_ri_embed
950 SUBROUTINE kg_ekin_atomic(qs_env, ks_matrix, ekin_mol)
953 REAL(kind=
dp),
INTENT(out) :: ekin_mol
955 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_ekin_atomic'
957 INTEGER :: handle, ispin, nspins
958 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: density_matrix, tnadd_matrix
962 NULLIFY (rho, kg_env, density_matrix, tnadd_matrix)
964 CALL timeset(routinen, handle)
965 CALL get_qs_env(qs_env, kg_env=kg_env, rho=rho)
967 nspins =
SIZE(ks_matrix)
971 tnadd_matrix => kg_env%tnadd_mat
975 CALL dbcsr_dot(tnadd_matrix(1)%matrix, density_matrix(ispin)%matrix, ekin_mol)
976 CALL dbcsr_add(ks_matrix(ispin)%matrix, tnadd_matrix(1)%matrix, &
977 alpha_scalar=1.0_dp, beta_scalar=1.0_dp)
982 CALL timestop(handle)
984 END SUBROUTINE kg_ekin_atomic
Define the atomic kind types and their sub types.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
...
subroutine, public dbcsr_dot(matrix_a, matrix_b, trace)
Computes the dot product of two matrices, also known as the trace of their matrix product.
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 Kim-Gordon-like partitioning into molecular subunits.
subroutine, public kg_ekin_subset(qs_env, ks_matrix, ekin_mol, calc_force, do_kernel, pmat_ext)
Calculates the subsystem Hohenberg-Kohn kinetic energy and the forces.
Types needed for a Kim-Gordon-like partitioning into molecular subunits.
Defines the basic variable types.
integer, parameter, public dp
Calculates integral matrices for LRIGPW method lri : local resolution of the identity.
subroutine, public lri_kg_rho_update(rho_struct, qs_env, lri_env, lri_density, atomlist)
...
subroutine, public calculate_lri_densities(lri_env, lri_density, qs_env, pmatrix, cell_to_index, lri_rho_struct, atomic_kind_set, para_env, response_density)
performs the fitting of the density and distributes the fitted density on the grid
contains the types and subroutines for dealing with the lri_env lri : local resolution of the identit...
Calculates forces for LRIGPW method lri : local resolution of the identity.
subroutine, public calculate_lri_forces(lri_env, lri_density, qs_env, pmatrix, atomic_kind_set)
calculates the lri forces
routines that build the Kohn-Sham matrix for the LRIGPW and xc parts
subroutine, public calculate_lri_ks_matrix(lri_env, lri_v_int, h_matrix, atomic_kind_set, cell_to_index)
update of LRIGPW KS matrix
Interface to the message passing library MPI.
container for various plainwaves related things
subroutine, public pw_env_get(pw_env, pw_pools, cube_info, gridlevel_info, auxbas_pw_pool, auxbas_grid, auxbas_rs_desc, auxbas_rs_grid, rs_descs, rs_grids, xc_pw_pool, vdw_pw_pool, poisson_env, interp_section)
returns the various attributes of the pw env
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
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.
Setup Routine for Fxc Potentials.
subroutine, public qs_fxc_create(qs_env, rho0_struct, rho1_struct, rho0_atom_set, xc_section, do_onecenter, fxc_rho, fxc_tau, rho1_atom_set, do_scale, is_triplet, spinflip, no_weights, uf_grid_results, pw_env_ext, kind_set_external, para_env_external, compute_virial, virial_xc)
...
Integrate single or product functions over a potential on a RS grid.
methods of the rho structure (defined in qs_rho_types)
subroutine, public qs_rho_update_rho(rho_struct, qs_env, rho_xc_external, local_rho_set, task_list_external, task_list_external_soft, pw_env_external, para_env_external)
updates rho_r and rho_g to the rhorho_ao. if use_kinetic_energy_density also computes tau_r and tau_g...
subroutine, public qs_rho_rebuild(rho, qs_env, rebuild_ao, rebuild_grids, admm, pw_env_external)
rebuilds rho (if necessary allocating and initializing it)
superstucture that hold various representations of the density and keeps track of which ones are vali...
subroutine, public qs_rho_set(rho_struct, rho_ao, rho_ao_im, rho_ao_kp, rho_ao_im_kp, rho_r, drho_r, rho_g, drho_g, tau_r, tau_g, rho_r_valid, drho_r_valid, rho_g_valid, drho_g_valid, tau_r_valid, tau_g_valid, tot_rho_r, tot_rho_g, rho_r_sccs, soft_valid, complex_rho_ao)
...
subroutine, public qs_rho_get(rho_struct, rho_ao, rho_ao_im, rho_ao_kp, rho_ao_im_kp, rho_r, drho_r, rho_g, drho_g, tau_r, tau_g, rho_r_valid, drho_r_valid, rho_g_valid, drho_g_valid, tau_r_valid, tau_g_valid, tot_rho_r, tot_rho_g, rho_r_sccs, soft_valid, complex_rho_ao)
returns info about the density described by this object. If some representation is not available an e...
subroutine, public qs_rho_unset_rho_ao(rho_struct)
Unsets the rho_ao / rho_ao_kp field without calling kpoint_transitional_release().
subroutine, public qs_rho_create(rho)
Allocates a new instance of rho.
subroutine, public qs_rho_release(rho_struct)
releases a rho_struct by decreasing the reference count by one and deallocating if it reaches 0 (to b...
subroutine, public qs_vxc_create(ks_env, rho_struct, xc_section, vxc_rho, vxc_tau, exc, just_energy, edisp, dispersion_env, adiabatic_rescale_factor, pw_env_external, native_skala_atom_force, qs_env_external, native_gapw_composite_override, native_skala_defer_to_atom_composite)
calculates and allocates the xc potential, already reducing it to the dependence on rho and the one o...
Exchange and Correlation functional calculations.
logical function, public xc_uses_kinetic_energy_density(xc_fun_section, lsd)
...
Provides all information about an atomic kind.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Contains all the info needed for KG runs...
stores all the informations relevant to an mpi environment
contained for different pw related things
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
keeps the density in various representations, keeping track of which ones are valid.