63#include "./base/base_uses.f90"
72 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'rtp_admm_methods'
86 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rtp_admm_calc_rho_aux'
88 CHARACTER(LEN=default_string_length) :: basis_type
89 INTEGER :: handle, ispin, nspins
90 LOGICAL :: gapw, s_mstruct_changed
91 REAL(kind=
dp),
DIMENSION(:),
POINTER :: tot_rho_r_aux
93 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: rtp_coeff_aux_fit
94 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_p_aux, matrix_p_aux_im, &
96 matrix_s_aux_fit_vs_orb
98 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mos, mos_aux_fit
107 CALL timeset(routinen, handle)
108 NULLIFY (admm_env, matrix_p_aux, matrix_p_aux_im, mos, &
109 mos_aux_fit, para_env, matrix_s_aux_fit, matrix_s_aux_fit_vs_orb, rho, &
110 ks_env, dft_control, tot_rho_r_aux, rho_r_aux, rho_g_aux, task_list_aux_fit)
115 dft_control=dft_control, &
120 s_mstruct_changed=s_mstruct_changed)
121 CALL get_admm_env(admm_env, matrix_s_aux_fit=matrix_s_aux_fit, task_list_aux_fit=task_list_aux_fit, &
122 matrix_s_aux_fit_vs_orb=matrix_s_aux_fit_vs_orb, mos_aux_fit=mos_aux_fit, &
123 rho_aux_fit=rho_aux_fit)
124 gapw = admm_env%do_gapw
126 nspins = dft_control%nspins
128 CALL get_rtp(rtp=rtp, admm_mos=rtp_coeff_aux_fit)
129 CALL rtp_admm_fit_mo_coeffs(qs_env, admm_env, dft_control%admm_control, para_env, &
130 matrix_s_aux_fit, matrix_s_aux_fit_vs_orb, &
131 mos, mos_aux_fit, rtp, rtp_coeff_aux_fit, &
136 rho_ao=matrix_p_aux, &
137 rho_ao_im=matrix_p_aux_im, &
140 tot_rho_r=tot_rho_r_aux)
142 CALL rtp_admm_calculate_dm(admm_env, rtp_coeff_aux_fit, &
143 matrix_p_aux(ispin)%matrix, &
144 matrix_p_aux_im(ispin)%matrix, &
148 basis_type =
"AUX_FIT"
150 basis_type =
"AUX_FIT_SOFT"
151 task_list_aux_fit => admm_env%admm_gapw_env%task_list
155 rho=rho_r_aux(ispin), &
156 rho_gspace=rho_g_aux(ispin), &
157 total_rho=tot_rho_r_aux(ispin), &
158 ks_env=ks_env, soft_valid=.false., &
159 basis_type=
"AUX_FIT", &
160 task_list_external=task_list_aux_fit)
165 rho_atom_set=admm_env%admm_gapw_env%local_rho_set%rho_atom_set, &
166 qs_kind_set=admm_env%admm_gapw_env%admm_kind_set, &
167 oce=admm_env%admm_gapw_env%oce, sab=admm_env%sab_aux_fit, &
170 CALL prepare_gapw_den(qs_env, local_rho_set=admm_env%admm_gapw_env%local_rho_set, &
171 do_rho0=.false., kind_set_external=admm_env%admm_gapw_env%admm_kind_set)
175 CALL qs_rho_set(rho_aux_fit, rho_r_valid=.true., rho_g_valid=.true.)
177 CALL timestop(handle)
189 SUBROUTINE rtp_admm_calculate_dm(admm_env, rtp_coeff_aux_fit, density_matrix_aux, &
190 density_matrix_aux_im, ispin)
192 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: rtp_coeff_aux_fit
193 TYPE(
dbcsr_type),
POINTER :: density_matrix_aux, density_matrix_aux_im
194 INTEGER,
INTENT(in) :: ispin
196 CHARACTER(len=*),
PARAMETER :: routinen =
'rtp_admm_calculate_dm'
200 CALL timeset(routinen, handle)
202 SELECT CASE (admm_env%purification_method)
204 CALL calculate_rtp_admm_density(density_matrix_aux, density_matrix_aux_im, &
205 rtp_coeff_aux_fit, ispin)
207 cpwarn(
"only purification NONE possible with RTP/EMD at the moment")
210 CALL timestop(handle)
212 END SUBROUTINE rtp_admm_calculate_dm
228 SUBROUTINE rtp_admm_fit_mo_coeffs(qs_env, admm_env, admm_control, para_env, matrix_s_aux_fit, matrix_s_mixed, &
229 mos, mos_aux_fit, rtp, rtp_coeff_aux_fit, geometry_did_change)
235 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s_aux_fit, matrix_s_mixed
236 TYPE(
mo_set_type),
DIMENSION(:),
INTENT(IN) :: mos, mos_aux_fit
238 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: rtp_coeff_aux_fit
239 LOGICAL,
INTENT(IN) :: geometry_did_change
241 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rtp_admm_fit_mo_coeffs'
243 INTEGER :: handle, nao_aux_fit, natoms
245 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
248 CALL timeset(routinen, handle)
250 NULLIFY (xc_section, qs_kind_set)
252 IF (.NOT. (
ASSOCIATED(admm_env)))
THEN
254 CALL get_qs_env(qs_env, input=input, natom=natoms, qs_kind_set=qs_kind_set)
255 CALL get_qs_kind_set(qs_kind_set, nsgf=nao_aux_fit, basis_type=
"AUX_FIT")
256 CALL admm_env_create(admm_env, admm_control, mos, para_env, natoms, nao_aux_fit)
262 cpwarn(
"RTP requires BASIS_PROJECTION.")
266 recalc_s = geometry_did_change .OR. (rtp%iter == 0 .AND. (rtp%istep == rtp%i_start))
268 SELECT CASE (admm_env%purification_method)
270 CALL rtp_fit_mo_coeffs_none(qs_env, admm_env, para_env, matrix_s_aux_fit, matrix_s_mixed, &
271 mos, mos_aux_fit, rtp, rtp_coeff_aux_fit, recalc_s)
273 cpwarn(
"Purification method not implemented in combination with RTP")
276 CALL timestop(handle)
278 END SUBROUTINE rtp_admm_fit_mo_coeffs
298 SUBROUTINE rtp_fit_mo_coeffs_none(qs_env, admm_env, para_env, matrix_s_aux_fit, matrix_s_mixed, &
299 mos, mos_aux_fit, rtp, rtp_coeff_aux_fit, geometry_did_change)
304 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s_aux_fit, matrix_s_mixed
305 TYPE(
mo_set_type),
DIMENSION(:),
INTENT(IN) :: mos, mos_aux_fit
307 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: rtp_coeff_aux_fit
308 LOGICAL,
INTENT(IN) :: geometry_did_change
310 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rtp_fit_mo_coeffs_none'
312 INTEGER :: handle, ispin, nao_aux_fit, nao_orb, &
313 natoms, nmo, nmo_mos, nspins
314 REAL(kind=
dp),
DIMENSION(:),
POINTER :: occ_num, occ_num_aux
315 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
316 TYPE(
cp_fm_type),
POINTER :: mo_coeff, mo_coeff_aux_fit
318 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
321 CALL timeset(routinen, handle)
323 NULLIFY (dft_control, qs_kind_set)
325 IF (.NOT. (
ASSOCIATED(admm_env)))
THEN
326 CALL get_qs_env(qs_env, input=input, natom=natoms, dft_control=dft_control, qs_kind_set=qs_kind_set)
327 CALL get_qs_kind_set(qs_kind_set, nsgf=nao_aux_fit, basis_type=
"AUX_FIT")
328 CALL admm_env_create(admm_env, dft_control%admm_control, mos, para_env, natoms, nao_aux_fit)
334 nao_aux_fit = admm_env%nao_aux_fit
335 nao_orb = admm_env%nao_orb
340 IF (geometry_did_change)
THEN
353 CALL parallel_gemm(
'N',
'N', nao_aux_fit, nao_orb, nao_aux_fit, &
354 1.0_dp, admm_env%S_inv, admm_env%Q, 0.0_dp, &
360 nmo = admm_env%nmo(ispin)
363 CALL get_rtp(rtp=rtp, mos_new=mos_new)
364 CALL get_mo_set(mos(ispin), mo_coeff=mo_coeff, occupation_numbers=occ_num, nmo=nmo_mos)
365 CALL get_mo_set(mos_aux_fit(ispin), mo_coeff=mo_coeff_aux_fit, &
366 occupation_numbers=occ_num_aux)
369 1.0_dp, admm_env%A, mos_new(2*ispin - 1), 0.0_dp, &
370 rtp_coeff_aux_fit(2*ispin - 1))
372 1.0_dp, admm_env%A, mos_new(2*ispin), 0.0_dp, &
373 rtp_coeff_aux_fit(2*ispin))
375 CALL cp_fm_to_fm(rtp_coeff_aux_fit(2*ispin - 1), mo_coeff_aux_fit)
378 CALL timestop(handle)
380 END SUBROUTINE rtp_fit_mo_coeffs_none
389 SUBROUTINE calculate_rtp_admm_density(density_matrix_aux, density_matrix_aux_im, &
390 rtp_coeff_aux_fit, ispin)
392 TYPE(
dbcsr_type),
POINTER :: density_matrix_aux, density_matrix_aux_im
393 TYPE(
cp_fm_type),
DIMENSION(:),
INTENT(IN) :: rtp_coeff_aux_fit
394 INTEGER,
INTENT(in) :: ispin
396 CHARACTER(len=*),
PARAMETER :: routinen =
'calculate_rtp_admm_density'
397 REAL(kind=
dp),
PARAMETER ::
one = 1.0_dp,
zero = 0.0_dp
399 INTEGER :: handle, im, ncol, re
400 REAL(kind=
dp) :: alpha
402 CALL timeset(routinen, handle)
404 re = 2*ispin - 1; im = 2*ispin
405 alpha = 3*
one - real(
SIZE(rtp_coeff_aux_fit)/2,
dp)
409 matrix_v=rtp_coeff_aux_fit(re), &
415 matrix_v=rtp_coeff_aux_fit(im), &
422 matrix_v=rtp_coeff_aux_fit(im), &
423 matrix_g=rtp_coeff_aux_fit(re), &
425 alpha=2.0_dp*alpha, &
428 CALL timestop(handle)
430 END SUBROUTINE calculate_rtp_admm_density
439 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rtp_admm_merge_ks_matrix'
441 INTEGER :: handle, ispin
443 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_ks_aux_fit, &
444 matrix_ks_aux_fit_im, matrix_ks_im
447 NULLIFY (admm_env, dft_control, matrix_ks, matrix_ks_im, matrix_ks_aux_fit, matrix_ks_aux_fit_im)
448 CALL timeset(routinen, handle)
452 dft_control=dft_control, &
453 matrix_ks=matrix_ks, &
454 matrix_ks_im=matrix_ks_im)
455 CALL get_admm_env(admm_env, matrix_ks_aux_fit=matrix_ks_aux_fit, matrix_ks_aux_fit_im=matrix_ks_aux_fit_im)
459 DO ispin = 1, dft_control%nspins
461 SELECT CASE (admm_env%purification_method)
463 CALL rt_merge_ks_matrix_none(ispin, admm_env, &
464 matrix_ks, matrix_ks_aux_fit)
465 CALL rt_merge_ks_matrix_none(ispin, admm_env, &
466 matrix_ks_im, matrix_ks_aux_fit_im)
468 cpwarn(
"only purification NONE possible with RTP/EMD at the moment")
472 CALL timestop(handle)
483 SUBROUTINE rt_merge_ks_matrix_none(ispin, admm_env, &
484 matrix_ks, matrix_ks_aux_fit)
485 INTEGER,
INTENT(IN) :: ispin
487 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_ks_aux_fit
489 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rt_merge_ks_matrix_none'
491 CHARACTER :: matrix_type_fit
492 INTEGER :: handle, nao_aux_fit, nao_orb, nmo
493 INTEGER,
SAVE :: counter = 0
497 CALL timeset(routinen, handle)
499 counter = counter + 1
500 nao_aux_fit = admm_env%nao_aux_fit
501 nao_orb = admm_env%nao_orb
502 nmo = admm_env%nmo(ispin)
503 CALL dbcsr_create(matrix_ks_nosym, template=matrix_ks_aux_fit(ispin)%matrix, &
504 matrix_type=dbcsr_type_no_symmetry)
511 CALL parallel_gemm(
'N',
'N', nao_aux_fit, nao_orb, nao_aux_fit, &
512 1.0_dp, admm_env%K(ispin), admm_env%A, 0.0_dp, &
513 admm_env%work_aux_orb)
515 CALL parallel_gemm(
'T',
'N', nao_orb, nao_orb, nao_aux_fit, &
516 1.0_dp, admm_env%A, admm_env%work_aux_orb, 0.0_dp, &
517 admm_env%work_orb_orb)
519 CALL dbcsr_get_info(matrix_ks_aux_fit(ispin)%matrix, matrix_type=matrix_type_fit)
521 NULLIFY (matrix_k_tilde)
522 ALLOCATE (matrix_k_tilde)
523 CALL dbcsr_create(matrix_k_tilde, template=matrix_ks(ispin)%matrix, &
524 name=
'MATRIX K_tilde', matrix_type=matrix_type_fit)
526 CALL dbcsr_copy(matrix_k_tilde, matrix_ks(ispin)%matrix)
528 CALL copy_fm_to_dbcsr(admm_env%work_orb_orb, matrix_k_tilde, keep_sparsity=.true.)
530 CALL dbcsr_add(matrix_ks(ispin)%matrix, matrix_k_tilde, 1.0_dp, 1.0_dp)
535 CALL timestop(handle)
537 END SUBROUTINE rt_merge_ks_matrix_none
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.
subroutine, public admm_env_create(admm_env, admm_control, mos, para_env, natoms, nao_aux_fit, blacs_env_ext)
creates ADMM environment, initializes the basic types
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_deallocate_matrix(matrix)
...
subroutine, public dbcsr_desymmetrize(matrix_a, matrix_b)
...
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_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
...
DBCSR operations in CP2K.
subroutine, public copy_dbcsr_to_fm(matrix, fm)
Copy a DBCSR matrix to a BLACS 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_uplo_to_full(matrix, work, uplo)
given a triangular matrix according to uplo, computes the corresponding full matrix
various cholesky decomposition related routines
subroutine, public cp_fm_cholesky_invert(matrix, n, info_out)
used to replace the cholesky decomposition by the inverse
subroutine, public cp_fm_cholesky_decompose(matrix, n, info_out)
used to replace a symmetric positive def. matrix M with its cholesky decomposition U: M = U^T * U,...
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
Utilities for hfx and admm methods.
subroutine, public create_admm_xc_section(x_data, xc_section, admm_env)
This routine modifies the xc section depending on the potential type used for the HF exchange and the...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Definition of mathematical constants and functions.
real(kind=dp), parameter, public one
real(kind=dp), parameter, public zero
Interface to the message passing library MPI.
basic linear algebra operations for full matrixes
Calculate the plane wave density by collocating the primitive Gaussian functions (pgf).
subroutine, public calculate_rho_elec(matrix_p, matrix_p_kp, rho, rho_gspace, total_rho, ks_env, soft_valid, compute_tau, compute_grad, basis_type, der_type, idir, task_list_external, pw_env_external)
computes the density corresponding to a given density matrix on the grid
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 set_qs_env(qs_env, super_cell, mos, qmmm, qmmm_periodic, ewald_env, ewald_pw, mpools, rho_external, external_vxc, mask, scf_control, rel_control, qs_charges, ks_env, ks_qmmm_env, wf_history, scf_env, active_space, input, oce, rho_atom_set, rho0_atom_set, rho0_mpole, run_rtp, rtp, rhoz_set, rhoz_tot, ecoul_1c, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, efield, linres_control, xas_env, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, ls_scf_env, do_transport, transport_env, lri_env, lri_density, exstate_env, ec_env, dispersion_env, harris_env, gcp_env, mp2_env, bs_env, kg_env, force, kpoints, wanniercentres, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs)
Set the QUICKSTEP environment.
subroutine, public prepare_gapw_den(qs_env, local_rho_set, do_rho0, kind_set_external, pw_env_sub)
...
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind_set(qs_kind_set, all_potential_present, tnadd_potential_present, gth_potential_present, sgp_potential_present, paw_atom_present, dft_plus_u_atom_present, maxcgf, maxsgf, maxco, maxco_proj, maxgtops, maxlgto, maxlprj, maxnset, maxsgf_set, ncgf, npgf, nset, nsgf, nshell, maxpol, maxlppl, maxlppnl, maxppnl, nelectron, maxder, max_ngrid_rad, max_sph_harm, maxg_iso_not0, lmax_rho0, basis_rcut, basis_type, total_zeff_corr, npgf_seg)
Get attributes of an atomic kind set.
Definition and initialisation of the mo data type.
subroutine, public get_mo_set(mo_set, maxocc, homo, lfomo, nao, nelectron, n_el_f, nmo, eigenvalues, occupation_numbers, mo_coeff, mo_coeff_b, uniform_occupation, kts, mu, flexible_electron_count)
Get the components of a MO set data structure.
subroutine, public calculate_rho_atom_coeff(qs_env, rho_ao, rho_atom_set, qs_kind_set, oce, sab, para_env)
...
superstucture that hold various representations of the density and keeps track of which ones are vali...
subroutine, public qs_rho_set(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)
...
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...
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)
...
Utilities for rtp in combination with admm methods adapted routines from admm_method (author Manuel G...
subroutine, public rtp_admm_merge_ks_matrix(qs_env)
...
subroutine, public rtp_admm_calc_rho_aux(qs_env)
Compute the ADMM density matrix in case of rtp (complex MO's)
stores some data used in wavefunction fitting
stores all the informations relevant to an mpi environment
Provides all information about a quickstep kind.
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
keeps the density in various representations, keeping track of which ones are valid.