71#include "./base/base_uses.f90"
77 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_tddfpt2_operators'
79 LOGICAL,
PARAMETER,
PRIVATE :: debug_this_module = .false.
81 INTEGER,
PARAMETER,
PRIVATE :: nderivs = 3
82 INTEGER,
PARAMETER,
PRIVATE :: maxspins = 2
110 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(INOUT) :: aop_evects
111 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(IN) :: evects, s_evects
114 TYPE(
dbcsr_p_type),
DIMENSION(:),
INTENT(in) :: matrix_ks
117 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_energy_diff'
119 INTEGER :: handle, i, ispin, ivect, j, nactive, &
120 nao, nspins, nvects, spin2
121 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: evals_active
125 CALL timeset(routinen, handle)
127 nspins =
SIZE(evects, 1)
128 nvects =
SIZE(evects, 2)
130 DO ispin = 1,
SIZE(evects, 1)
131 CALL cp_fm_get_info(matrix=evects(ispin, 1), matrix_struct=matrix_struct, &
132 nrow_global=nao, ncol_global=nactive)
134 ALLOCATE (evals_active(nactive))
136 j = gs_mos(ispin)%index_active(i)
137 evals_active(i) = gs_mos(ispin)%evals_occ(j)
148 aop_evects(ispin, ivect), ncol=nactive, &
149 alpha=1.0_dp, beta=1.0_dp)
151 IF (
ASSOCIATED(gs_mos(ispin)%evals_occ_matrix))
THEN
153 CALL parallel_gemm(
'N',
'N', nao, nactive, nactive, 1.0_dp, &
154 s_evects(ispin, ivect), gs_mos(ispin)%evals_occ_matrix, &
164 DEALLOCATE (evals_active)
168 CALL timestop(handle)
195 qs_env, sub_env, gapw, work_v_gspace, work_v_rspace, tddfpt_mgrid)
202 LOGICAL,
INTENT(IN) :: gapw
205 LOGICAL,
INTENT(IN) :: tddfpt_mgrid
207 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_coulomb'
209 INTEGER :: handle, ispin, nspins
210 REAL(kind=
dp) :: alpha, pair_energy
215 POINTER :: my_rs_descs
218 CALL timeset(routinen, handle)
220 nspins =
SIZE(a_ia_rspace)
221 pw_env => sub_env%pw_env
222 IF (tddfpt_mgrid)
THEN
223 CALL pw_env_get(pw_env, poisson_env=poisson_env, rs_grids=my_rs_grids, &
224 rs_descs=my_rs_descs, pw_pools=my_pools)
226 CALL pw_env_get(pw_env, poisson_env=poisson_env)
238 cpassert(
ASSOCIATED(local_rho_set))
239 CALL pw_axpy(local_rho_set%rho0_mpole%rho0_s_gs, rho_ia_g)
240 IF (
ASSOCIATED(local_rho_set%rho0_mpole%rhoz_cneo_s_gs))
THEN
241 CALL pw_axpy(local_rho_set%rho0_mpole%rhoz_cneo_s_gs, rho_ia_g)
252 CALL pw_axpy(work_v_rspace, a_ia_rspace(ispin), alpha)
257 hartree_local%ecoul_1c, &
259 sub_env%para_env, tddft=.true., core_2nd=.true.)
260 CALL pw_scale(work_v_rspace, work_v_rspace%pw_grid%dvol)
261 IF (tddfpt_mgrid)
THEN
263 calculate_forces=.false., &
264 local_rho_set=local_rho_set, my_pools=my_pools, &
265 my_rs_descs=my_rs_descs)
268 calculate_forces=.false., &
269 local_rho_set=local_rho_set)
273 CALL timestop(handle)
293 pw_env, weights, work_v_xc, work_v_xc_tau, spinflip)
298 LOGICAL,
INTENT(in) :: is_rks_triplets
301 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: work_v_xc, work_v_xc_tau
302 INTEGER,
INTENT(in),
OPTIONAL :: spinflip
304 INTEGER :: ispin, my_spinflip, nspins
306 nspins =
SIZE(a_ia_rspace)
308 IF (
PRESENT(spinflip)) my_spinflip = spinflip
310 IF (kernel_env%deriv2_analytic)
THEN
311 CALL tddfpt_apply_xc_analytic(kernel_env, rho_ia_struct, is_rks_triplets, my_spinflip, &
312 nspins, pw_env, work_v_xc, work_v_xc_tau)
314 CALL tddfpt_apply_xc_fd(kernel_env%xc_rho_set, rho_ia_struct, is_rks_triplets, nspins, &
315 pw_env, kernel_env%xc_section, weights, work_v_xc, work_v_xc_tau)
320 CALL pw_axpy(work_v_xc(ispin), a_ia_rspace(ispin), kernel_env%alpha)
338 LOGICAL,
INTENT(in) :: is_rks_triplets
341 REAL(kind=
dp) :: alpha
344 nspins =
SIZE(a_ia_rspace)
350 IF (nspins == 2)
THEN
351 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(1), rho1_r(1), alpha)
352 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(2), rho1_r(2), alpha)
353 CALL pw_multiply(a_ia_rspace(2), fxc_rspace(3), rho1_r(2), alpha)
354 CALL pw_multiply(a_ia_rspace(2), fxc_rspace(2), rho1_r(1), alpha)
355 ELSE IF (is_rks_triplets)
THEN
356 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(1), rho1_r(1), alpha)
357 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(2), rho1_r(1), -alpha)
359 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(1), rho1_r(1), alpha)
360 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(2), rho1_r(1), alpha)
386 SUBROUTINE tddfpt_apply_xc_analytic(kernel_env, rho_ia_struct, is_rks_triplets, spinflip, &
387 nspins, pw_env, work_v_xc, work_v_xc_tau)
390 LOGICAL,
INTENT(in) :: is_rks_triplets
391 INTEGER,
INTENT(in) :: spinflip, nspins
393 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: work_v_xc, work_v_xc_tau
395 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_xc_analytic'
397 INTEGER :: handle, ispin
398 LOGICAL :: do_spinflip
399 TYPE(
pw_c1d_gs_type),
DIMENSION(:),
POINTER :: rho_ia_g, rho_ia_g2
401 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho_ia_r, rho_ia_r2, tau_ia_r, tau_ia_r2
403 CALL timeset(routinen, handle)
405 CALL qs_rho_get(rho_ia_struct, rho_g=rho_ia_g, rho_r=rho_ia_r, tau_r=tau_ia_r)
406 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
408 IF (debug_this_module)
THEN
409 cpassert(
SIZE(rho_ia_g) == nspins)
410 cpassert(
SIZE(rho_ia_r) == nspins)
411 cpassert((.NOT.
ASSOCIATED(tau_ia_r)) .OR.
SIZE(tau_ia_r) == nspins)
412 cpassert((.NOT. is_rks_triplets) .OR. nspins == 1)
413 cpassert((spinflip /=
no_sf_tddfpt) .EQV. (nspins == 2))
419 do_spinflip = .false.
423 IF (is_rks_triplets)
THEN
424 ALLOCATE (rho_ia_r2(2))
425 ALLOCATE (rho_ia_g2(2))
426 rho_ia_r2(1) = rho_ia_r(1)
427 rho_ia_r2(2) = rho_ia_r(1)
428 rho_ia_g2(1) = rho_ia_g(1)
429 rho_ia_g2(2) = rho_ia_g(1)
431 IF (
ASSOCIATED(tau_ia_r))
THEN
432 ALLOCATE (tau_ia_r2(2))
433 tau_ia_r2(1) = tau_ia_r(1)
434 tau_ia_r2(2) = tau_ia_r(1)
437 rho_ia_r2 => rho_ia_r
438 rho_ia_g2 => rho_ia_g
440 tau_ia_r2 => tau_ia_r
445 IF (
ASSOCIATED(work_v_xc_tau))
CALL pw_zero(work_v_xc_tau(ispin))
448 CALL xc_rho_set_update(rho_set=kernel_env%xc_rho1_set, rho_r=rho_ia_r2, rho_g=rho_ia_g2, tau=tau_ia_r2, &
449 needs=kernel_env%xc_rho1_cflags, xc_deriv_method_id=kernel_env%deriv_method_id, &
450 xc_rho_smooth_id=kernel_env%rho_smooth_id, pw_pool=auxbas_pw_pool)
453 rho_set=kernel_env%xc_rho_set, &
454 rho1_set=kernel_env%xc_rho1_set, pw_pool=auxbas_pw_pool, &
455 xc_section=kernel_env%xc_section, gapw=.false., tddfpt_fac=kernel_env%beta, &
456 spinflip=do_spinflip)
458 IF (is_rks_triplets)
THEN
459 DEALLOCATE (rho_ia_r2)
460 DEALLOCATE (rho_ia_g2)
461 IF (
ASSOCIATED(tau_ia_r2))
DEALLOCATE (tau_ia_r2)
464 CALL timestop(handle)
466 END SUBROUTINE tddfpt_apply_xc_analytic
483 pw_env, xc_section, weights, f_xc, f_xc_tau)
486 LOGICAL,
INTENT(in) :: is_rks_triplets
487 INTEGER,
INTENT(in) :: nspins
493 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_xc_fd'
495 INTEGER :: handle, ispin
500 CALL timeset(routinen, handle)
502 CALL qs_rho_get(rho1_struct, rho_r=rho1_r, rho_g=rho1_g, tau_r=tau1_r)
503 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
508 IF (
ASSOCIATED(tau1_r))
THEN
515 auxbas_pw_pool, weights, xc_section, is_rks_triplets)
517 CALL timestop(handle)
542 work_rho_ia_ao_symm, work_hmat_symm, work_rho_ia_ao_asymm, &
543 work_hmat_asymm, wfm_rho_orb)
544 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(INOUT) :: aop_evects
545 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(IN) :: evects
548 LOGICAL,
INTENT(in) :: do_admm
550 TYPE(
dbcsr_p_type),
DIMENSION(:),
INTENT(INOUT) :: work_rho_ia_ao_symm
552 TARGET :: work_hmat_symm
553 TYPE(
dbcsr_p_type),
DIMENSION(:),
INTENT(INOUT) :: work_rho_ia_ao_asymm
555 TARGET :: work_hmat_asymm
558 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_hfx'
560 INTEGER :: handle, ispin, ivect, nao, nao_aux, &
562 INTEGER,
DIMENSION(maxspins) :: nactive
564 REAL(kind=
dp) :: alpha
568 CALL timeset(routinen, handle)
576 nspins =
SIZE(evects, 1)
577 nvects =
SIZE(evects, 2)
579 IF (
SIZE(gs_mos) > 1)
THEN
606 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp, evects(ispin, ivect), &
607 gs_mos(ispin)%mos_active, 0.0_dp, wfm_rho_orb)
608 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp, gs_mos(ispin)%mos_active, &
609 evects(ispin, ivect), 1.0_dp, wfm_rho_orb)
611 CALL dbcsr_set(work_hmat_symm(ispin)%matrix, 0.0_dp)
613 CALL parallel_gemm(
'N',
'N', nao_aux, nao, nao, 1.0_dp, admm_env%A, &
614 wfm_rho_orb, 0.0_dp, admm_env%work_aux_orb)
615 CALL parallel_gemm(
'N',
'T', nao_aux, nao_aux, nao, 1.0_dp, admm_env%work_aux_orb, admm_env%A, &
616 0.0_dp, admm_env%work_aux_aux)
617 CALL copy_fm_to_dbcsr(admm_env%work_aux_aux, work_rho_ia_ao_symm(ispin)%matrix, keep_sparsity=.true.)
619 CALL copy_fm_to_dbcsr(wfm_rho_orb, work_rho_ia_ao_symm(ispin)%matrix, keep_sparsity=.true.)
628 ncol=nao, alpha=1.0_dp, beta=0.0_dp)
630 CALL parallel_gemm(
'T',
'N', nao, nao, nao_aux, 1.0_dp, admm_env%A, &
631 admm_env%work_aux_orb, 0.0_dp, wfm_rho_orb)
633 CALL parallel_gemm(
'N',
'N', nao, nactive(ispin), nao, alpha, wfm_rho_orb, &
634 gs_mos(ispin)%mos_active, 1.0_dp, aop_evects(ispin, ivect))
639 aop_evects(ispin, ivect), ncol=nactive(ispin), &
640 alpha=alpha, beta=1.0_dp)
648 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp, evects(ispin, ivect), &
649 gs_mos(ispin)%mos_active, 0.0_dp, wfm_rho_orb)
650 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), -0.5_dp, gs_mos(ispin)%mos_active, &
651 evects(ispin, ivect), 1.0_dp, wfm_rho_orb)
653 CALL dbcsr_set(work_hmat_asymm(ispin)%matrix, 0.0_dp)
655 CALL parallel_gemm(
'N',
'N', nao_aux, nao, nao, 1.0_dp, admm_env%A, &
656 wfm_rho_orb, 0.0_dp, admm_env%work_aux_orb)
657 CALL parallel_gemm(
'N',
'T', nao_aux, nao_aux, nao, 1.0_dp, admm_env%work_aux_orb, admm_env%A, &
658 0.0_dp, admm_env%work_aux_aux)
659 CALL copy_fm_to_dbcsr(admm_env%work_aux_aux, work_rho_ia_ao_asymm(ispin)%matrix, keep_sparsity=.true.)
661 CALL copy_fm_to_dbcsr(wfm_rho_orb, work_rho_ia_ao_asymm(ispin)%matrix, keep_sparsity=.true.)
670 ncol=nao, alpha=1.0_dp, beta=0.0_dp)
672 CALL parallel_gemm(
'T',
'N', nao, nao, nao_aux, 1.0_dp, admm_env%A, &
673 admm_env%work_aux_orb, 0.0_dp, wfm_rho_orb)
675 CALL parallel_gemm(
'N',
'N', nao, nactive(ispin), nao, alpha, wfm_rho_orb, &
676 gs_mos(ispin)%mos_active, 1.0_dp, aop_evects(ispin, ivect))
681 aop_evects(ispin, ivect), ncol=nactive(ispin), &
682 alpha=alpha, beta=1.0_dp)
688 CALL timestop(handle)
709 hfx_section, x_data, symmetry, recalc_integrals, &
710 work_rho_ia_ao, work_hmat, wfm_rho_orb)
711 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(in) :: aop_evects, evects
717 TYPE(
hfx_type),
DIMENSION(:, :),
POINTER :: x_data
718 INTEGER,
INTENT(IN) :: symmetry
719 LOGICAL,
INTENT(IN) :: recalc_integrals
720 TYPE(
dbcsr_p_type),
DIMENSION(:),
INTENT(INOUT) :: work_rho_ia_ao
725 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_hfxsr_kernel'
727 INTEGER :: handle, ispin, ivect, nao, nao_aux, &
729 INTEGER,
DIMENSION(maxspins) :: nactive
731 REAL(kind=
dp) :: alpha
733 CALL timeset(routinen, handle)
735 nspins =
SIZE(evects, 1)
736 nvects =
SIZE(evects, 2)
739 IF (nspins > 1) alpha = 1.0_dp
747 reint = recalc_integrals
751 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp, evects(ispin, ivect), &
752 gs_mos(ispin)%mos_active, 0.0_dp, wfm_rho_orb)
753 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp*symmetry, gs_mos(ispin)%mos_active, &
754 evects(ispin, ivect), 1.0_dp, wfm_rho_orb)
755 CALL dbcsr_set(work_hmat(ispin)%matrix, 0.0_dp)
756 CALL parallel_gemm(
'N',
'N', nao_aux, nao, nao, 1.0_dp, admm_env%A, &
757 wfm_rho_orb, 0.0_dp, admm_env%work_aux_orb)
758 CALL parallel_gemm(
'N',
'T', nao_aux, nao_aux, nao, 1.0_dp, admm_env%work_aux_orb, admm_env%A, &
759 0.0_dp, admm_env%work_aux_aux)
760 CALL copy_fm_to_dbcsr(admm_env%work_aux_aux, work_rho_ia_ao(ispin)%matrix, keep_sparsity=.true.)
763 CALL tddft_hfx_matrix(work_hmat, work_rho_ia_ao, qs_env, .false., reint, hfx_section, x_data)
768 ncol=nao, alpha=1.0_dp, beta=0.0_dp)
769 CALL parallel_gemm(
'T',
'N', nao, nao, nao_aux, 1.0_dp, admm_env%A, &
770 admm_env%work_aux_orb, 0.0_dp, wfm_rho_orb)
771 CALL parallel_gemm(
'N',
'N', nao, nactive(ispin), nao, alpha, wfm_rho_orb, &
772 gs_mos(ispin)%mos_active, 1.0_dp, aop_evects(ispin, ivect))
776 CALL timestop(handle)
796 REAL(kind=
dp),
INTENT(IN) :: rcut, hfx_scale
798 TYPE(
cp_fm_type),
DIMENSION(:),
INTENT(IN) :: x
799 TYPE(
cp_fm_type),
DIMENSION(:),
INTENT(INOUT) :: res
801 CHARACTER(len=*),
PARAMETER :: routinen =
'tddfpt_apply_hfxlr_kernel'
803 INTEGER :: handle, iatom, ispin, jatom, natom, &
805 INTEGER,
DIMENSION(2) :: nactive
806 REAL(kind=
dp) :: dr, eps_filter, fcut, gabr
807 REAL(kind=
dp),
DIMENSION(3) :: rij
808 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pblock
812 TYPE(
cp_fm_type),
ALLOCATABLE,
DIMENSION(:) :: xtransformed
820 CALL timeset(routinen, handle)
823 eps_filter = 1.e-08_dp
830 para_env => sub_env%para_env
832 CALL get_qs_env(qs_env, natom=natom, cell=cell, particle_set=particle_set)
836 ALLOCATE (xtransformed(nspins))
839 ct => work%ctransformed(ispin)
841 CALL cp_fm_create(matrix=xtransformed(ispin), matrix_struct=fmstruct, name=
"XTRANSFORMED")
846 ct => work%ctransformed(ispin)
850 tempmat => work%shalf
851 CALL dbcsr_create(pdens, template=tempmat, matrix_type=dbcsr_type_no_symmetry)
853 ct => work%ctransformed(ispin)
856 1.0_dp, keep_sparsity=.false.)
863 rij = particle_set(iatom)%r - particle_set(jatom)%r
865 dr = sqrt(sum(rij(:)**2))
868 gabr = 2._dp*gabr/sqrt(3.1415926_dp)
870 gabr = erf(gabr*dr)/dr
871 fcut = exp(dr - 4._dp*rcut)
872 fcut = fcut/(fcut + 1._dp)
874 pblock = hfx_scale*gabr*pblock
890 CALL timestop(handle)
Types and set/get functions for auxiliary density matrix methods.
Handles all functions related to the CELL.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_iterator_next_block(iterator, row, column, block, block_number_argument_has_been_removed, row_size, col_size, row_offset, col_offset)
...
logical function, public dbcsr_iterator_blocks_left(iterator)
...
subroutine, public dbcsr_iterator_stop(iterator)
...
subroutine, public dbcsr_filter(matrix, eps)
...
subroutine, public dbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows)
...
subroutine, public dbcsr_set(matrix, alpha)
...
subroutine, public dbcsr_release(matrix)
...
DBCSR operations in CP2K.
subroutine, public cp_dbcsr_sm_fm_multiply(matrix, fm_in, fm_out, ncol, alpha, beta)
multiply a dbcsr with a fm matrix
subroutine, public cp_dbcsr_plus_fm_fm_t(sparse_matrix, matrix_v, matrix_g, ncol, alpha, keep_sparsity, symmetry_mode)
performs the multiplication sparse_matrix+dense_mat*dens_mat^T if matrix_g is not explicitly given,...
subroutine, public copy_fm_to_dbcsr(fm, matrix, keep_sparsity)
Copy a BLACS matrix to a dbcsr matrix.
Basic linear algebra operations for full matrices.
subroutine, public cp_fm_column_scale(matrixa, scaling)
scales column i of matrix a with scaling(i)
subroutine, public cp_fm_scale_and_add(alpha, matrix_a, beta, matrix_b)
calc A <- alpha*A + beta*B optimized for alpha == 1.0 (just add beta*B) and beta == 0....
represent the structure of a full matrix
represent a full matrix distributed on many processors
subroutine, public cp_fm_get_info(matrix, name, nrow_global, ncol_global, nrow_block, ncol_block, nrow_local, ncol_local, row_indices, col_indices, local_data, context, nrow_locals, ncol_locals, matrix_struct, para_env)
returns all kind of information about the full matrix
subroutine, public cp_fm_create(matrix, matrix_struct, name, use_sp, nrow, ncol, set_zero)
creates a new full matrix with the given structure
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...
Utilities for hfx and admm methods.
subroutine, public tddft_hfx_matrix(matrix_ks, rho_ao, qs_env, update_energy, recalc_integrals, external_hfx_sections, external_x_data, external_para_env)
Add the hfx contributions to the Hamiltonian.
Types and set/get functions for HFX.
Defines the basic variable types.
integer, parameter, public dp
Interface to the message passing library MPI.
basic linear algebra operations for full matrixes
Define the data structure for the particle information.
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 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...
subroutine, public tddfpt_apply_hfx(aop_evects, evects, gs_mos, do_admm, qs_env, work_rho_ia_ao_symm, work_hmat_symm, work_rho_ia_ao_asymm, work_hmat_asymm, wfm_rho_orb)
Update action of TDDFPT operator on trial vectors by adding exact-exchange term.
subroutine, public tddfpt_apply_coulomb(a_ia_rspace, rho_ia_g, local_rho_set, hartree_local, qs_env, sub_env, gapw, work_v_gspace, work_v_rspace, tddfpt_mgrid)
Update v_rspace by adding coulomb term.
subroutine, public tddfpt_apply_energy_diff(aop_evects, evects, s_evects, gs_mos, matrix_ks, tddfpt_control)
Apply orbital energy difference term: Aop_evects(spin,state) += KS(spin) * evects(spin,...
subroutine, public tddfpt_apply_hfxlr_kernel(qs_env, sub_env, rcut, hfx_scale, work, x, res)
...Calculate the HFXLR kernel contribution by contracting the Lowdin MO coefficients – transition cha...
subroutine, public tddfpt_apply_hfxsr_kernel(aop_evects, evects, gs_mos, qs_env, admm_env, hfx_section, x_data, symmetry, recalc_integrals, work_rho_ia_ao, work_hmat, wfm_rho_orb)
Update action of TDDFPT operator on trial vectors by adding exact-exchange term.
subroutine, public tddfpt_apply_xc(a_ia_rspace, kernel_env, rho_ia_struct, is_rks_triplets, pw_env, weights, work_v_xc, work_v_xc_tau, spinflip)
Driver routine for applying fxc (analyic vs. finite difference for testing.
subroutine, public tddfpt_apply_xc_potential(a_ia_rspace, fxc_rspace, rho_ia_struct, is_rks_triplets)
Routine for applying fxc potential.
subroutine, public tddfpt_apply_xc_fd(rho_set, rho1_struct, is_rks_triplets, nspins, pw_env, xc_section, weights, f_xc, f_xc_tau)
Update A_ia_munu by adding exchange-correlation term using finite difference methods.
Simplified Tamm Dancoff approach (sTDA).
subroutine, public get_lowdin_x(shalf, xvec, xt)
Calculate Lowdin transformed Davidson trial vector X shalf (dbcsr), xvec, xt (fm) are defined in the ...
subroutine, public xc_rho_set_update(rho_set, rho_r, rho_g, tau, needs, xc_deriv_method_id, xc_rho_smooth_id, pw_pool, spinflip)
updates the given rho set with the density given by rho_r (and rho_g). The rho set will contain the c...
Exchange and Correlation functional calculations.
subroutine, public xc_calc_2nd_deriv_analytical(v_xc, v_xc_tau, deriv_set, rho_set, rho1_set, pw_pool, xc_section, gapw, vxg, tddfpt_fac, compute_virial, virial_xc, spinflip)
Calculates the second derivative of E_xc at rho in the direction rho1 (if you see the second derivati...
subroutine, public xc_calc_2nd_deriv_numerical(v_xc, v_tau, rho_set, rho1_r, rho1_g, tau1_r, pw_pool, weights, xc_section, do_triplet, calc_virial, virial_xc, deriv_set)
calculates 2nd derivative numerically
stores some data used in wavefunction fitting
Type defining parameters related to the simulation cell.
keeps the information about the structure of a full matrix
stores some data used in construction of Kohn-Sham matrix
stores all the informations relevant to an mpi environment
contained for different pw related things
environment for the poisson solver
to create arrays of pools
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
Collection of variables required to evaluate adiabatic TDDFPT kernel.
keeps the density in various representations, keeping track of which ones are valid.
Parallel (sub)group environment.
Ground state molecular orbitals.
Set of temporary ("work") matrices.
represent a density, with all the representation and data needed to perform a functional evaluation