84#include "./base/base_uses.f90"
90 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_scf_output'
110 INTEGER,
INTENT(IN) :: output_unit
113 INTEGER :: nelectron_total
114 LOGICAL :: gapw, gapw_xc, qmmm
121 NULLIFY (rho, energy, dft_control, scf_env, qs_charges)
122 CALL get_qs_env(qs_env=qs_env, rho=rho, energy=energy, dft_control=dft_control, &
123 scf_env=scf_env, qs_charges=qs_charges)
125 gapw = dft_control%qs_control%gapw
126 gapw_xc = dft_control%qs_control%gapw_xc
128 nelectron_total = scf_env%nelectron
130 CALL qs_scf_print_scf_summary(output_unit, rho, qs_charges, energy, nelectron_total, &
131 dft_control, qmmm, qs_env, gapw, gapw_xc)
143 INTEGER :: output_unit
146 INTEGER,
INTENT(IN) :: ndep
148 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_initial_info'
150 INTEGER :: handle, homo, ispin, nao, &
153 CALL timeset(routinen, handle)
155 IF (output_unit > 0)
THEN
156 DO ispin = 1, dft_control%nspins
159 nelectron=nelectron_spin, &
162 IF (dft_control%nspins > 1)
THEN
163 WRITE (unit=output_unit, fmt=
"(/,T2,A,I2)")
"Spin", ispin
165 WRITE (unit=output_unit, fmt=
"(/,(T2,A,T71,I10))") &
166 "Number of electrons:", nelectron_spin, &
167 "Number of occupied orbitals:", homo, &
168 "Number of molecular orbitals:", nmo
170 WRITE (unit=output_unit, fmt=
"(/,(T2,A,T71,I10))") &
171 "Number of orbital functions:", nao, &
172 "Number of independent orbital functions:", nao - ndep
175 CALL timestop(handle)
190 LOGICAL,
INTENT(IN) :: final_mos
192 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_write_mos'
194 CHARACTER(LEN=2) :: solver_method
195 CHARACTER(LEN=3*default_string_length) :: message
196 CHARACTER(LEN=5) :: spin
197 CHARACTER(LEN=default_string_length), &
198 DIMENSION(:),
POINTER :: tmpstringlist
199 INTEGER :: handle, homo, ikp, ispin, iw, kpoint, &
200 nao, nelectron, nkp, nmo, nspin, numo
201 INTEGER,
DIMENSION(2) :: nmos_occ
202 INTEGER,
DIMENSION(:),
POINTER :: mo_index_range
203 LOGICAL :: do_kpoints, do_printout, print_eigvals, &
204 print_eigvecs, print_mo_info, &
205 print_occup, print_occup_stats
206 REAL(kind=
dp) :: flexible_electron_count, maxocc, n_el_f, &
207 occup_stats_occ_threshold
208 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mo_eigenvalues, umo_eigenvalues
212 TYPE(
cp_fm_type),
POINTER :: mo_coeff, umo_coeff
215 TYPE(
dbcsr_type),
POINTER :: matrix_ks, matrix_s, mo_coeff_deriv
224 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
228 CALL timeset(routinen, handle)
230 cpassert(
ASSOCIATED(qs_env))
234 blacs_env=blacs_env, &
235 dft_control=dft_control, &
236 do_kpoints=do_kpoints, &
238 qs_kind_set=qs_kind_set, &
240 particle_set=particle_set, &
241 scf_control=scf_control)
248 CALL section_vals_val_get(dft_section,
"PRINT%MO%OCCUPATION_NUMBERS_STATS", c_vals=tmpstringlist)
250 print_occup_stats = .false.
251 occup_stats_occ_threshold = 1e-6_dp
252 IF (
SIZE(tmpstringlist) > 0)
THEN
253 print_occup_stats = .true.
254 IF (len_trim(tmpstringlist(1)) > 0) &
255 READ (tmpstringlist(1), *) print_occup_stats
257 IF (
SIZE(tmpstringlist) > 1) &
258 READ (tmpstringlist(2), *) occup_stats_occ_threshold
263 IF ((.NOT. print_mo_info) .OR. (.NOT. (print_eigvals .OR. print_eigvecs .OR. print_occup .OR. print_occup_stats)))
THEN
264 CALL timestop(handle)
268 NULLIFY (fm_struct_tmp)
270 NULLIFY (mo_coeff_deriv)
271 NULLIFY (mo_eigenvalues)
274 NULLIFY (umo_eigenvalues)
278 nspin = dft_control%nspins
284 nkp =
SIZE(kpoints%kp_env)
286 CALL get_qs_env(qs_env, matrix_ks=ks, matrix_s=s)
287 cpassert(
ASSOCIATED(ks))
288 cpassert(
ASSOCIATED(s))
292 kp_loop:
DO ikp = 1, nkp
295 mos => kpoints%kp_env(ikp)%kpoint_env%mos(1, :)
298 CALL get_qs_env(qs_env, matrix_ks=ks, mos=mos)
301 cpassert(
ASSOCIATED(mos))
312 cpabort(
"The OT method is not implemented for k points")
317 matrix_ks => ks(ispin)%matrix
318 matrix_s => s(1)%matrix
321 IF (dft_control%do_admm)
THEN
329 eigenvalues=mo_eigenvalues, &
332 nelectron=nelectron, &
336 flexible_electron_count=flexible_electron_count)
338 IF (
ASSOCIATED(qs_env%mo_derivs))
THEN
339 mo_coeff_deriv => qs_env%mo_derivs(ispin)%matrix
341 mo_coeff_deriv => null()
346 ks_matrix=matrix_ks, &
347 evals_arg=mo_eigenvalues, &
348 co_rotate_dbcsr=mo_coeff_deriv)
353 cpassert(
ASSOCIATED(mo_index_range))
354 IF (mo_index_range(2) < 0)
THEN
357 numo = min(mo_index_range(2) - homo, nao - homo)
376 flexible_electron_count=flexible_electron_count)
378 fm_struct=fm_struct_tmp, &
379 name=
"Temporary MO set (unoccupied MOs only) for printout")
382 mo_coeff=umo_coeff, &
383 eigenvalues=umo_eigenvalues)
389 NULLIFY (local_preconditioner)
390 IF (
ASSOCIATED(scf_env%ot_preconditioner))
THEN
391 local_preconditioner => scf_env%ot_preconditioner(1)%preconditioner
393 NULLIFY (local_preconditioner)
400 matrix_c_fm=umo_coeff, &
401 matrix_orthogonal_space_fm=mo_coeff, &
402 eps_gradient=scf_control%eps_lumos, &
404 iter_max=scf_control%max_iter_lumos, &
405 size_ortho_space=nmo)
408 ks_matrix=matrix_ks, &
409 evals_arg=umo_eigenvalues)
415 IF (dft_control%do_admm)
THEN
421 message =
"The MO information is only calculated after SCF convergence "// &
422 "is achieved when the orbital transformation (OT) method is used"
423 cpwarn(trim(message))
424 do_printout = .false.
438 NULLIFY (cart_overlap_qs_env)
439 IF ((ikp == 1) .AND. (ispin == 1)) cart_overlap_qs_env => qs_env
447 cpabort(
"Invalid spin")
449 IF (
ASSOCIATED(umo_set))
THEN
451 final_mos=final_mos, spin=trim(spin), solver_method=solver_method, &
452 umo_set=umo_set, qs_env=cart_overlap_qs_env)
455 final_mos=final_mos, spin=trim(spin), solver_method=solver_method, &
456 qs_env=cart_overlap_qs_env)
459 IF (
ASSOCIATED(umo_set))
THEN
461 final_mos=final_mos, solver_method=solver_method, &
462 umo_set=umo_set, qs_env=cart_overlap_qs_env)
465 final_mos=final_mos, solver_method=solver_method, &
466 qs_env=cart_overlap_qs_env)
470 nmos_occ(ispin) = max(nmos_occ(ispin), count(mo_set%occupation_numbers > occup_stats_occ_threshold))
474 IF (
ASSOCIATED(umo_set))
THEN
487 IF (do_printout .AND. print_mo_info .AND. print_occup_stats)
THEN
489 ignore_should_output=print_mo_info, &
492 IF (
SIZE(mos) > 1)
THEN
493 WRITE (unit=iw, fmt=
"(A,I4)")
" MO| Total occupied (ALPHA):", nmos_occ(1)
494 WRITE (unit=iw, fmt=
"(A,I4)")
" MO| Total occupied (BETA): ", nmos_occ(2)
496 WRITE (unit=iw, fmt=
"(A,I4)")
" MO| Total occupied: ", nmos_occ(1)
498 WRITE (unit=iw, fmt=
"(A)")
""
501 ignore_should_output=print_mo_info)
504 CALL timestop(handle)
519 energy, total_steps, should_stop, outer_loop_converged)
520 INTEGER :: output_unit
524 INTEGER :: total_steps
525 LOGICAL,
INTENT(IN) :: should_stop, outer_loop_converged
527 REAL(kind=
dp) :: outer_loop_eps
529 outer_loop_eps = sqrt(maxval(scf_env%outer_scf%gradient(:, scf_env%outer_scf%iter_count)**2))
530 IF (output_unit > 0)
WRITE (output_unit,
'(/,T3,A,I4,A,E10.2,A,F22.10)') &
531 "outer SCF iter = ", scf_env%outer_scf%iter_count, &
532 " RMS gradient = ", outer_loop_eps,
" energy =", energy%total
534 IF (outer_loop_converged)
THEN
535 IF (output_unit > 0)
WRITE (output_unit,
'(T3,A,I4,A,I4,A,/)') &
536 "outer SCF loop converged in", scf_env%outer_scf%iter_count, &
537 " iterations or ", total_steps,
" steps"
538 ELSE IF (scf_env%outer_scf%iter_count > scf_control%outer_scf%max_scf &
539 .OR. should_stop)
THEN
540 IF (output_unit > 0)
WRITE (output_unit,
'(T3,A,I4,A,I4,A,/)') &
541 "outer SCF loop FAILED to converge after ", &
542 scf_env%outer_scf%iter_count,
" iterations or ", total_steps,
" steps"
559 INTEGER :: output_unit
560 LOGICAL :: just_energy
561 REAL(kind=
dp) :: t1, t2
564 IF ((output_unit > 0) .AND. scf_env%print_iter_line)
THEN
565 IF (just_energy)
THEN
566 WRITE (unit=output_unit, &
567 fmt=
"(T2,A,1X,A,T20,E8.2,1X,F6.1,16X,F20.10)") &
568 " -", trim(scf_env%iter_method), scf_env%iter_param, t2 - t1, energy%total
570 IF ((abs(scf_env%iter_delta) < 1.0e-8_dp) .OR. &
571 (abs(scf_env%iter_delta) >= 1.0e5_dp))
THEN
572 WRITE (unit=output_unit, &
573 fmt=
"(T2,I5,1X,A,T20,E8.2,1X,F6.1,1X,ES14.4,1X,F20.10,1X,ES9.2)") &
574 scf_env%iter_count, trim(scf_env%iter_method), scf_env%iter_param, &
575 t2 - t1, scf_env%iter_delta, energy%total, energy%total - energy%tot_old
577 WRITE (unit=output_unit, &
578 fmt=
"(T2,I5,1X,A,T20,E8.2,1X,F6.1,1X,F14.8,1X,F20.10,1X,ES9.2)") &
579 scf_env%iter_count, trim(scf_env%iter_method), scf_env%iter_param, &
580 t2 - t1, scf_env%iter_delta, energy%total, energy%total - energy%tot_old
605 SUBROUTINE qs_scf_print_scf_summary(output_unit, rho, qs_charges, energy, nelectron_total, &
606 dft_control, qmmm, qs_env, gapw, gapw_xc)
607 INTEGER,
INTENT(IN) :: output_unit
611 INTEGER,
INTENT(IN) :: nelectron_total
613 LOGICAL,
INTENT(IN) :: qmmm
615 LOGICAL,
INTENT(IN) :: gapw, gapw_xc
617 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_print_scf_summary'
619 INTEGER :: bc, handle, ispin, psolver
620 REAL(kind=
dp) :: e_extrapolated, exc1_energy, exc_energy, &
621 implicit_ps_ehartree, tot1_h, tot1_s
622 REAL(kind=
dp),
DIMENSION(:),
POINTER :: tot_rho_r
626 NULLIFY (tot_rho_r, pw_env)
627 CALL timeset(routinen, handle)
629 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, scf_control=scf_control)
630 psolver = pw_env%poisson_env%parameters%solver
632 IF (output_unit > 0)
THEN
634 IF (.NOT. (dft_control%qs_control%semi_empirical .OR. &
635 dft_control%qs_control%xtb .OR. &
636 dft_control%qs_control%dftb))
THEN
637 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T41,2F20.10))") &
638 "Electronic density on regular grids: ", &
641 "Core density on regular grids:", &
642 qs_charges%total_rho_core_rspace, &
643 qs_charges%total_rho_core_rspace + &
644 qs_charges%total_rho1_hard_nuc - &
645 REAL(nelectron_total + dft_control%charge,
dp)
647 IF (dft_control%correct_surf_dip)
THEN
648 WRITE (unit=output_unit, fmt=
"((T3,A,/,T3,A,T41,F20.10))") &
649 "Total dipole moment perpendicular to ", &
650 "the slab [electrons-Angstroem]: ", &
651 qs_env%surface_dipole_moment
655 tot1_h = qs_charges%total_rho1_hard(1)
656 tot1_s = qs_charges%total_rho1_soft(1)
657 DO ispin = 2, dft_control%nspins
658 tot1_h = tot1_h + qs_charges%total_rho1_hard(ispin)
659 tot1_s = tot1_s + qs_charges%total_rho1_soft(ispin)
661 WRITE (unit=output_unit, fmt=
"((T3,A,T41,2F20.10))") &
662 "Hard and soft densities (Lebedev):", &
664 WRITE (unit=output_unit, fmt=
"(T3,A,T41,F20.10)") &
665 "Total Rho_soft + Rho1_hard - Rho1_soft (r-space): ", &
667 "Total charge density (r-space): ", &
669 + qs_charges%total_rho_core_rspace &
670 + qs_charges%total_rho1_hard_nuc
671 IF (qs_charges%total_rho1_hard_nuc /= 0.0_dp)
THEN
672 WRITE (unit=output_unit, fmt=
"(T3,A,T41,F20.10)") &
673 "Total CNEO nuc. char. den. (Lebedev): ", &
674 qs_charges%total_rho1_hard_nuc, &
675 "Total CNEO soft char. den. (Lebedev): ", &
676 qs_charges%total_rho1_soft_nuc_lebedev, &
677 "Total CNEO soft char. den. (r-space): ", &
678 qs_charges%total_rho1_soft_nuc_rspace, &
679 "Total soft Rho_e+n+0 (g-space):", &
680 qs_charges%total_rho_gspace
682 WRITE (unit=output_unit, fmt=
"(T3,A,T41,F20.10)") &
683 "Total Rho_soft + Rho0_soft (g-space):", &
684 qs_charges%total_rho_gspace
688 WRITE (unit=output_unit, fmt=
"(T3,A,T41,F20.10)") &
689 "Total charge density on r-space grids: ", &
691 qs_charges%total_rho_core_rspace, &
692 "Total charge density g-space grids: ", &
693 qs_charges%total_rho_gspace
696 IF (dft_control%qs_control%semi_empirical)
THEN
697 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
698 "Core-core repulsion energy [eV]: ", energy%core_overlap*
evolt, &
699 "Core Hamiltonian energy [eV]: ", energy%core*
evolt, &
700 "Two-electron integral energy [eV]: ", energy%hartree*
evolt, &
701 "Electronic energy [eV]: ", &
702 (energy%core + 0.5_dp*energy%hartree)*
evolt
703 IF (energy%dispersion /= 0.0_dp) &
704 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
705 "Dispersion energy [eV]: ", energy%dispersion*
evolt
706 ELSEIF (dft_control%qs_control%dftb)
THEN
707 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
708 "Core Hamiltonian energy: ", energy%core, &
709 "Repulsive potential energy: ", energy%repulsive, &
710 "Electronic energy: ", energy%hartree, &
711 "Dispersion energy: ", energy%dispersion
712 IF (energy%dftb3 /= 0.0_dp) &
713 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
714 "DFTB3 3rd order energy: ", energy%dftb3
715 IF (energy%efield /= 0.0_dp) &
716 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
717 "Electric field interaction energy: ", energy%efield
718 ELSEIF (dft_control%qs_control%xtb)
THEN
719 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
720 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
721 "Core Hamiltonian energy: ", energy%core, &
722 "Repulsive potential energy: ", energy%repulsive, &
723 "Electrostatic energy: ", energy%el_stat, &
724 "Self-consistent dispersion energy: ", energy%dispersion_sc, &
725 "Non-self consistent dispersion energy: ", energy%dispersion, &
726 "Correction for halogen bonding: ", energy%xtb_xb_inter
728 IF (dft_control%qs_control%xtb_control%gfn_type == 0)
THEN
729 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
730 "Core Hamiltonian energy: ", energy%core, &
731 "Repulsive potential energy: ", energy%repulsive, &
732 "SRB Correction energy: ", energy%srb, &
733 "Charge equilibration energy: ", energy%eeq, &
734 "Dispersion energy: ", energy%dispersion
735 ELSEIF (dft_control%qs_control%xtb_control%gfn_type == 1)
THEN
736 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
737 "Core Hamiltonian energy: ", energy%core, &
738 "Repulsive potential energy: ", energy%repulsive, &
739 "Electronic energy: ", energy%hartree, &
740 "DFTB3 3rd order energy: ", energy%dftb3, &
741 "Dispersion energy: ", energy%dispersion
742 IF (dft_control%qs_control%xtb_control%xb_interaction) &
743 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
744 "Correction for halogen bonding: ", energy%xtb_xb_inter
745 ELSEIF (dft_control%qs_control%xtb_control%gfn_type == 2)
THEN
746 cpabort(
"gfn_typ 2 NYA")
748 cpabort(
"invalid gfn_typ")
751 IF (dft_control%qs_control%xtb_control%do_nonbonded) &
752 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
753 "Correction for nonbonded interactions: ", energy%xtb_nonbonded
754 IF (energy%efield /= 0.0_dp) &
755 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
756 "Electric field interaction energy: ", energy%efield
758 IF (dft_control%do_admm)
THEN
759 exc_energy = energy%exc + energy%exc_aux_fit
760 IF (gapw .OR. gapw_xc) exc1_energy = energy%exc1 + energy%exc1_aux_fit
762 exc_energy = energy%exc
763 IF (gapw .OR. gapw_xc) exc1_energy = energy%exc1
767 implicit_ps_ehartree = pw_env%poisson_env%implicit_env%ehartree
768 bc = pw_env%poisson_env%parameters%ps_implicit_params%boundary_condition
771 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
772 "Overlap energy of the core charge distribution:", energy%core_overlap, &
773 "Self energy of the core charge distribution: ", energy%core_self, &
774 "Core Hamiltonian energy: ", energy%core, &
775 "Hartree energy: ", implicit_ps_ehartree, &
776 "Electric enthalpy: ", energy%hartree, &
777 "Exchange-correlation energy: ", exc_energy
779 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
780 "Overlap energy of the core charge distribution:", energy%core_overlap, &
781 "Self energy of the core charge distribution: ", energy%core_self, &
782 "Core Hamiltonian energy: ", energy%core, &
783 "Hartree energy: ", energy%hartree, &
784 "Exchange-correlation energy: ", exc_energy
787 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
788 "Overlap energy of the core charge distribution:", energy%core_overlap, &
789 "Self energy of the core charge distribution: ", energy%core_self, &
790 "Core Hamiltonian energy: ", energy%core, &
791 "Hartree energy: ", energy%hartree, &
792 "Exchange-correlation energy: ", exc_energy
794 IF (energy%e_hartree /= 0.0_dp) &
795 WRITE (unit=output_unit, fmt=
"(T3,A,/,T3,A,T56,F25.14)") &
796 "Coulomb Electron-Electron Interaction Energy ", &
797 "- Already included in the total Hartree term ", energy%e_hartree
798 IF (energy%ex /= 0.0_dp) &
799 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
800 "Hartree-Fock Exchange energy: ", energy%ex
801 IF (energy%dispersion /= 0.0_dp) &
802 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
803 "Dispersion energy: ", energy%dispersion
804 IF (energy%gcp /= 0.0_dp) &
805 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
806 "gCP energy: ", energy%gcp
807 IF (energy%efield /= 0.0_dp) &
808 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
809 "Electric field interaction energy: ", energy%efield
811 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
812 "GAPW| Exc from hard and soft atomic rho1: ", exc1_energy, &
813 "GAPW| local Eh = 1 center integrals: ", energy%hartree_1c
816 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
817 "GAPW_XC| Exc from hard and soft atomic rho1: ", exc1_energy
819 IF (energy%core_cneo /= 0.0_dp)
THEN
820 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
821 "CNEO| quantum nuclear core energy: ", energy%core_cneo
824 IF (dft_control%hairy_probes .EQV. .true.)
THEN
825 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
826 "Electronic entropic energy:", energy%kTS
827 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
828 "Fermi energy:", energy%efermi
830 IF (dft_control%smear)
THEN
831 SELECT CASE (scf_control%smear%method)
834 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
835 "Smearing free energy correction:", energy%kTS
837 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
838 "Electronic entropic energy:", energy%kTS
840 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
841 "Fermi energy:", energy%efermi
843 IF (dft_control%dft_plus_u)
THEN
844 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
845 "DFT+U energy:", energy%dft_plus_u
847 IF (dft_control%do_sccs)
THEN
848 WRITE (unit=output_unit, fmt=
"(A)")
""
852 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
853 "QM/MM Electrostatic energy: ", energy%qmmm_el
854 IF (qs_env%qmmm_env_qm%image_charge)
THEN
855 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
856 "QM/MM image charge energy: ", energy%image_charge
859 IF (dft_control%qs_control%mulliken_restraint)
THEN
860 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
861 "Mulliken restraint energy: ", energy%mulliken
863 IF (dft_control%qs_control%semi_empirical)
THEN
864 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
865 "Total energy [eV]: ", energy%total*
evolt
866 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
867 "Atomic reference energy [eV]: ", energy%core_self*
evolt, &
868 "Heat of formation [kcal/mol]: ", &
869 (energy%total + energy%core_self)*
kcalmol
871 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
872 "Total energy: ", energy%total
873 IF (dft_control%smear)
THEN
874 SELECT CASE (scf_control%smear%method)
876 e_extrapolated = energy%total - 0.5_dp*energy%kTS
877 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
878 "Total energy (extrapolated to T->0): ", e_extrapolated
880 e_extrapolated = energy%total - 0.5_dp*energy%kTS
881 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
882 "Total energy (extrapolated to sigma->0): ", e_extrapolated
889 IF (qs_env%qmmm_env_qm%image_charge)
THEN
896 CALL timestop(handle)
898 END SUBROUTINE qs_scf_print_scf_summary
913 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_loop_print'
915 INTEGER :: after, handle, ic, ispin, iw
916 LOGICAL :: do_kpoints, omit_headers
917 REAL(kind=
dp) :: mo_mag_max, mo_mag_min, orthonormality
919 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_ks, matrix_p, matrix_s
926 CALL timeset(routinen, handle)
928 CALL get_qs_env(qs_env=qs_env, input=input, dft_control=dft_control, &
929 do_kpoints=do_kpoints)
935 DO ispin = 1, dft_control%nspins
938 dft_section,
"PRINT%AO_MATRICES/DENSITY"),
cp_p_file))
THEN
944 after = min(max(after, 1), 16)
945 DO ic = 1,
SIZE(matrix_p, 2)
947 output_unit=iw, omit_headers=omit_headers)
950 "PRINT%AO_MATRICES/DENSITY")
954 dft_section,
"PRINT%AO_MATRICES/KOHN_SHAM_MATRIX"),
cp_p_file))
THEN
958 after = min(max(after, 1), 16)
959 CALL get_qs_env(qs_env=qs_env, matrix_ks_kp=matrix_ks)
960 DO ic = 1,
SIZE(matrix_ks, 2)
961 IF (dft_control%qs_control%semi_empirical)
THEN
963 scale=
evolt, output_unit=iw, omit_headers=omit_headers)
966 output_unit=iw, omit_headers=omit_headers)
970 "PRINT%AO_MATRICES/KOHN_SHAM_MATRIX")
976 scf_section,
"PRINT%MO_ORTHONORMALITY"),
cp_p_file))
THEN
981 WRITE (iw,
'(T8,A)') &
982 " K-points: Maximum deviation from MO S-orthonormality not determined"
985 "PRINT%MO_ORTHONORMALITY")
991 CALL get_qs_env(qs_env=qs_env, matrix_s_kp=matrix_s)
997 WRITE (iw,
'(T8,A,T61,E20.4)') &
998 " Maximum deviation from MO S-orthonormality", orthonormality
1001 "PRINT%MO_ORTHONORMALITY")
1005 scf_section,
"PRINT%MO_MAGNITUDE"),
cp_p_file))
THEN
1006 IF (do_kpoints)
THEN
1008 extension=
".scfLog")
1010 WRITE (iw,
'(T8,A)') &
1011 " K-points: Minimum/Maximum MO magnitude not determined"
1014 "PRINT%MO_MAGNITUDE")
1019 extension=
".scfLog")
1021 WRITE (iw,
'(T8,A,T41,2E20.4)') &
1022 " Minimum/Maximum MO magnitude ", mo_mag_min, mo_mag_max
1025 "PRINT%MO_MAGNITUDE")
1029 CALL timestop(handle)
1048 energy, total_steps, should_stop, outer_loop_converged, &
1050 INTEGER :: output_unit
1055 INTEGER :: total_steps
1056 LOGICAL,
INTENT(IN) :: should_stop, outer_loop_converged, &
1059 REAL(kind=
dp) :: outer_loop_eps
1062 outer_loop_eps = sqrt(maxval(scf_env%outer_scf%gradient(:, scf_env%outer_scf%iter_count)**2))
1063 IF (output_unit > 0)
WRITE (output_unit,
'(/,T3,A,I4,A,E10.2,A,F22.10)') &
1064 "CDFT SCF iter = ", scf_env%outer_scf%iter_count, &
1065 " RMS gradient = ", outer_loop_eps,
" energy =", energy%total
1066 IF (outer_loop_converged)
THEN
1067 IF (output_unit > 0)
WRITE (output_unit,
'(T3,A,I4,A,I4,A,/)') &
1068 "CDFT SCF loop converged in", scf_env%outer_scf%iter_count, &
1069 " iterations or ", total_steps,
" steps"
1071 IF ((scf_env%outer_scf%iter_count > scf_control%outer_scf%max_scf .OR. should_stop) &
1072 .AND. .NOT. outer_loop_converged)
THEN
1073 IF (output_unit > 0)
WRITE (output_unit,
'(T3,A,I4,A,I4,A,/)') &
1074 "CDFT SCF loop FAILED to converge after ", &
1075 scf_env%outer_scf%iter_count,
" iterations or ", total_steps,
" steps"
1090 INTEGER :: output_unit
1093 IF (output_unit > 0)
THEN
1094 WRITE (output_unit,
'(/,A)') &
1095 " ---------------------------------- CDFT --------------------------------------"
1096 WRITE (output_unit,
'(A)') &
1097 " Optimizing a density constraint in an external SCF loop "
1098 WRITE (output_unit,
'(A)')
" "
1099 SELECT CASE (cdft_control%type)
1101 WRITE (output_unit,
'(A)')
" Type of constraint: Hirshfeld"
1103 WRITE (output_unit,
'(A)')
" Type of constraint: Becke"
1105 WRITE (output_unit,
'(A,I8)')
" Number of constraints: ",
SIZE(cdft_control%group)
1106 WRITE (output_unit,
'(A,L8)')
" Using fragment densities:", cdft_control%fragment_density
1107 WRITE (output_unit,
'(A)')
" "
1108 IF (cdft_control%atomic_charges)
WRITE (output_unit,
'(A,/)')
" Calculating atomic CDFT charges"
1109 SELECT CASE (cdft_control%constraint_control%optimizer)
1111 WRITE (output_unit,
'(A)') &
1112 " Minimizer : SD : steepest descent"
1114 WRITE (output_unit,
'(A)') &
1115 " Minimizer : DIIS : direct inversion"
1116 WRITE (output_unit,
'(A)') &
1117 " in the iterative subspace"
1118 WRITE (output_unit,
'(A,I3,A)') &
1120 cdft_control%constraint_control%diis_buffer_length,
" DIIS vectors"
1122 WRITE (output_unit,
'(A)') &
1123 " Minimizer : BISECT : gradient bisection"
1124 WRITE (output_unit,
'(A,I3)') &
1125 " using a trust count of", &
1126 cdft_control%constraint_control%bisect_trust_count
1130 cdft_control%constraint_control%optimizer, output_unit)
1132 WRITE (output_unit,
'(A)')
" Minimizer : Secant"
1136 WRITE (output_unit,
'(/,A,L7)') &
1137 " Reusing OT preconditioner: ", cdft_control%reuse_precond
1138 IF (cdft_control%reuse_precond)
THEN
1139 WRITE (output_unit,
'(A,I3,A,I3,A)') &
1140 " using old preconditioner for up to ", &
1141 cdft_control%max_reuse,
" subsequent CDFT SCF"
1142 WRITE (output_unit,
'(A,I3,A,I3,A)') &
1143 " iterations if the relevant loop converged in less than ", &
1144 cdft_control%precond_freq,
" steps"
1146 SELECT CASE (cdft_control%type)
1148 WRITE (output_unit,
'(/,A)')
" Hirshfeld constraint settings"
1149 WRITE (output_unit,
'(A)')
" "
1150 SELECT CASE (cdft_control%hirshfeld_control%shape_function)
1152 WRITE (output_unit,
'(A, A8)') &
1153 " Shape function type: ",
"Gaussian"
1154 WRITE (output_unit,
'(A)', advance=
'NO') &
1155 " Type of Gaussian: "
1156 SELECT CASE (cdft_control%hirshfeld_control%gaussian_shape)
1158 WRITE (output_unit,
'(A13)')
"Default"
1160 WRITE (output_unit,
'(A13)')
"Covalent"
1162 WRITE (output_unit,
'(A13)')
"Fixed radius"
1164 WRITE (output_unit,
'(A13)')
"Van der Waals"
1166 WRITE (output_unit,
'(A13)')
"User-defined"
1170 WRITE (output_unit,
'(A, A8)') &
1171 " Shape function type: ",
"Density"
1174 WRITE (output_unit,
'(/, A)')
" Becke constraint settings"
1175 WRITE (output_unit,
'(A)')
" "
1176 SELECT CASE (cdft_control%becke_control%cutoff_type)
1178 WRITE (output_unit,
'(A,F8.3,A)') &
1179 " Cutoff for partitioning :",
cp_unit_from_cp2k(cdft_control%becke_control%rglobal, &
1180 "angstrom"),
" angstrom"
1182 WRITE (output_unit,
'(A)') &
1183 " Using element specific cutoffs for partitioning"
1185 WRITE (output_unit,
'(A,L7)') &
1186 " Skipping distant gpoints: ", cdft_control%becke_control%should_skip
1187 WRITE (output_unit,
'(A,L7)') &
1188 " Precompute gradients : ", cdft_control%becke_control%in_memory
1189 WRITE (output_unit,
'(A)')
" "
1190 IF (cdft_control%becke_control%adjust) &
1191 WRITE (output_unit,
'(A)') &
1192 " Using atomic radii to generate a heteronuclear charge partitioning"
1193 WRITE (output_unit,
'(A)')
" "
1194 IF (.NOT. cdft_control%becke_control%cavity_confine)
THEN
1195 WRITE (output_unit,
'(A)') &
1196 " No confinement is active"
1198 WRITE (output_unit,
'(A)')
" Confinement using a Gaussian shaped cavity is active"
1199 SELECT CASE (cdft_control%becke_control%cavity_shape)
1201 WRITE (output_unit,
'(A,F8.4, A)') &
1202 " Type of Gaussian : Fixed radius: ", &
1205 WRITE (output_unit,
'(A)') &
1206 " Type of Gaussian : Covalent radius "
1208 WRITE (output_unit,
'(A)') &
1209 " Type of Gaussian : vdW radius "
1211 WRITE (output_unit,
'(A)') &
1212 " Type of Gaussian : User radius "
1214 WRITE (output_unit,
'(A,ES12.4)') &
1215 " Cavity threshold : ", cdft_control%becke_control%eps_cavity
1218 WRITE (output_unit,
'(/,A)') &
1219 " ---------------------------------- CDFT --------------------------------------"
1232 INTEGER :: output_unit
1237 IF (output_unit > 0)
THEN
1238 SELECT CASE (cdft_control%type)
1240 WRITE (output_unit,
'(/,T3,A,T60)') &
1241 '------------------- Hirshfeld constraint information -------------------'
1243 WRITE (output_unit,
'(/,T3,A,T60)') &
1244 '--------------------- Becke constraint information ---------------------'
1246 cpabort(
"Unknown CDFT constraint.")
1248 DO igroup = 1,
SIZE(cdft_control%target)
1249 IF (igroup > 1)
WRITE (output_unit,
'(T3,A)')
' '
1250 WRITE (output_unit,
'(T3,A,T54,(3X,I18))') &
1251 'Atomic group :', igroup
1252 SELECT CASE (cdft_control%group(igroup)%constraint_type)
1254 IF (cdft_control%group(igroup)%is_fragment_constraint)
THEN
1255 WRITE (output_unit,
'(T3,A,T42,A)') &
1256 'Type of constraint :', adjustr(
'Charge density constraint (frag.)')
1258 WRITE (output_unit,
'(T3,A,T50,A)') &
1259 'Type of constraint :', adjustr(
'Charge density constraint')
1262 IF (cdft_control%group(igroup)%is_fragment_constraint)
THEN
1263 WRITE (output_unit,
'(T3,A,T35,A)') &
1264 'Type of constraint :', adjustr(
'Magnetization density constraint (frag.)')
1266 WRITE (output_unit,
'(T3,A,T43,A)') &
1267 'Type of constraint :', adjustr(
'Magnetization density constraint')
1270 IF (cdft_control%group(igroup)%is_fragment_constraint)
THEN
1271 WRITE (output_unit,
'(T3,A,T38,A)') &
1272 'Type of constraint :', adjustr(
'Alpha spin density constraint (frag.)')
1274 WRITE (output_unit,
'(T3,A,T46,A)') &
1275 'Type of constraint :', adjustr(
'Alpha spin density constraint')
1278 IF (cdft_control%group(igroup)%is_fragment_constraint)
THEN
1279 WRITE (output_unit,
'(T3,A,T39,A)') &
1280 'Type of constraint :', adjustr(
'Beta spin density constraint (frag.)')
1282 WRITE (output_unit,
'(T3,A,T47,A)') &
1283 'Type of constraint :', adjustr(
'Beta spin density constraint')
1286 cpabort(
"Unknown constraint type.")
1288 WRITE (output_unit,
'(T3,A,T54,(3X,F18.12))') &
1289 'Target value of constraint :', cdft_control%target(igroup)
1290 WRITE (output_unit,
'(T3,A,T54,(3X,F18.12))') &
1291 'Current value of constraint :', cdft_control%value(igroup)
1292 WRITE (output_unit,
'(T3,A,T59,(3X,ES13.3))') &
1293 'Deviation from target :', cdft_control%value(igroup) - cdft_control%target(igroup)
1294 WRITE (output_unit,
'(T3,A,T54,(3X,F18.12))') &
1295 'Strength of constraint :', cdft_control%strength(igroup)
1297 WRITE (output_unit,
'(T3,A)') &
1298 '------------------------------------------------------------------------'
Types and set/get functions for auxiliary density matrix methods.
Contains methods used in the context of density fitting.
subroutine, public admm_uncorrect_for_eigenvalues(ispin, admm_env, ks_matrix)
...
subroutine, public admm_correct_for_eigenvalues(ispin, admm_env, ks_matrix)
...
methods related to the blacs parallel environment
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public cp_dbcsr_write_sparse_matrix(sparse_matrix, before, after, qs_env, para_env, first_row, last_row, first_col, last_col, scale, output_unit, omit_headers, cartesian_basis)
...
represent the structure of a full matrix
subroutine, public cp_fm_struct_create(fmstruct, para_env, context, nrow_global, ncol_global, nrow_block, ncol_block, descriptor, first_p_pos, local_leading_dimension, template_fmstruct, square_blocks, force_block)
allocates and initializes a full matrix structure
subroutine, public cp_fm_struct_release(fmstruct)
releases a full matrix structure
represent a full matrix distributed on many processors
subroutine, public cp_fm_init_random(matrix, ncol, start_col)
fills a matrix with random numbers
various routines to log and control the output. The idea is that decisions about where to log should ...
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...
real(kind=dp) function, public cp_unit_from_cp2k(value, unit_str, defaults, power)
converts from the internal cp2k units to the given unit
sums arrays of real/complex numbers with much reduced round-off as compared to a naive implementation...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Types and basic routines needed for a kpoint calculation.
Machine interface based on Fortran 2003 and POSIX.
subroutine, public m_flush(lunit)
flushes units if the &GLOBAL flag is set accordingly
Interface to the message passing library MPI.
Define the data structure for the particle information.
Definition of physical constants:
real(kind=dp), parameter, public kcalmol
real(kind=dp), parameter, public evolt
computes preconditioners, and implements methods to apply them currently used in qs_ot
Types containing essential information for running implicit (iterative) Poisson solver.
integer, parameter, public neumann_bc
integer, parameter, public mixed_bc
integer, parameter, public mixed_periodic_bc
integer, parameter, public periodic_bc
container for various plainwaves related things
functions related to the poisson solver on regular grids
integer, parameter, public pw_poisson_implicit
Routines for image charge calculation within QM/MM.
subroutine, public print_image_coefficients(image_coeff, qs_env)
Print image coefficients.
Control parameters for optimizers that work with CDFT constraints.
subroutine, public cdft_opt_type_write(cdft_opt_control, optimizer, output_unit)
writes information about the CDFT optimizer object
Defines CDFT control structures.
container for information about total charges on the grids
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.
Define the quickstep kind type and their sub types.
Definition and initialisation of the mo data type.
subroutine, public write_mo_set_to_output_unit(mo_set, qs_kind_set, particle_set, dft_section, before, kpoint, final_mos, spin, solver_method, rtp, cpart, sim_step, umo_set, qs_env)
Write MO information to output file (eigenvalues, occupation numbers, coefficients)
collects routines that perform operations directly related to MOs
subroutine, public calculate_magnitude(mo_array, mo_mag_min, mo_mag_max)
...
subroutine, public calculate_orthonormality(orthonormality, mo_array, matrix_s)
...
Set occupation of molecular orbitals.
Definition and initialisation of the mo data type.
subroutine, public init_mo_set(mo_set, fm_pool, fm_ref, fm_struct, name, counter)
initializes an allocated mo_set. eigenvalues, mo_coeff, occupation_numbers are valid only after this ...
subroutine, public allocate_mo_set(mo_set, nao, nmo, nelectron, n_el_f, maxocc, flexible_electron_count)
Allocates a mo set and partially initializes it (nao,nmo,nelectron, and flexible_electron_count are v...
subroutine, public deallocate_mo_set(mo_set)
Deallocate a wavefunction data structure.
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.
an eigen-space solver for the generalised symmetric eigenvalue problem for sparse matrices,...
subroutine, public ot_eigensolver(matrix_h, matrix_s, matrix_orthogonal_space_fm, matrix_c_fm, preconditioner, eps_gradient, iter_max, size_ortho_space, silent, ot_settings)
...
superstucture that hold various representations of the density and keeps track of which ones are vali...
subroutine, public qs_rho_get(rho_struct, rho_ao, rho_ao_im, rho_ao_kp, rho_ao_im_kp, rho_r, drho_r, rho_g, drho_g, tau_r, tau_g, rho_r_valid, drho_r_valid, rho_g_valid, drho_g_valid, tau_r_valid, tau_g_valid, tot_rho_r, tot_rho_g, rho_r_sccs, soft_valid, complex_rho_ao)
returns info about the density described by this object. If some representation is not available an e...
Self-consistent continuum solvation (SCCS) model implementation.
subroutine, public print_sccs_results(energy, sccs_control, output_unit)
Print SCCS results.
subroutine, public qs_scf_print_summary(output_unit, qs_env)
writes a summary of information after scf
subroutine, public qs_scf_cdft_constraint_info(output_unit, cdft_control)
writes CDFT constraint information
subroutine, public qs_scf_loop_print(qs_env, scf_env, para_env)
collects the 'heavy duty' printing tasks out of the SCF loop
subroutine, public qs_scf_outer_loop_info(output_unit, scf_control, scf_env, energy, total_steps, should_stop, outer_loop_converged)
writes basic information obtained in a scf outer loop step
subroutine, public qs_scf_initial_info(output_unit, mos, dft_control, ndep)
writes basic information at the beginning of an scf run
subroutine, public qs_scf_write_mos(qs_env, scf_env, final_mos)
Write the MO eigenvector, eigenvalues, and occupation numbers to the output unit.
subroutine, public qs_scf_loop_info(scf_env, output_unit, just_energy, t1, t2, energy)
writes basic information obtained in a scf step
subroutine, public qs_scf_cdft_info(output_unit, scf_control, scf_env, cdft_control, energy, total_steps, should_stop, outer_loop_converged, cdft_loop)
writes CDFT constraint information and optionally CDFT scf loop info
subroutine, public qs_scf_cdft_initial_info(output_unit, cdft_control)
writes information about the CDFT env
module that contains the definitions of the scf types
integer, parameter, public ot_method_nr
integer, parameter, public special_diag_method_nr
parameters that control an scf iteration
stores some data used in wavefunction fitting
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
keeps the information about the structure of a full matrix
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
contained for different pw related things
Container for information about total charges on the grids.
Provides all information about a quickstep kind.
keeps the density in various representations, keeping track of which ones are valid.