56#include "../base/base_uses.f90"
62 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
"rt_bse"
139 INTEGER :: n_spin = 1, &
142 INTEGER,
DIMENSION(2) :: n_occ = -1
143 REAL(kind=
dp) :: spin_degeneracy = 2
144 REAL(kind=
dp),
DIMENSION(3) :: field = 0.0_dp
145 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: moments => null(), &
146 moments_field => null()
147 INTEGER :: sim_step = 0, &
150 sim_start_orig = 0, &
155 REAL(kind=
dp),
DIMENSION(:),
POINTER :: user_moment_ref_point => null()
156 REAL(kind=
dp) :: sim_time = 0.0_dp, &
158 etrs_threshold = 1.0e-7_dp, &
159 exp_accuracy = 1.0e-10_dp, &
160 ft_damping = 0.0_dp, &
163 INTEGER,
DIMENSION(:, :),
POINTER :: pol_elements => null()
170 field_section => null(), &
171 rho_section => null(), &
172 ft_section => null(), &
173 pol_section => null(), &
174 moments_section => null(), &
175 rtp_section => null()
176 LOGICAL :: restart_extracted = .false.
179 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: ham_effective => null()
180 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: ham_reference => null()
181 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: ham_workspace => null()
183 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: sigma_coh => null(), &
184 hartree_curr => null()
188 rho_new_last => null(), &
198 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: rho_workspace => null()
200 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: real_workspace => null()
202 REAL(kind=
dp),
DIMENSION(:),
POINTER :: real_eigvals => null()
203 COMPLEX(kind=dp),
DIMENSION(:),
POINTER :: exp_eigvals => null()
207 COMPLEX(kind=dp),
DIMENSION(:, :, :),
POINTER :: moments_trace => null()
208 REAL(kind=
dp),
DIMENSION(:),
POINTER :: time_trace => null()
210 COMPLEX(kind=dp),
DIMENSION(:, :),
POINTER :: field_trace => null()
214#if defined(FTN_NO_DEFAULT_INIT)
215 TYPE(dbt_type) :: screened_dbt, &
218 t_3c_work_ri_ao__ao, &
221 TYPE(dbt_type) :: screened_dbt = dbt_type(), &
222 greens_dbt = dbt_type(), &
223 t_3c_w = dbt_type(), &
224 t_3c_work_ri_ao__ao = dbt_type(), &
225 t_3c_work2_ri_ao__ao = dbt_type()
228 INTEGER :: etrs_max_iter = 10
229 INTEGER :: ham_reference_type = 2
230 INTEGER :: mat_exp_method = 4
231 INTEGER :: unit_nr = -1
232 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: int_3c_array => null()
234 REAL(kind=
dp) :: pade_e_min = 0.0_dp, &
235 pade_e_max = 100.0_dp, &
236 pade_e_step = 0.05_dp, &
237 pade_fit_e_min = 0.0_dp, &
238 pade_fit_e_max = -1.0_dp
239 INTEGER :: pade_npoints = 0
240 LOGICAL :: pade_requested = .false.
241 COMPLEX(kind=dp),
DIMENSION(:),
POINTER :: pade_x_eval => null()
274 dft_control=rtbse_env%dft_control, &
277 IF (.NOT.
ASSOCIATED(bs_env))
THEN
278 cpabort(
"Cannot run RT-BSE without running GW calculation (PROPERTIES) before")
281 rtbse_env%n_spin = bs_env%n_spin
283 rtbse_env%n_ao = bs_env%n_ao
285 rtbse_env%n_RI = bs_env%n_RI
287 rtbse_env%n_occ(:) = bs_env%n_occ(:)
289 rtbse_env%spin_degeneracy = bs_env%spin_degeneracy
291 rtbse_env%field(:) = 0.0_dp
293 rtbse_env%sim_step = 0
294 rtbse_env%sim_time = 0
300 rtbse_env%etrs_threshold = rtbse_env%dft_control%rtp_control%eps_ener
301 rtbse_env%exp_accuracy = rtbse_env%dft_control%rtp_control%eps_exp
304 i_val=rtbse_env%ham_reference_type)
306 i_val=rtbse_env%etrs_max_iter)
308 i_val=rtbse_env%mat_exp_method)
310 rtbse_env%unit_nr = bs_env%unit_nr
314 rtbse_env%sim_start_orig = rtbse_env%sim_start
317 rtbse_env%ft_damping = rtbse_env%dft_control%rtp_control%ft_damping
318 rtbse_env%ft_damping = rtbse_env%dft_control%rtp_control%ft_t0
319 rtbse_env%pol_elements => rtbse_env%dft_control%rtp_control%print_pol_elements
324 rtbse_env%restart_extracted = .false.
329 i_val=rtbse_env%moment_ref_type)
331 r_vals=rtbse_env%user_moment_ref_point)
337 "CURRENT print section not yet implemented for RTBSE.")
339 "E_CONSTITUENTS print section not yet implemented for RTBSE.")
341 "PROGRAM_RUN_INFO print section not yet implemented for RTBSE.")
343 "PROJECTION_MO print section not yet implemented for RTBSE.")
345 "RESTART_HISTORY print section not yet implemented for RTBSE.")
347 rtbse_env%qs_env => qs_env
348 rtbse_env%bs_env => bs_env
350 rtbse_env%pade_requested = rtbse_env%dft_control%rtp_control%pade_requested
351 rtbse_env%pade_e_min = rtbse_env%dft_control%rtp_control%pade_e_min
352 rtbse_env%pade_e_step = rtbse_env%dft_control%rtp_control%pade_e_step
353 rtbse_env%pade_e_max = rtbse_env%dft_control%rtp_control%pade_e_max
354 rtbse_env%pade_fit_e_min = rtbse_env%dft_control%rtp_control%pade_fit_e_min
355 rtbse_env%pade_fit_e_max = rtbse_env%dft_control%rtp_control%pade_fit_e_max
356 rtbse_env%pade_npoints = int((rtbse_env%pade_e_max - rtbse_env%pade_e_min)/rtbse_env%pade_e_step)
358 IF (rtbse_env%pade_requested)
THEN
359 NULLIFY (rtbse_env%pade_x_eval)
360 ALLOCATE (rtbse_env%pade_x_eval(rtbse_env%pade_npoints))
361 DO i = 1, rtbse_env%pade_npoints
362 rtbse_env%pade_x_eval(i) = cmplx(rtbse_env%pade_e_step*real(i - 1, kind=
dp), 0.0, kind=
dp)
367 NULLIFY (rtbse_env%moments)
368 ALLOCATE (rtbse_env%moments(3))
369 NULLIFY (rtbse_env%moments_field)
370 ALLOCATE (rtbse_env%moments_field(3))
374 CALL cp_fm_create(rtbse_env%moments(k), bs_env%fm_s_Gamma%matrix_struct)
375 CALL cp_fm_create(rtbse_env%moments_field(k), bs_env%fm_s_Gamma%matrix_struct)
379 NULLIFY (rtbse_env%rho_workspace)
380 ALLOCATE (rtbse_env%rho_workspace(4))
381 DO i = 1,
SIZE(rtbse_env%rho_workspace)
382 CALL cp_cfm_create(rtbse_env%rho_workspace(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
386 NULLIFY (rtbse_env%real_workspace)
387 SELECT CASE (rtbse_env%mat_exp_method)
389 ALLOCATE (rtbse_env%real_workspace(4))
391 ALLOCATE (rtbse_env%real_workspace(2))
393 cpabort(
"Only exact and BCH matrix propagation implemented in RT-BSE")
395 DO i = 1,
SIZE(rtbse_env%real_workspace)
396 CALL cp_fm_create(rtbse_env%real_workspace(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
400 NULLIFY (rtbse_env%rho)
401 ALLOCATE (rtbse_env%rho(rtbse_env%n_spin))
402 DO i = 1, rtbse_env%n_spin
403 CALL cp_cfm_create(rtbse_env%rho(i), matrix_struct=bs_env%fm_s_Gamma%matrix_struct)
407 CALL cp_fm_create(rtbse_env%S_fm, bs_env%fm_s_Gamma%matrix_struct)
408 CALL cp_fm_create(rtbse_env%S_inv_fm, bs_env%fm_s_Gamma%matrix_struct)
409 CALL cp_cfm_create(rtbse_env%S_cfm, bs_env%fm_s_Gamma%matrix_struct)
413 NULLIFY (rtbse_env%ham_workspace)
414 ALLOCATE (rtbse_env%ham_workspace(rtbse_env%n_spin))
415 DO i = 1, rtbse_env%n_spin
416 CALL cp_cfm_create(rtbse_env%ham_workspace(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
420 NULLIFY (rtbse_env%ham_reference)
421 ALLOCATE (rtbse_env%ham_reference(rtbse_env%n_spin))
422 DO i = 1, rtbse_env%n_spin
423 CALL cp_cfm_create(rtbse_env%ham_reference(i), bs_env%fm_ks_Gamma(i)%matrix_struct)
427 NULLIFY (rtbse_env%ham_effective)
428 NULLIFY (rtbse_env%rho_new)
429 NULLIFY (rtbse_env%rho_new_last)
430 NULLIFY (rtbse_env%rho_M)
431 NULLIFY (rtbse_env%rho_orig)
432 ALLOCATE (rtbse_env%ham_effective(rtbse_env%n_spin))
433 ALLOCATE (rtbse_env%rho_new(rtbse_env%n_spin))
434 ALLOCATE (rtbse_env%rho_new_last(rtbse_env%n_spin))
435 ALLOCATE (rtbse_env%rho_M(rtbse_env%n_spin))
436 ALLOCATE (rtbse_env%rho_orig(rtbse_env%n_spin))
437 DO i = 1, rtbse_env%n_spin
438 CALL cp_cfm_create(rtbse_env%ham_effective(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
440 CALL cp_cfm_create(rtbse_env%rho_new(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
442 CALL cp_cfm_create(rtbse_env%rho_new_last(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
444 CALL cp_cfm_create(rtbse_env%rho_M(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
446 CALL cp_cfm_create(rtbse_env%rho_orig(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
450 NULLIFY (rtbse_env%real_eigvals)
451 ALLOCATE (rtbse_env%real_eigvals(rtbse_env%n_ao))
452 rtbse_env%real_eigvals(:) = 0.0_dp
453 NULLIFY (rtbse_env%exp_eigvals)
454 ALLOCATE (rtbse_env%exp_eigvals(rtbse_env%n_ao))
455 rtbse_env%exp_eigvals(:) = cmplx(0.0, 0.0, kind=
dp)
458 NULLIFY (rtbse_env%moments_trace)
460 ALLOCATE (rtbse_env%moments_trace(rtbse_env%n_spin, 3, rtbse_env%sim_nsteps + 1), source=
z_zero)
461 NULLIFY (rtbse_env%field_trace)
462 ALLOCATE (rtbse_env%field_trace(3, rtbse_env%sim_nsteps + 1), source=
z_zero)
463 NULLIFY (rtbse_env%time_trace)
464 ALLOCATE (rtbse_env%time_trace(rtbse_env%sim_nsteps + 1), source=0.0_dp)
467 NULLIFY (rtbse_env%hartree_curr)
468 NULLIFY (rtbse_env%sigma_SEX)
469 NULLIFY (rtbse_env%sigma_COH)
470 ALLOCATE (rtbse_env%hartree_curr(rtbse_env%n_spin))
471 ALLOCATE (rtbse_env%sigma_SEX(rtbse_env%n_spin))
472 ALLOCATE (rtbse_env%sigma_COH(rtbse_env%n_spin))
473 DO i = 1, rtbse_env%n_spin
474 CALL cp_fm_create(rtbse_env%sigma_COH(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
475 CALL cp_cfm_create(rtbse_env%sigma_SEX(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
476 CALL cp_fm_create(rtbse_env%hartree_curr(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
483 CALL create_sigma_workspace(rtbse_env, qs_env)
486 CALL create_hartree_ri_workspace(rtbse_env, qs_env)
496 SUBROUTINE cp_cfm_release_pa1(matrices)
497 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: matrices
500 DO i = 1,
SIZE(matrices)
503 DEALLOCATE (matrices)
505 END SUBROUTINE cp_cfm_release_pa1
516 CALL cp_cfm_release_pa1(rtbse_env%ham_effective)
517 CALL cp_cfm_release_pa1(rtbse_env%ham_workspace)
519 CALL cp_cfm_release_pa1(rtbse_env%sigma_SEX)
521 CALL cp_cfm_release_pa1(rtbse_env%ham_reference)
522 CALL cp_cfm_release_pa1(rtbse_env%rho)
523 CALL cp_cfm_release_pa1(rtbse_env%rho_workspace)
524 CALL cp_cfm_release_pa1(rtbse_env%rho_new)
525 CALL cp_cfm_release_pa1(rtbse_env%rho_new_last)
526 CALL cp_cfm_release_pa1(rtbse_env%rho_M)
527 CALL cp_cfm_release_pa1(rtbse_env%rho_orig)
536 CALL release_sigma_workspace(rtbse_env)
538 CALL release_hartree_ri_workspace(rtbse_env)
540 DEALLOCATE (rtbse_env%real_eigvals)
541 DEALLOCATE (rtbse_env%exp_eigvals)
542 DEALLOCATE (rtbse_env%moments_trace)
543 DEALLOCATE (rtbse_env%field_trace)
544 DEALLOCATE (rtbse_env%time_trace)
546 IF (
ASSOCIATED(rtbse_env%pol_elements))
DEALLOCATE (rtbse_env%pol_elements)
547 IF (
ASSOCIATED(rtbse_env%pade_x_eval))
DEALLOCATE (rtbse_env%pade_x_eval)
552 DEALLOCATE (rtbse_env)
565 SUBROUTINE create_hartree_ri_workspace(rtbse_env, qs_env)
572 CALL dbcsr_create(rtbse_env%rho_dbcsr, name=
"Sparse density", template=bs_env%mat_ao_ao%matrix)
573 CALL dbcsr_create(rtbse_env%v_ao_dbcsr, name=
"Sparse Hartree", template=bs_env%mat_ao_ao%matrix)
575 CALL create_hartree_ri_3c(rtbse_env%rho_dbcsr, rtbse_env%int_3c_array, rtbse_env%n_ao, rtbse_env%n_RI, &
576 bs_env%basis_set_AO, bs_env%basis_set_RI, bs_env%i_RI_start_from_atom, &
577 bs_env%ri_metric, qs_env, rtbse_env%unit_nr)
578 END SUBROUTINE create_hartree_ri_workspace
594 i_RI_start_from_atom, ri_metric, qs_env, unit_nr)
596 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: int_3c
597 INTEGER :: n_ao, n_ri
600 INTEGER,
DIMENSION(:) :: i_ri_start_from_atom
604 REAL(kind=
dp) :: size_mb
605 INTEGER :: nblkrows_local, &
617 INTEGER,
DIMENSION(:),
POINTER :: local_blk_rows, &
622 size_mb = real(n_ao, kind=
dp)*real(n_ao, kind=
dp)*real(n_ri, kind=
dp)* &
623 REAL(storage_size(size_mb), kind=
dp)/8.0_dp/1024.0_dp/1024.0_dp
624 IF (unit_nr > 0)
WRITE (unit_nr,
'(A44,E32.2E3,A4)') &
625 " RTBSE| Approximate size of the 3c integrals", size_mb,
" MiB"
628 CALL dbcsr_get_info(rho_dbcsr, nblkrows_local=nblkrows_local, nblkcols_local=nblkcols_local)
630 CALL dbcsr_get_info(rho_dbcsr, local_rows=local_blk_rows, local_cols=local_blk_cols)
632 CALL dbcsr_get_info(rho_dbcsr, row_blk_size=row_blk_size, col_blk_size=col_blk_size)
636 DO i_blk_local = 1, nblkrows_local
637 nrows_local = nrows_local + row_blk_size(local_blk_rows(i_blk_local))
640 DO j_blk_local = 1, nblkcols_local
641 ncols_local = ncols_local + col_blk_size(local_blk_cols(j_blk_local))
645 ALLOCATE (int_3c(nrows_local, ncols_local, n_ri))
649 DO i_blk_local = 1, nblkrows_local
651 DO j_blk_local = 1, nblkcols_local
652 start_row_index = row_local_offset
653 end_row_index = start_row_index + row_blk_size(local_blk_rows(i_blk_local)) - 1
654 start_col_index = col_local_offset
655 end_col_index = start_col_index + col_blk_size(local_blk_cols(j_blk_local)) - 1
657 start_col_index:end_col_index, &
659 qs_env, potential_parameter=ri_metric, &
660 basis_j=basis_set_ao, basis_k=basis_set_ao, &
661 basis_i=basis_set_ri, &
662 atom_j=local_blk_rows(i_blk_local), &
663 atom_k=local_blk_cols(j_blk_local), &
664 i_bf_start_from_atom=i_ri_start_from_atom)
665 col_local_offset = col_local_offset + col_blk_size(local_blk_cols(j_blk_local))
667 row_local_offset = row_local_offset + row_blk_size(local_blk_rows(i_blk_local))
676 SUBROUTINE release_hartree_ri_workspace(rtbse_env)
679 DEALLOCATE (rtbse_env%int_3c_array)
687 END SUBROUTINE release_hartree_ri_workspace
695 SUBROUTINE create_sigma_workspace(rtbse_env, qs_env)
700 rtbse_env%t_3c_w, rtbse_env%t_3c_work_RI_AO__AO, &
701 rtbse_env%t_3c_work2_RI_AO__AO, rtbse_env%greens_dbt)
702 END SUBROUTINE create_sigma_workspace
713 work_dbt_3c_1, work_dbt_3c_2, work_dbt_2c)
716 TYPE(dbt_type) :: screened_dbt, &
726 CALL dbt_create(bs_env%t_RI__AO_AO, int_3c_dbt)
730 CALL dbt_create(bs_env%t_RI_AO__AO, work_dbt_3c_1)
732 CALL dbt_create(bs_env%t_RI_AO__AO, work_dbt_3c_2)
735 CALL dbcsr_create(screened_dbcsr, name=
"W", template=bs_env%mat_RI_RI%matrix)
736 CALL dbt_create(screened_dbcsr, screened_dbt)
738 CALL dbt_create(bs_env%mat_ao_ao%matrix, work_dbt_2c)
746 SUBROUTINE release_sigma_workspace(rtbse_env)
749 CALL dbt_destroy(rtbse_env%t_3c_w)
750 CALL dbt_destroy(rtbse_env%t_3c_work_RI_AO__AO)
751 CALL dbt_destroy(rtbse_env%t_3c_work2_RI_AO__AO)
752 CALL dbt_destroy(rtbse_env%screened_dbt)
753 CALL dbt_destroy(rtbse_env%greens_dbt)
755 END SUBROUTINE release_sigma_workspace
764 alpha, matrix_r, matrix_c, beta, res)
766 CHARACTER(len=1) :: trans_r, trans_c
767 INTEGER :: na, nb, nc
770 REAL(kind=
dp) :: alpha, beta
773 TYPE(
cp_fm_type) :: work_re, work_im, res_re, res_im
774 REAL(kind=
dp) :: i_unit
775 CHARACTER(len=1) :: trans_cr
782 SELECT CASE (trans_c)
795 alpha, matrix_r, work_re, beta, res_re)
797 i_unit*alpha, matrix_r, work_im, beta, res_im)
813 alpha, matrix_c, matrix_r, beta, res)
815 CHARACTER(len=1) :: trans_c, trans_r
816 INTEGER :: na, nb, nc
819 REAL(kind=
dp) :: alpha, beta
822 TYPE(
cp_fm_type) :: work_re, work_im, res_re, res_im
823 REAL(kind=
dp) :: i_unit
824 CHARACTER(len=1) :: trans_cr
831 SELECT CASE (trans_c)
844 alpha, work_re, matrix_r, beta, res_re)
846 i_unit*alpha, work_im, matrix_r, beta, res_im)
Represents a complex full matrix distributed on many processors.
subroutine, public cp_cfm_release(matrix)
Releases a full matrix.
subroutine, public cp_fm_to_cfm(msourcer, msourcei, mtarget)
Construct a complex full matrix by taking its real and imaginary parts from two separate real-value f...
subroutine, public cp_cfm_set_all(matrix, alpha, beta)
Set all elements of the full matrix to alpha. Besides, set all diagonal matrix elements to beta (if g...
subroutine, public cp_cfm_to_fm(msource, mtargetr, mtargeti)
Copy real and imaginary parts of a complex full matrix into separate real-value full matrices.
subroutine, public cp_cfm_create(matrix, matrix_struct, name, set_zero)
Creates a new full matrix with the given structure.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_get_info(matrix, nblkrows_total, nblkcols_total, nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, my_prow, my_pcol, local_rows, local_cols, proc_row_dist, proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, distribution, name, matrix_type, group)
...
subroutine, public dbcsr_release(matrix)
...
represent a full matrix distributed on many processors
subroutine, public cp_fm_create(matrix, matrix_struct, name, use_sp, set_zero)
creates a new full matrix with the given structure
subroutine, public cp_fm_set_all(matrix, alpha, beta)
set all elements of a matrix to the same value, and optionally the diagonal to a different one
This is the start of a dbt_api, all publically needed functions are exported here....
Interface for the force calculations.
Utility method to build 3-center integrals for small cell GW.
subroutine, public build_3c_integral_block(int_3c, qs_env, potential_parameter, basis_j, basis_k, basis_i, cell_j, cell_k, cell_i, atom_j, atom_k, atom_i, j_bf_start_from_atom, k_bf_start_from_atom, i_bf_start_from_atom)
...
Routines from paper [Graml2024].
subroutine, public compute_3c_integrals(qs_env, bs_env, t_3c, atoms_ao_1, atoms_ao_2, atoms_ri)
...
Defines the basic variable types.
integer, parameter, public dp
2- and 3-center electron repulsion integral routines based on libint2 Currently available operators: ...
Definition of mathematical constants and functions.
complex(kind=dp), parameter, public z_zero
basic linear algebra operations for full matrixes
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.
Definition and initialisation of the mo data type.
Utility methods to build 3-center integral tensors of various types.
subroutine, public neighbor_list_3c_destroy(ijk_list)
Destroy 3c neighborlist.
Data storage and other types for propagation via RT-BSE method.
subroutine, public release_rtbse_env(rtbse_env)
Releases the environment allocated structures.
subroutine, public create_hartree_ri_3c(rho_dbcsr, int_3c, n_ao, n_ri, basis_set_ao, basis_set_ri, i_ri_start_from_atom, ri_metric, qs_env, unit_nr)
Separated method for allocating the 3c integrals for RI Hartree.
subroutine, public multiply_cfm_fm(trans_c, trans_r, na, nb, nc, alpha, matrix_c, matrix_r, beta, res)
Multiplies complex matrix by a real matrix from the right.
subroutine, public create_sigma_workspace_qs_only(qs_env, screened_dbt, screened_dbcsr, int_3c_dbt, work_dbt_3c_1, work_dbt_3c_2, work_dbt_2c)
Allocates the workspaces for self-energy determination routine.
subroutine, public create_rtbse_env(rtbse_env, qs_env, force_env)
Allocates structures and prepares rtbse_env for run.
subroutine, public multiply_fm_cfm(trans_r, trans_c, na, nb, nc, alpha, matrix_r, matrix_c, beta, res)
Multiplies real matrix by a complex matrix from the right.
Types and set_get for real time propagation depending on runtype and diagonalization method different...
subroutine, public warn_section_unused(section, subsection_name, error_message)
Warn about unused sections of the print section - only implemented for some of the methods.
Represent a complex full matrix.
wrapper to abstract the force evaluation of the various methods