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
109 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(INOUT) :: aop_evects
110 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(IN) :: evects, s_evects
113 TYPE(
dbcsr_p_type),
DIMENSION(:),
INTENT(in) :: matrix_ks
116 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_energy_diff'
118 INTEGER :: handle, ispin, ivect, nactive, nao, &
119 nspins, nvects, spin2
123 CALL timeset(routinen, handle)
125 nspins =
SIZE(evects, 1)
126 nvects =
SIZE(evects, 2)
128 DO ispin = 1,
SIZE(evects, 1)
129 CALL cp_fm_get_info(matrix=evects(ispin, 1), matrix_struct=matrix_struct, &
130 nrow_global=nao, ncol_global=nactive)
141 aop_evects(ispin, ivect), ncol=nactive, &
142 alpha=1.0_dp, beta=1.0_dp)
144 IF (
ASSOCIATED(gs_mos(ispin)%evals_occ_matrix))
THEN
146 CALL parallel_gemm(
'N',
'N', nao, nactive, nactive, 1.0_dp, &
147 s_evects(ispin, ivect), gs_mos(ispin)%evals_occ_matrix, &
160 CALL timestop(handle)
187 qs_env, sub_env, gapw, work_v_gspace, work_v_rspace, tddfpt_mgrid)
194 LOGICAL,
INTENT(IN) :: gapw
197 LOGICAL,
INTENT(IN) :: tddfpt_mgrid
199 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_coulomb'
201 INTEGER :: handle, ispin, nspins
202 REAL(kind=
dp) :: alpha, pair_energy
207 POINTER :: my_rs_descs
210 CALL timeset(routinen, handle)
212 nspins =
SIZE(a_ia_rspace)
213 pw_env => sub_env%pw_env
214 IF (tddfpt_mgrid)
THEN
215 CALL pw_env_get(pw_env, poisson_env=poisson_env, rs_grids=my_rs_grids, &
216 rs_descs=my_rs_descs, pw_pools=my_pools)
218 CALL pw_env_get(pw_env, poisson_env=poisson_env)
230 cpassert(
ASSOCIATED(local_rho_set))
231 CALL pw_axpy(local_rho_set%rho0_mpole%rho0_s_gs, rho_ia_g)
232 IF (
ASSOCIATED(local_rho_set%rho0_mpole%rhoz_cneo_s_gs))
THEN
233 CALL pw_axpy(local_rho_set%rho0_mpole%rhoz_cneo_s_gs, rho_ia_g)
244 CALL pw_axpy(work_v_rspace, a_ia_rspace(ispin), alpha)
249 hartree_local%ecoul_1c, &
251 sub_env%para_env, tddft=.true., core_2nd=.true.)
252 CALL pw_scale(work_v_rspace, work_v_rspace%pw_grid%dvol)
253 IF (tddfpt_mgrid)
THEN
255 calculate_forces=.false., &
256 local_rho_set=local_rho_set, my_pools=my_pools, &
257 my_rs_descs=my_rs_descs)
260 calculate_forces=.false., &
261 local_rho_set=local_rho_set)
265 CALL timestop(handle)
284 pw_env, work_v_xc, work_v_xc_tau, spinflip)
289 LOGICAL,
INTENT(in) :: is_rks_triplets
291 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: work_v_xc, work_v_xc_tau
292 INTEGER,
INTENT(in),
OPTIONAL :: spinflip
294 INTEGER :: ispin, my_spinflip, nspins
296 nspins =
SIZE(a_ia_rspace)
298 IF (
PRESENT(spinflip)) my_spinflip = spinflip
300 IF (kernel_env%deriv2_analytic)
THEN
301 CALL tddfpt_apply_xc_analytic(kernel_env, rho_ia_struct, is_rks_triplets, my_spinflip, &
302 nspins, pw_env, work_v_xc, work_v_xc_tau)
304 CALL tddfpt_apply_xc_fd(kernel_env, rho_ia_struct, is_rks_triplets, nspins, &
305 pw_env, work_v_xc, work_v_xc_tau)
310 CALL pw_axpy(work_v_xc(ispin), a_ia_rspace(ispin), kernel_env%alpha)
328 LOGICAL,
INTENT(in) :: is_rks_triplets
331 REAL(kind=
dp) :: alpha
334 nspins =
SIZE(a_ia_rspace)
340 IF (nspins == 2)
THEN
341 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(1), rho1_r(1), alpha)
342 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(2), rho1_r(2), alpha)
343 CALL pw_multiply(a_ia_rspace(2), fxc_rspace(3), rho1_r(2), alpha)
344 CALL pw_multiply(a_ia_rspace(2), fxc_rspace(2), rho1_r(1), alpha)
345 ELSE IF (is_rks_triplets)
THEN
346 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(1), rho1_r(1), alpha)
347 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(2), rho1_r(1), -alpha)
349 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(1), rho1_r(1), alpha)
350 CALL pw_multiply(a_ia_rspace(1), fxc_rspace(2), rho1_r(1), alpha)
376 SUBROUTINE tddfpt_apply_xc_analytic(kernel_env, rho_ia_struct, is_rks_triplets, spinflip, &
377 nspins, pw_env, work_v_xc, work_v_xc_tau)
380 LOGICAL,
INTENT(in) :: is_rks_triplets
381 INTEGER,
INTENT(in) :: spinflip, nspins
383 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: work_v_xc, work_v_xc_tau
385 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_xc_analytic'
387 INTEGER :: handle, ispin
388 LOGICAL :: do_spinflip
389 TYPE(
pw_c1d_gs_type),
DIMENSION(:),
POINTER :: rho_ia_g, rho_ia_g2
391 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho_ia_r, rho_ia_r2, tau_ia_r, tau_ia_r2
393 CALL timeset(routinen, handle)
395 CALL qs_rho_get(rho_ia_struct, rho_g=rho_ia_g, rho_r=rho_ia_r, tau_r=tau_ia_r)
396 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
398 IF (debug_this_module)
THEN
399 cpassert(
SIZE(rho_ia_g) == nspins)
400 cpassert(
SIZE(rho_ia_r) == nspins)
401 cpassert((.NOT.
ASSOCIATED(tau_ia_r)) .OR.
SIZE(tau_ia_r) == nspins)
402 cpassert((.NOT. is_rks_triplets) .OR. nspins == 1)
403 cpassert((spinflip .NE.
no_sf_tddfpt) .EQV. (nspins == 2))
409 do_spinflip = .false.
413 IF (is_rks_triplets)
THEN
414 ALLOCATE (rho_ia_r2(2))
415 ALLOCATE (rho_ia_g2(2))
416 rho_ia_r2(1) = rho_ia_r(1)
417 rho_ia_r2(2) = rho_ia_r(1)
418 rho_ia_g2(1) = rho_ia_g(1)
419 rho_ia_g2(2) = rho_ia_g(1)
421 IF (
ASSOCIATED(tau_ia_r))
THEN
422 ALLOCATE (tau_ia_r2(2))
423 tau_ia_r2(1) = tau_ia_r(1)
424 tau_ia_r2(2) = tau_ia_r(1)
427 rho_ia_r2 => rho_ia_r
428 rho_ia_g2 => rho_ia_g
430 tau_ia_r2 => tau_ia_r
435 IF (
ASSOCIATED(work_v_xc_tau))
CALL pw_zero(work_v_xc_tau(ispin))
438 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, &
439 needs=kernel_env%xc_rho1_cflags, xc_deriv_method_id=kernel_env%deriv_method_id, &
440 xc_rho_smooth_id=kernel_env%rho_smooth_id, pw_pool=auxbas_pw_pool)
443 rho_set=kernel_env%xc_rho_set, &
444 rho1_set=kernel_env%xc_rho1_set, pw_pool=auxbas_pw_pool, &
445 xc_section=kernel_env%xc_section, gapw=.false., tddfpt_fac=kernel_env%beta, &
446 spinflip=do_spinflip)
448 IF (is_rks_triplets)
THEN
449 DEALLOCATE (rho_ia_r2)
450 DEALLOCATE (rho_ia_g2)
451 IF (
ASSOCIATED(tau_ia_r2))
DEALLOCATE (tau_ia_r2)
454 CALL timestop(handle)
456 END SUBROUTINE tddfpt_apply_xc_analytic
470 SUBROUTINE tddfpt_apply_xc_fd(kernel_env, rho_ia_struct, is_rks_triplets, nspins, &
471 pw_env, work_v_xc, work_v_xc_tau)
474 LOGICAL,
INTENT(in) :: is_rks_triplets
475 INTEGER,
INTENT(in) :: nspins
477 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: work_v_xc, work_v_xc_tau
479 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_xc_fd'
481 INTEGER :: handle, ispin
482 LOGICAL :: lsd, singlet, triplet
488 CALL timeset(routinen, handle)
490 CALL qs_rho_get(rho_ia_struct, rho_r=rho1_r, rho_g=rho1_g, tau_r=tau1_r)
491 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
495 rho_set => kernel_env%xc_rho_set
500 IF (nspins == 1 .AND. .NOT. is_rks_triplets)
THEN
502 ELSE IF (nspins == 1 .AND. is_rks_triplets)
THEN
504 ELSE IF (nspins == 2)
THEN
507 cpabort(
"illegal options")
510 IF (
ASSOCIATED(tau1_r))
THEN
512 CALL pw_zero(work_v_xc_tau(ispin))
517 auxbas_pw_pool, kernel_env%xc_section, &
520 CALL timestop(handle)
522 END SUBROUTINE tddfpt_apply_xc_fd
545 work_rho_ia_ao_symm, work_hmat_symm, work_rho_ia_ao_asymm, &
546 work_hmat_asymm, wfm_rho_orb)
547 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(INOUT) :: aop_evects
548 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(IN) :: evects
551 LOGICAL,
INTENT(in) :: do_admm
553 TYPE(
dbcsr_p_type),
DIMENSION(:),
INTENT(INOUT) :: work_rho_ia_ao_symm
555 TARGET :: work_hmat_symm
556 TYPE(
dbcsr_p_type),
DIMENSION(:),
INTENT(INOUT) :: work_rho_ia_ao_asymm
558 TARGET :: work_hmat_asymm
561 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_hfx'
563 INTEGER :: handle, ispin, ivect, nao, nao_aux, &
565 INTEGER,
DIMENSION(maxspins) :: nactive
567 REAL(kind=
dp) :: alpha
571 CALL timeset(routinen, handle)
579 nspins =
SIZE(evects, 1)
580 nvects =
SIZE(evects, 2)
582 IF (
SIZE(gs_mos) > 1)
THEN
609 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp, evects(ispin, ivect), &
610 gs_mos(ispin)%mos_occ, 0.0_dp, wfm_rho_orb)
611 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp, gs_mos(ispin)%mos_occ, &
612 evects(ispin, ivect), 1.0_dp, wfm_rho_orb)
614 CALL dbcsr_set(work_hmat_symm(ispin)%matrix, 0.0_dp)
616 CALL parallel_gemm(
'N',
'N', nao_aux, nao, nao, 1.0_dp, admm_env%A, &
617 wfm_rho_orb, 0.0_dp, admm_env%work_aux_orb)
618 CALL parallel_gemm(
'N',
'T', nao_aux, nao_aux, nao, 1.0_dp, admm_env%work_aux_orb, admm_env%A, &
619 0.0_dp, admm_env%work_aux_aux)
620 CALL copy_fm_to_dbcsr(admm_env%work_aux_aux, work_rho_ia_ao_symm(ispin)%matrix, keep_sparsity=.true.)
622 CALL copy_fm_to_dbcsr(wfm_rho_orb, work_rho_ia_ao_symm(ispin)%matrix, keep_sparsity=.true.)
631 ncol=nao, alpha=1.0_dp, beta=0.0_dp)
633 CALL parallel_gemm(
'T',
'N', nao, nao, nao_aux, 1.0_dp, admm_env%A, &
634 admm_env%work_aux_orb, 0.0_dp, wfm_rho_orb)
636 CALL parallel_gemm(
'N',
'N', nao, nactive(ispin), nao, alpha, wfm_rho_orb, &
637 gs_mos(ispin)%mos_occ, 1.0_dp, aop_evects(ispin, ivect))
642 aop_evects(ispin, ivect), ncol=nactive(ispin), &
643 alpha=alpha, beta=1.0_dp)
651 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp, evects(ispin, ivect), &
652 gs_mos(ispin)%mos_occ, 0.0_dp, wfm_rho_orb)
653 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), -0.5_dp, gs_mos(ispin)%mos_occ, &
654 evects(ispin, ivect), 1.0_dp, wfm_rho_orb)
656 CALL dbcsr_set(work_hmat_asymm(ispin)%matrix, 0.0_dp)
658 CALL parallel_gemm(
'N',
'N', nao_aux, nao, nao, 1.0_dp, admm_env%A, &
659 wfm_rho_orb, 0.0_dp, admm_env%work_aux_orb)
660 CALL parallel_gemm(
'N',
'T', nao_aux, nao_aux, nao, 1.0_dp, admm_env%work_aux_orb, admm_env%A, &
661 0.0_dp, admm_env%work_aux_aux)
662 CALL copy_fm_to_dbcsr(admm_env%work_aux_aux, work_rho_ia_ao_asymm(ispin)%matrix, keep_sparsity=.true.)
664 CALL copy_fm_to_dbcsr(wfm_rho_orb, work_rho_ia_ao_asymm(ispin)%matrix, keep_sparsity=.true.)
673 ncol=nao, alpha=1.0_dp, beta=0.0_dp)
675 CALL parallel_gemm(
'T',
'N', nao, nao, nao_aux, 1.0_dp, admm_env%A, &
676 admm_env%work_aux_orb, 0.0_dp, wfm_rho_orb)
678 CALL parallel_gemm(
'N',
'N', nao, nactive(ispin), nao, alpha, wfm_rho_orb, &
679 gs_mos(ispin)%mos_occ, 1.0_dp, aop_evects(ispin, ivect))
684 aop_evects(ispin, ivect), ncol=nactive(ispin), &
685 alpha=alpha, beta=1.0_dp)
691 CALL timestop(handle)
712 hfx_section, x_data, symmetry, recalc_integrals, &
713 work_rho_ia_ao, work_hmat, wfm_rho_orb)
714 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(in) :: aop_evects, evects
720 TYPE(
hfx_type),
DIMENSION(:, :),
POINTER :: x_data
721 INTEGER,
INTENT(IN) :: symmetry
722 LOGICAL,
INTENT(IN) :: recalc_integrals
723 TYPE(
dbcsr_p_type),
DIMENSION(:),
INTENT(INOUT) :: work_rho_ia_ao
728 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_hfxsr_kernel'
730 INTEGER :: handle, ispin, ivect, nao, nao_aux, &
732 INTEGER,
DIMENSION(maxspins) :: nactive
734 REAL(kind=
dp) :: alpha
736 CALL timeset(routinen, handle)
738 nspins =
SIZE(evects, 1)
739 nvects =
SIZE(evects, 2)
742 IF (nspins > 1) alpha = 1.0_dp
750 reint = recalc_integrals
754 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp, evects(ispin, ivect), &
755 gs_mos(ispin)%mos_occ, 0.0_dp, wfm_rho_orb)
756 CALL parallel_gemm(
'N',
'T', nao, nao, nactive(ispin), 0.5_dp*symmetry, gs_mos(ispin)%mos_occ, &
757 evects(ispin, ivect), 1.0_dp, wfm_rho_orb)
758 CALL dbcsr_set(work_hmat(ispin)%matrix, 0.0_dp)
759 CALL parallel_gemm(
'N',
'N', nao_aux, nao, nao, 1.0_dp, admm_env%A, &
760 wfm_rho_orb, 0.0_dp, admm_env%work_aux_orb)
761 CALL parallel_gemm(
'N',
'T', nao_aux, nao_aux, nao, 1.0_dp, admm_env%work_aux_orb, admm_env%A, &
762 0.0_dp, admm_env%work_aux_aux)
763 CALL copy_fm_to_dbcsr(admm_env%work_aux_aux, work_rho_ia_ao(ispin)%matrix, keep_sparsity=.true.)
766 CALL tddft_hfx_matrix(work_hmat, work_rho_ia_ao, qs_env, .false., reint, hfx_section, x_data)
771 ncol=nao, alpha=1.0_dp, beta=0.0_dp)
772 CALL parallel_gemm(
'T',
'N', nao, nao, nao_aux, 1.0_dp, admm_env%A, &
773 admm_env%work_aux_orb, 0.0_dp, wfm_rho_orb)
774 CALL parallel_gemm(
'N',
'N', nao, nactive(ispin), nao, alpha, wfm_rho_orb, &
775 gs_mos(ispin)%mos_occ, 1.0_dp, aop_evects(ispin, ivect))
779 CALL timestop(handle)
799 REAL(kind=
dp),
INTENT(IN) :: rcut, hfx_scale
801 TYPE(
cp_fm_type),
DIMENSION(:),
INTENT(IN) :: x
802 TYPE(
cp_fm_type),
DIMENSION(:),
INTENT(INOUT) :: res
804 CHARACTER(len=*),
PARAMETER :: routinen =
'tddfpt_apply_hfxlr_kernel'
806 INTEGER :: handle, iatom, ispin, jatom, natom, &
808 INTEGER,
DIMENSION(2) :: nactive
809 REAL(kind=
dp) :: dr, eps_filter, fcut, gabr
810 REAL(kind=
dp),
DIMENSION(3) :: rij
811 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pblock
815 TYPE(
cp_fm_type),
ALLOCATABLE,
DIMENSION(:) :: xtransformed
823 CALL timeset(routinen, handle)
826 eps_filter = 1.e-08_dp
833 para_env => sub_env%para_env
835 CALL get_qs_env(qs_env, natom=natom, cell=cell, particle_set=particle_set)
839 ALLOCATE (xtransformed(nspins))
842 ct => work%ctransformed(ispin)
844 CALL cp_fm_create(matrix=xtransformed(ispin), matrix_struct=fmstruct, name=
"XTRANSFORMED")
849 ct => work%ctransformed(ispin)
853 tempmat => work%shalf
854 CALL dbcsr_create(pdens, template=tempmat, matrix_type=dbcsr_type_no_symmetry)
856 ct => work%ctransformed(ispin)
859 1.0_dp, keep_sparsity=.false.)
866 rij = particle_set(iatom)%r - particle_set(jatom)%r
868 dr = sqrt(sum(rij(:)**2))
871 gabr = 2._dp*gabr/sqrt(3.1415926_dp)
873 gabr = erf(gabr*dr)/dr
874 fcut = exp(dr - 4._dp*rcut)
875 fcut = fcut/(fcut + 1._dp)
877 pblock = hfx_scale*gabr*pblock
893 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)
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, 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 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_xc(a_ia_rspace, kernel_env, rho_ia_struct, is_rks_triplets, pw_env, work_v_xc, work_v_xc_tau, spinflip)
Driver routine for applying fxc (analyic vs. finite difference for testing.
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_potential(a_ia_rspace, fxc_rspace, rho_ia_struct, is_rks_triplets)
Routine for applying fxc potential.
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, 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