20 USE dbcsr_api,
ONLY: dbcsr_add,&
34 lri_environment_type,&
49 integrate_v_rspace_one_center
61 #include "./base/base_uses.f90"
67 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'kg_correction'
87 SUBROUTINE kg_ekin_subset(qs_env, ks_matrix, ekin_mol, calc_force, do_kernel, pmat_ext)
88 TYPE(qs_environment_type),
POINTER :: qs_env
89 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: ks_matrix
90 REAL(kind=
dp),
INTENT(out) :: ekin_mol
91 LOGICAL,
INTENT(IN) :: calc_force, do_kernel
92 TYPE(dbcsr_p_type),
DIMENSION(:),
OPTIONAL, &
96 TYPE(dft_control_type),
POINTER :: dft_control
97 TYPE(kg_environment_type),
POINTER :: kg_env
99 CALL get_qs_env(qs_env, kg_env=kg_env, dft_control=dft_control)
100 lrigpw = dft_control%qs_control%lrigpw
104 CALL kg_ekin_embed_lri(qs_env, kg_env, ks_matrix, ekin_mol, calc_force)
106 CALL kg_ekin_embed(qs_env, kg_env, ks_matrix, ekin_mol, calc_force, &
110 CALL kg_ekin_ri_embed(qs_env, kg_env, ks_matrix, ekin_mol, calc_force, &
113 CALL kg_ekin_atomic(qs_env, ks_matrix, ekin_mol)
117 cpabort(
"Unknown KG embedding method")
132 SUBROUTINE kg_ekin_embed(qs_env, kg_env, ks_matrix, ekin_mol, calc_force, do_kernel, pmat_ext)
133 TYPE(qs_environment_type),
POINTER :: qs_env
134 TYPE(kg_environment_type),
POINTER :: kg_env
135 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: ks_matrix
136 REAL(kind=
dp),
INTENT(out) :: ekin_mol
137 LOGICAL,
INTENT(IN) :: calc_force, do_kernel
138 TYPE(dbcsr_p_type),
DIMENSION(:),
OPTIONAL, &
141 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_ekin_embed'
143 INTEGER :: handle, iounit, ispin, isub, nspins
144 LOGICAL :: use_virial
145 REAL(kind=
dp) :: alpha, ekin_imol
146 REAL(kind=
dp),
DIMENSION(3, 3) :: xcvirial
147 TYPE(cp_logger_type),
POINTER :: logger
148 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: density_matrix
149 TYPE(dft_control_type),
POINTER :: dft_control
150 TYPE(pw_c1d_gs_type),
DIMENSION(:),
POINTER :: rho1_g
151 TYPE(pw_env_type),
POINTER :: pw_env
152 TYPE(pw_pool_type),
POINTER :: auxbas_pw_pool
153 TYPE(pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho1_r, rho_r, tau1_r, vxc_rho, vxc_tau
154 TYPE(qs_ks_env_type),
POINTER :: ks_env
155 TYPE(qs_rho_type),
POINTER :: old_rho, rho1, rho_struct
156 TYPE(section_vals_type),
POINTER :: xc_section
157 TYPE(virial_type),
POINTER :: virial
159 CALL timeset(routinen, handle)
164 NULLIFY (ks_env, dft_control, old_rho, pw_env, rho_struct, virial, vxc_rho, vxc_tau)
169 dft_control=dft_control, &
172 nspins = dft_control%nspins
173 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
174 use_virial = use_virial .AND. calc_force
181 IF (do_kernel .AND. .NOT. calc_force .AND. nspins == 1) alpha = 2.0_dp
183 NULLIFY (auxbas_pw_pool)
184 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
187 CALL qs_rho_get(old_rho, rho_ao=density_matrix)
189 ALLOCATE (rho_struct)
192 CALL qs_rho_set(rho_struct, rho_ao=density_matrix)
193 CALL qs_rho_rebuild(rho_struct, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
203 IF (
PRESENT(pmat_ext))
THEN
207 CALL qs_rho_rebuild(rho1, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
213 xc_section => kg_env%xc_section_kg
220 IF (use_virial) virial%pv_xc = 0.0_dp
221 CALL qs_rho_get(rho1, rho_r=rho1_r, rho_g=rho1_g, tau_r=tau1_r)
229 xc_section=xc_section, &
230 compute_virial=use_virial, &
231 virial_xc=virial%pv_xc)
234 rho_struct=rho_struct, &
235 xc_section=xc_section, &
241 IF (
ASSOCIATED(vxc_tau))
THEN
242 cpabort(
" KG with meta-kinetic energy functionals not implemented")
246 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
247 CALL qs_rho_get(rho1, rho_ao=density_matrix, rho_r=rho1_r)
253 ekin_imol = ekin_imol + pw_integral_ab(rho1_r(ispin), vxc_rho(ispin))
259 CALL pw_scale(vxc_rho(ispin), alpha*vxc_rho(ispin)%pw_grid%dvol)
263 CALL integrate_v_rspace(v_rspace=vxc_rho(ispin), &
264 pmat=density_matrix(ispin), hmat=ks_matrix(ispin), &
265 qs_env=qs_env, calculate_forces=calc_force)
266 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
269 ekin_mol = -ekin_imol
270 xcvirial(1:3, 1:3) = 0.0_dp
272 xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) - virial%pv_xc(1:3, 1:3)
276 DO isub = 1, kg_env%nsubsets
280 task_list_external=kg_env%subset(isub)%task_list)
282 IF (
PRESENT(pmat_ext))
THEN
284 task_list_external=kg_env%subset(isub)%task_list)
296 IF (use_virial) virial%pv_xc = 0.0_dp
297 CALL qs_rho_get(rho1, rho_r=rho1_r, rho_g=rho1_g, tau_r=tau1_r)
305 xc_section=xc_section, &
306 compute_virial=use_virial, &
307 virial_xc=virial%pv_xc)
310 rho_struct=rho_struct, &
311 xc_section=xc_section, &
318 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
325 ekin_imol = ekin_imol + pw_integral_ab(rho1_r(ispin), vxc_rho(ispin))
331 CALL pw_scale(vxc_rho(ispin), -alpha*vxc_rho(ispin)%pw_grid%dvol)
333 CALL integrate_v_rspace(v_rspace=vxc_rho(ispin), &
334 pmat=density_matrix(ispin), &
335 hmat=ks_matrix(ispin), &
337 calculate_forces=calc_force, &
338 task_list_external=kg_env%subset(isub)%task_list)
340 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
341 IF (
ASSOCIATED(vxc_tau))
THEN
342 CALL pw_scale(vxc_tau(ispin), -alpha*vxc_tau(ispin)%pw_grid%dvol)
343 CALL integrate_v_rspace(v_rspace=vxc_tau(ispin), &
344 pmat=density_matrix(ispin), &
345 hmat=ks_matrix(ispin), &
347 compute_tau=.true., &
348 calculate_forces=calc_force, &
349 task_list_external=kg_env%subset(isub)%task_list)
351 CALL auxbas_pw_pool%give_back_pw(vxc_tau(ispin))
356 ekin_mol = ekin_mol + ekin_imol
359 xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) + virial%pv_xc(1:3, 1:3)
365 virial%pv_xc(1:3, 1:3) = xcvirial(1:3, 1:3)
371 DEALLOCATE (rho_struct)
372 IF (
PRESENT(pmat_ext))
THEN
378 CALL timestop(handle)
380 END SUBROUTINE kg_ekin_embed
390 SUBROUTINE kg_ekin_embed_lri(qs_env, kg_env, ks_matrix, ekin_mol, calc_force)
391 TYPE(qs_environment_type),
POINTER :: qs_env
392 TYPE(kg_environment_type),
POINTER :: kg_env
393 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: ks_matrix
394 REAL(kind=
dp),
INTENT(out) :: ekin_mol
395 LOGICAL :: calc_force
397 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_ekin_embed_lri'
399 INTEGER :: color, handle, iatom, ikind, imol, &
400 ispin, isub, natom, nkind, nspins
401 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atomlist
402 LOGICAL :: use_virial
403 REAL(kind=
dp) :: ekin_imol
404 REAL(kind=
dp),
DIMENSION(3, 3) :: xcvirial
405 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
406 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: density_matrix, ksmat
407 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: pmat
408 TYPE(dft_control_type),
POINTER :: dft_control
409 TYPE(lri_density_type),
POINTER :: lri_density
410 TYPE(lri_environment_type),
POINTER :: lri_env
411 TYPE(lri_kind_type),
DIMENSION(:),
POINTER :: lri_v_int
412 TYPE(mp_para_env_type),
POINTER :: para_env
413 TYPE(pw_env_type),
POINTER :: pw_env
414 TYPE(pw_pool_type),
POINTER :: auxbas_pw_pool
415 TYPE(pw_r3d_rs_type),
DIMENSION(:),
POINTER :: vxc_rho, vxc_tau
416 TYPE(qs_ks_env_type),
POINTER :: ks_env
417 TYPE(qs_rho_type),
POINTER :: old_rho, rho_struct
418 TYPE(virial_type),
POINTER :: virial
420 CALL timeset(routinen, handle)
422 NULLIFY (vxc_rho, vxc_tau, old_rho, rho_struct, ks_env)
424 CALL get_qs_env(qs_env, dft_control=dft_control)
431 dft_control=dft_control, &
436 nspins = dft_control%nspins
437 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
438 use_virial = use_virial .AND. calc_force
440 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
443 CALL qs_rho_get(old_rho, rho_ao=density_matrix)
445 ALLOCATE (rho_struct)
448 CALL qs_rho_set(rho_struct, rho_ao=density_matrix)
449 CALL qs_rho_rebuild(rho_struct, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
451 CALL get_qs_env(qs_env, lri_env=lri_env, lri_density=lri_density, nkind=nkind)
452 IF (lri_env%exact_1c_terms)
THEN
453 cpabort(
" KG with LRI and exact one-center terms not implemented")
455 ALLOCATE (atomlist(natom))
457 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
459 lri_v_int(ikind)%v_int = 0.0_dp
461 lri_v_int(ikind)%v_dadr = 0.0_dp
462 lri_v_int(ikind)%v_dfdr = 0.0_dp
471 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho_struct, xc_section=kg_env%xc_section_kg, &
472 vxc_rho=vxc_rho, vxc_tau=vxc_tau, exc=ekin_imol)
473 IF (
ASSOCIATED(vxc_tau))
THEN
474 cpabort(
" KG with meta-kinetic energy functionals not implemented")
477 CALL pw_scale(vxc_rho(ispin), vxc_rho(ispin)%pw_grid%dvol)
478 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
479 CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, lri_v_int, calc_force,
"LRI_AUX")
480 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
483 ekin_mol = -ekin_imol
484 xcvirial(1:3, 1:3) = 0.0_dp
485 IF (use_virial) xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) - virial%pv_xc(1:3, 1:3)
488 DO isub = 1, kg_env%nsubsets
491 imol = kg_env%atom_to_molecule(iatom)
492 color = kg_env%subset_of_mol(imol)
493 IF (color == isub) atomlist(iatom) = 1
499 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho_struct, xc_section=kg_env%xc_section_kg, &
500 vxc_rho=vxc_rho, vxc_tau=vxc_tau, exc=ekin_imol)
501 ekin_mol = ekin_mol + ekin_imol
504 CALL pw_scale(vxc_rho(ispin), -vxc_rho(ispin)%pw_grid%dvol)
505 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
506 CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, &
507 lri_v_int, calc_force, &
508 "LRI_AUX", atomlist=atomlist)
510 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
515 xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) + virial%pv_xc(1:3, 1:3)
521 virial%pv_xc(1:3, 1:3) = xcvirial(1:3, 1:3)
524 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set)
527 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
529 CALL para_env%sum(lri_v_int(ikind)%v_int)
531 ksmat(1)%matrix => ks_matrix(ispin)%matrix
535 pmat(1:nspins, 1:1) => density_matrix(1:nspins)
538 DEALLOCATE (atomlist, ksmat)
543 DEALLOCATE (rho_struct)
545 CALL timestop(handle)
547 END SUBROUTINE kg_ekin_embed_lri
559 SUBROUTINE kg_ekin_ri_embed(qs_env, kg_env, ks_matrix, ekin_mol, calc_force, &
561 TYPE(qs_environment_type),
POINTER :: qs_env
562 TYPE(kg_environment_type),
POINTER :: kg_env
563 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: ks_matrix
564 REAL(kind=
dp),
INTENT(out) :: ekin_mol
565 LOGICAL :: calc_force, do_kernel
566 TYPE(dbcsr_p_type),
DIMENSION(:),
OPTIONAL, &
569 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_ekin_ri_embed'
571 INTEGER :: color, handle, iatom, ikind, imol, &
572 iounit, ispin, isub, natom, nkind, &
574 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atomlist
575 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index
576 LOGICAL :: use_virial
577 REAL(kind=
dp) :: alpha, ekin_imol
578 REAL(kind=
dp),
DIMENSION(3, 3) :: xcvirial
579 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
580 TYPE(cp_logger_type),
POINTER :: logger
581 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: density_matrix, ksmat
582 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: pmat
583 TYPE(dft_control_type),
POINTER :: dft_control
584 TYPE(lri_density_type),
POINTER :: lri_density, lri_rho1
585 TYPE(lri_environment_type),
POINTER :: lri_env, lri_env1
586 TYPE(lri_kind_type),
DIMENSION(:),
POINTER :: lri_v_int
587 TYPE(mp_para_env_type),
POINTER :: para_env
588 TYPE(pw_c1d_gs_type),
DIMENSION(:),
POINTER :: rho1_g
589 TYPE(pw_env_type),
POINTER :: pw_env
590 TYPE(pw_pool_type),
POINTER :: auxbas_pw_pool
591 TYPE(pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho1_r, tau1_r, vxc_rho, vxc_tau
592 TYPE(qs_ks_env_type),
POINTER :: ks_env
593 TYPE(qs_rho_type),
POINTER :: rho, rho1, rho_struct
594 TYPE(section_vals_type),
POINTER :: xc_section
595 TYPE(virial_type),
POINTER :: virial
597 CALL timeset(routinen, handle)
607 dft_control=dft_control, &
612 nspins = dft_control%nspins
613 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
614 use_virial = use_virial .AND. calc_force
621 IF (do_kernel .AND. .NOT. calc_force .AND. nspins == 1) alpha = 2.0_dp
623 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
629 ALLOCATE (rho_struct)
632 CALL qs_rho_set(rho_struct, rho_ao=density_matrix)
633 CALL qs_rho_rebuild(rho_struct, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
635 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set)
636 ALLOCATE (cell_to_index(1, 1, 1))
637 cell_to_index(1, 1, 1) = 1
638 lri_env => kg_env%lri_env
639 lri_density => kg_env%lri_density
642 ALLOCATE (pmat(nspins, 1))
644 pmat(ispin, 1)%matrix => density_matrix(ispin)%matrix
647 rho_struct, atomic_kind_set, para_env, response_density=.false.)
648 kg_env%lri_density => lri_density
652 IF (
PRESENT(pmat_ext))
THEN
660 CALL qs_rho_rebuild(rho1, qs_env, rebuild_ao=.false., rebuild_grids=.true.)
662 lri_env1 => kg_env%lri_env1
663 lri_rho1 => kg_env%lri_rho1
666 ALLOCATE (pmat(nspins, 1))
668 pmat(ispin, 1)%matrix => pmat_ext(ispin)%matrix
671 rho1, atomic_kind_set, para_env, response_density=.false.)
672 kg_env%lri_rho1 => lri_rho1
679 xc_section => kg_env%xc_section_kg
683 NULLIFY (vxc_rho, vxc_tau)
689 CALL qs_rho_get(rho1, rho_r=rho1_r, rho_g=rho1_g, tau_r=tau1_r)
697 xc_section=xc_section)
701 rho_struct=rho_struct, &
702 xc_section=xc_section, &
709 IF (
ASSOCIATED(vxc_tau))
THEN
710 cpabort(
" KG with meta-kinetic energy functionals not implemented")
714 CALL pw_scale(vxc_rho(ispin), alpha*vxc_rho(ispin)%pw_grid%dvol)
716 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
718 lri_v_int => lri_rho1%lri_coefs(ispin)%lri_kinds
721 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
723 CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, lri_v_int, calc_force,
"LRI_AUX")
724 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
728 ekin_mol = -ekin_imol
729 xcvirial(1:3, 1:3) = 0.0_dp
730 IF (use_virial) xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) - virial%pv_xc(1:3, 1:3)
733 ALLOCATE (atomlist(natom))
734 DO isub = 1, kg_env%nsubsets
737 imol = kg_env%atom_to_molecule(iatom)
738 color = kg_env%subset_of_mol(imol)
739 IF (color == isub) atomlist(iatom) = 1
745 IF (
PRESENT(pmat_ext))
THEN
752 NULLIFY (vxc_rho, vxc_tau)
757 CALL qs_rho_get(rho1, rho_r=rho1_r, rho_g=rho1_g, tau_r=tau1_r)
765 xc_section=xc_section)
770 rho_struct=rho_struct, &
771 xc_section=xc_section, &
776 ekin_mol = ekin_mol + ekin_imol
779 CALL pw_scale(vxc_rho(ispin), -alpha*vxc_rho(ispin)%pw_grid%dvol)
781 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
783 lri_v_int => lri_rho1%lri_coefs(ispin)%lri_kinds
786 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
789 CALL integrate_v_rspace_one_center(vxc_rho(ispin), qs_env, &
790 lri_v_int, calc_force, &
791 "LRI_AUX", atomlist=atomlist)
793 CALL auxbas_pw_pool%give_back_pw(vxc_rho(ispin))
798 xcvirial(1:3, 1:3) = xcvirial(1:3, 1:3) + virial%pv_xc(1:3, 1:3)
804 virial%pv_xc(1:3, 1:3) = xcvirial(1:3, 1:3)
809 ksmat(1)%matrix => ks_matrix(ispin)%matrix
810 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
812 lri_v_int => lri_rho1%lri_coefs(ispin)%lri_kinds
814 CALL para_env%sum(lri_v_int(ikind)%v_int)
819 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
821 CALL para_env%sum(lri_v_int(ikind)%v_int)
830 ALLOCATE (pmat(nspins, 1))
832 IF (
PRESENT(pmat_ext) .AND. .NOT. do_kernel)
THEN
835 pmat(ispin, 1)%matrix => pmat_ext(ispin)%matrix
841 pmat(ispin, 1)%matrix => density_matrix(ispin)%matrix
849 DEALLOCATE (atomlist, ksmat)
854 DEALLOCATE (rho_struct)
855 IF (
PRESENT(pmat_ext))
THEN
860 DEALLOCATE (cell_to_index)
862 CALL timestop(handle)
864 END SUBROUTINE kg_ekin_ri_embed
872 SUBROUTINE kg_ekin_atomic(qs_env, ks_matrix, ekin_mol)
873 TYPE(qs_environment_type),
POINTER :: qs_env
874 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: ks_matrix
875 REAL(kind=
dp),
INTENT(out) :: ekin_mol
877 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_ekin_atomic'
879 INTEGER :: handle, ispin, nspins
880 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: density_matrix, tnadd_matrix
881 TYPE(kg_environment_type),
POINTER :: kg_env
882 TYPE(qs_rho_type),
POINTER :: rho
884 NULLIFY (rho, kg_env, density_matrix, tnadd_matrix)
886 CALL timeset(routinen, handle)
887 CALL get_qs_env(qs_env, kg_env=kg_env, rho=rho)
889 nspins =
SIZE(ks_matrix)
893 tnadd_matrix => kg_env%tnadd_mat
897 CALL dbcsr_dot(tnadd_matrix(1)%matrix, density_matrix(ispin)%matrix, ekin_mol)
898 CALL dbcsr_add(ks_matrix(ispin)%matrix, tnadd_matrix(1)%matrix, &
899 alpha_scalar=1.0_dp, beta_scalar=1.0_dp)
904 CALL timestop(handle)
906 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...
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 used for Harris functional Kohn-Sham calculation.
subroutine, public create_kernel(qs_env, vxc, vxc_tau, rho, rho1_r, rho1_g, tau1_r, xc_section, compute_virial, virial_xc)
Creation of second derivative xc-potential.
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, 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_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, 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, rhs)
Get the QUICKSTEP environment.
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)
calculates and allocates the xc potential, already reducing it to the dependence on rho and the one o...