40#include "./base/base_uses.f90"
46 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_dos'
66 SUBROUTINE calculate_dos(mos, dft_section, unoccupied_evals, smearing_enabled, write_curve_output)
71 POINTER :: unoccupied_evals
72 LOGICAL,
INTENT(IN),
OPTIONAL :: smearing_enabled, write_curve_output
74 CHARACTER(len=*),
PARAMETER :: routinen =
'calculate_dos'
76 CHARACTER(LEN=16) :: energy_label
77 CHARACTER(LEN=20) :: fmtstr_data
78 CHARACTER(LEN=32) :: zero_label
79 CHARACTER(LEN=default_string_length) :: my_act, my_pos
80 INTEGER :: broaden_type, energy_unit, energy_zero, handle, i, iounit, ispin, iterstep, iv, &
81 iw, ndigits, nhist, nmo(2), nspins, nstates(2), nvirt(2), resolved_energy_zero
82 LOGICAL :: append, do_broaden, &
83 fractional_occupation, ionode, &
84 should_output, smear_on
85 REAL(kind=
dp) :: broaden_cutoff, broaden_width, de, density_factor, e1, e2, e_fermi(2), &
86 emax, emin, energy_factor, energy_ref(2), ev_factor, eval, hoco(2), out_density, out_occ, &
88 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: ehist, hist, occval
89 REAL(kind=
dp),
DIMENSION(:),
POINTER :: eigenvalues, occupation_numbers
95 ionode = logger%para_env%is_source()
99 IF ((.NOT. should_output))
RETURN
101 CALL timeset(routinen, handle)
102 iterstep = logger%iter_info%iteration(logger%iter_info%n_rlevel)
104 IF (iounit > 0)
WRITE (unit=iounit, fmt=
'(/,(T3,A,T61,I10))') &
105 " Calculate DOS at iteration step ", iterstep
114 CALL section_vals_val_get(dft_section,
"PRINT%DOS%CURVE%BROADEN%VOIGT_MIXING", r_val=voigt_mixing)
115 IF (append .AND. iterstep > 1)
THEN
120 ndigits = min(max(ndigits, 1), 10)
121 IF (
PRESENT(write_curve_output))
THEN
122 IF (write_curve_output .AND. de <= 0.0_dp)
THEN
123 cpwarn(
"Broadened DOS output requires DELTA_E > 0 and will be skipped")
124 CALL timestop(handle)
127 IF (write_curve_output .AND. broaden_width <= 0.0_dp)
THEN
128 cpwarn(
"Broadened DOS output requires a finite WIDTH and will be skipped")
129 CALL timestop(handle)
134 IF (
PRESENT(write_curve_output)) do_broaden = write_curve_output
135 do_broaden = do_broaden .AND. (broaden_width > 0.0_dp)
136 IF (do_broaden) de = max(de, 0.00001_dp)
144 hoco(:) = -huge(0.0_dp)
145 fractional_occupation = .false.
147 IF (
PRESENT(smearing_enabled)) smear_on = smearing_enabled
151 CALL get_mo_set(mo_set=mo_set, nmo=nmo(ispin), mu=e_fermi(ispin))
152 eigenvalues => mo_set%eigenvalues
153 occupation_numbers => mo_set%occupation_numbers
155 IF (occupation_numbers(i) > 1.0e-10_dp) hoco(ispin) = max(hoco(ispin), eigenvalues(i))
156 IF (abs(occupation_numbers(i) - real(nint(occupation_numbers(i)), kind=
dp)) > &
157 1.0e-8_dp) fractional_occupation = .true.
159 IF (hoco(ispin) < -0.5_dp*huge(0.0_dp)) hoco(ispin) = e_fermi(ispin)
160 IF (
PRESENT(unoccupied_evals))
THEN
161 IF (
ASSOCIATED(unoccupied_evals(ispin)%array)) nvirt(ispin) =
SIZE(unoccupied_evals(ispin)%array)
163 nstates(ispin) = nmo(ispin) + nvirt(ispin)
164 e1 = minval(eigenvalues(1:nmo(ispin)))
165 e2 = maxval(eigenvalues(1:nmo(ispin)))
166 IF (nvirt(ispin) > 0)
THEN
167 e1 = min(e1, minval(unoccupied_evals(ispin)%array(1:nvirt(ispin))))
168 e2 = max(e2, maxval(unoccupied_evals(ispin)%array(1:nvirt(ispin))))
176 emin = emin - broaden_cutoff
177 emax = emax + broaden_cutoff
178 nhist = nint((emax - emin)/de) + 1
179 ALLOCATE (hist(nhist, nspins), occval(nhist, nspins), ehist(nhist, nspins))
185 occupation_numbers => mo_set%occupation_numbers
186 eigenvalues => mo_set%eigenvalues
189 occupation_numbers(i), 1.0_dp, broaden_type, broaden_width, &
192 DO i = 1, nvirt(ispin)
194 unoccupied_evals(ispin)%array(i), 0.0_dp, 1.0_dp, &
195 broaden_type, broaden_width, voigt_mixing)
199 ehist(i, 1:nspins) = emin + (i - 1)*de
201 ELSE IF (de > 0.0_dp)
THEN
202 nhist = nint((emax - emin)/de) + 1
203 ALLOCATE (hist(nhist, nspins), occval(nhist, nspins), ehist(nhist, nspins))
209 occupation_numbers => mo_set%occupation_numbers
210 eigenvalues => mo_set%eigenvalues
212 eval = eigenvalues(i) - emin
213 iv = nint(eval/de) + 1
214 cpassert((iv > 0) .AND. (iv <= nhist))
215 hist(iv, ispin) = hist(iv, ispin) + 1.0_dp
216 occval(iv, ispin) = occval(iv, ispin) + occupation_numbers(i)
218 DO i = 1, nvirt(ispin)
219 eval = unoccupied_evals(ispin)%array(i) - emin
220 iv = nint(eval/de) + 1
221 cpassert((iv > 0) .AND. (iv <= nhist))
222 hist(iv, ispin) = hist(iv, ispin) + 1.0_dp
224 hist(:, ispin) = hist(:, ispin)/real(nstates(ispin), kind=
dp)
227 ehist(i, 1:nspins) = emin + (i - 1)*de
230 nhist = maxval(nstates)
231 ALLOCATE (hist(nhist, nspins), occval(nhist, nspins), ehist(nhist, nspins))
237 occupation_numbers => mo_set%occupation_numbers
238 eigenvalues => mo_set%eigenvalues
240 ehist(i, ispin) = eigenvalues(i)
241 hist(i, ispin) = 1.0_dp
242 occval(i, ispin) = occupation_numbers(i)
244 DO i = 1, nvirt(ispin)
245 ehist(nmo(ispin) + i, ispin) = unoccupied_evals(ispin)%array(i)
246 hist(nmo(ispin) + i, ispin) = 1.0_dp
248 hist(:, ispin) = hist(:, ispin)/real(nstates(ispin), kind=
dp)
253 SELECT CASE (resolved_energy_zero)
255 energy_ref(:) = 0.0_dp
257 energy_ref(:) = maxval(hoco(1:nspins))
259 energy_ref(:) = maxval(e_fermi(1:nspins))
261 IF (.NOT. do_broaden) energy_ref(:) = 0.0_dp
272 extension=
".dos", file_position=my_pos, file_action=my_act, &
273 file_form=
"FORMATTED", middle_name=
"curve")
276 extension=
".dos", file_position=my_pos, file_action=my_act, &
277 file_form=
"FORMATTED")
280 WRITE (unit=iw, fmt=
"(A,I0)")
"# DOS at iteration step i = ", iterstep
281 IF (nspins == 2)
THEN
282 WRITE (unit=iw, fmt=
"(A,2F12.6,A,2F12.6,A)") &
283 "# E(Fermi) = ", e_fermi(1:2),
" a.u. = ", e_fermi(1:2)*ev_factor,
" eV"
284 WRITE (unit=iw, fmt=
"(A,2F12.6,A,2F12.6,A)") &
285 "# E(HOCO) = ", hoco(1:2),
" a.u. = ", hoco(1:2)*ev_factor,
" eV"
287 WRITE (unit=iw, fmt=
"(A,A)")
"# Energy zero: ", trim(zero_label)
290 IF (do_broaden .OR. de > 0.0_dp)
THEN
291 WRITE (unit=iw, fmt=
"(A,A,A)")
"# "//trim(energy_label)//
" Alpha_Density Occupation", &
292 " Beta_Density Occupation"
293 WRITE (unit=fmtstr_data, fmt=
"(A,I0,A)")
"(F15.8,4F20.", ndigits,
")"
295 WRITE (unit=iw, fmt=
"(A,A,A)")
"# "//trim(energy_label)//
" Alpha_Density Occupation", &
296 " "//trim(energy_label),
" Beta_Density Occupation"
297 WRITE (unit=fmtstr_data, fmt=
"(A,I0,A)")
"(2(F15.8,2F20.", ndigits,
"))"
300 WRITE (unit=iw, fmt=
"(A,F12.6,A,F12.6,A)") &
301 "# E(Fermi) = ", e_fermi(1),
" a.u. = ", e_fermi(1)*ev_factor,
" eV"
302 WRITE (unit=iw, fmt=
"(A,F12.6,A,F12.6,A)") &
303 "# E(HOCO) = ", hoco(1),
" a.u. = ", hoco(1)*ev_factor,
" eV"
305 WRITE (unit=iw, fmt=
"(A,A)")
"# Energy zero: ", trim(zero_label)
308 WRITE (unit=iw, fmt=
"(A,A)")
"# "//trim(energy_label),
" Density Occupation"
310 WRITE (unit=fmtstr_data, fmt=
"(A,I0,A)")
"(F15.8,2F20.", ndigits,
")"
313 IF (nspins == 2)
THEN
315 eval = (ehist(i, 1) - energy_ref(1))*energy_factor
316 WRITE (unit=iw, fmt=fmtstr_data) eval, hist(i, 1)*density_factor, &
317 occval(i, 1)*density_factor, hist(i, 2)*density_factor, &
318 occval(i, 2)*density_factor
319 ELSE IF (de > 0.0_dp)
THEN
320 IF (hist(i, 1) == 0.0_dp .AND. occval(i, 1) == 0.0_dp .AND. &
321 hist(i, 2) == 0.0_dp .AND. occval(i, 2) == 0.0_dp) cycle
323 WRITE (unit=iw, fmt=fmtstr_data) eval, hist(i, 1), occval(i, 1), &
324 hist(i, 2), occval(i, 2)
328 WRITE (unit=iw, fmt=fmtstr_data) e1, hist(i, 1), occval(i, 1), &
329 e2, hist(i, 2), occval(i, 2)
332 eval = (ehist(i, 1) - energy_ref(1))*energy_factor
335 out_density = hist(i, 1)*density_factor
336 out_occ = occval(i, 1)*density_factor
338 out_density = hist(i, 1)
339 out_occ = occval(i, 1)
340 IF (out_density == 0.0_dp .AND. out_occ == 0.0_dp) cycle
342 WRITE (unit=iw, fmt=fmtstr_data) eval, out_density, out_occ
347 DEALLOCATE (hist, occval, ehist)
349 CALL timestop(handle)
367 LOGICAL,
INTENT(IN),
OPTIONAL :: write_curve_output
369 CHARACTER(len=*),
PARAMETER :: routinen =
'calculate_dos_kp'
371 CHARACTER(LEN=16) :: energy_label, fmtstr_data
372 CHARACTER(LEN=32) :: zero_label
373 CHARACTER(LEN=default_string_length) :: err, my_act, my_pos
374 INTEGER :: broaden_type, energy_unit, energy_zero, fractional_occupation_int, handle, i, ik, &
375 iounit, ispin, iterstep, iv, iw, ndigits, nhist, nmo(2), nmo_kp, nspins, &
377 INTEGER,
DIMENSION(:),
POINTER :: nkp_grid
378 LOGICAL :: append, do_broaden, explicit, &
379 fractional_occupation, ionode, &
381 REAL(kind=
dp) :: broaden_cutoff, broaden_width, de, density_factor, e1, e2, e_fermi(2), &
382 emax, emin, energy_factor, energy_ref(2), ev_factor, eval, hoco(2), out_density, out_occ, &
384 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: ehist, hist, occval
385 REAL(kind=
dp),
DIMENSION(:),
POINTER :: eigenvalues, occupation_numbers
393 NULLIFY (logger, kpoints)
395 ionode = logger%para_env%is_source()
399 IF ((.NOT. should_output))
RETURN
401 CALL timeset(routinen, handle)
402 iterstep = logger%iter_info%iteration(logger%iter_info%n_rlevel)
410 IF (nkp_grid(i) < 1)
THEN
411 WRITE (unit=err, fmt=
'(T4,A,I3,A,I1)') &
412 "Invalid kpoint grid for DOS ", nkp_grid(i),
" in dimension ", i
423 IF (iounit > 0)
WRITE (unit=iounit, fmt=
'(/,(T3,A,T61,I10))') &
424 " Calculate DOS at iteration step ", iterstep
425 IF (iounit > 0)
WRITE (unit=iounit, fmt=
'((T3,A,3I3,A))') &
426 " Using a", kpoints%nkp_grid(:),
' '//trim(kpoints%kp_scheme)//
' grid'
435 CALL section_vals_val_get(dft_section,
"PRINT%DOS%CURVE%BROADEN%VOIGT_MIXING", r_val=voigt_mixing)
436 IF (append .AND. iterstep > 1)
THEN
441 ndigits = min(max(ndigits, 1), 10)
442 IF (
PRESENT(write_curve_output))
THEN
443 IF (write_curve_output .AND. de <= 0.0_dp)
THEN
444 cpwarn(
"Broadened k-point DOS output requires DELTA_E > 0 and will be skipped")
445 CALL timestop(handle)
449 IF (write_curve_output .AND. broaden_width <= 0.0_dp)
THEN
450 cpwarn(
"Broadened k-point DOS output requires a finite WIDTH and will be skipped")
451 CALL timestop(handle)
455 ELSE IF (de <= 0.0_dp)
THEN
456 cpwarn(
"K-point DOS output requires DELTA_E > 0 and will be skipped")
457 CALL timestop(handle)
462 de = max(de, 0.00001_dp)
464 IF (
PRESENT(write_curve_output)) do_broaden = write_curve_output
465 do_broaden = do_broaden .AND. (broaden_width > 0.0_dp)
467 CALL get_qs_env(qs_env, dft_control=dft_control)
468 nspins = dft_control%nspins
469 para_env => kpoints%para_env_inter_kp
475 hoco(:) = -huge(0.0_dp)
476 fractional_occupation = .false.
477 IF (kpoints%nkp /= 0)
THEN
478 DO ik = 1,
SIZE(kpoints%kp_env)
479 mos => kpoints%kp_env(ik)%kpoint_env%mos
480 cpassert(
ASSOCIATED(mos))
482 mo_set => mos(1, ispin)
483 CALL get_mo_set(mo_set=mo_set, nmo=nmo_kp, mu=e_fermi(ispin))
484 eigenvalues => mo_set%eigenvalues
485 occupation_numbers => mo_set%occupation_numbers
487 IF (occupation_numbers(i) > 1.0e-10_dp) hoco(ispin) = max(hoco(ispin), eigenvalues(i))
488 IF (abs(occupation_numbers(i) - real(nint(occupation_numbers(i)), kind=
dp)) > &
489 1.0e-8_dp) fractional_occupation = .true.
491 e1 = minval(eigenvalues(1:nmo_kp))
492 e2 = maxval(eigenvalues(1:nmo_kp))
495 nmo(ispin) = max(nmo(ispin), nmo_kp)
499 CALL para_env%min(emin)
500 CALL para_env%max(emax)
501 CALL para_env%max(nmo)
502 CALL para_env%max(e_fermi)
503 CALL para_env%max(hoco)
504 fractional_occupation_int = merge(1, 0, fractional_occupation)
505 CALL para_env%max(fractional_occupation_int)
506 fractional_occupation = (fractional_occupation_int /= 0)
508 IF (hoco(ispin) < -0.5_dp*huge(0.0_dp)) hoco(ispin) = e_fermi(ispin)
513 emin = emin - broaden_cutoff
514 emax = emax + broaden_cutoff
516 nhist = nint((emax - emin)/de) + 1
517 ALLOCATE (hist(nhist, nspins), occval(nhist, nspins), ehist(nhist, nspins))
522 IF (kpoints%nkp /= 0)
THEN
523 DO ik = 1,
SIZE(kpoints%kp_env)
524 mos => kpoints%kp_env(ik)%kpoint_env%mos
525 wkp = kpoints%kp_env(ik)%kpoint_env%wkp
527 mo_set => mos(1, ispin)
528 occupation_numbers => mo_set%occupation_numbers
529 eigenvalues => mo_set%eigenvalues
533 occupation_numbers(i), wkp, broaden_type, broaden_width, &
538 eval = eigenvalues(i) - emin
539 iv = nint(eval/de) + 1
540 cpassert((iv > 0) .AND. (iv <= nhist))
541 hist(iv, ispin) = hist(iv, ispin) + wkp
542 occval(iv, ispin) = occval(iv, ispin) + wkp*occupation_numbers(i)
548 CALL para_env%sum(hist)
549 CALL para_env%sum(occval)
550 IF (.NOT. do_broaden)
THEN
552 hist(:, ispin) = hist(:, ispin)/real(nmo(ispin), kind=
dp)
556 ehist(i, 1:nspins) = emin + (i - 1)*de
560 SELECT CASE (resolved_energy_zero)
562 energy_ref(:) = 0.0_dp
564 energy_ref(:) = maxval(hoco(1:nspins))
566 energy_ref(:) = maxval(e_fermi(1:nspins))
568 IF (.NOT. do_broaden) energy_ref(:) = 0.0_dp
579 extension=
".dos", file_position=my_pos, file_action=my_act, &
580 file_form=
"FORMATTED", middle_name=
"curve")
583 extension=
".dos", file_position=my_pos, file_action=my_act, &
584 file_form=
"FORMATTED")
587 WRITE (unit=iw, fmt=
"(A,I0)")
"# DOS at iteration step i = ", iterstep
588 IF (nspins == 2)
THEN
589 WRITE (unit=iw, fmt=
"(A,2F12.6,A,2F12.6,A)") &
590 "# E(Fermi) = ", e_fermi(1:2),
" a.u. = ", e_fermi(1:2)*ev_factor,
" eV"
591 WRITE (unit=iw, fmt=
"(A,2F12.6,A,2F12.6,A)") &
592 "# E(HOCO) = ", hoco(1:2),
" a.u. = ", hoco(1:2)*ev_factor,
" eV"
594 WRITE (unit=iw, fmt=
"(A,A)")
"# Energy zero: ", trim(zero_label)
597 WRITE (unit=iw, fmt=
"(A,A)")
"# "//trim(energy_label)//
" Alpha_Density Occupation", &
598 " Beta_Density Occupation"
600 WRITE (unit=fmtstr_data, fmt=
"(A,I0,A)")
"(F15.8,4F20.", ndigits,
")"
602 WRITE (unit=iw, fmt=
"(A,F12.6,A,F12.6,A)") &
603 "# E(Fermi) = ", e_fermi(1),
" a.u. = ", e_fermi(1)*ev_factor,
" eV"
604 WRITE (unit=iw, fmt=
"(A,F12.6,A,F12.6,A)") &
605 "# E(HOCO) = ", hoco(1),
" a.u. = ", hoco(1)*ev_factor,
" eV"
607 WRITE (unit=iw, fmt=
"(A,A)")
"# Energy zero: ", trim(zero_label)
610 WRITE (unit=iw, fmt=
"(A,A)")
"# "//trim(energy_label),
" Density Occupation"
612 WRITE (unit=fmtstr_data, fmt=
"(A,I0,A)")
"(F15.8,2F20.", ndigits,
")"
615 eval = (ehist(i, 1) - energy_ref(1))*energy_factor
616 IF (nspins == 2)
THEN
619 WRITE (unit=iw, fmt=fmtstr_data) eval, hist(i, 1)*density_factor, &
620 occval(i, 1)*density_factor, hist(i, 2)*density_factor, occval(i, 2)*density_factor
622 IF (hist(i, 1) == 0.0_dp .AND. occval(i, 1) == 0.0_dp .AND. &
623 hist(i, 2) == 0.0_dp .AND. occval(i, 2) == 0.0_dp) cycle
624 WRITE (unit=iw, fmt=fmtstr_data) eval, hist(i, 1), occval(i, 1), &
625 hist(i, 2), occval(i, 2)
630 out_density = hist(i, 1)*density_factor
631 out_occ = occval(i, 1)*density_factor
633 out_density = hist(i, 1)
634 out_occ = occval(i, 1)
635 IF (out_density == 0.0_dp .AND. out_occ == 0.0_dp) cycle
637 WRITE (unit=iw, fmt=fmtstr_data) eval, out_density, out_occ
642 DEALLOCATE (hist, occval, ehist)
649 CALL timestop(handle)
various utilities that regard array of different kinds: output, allocation,... maybe it is not a good...
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
various routines to log and control the output. The idea is that decisions about where to log should ...
integer function, public cp_logger_get_default_io_unit(logger)
returns the unit nr for the ionode (-1 on all other processors) skips as well checks if the procs cal...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Types and basic routines needed for a kpoint calculation.
subroutine, public kpoint_release(kpoint)
Release a kpoint environment, deallocate all data.
Interface to the message passing library MPI.
Calculation of band structures.
subroutine, public calculate_kp_orbitals(qs_env, kpoint, scheme, nadd, mp_grid, kpgeneral, group_size_ext, kp_shift, gamma_centered)
diagonalize KS matrices at a set of kpoints
Utilities for broadened DOS and PDOS output.
subroutine, public add_broadened_peak(dos, occ_dos, emin, de, eig, occ, weight, broaden_type, broaden_width, voigt_mixing)
Add a broadened spectral line to a DOS curve.
subroutine, public write_broadening_info(iw, broaden_type, broaden_width, voigt_mixing)
Write broadening metadata.
integer, parameter, public dos_energy_zero_hoco
integer, parameter, public dos_energy_zero_auto
integer, parameter, public dos_energy_unit_ev
character(len=16) function, public dos_energy_label(energy_unit)
Return the energy-column label for DOS-like output.
integer function, public dos_resolve_energy_zero(energy_zero, smearing_enabled, fractional_occupation)
Resolve AUTO energy-zero selection for DOS-like output.
real(kind=dp) function, public dos_energy_scale(energy_unit)
Return the conversion factor from internal energy units to the selected DOS energy unit.
integer, parameter, public dos_energy_zero_absolute
pure real(kind=dp) function, public broadening_cutoff(broaden_type, broaden_width)
Broadening cutoff used for numerical accumulation.
real(kind=dp) function, public dos_density_scale(energy_unit)
Return the DOS-density conversion factor for the selected energy unit.
character(len=16) function, public dos_energy_zero_label(energy_zero)
Return the label for the selected DOS energy zero.
Calculation and writing of density of states.
subroutine, public calculate_dos_kp(qs_env, dft_section, write_curve_output)
Compute and write density of states (kpoints)
subroutine, public calculate_dos(mos, dft_section, unoccupied_evals, smearing_enabled, write_curve_output)
Compute and write density of states.
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.
Definition and initialisation of the mo data type.
subroutine, public get_mo_set(mo_set, maxocc, homo, lfomo, nao, nelectron, n_el_f, nmo, eigenvalues, occupation_numbers, mo_coeff, mo_coeff_b, uniform_occupation, kts, mu, flexible_electron_count)
Get the components of a MO set data structure.
represent a pointer to a 1d array
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Contains information about kpoints.
stores all the informations relevant to an mpi environment