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
90 qs_env%qs_charges%total_rho1_hard_nuc = qs_env%local_rho_set%rhoz_cneo_tot
91 IF (dft_control%qs_control%gapw_control%nopaw_as_gpw)
THEN
92 cpassert(
ASSOCIATED(rho_core))
94 qs_env%qs_charges%total_rho_core_rspace, qs_env, only_nopaw=.true.)
96 IF (
ASSOCIATED(rho_core))
THEN
97 CALL rho_core%release()
103 ELSE IF (dft_control%qs_control%semi_empirical)
THEN
105 ELSE IF (dft_control%qs_control%dftb)
THEN
107 ELSE IF (dft_control%qs_control%xtb)
THEN
110 cpassert(
ASSOCIATED(rho_core))
112 qs_env%qs_charges%total_rho_core_rspace, qs_env)
116 do_ppl = dft_control%qs_control%do_ppl_method ==
do_ppl_grid
120 cpassert(
ASSOCIATED(vppl))
125 NULLIFY (rho_nlcc, rho_nlcc_g)
126 CALL get_qs_env(qs_env, rho_nlcc=rho_nlcc, rho_nlcc_g=rho_nlcc_g)
127 IF (
ASSOCIATED(rho_nlcc))
THEN
133 CALL qs_create_task_list(qs_env)
136 IF (
ASSOCIATED(qs_env%cp_ddapc_env))
THEN
138 DEALLOCATE (qs_env%cp_ddapc_env)
146 CALL qs_env_rebuild_rho(qs_env=qs_env)
149 IF (
ASSOCIATED(qs_env%scf_env))
THEN
153 CALL timestop(handle)
161 SUBROUTINE qs_create_task_list(qs_env)
164 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_create_task_list'
166 INTEGER :: handle, isub
167 LOGICAL :: skip_load_balance_distributed, soft_valid
172 CALL timeset(routinen, handle)
173 NULLIFY (ks_env, dft_control)
174 CALL get_qs_env(qs_env, ks_env=ks_env, dft_control=dft_control)
176 skip_load_balance_distributed = dft_control%qs_control%skip_load_balance_distributed
177 IF (.NOT. (dft_control%qs_control%semi_empirical &
178 .OR. dft_control%qs_control%xtb &
179 .OR. dft_control%qs_control%dftb))
THEN
181 IF (.NOT. dft_control%qs_control%gapw)
THEN
183 IF (.NOT.
ASSOCIATED(task_list))
THEN
188 reorder_rs_grid_ranks=.true., soft_valid=.false., &
189 skip_load_balance_distributed=skip_load_balance_distributed)
192 IF (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
THEN
193 CALL get_ks_env(ks_env, task_list_soft=task_list)
194 IF (.NOT.
ASSOCIATED(task_list))
THEN
196 CALL set_ks_env(ks_env, task_list_soft=task_list)
199 reorder_rs_grid_ranks=.true., soft_valid=.true., &
200 skip_load_balance_distributed=skip_load_balance_distributed)
204 IF (dft_control%qs_control%do_kg)
THEN
205 soft_valid = (dft_control%qs_control%gapw .OR. dft_control%qs_control%gapw_xc)
210 IF (
ASSOCIATED(qs_env%kg_env%subset))
THEN
211 DO isub = 1, qs_env%kg_env%nsubsets
212 IF (
ASSOCIATED(qs_env%kg_env%subset(isub)%task_list)) &
216 ALLOCATE (qs_env%kg_env%subset(qs_env%kg_env%nsubsets))
219 DO isub = 1, qs_env%kg_env%nsubsets
223 reorder_rs_grid_ranks=.false., soft_valid=soft_valid, &
224 skip_load_balance_distributed=skip_load_balance_distributed, &
225 sab_orb_external=qs_env%kg_env%subset(isub)%sab_orb)
232 CALL timestop(handle)
234 END SUBROUTINE qs_create_task_list
252 SUBROUTINE qs_env_rebuild_rho(qs_env, rebuild_ao, rebuild_grids)
254 LOGICAL,
INTENT(in),
OPTIONAL :: rebuild_ao, rebuild_grids
256 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_env_rebuild_rho'
259 LOGICAL :: do_admm, gapw_xc
261 TYPE(
qs_rho_type),
POINTER :: rho, rho_external, rho_xc
264 CALL timeset(routinen, handle)
267 dft_control=dft_control, &
270 rho_external=rho_external)
272 gapw_xc = dft_control%qs_control%gapw_xc
273 do_admm = dft_control%do_admm
275 rebuild_ao=rebuild_ao, rebuild_grids=rebuild_grids)
279 rebuild_ao=rebuild_ao, rebuild_grids=rebuild_grids)
283 IF (dft_control%apply_external_density)
THEN
285 rebuild_grids=rebuild_grids)
286 dft_control%read_external_density = .true.
289 CALL timestop(handle)
291 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, 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, 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_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, 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, 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, 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)
...
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...
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.