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)
220 CALL print_densities(rho1, rho1_tot_gspace, output_unit)
222 "PRINT%TOTAL_DENSITIES")
225 IF (.NOT. (nspins == 1 .AND. do_triplet))
THEN
228 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
232 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
233 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
235 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
238 CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
242 CALL qs_rho_get(rho1_xc, rho_r=rho1_r, tau_r=tau1_r)
244 CALL qs_rho_get(rho1, rho_r=rho1_r, tau_r=tau1_r)
247 IF (nspins == 1 .AND. do_triplet)
THEN
250 ALLOCATE (rho1_r_pw(2))
252 CALL rho1_r_pw(ispin)%create(rho1_r(1)%pw_grid)
256 IF (
ASSOCIATED(tau1_r))
THEN
257 ALLOCATE (tau1_r_pw(2))
259 CALL tau1_r_pw(ispin)%create(tau1_r(1)%pw_grid)
272 CALL xc_calc_2nd_deriv(v_xc, v_xc_tau, p_env%kpp1_env%deriv_set, p_env%kpp1_env%rho_set, &
273 rho1_r_pw, rho1_g_pw, tau1_r_pw, auxbas_pw_pool, xc_section, .false., &
274 do_excitations=.true., do_triplet=do_triplet, &
275 compute_virial=calc_virial, virial_xc=virial)
278 CALL pw_scale(v_xc(ispin), v_xc(ispin)%pw_grid%dvol)
281 IF (
SIZE(v_xc) /= nspins)
THEN
282 CALL auxbas_pw_pool%give_back_pw(v_xc(2))
285 IF (
ASSOCIATED(v_xc_tau))
THEN
287 CALL pw_scale(v_xc_tau(ispin), v_xc_tau(ispin)%pw_grid%dvol)
289 IF (
SIZE(v_xc_tau) /= nspins)
THEN
290 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(2))
294 IF (gapw .OR. gapw_xc)
THEN
295 CALL get_qs_env(qs_env, rho_atom_set=rho_atom_set)
296 rho1_atom_set => p_env%local_rho_set%rho_atom_set
298 do_triplet=do_triplet)
301 IF (nspins == 1 .AND. do_triplet)
THEN
302 DO ispin = 1,
SIZE(rho1_r_pw)
303 CALL rho1_r_pw(ispin)%release()
305 DEALLOCATE (rho1_r_pw)
306 IF (
ASSOCIATED(tau1_r_pw))
THEN
307 DO ispin = 1,
SIZE(tau1_r_pw)
308 CALL tau1_r_pw(ispin)%release()
310 DEALLOCATE (tau1_r_pw)
315 IF (nspins == 1) alpha = 2.0_dp
321 CALL dbcsr_set(p_env%kpp1_env%v_ao(ispin)%matrix, 0.0_dp)
327 IF (nspins == 1)
THEN
328 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
329 pmat=rho_ao(ispin), &
330 hmat=p_env%kpp1_env%v_ao(ispin), &
332 calculate_forces=my_calc_forces, gapw=gapw_xc)
334 IF (
ASSOCIATED(v_xc_tau))
THEN
335 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
336 pmat=rho_ao(ispin), &
337 hmat=p_env%kpp1_env%v_ao(ispin), &
339 compute_tau=.true., &
340 calculate_forces=my_calc_forces, gapw=gapw_xc)
344 IF (.NOT. do_triplet)
THEN
345 CALL pw_copy(v_hartree_rspace, v_rspace_new(1))
347 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
348 pmat=rho_ao(ispin), &
349 hmat=p_env%kpp1_env%v_ao(ispin), &
351 calculate_forces=my_calc_forces, gapw=gapw)
354 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
355 pmat=rho_ao(ispin), &
356 hmat=p_env%kpp1_env%v_ao(ispin), &
358 calculate_forces=my_calc_forces, gapw=gapw_xc)
360 IF (
ASSOCIATED(v_xc_tau))
THEN
361 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
362 pmat=rho_ao(ispin), &
363 hmat=p_env%kpp1_env%v_ao(ispin), &
365 compute_tau=.true., &
366 calculate_forces=my_calc_forces, gapw=gapw_xc)
369 CALL pw_copy(v_hartree_rspace, v_rspace_new(ispin))
370 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
371 pmat=rho_ao(ispin), &
372 hmat=p_env%kpp1_env%v_ao(ispin), &
374 calculate_forces=my_calc_forces, gapw=gapw)
379 IF (nspins == 1)
THEN
382 IF (.NOT. do_triplet)
THEN
383 CALL pw_axpy(v_hartree_rspace, v_rspace_new(1))
386 CALL pw_axpy(v_hartree_rspace, v_rspace_new(ispin))
390 IF (
ASSOCIATED(v_xc_tau)) cpabort(
"Meta-GGA functionals not supported with LRI!")
392 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
395 lri_v_int(ikind)%v_int = 0.0_dp
397 CALL integrate_v_rspace_one_center(v_rspace_new(ispin), qs_env, &
398 lri_v_int, .false.,
"LRI_AUX")
400 CALL para_env%sum(lri_v_int(ikind)%v_int)
403 k1mat(1)%matrix => p_env%kpp1_env%v_ao(ispin)%matrix
404 IF (lri_env%exact_1c_terms)
THEN
405 CALL integrate_v_rspace_diagonal(v_rspace_new(ispin), k1mat(1)%matrix, &
406 rho_ao(ispin)%matrix, qs_env, my_calc_forces,
"ORB")
411 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
412 pmat=rho_ao(ispin), &
413 hmat=p_env%kpp1_env%v_ao(ispin), &
415 calculate_forces=my_calc_forces, gapw=gapw)
417 IF (
ASSOCIATED(v_xc_tau))
THEN
418 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
419 pmat=rho_ao(ispin), &
420 hmat=p_env%kpp1_env%v_ao(ispin), &
422 compute_tau=.true., &
423 calculate_forces=my_calc_forces, gapw=gapw)
428 CALL dbcsr_add(p_env%kpp1(ispin)%matrix, p_env%kpp1_env%v_ao(ispin)%matrix, 1.0_dp, alpha)
432 IF (.NOT. (nspins == 1 .AND. do_triplet))
THEN
434 p_env%hartree_local%ecoul_1c, &
435 p_env%local_rho_set, &
436 para_env, tddft=.true., core_2nd=.true.)
438 calculate_forces=my_calc_forces, &
439 local_rho_set=p_env%local_rho_set)
443 ns =
SIZE(p_env%kpp1)
444 ksmat(1:ns, 1:1) => p_env%kpp1(1:ns)
446 psmat(1:ns, 1:1) => rho_ao(1:ns)
447 CALL update_ks_atom(qs_env, ksmat, psmat, forces=my_calc_forces, tddft=.true., &
448 rho_atom_external=p_env%local_rho_set%rho_atom_set)
449 ELSEIF (gapw_xc)
THEN
450 ns =
SIZE(p_env%kpp1)
451 ksmat(1:ns, 1:1) => p_env%kpp1(1:ns)
453 psmat(1:ns, 1:1) => rho_ao(1:ns)
454 CALL update_ks_atom(qs_env, ksmat, psmat, forces=my_calc_forces, tddft=.true., &
455 rho_atom_external=p_env%local_rho_set%rho_atom_set)
458 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
459 DO ispin = 1,
SIZE(v_rspace_new)
460 CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
462 DEALLOCATE (v_rspace_new)
463 IF (
ASSOCIATED(v_xc_tau))
THEN
464 DO ispin = 1,
SIZE(v_xc_tau)
465 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(ispin))
467 DEALLOCATE (v_xc_tau)
470 CALL timestop(handle)
482 SUBROUTINE kpp1_check_i_alloc(kpp1_env, qs_env, do_triplet)
484 TYPE(qs_kpp1_env_type) :: kpp1_env
485 TYPE(qs_environment_type),
INTENT(IN),
POINTER :: qs_env
486 LOGICAL,
INTENT(IN) :: do_triplet
488 INTEGER :: ispin, nspins
489 TYPE(admm_type),
POINTER :: admm_env
490 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s
491 TYPE(dft_control_type),
POINTER :: dft_control
492 TYPE(pw_env_type),
POINTER :: pw_env
493 TYPE(pw_pool_type),
POINTER :: auxbas_pw_pool
494 TYPE(pw_r3d_rs_type),
DIMENSION(:),
POINTER :: my_rho_r, my_tau_r, rho_r, tau_r
495 TYPE(qs_rho_type),
POINTER :: rho
496 TYPE(section_vals_type),
POINTER :: admm_xc_section, input, xc_section
500 NULLIFY (pw_env, auxbas_pw_pool, matrix_s, rho, rho_r, admm_env, dft_control, my_rho_r, my_tau_r)
502 CALL get_qs_env(qs_env, pw_env=pw_env, &
503 matrix_s=matrix_s, rho=rho, input=input, &
504 admm_env=admm_env, dft_control=dft_control)
506 CALL qs_rho_get(rho, rho_r=rho_r, tau_r=tau_r)
509 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
511 IF (.NOT.
ASSOCIATED(kpp1_env%v_ao))
THEN
512 CALL dbcsr_allocate_matrix_set(kpp1_env%v_ao, nspins)
514 ALLOCATE (kpp1_env%v_ao(ispin)%matrix)
515 CALL dbcsr_copy(kpp1_env%v_ao(ispin)%matrix, matrix_s(1)%matrix, &
516 name=
"kpp1%v_ao-"//adjustl(cp_to_string(ispin)))
520 IF (.NOT.
ASSOCIATED(kpp1_env%deriv_set))
THEN
522 IF (nspins == 1 .AND. do_triplet)
THEN
523 ALLOCATE (my_rho_r(2))
525 CALL auxbas_pw_pool%create_pw(my_rho_r(ispin))
526 CALL pw_axpy(rho_r(1), my_rho_r(ispin), 0.5_dp, 0.0_dp)
528 IF (dft_control%use_kinetic_energy_density)
THEN
529 ALLOCATE (my_tau_r(2))
531 CALL auxbas_pw_pool%create_pw(my_tau_r(ispin))
532 CALL pw_axpy(tau_r(1), my_tau_r(ispin), 0.5_dp, 0.0_dp)
537 IF (dft_control%use_kinetic_energy_density)
THEN
542 IF (dft_control%do_admm)
THEN
543 xc_section => admm_env%xc_section_primary
545 xc_section => section_vals_get_subs_vals(input,
"DFT%XC")
548 ALLOCATE (kpp1_env%deriv_set, kpp1_env%rho_set)
549 CALL xc_prep_2nd_deriv(kpp1_env%deriv_set, kpp1_env%rho_set, &
550 my_rho_r, auxbas_pw_pool, &
551 xc_section=xc_section, tau_r=my_tau_r)
553 IF (nspins == 1 .AND. do_triplet)
THEN
554 DO ispin = 1,
SIZE(my_rho_r)
555 CALL my_rho_r(ispin)%release()
557 DEALLOCATE (my_rho_r)
558 IF (
ASSOCIATED(my_tau_r))
THEN
559 DO ispin = 1,
SIZE(my_tau_r)
560 CALL my_tau_r(ispin)%release()
562 DEALLOCATE (my_tau_r)
568 IF (dft_control%do_admm)
THEN
569 IF (admm_env%aux_exch_func /= do_admm_aux_exch_func_none)
THEN
570 IF (.NOT.
ASSOCIATED(kpp1_env%deriv_set_admm))
THEN
571 cpassert(.NOT. do_triplet)
572 admm_xc_section => admm_env%xc_section_aux
573 CALL get_admm_env(qs_env%admm_env, rho_aux_fit=rho)
574 CALL qs_rho_get(rho, rho_r=rho_r)
575 ALLOCATE (kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm)
576 CALL xc_prep_2nd_deriv(kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm, &
577 rho_r, auxbas_pw_pool, &
578 xc_section=admm_xc_section)
583 END SUBROUTINE kpp1_check_i_alloc
593 TYPE(qs_kpp1_env_type) :: kpp1_env
595 IF (
ASSOCIATED(kpp1_env%deriv_set))
THEN
596 CALL xc_dset_release(kpp1_env%deriv_set)
597 DEALLOCATE (kpp1_env%deriv_set)
598 NULLIFY (kpp1_env%deriv_set)
600 IF (
ASSOCIATED(kpp1_env%rho_set))
THEN
601 CALL xc_rho_set_release(kpp1_env%rho_set)
602 DEALLOCATE (kpp1_env%rho_set)
613 SUBROUTINE print_densities(rho1, rho1_tot_gspace, out_unit)
615 TYPE(qs_rho_type),
POINTER :: rho1
616 TYPE(pw_c1d_gs_type),
INTENT(IN) :: rho1_tot_gspace
619 REAL(kind=dp) :: total_rho_gspace
620 REAL(kind=dp),
DIMENSION(:),
POINTER :: tot_rho1_r
624 total_rho_gspace = pw_integrate_function(rho1_tot_gspace, isign=-1)
625 IF (out_unit > 0)
THEN
626 CALL qs_rho_get(rho1, tot_rho_r=tot_rho1_r)
627 WRITE (unit=out_unit, fmt=
"(T3,A,T60,F20.10)") &
628 "KPP1 total charge density (r-space):", &
629 accurate_sum(tot_rho1_r), &
630 "KPP1 total charge density (g-space):", &
634 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, 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, 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)
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.