65#include "./base/base_uses.f90"
74 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'rtp_admm_methods'
88 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rtp_admm_calc_rho_aux'
90 CHARACTER(LEN=default_string_length) :: basis_type
91 INTEGER :: handle, ispin, nmo_aux, nspins
92 LOGICAL :: gapw, s_mstruct_changed
93 REAL(kind=
dp),
DIMENSION(:),
POINTER :: occ_num_aux, tot_rho_r_aux
95 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: rtp_coeff_aux_fit
96 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_p_aux, matrix_p_aux_im, &
98 matrix_s_aux_fit_vs_orb
100 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mos, mos_aux_fit
109 CALL timeset(routinen, handle)
110 NULLIFY (admm_env, matrix_p_aux, matrix_p_aux_im, mos, &
111 mos_aux_fit, para_env, matrix_s_aux_fit, matrix_s_aux_fit_vs_orb, rho, &
112 ks_env, dft_control, tot_rho_r_aux, rho_r_aux, rho_g_aux, task_list_aux_fit)
117 dft_control=dft_control, &
122 s_mstruct_changed=s_mstruct_changed)
123 CALL get_admm_env(admm_env, matrix_s_aux_fit=matrix_s_aux_fit, task_list_aux_fit=task_list_aux_fit, &
124 matrix_s_aux_fit_vs_orb=matrix_s_aux_fit_vs_orb, mos_aux_fit=mos_aux_fit, &
125 rho_aux_fit=rho_aux_fit)
126 gapw = admm_env%do_gapw
128 nspins = dft_control%nspins
130 CALL get_rtp(rtp=rtp, admm_mos=rtp_coeff_aux_fit)
131 CALL rtp_admm_fit_mo_coeffs(qs_env, admm_env, dft_control%admm_control, para_env, &
132 matrix_s_aux_fit, matrix_s_aux_fit_vs_orb, &
133 mos, mos_aux_fit, rtp, rtp_coeff_aux_fit, &
138 rho_ao=matrix_p_aux, &
139 rho_ao_im=matrix_p_aux_im, &
142 tot_rho_r=tot_rho_r_aux)
144 CALL get_mo_set(mos_aux_fit(ispin), occupation_numbers=occ_num_aux, nmo=nmo_aux)
146 CALL rtp_admm_calculate_dm(admm_env, rtp_coeff_aux_fit, &
147 matrix_p_aux(ispin)%matrix, &
148 matrix_p_aux_im(ispin)%matrix, &
152 basis_type =
"AUX_FIT"
154 basis_type =
"AUX_FIT_SOFT"
155 task_list_aux_fit => admm_env%admm_gapw_env%task_list
159 rho=rho_r_aux(ispin), &
160 rho_gspace=rho_g_aux(ispin), &
161 total_rho=tot_rho_r_aux(ispin), &
162 ks_env=ks_env, soft_valid=.false., &
163 basis_type=
"AUX_FIT", &
164 task_list_external=task_list_aux_fit)
169 rho_atom_set=admm_env%admm_gapw_env%local_rho_set%rho_atom_set, &
170 qs_kind_set=admm_env%admm_gapw_env%admm_kind_set, &
171 oce=admm_env%admm_gapw_env%oce, sab=admm_env%sab_aux_fit, &
174 CALL prepare_gapw_den(qs_env, local_rho_set=admm_env%admm_gapw_env%local_rho_set, &
175 do_rho0=.false., kind_set_external=admm_env%admm_gapw_env%admm_kind_set)
179 CALL qs_rho_set(rho_aux_fit, rho_r_valid=.true., rho_g_valid=.true.)
181 CALL timestop(handle)
194 SUBROUTINE rtp_admm_calculate_dm(admm_env, rtp_coeff_aux_fit, density_matrix_aux, &
195 density_matrix_aux_im, occupation, ispin)
197 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: rtp_coeff_aux_fit
198 TYPE(
dbcsr_type),
POINTER :: density_matrix_aux, density_matrix_aux_im
199 REAL(kind=
dp),
DIMENSION(:),
INTENT(in) :: occupation
200 INTEGER,
INTENT(in) :: ispin
202 CHARACTER(len=*),
PARAMETER :: routinen =
'rtp_admm_calculate_dm'
206 CALL timeset(routinen, handle)
208 SELECT CASE (admm_env%purification_method)
210 CALL calculate_rtp_admm_density(density_matrix_aux, density_matrix_aux_im, &
211 rtp_coeff_aux_fit, occupation, ispin)
213 cpwarn(
"only purification NONE possible with RTP/EMD at the moment")
216 CALL timestop(handle)
218 END SUBROUTINE rtp_admm_calculate_dm
234 SUBROUTINE rtp_admm_fit_mo_coeffs(qs_env, admm_env, admm_control, para_env, matrix_s_aux_fit, matrix_s_mixed, &
235 mos, mos_aux_fit, rtp, rtp_coeff_aux_fit, geometry_did_change)
241 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s_aux_fit, matrix_s_mixed
242 TYPE(
mo_set_type),
DIMENSION(:),
INTENT(IN) :: mos, mos_aux_fit
244 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: rtp_coeff_aux_fit
245 LOGICAL,
INTENT(IN) :: geometry_did_change
247 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rtp_admm_fit_mo_coeffs'
249 INTEGER :: handle, nao_aux_fit, natoms
251 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
254 CALL timeset(routinen, handle)
256 NULLIFY (xc_section, qs_kind_set)
258 IF (.NOT. (
ASSOCIATED(admm_env)))
THEN
260 CALL get_qs_env(qs_env, input=input, natom=natoms, qs_kind_set=qs_kind_set)
261 CALL get_qs_kind_set(qs_kind_set, nsgf=nao_aux_fit, basis_type=
"AUX_FIT")
262 CALL admm_env_create(admm_env, admm_control, mos, para_env, natoms, nao_aux_fit)
268 cpwarn(
"RTP requires BASIS_PROJECTION.")
272 recalc_s = geometry_did_change .OR. (rtp%iter == 0 .AND. (rtp%istep == rtp%i_start))
274 SELECT CASE (admm_env%purification_method)
276 CALL rtp_fit_mo_coeffs_none(qs_env, admm_env, para_env, matrix_s_aux_fit, matrix_s_mixed, &
277 mos, mos_aux_fit, rtp, rtp_coeff_aux_fit, recalc_s)
279 cpwarn(
"Purification method not implemented in combination with RTP")
282 CALL timestop(handle)
284 END SUBROUTINE rtp_admm_fit_mo_coeffs
304 SUBROUTINE rtp_fit_mo_coeffs_none(qs_env, admm_env, para_env, matrix_s_aux_fit, matrix_s_mixed, &
305 mos, mos_aux_fit, rtp, rtp_coeff_aux_fit, geometry_did_change)
310 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s_aux_fit, matrix_s_mixed
311 TYPE(
mo_set_type),
DIMENSION(:),
INTENT(IN) :: mos, mos_aux_fit
313 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: rtp_coeff_aux_fit
314 LOGICAL,
INTENT(IN) :: geometry_did_change
316 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rtp_fit_mo_coeffs_none'
318 INTEGER :: handle, ispin, nao_aux_fit, nao_orb, &
319 natoms, nmo, nmo_mos, nspins
320 REAL(kind=
dp),
DIMENSION(:),
POINTER :: occ_num, occ_num_aux
321 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
322 TYPE(
cp_fm_type),
POINTER :: mo_coeff, mo_coeff_aux_fit
324 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
327 CALL timeset(routinen, handle)
329 NULLIFY (dft_control, qs_kind_set)
331 IF (.NOT. (
ASSOCIATED(admm_env)))
THEN
332 CALL get_qs_env(qs_env, input=input, natom=natoms, dft_control=dft_control, qs_kind_set=qs_kind_set)
333 CALL get_qs_kind_set(qs_kind_set, nsgf=nao_aux_fit, basis_type=
"AUX_FIT")
334 CALL admm_env_create(admm_env, dft_control%admm_control, mos, para_env, natoms, nao_aux_fit)
340 nao_aux_fit = admm_env%nao_aux_fit
341 nao_orb = admm_env%nao_orb
346 IF (geometry_did_change)
THEN
359 CALL parallel_gemm(
'N',
'N', nao_aux_fit, nao_orb, nao_aux_fit, &
360 1.0_dp, admm_env%S_inv, admm_env%Q, 0.0_dp, &
366 nmo = admm_env%nmo(ispin)
369 CALL get_rtp(rtp=rtp, mos_new=mos_new)
370 CALL get_mo_set(mos(ispin), mo_coeff=mo_coeff, occupation_numbers=occ_num, nmo=nmo_mos)
371 CALL get_mo_set(mos_aux_fit(ispin), mo_coeff=mo_coeff_aux_fit, &
372 occupation_numbers=occ_num_aux)
375 1.0_dp, admm_env%A, mos_new(2*ispin - 1), 0.0_dp, &
376 rtp_coeff_aux_fit(2*ispin - 1))
378 1.0_dp, admm_env%A, mos_new(2*ispin), 0.0_dp, &
379 rtp_coeff_aux_fit(2*ispin))
381 CALL cp_fm_to_fm(rtp_coeff_aux_fit(2*ispin - 1), mo_coeff_aux_fit)
384 CALL timestop(handle)
386 END SUBROUTINE rtp_fit_mo_coeffs_none
396 SUBROUTINE calculate_rtp_admm_density(density_matrix_aux, density_matrix_aux_im, &
397 rtp_coeff_aux_fit, occupation, ispin)
399 TYPE(
dbcsr_type),
POINTER :: density_matrix_aux, density_matrix_aux_im
400 TYPE(
cp_fm_type),
DIMENSION(:),
INTENT(IN) :: rtp_coeff_aux_fit
401 REAL(kind=
dp),
DIMENSION(:),
INTENT(in) :: occupation
402 INTEGER,
INTENT(in) :: ispin
404 CHARACTER(len=*),
PARAMETER :: routinen =
'calculate_rtp_admm_density'
405 REAL(kind=
dp),
PARAMETER ::
zero = 0.0_dp
407 INTEGER :: handle, im, ncol, re
408 REAL(kind=
dp) :: alpha
411 CALL timeset(routinen, handle)
413 re = 2*ispin - 1; im = 2*ispin
417 alpha = occupation(1)
418 IF (all(occupation == alpha))
THEN
420 matrix_v=rtp_coeff_aux_fit(re), &
426 matrix_v=rtp_coeff_aux_fit(im), &
433 matrix_v=rtp_coeff_aux_fit(im), &
434 matrix_g=rtp_coeff_aux_fit(re), &
436 alpha=2.0_dp*alpha, &
439 CALL cp_fm_create(fm_tmp, rtp_coeff_aux_fit(1)%matrix_struct)
444 matrix_v=rtp_coeff_aux_fit(re), &
446 ncol=ncol, alpha=alpha)
451 matrix_v=rtp_coeff_aux_fit(im), &
453 ncol=ncol, alpha=alpha)
458 matrix_g=rtp_coeff_aux_fit(re), &
459 ncol=ncol, alpha=2.0_dp*alpha, &
464 CALL timestop(handle)
466 END SUBROUTINE calculate_rtp_admm_density
475 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rtp_admm_merge_ks_matrix'
477 INTEGER :: handle, ispin
479 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_ks_aux_fit, &
480 matrix_ks_aux_fit_im, matrix_ks_im
483 NULLIFY (admm_env, dft_control, matrix_ks, matrix_ks_im, matrix_ks_aux_fit, matrix_ks_aux_fit_im)
484 CALL timeset(routinen, handle)
488 dft_control=dft_control, &
489 matrix_ks=matrix_ks, &
490 matrix_ks_im=matrix_ks_im)
491 CALL get_admm_env(admm_env, matrix_ks_aux_fit=matrix_ks_aux_fit, matrix_ks_aux_fit_im=matrix_ks_aux_fit_im)
495 DO ispin = 1, dft_control%nspins
497 SELECT CASE (admm_env%purification_method)
499 CALL rt_merge_ks_matrix_none(ispin, admm_env, &
500 matrix_ks, matrix_ks_aux_fit)
501 CALL rt_merge_ks_matrix_none(ispin, admm_env, &
502 matrix_ks_im, matrix_ks_aux_fit_im)
504 cpwarn(
"only purification NONE possible with RTP/EMD at the moment")
508 CALL timestop(handle)
519 SUBROUTINE rt_merge_ks_matrix_none(ispin, admm_env, &
520 matrix_ks, matrix_ks_aux_fit)
521 INTEGER,
INTENT(IN) :: ispin
523 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_ks_aux_fit
525 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rt_merge_ks_matrix_none'
527 CHARACTER :: matrix_type_fit
528 INTEGER :: handle, nao_aux_fit, nao_orb, nmo
529 INTEGER,
SAVE :: counter = 0
533 CALL timeset(routinen, handle)
535 counter = counter + 1
536 nao_aux_fit = admm_env%nao_aux_fit
537 nao_orb = admm_env%nao_orb
538 nmo = admm_env%nmo(ispin)
539 CALL dbcsr_create(matrix_ks_nosym, template=matrix_ks_aux_fit(ispin)%matrix, &
540 matrix_type=dbcsr_type_no_symmetry)
547 CALL parallel_gemm(
'N',
'N', nao_aux_fit, nao_orb, nao_aux_fit, &
548 1.0_dp, admm_env%K(ispin), admm_env%A, 0.0_dp, &
549 admm_env%work_aux_orb)
551 CALL parallel_gemm(
'T',
'N', nao_orb, nao_orb, nao_aux_fit, &
552 1.0_dp, admm_env%A, admm_env%work_aux_orb, 0.0_dp, &
553 admm_env%work_orb_orb)
555 CALL dbcsr_get_info(matrix_ks_aux_fit(ispin)%matrix, matrix_type=matrix_type_fit)
557 NULLIFY (matrix_k_tilde)
558 ALLOCATE (matrix_k_tilde)
559 CALL dbcsr_create(matrix_k_tilde, template=matrix_ks(ispin)%matrix, &
560 name=
'MATRIX K_tilde', matrix_type=matrix_type_fit)
562 CALL dbcsr_copy(matrix_k_tilde, matrix_ks(ispin)%matrix)
564 CALL copy_fm_to_dbcsr(admm_env%work_orb_orb, matrix_k_tilde, keep_sparsity=.true.)
566 CALL dbcsr_add(matrix_ks(ispin)%matrix, matrix_k_tilde, 1.0_dp, 1.0_dp)
571 CALL timestop(handle)
573 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, plan)
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_column_scale(matrixa, scaling)
scales column i of matrix a with scaling(i)
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
subroutine, public cp_fm_create(matrix, matrix_struct, name, nrow, ncol, set_zero)
creates a new full matrix with the given structure
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 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, 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, matrix_vhxc, 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 set_qs_env(qs_env, super_cell, mos, qmmm, qmmm_periodic, mimic, 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, rhoz_cneo_set, 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, do_rixs, tb_tblite)
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, do_mtlr_present, basis_type, total_zeff_corr, npgf_seg, cneo_potential_present, nkind_q, natom_q)
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, cmo_coeff)
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.