44#include "./base/base_uses.f90"
49 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
50 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_update_s_mstruct'
69 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_env_update_s_mstruct'
74 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: cw
79 CALL timeset(routinen, handle)
81 cpassert(
ASSOCIATED(qs_env))
85 dft_control=dft_control)
90 IF (dft_control%qs_control%gapw)
THEN
91 qs_env%qs_charges%total_rho_core_rspace = qs_env%local_rho_set%rhoz_tot
94 qs_env%qs_charges%total_rho1_hard_nuc = qs_env%local_rho_set%rhoz_cneo_tot
95 IF (dft_control%qs_control%gapw_control%nopaw_as_gpw)
THEN
96 cpassert(
ASSOCIATED(rho_core))
98 qs_env%qs_charges%total_rho_core_rspace, qs_env, only_nopaw=.true.)
100 IF (
ASSOCIATED(rho_core))
THEN
101 CALL rho_core%release()
102 DEALLOCATE (rho_core)
107 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
109 ELSE IF (dft_control%qs_control%dftb)
THEN
111 ELSE IF (dft_control%qs_control%xtb)
THEN
114 cpassert(
ASSOCIATED(rho_core))
116 qs_env%qs_charges%total_rho_core_rspace, qs_env)
120 do_ppl = dft_control%qs_control%do_ppl_method ==
do_ppl_grid
124 cpassert(
ASSOCIATED(vppl))
129 NULLIFY (rho_nlcc, rho_nlcc_g)
130 CALL get_qs_env(qs_env, rho_nlcc=rho_nlcc, rho_nlcc_g=rho_nlcc_g)
131 IF (
ASSOCIATED(rho_nlcc))
THEN
137 IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
THEN
138 IF (dft_control%qs_control%gapw_control%accurate_xcint)
THEN
139 CALL get_qs_env(qs_env, xcint_weights=xcint_weights, nkind=nk)
143 dft_control%qs_control%gapw_control%aw, cw)
144 xcint_weights%array = 1.0_dp + xcint_weights%array
150 CALL qs_create_task_list(qs_env)
153 IF (
ASSOCIATED(qs_env%cp_ddapc_env))
THEN
155 DEALLOCATE (qs_env%cp_ddapc_env)
163 CALL qs_env_rebuild_rho(qs_env=qs_env)
166 IF (
ASSOCIATED(qs_env%scf_env))
THEN
170 CALL timestop(handle)
178 SUBROUTINE qs_create_task_list(qs_env)
181 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_create_task_list'
183 CHARACTER(LEN=default_string_length) :: basis_type
184 INTEGER :: handle, isub
185 LOGICAL :: skip_load_balance_distributed, soft_valid
190 CALL timeset(routinen, handle)
191 NULLIFY (ks_env, dft_control)
192 CALL get_qs_env(qs_env, ks_env=ks_env, dft_control=dft_control)
194 soft_valid = (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
195 skip_load_balance_distributed = dft_control%qs_control%skip_load_balance_distributed
196 IF (.NOT. (dft_control%qs_control%semi_empirical &
197 .OR. dft_control%qs_control%xtb &
198 .OR. dft_control%qs_control%dftb))
THEN
200 IF (.NOT. dft_control%qs_control%gapw)
THEN
202 IF (.NOT.
ASSOCIATED(task_list))
THEN
207 reorder_rs_grid_ranks=.true., &
208 skip_load_balance_distributed=skip_load_balance_distributed)
211 IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
THEN
212 CALL get_ks_env(ks_env, task_list_soft=task_list)
213 IF (.NOT.
ASSOCIATED(task_list))
THEN
215 CALL set_ks_env(ks_env, task_list_soft=task_list)
218 reorder_rs_grid_ranks=.true., &
219 skip_load_balance_distributed=skip_load_balance_distributed)
223 IF (dft_control%qs_control%do_kg)
THEN
228 IF (
ASSOCIATED(qs_env%kg_env%subset))
THEN
229 DO isub = 1, qs_env%kg_env%nsubsets
230 IF (
ASSOCIATED(qs_env%kg_env%subset(isub)%task_list)) &
234 ALLOCATE (qs_env%kg_env%subset(qs_env%kg_env%nsubsets))
238 basis_type =
"ORB_SOFT"
243 DO isub = 1, qs_env%kg_env%nsubsets
247 basis_type=basis_type, &
248 reorder_rs_grid_ranks=.false., &
249 skip_load_balance_distributed=skip_load_balance_distributed, &
250 sab_orb_external=qs_env%kg_env%subset(isub)%sab_orb)
257 CALL timestop(handle)
259 END SUBROUTINE qs_create_task_list
277 SUBROUTINE qs_env_rebuild_rho(qs_env, rebuild_ao, rebuild_grids)
279 LOGICAL,
INTENT(in),
OPTIONAL :: rebuild_ao, rebuild_grids
281 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_env_rebuild_rho'
284 LOGICAL :: do_admm, gapw_xc
286 TYPE(
qs_rho_type),
POINTER :: rho, rho_external, rho_xc
289 CALL timeset(routinen, handle)
292 dft_control=dft_control, &
295 rho_external=rho_external)
297 gapw_xc = dft_control%qs_control%gapw_xc
298 do_admm = dft_control%do_admm
300 rebuild_ao=rebuild_ao, rebuild_grids=rebuild_grids)
304 rebuild_ao=rebuild_ao, rebuild_grids=rebuild_grids)
308 IF (dft_control%apply_external_density)
THEN
310 rebuild_grids=rebuild_grids)
311 dft_control%read_external_density = .true.
314 CALL timestop(handle)
316 END SUBROUTINE qs_env_rebuild_rho
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
contains information regarding the decoupling/recoupling method of Bloechl
subroutine, public cp_ddapc_release(cp_ddapc_env)
...
Density Derived atomic point charges from a QM calculation (see Bloechl, J. Chem. Phys....
subroutine, public cp_ddapc_init(qs_env)
Initialize the cp_ddapc_environment.
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Calculate the plane wave density by collocating the primitive Gaussian functions (pgf).
subroutine, public calculate_rho_nlcc(rho_nlcc, qs_env)
computes the density of the non-linear core correction on the grid
subroutine, public calculate_ppl_grid(vppl, qs_env)
computes the local pseudopotential (without erf term) 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, 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 qs_ks_did_change(ks_env, s_mstruct_changed, rho_changed, potential_changed, full_reset)
tells that some of the things relevant to the ks calculation did change. has to be called when change...
subroutine, public set_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, exc_accint, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, kpoints, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
subroutine, public get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, exc_accint, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, rho, rho_xc, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, task_list, task_list_soft, kpoints, do_kpoints, atomic_kind_set, qs_kind_set, cell, cell_ref, use_ref_cell, particle_set, energy, force, local_particles, local_molecules, molecule_kind_set, molecule_set, subsys, cp_subsys, virial, results, atprop, nkind, natom, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env, nelectron_total, nelectron_spin)
...
methods of the rho structure (defined in qs_rho_types)
subroutine, public qs_rho_rebuild(rho, qs_env, rebuild_ao, rebuild_grids, admm, pw_env_external)
rebuilds rho (if necessary allocating and initializing it)
superstucture that hold various representations of the density and keeps track of which ones are vali...
module that contains the definitions of the scf types
subroutine, public scf_env_did_change(scf_env)
function to be called to inform the scf_env about changes
qs_environment methods that use many other modules
subroutine, public qs_env_update_s_mstruct(qs_env)
updates the s_mstruct to reflect the new overlap structure, and also updates rho_core distribution....
generate the tasks lists used by collocate and integrate routines
subroutine, public generate_qs_task_list(ks_env, task_list, basis_type, reorder_rs_grid_ranks, skip_load_balance_distributed, pw_env_external, sab_orb_external)
...
subroutine, public deallocate_task_list(task_list)
deallocates the components and the object itself
subroutine, public allocate_task_list(task_list)
allocates and initialised the components of the task_list_type
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.