42#include "./base/base_uses.f90"
47 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
48 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_update_s_mstruct'
67 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_env_update_s_mstruct'
75 CALL timeset(routinen, handle)
77 cpassert(
ASSOCIATED(qs_env))
81 dft_control=dft_control)
86 IF (dft_control%qs_control%gapw)
THEN
87 qs_env%qs_charges%total_rho_core_rspace = qs_env%local_rho_set%rhoz_tot
88 IF (dft_control%qs_control%gapw_control%nopaw_as_gpw)
THEN
89 cpassert(
ASSOCIATED(rho_core))
91 qs_env%qs_charges%total_rho_core_rspace, qs_env, only_nopaw=.true.)
93 IF (
ASSOCIATED(rho_core))
THEN
94 CALL rho_core%release()
100 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
102 ELSE IF (dft_control%qs_control%dftb)
THEN
104 ELSE IF (dft_control%qs_control%xtb)
THEN
107 cpassert(
ASSOCIATED(rho_core))
109 qs_env%qs_charges%total_rho_core_rspace, qs_env)
113 do_ppl = dft_control%qs_control%do_ppl_method ==
do_ppl_grid
117 cpassert(
ASSOCIATED(vppl))
122 NULLIFY (rho_nlcc, rho_nlcc_g)
123 CALL get_qs_env(qs_env, rho_nlcc=rho_nlcc, rho_nlcc_g=rho_nlcc_g)
124 IF (
ASSOCIATED(rho_nlcc))
THEN
130 CALL qs_create_task_list(qs_env)
133 IF (
ASSOCIATED(qs_env%cp_ddapc_env))
THEN
135 DEALLOCATE (qs_env%cp_ddapc_env)
143 CALL qs_env_rebuild_rho(qs_env=qs_env)
146 IF (
ASSOCIATED(qs_env%scf_env))
THEN
150 CALL timestop(handle)
158 SUBROUTINE qs_create_task_list(qs_env)
161 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_create_task_list'
163 INTEGER :: handle, isub
164 LOGICAL :: skip_load_balance_distributed, soft_valid
169 CALL timeset(routinen, handle)
170 NULLIFY (ks_env, dft_control)
171 CALL get_qs_env(qs_env, ks_env=ks_env, dft_control=dft_control)
173 skip_load_balance_distributed = dft_control%qs_control%skip_load_balance_distributed
174 IF (.NOT. (dft_control%qs_control%semi_empirical &
175 .OR. dft_control%qs_control%xtb &
176 .OR. dft_control%qs_control%dftb))
THEN
178 IF (.NOT. dft_control%qs_control%gapw)
THEN
180 IF (.NOT.
ASSOCIATED(task_list))
THEN
185 reorder_rs_grid_ranks=.true., soft_valid=.false., &
186 skip_load_balance_distributed=skip_load_balance_distributed)
189 IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
THEN
190 CALL get_ks_env(ks_env, task_list_soft=task_list)
191 IF (.NOT.
ASSOCIATED(task_list))
THEN
193 CALL set_ks_env(ks_env, task_list_soft=task_list)
196 reorder_rs_grid_ranks=.true., soft_valid=.true., &
197 skip_load_balance_distributed=skip_load_balance_distributed)
201 IF (dft_control%qs_control%do_kg)
THEN
202 soft_valid = (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
207 IF (
ASSOCIATED(qs_env%kg_env%subset))
THEN
208 DO isub = 1, qs_env%kg_env%nsubsets
209 IF (
ASSOCIATED(qs_env%kg_env%subset(isub)%task_list)) &
213 ALLOCATE (qs_env%kg_env%subset(qs_env%kg_env%nsubsets))
216 DO isub = 1, qs_env%kg_env%nsubsets
220 reorder_rs_grid_ranks=.false., soft_valid=soft_valid, &
221 skip_load_balance_distributed=skip_load_balance_distributed, &
222 sab_orb_external=qs_env%kg_env%subset(isub)%sab_orb)
229 CALL timestop(handle)
231 END SUBROUTINE qs_create_task_list
249 SUBROUTINE qs_env_rebuild_rho(qs_env, rebuild_ao, rebuild_grids)
251 LOGICAL,
INTENT(in),
OPTIONAL :: rebuild_ao, rebuild_grids
253 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_env_rebuild_rho'
256 LOGICAL :: do_admm, gapw_xc
258 TYPE(
qs_rho_type),
POINTER :: rho, rho_external, rho_xc
261 CALL timeset(routinen, handle)
264 dft_control=dft_control, &
267 rho_external=rho_external)
269 gapw_xc = dft_control%qs_control%gapw_xc
270 do_admm = dft_control%do_admm
272 rebuild_ao=rebuild_ao, rebuild_grids=rebuild_grids)
276 rebuild_ao=rebuild_ao, rebuild_grids=rebuild_grids)
280 IF (dft_control%apply_external_density)
THEN
282 rebuild_grids=rebuild_grids)
283 dft_control%read_external_density = .true.
286 CALL timestop(handle)
288 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.
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, 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_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, 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, 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, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
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 get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, 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, 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, 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, reorder_rs_grid_ranks, skip_load_balance_distributed, soft_valid, basis_type, 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.