50 dbt_mp_environ_pgrid, &
51 dbt_default_distvec, &
52 dbt_distribution_type, &
53 dbt_distribution_new, &
54 dbt_distribution_destroy, &
56 dbt_copy_matrix_to_tensor, &
99#include "../base/base_uses.f90"
105 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
"rt_bse"
119 TYPE series_real_type
120 REAL(kind=
dp),
DIMENSION(:),
POINTER :: series => null()
121 END TYPE series_real_type
122 TYPE series_complex_type
123 COMPLEX(kind=dp),
DIMENSION(:),
POINTER :: series => null()
124 END TYPE series_complex_type
182 INTEGER :: n_spin = 1, &
185 INTEGER,
DIMENSION(2) :: n_occ = -1
186 REAL(kind=
dp) :: spin_degeneracy = 2
187 REAL(kind=
dp),
DIMENSION(3) :: field = 0.0_dp
188 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: moments => null(), &
189 moments_field => null()
190 INTEGER :: sim_step = 0, &
193 sim_start_orig = 0, &
195 REAL(kind=
dp) :: sim_time = 0.0_dp, &
197 etrs_threshold = 1.0e-7_dp, &
198 exp_accuracy = 1.0e-10_dp, &
199 ft_damping = 0.0_dp, &
202 INTEGER,
DIMENSION(:, :),
POINTER :: pol_elements => null()
209 field_section => null(), &
210 rho_section => null(), &
211 ft_section => null(), &
212 pol_section => null(), &
213 moments_section => null()
214 LOGICAL :: restart_extracted = .false.
217 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: ham_effective => null()
218 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: ham_reference => null()
219 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: ham_workspace => null()
221 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: sigma_coh => null(), &
222 hartree_curr => null()
226 rho_new_last => null(), &
236 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: rho_workspace => null()
238 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: real_workspace => null()
240 REAL(kind=
dp),
DIMENSION(:),
POINTER :: real_eigvals => null()
241 COMPLEX(kind=dp),
DIMENSION(:),
POINTER :: exp_eigvals => null()
243 TYPE(series_complex_type),
DIMENSION(3) :: moments_trace = series_complex_type()
244 TYPE(series_real_type) :: time_trace = series_real_type()
245 TYPE(series_real_type),
DIMENSION(3) :: field_trace = series_real_type()
249#if defined(FTN_NO_DEFAULT_INIT)
250 TYPE(dbt_type) :: screened_dbt, &
253 t_3c_work_ri_ao__ao, &
256 TYPE(dbt_type) :: screened_dbt = dbt_type(), &
257 greens_dbt = dbt_type(), &
258 t_3c_w = dbt_type(), &
259 t_3c_work_ri_ao__ao = dbt_type(), &
260 t_3c_work2_ri_ao__ao = dbt_type()
263 INTEGER :: etrs_max_iter = 10
264 INTEGER :: ham_reference_type = 2
265 INTEGER :: mat_exp_method = 4
266 INTEGER :: unit_nr = -1
267 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: int_3c_array => null()
288 INTEGER :: i, j, k, single_pol_index
290 INTEGER,
DIMENSION(:),
POINTER :: pol_tmp
291 LOGICAL :: pol_elements_explicit, &
293 REAL(kind=
dp),
DIMENSION(3) :: pol_vector
304 dft_control=rtbse_env%dft_control, &
307 IF (.NOT.
ASSOCIATED(bs_env))
THEN
308 cpabort(
"Cannot run RT-BSE without running GW calculation (PROPERTIES) before")
311 rtbse_env%n_spin = bs_env%n_spin
313 rtbse_env%n_ao = bs_env%n_ao
315 rtbse_env%n_RI = bs_env%n_RI
317 rtbse_env%n_occ(:) = bs_env%n_occ(:)
319 rtbse_env%spin_degeneracy = bs_env%spin_degeneracy
321 rtbse_env%field(:) = 0.0_dp
323 rtbse_env%sim_step = 0
324 rtbse_env%sim_time = 0
330 rtbse_env%etrs_threshold = rtbse_env%dft_control%rtp_control%eps_ener
331 rtbse_env%exp_accuracy = rtbse_env%dft_control%rtp_control%eps_exp
334 i_val=rtbse_env%ham_reference_type)
336 i_val=rtbse_env%etrs_max_iter)
338 i_val=rtbse_env%mat_exp_method)
340 rtbse_env%unit_nr = bs_env%unit_nr
344 rtbse_env%sim_start_orig = rtbse_env%sim_start
348 r_val=rtbse_env%ft_damping)
350 r_val=rtbse_env%ft_start)
357 n_rep_val=k, explicit=pol_elements_explicit)
358 IF (pol_elements_explicit)
THEN
360 ALLOCATE (rtbse_env%pol_elements(k, 2), source=1)
363 i_vals=pol_tmp, i_rep_val=i)
364 IF (
SIZE(pol_tmp) < 2) cpabort(
"Less than two elements provided for polarizability")
365 rtbse_env%pol_elements(i, :) = pol_tmp(:)
370 IF (rtbse_env%pol_elements(j, i) > 3 .OR. rtbse_env%pol_elements(j, i) < 1) &
371 cpabort(
"Polarisation tensor element not 1,2 or 3 in at least one index")
376 pol_vector_known = .false.
377 IF (rtbse_env%dft_control%rtp_control%apply_delta_pulse)
THEN
379 pol_vector(:) = rtbse_env%dft_control%rtp_control%delta_pulse_direction(:)
380 pol_vector_known = .true.
381 ELSE IF (
SIZE(rtbse_env%dft_control%efield_fields) > 0)
THEN
384 pol_vector(:) = rtbse_env%dft_control%efield_fields(1)%efield%polarisation(:)
385 pol_vector_known = .true.
388 IF (dot_product(pol_vector, pol_vector) == 0.0_dp) pol_vector_known = .false.
389 IF (pol_vector_known)
THEN
391 single_pol_index = -1
393 IF (pol_vector(i) /= 0.0_dp .AND. &
394 pol_vector(
modulo(i, 3) + 1) == 0.0_dp .AND. &
395 pol_vector(
modulo(i + 1, 3) + 1) == 0.0_dp)
THEN
400 IF (single_pol_index > 0)
THEN
402 ALLOCATE (rtbse_env%pol_elements(3, 2), source=1)
404 rtbse_env%pol_elements(i, 1) = i
405 rtbse_env%pol_elements(i, 2) = single_pol_index
409 cpabort(
"RTBSE : Guess for polarizability elements failed - please specify")
413 cpabort(
"RTBSE : Guess for polarizability elements failed - please specify")
419 rtbse_env%restart_extracted = .false.
427 "CURRENT print section not yet implemented for RTBSE.")
429 "E_CONSTITUENTS print section not yet implemented for RTBSE.")
431 "PROGRAM_RUN_INFO print section not yet implemented for RTBSE.")
433 "PROJECTION_MO print section not yet implemented for RTBSE.")
435 "RESTART_HISTORY print section not yet implemented for RTBSE.")
437 rtbse_env%qs_env => qs_env
438 rtbse_env%bs_env => bs_env
441 NULLIFY (rtbse_env%moments)
442 ALLOCATE (rtbse_env%moments(3))
443 NULLIFY (rtbse_env%moments_field)
444 ALLOCATE (rtbse_env%moments_field(3))
448 CALL cp_fm_create(rtbse_env%moments(k), bs_env%fm_s_Gamma%matrix_struct)
449 CALL cp_fm_create(rtbse_env%moments_field(k), bs_env%fm_s_Gamma%matrix_struct)
453 NULLIFY (rtbse_env%rho_workspace)
454 ALLOCATE (rtbse_env%rho_workspace(4))
455 DO i = 1,
SIZE(rtbse_env%rho_workspace)
456 CALL cp_cfm_create(rtbse_env%rho_workspace(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
460 NULLIFY (rtbse_env%real_workspace)
461 SELECT CASE (rtbse_env%mat_exp_method)
463 ALLOCATE (rtbse_env%real_workspace(4))
465 ALLOCATE (rtbse_env%real_workspace(2))
467 cpabort(
"Only exact and BCH matrix propagation implemented in RT-BSE")
469 DO i = 1,
SIZE(rtbse_env%real_workspace)
470 CALL cp_fm_create(rtbse_env%real_workspace(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
474 NULLIFY (rtbse_env%rho)
475 ALLOCATE (rtbse_env%rho(rtbse_env%n_spin))
476 DO i = 1, rtbse_env%n_spin
477 CALL cp_cfm_create(rtbse_env%rho(i), matrix_struct=bs_env%fm_s_Gamma%matrix_struct)
481 CALL cp_fm_create(rtbse_env%S_fm, bs_env%fm_s_Gamma%matrix_struct)
482 CALL cp_fm_create(rtbse_env%S_inv_fm, bs_env%fm_s_Gamma%matrix_struct)
483 CALL cp_cfm_create(rtbse_env%S_cfm, bs_env%fm_s_Gamma%matrix_struct)
487 NULLIFY (rtbse_env%ham_workspace)
488 ALLOCATE (rtbse_env%ham_workspace(rtbse_env%n_spin))
489 DO i = 1, rtbse_env%n_spin
490 CALL cp_cfm_create(rtbse_env%ham_workspace(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
494 NULLIFY (rtbse_env%ham_reference)
495 ALLOCATE (rtbse_env%ham_reference(rtbse_env%n_spin))
496 DO i = 1, rtbse_env%n_spin
497 CALL cp_cfm_create(rtbse_env%ham_reference(i), bs_env%fm_ks_Gamma(i)%matrix_struct)
501 NULLIFY (rtbse_env%ham_effective)
502 NULLIFY (rtbse_env%rho_new)
503 NULLIFY (rtbse_env%rho_new_last)
504 NULLIFY (rtbse_env%rho_M)
505 NULLIFY (rtbse_env%rho_orig)
506 ALLOCATE (rtbse_env%ham_effective(rtbse_env%n_spin))
507 ALLOCATE (rtbse_env%rho_new(rtbse_env%n_spin))
508 ALLOCATE (rtbse_env%rho_new_last(rtbse_env%n_spin))
509 ALLOCATE (rtbse_env%rho_M(rtbse_env%n_spin))
510 ALLOCATE (rtbse_env%rho_orig(rtbse_env%n_spin))
511 DO i = 1, rtbse_env%n_spin
512 CALL cp_cfm_create(rtbse_env%ham_effective(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
514 CALL cp_cfm_create(rtbse_env%rho_new(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
516 CALL cp_cfm_create(rtbse_env%rho_new_last(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
518 CALL cp_cfm_create(rtbse_env%rho_M(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
520 CALL cp_cfm_create(rtbse_env%rho_orig(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
524 NULLIFY (rtbse_env%real_eigvals)
525 ALLOCATE (rtbse_env%real_eigvals(rtbse_env%n_ao))
526 rtbse_env%real_eigvals(:) = 0.0_dp
527 NULLIFY (rtbse_env%exp_eigvals)
528 ALLOCATE (rtbse_env%exp_eigvals(rtbse_env%n_ao))
529 rtbse_env%exp_eigvals(:) = cmplx(0.0, 0.0, kind=
dp)
533 NULLIFY (rtbse_env%moments_trace(i)%series)
534 ALLOCATE (rtbse_env%moments_trace(i)%series(rtbse_env%sim_nsteps + 2), source=
z_zero)
535 NULLIFY (rtbse_env%field_trace(i)%series)
536 ALLOCATE (rtbse_env%field_trace(i)%series(rtbse_env%sim_nsteps + 2), source=0.0_dp)
538 NULLIFY (rtbse_env%time_trace%series)
539 ALLOCATE (rtbse_env%time_trace%series(rtbse_env%sim_nsteps + 2), source=0.0_dp)
542 NULLIFY (rtbse_env%hartree_curr)
543 NULLIFY (rtbse_env%sigma_SEX)
544 NULLIFY (rtbse_env%sigma_COH)
545 ALLOCATE (rtbse_env%hartree_curr(rtbse_env%n_spin))
546 ALLOCATE (rtbse_env%sigma_SEX(rtbse_env%n_spin))
547 ALLOCATE (rtbse_env%sigma_COH(rtbse_env%n_spin))
548 DO i = 1, rtbse_env%n_spin
549 CALL cp_fm_create(rtbse_env%sigma_COH(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
550 CALL cp_cfm_create(rtbse_env%sigma_SEX(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
551 CALL cp_fm_create(rtbse_env%hartree_curr(i), bs_env%fm_ks_Gamma(1)%matrix_struct)
558 CALL create_sigma_workspace(rtbse_env, qs_env)
561 CALL create_hartree_ri_workspace(rtbse_env, qs_env)
571 SUBROUTINE cp_cfm_release_pa1(matrices)
572 TYPE(
cp_cfm_type),
DIMENSION(:),
POINTER :: matrices
575 DO i = 1,
SIZE(matrices)
578 DEALLOCATE (matrices)
580 END SUBROUTINE cp_cfm_release_pa1
592 CALL cp_cfm_release_pa1(rtbse_env%ham_effective)
593 CALL cp_cfm_release_pa1(rtbse_env%ham_workspace)
595 CALL cp_cfm_release_pa1(rtbse_env%sigma_SEX)
597 CALL cp_cfm_release_pa1(rtbse_env%ham_reference)
598 CALL cp_cfm_release_pa1(rtbse_env%rho)
599 CALL cp_cfm_release_pa1(rtbse_env%rho_workspace)
600 CALL cp_cfm_release_pa1(rtbse_env%rho_new)
601 CALL cp_cfm_release_pa1(rtbse_env%rho_new_last)
602 CALL cp_cfm_release_pa1(rtbse_env%rho_M)
603 CALL cp_cfm_release_pa1(rtbse_env%rho_orig)
616 CALL release_sigma_workspace(rtbse_env)
618 CALL release_hartree_ri_workspace(rtbse_env)
620 DEALLOCATE (rtbse_env%real_eigvals)
621 DEALLOCATE (rtbse_env%exp_eigvals)
623 DEALLOCATE (rtbse_env%moments_trace(i)%series)
624 DEALLOCATE (rtbse_env%field_trace(i)%series)
626 DEALLOCATE (rtbse_env%time_trace%series)
628 DEALLOCATE (rtbse_env%pol_elements)
633 DEALLOCATE (rtbse_env)
646 SUBROUTINE create_hartree_ri_workspace(rtbse_env, qs_env)
653 CALL dbcsr_create(rtbse_env%rho_dbcsr, name=
"Sparse density", template=bs_env%mat_ao_ao%matrix)
654 CALL dbcsr_create(rtbse_env%v_ao_dbcsr, name=
"Sparse Hartree", template=bs_env%mat_ao_ao%matrix)
656 CALL create_hartree_ri_3c(rtbse_env%rho_dbcsr, rtbse_env%int_3c_array, rtbse_env%n_ao, rtbse_env%n_RI, &
657 bs_env%basis_set_AO, bs_env%basis_set_RI, bs_env%i_RI_start_from_atom, &
658 bs_env%ri_metric, qs_env, rtbse_env%unit_nr)
659 END SUBROUTINE create_hartree_ri_workspace
675 i_RI_start_from_atom, ri_metric, qs_env, unit_nr)
677 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: int_3c
678 INTEGER :: n_ao, n_ri
681 INTEGER,
DIMENSION(:) :: i_ri_start_from_atom
685 REAL(kind=
dp) :: size_mb
686 INTEGER :: nblkrows_local, &
698 INTEGER,
DIMENSION(:),
POINTER :: local_blk_rows, &
703 size_mb = real(n_ao, kind=
dp)*real(n_ao, kind=
dp)*real(n_ri, kind=
dp)* &
704 REAL(storage_size(size_mb), kind=
dp)/8.0_dp/1024.0_dp/1024.0_dp
705 IF (unit_nr > 0)
WRITE (unit_nr,
'(A44,E32.2E3,A4)') &
706 " RTBSE| Approximate size of the 3c integrals", size_mb,
" MiB"
709 CALL dbcsr_get_info(rho_dbcsr, nblkrows_local=nblkrows_local, nblkcols_local=nblkcols_local)
711 CALL dbcsr_get_info(rho_dbcsr, local_rows=local_blk_rows, local_cols=local_blk_cols)
713 CALL dbcsr_get_info(rho_dbcsr, row_blk_size=row_blk_size, col_blk_size=col_blk_size)
717 DO i_blk_local = 1, nblkrows_local
718 nrows_local = nrows_local + row_blk_size(local_blk_rows(i_blk_local))
721 DO j_blk_local = 1, nblkcols_local
722 ncols_local = ncols_local + col_blk_size(local_blk_cols(j_blk_local))
726 ALLOCATE (int_3c(nrows_local, ncols_local, n_ri))
730 DO i_blk_local = 1, nblkrows_local
732 DO j_blk_local = 1, nblkcols_local
733 start_row_index = row_local_offset
734 end_row_index = start_row_index + row_blk_size(local_blk_rows(i_blk_local)) - 1
735 start_col_index = col_local_offset
736 end_col_index = start_col_index + col_blk_size(local_blk_cols(j_blk_local)) - 1
738 start_col_index:end_col_index, &
740 qs_env, potential_parameter=ri_metric, &
741 basis_j=basis_set_ao, basis_k=basis_set_ao, &
742 basis_i=basis_set_ri, &
743 atom_j=local_blk_rows(i_blk_local), &
744 atom_k=local_blk_cols(j_blk_local), &
745 i_bf_start_from_atom=i_ri_start_from_atom)
746 col_local_offset = col_local_offset + col_blk_size(local_blk_cols(j_blk_local))
748 row_local_offset = row_local_offset + row_blk_size(local_blk_rows(i_blk_local))
757 SUBROUTINE release_hartree_ri_workspace(rtbse_env)
760 DEALLOCATE (rtbse_env%int_3c_array)
768 END SUBROUTINE release_hartree_ri_workspace
776 SUBROUTINE create_sigma_workspace(rtbse_env, qs_env)
781 rtbse_env%t_3c_w, rtbse_env%t_3c_work_RI_AO__AO, &
782 rtbse_env%t_3c_work2_RI_AO__AO, rtbse_env%greens_dbt)
783 END SUBROUTINE create_sigma_workspace
794 work_dbt_3c_1, work_dbt_3c_2, work_dbt_2c)
797 TYPE(dbt_type) :: screened_dbt, &
807 CALL dbt_create(bs_env%t_RI__AO_AO, int_3c_dbt)
811 CALL dbt_create(bs_env%t_RI_AO__AO, work_dbt_3c_1)
813 CALL dbt_create(bs_env%t_RI_AO__AO, work_dbt_3c_2)
816 CALL dbcsr_create(screened_dbcsr, name=
"W", template=bs_env%mat_RI_RI%matrix)
817 CALL dbt_create(screened_dbcsr, screened_dbt)
819 CALL dbt_create(bs_env%mat_ao_ao%matrix, work_dbt_2c)
827 SUBROUTINE release_sigma_workspace(rtbse_env)
830 CALL dbt_destroy(rtbse_env%t_3c_w)
831 CALL dbt_destroy(rtbse_env%t_3c_work_RI_AO__AO)
832 CALL dbt_destroy(rtbse_env%t_3c_work2_RI_AO__AO)
833 CALL dbt_destroy(rtbse_env%screened_dbt)
834 CALL dbt_destroy(rtbse_env%greens_dbt)
845 alpha, matrix_r, matrix_c, beta, res)
847 CHARACTER(len=1) :: trans_r, trans_c
848 INTEGER :: na, nb, nc
851 REAL(kind=
dp) :: alpha, beta
854 TYPE(
cp_fm_type) :: work_re, work_im, res_re, res_im
855 REAL(kind=
dp) :: i_unit
856 CHARACTER(len=1) :: trans_cr
863 SELECT CASE (trans_c)
876 alpha, matrix_r, work_re, beta, res_re)
878 i_unit*alpha, matrix_r, work_im, beta, res_im)
894 alpha, matrix_c, matrix_r, beta, res)
896 CHARACTER(len=1) :: trans_c, trans_r
897 INTEGER :: na, nb, nc
900 REAL(kind=
dp) :: alpha, beta
903 TYPE(
cp_fm_type) :: work_re, work_im, res_re, res_im
904 REAL(kind=
dp) :: i_unit
905 CHARACTER(len=1) :: trans_cr
912 SELECT CASE (trans_c)
925 alpha, work_re, matrix_r, beta, res_re)
927 i_unit*alpha, work_im, matrix_r, beta, res_im)
static GRID_HOST_DEVICE int modulo(int a, int m)
Equivalent of Fortran's MODULO, which always return a positive number. https://gcc....
Basic linear algebra operations for complex full matrices.
subroutine, public cp_cfm_column_scale(matrix_a, scaling)
Scales columns of the full matrix by corresponding factors.
Represents a complex full matrix distributed on many processors.
subroutine, public cp_cfm_create(matrix, matrix_struct, name)
Creates a new full matrix with the given structure.
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.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_scale(matrix, alpha_scalar)
...
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
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_set(matrix, alpha)
...
subroutine, public dbcsr_release(matrix)
...
subroutine, public dbcsr_print(matrix, variable_name, unit_nr)
Prints given matrix in matlab format (only present blocks).
DBCSR operations in CP2K.
subroutine, public copy_dbcsr_to_fm(matrix, fm)
Copy a DBCSR matrix to a BLACS matrix.
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_transpose(matrix, matrixt)
transposes a matrix matrixt = matrix ^ T
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....
subroutine, public cp_fm_invert(matrix_a, matrix_inverse, det_a, eps_svd, eigval)
Inverts a cp_fm_type matrix, optionally returning the determinant of the input matrix.
represent a full matrix distributed on many processors
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
subroutine, public cp_fm_create(matrix, matrix_struct, name, use_sp)
creates a new full matrix with the given structure
subroutine, public cp_fm_write_formatted(fm, unit, header, value_format)
Write out a full matrix in plain text.
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: ...
Interface to the Libint-Library or a c++ wrapper.
subroutine, public cp_libint_static_init()
Definition of mathematical constants and functions.
complex(kind=dp), parameter, public z_zero
Routines for calculating a complex matrix exponential.
subroutine, public get_nsquare_norder(norm, nsquare, norder, eps_exp, method, do_emd)
optimization function for pade/taylor order and number of squaring steps
Calculates the moment integrals <a|r^m|b>
subroutine, public get_reference_point(rpoint, drpoint, qs_env, fist_env, reference, ref_point, ifirst, ilast)
...
basic linear algebra operations for full matrixes
Definition of physical constants:
real(kind=dp), parameter, public angstrom
subroutine, public create_and_init_bs_env(qs_env, bs_env, post_scf_bandstructure_section)
...
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.
Definition and initialisation of the mo data type.
Calculates the moment integrals <a|r^m|b> and <a|r x d/dr|b>
subroutine, public build_local_moment_matrix(qs_env, moments, nmoments, ref_point, ref_points, basis_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.
Routines for propagating the orbitals.
subroutine, public s_matrices_create(s_mat, rtp)
calculates the needed overlap-like matrices depending on the way the exponential is calculated,...
Types and set_get for real time propagation depending on runtype and diagonalization method different...
subroutine, public get_rtp(rtp, exp_h_old, exp_h_new, h_last_iter, rho_old, rho_next, rho_new, mos, mos_new, mos_old, mos_next, s_inv, s_half, s_minus_half, b_mat, c_mat, propagator_matrix, mixing, mixing_factor, s_der, dt, nsteps, sinvh, sinvh_imag, sinvb, admm_mos)
...
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.
Routines for that prepare rtp and EMD.
subroutine, public rt_initialize_rho_from_mos(rtp, mos, mos_old)
Computes the density matrix from the mos Update: Initialized the density matrix from complex mos (for...
Just to build arrays of pointers to matrices.
Represent a complex full matrix.
just to build arrays of pointers to matrices
wrapper to abstract the force evaluation of the various methods