72 lsd_singlets, do_excitations, sub_env, qs_env)
75 LOGICAL,
INTENT(in) :: is_rks_triplets
77 LOGICAL,
INTENT(in),
OPTIONAL :: lsd_singlets, do_excitations
83 CHARACTER(LEN=*),
PARAMETER :: routinen =
'create_kernel_env'
85 INTEGER :: handle, ispin, nspins
86 LOGICAL :: lsd, my_excitations, my_singlets
88 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s, rho_ia_ao
94 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho_ij_r, rho_ij_r2, tau_ij_r, tau_ij_r2
97 CALL timeset(routinen, handle)
99 IF (
PRESENT(sub_env))
THEN
100 pw_env => sub_env%pw_env
101 dbcsr_dist => sub_env%dbcsr_dist
102 sab_orb => sub_env%sab_orb
104 nspins =
SIZE(sub_env%mos_occ)
106 cpassert(
PRESENT(qs_env))
110 dbcsr_dist=dbcsr_dist, &
112 dft_control=dft_control)
114 nspins = dft_control%nspins
116 IF (.NOT.
ASSOCIATED(rho_struct_sub))
THEN
123 dbcsr_dist=dbcsr_dist, sab=sab_orb)
126 ALLOCATE (rho_struct_sub)
128 CALL qs_rho_set(rho_struct_sub, rho_ao=rho_ia_ao)
130 rebuild_grids=.true., pw_env_external=pw_env)
134 lsd = (nspins > 1) .OR. is_rks_triplets
136 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
138 CALL qs_rho_get(rho_struct_sub, rho_r=rho_ij_r, tau_r=tau_ij_r)
140 NULLIFY (kernel_env%xc_rho_set, kernel_env%xc_rho1_set)
142 ALLOCATE (kernel_env%xc_rho_set)
143 IF (is_rks_triplets)
THEN
146 ALLOCATE (rho_ij_r2(2))
147 rho_ij_r2(1) = rho_ij_r(1)
148 rho_ij_r2(2) = rho_ij_r(1)
150 IF (
ASSOCIATED(tau_ij_r))
THEN
151 ALLOCATE (tau_ij_r2(2))
152 tau_ij_r2(1) = tau_ij_r(1)
153 tau_ij_r2(2) = tau_ij_r(1)
156 CALL xc_prep_2nd_deriv(kernel_env%xc_deriv_set, kernel_env%xc_rho_set, rho_ij_r2, &
157 auxbas_pw_pool, xc_section=xc_section, tau_r=tau_ij_r2)
159 IF (
ASSOCIATED(tau_ij_r))
DEALLOCATE (tau_ij_r2)
161 DEALLOCATE (rho_ij_r2)
163 CALL xc_prep_2nd_deriv(kernel_env%xc_deriv_set, kernel_env%xc_rho_set, rho_ij_r, &
164 auxbas_pw_pool, xc_section=xc_section, tau_r=tau_ij_r)
168 kernel_env%xc_section => xc_section
169 kernel_env%deriv_method_id =
section_get_ival(xc_section,
"XC_GRID%XC_DERIV")
170 kernel_env%rho_smooth_id =
section_get_ival(xc_section,
"XC_GRID%XC_SMOOTH_RHO")
174 calc_potential=.true.)
176 IF (.NOT.
ASSOCIATED(kernel_env%xc_rho1_set))
THEN
177 NULLIFY (kernel_env%xc_rho1_set)
178 ALLOCATE (kernel_env%xc_rho1_set)
180 CALL xc_rho_set_create(kernel_env%xc_rho1_set, auxbas_pw_pool%pw_grid%bounds_local, &
185 my_excitations = .true.
186 IF (
PRESENT(do_excitations)) my_excitations = do_excitations
188 my_singlets = .false.
189 IF (
PRESENT(lsd_singlets)) my_singlets = lsd_singlets
191 kernel_env%alpha = 1.0_dp
192 kernel_env%beta = 0.0_dp
195 IF (nspins == 1 .AND. my_excitations)
THEN
196 IF (is_rks_triplets)
THEN
198 kernel_env%beta = -1.0_dp
203 kernel_env%alpha = 2.0_dp
205 IF (my_singlets)
THEN
206 kernel_env%beta = 1.0_dp
212 kernel_env%deriv2_analytic =
section_get_lval(xc_section,
"2ND_DERIV_ANALYTICAL")
213 kernel_env%deriv3_analytic =
section_get_lval(xc_section,
"3RD_DERIV_ANALYTICAL")
215 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, 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.