71 qs_env, sub_env, wfm_rho_orb)
72 TYPE(
qs_rho_type),
POINTER :: rho_orb_struct, rho_xc_struct
73 LOGICAL,
INTENT(in) :: is_rks_triplets
78 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_construct_ground_state_orb_density'
80 INTEGER :: handle, ispin, nao, nspins
81 INTEGER,
DIMENSION(maxspins) :: nmo_occ
86 CALL timeset(routinen, handle)
88 nspins =
SIZE(sub_env%mos_occ)
90 CALL cp_fm_get_info(sub_env%mos_occ(ispin), nrow_global=nao, ncol_global=nmo_occ(ispin))
93 CALL qs_rho_get(rho_orb_struct, rho_ao=rho_ij_ao)
95 CALL parallel_gemm(
'N',
'T', nao, nao, nmo_occ(ispin), 1.0_dp, &
96 sub_env%mos_occ(ispin), sub_env%mos_occ(ispin), &
99 CALL copy_fm_to_dbcsr(wfm_rho_orb, rho_ij_ao(ispin)%matrix, keep_sparsity=.true.)
103 IF (nspins == 1 .AND. (.NOT. is_rks_triplets))
THEN
107 CALL get_qs_env(qs_env, dft_control=dft_control)
109 IF (dft_control%qs_control%gapw)
THEN
111 local_rho_set=sub_env%local_rho_set, &
112 pw_env_external=sub_env%pw_env, &
113 task_list_external=sub_env%task_list_orb_soft, &
114 para_env_external=sub_env%para_env)
115 CALL prepare_gapw_den(qs_env, local_rho_set=sub_env%local_rho_set, pw_env_sub=sub_env%pw_env)
116 ELSE IF (dft_control%qs_control%gapw_xc)
THEN
118 rho_xc_external=rho_xc_struct, &
119 local_rho_set=sub_env%local_rho_set, &
120 pw_env_external=sub_env%pw_env, &
121 task_list_external=sub_env%task_list_orb, &
122 task_list_external_soft=sub_env%task_list_orb_soft, &
123 para_env_external=sub_env%para_env)
124 CALL pw_env_get(sub_env%pw_env, auxbas_pw_pool=auxbas_pw_pool)
125 CALL qs_rho_copy(rho_xc_struct, rho_orb_struct, auxbas_pw_pool, nspins)
126 CALL prepare_gapw_den(qs_env, local_rho_set=sub_env%local_rho_set, do_rho0=.false., &
127 pw_env_sub=sub_env%pw_env)
130 pw_env_external=sub_env%pw_env, &
131 task_list_external=sub_env%task_list_orb, &
132 para_env_external=sub_env%para_env)
135 CALL timestop(handle)
161 wfm_rho_orb, wfm_rho_aux_fit, wfm_aux_orb)
162 TYPE(
qs_rho_type),
POINTER :: rho_orb_struct, rho_aux_fit_struct
166 TYPE(
cp_fm_type),
INTENT(INOUT) :: wfm_rho_orb
167 TYPE(
cp_fm_type),
INTENT(IN) :: wfm_rho_aux_fit, wfm_aux_orb
169 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_construct_aux_fit_density'
171 CHARACTER(LEN=default_string_length) :: basis_type
172 INTEGER :: handle, ispin, nao, nao_aux, nspins
173 REAL(kind=
dp),
DIMENSION(:),
POINTER :: tot_rho_aux_fit_r
175 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: rho_ao_aux_fit, rho_ao_orb
177 POINTER :: sab_aux_fit
183 CALL timeset(routinen, handle)
185 cpassert(
ASSOCIATED(sub_env%admm_A))
187 CALL get_qs_env(qs_env, ks_env=ks_env, admm_env=admm_env)
188 CALL qs_rho_get(rho_orb_struct, rho_ao=rho_ao_orb)
189 CALL qs_rho_get(rho_aux_fit_struct, rho_ao=rho_ao_aux_fit, rho_g=rho_aux_fit_g, &
190 rho_r=rho_aux_fit_r, tot_rho_r=tot_rho_aux_fit_r)
192 nspins =
SIZE(rho_ao_orb)
194 IF (admm_env%do_gapw)
THEN
195 basis_type =
"AUX_FIT_SOFT"
196 task_list => sub_env%task_list_aux_fit_soft
198 basis_type =
"AUX_FIT"
199 task_list => sub_env%task_list_aux_fit
202 CALL cp_fm_get_info(sub_env%admm_A, nrow_global=nao_aux, ncol_global=nao)
206 CALL parallel_gemm(
'N',
'N', nao_aux, nao, nao, 1.0_dp, sub_env%admm_A, &
207 wfm_rho_orb, 0.0_dp, wfm_aux_orb)
208 CALL parallel_gemm(
'N',
'T', nao_aux, nao_aux, nao, 1.0_dp, sub_env%admm_A, wfm_aux_orb, &
209 0.0_dp, wfm_rho_aux_fit)
210 CALL copy_fm_to_dbcsr(wfm_rho_aux_fit, rho_ao_aux_fit(ispin)%matrix, keep_sparsity=.true.)
213 rho=rho_aux_fit_r(ispin), rho_gspace=rho_aux_fit_g(ispin), &
214 total_rho=tot_rho_aux_fit_r(ispin), ks_env=ks_env, &
215 soft_valid=.false., basis_type=basis_type, &
216 pw_env_external=sub_env%pw_env, task_list_external=task_list)
218 IF (admm_env%do_gapw)
THEN
219 CALL get_admm_env(qs_env%admm_env, sab_aux_fit=sab_aux_fit)
221 rho_atom_set=local_rho_set%rho_atom_set, &
222 qs_kind_set=admm_env%admm_gapw_env%admm_kind_set, &
223 oce=admm_env%admm_gapw_env%oce, sab=sab_aux_fit, para_env=sub_env%para_env)
225 do_rho0=.false., kind_set_external=admm_env%admm_gapw_env%admm_kind_set, &
226 pw_env_sub=sub_env%pw_env)
229 CALL timestop(handle)
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.