61 integrate_v_rspace_diagonal,&
62 integrate_v_rspace_one_center
75#include "./base/base_uses.f90"
81 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
82 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_kpp1_env_methods'
100 NULLIFY (kpp1_env%v_ao, kpp1_env%rho_set, kpp1_env%deriv_set, &
101 kpp1_env%rho_set_admm, kpp1_env%deriv_set_admm)
117 SUBROUTINE calc_kpp1(rho1_xc, rho1, xc_section, lrigpw, do_triplet, qs_env, p_env, &
118 calc_forces, calc_virial, virial)
122 LOGICAL,
INTENT(IN) :: lrigpw, do_triplet
125 LOGICAL,
INTENT(IN),
OPTIONAL :: calc_forces, calc_virial
126 REAL(kind=
dp),
DIMENSION(3, 3),
INTENT(INOUT), &
129 CHARACTER(len=*),
PARAMETER :: routinen =
'calc_kpp1'
131 INTEGER :: handle, ikind, ispin, nkind, ns, nspins, &
133 LOGICAL :: gapw, gapw_xc, lsd, my_calc_forces
134 REAL(kind=
dp) :: alpha, energy_hartree, energy_hartree_1c
137 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: k1mat, rho_ao
138 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: ksmat, psmat
149 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho1_r, rho1_r_pw, tau1_r, tau1_r_pw, &
150 v_rspace_new, v_xc, v_xc_tau
153 TYPE(
rho_atom_type),
DIMENSION(:),
POINTER :: rho1_atom_set, rho_atom_set
156 CALL timeset(routinen, handle)
158 NULLIFY (v_xc, rho1_g, pw_env, rho1_g_pw, tau1_r_pw)
161 cpassert(
ASSOCIATED(p_env%kpp1))
162 cpassert(
ASSOCIATED(p_env%kpp1_env))
163 cpassert(
ASSOCIATED(rho1))
165 nspins =
SIZE(p_env%kpp1)
168 my_calc_forces = .false.
169 IF (
PRESENT(calc_forces)) my_calc_forces = calc_forces
177 cpassert(
ASSOCIATED(rho1))
182 lri_density=lri_density, &
183 atomic_kind_set=atomic_kind_set)
189 cpassert(
ASSOCIATED(rho1_xc))
192 CALL kpp1_check_i_alloc(p_env%kpp1_env, qs_env, do_triplet)
198 cpassert(
ASSOCIATED(pw_env))
199 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
200 poisson_env=poisson_env)
201 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
203 IF (gapw .OR. gapw_xc) &
207 CALL auxbas_pw_pool%create_pw(rho1_tot_gspace)
209 CALL pw_copy(rho1_g(1), rho1_tot_gspace)
211 CALL pw_axpy(rho1_g(ispin), rho1_tot_gspace)
214 CALL pw_axpy(p_env%local_rho_set%rho0_mpole%rho0_s_gs, rho1_tot_gspace)
215 IF (
ASSOCIATED(p_env%local_rho_set%rho0_mpole%rhoz_cneo_s_gs))
THEN
216 CALL pw_axpy(p_env%local_rho_set%rho0_mpole%rhoz_cneo_s_gs, rho1_tot_gspace)
225 CALL print_densities(rho1, rho1_tot_gspace, output_unit)
227 "PRINT%TOTAL_DENSITIES")
230 IF (.NOT. (nspins == 1 .AND. do_triplet))
THEN
233 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
237 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
238 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
240 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
243 CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
247 CALL qs_rho_get(rho1_xc, rho_r=rho1_r, tau_r=tau1_r)
249 CALL qs_rho_get(rho1, rho_r=rho1_r, tau_r=tau1_r)
252 IF (nspins == 1 .AND. do_triplet)
THEN
255 ALLOCATE (rho1_r_pw(2))
257 CALL rho1_r_pw(ispin)%create(rho1_r(1)%pw_grid)
261 IF (
ASSOCIATED(tau1_r))
THEN
262 ALLOCATE (tau1_r_pw(2))
264 CALL tau1_r_pw(ispin)%create(tau1_r(1)%pw_grid)
278 CALL get_qs_env(qs_env, xcint_weights=weights)
280 CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, p_env%kpp1_env%deriv_set, p_env%kpp1_env%rho_set, &
281 rho1_r_pw, rho1_g_pw, tau1_r_pw, auxbas_pw_pool, weights, &
282 xc_section, .false., do_excitations=.true., do_triplet=do_triplet, &
283 compute_virial=calc_virial, virial_xc=virial)
286 CALL pw_scale(v_xc(ispin), v_xc(ispin)%pw_grid%dvol)
289 IF (
SIZE(v_xc) /= nspins)
THEN
290 CALL auxbas_pw_pool%give_back_pw(v_xc(2))
293 IF (
ASSOCIATED(v_xc_tau))
THEN
295 CALL pw_scale(v_xc_tau(ispin), v_xc_tau(ispin)%pw_grid%dvol)
297 IF (
SIZE(v_xc_tau) /= nspins)
THEN
298 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(2))
302 IF (gapw .OR. gapw_xc)
THEN
303 CALL get_qs_env(qs_env, rho_atom_set=rho_atom_set)
304 rho1_atom_set => p_env%local_rho_set%rho_atom_set
306 do_triplet=do_triplet)
309 IF (nspins == 1 .AND. do_triplet)
THEN
310 DO ispin = 1,
SIZE(rho1_r_pw)
311 CALL rho1_r_pw(ispin)%release()
313 DEALLOCATE (rho1_r_pw)
314 IF (
ASSOCIATED(tau1_r_pw))
THEN
315 DO ispin = 1,
SIZE(tau1_r_pw)
316 CALL tau1_r_pw(ispin)%release()
318 DEALLOCATE (tau1_r_pw)
323 IF (nspins == 1) alpha = 2.0_dp
329 CALL dbcsr_set(p_env%kpp1_env%v_ao(ispin)%matrix, 0.0_dp)
335 IF (nspins == 1)
THEN
336 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
337 pmat=rho_ao(ispin), &
338 hmat=p_env%kpp1_env%v_ao(ispin), &
340 calculate_forces=my_calc_forces, gapw=gapw_xc)
342 IF (
ASSOCIATED(v_xc_tau))
THEN
343 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
344 pmat=rho_ao(ispin), &
345 hmat=p_env%kpp1_env%v_ao(ispin), &
347 compute_tau=.true., &
348 calculate_forces=my_calc_forces, gapw=gapw_xc)
352 IF (.NOT. do_triplet)
THEN
353 CALL pw_copy(v_hartree_rspace, v_rspace_new(1))
355 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
356 pmat=rho_ao(ispin), &
357 hmat=p_env%kpp1_env%v_ao(ispin), &
359 calculate_forces=my_calc_forces, gapw=gapw)
362 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
363 pmat=rho_ao(ispin), &
364 hmat=p_env%kpp1_env%v_ao(ispin), &
366 calculate_forces=my_calc_forces, gapw=gapw_xc)
368 IF (
ASSOCIATED(v_xc_tau))
THEN
369 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
370 pmat=rho_ao(ispin), &
371 hmat=p_env%kpp1_env%v_ao(ispin), &
373 compute_tau=.true., &
374 calculate_forces=my_calc_forces, gapw=gapw_xc)
377 CALL pw_copy(v_hartree_rspace, v_rspace_new(ispin))
378 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
379 pmat=rho_ao(ispin), &
380 hmat=p_env%kpp1_env%v_ao(ispin), &
382 calculate_forces=my_calc_forces, gapw=gapw)
387 IF (nspins == 1)
THEN
390 IF (.NOT. do_triplet)
THEN
391 CALL pw_axpy(v_hartree_rspace, v_rspace_new(1))
394 CALL pw_axpy(v_hartree_rspace, v_rspace_new(ispin))
398 IF (
ASSOCIATED(v_xc_tau)) cpabort(
"Meta-GGA functionals not supported with LRI!")
400 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
403 lri_v_int(ikind)%v_int = 0.0_dp
405 CALL integrate_v_rspace_one_center(v_rspace_new(ispin), qs_env, &
406 lri_v_int, .false.,
"LRI_AUX")
408 CALL para_env%sum(lri_v_int(ikind)%v_int)
411 k1mat(1)%matrix => p_env%kpp1_env%v_ao(ispin)%matrix
412 IF (lri_env%exact_1c_terms)
THEN
413 CALL integrate_v_rspace_diagonal(v_rspace_new(ispin), k1mat(1)%matrix, &
414 rho_ao(ispin)%matrix, qs_env, my_calc_forces,
"ORB")
419 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
420 pmat=rho_ao(ispin), &
421 hmat=p_env%kpp1_env%v_ao(ispin), &
423 calculate_forces=my_calc_forces, gapw=gapw)
425 IF (
ASSOCIATED(v_xc_tau))
THEN
426 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
427 pmat=rho_ao(ispin), &
428 hmat=p_env%kpp1_env%v_ao(ispin), &
430 compute_tau=.true., &
431 calculate_forces=my_calc_forces, gapw=gapw)
436 CALL dbcsr_add(p_env%kpp1(ispin)%matrix, p_env%kpp1_env%v_ao(ispin)%matrix, 1.0_dp, alpha)
440 IF (.NOT. (nspins == 1 .AND. do_triplet))
THEN
442 p_env%hartree_local%ecoul_1c, &
443 p_env%local_rho_set, &
444 para_env, tddft=.true., core_2nd=.true.)
446 calculate_forces=my_calc_forces, &
447 local_rho_set=p_env%local_rho_set)
451 ns =
SIZE(p_env%kpp1)
452 ksmat(1:ns, 1:1) => p_env%kpp1(1:ns)
454 psmat(1:ns, 1:1) => rho_ao(1:ns)
455 CALL update_ks_atom(qs_env, ksmat, psmat, forces=my_calc_forces, tddft=.true., &
456 rho_atom_external=p_env%local_rho_set%rho_atom_set)
457 ELSEIF (gapw_xc)
THEN
458 ns =
SIZE(p_env%kpp1)
459 ksmat(1:ns, 1:1) => p_env%kpp1(1:ns)
461 psmat(1:ns, 1:1) => rho_ao(1:ns)
462 CALL update_ks_atom(qs_env, ksmat, psmat, forces=my_calc_forces, tddft=.true., &
463 rho_atom_external=p_env%local_rho_set%rho_atom_set)
466 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
467 DO ispin = 1,
SIZE(v_rspace_new)
468 CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
470 DEALLOCATE (v_rspace_new)
471 IF (
ASSOCIATED(v_xc_tau))
THEN
472 DO ispin = 1,
SIZE(v_xc_tau)
473 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(ispin))
475 DEALLOCATE (v_xc_tau)
478 CALL timestop(handle)
490 SUBROUTINE kpp1_check_i_alloc(kpp1_env, qs_env, do_triplet)
492 TYPE(qs_kpp1_env_type) :: kpp1_env
493 TYPE(qs_environment_type),
INTENT(IN),
POINTER :: qs_env
494 LOGICAL,
INTENT(IN) :: do_triplet
496 INTEGER :: ispin, nspins
497 TYPE(admm_type),
POINTER :: admm_env
498 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s
499 TYPE(dft_control_type),
POINTER :: dft_control
500 TYPE(pw_env_type),
POINTER :: pw_env
501 TYPE(pw_pool_type),
POINTER :: auxbas_pw_pool
502 TYPE(pw_r3d_rs_type),
DIMENSION(:),
POINTER :: my_rho_r, my_tau_r, rho_r, tau_r
503 TYPE(pw_r3d_rs_type),
POINTER :: weights
504 TYPE(qs_rho_type),
POINTER :: rho
505 TYPE(section_vals_type),
POINTER :: admm_xc_section, input, xc_section
509 NULLIFY (pw_env, auxbas_pw_pool, matrix_s, rho, rho_r, admm_env, dft_control, my_rho_r, my_tau_r)
511 CALL get_qs_env(qs_env, pw_env=pw_env, &
512 matrix_s=matrix_s, rho=rho, input=input, &
513 admm_env=admm_env, dft_control=dft_control)
516 CALL get_qs_env(qs_env, xcint_weights=weights)
518 CALL qs_rho_get(rho, rho_r=rho_r, tau_r=tau_r)
521 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
523 IF (.NOT.
ASSOCIATED(kpp1_env%v_ao))
THEN
524 CALL dbcsr_allocate_matrix_set(kpp1_env%v_ao, nspins)
526 ALLOCATE (kpp1_env%v_ao(ispin)%matrix)
527 CALL dbcsr_copy(kpp1_env%v_ao(ispin)%matrix, matrix_s(1)%matrix, &
528 name=
"kpp1%v_ao-"//adjustl(cp_to_string(ispin)))
532 IF (.NOT.
ASSOCIATED(kpp1_env%deriv_set))
THEN
534 IF (nspins == 1 .AND. do_triplet)
THEN
535 ALLOCATE (my_rho_r(2))
537 CALL auxbas_pw_pool%create_pw(my_rho_r(ispin))
538 CALL pw_axpy(rho_r(1), my_rho_r(ispin), 0.5_dp, 0.0_dp)
540 IF (dft_control%use_kinetic_energy_density)
THEN
541 ALLOCATE (my_tau_r(2))
543 CALL auxbas_pw_pool%create_pw(my_tau_r(ispin))
544 CALL pw_axpy(tau_r(1), my_tau_r(ispin), 0.5_dp, 0.0_dp)
549 IF (dft_control%use_kinetic_energy_density)
THEN
554 IF (dft_control%do_admm)
THEN
555 xc_section => admm_env%xc_section_primary
557 xc_section => section_vals_get_subs_vals(input,
"DFT%XC")
560 ALLOCATE (kpp1_env%deriv_set, kpp1_env%rho_set)
561 CALL xc_prep_2nd_deriv(kpp1_env%deriv_set, kpp1_env%rho_set, &
562 my_rho_r, auxbas_pw_pool, weights, &
563 xc_section=xc_section, tau_r=my_tau_r)
565 IF (nspins == 1 .AND. do_triplet)
THEN
566 DO ispin = 1,
SIZE(my_rho_r)
567 CALL my_rho_r(ispin)%release()
569 DEALLOCATE (my_rho_r)
570 IF (
ASSOCIATED(my_tau_r))
THEN
571 DO ispin = 1,
SIZE(my_tau_r)
572 CALL my_tau_r(ispin)%release()
574 DEALLOCATE (my_tau_r)
580 IF (dft_control%do_admm)
THEN
581 IF (admm_env%aux_exch_func /= do_admm_aux_exch_func_none)
THEN
582 IF (.NOT.
ASSOCIATED(kpp1_env%deriv_set_admm))
THEN
583 cpassert(.NOT. do_triplet)
584 admm_xc_section => admm_env%xc_section_aux
585 CALL get_admm_env(qs_env%admm_env, rho_aux_fit=rho)
586 CALL qs_rho_get(rho, rho_r=rho_r)
587 ALLOCATE (kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm)
588 CALL xc_prep_2nd_deriv(kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm, &
589 rho_r, auxbas_pw_pool, weights, &
590 xc_section=admm_xc_section)
595 END SUBROUTINE kpp1_check_i_alloc
605 TYPE(qs_kpp1_env_type) :: kpp1_env
607 IF (
ASSOCIATED(kpp1_env%deriv_set))
THEN
608 CALL xc_dset_release(kpp1_env%deriv_set)
609 DEALLOCATE (kpp1_env%deriv_set)
610 NULLIFY (kpp1_env%deriv_set)
612 IF (
ASSOCIATED(kpp1_env%rho_set))
THEN
613 CALL xc_rho_set_release(kpp1_env%rho_set)
614 DEALLOCATE (kpp1_env%rho_set)
625 SUBROUTINE print_densities(rho1, rho1_tot_gspace, out_unit)
627 TYPE(qs_rho_type),
POINTER :: rho1
628 TYPE(pw_c1d_gs_type),
INTENT(IN) :: rho1_tot_gspace
631 REAL(kind=dp) :: total_rho_gspace
632 REAL(kind=dp),
DIMENSION(:),
POINTER :: tot_rho1_r
636 total_rho_gspace = pw_integrate_function(rho1_tot_gspace, isign=-1)
637 IF (out_unit > 0)
THEN
638 CALL qs_rho_get(rho1, tot_rho_r=tot_rho1_r)
639 WRITE (unit=out_unit, fmt=
"(T3,A,T60,F20.10)") &
640 "KPP1 total charge density (r-space):", &
641 accurate_sum(tot_rho1_r), &
642 "KPP1 total charge density (g-space):", &
646 END SUBROUTINE print_densities
Types and set/get functions for auxiliary density matrix methods.
subroutine, public get_admm_env(admm_env, mo_derivs_aux_fit, mos_aux_fit, sab_aux_fit, sab_aux_fit_asymm, sab_aux_fit_vs_orb, matrix_s_aux_fit, matrix_s_aux_fit_kp, matrix_s_aux_fit_vs_orb, matrix_s_aux_fit_vs_orb_kp, task_list_aux_fit, matrix_ks_aux_fit, matrix_ks_aux_fit_kp, matrix_ks_aux_fit_im, matrix_ks_aux_fit_dft, matrix_ks_aux_fit_hfx, matrix_ks_aux_fit_dft_kp, matrix_ks_aux_fit_hfx_kp, rho_aux_fit, rho_aux_fit_buffer, admm_dm)
Get routine for the ADMM env.
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_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_set(matrix, alpha)
...
subroutine, public dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
...
DBCSR operations in CP2K.
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
subroutine, public vh_1c_gg_integrals(qs_env, energy_hartree_1c, ecoul_1c, local_rho_set, para_env, tddft, local_rho_set_2nd, core_2nd)
Calculates one center GAPW Hartree energies and matrix elements Hartree potentials are input Takes po...
sums arrays of real/complex numbers with much reduced round-off as compared to a naive implementation...
Defines the basic variable types.
integer, parameter, public dp
contains the types and subroutines for dealing with the lri_env lri : local resolution of the identit...
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
functions related to the poisson solver on regular grids
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, 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.
subroutine, public prepare_gapw_den(qs_env, local_rho_set, do_rho0, kind_set_external, pw_env_sub)
...
Integrate single or product functions over a potential on a RS grid.
module that builds the second order perturbation kernel kpp1 = delta_rho|_P delta_rho|_P E drho(P1) d...
subroutine, public calc_kpp1(rho1_xc, rho1, xc_section, lrigpw, do_triplet, qs_env, p_env, calc_forces, calc_virial, virial)
...
subroutine, public kpp1_create(kpp1_env)
allocates and initializes a kpp1_env
subroutine, public kpp1_did_change(kpp1_env)
function to advise of changes either in the grids
basis types for the calculation of the perturbation of density theory.
routines that build the Kohn-Sham matrix contributions coming from local atomic densities
subroutine, public update_ks_atom(qs_env, ksmat, pmat, forces, tddft, rho_atom_external, kind_set_external, oce_external, sab_external, kscale, kintegral, kforce, fscale)
The correction to the KS matrix due to the GAPW local terms to the hartree and XC contributions is he...
basis types for the calculation of the perturbation of density theory.
subroutine, public integrate_vhg0_rspace(qs_env, v_rspace, para_env, calculate_forces, local_rho_set, local_rho_set_2nd, atener, kforce, my_pools, my_rs_descs)
...
superstucture that hold various representations of the density and keeps track of which ones are vali...
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...
routines that build the integrals of the Vxc potential calculated for the atomic density in the basis...
subroutine, public calculate_xc_2nd_deriv_atom(rho_atom_set, rho1_atom_set, qs_env, xc_section, para_env, do_tddfpt2, do_triplet, do_sf, kind_set_external)
...
represent a group ofunctional derivatives
subroutine, public xc_dset_release(derivative_set)
releases a derivative set
subroutine, public xc_rho_set_release(rho_set, pw_pool)
releases the given rho_set
Exchange and Correlation functional calculations.
subroutine, public xc_prep_2nd_deriv(deriv_set, rho_set, rho_r, pw_pool, weights, xc_section, tau_r)
Prepare objects for the calculation of the 2nd derivatives of the density functional....
subroutine, public xc_calc_2nd_deriv(v_xc, v_xc_tau, deriv_set, rho_set, rho1_r, rho1_g, tau1_r, pw_pool, weights, xc_section, gapw, vxg, do_excitations, do_sf, do_triplet, compute_virial, virial_xc)
Caller routine to calculate the second order potential in the direction of rho1_r.
stores some data used in wavefunction fitting
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...
stores all the informations relevant to an mpi environment
contained for different pw related things
environment for the poisson solver
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
environment that keeps the informations and temporary val to build the kpp1 kernel matrix
Represent a qs system that is perturbed. Can calculate the linear operator and the rhs of the system ...
keeps the density in various representations, keeping track of which ones are valid.