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
152 TYPE(
rho_atom_type),
DIMENSION(:),
POINTER :: rho1_atom_set, rho_atom_set
155 CALL timeset(routinen, handle)
157 NULLIFY (v_xc, rho1_g, pw_env, rho1_g_pw, tau1_r_pw)
160 cpassert(
ASSOCIATED(p_env%kpp1))
161 cpassert(
ASSOCIATED(p_env%kpp1_env))
162 cpassert(
ASSOCIATED(rho1))
164 nspins =
SIZE(p_env%kpp1)
167 my_calc_forces = .false.
168 IF (
PRESENT(calc_forces)) my_calc_forces = calc_forces
176 cpassert(
ASSOCIATED(rho1))
181 lri_density=lri_density, &
182 atomic_kind_set=atomic_kind_set)
188 cpassert(
ASSOCIATED(rho1_xc))
191 CALL kpp1_check_i_alloc(p_env%kpp1_env, qs_env, do_triplet)
197 cpassert(
ASSOCIATED(pw_env))
198 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
199 poisson_env=poisson_env)
200 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
202 IF (gapw .OR. gapw_xc) &
206 CALL auxbas_pw_pool%create_pw(rho1_tot_gspace)
208 CALL pw_copy(rho1_g(1), rho1_tot_gspace)
210 CALL pw_axpy(rho1_g(ispin), rho1_tot_gspace)
213 CALL pw_axpy(p_env%local_rho_set%rho0_mpole%rho0_s_gs, rho1_tot_gspace)
214 IF (
ASSOCIATED(p_env%local_rho_set%rho0_mpole%rhoz_cneo_s_gs))
THEN
215 CALL pw_axpy(p_env%local_rho_set%rho0_mpole%rhoz_cneo_s_gs, rho1_tot_gspace)
224 CALL print_densities(rho1, rho1_tot_gspace, output_unit)
226 "PRINT%TOTAL_DENSITIES")
229 IF (.NOT. (nspins == 1 .AND. do_triplet))
THEN
232 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
236 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
237 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
239 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
242 CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
246 CALL qs_rho_get(rho1_xc, rho_r=rho1_r, tau_r=tau1_r)
248 CALL qs_rho_get(rho1, rho_r=rho1_r, tau_r=tau1_r)
251 IF (nspins == 1 .AND. do_triplet)
THEN
254 ALLOCATE (rho1_r_pw(2))
256 CALL rho1_r_pw(ispin)%create(rho1_r(1)%pw_grid)
260 IF (
ASSOCIATED(tau1_r))
THEN
261 ALLOCATE (tau1_r_pw(2))
263 CALL tau1_r_pw(ispin)%create(tau1_r(1)%pw_grid)
276 CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, p_env%kpp1_env%deriv_set, p_env%kpp1_env%rho_set, &
277 rho1_r_pw, rho1_g_pw, tau1_r_pw, auxbas_pw_pool, xc_section, .false., &
278 do_excitations=.true., do_triplet=do_triplet, &
279 compute_virial=calc_virial, virial_xc=virial)
282 CALL pw_scale(v_xc(ispin), v_xc(ispin)%pw_grid%dvol)
285 IF (
SIZE(v_xc) /= nspins)
THEN
286 CALL auxbas_pw_pool%give_back_pw(v_xc(2))
289 IF (
ASSOCIATED(v_xc_tau))
THEN
291 CALL pw_scale(v_xc_tau(ispin), v_xc_tau(ispin)%pw_grid%dvol)
293 IF (
SIZE(v_xc_tau) /= nspins)
THEN
294 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(2))
298 IF (gapw .OR. gapw_xc)
THEN
299 CALL get_qs_env(qs_env, rho_atom_set=rho_atom_set)
300 rho1_atom_set => p_env%local_rho_set%rho_atom_set
302 do_triplet=do_triplet)
305 IF (nspins == 1 .AND. do_triplet)
THEN
306 DO ispin = 1,
SIZE(rho1_r_pw)
307 CALL rho1_r_pw(ispin)%release()
309 DEALLOCATE (rho1_r_pw)
310 IF (
ASSOCIATED(tau1_r_pw))
THEN
311 DO ispin = 1,
SIZE(tau1_r_pw)
312 CALL tau1_r_pw(ispin)%release()
314 DEALLOCATE (tau1_r_pw)
319 IF (nspins == 1) alpha = 2.0_dp
325 CALL dbcsr_set(p_env%kpp1_env%v_ao(ispin)%matrix, 0.0_dp)
331 IF (nspins == 1)
THEN
332 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
333 pmat=rho_ao(ispin), &
334 hmat=p_env%kpp1_env%v_ao(ispin), &
336 calculate_forces=my_calc_forces, gapw=gapw_xc)
338 IF (
ASSOCIATED(v_xc_tau))
THEN
339 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
340 pmat=rho_ao(ispin), &
341 hmat=p_env%kpp1_env%v_ao(ispin), &
343 compute_tau=.true., &
344 calculate_forces=my_calc_forces, gapw=gapw_xc)
348 IF (.NOT. do_triplet)
THEN
349 CALL pw_copy(v_hartree_rspace, v_rspace_new(1))
351 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
352 pmat=rho_ao(ispin), &
353 hmat=p_env%kpp1_env%v_ao(ispin), &
355 calculate_forces=my_calc_forces, gapw=gapw)
358 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
359 pmat=rho_ao(ispin), &
360 hmat=p_env%kpp1_env%v_ao(ispin), &
362 calculate_forces=my_calc_forces, gapw=gapw_xc)
364 IF (
ASSOCIATED(v_xc_tau))
THEN
365 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
366 pmat=rho_ao(ispin), &
367 hmat=p_env%kpp1_env%v_ao(ispin), &
369 compute_tau=.true., &
370 calculate_forces=my_calc_forces, gapw=gapw_xc)
373 CALL pw_copy(v_hartree_rspace, v_rspace_new(ispin))
374 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
375 pmat=rho_ao(ispin), &
376 hmat=p_env%kpp1_env%v_ao(ispin), &
378 calculate_forces=my_calc_forces, gapw=gapw)
383 IF (nspins == 1)
THEN
386 IF (.NOT. do_triplet)
THEN
387 CALL pw_axpy(v_hartree_rspace, v_rspace_new(1))
390 CALL pw_axpy(v_hartree_rspace, v_rspace_new(ispin))
394 IF (
ASSOCIATED(v_xc_tau)) cpabort(
"Meta-GGA functionals not supported with LRI!")
396 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
399 lri_v_int(ikind)%v_int = 0.0_dp
401 CALL integrate_v_rspace_one_center(v_rspace_new(ispin), qs_env, &
402 lri_v_int, .false.,
"LRI_AUX")
404 CALL para_env%sum(lri_v_int(ikind)%v_int)
407 k1mat(1)%matrix => p_env%kpp1_env%v_ao(ispin)%matrix
408 IF (lri_env%exact_1c_terms)
THEN
409 CALL integrate_v_rspace_diagonal(v_rspace_new(ispin), k1mat(1)%matrix, &
410 rho_ao(ispin)%matrix, qs_env, my_calc_forces,
"ORB")
415 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
416 pmat=rho_ao(ispin), &
417 hmat=p_env%kpp1_env%v_ao(ispin), &
419 calculate_forces=my_calc_forces, gapw=gapw)
421 IF (
ASSOCIATED(v_xc_tau))
THEN
422 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
423 pmat=rho_ao(ispin), &
424 hmat=p_env%kpp1_env%v_ao(ispin), &
426 compute_tau=.true., &
427 calculate_forces=my_calc_forces, gapw=gapw)
432 CALL dbcsr_add(p_env%kpp1(ispin)%matrix, p_env%kpp1_env%v_ao(ispin)%matrix, 1.0_dp, alpha)
436 IF (.NOT. (nspins == 1 .AND. do_triplet))
THEN
438 p_env%hartree_local%ecoul_1c, &
439 p_env%local_rho_set, &
440 para_env, tddft=.true., core_2nd=.true.)
442 calculate_forces=my_calc_forces, &
443 local_rho_set=p_env%local_rho_set)
447 ns =
SIZE(p_env%kpp1)
448 ksmat(1:ns, 1:1) => p_env%kpp1(1:ns)
450 psmat(1:ns, 1:1) => rho_ao(1:ns)
451 CALL update_ks_atom(qs_env, ksmat, psmat, forces=my_calc_forces, tddft=.true., &
452 rho_atom_external=p_env%local_rho_set%rho_atom_set)
453 ELSEIF (gapw_xc)
THEN
454 ns =
SIZE(p_env%kpp1)
455 ksmat(1:ns, 1:1) => p_env%kpp1(1:ns)
457 psmat(1:ns, 1:1) => rho_ao(1:ns)
458 CALL update_ks_atom(qs_env, ksmat, psmat, forces=my_calc_forces, tddft=.true., &
459 rho_atom_external=p_env%local_rho_set%rho_atom_set)
462 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
463 DO ispin = 1,
SIZE(v_rspace_new)
464 CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
466 DEALLOCATE (v_rspace_new)
467 IF (
ASSOCIATED(v_xc_tau))
THEN
468 DO ispin = 1,
SIZE(v_xc_tau)
469 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(ispin))
471 DEALLOCATE (v_xc_tau)
474 CALL timestop(handle)
486 SUBROUTINE kpp1_check_i_alloc(kpp1_env, qs_env, do_triplet)
488 TYPE(qs_kpp1_env_type) :: kpp1_env
489 TYPE(qs_environment_type),
INTENT(IN),
POINTER :: qs_env
490 LOGICAL,
INTENT(IN) :: do_triplet
492 INTEGER :: ispin, nspins
493 TYPE(admm_type),
POINTER :: admm_env
494 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s
495 TYPE(dft_control_type),
POINTER :: dft_control
496 TYPE(pw_env_type),
POINTER :: pw_env
497 TYPE(pw_pool_type),
POINTER :: auxbas_pw_pool
498 TYPE(pw_r3d_rs_type),
DIMENSION(:),
POINTER :: my_rho_r, my_tau_r, rho_r, tau_r
499 TYPE(qs_rho_type),
POINTER :: rho
500 TYPE(section_vals_type),
POINTER :: admm_xc_section, input, xc_section
504 NULLIFY (pw_env, auxbas_pw_pool, matrix_s, rho, rho_r, admm_env, dft_control, my_rho_r, my_tau_r)
506 CALL get_qs_env(qs_env, pw_env=pw_env, &
507 matrix_s=matrix_s, rho=rho, input=input, &
508 admm_env=admm_env, dft_control=dft_control)
510 CALL qs_rho_get(rho, rho_r=rho_r, tau_r=tau_r)
513 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
515 IF (.NOT.
ASSOCIATED(kpp1_env%v_ao))
THEN
516 CALL dbcsr_allocate_matrix_set(kpp1_env%v_ao, nspins)
518 ALLOCATE (kpp1_env%v_ao(ispin)%matrix)
519 CALL dbcsr_copy(kpp1_env%v_ao(ispin)%matrix, matrix_s(1)%matrix, &
520 name=
"kpp1%v_ao-"//adjustl(cp_to_string(ispin)))
524 IF (.NOT.
ASSOCIATED(kpp1_env%deriv_set))
THEN
526 IF (nspins == 1 .AND. do_triplet)
THEN
527 ALLOCATE (my_rho_r(2))
529 CALL auxbas_pw_pool%create_pw(my_rho_r(ispin))
530 CALL pw_axpy(rho_r(1), my_rho_r(ispin), 0.5_dp, 0.0_dp)
532 IF (dft_control%use_kinetic_energy_density)
THEN
533 ALLOCATE (my_tau_r(2))
535 CALL auxbas_pw_pool%create_pw(my_tau_r(ispin))
536 CALL pw_axpy(tau_r(1), my_tau_r(ispin), 0.5_dp, 0.0_dp)
541 IF (dft_control%use_kinetic_energy_density)
THEN
546 IF (dft_control%do_admm)
THEN
547 xc_section => admm_env%xc_section_primary
549 xc_section => section_vals_get_subs_vals(input,
"DFT%XC")
552 ALLOCATE (kpp1_env%deriv_set, kpp1_env%rho_set)
553 CALL xc_prep_2nd_deriv(kpp1_env%deriv_set, kpp1_env%rho_set, &
554 my_rho_r, auxbas_pw_pool, &
555 xc_section=xc_section, tau_r=my_tau_r)
557 IF (nspins == 1 .AND. do_triplet)
THEN
558 DO ispin = 1,
SIZE(my_rho_r)
559 CALL my_rho_r(ispin)%release()
561 DEALLOCATE (my_rho_r)
562 IF (
ASSOCIATED(my_tau_r))
THEN
563 DO ispin = 1,
SIZE(my_tau_r)
564 CALL my_tau_r(ispin)%release()
566 DEALLOCATE (my_tau_r)
572 IF (dft_control%do_admm)
THEN
573 IF (admm_env%aux_exch_func /= do_admm_aux_exch_func_none)
THEN
574 IF (.NOT.
ASSOCIATED(kpp1_env%deriv_set_admm))
THEN
575 cpassert(.NOT. do_triplet)
576 admm_xc_section => admm_env%xc_section_aux
577 CALL get_admm_env(qs_env%admm_env, rho_aux_fit=rho)
578 CALL qs_rho_get(rho, rho_r=rho_r)
579 ALLOCATE (kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm)
580 CALL xc_prep_2nd_deriv(kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm, &
581 rho_r, auxbas_pw_pool, &
582 xc_section=admm_xc_section)
587 END SUBROUTINE kpp1_check_i_alloc
597 TYPE(qs_kpp1_env_type) :: kpp1_env
599 IF (
ASSOCIATED(kpp1_env%deriv_set))
THEN
600 CALL xc_dset_release(kpp1_env%deriv_set)
601 DEALLOCATE (kpp1_env%deriv_set)
602 NULLIFY (kpp1_env%deriv_set)
604 IF (
ASSOCIATED(kpp1_env%rho_set))
THEN
605 CALL xc_rho_set_release(kpp1_env%rho_set)
606 DEALLOCATE (kpp1_env%rho_set)
617 SUBROUTINE print_densities(rho1, rho1_tot_gspace, out_unit)
619 TYPE(qs_rho_type),
POINTER :: rho1
620 TYPE(pw_c1d_gs_type),
INTENT(IN) :: rho1_tot_gspace
623 REAL(kind=dp) :: total_rho_gspace
624 REAL(kind=dp),
DIMENSION(:),
POINTER :: tot_rho1_r
628 total_rho_gspace = pw_integrate_function(rho1_tot_gspace, isign=-1)
629 IF (out_unit > 0)
THEN
630 CALL qs_rho_get(rho1, tot_rho_r=tot_rho1_r)
631 WRITE (unit=out_unit, fmt=
"(T3,A,T60,F20.10)") &
632 "KPP1 total charge density (r-space):", &
633 accurate_sum(tot_rho1_r), &
634 "KPP1 total charge density (g-space):", &
638 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, 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.
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, 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_calc_2nd_deriv(v_xc, v_xc_tau, deriv_set, rho_set, rho1_r, rho1_g, tau1_r, pw_pool, xc_section, gapw, vxg, do_excitations, do_triplet, compute_virial, virial_xc)
Caller routine to calculate the second order potential in the direction of rho1_r.
subroutine, public xc_prep_2nd_deriv(deriv_set, rho_set, rho_r, pw_pool, xc_section, tau_r)
Prepare objects for the calculation of the 2nd derivatives of the density functional....
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.