33#include "./base/base_uses.f90"
39 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_cdft_grid'
42 INTEGER :: method = -1, natom = 0, ngroup = 0
43 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: numexp, cavity_numexp
44 LOGICAL :: calculate_derivatives = .false., &
45 cavity_confine = .false.
46 LOGICAL,
ALLOCATABLE,
DIMENSION(:) :: constraint_atom
47 REAL(kind=
dp) :: eps = 0.0_dp, eps_cavity = 0.0_dp
48 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: cutoffs, distances, cell_functions
49 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: atom_coords, aij, coefficients, &
50 alpha, amplitude, cavity_alpha, &
51 cavity_amplitude, displacement, &
52 datom_numerator, datom_sum, dcell_point, &
53 density_atom_derivative
54 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: pair_vectors, dcell_atom
74 LOGICAL,
INTENT(IN),
OPTIONAL :: calculate_derivatives
76 INTEGER ::
atom, iatom, igroup, ikind, jatom, natom
77 REAL(kind=
dp) :: chi, ircov, jrcov, uij
78 REAL(kind=
dp),
DIMENSION(3) :: pair_vector
79 REAL(kind=
dp),
DIMENSION(:),
POINTER :: radii, radii_list
89 NULLIFY (becke_control, cdft_control, dft_control, hirshfeld_control, &
90 hirshfeld_env, atomic_kind_set, particle_set, qs_kind_set, radii, radii_list)
91 CALL get_qs_env(qs_env, cell=context%cell, dft_control=dft_control, &
92 natom=natom, particle_set=particle_set, atomic_kind_set=atomic_kind_set, &
93 qs_kind_set=qs_kind_set)
94 cpassert(
ASSOCIATED(context%cell))
95 cpassert(
ASSOCIATED(dft_control))
96 cpassert(
ASSOCIATED(particle_set))
97 cpassert(
ASSOCIATED(atomic_kind_set))
98 cpassert(
ASSOCIATED(qs_kind_set))
99 cdft_control => dft_control%qs_control%cdft_control
100 cpassert(
ASSOCIATED(cdft_control))
102 context%method = cdft_control%type
103 context%natom = natom
104 context%ngroup =
SIZE(cdft_control%group)
105 context%calculate_derivatives = .false.
106 IF (
PRESENT(calculate_derivatives)) context%calculate_derivatives = calculate_derivatives
107 ALLOCATE (context%atom_coords(3, natom), &
108 context%coefficients(context%ngroup, natom), &
109 context%constraint_atom(natom), &
110 context%distances(natom), context%displacement(3, natom), &
111 context%cell_functions(natom))
112 context%coefficients = 0.0_dp
113 context%constraint_atom = .false.
115 context%atom_coords(:,
atom) = particle_set(
atom)%r
117 DO igroup = 1, context%ngroup
118 DO iatom = 1,
SIZE(cdft_control%group(igroup)%atoms)
119 atom = cdft_control%group(igroup)%atoms(iatom)
120 context%coefficients(igroup,
atom) = cdft_control%group(igroup)%coeff(iatom)
121 context%constraint_atom(
atom) = .true.
125 SELECT CASE (context%method)
127 becke_control => cdft_control%becke_control
128 cpassert(
ASSOCIATED(becke_control))
129 ALLOCATE (context%cutoffs(natom), context%aij(natom, natom), &
130 context%pair_vectors(3, natom, natom))
131 IF (context%calculate_derivatives)
THEN
132 ALLOCATE (context%dcell_point(3, natom), context%dcell_atom(3, natom, natom), &
133 context%datom_sum(3, natom), context%datom_numerator(3, natom))
135 IF (
ASSOCIATED(becke_control%cutoffs))
THEN
136 context%cutoffs(:) = becke_control%cutoffs
138 SELECT CASE (becke_control%cutoff_type)
140 context%cutoffs = becke_control%rglobal
142 cpassert(
ASSOCIATED(becke_control%cutoffs_tmp))
143 cpassert(
SIZE(becke_control%cutoffs_tmp) ==
SIZE(atomic_kind_set))
146 context%cutoffs(
atom) = becke_control%cutoffs_tmp(ikind)
149 cpabort(
"Unknown Becke cutoff type.")
153 IF (becke_control%adjust)
THEN
154 IF (
ASSOCIATED(becke_control%aij))
THEN
155 context%aij(:, :) = becke_control%aij
157 IF (
ASSOCIATED(becke_control%radii))
THEN
158 radii => becke_control%radii
160 radii => becke_control%radii_tmp
162 cpassert(
ASSOCIATED(radii))
163 cpassert(
SIZE(radii) ==
SIZE(atomic_kind_set))
164 DO iatom = 1, natom - 1
165 CALL get_atomic_kind(particle_set(iatom)%atomic_kind, kind_number=ikind)
167 DO jatom = iatom + 1, natom
168 CALL get_atomic_kind(particle_set(jatom)%atomic_kind, kind_number=ikind)
170 IF (ircov /= jrcov)
THEN
172 uij = (chi - 1.0_dp)/(chi + 1.0_dp)
173 context%aij(iatom, jatom) = max(-0.5_dp, min(0.5_dp, &
174 uij/(uij**2 - 1.0_dp)))
175 context%aij(jatom, iatom) = -context%aij(iatom, jatom)
181 context%pair_vectors = 0.0_dp
182 DO iatom = 1, natom - 1
183 DO jatom = iatom + 1, natom
184 pair_vector =
pbc(context%atom_coords(:, jatom), &
185 context%atom_coords(:, iatom), context%cell)
186 context%pair_vectors(:, iatom, jatom) = pair_vector
187 context%pair_vectors(:, jatom, iatom) = -pair_vector
190 context%cavity_confine = becke_control%cavity_confine
191 context%eps_cavity = becke_control%eps_cavity
192 IF (context%cavity_confine)
THEN
193 hirshfeld_env => becke_control%cavity_env
194 cpassert(
ASSOCIATED(hirshfeld_env))
195 IF (.NOT.
ASSOCIATED(hirshfeld_env%kind_shape_fn))
THEN
196 IF (
ASSOCIATED(becke_control%radii))
THEN
197 radii => becke_control%radii
198 ELSE IF (
ASSOCIATED(becke_control%radii_tmp))
THEN
199 radii => becke_control%radii_tmp
201 IF (
ASSOCIATED(radii))
THEN
202 ALLOCATE (radii_list(
SIZE(radii)))
203 DO ikind = 1,
SIZE(radii)
204 IF (hirshfeld_env%use_bohr)
THEN
205 radii_list(ikind) = radii(ikind)
212 radius=becke_control%rcavity, radii_list=radii_list)
213 IF (
ASSOCIATED(radii_list))
DEALLOCATE (radii_list)
215 CALL store_shape_functions(hirshfeld_env, particle_set, context%cavity_numexp, &
216 context%cavity_alpha, context%cavity_amplitude, &
217 include_charge=.false.)
220 hirshfeld_control => cdft_control%hirshfeld_control
221 cpassert(
ASSOCIATED(hirshfeld_control))
222 hirshfeld_env => hirshfeld_control%hirshfeld_env
223 cpassert(
ASSOCIATED(hirshfeld_env))
224 IF (.NOT.
ASSOCIATED(hirshfeld_env%kind_shape_fn) .OR. &
225 .NOT.
ASSOCIATED(hirshfeld_env%charges))
THEN
228 context%eps = hirshfeld_control%eps_cutoff
229 CALL store_shape_functions(hirshfeld_env, particle_set, context%numexp, &
230 context%alpha, context%amplitude, include_charge=.true.)
231 IF (context%calculate_derivatives)
THEN
232 ALLOCATE (context%density_atom_derivative(3, natom))
235 cpabort(
"Unknown CDFT partition type.")
249 SUBROUTINE store_shape_functions(environment, particles, numexp, alpha, amplitude, &
253 INTEGER,
ALLOCATABLE,
DIMENSION(:),
INTENT(OUT) :: numexp
254 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :), &
255 INTENT(OUT) :: alpha, amplitude
256 LOGICAL,
INTENT(IN) :: include_charge
258 INTEGER ::
atom, iexp, ikind, maxexp
259 REAL(kind=
dp) :: charge
261 ALLOCATE (numexp(natom))
267 maxexp = max(maxexp, numexp(
atom))
269 ALLOCATE (alpha(maxexp, natom), amplitude(maxexp, natom))
276 DO iexp = 1, numexp(
atom)
278 amplitude(iexp,
atom) = charge*
environment%kind_shape_fn(ikind)%coef(iexp)
281 END SUBROUTINE store_shape_functions
292 IF (
ALLOCATED(context%numexp))
DEALLOCATE (context%numexp)
293 IF (
ALLOCATED(context%cavity_numexp))
DEALLOCATE (context%cavity_numexp)
294 IF (
ALLOCATED(context%constraint_atom))
DEALLOCATE (context%constraint_atom)
295 IF (
ALLOCATED(context%cutoffs))
DEALLOCATE (context%cutoffs)
296 IF (
ALLOCATED(context%distances))
DEALLOCATE (context%distances)
297 IF (
ALLOCATED(context%cell_functions))
DEALLOCATE (context%cell_functions)
298 IF (
ALLOCATED(context%datom_sum))
DEALLOCATE (context%datom_sum)
299 IF (
ALLOCATED(context%atom_coords))
DEALLOCATE (context%atom_coords)
300 IF (
ALLOCATED(context%aij))
DEALLOCATE (context%aij)
301 IF (
ALLOCATED(context%coefficients))
DEALLOCATE (context%coefficients)
302 IF (
ALLOCATED(context%alpha))
DEALLOCATE (context%alpha)
303 IF (
ALLOCATED(context%amplitude))
DEALLOCATE (context%amplitude)
304 IF (
ALLOCATED(context%cavity_alpha))
DEALLOCATE (context%cavity_alpha)
305 IF (
ALLOCATED(context%cavity_amplitude))
DEALLOCATE (context%cavity_amplitude)
306 IF (
ALLOCATED(context%displacement))
DEALLOCATE (context%displacement)
307 IF (
ALLOCATED(context%datom_numerator))
DEALLOCATE (context%datom_numerator)
308 IF (
ALLOCATED(context%dcell_point))
DEALLOCATE (context%dcell_point)
309 IF (
ALLOCATED(context%density_atom_derivative))
DEALLOCATE (context%density_atom_derivative)
310 IF (
ALLOCATED(context%pair_vectors))
DEALLOCATE (context%pair_vectors)
311 IF (
ALLOCATED(context%dcell_atom))
DEALLOCATE (context%dcell_atom)
312 NULLIFY (context%cell)
316 context%calculate_derivatives = .false.
331 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: point
332 REAL(kind=
dp),
DIMENSION(:),
INTENT(OUT) :: weights
333 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(OUT) :: point_derivative
334 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(OUT) :: atom_derivative
335 REAL(kind=
dp),
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: atomic_weights
337 cpassert(
SIZE(weights) == context%ngroup)
338 cpassert(
SIZE(point_derivative, 1) == 3)
339 cpassert(
SIZE(point_derivative, 2) == context%ngroup)
340 cpassert(
SIZE(atom_derivative, 1) == 3)
341 cpassert(
SIZE(atom_derivative, 2) == context%natom)
342 cpassert(
SIZE(atom_derivative, 3) == context%ngroup)
343 IF (
PRESENT(atomic_weights))
THEN
344 cpassert(
SIZE(atomic_weights) == context%natom)
346 SELECT CASE (context%method)
348 CALL becke_point_weights(context, point, weights, point_derivative, atom_derivative, &
349 atomic_weights, context%calculate_derivatives)
351 CALL hirshfeld_point_weights(context, point, weights, point_derivative, atom_derivative, &
352 atomic_weights, context%calculate_derivatives)
354 cpabort(
"Unknown CDFT partition type.")
368 SUBROUTINE becke_point_weights(context, point, weights, point_derivative, atom_derivative, &
369 atomic_weights, calculate_derivatives)
371 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: point
372 REAL(kind=
dp),
DIMENSION(:),
INTENT(OUT) :: weights
373 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(OUT) :: point_derivative
374 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(OUT) :: atom_derivative
375 REAL(kind=
dp),
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: atomic_weights
376 LOGICAL,
INTENT(IN) :: calculate_derivatives
378 INTEGER ::
atom, iatom, iexp, igroup, jatom
379 REAL(kind=
dp) :: adjusted_mu, cavity_density, delta, &
380 dmu_factor, f1, f2, f3, mu, numerator, &
381 old_cell, pair_distance, s, sum_cell
382 REAL(kind=
dp),
DIMENSION(3) :: dmu_i, dmu_j, dmu_point, &
383 dpoint_numerator, ds_i, ds_j, &
384 ds_point, dsum_point, unit_i, unit_j
387 IF (calculate_derivatives)
THEN
388 point_derivative = 0.0_dp
389 atom_derivative = 0.0_dp
391 IF (
PRESENT(atomic_weights)) atomic_weights = 0.0_dp
393 IF (context%cavity_confine)
THEN
394 cavity_density = 0.0_dp
395 DO atom = 1, context%natom
396 IF (.NOT. context%constraint_atom(
atom)) cycle
397 context%displacement(:,
atom) =
pbc(context%atom_coords(:,
atom), point, context%cell)
398 DO iexp = 1, context%cavity_numexp(
atom)
399 cavity_density = cavity_density + context%cavity_amplitude(iexp,
atom)* &
400 exp(-context%cavity_alpha(iexp,
atom)* &
401 dot_product(context%displacement(:,
atom), context%displacement(:,
atom)))
404 IF (cavity_density < context%eps_cavity)
RETURN
407 context%cell_functions = 1.0_dp
408 IF (calculate_derivatives)
THEN
409 context%dcell_point = 0.0_dp
410 context%dcell_atom = 0.0_dp
412 DO atom = 1, context%natom
413 context%displacement(:,
atom) =
pbc(context%atom_coords(:,
atom), point, context%cell)
414 context%distances(
atom) = norm2(context%displacement(:,
atom))
416 DO iatom = 1, context%natom
417 IF (context%distances(iatom) > context%cutoffs(iatom))
THEN
418 context%cell_functions(iatom) = 0.0_dp
421 IF (calculate_derivatives)
THEN
423 IF (context%distances(iatom) > 1.0e-14_dp)
THEN
424 unit_i = -context%displacement(:, iatom)/context%distances(iatom)
427 DO jatom = 1, context%natom
428 IF (jatom == iatom) cycle
429 pair_distance = norm2(context%pair_vectors(:, iatom, jatom))
430 IF (pair_distance <= 1.0e-14_dp) cycle
431 delta = context%distances(iatom) - context%distances(jatom)
432 mu = delta/pair_distance
433 adjusted_mu = mu + context%aij(iatom, jatom)*(1.0_dp - mu**2)
434 f1 = 1.5_dp*adjusted_mu - 0.5_dp*adjusted_mu**3
435 f2 = 1.5_dp*f1 - 0.5_dp*f1**3
436 f3 = 1.5_dp*f2 - 0.5_dp*f2**3
437 s = 0.5_dp*(1.0_dp - f3)
438 old_cell = context%cell_functions(iatom)
439 IF (calculate_derivatives)
THEN
440 dmu_factor = 1.0_dp - 2.0_dp*context%aij(iatom, jatom)*mu
442 IF (context%distances(jatom) > 1.0e-14_dp)
THEN
443 unit_j = -context%displacement(:, jatom)/context%distances(jatom)
445 dmu_i = unit_i/pair_distance - &
446 delta*context%pair_vectors(:, iatom, jatom)/pair_distance**3
447 dmu_j = -unit_j/pair_distance + &
448 delta*context%pair_vectors(:, iatom, jatom)/pair_distance**3
449 dmu_point = (-unit_i + unit_j)/pair_distance
450 dmu_factor = -0.5_dp*dmu_factor*1.5_dp*(1.0_dp - adjusted_mu**2)* &
451 1.5_dp*(1.0_dp - f1**2)*1.5_dp*(1.0_dp - f2**2)
452 ds_i = dmu_factor*dmu_i
453 ds_j = dmu_factor*dmu_j
454 ds_point = dmu_factor*dmu_point
455 context%dcell_atom(:, :, iatom) = context%dcell_atom(:, :, iatom)*s
456 context%dcell_point(:, iatom) = context%dcell_point(:, iatom)*s
457 context%dcell_atom(:, iatom, iatom) = &
458 context%dcell_atom(:, iatom, iatom) + old_cell*ds_i
459 context%dcell_atom(:, jatom, iatom) = &
460 context%dcell_atom(:, jatom, iatom) + old_cell*ds_j
461 context%dcell_point(:, iatom) = context%dcell_point(:, iatom) + old_cell*ds_point
463 context%cell_functions(iatom) = old_cell*s
467 sum_cell = sum(context%cell_functions)
468 IF (sum_cell <= 1.0e-6_dp)
RETURN
469 IF (
PRESENT(atomic_weights)) atomic_weights = context%cell_functions/sum_cell
470 IF (calculate_derivatives)
THEN
471 dsum_point = sum(context%dcell_point, dim=2)
472 context%datom_sum(:, :) = sum(context%dcell_atom, dim=3)
474 DO igroup = 1, context%ngroup
475 numerator = dot_product(context%coefficients(igroup, :), context%cell_functions)
476 weights(igroup) = numerator/sum_cell
477 IF (calculate_derivatives)
THEN
478 dpoint_numerator = matmul(context%dcell_point, context%coefficients(igroup, :))
479 point_derivative(:, igroup) = &
480 (dpoint_numerator*sum_cell - numerator*dsum_point)/sum_cell**2
481 DO atom = 1, context%natom
482 context%datom_numerator(:,
atom) = &
483 matmul(context%dcell_atom(:,
atom, :), context%coefficients(igroup, :))
484 atom_derivative(:,
atom, igroup) = &
485 (context%datom_numerator(:,
atom)*sum_cell - &
486 numerator*context%datom_sum(:,
atom))/sum_cell**2
490 END SUBROUTINE becke_point_weights
502 SUBROUTINE hirshfeld_point_weights(context, point, weights, point_derivative, atom_derivative, &
503 atomic_weights, calculate_derivatives)
505 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: point
506 REAL(kind=
dp),
DIMENSION(:),
INTENT(OUT) :: weights
507 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(OUT) :: point_derivative
508 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(OUT) :: atom_derivative
509 REAL(kind=
dp),
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: atomic_weights
510 LOGICAL,
INTENT(IN) :: calculate_derivatives
512 INTEGER ::
atom, iexp, igroup
513 REAL(kind=
dp) :: exponential, numerator, sum_density
514 REAL(kind=
dp),
DIMENSION(3) :: dpoint_numerator, dsum_point
517 IF (calculate_derivatives)
THEN
518 point_derivative = 0.0_dp
519 atom_derivative = 0.0_dp
521 IF (
PRESENT(atomic_weights)) atomic_weights = 0.0_dp
522 context%cell_functions = 0.0_dp
523 IF (calculate_derivatives) context%density_atom_derivative = 0.0_dp
524 DO atom = 1, context%natom
525 context%displacement(:,
atom) =
pbc(context%atom_coords(:,
atom), point, context%cell)
526 DO iexp = 1, context%numexp(
atom)
527 exponential = context%amplitude(iexp,
atom)* &
528 exp(-context%alpha(iexp,
atom)* &
529 dot_product(context%displacement(:,
atom), context%displacement(:,
atom)))
530 context%cell_functions(
atom) = context%cell_functions(
atom) + exponential
531 IF (calculate_derivatives)
THEN
532 context%density_atom_derivative(:,
atom) = &
533 context%density_atom_derivative(:,
atom) + &
534 2.0_dp*context%alpha(iexp,
atom)*context%displacement(:,
atom)*exponential
538 sum_density = sum(context%cell_functions)
539 IF (sum_density <= context%eps)
THEN
542 IF (
PRESENT(atomic_weights)) atomic_weights = context%cell_functions/sum_density
543 IF (calculate_derivatives) dsum_point = -sum(context%density_atom_derivative, dim=2)
544 DO igroup = 1, context%ngroup
545 numerator = dot_product(context%coefficients(igroup, :), context%cell_functions)
546 weights(igroup) = numerator/sum_density
547 IF (calculate_derivatives)
THEN
548 dpoint_numerator(:) = &
549 matmul(context%density_atom_derivative, context%coefficients(igroup, :))
550 dpoint_numerator = -dpoint_numerator
551 point_derivative(:, igroup) = &
552 (dpoint_numerator*sum_density - numerator*dsum_point)/sum_density**2
553 DO atom = 1, context%natom
554 atom_derivative(:,
atom, igroup) = &
555 (context%coefficients(igroup,
atom) - weights(igroup))* &
556 context%density_atom_derivative(:,
atom)/sum_density
560 END SUBROUTINE hirshfeld_point_weights
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
Handles all functions related to the CELL.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
real(kind=dp) function, public cp_unit_from_cp2k(value, unit_str, defaults, power)
converts from the internal cp2k units to the given unit
Sets up and terminates the global environment variables.
Calculate Hirshfeld charges and related functions.
subroutine, public create_shape_function(hirshfeld_env, qs_kind_set, atomic_kind_set, radius, radii_list)
creates kind specific shape functions for Hirshfeld charges
The types needed for the calculation of Hirshfeld charges and related functions.
Defines the basic variable types.
integer, parameter, public dp
Define the data structure for the particle information.
Pointwise CDFT partition functions for nonuniform integration grids.
subroutine, public cdft_point_context_create(qs_env, context, calculate_derivatives)
Initialize reusable data for pointwise CDFT partition evaluation.
subroutine, public cdft_point_context_release(context)
Release a pointwise CDFT partition context.
subroutine, public cdft_point_weights(context, point, weights, point_derivative, atom_derivative, atomic_weights)
Evaluate CDFT weights and coordinate derivatives at one point.
Defines CDFT control structures.
Utility subroutines for CDFT calculations.
subroutine, public hirshfeld_constraint_init(qs_env)
Initializes Gaussian Hirshfeld constraints.
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, matrix_vhxc, 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.
Define the quickstep kind type and their sub types.
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
quantities needed for a Hirshfeld based partitioning of real space
Provides all information about a quickstep kind.