34 USE dbcsr_api,
ONLY: dbcsr_copy,&
67 #include "./base/base_uses.f90"
73 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'rpa_rse'
91 SUBROUTINE rse_energy(qs_env, mp2_env, para_env, dft_control, &
92 mo_coeff, nmo, homo, Eigenval)
93 TYPE(qs_environment_type),
INTENT(IN),
POINTER :: qs_env
94 TYPE(mp2_type),
INTENT(INOUT) :: mp2_env
95 TYPE(mp_para_env_type),
INTENT(IN),
POINTER :: para_env
96 TYPE(dft_control_type),
INTENT(IN),
POINTER :: dft_control
97 TYPE(cp_fm_type),
DIMENSION(:),
INTENT(IN) :: mo_coeff
98 INTEGER,
INTENT(IN) :: nmo
99 INTEGER,
DIMENSION(:),
INTENT(IN) :: homo
100 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: eigenval
102 CHARACTER(LEN=*),
PARAMETER :: routinen =
'rse_energy'
104 INTEGER :: dimen, handle, i_global, iib, ispin, &
105 j_global, jjb, n_rep_hf, ncol_local, &
107 INTEGER,
DIMENSION(:),
POINTER :: col_indices, row_indices
108 LOGICAL :: do_hfx, hfx_treat_lsd_in_core
109 REAL(kind=
dp) :: coeff, corr, rse_corr
110 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: diag_diff
111 TYPE(cp_blacs_env_type),
POINTER :: blacs_env
112 TYPE(cp_fm_struct_type),
POINTER :: fm_struct_tmp
113 TYPE(cp_fm_type) :: fm_ao, fm_ao_mo
114 TYPE(cp_fm_type),
ALLOCATABLE,
DIMENSION(:) :: fm_p_mu_nu, fm_x_mo, fm_xc_mo
115 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: mat_mu_nu, matrix_s, rho_ao
116 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
118 TYPE(qs_energy_type),
POINTER :: energy
119 TYPE(qs_rho_type),
POINTER :: rho
120 TYPE(section_vals_type),
POINTER :: hfx_sections, input
122 CALL timeset(routinen, handle)
124 nspins = dft_control%nspins
128 nrow_local=nrow_local, &
129 ncol_local=ncol_local, &
130 row_indices=row_indices, &
131 col_indices=col_indices)
135 NULLIFY (input, matrix_s, blacs_env, rho, energy, sab_orb)
139 blacs_env=blacs_env, &
147 NULLIFY (hfx_sections)
159 ALLOCATE (mat_mu_nu(ispin)%matrix)
160 CALL dbcsr_create(matrix=mat_mu_nu(ispin)%matrix, template=matrix_s(1)%matrix, name=
"T_mu_nu", &
161 matrix_type=dbcsr_type_symmetric, nze=0)
163 CALL dbcsr_set(mat_mu_nu(ispin)%matrix, 0.0_dp)
167 ALLOCATE (fm_p_mu_nu(nspins))
168 NULLIFY (fm_struct_tmp)
170 nrow_global=dimen, ncol_global=dimen)
172 CALL cp_fm_create(fm_p_mu_nu(ispin), fm_struct_tmp, name=
"P_mu_nu")
177 NULLIFY (fm_struct_tmp)
179 nrow_global=dimen, ncol_global=dimen)
180 ALLOCATE (fm_x_mo(nspins), fm_xc_mo(nspins))
182 CALL cp_fm_create(fm_x_mo(ispin), fm_struct_tmp, name=
"f_X_mo")
183 CALL cp_fm_create(fm_xc_mo(ispin), fm_struct_tmp, name=
"f_XC_mo")
190 nrow_global=dimen, ncol_global=dimen)
195 nrow_global=dimen, ncol_global=dimen)
196 CALL cp_fm_create(fm_ao_mo, fm_struct_tmp, name=
"f_ao_mo")
207 IF (nspins == 1) coeff = 2.0_dp
209 CALL parallel_gemm(transa=
'N', transb=
'T', m=dimen, n=dimen, k=homo(ispin), alpha=coeff, &
210 matrix_a=mo_coeff(ispin), matrix_b=mo_coeff(ispin), &
211 beta=0.0_dp, matrix_c=fm_p_mu_nu(ispin))
215 CALL exchange_contribution(qs_env, para_env, dimen, mo_coeff, &
216 hfx_sections, n_rep_hf, &
217 rho, mat_mu_nu, fm_p_mu_nu, &
218 fm_ao, fm_x_mo, fm_ao_mo, &
219 mp2_env%ri_grad%free_hfx_buffer)
222 CALL xc_contribution(qs_env, fm_ao, fm_ao_mo, fm_xc_mo, mo_coeff, dimen)
224 ALLOCATE (diag_diff(dimen))
236 nrow_local=nrow_local, &
237 ncol_local=ncol_local, &
238 row_indices=row_indices, &
239 col_indices=col_indices)
246 DO jjb = 1, ncol_local
247 j_global = col_indices(jjb)
248 DO iib = 1, nrow_local
249 i_global = row_indices(iib)
250 IF ((i_global .LE. homo(ispin)) .AND. (j_global .GT. homo(ispin)))
THEN
251 corr = corr + fm_x_mo(ispin)%local_data(iib, jjb)**2.0_dp/ &
252 (eigenval(i_global, ispin) - eigenval(j_global, ispin) - diag_diff(i_global) + diag_diff(j_global))
258 rse_corr = rse_corr + corr
261 CALL para_env%sum(rse_corr)
263 IF (nspins == 1) rse_corr = rse_corr*2.0_dp
265 mp2_env%ri_rpa%rse_corr_diag = rse_corr
267 CALL non_diag_rse(fm_x_mo, eigenval, dimen, homo, para_env, blacs_env, rse_corr)
269 IF (nspins == 1) rse_corr = rse_corr*2.0_dp
271 mp2_env%ri_rpa%rse_corr = rse_corr
274 DEALLOCATE (diag_diff)
275 CALL cp_fm_release(fm_ao)
276 CALL cp_fm_release(fm_ao_mo)
277 CALL cp_fm_release(fm_p_mu_nu)
278 CALL cp_fm_release(fm_x_mo)
279 CALL cp_fm_release(fm_xc_mo)
281 CALL dbcsr_release(mat_mu_nu(ispin)%matrix)
282 DEALLOCATE (mat_mu_nu(ispin)%matrix)
284 DEALLOCATE (mat_mu_nu)
286 CALL timestop(handle)
306 SUBROUTINE exchange_contribution(qs_env, para_env, dimen, mo_coeff, &
307 hfx_sections, n_rep_hf, &
308 rho_work, mat_mu_nu, fm_P_mu_nu, &
309 fm_X_ao, fm_X_mo, fm_X_ao_mo, &
310 recalc_hfx_integrals)
311 TYPE(qs_environment_type),
INTENT(IN),
POINTER :: qs_env
312 TYPE(mp_para_env_type),
INTENT(IN),
POINTER :: para_env
313 INTEGER,
INTENT(IN) :: dimen
314 TYPE(cp_fm_type),
DIMENSION(:),
INTENT(IN) :: mo_coeff
315 TYPE(section_vals_type),
INTENT(IN),
POINTER :: hfx_sections
316 INTEGER,
INTENT(IN) :: n_rep_hf
317 TYPE(qs_rho_type),
INTENT(IN),
POINTER :: rho_work
318 TYPE(dbcsr_p_type),
DIMENSION(:),
INTENT(IN), &
320 TYPE(cp_fm_type),
DIMENSION(:),
INTENT(IN) :: fm_p_mu_nu
321 TYPE(cp_fm_type),
INTENT(IN) :: fm_x_ao
322 TYPE(cp_fm_type),
DIMENSION(:),
INTENT(IN) :: fm_x_mo
323 TYPE(cp_fm_type),
INTENT(IN) :: fm_x_ao_mo
324 LOGICAL,
INTENT(IN) :: recalc_hfx_integrals
326 CHARACTER(LEN=*),
PARAMETER :: routinen =
'exchange_contribution'
328 INTEGER :: handle, irep, is, ns
329 LOGICAL :: my_recalc_hfx_integrals
330 REAL(kind=
dp) :: ehfx
331 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: p_mu_nu, rho_work_ao
332 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: mat_2d, rho_ao_2d
334 CALL timeset(routinen, handle)
336 my_recalc_hfx_integrals = recalc_hfx_integrals
339 ns =
SIZE(rho_work_ao)
343 CALL dbcsr_init_p(p_mu_nu(is)%matrix)
344 CALL dbcsr_create(p_mu_nu(is)%matrix, template=rho_work_ao(1)%matrix)
345 CALL dbcsr_copy(p_mu_nu(is)%matrix, rho_work_ao(1)%matrix)
346 CALL dbcsr_set(p_mu_nu(is)%matrix, 0.0_dp)
349 CALL exx_pre_hfx(hfx_sections, qs_env%mp2_env%ri_rpa%x_data, qs_env%mp2_env%ri_rpa%reuse_hfx)
351 CALL copy_fm_to_dbcsr(fm_p_mu_nu(is), p_mu_nu(1)%matrix, keep_sparsity=.true.)
353 CALL dbcsr_set(mat_mu_nu(1)%matrix, 0.0_dp)
355 IF (qs_env%mp2_env%ri_rpa%x_data(1, 1)%do_hfx_ri)
THEN
357 DO irep = 1, n_rep_hf
358 rho_ao_2d(1:ns, 1:1) => p_mu_nu(1:ns)
359 mat_2d(1:ns, 1:1) => mat_mu_nu(1:ns)
360 CALL hfx_ri_update_ks(qs_env, qs_env%mp2_env%ri_rpa%x_data(irep, 1)%ri_data, mat_2d, ehfx, &
361 rho_ao=rho_ao_2d, geometry_did_change=my_recalc_hfx_integrals, nspins=1, &
362 hf_fraction=qs_env%mp2_env%ri_rpa%x_data(irep, 1)%general_parameter%fraction)
364 IF (ns == 2)
CALL dbcsr_scale(mat_mu_nu(1)%matrix, 2.0_dp)
365 my_recalc_hfx_integrals = .false.
370 DO irep = 1, n_rep_hf
371 rho_ao_2d(1:ns, 1:1) => p_mu_nu(1:ns)
372 mat_2d(1:ns, 1:1) => mat_mu_nu(1:ns)
373 CALL integrate_four_center(qs_env, qs_env%mp2_env%ri_rpa%x_data, mat_2d, ehfx, rho_ao_2d, hfx_sections, &
374 para_env, my_recalc_hfx_integrals, irep, .true., &
377 my_recalc_hfx_integrals = .false.
387 CALL parallel_gemm(
'T',
'N', dimen, dimen, dimen, 1.0_dp, &
388 mo_coeff(is), fm_x_ao, 0.0_dp, fm_x_ao_mo)
391 CALL parallel_gemm(
'N',
'N', dimen, dimen, dimen, 1.0_dp, &
392 fm_x_ao_mo, mo_coeff(is), 1.0_dp, fm_x_mo(is))
395 CALL exx_post_hfx(qs_env, qs_env%mp2_env%ri_rpa%x_data, qs_env%mp2_env%ri_rpa%reuse_hfx)
398 DO is = 1,
SIZE(p_mu_nu)
399 CALL dbcsr_release(p_mu_nu(is)%matrix)
400 DEALLOCATE (p_mu_nu(is)%matrix)
404 CALL timestop(handle)
406 END SUBROUTINE exchange_contribution
417 SUBROUTINE xc_contribution(qs_env, fm_XC_ao, fm_XC_ao_mo, fm_XC_mo, mo_coeff, dimen)
418 TYPE(qs_environment_type),
INTENT(IN),
POINTER :: qs_env
419 TYPE(cp_fm_type),
INTENT(IN) :: fm_xc_ao, fm_xc_ao_mo
420 TYPE(cp_fm_type),
DIMENSION(:),
INTENT(IN) :: fm_xc_mo, mo_coeff
421 INTEGER,
INTENT(IN) :: dimen
423 CHARACTER(LEN=*),
PARAMETER :: routinen =
'xc_contribution'
427 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_vxc
428 TYPE(pw_r3d_rs_type),
DIMENSION(:),
POINTER :: tau_rspace, v_rspace
429 TYPE(qs_ks_env_type),
POINTER :: ks_env
430 TYPE(qs_rho_type),
POINTER :: rho
431 TYPE(section_vals_type),
POINTER :: input, xc_section
433 CALL timeset(routinen, handle)
435 NULLIFY (matrix_vxc, v_rspace, tau_rspace, input, xc_section, ks_env, &
437 CALL get_qs_env(qs_env, matrix_vxc=matrix_vxc, input=input, ks_env=ks_env, rho=rho)
441 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho, xc_section=xc_section, &
442 vxc_rho=v_rspace, vxc_tau=tau_rspace, exc=exc)
444 IF (
ASSOCIATED(v_rspace))
THEN
447 DO i = 1,
SIZE(v_rspace)
448 CALL v_rspace(i)%release()
450 DEALLOCATE (v_rspace)
452 DO i = 1,
SIZE(matrix_vxc)
458 CALL parallel_gemm(
'T',
'N', dimen, dimen, dimen, 1.0_dp, &
459 mo_coeff(i), fm_xc_ao, 0.0_dp, fm_xc_ao_mo)
462 CALL parallel_gemm(
'N',
'N', dimen, dimen, dimen, 1.0_dp, &
463 fm_xc_ao_mo, mo_coeff(i), 1.0_dp, fm_xc_mo(i))
467 DO i = 1,
SIZE(matrix_vxc)
468 CALL dbcsr_release(matrix_vxc(i)%matrix)
469 DEALLOCATE (matrix_vxc(i)%matrix)
471 DEALLOCATE (matrix_vxc)
474 CALL timestop(handle)
476 END SUBROUTINE xc_contribution
488 SUBROUTINE non_diag_rse(fm_F_mo, eigenval, dimen, homo, para_env, &
490 TYPE(cp_fm_type),
DIMENSION(:),
INTENT(IN) :: fm_f_mo
491 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: eigenval
492 INTEGER,
INTENT(IN) :: dimen
493 INTEGER,
DIMENSION(:),
INTENT(IN) :: homo
494 TYPE(mp_para_env_type),
INTENT(IN),
POINTER :: para_env
495 TYPE(cp_blacs_env_type),
INTENT(IN),
POINTER :: blacs_env
496 REAL(kind=
dp),
INTENT(OUT) :: rse_corr
498 CHARACTER(LEN=*),
PARAMETER :: routinen =
'non_diag_rse'
500 INTEGER :: handle, i_global, iib, ispin, j_global, &
501 jjb, ncol_local, nrow_local, nspins, &
503 INTEGER,
DIMENSION(:),
POINTER :: col_indices, row_indices
504 REAL(kind=
dp) :: corr
505 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: eig_o, eig_semi_can, eig_v
506 TYPE(cp_fm_struct_type),
POINTER :: fm_struct_tmp
507 TYPE(cp_fm_type) :: fm_f_oo, fm_f_ov, fm_f_vv, fm_o, fm_tmp, &
510 CALL timeset(routinen, handle)
512 nspins =
SIZE(fm_f_mo)
517 nrow_local=nrow_local, &
518 ncol_local=ncol_local, &
519 row_indices=row_indices, &
520 col_indices=col_indices)
524 DO jjb = 1, ncol_local
525 j_global = col_indices(jjb)
526 DO iib = 1, nrow_local
527 i_global = row_indices(iib)
528 IF (i_global .EQ. j_global) fm_f_mo(ispin)%local_data(iib, jjb) = &
529 fm_f_mo(ispin)%local_data(iib, jjb) + eigenval(i_global, ispin)
539 NULLIFY (fm_struct_tmp)
541 nrow_global=homo(ispin), ncol_global=homo(ispin))
549 nrow=homo(ispin), ncol=homo(ispin), &
550 s_firstrow=1, s_firstcol=1, &
551 t_firstrow=1, t_firstcol=1)
552 virtual = dimen - homo(ispin)
553 NULLIFY (fm_struct_tmp)
555 nrow_global=virtual, ncol_global=virtual)
563 nrow=virtual, ncol=virtual, &
564 s_firstrow=homo(ispin) + 1, s_firstcol=homo(ispin) + 1, &
565 t_firstrow=1, t_firstcol=1)
568 ALLOCATE (eig_o(homo(ispin)))
569 ALLOCATE (eig_v(virtual))
576 ALLOCATE (eig_semi_can(dimen))
577 eig_semi_can = 0.0_dp
578 eig_semi_can(1:homo(ispin)) = eig_o(:)
579 eig_semi_can(homo(ispin) + 1:dimen) = eig_v(:)
582 NULLIFY (fm_struct_tmp)
584 nrow_global=homo(ispin), ncol_global=virtual)
592 nrow=homo(ispin), ncol=virtual, &
593 s_firstrow=1, s_firstcol=homo(ispin) + 1, &
594 t_firstrow=1, t_firstcol=1)
596 CALL parallel_gemm(transa=
'T', transb=
'N', m=homo(ispin), n=virtual, k=homo(ispin), alpha=1.0_dp, &
597 matrix_a=fm_o, matrix_b=fm_f_ov, beta=0.0_dp, matrix_c=fm_tmp)
599 CALL parallel_gemm(transa=
'N', transb=
'N', m=homo(ispin), n=virtual, k=virtual, alpha=1.0_dp, &
600 matrix_a=fm_tmp, matrix_b=fm_u, beta=0.0_dp, matrix_c=fm_f_ov)
604 nrow_local=nrow_local, &
605 ncol_local=ncol_local, &
606 row_indices=row_indices, &
607 col_indices=col_indices)
612 DO jjb = 1, ncol_local
613 j_global = col_indices(jjb)
614 DO iib = 1, nrow_local
615 i_global = row_indices(iib)
616 corr = corr + fm_f_ov%local_data(iib, jjb)**2.0_dp/ &
617 (eig_semi_can(i_global) - eig_semi_can(j_global + homo(ispin)))
622 rse_corr = rse_corr + corr
625 DEALLOCATE (eig_semi_can)
629 CALL cp_fm_release(fm_f_ov)
630 CALL cp_fm_release(fm_f_oo)
631 CALL cp_fm_release(fm_f_vv)
632 CALL cp_fm_release(fm_u)
633 CALL cp_fm_release(fm_o)
634 CALL cp_fm_release(fm_tmp)
638 CALL para_env%sum(rse_corr)
640 CALL timestop(handle)
642 END SUBROUTINE non_diag_rse
methods related to the blacs parallel environment
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
Routines that link DBCSR and CP2K concepts together.
subroutine, public cp_dbcsr_alloc_block_from_nbl(matrix, sab_orb, desymmetrize)
allocate the blocks of a dbcsr based on the neighbor list
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_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....
used for collecting some of the diagonalization schemes available for cp_fm_type. cp_fm_power also mo...
subroutine, public choose_eigv_solver(matrix, eigenvectors, eigenvalues, info)
Choose the Eigensolver depending on which library is available ELPA seems to be unstable for small sy...
represent the structure of a full matrix
subroutine, public cp_fm_struct_create(fmstruct, para_env, context, nrow_global, ncol_global, nrow_block, ncol_block, descriptor, first_p_pos, local_leading_dimension, template_fmstruct, square_blocks, force_block)
allocates and initializes a full matrix structure
subroutine, public cp_fm_struct_release(fmstruct)
releases a full matrix structure
represent a full matrix distributed on many processors
subroutine, public cp_fm_get_diag(matrix, diag)
returns the diagonal elements of a fm
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_to_fm_submat(msource, mtarget, nrow, ncol, s_firstrow, s_firstcol, t_firstrow, t_firstcol)
copy just a part ot the matrix
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
Routines to calculate HFX energy and potential.
subroutine, public integrate_four_center(qs_env, x_data, ks_matrix, ehfx, rho_ao, hfx_section, para_env, geometry_did_change, irep, distribute_fock_matrix, ispin)
computes four center integrals for a full basis set and updates the Kohn-Sham-Matrix and energy....
Routines to calculate EXX in RPA and energy correction methods.
subroutine, public exx_pre_hfx(ext_hfx_section, x_data, reuse_hfx)
Prepare the external x_data for integration. Simply change the HFX fraction in case the qs_envx_data ...
subroutine, public exx_post_hfx(qs_env, x_data, reuse_hfx)
Revert back to the proper HFX fraction in case qs_envx_data is reused.
subroutine, public hfx_ri_update_ks(qs_env, ri_data, ks_matrix, ehfx, mos, rho_ao, geometry_did_change, nspins, hf_fraction)
...
Defines the basic variable types.
integer, parameter, public dp
Interface to the message passing library MPI.
Types needed for MP2 calculations.
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_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, 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, rhs)
Get the QUICKSTEP environment.
routines that build the Kohn-Sham matrix (i.e calculate the coulomb and xc parts
subroutine, public compute_matrix_vxc(qs_env, v_rspace, matrix_vxc)
compute matrix_vxc, defined via the potential created by qs_vxc_create ignores things like tau functi...
Define the neighbor list data types and the corresponding functionality.
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 qs_vxc_create(ks_env, rho_struct, xc_section, vxc_rho, vxc_tau, exc, just_energy, edisp, dispersion_env, adiabatic_rescale_factor, pw_env_external)
calculates and allocates the xc potential, already reducing it to the dependence on rho and the one o...
Routines to compute singles correction to RPA (RSE)
subroutine, public rse_energy(qs_env, mp2_env, para_env, dft_control, mo_coeff, nmo, homo, Eigenval)
Single excitations energy corrections for RPA.