84#include "./base/base_uses.f90"
90 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_scf_output'
111 INTEGER,
INTENT(IN) :: output_unit
114 INTEGER :: nelectron_total
115 LOGICAL :: gapw, gapw_xc, qmmm
122 NULLIFY (rho, energy, dft_control, scf_env, qs_charges)
123 CALL get_qs_env(qs_env=qs_env, rho=rho, energy=energy, dft_control=dft_control, &
124 scf_env=scf_env, qs_charges=qs_charges)
126 gapw = dft_control%qs_control%gapw
127 gapw_xc = dft_control%qs_control%gapw_xc
129 nelectron_total = scf_env%nelectron
131 CALL qs_scf_print_scf_summary(output_unit, rho, qs_charges, energy, nelectron_total, &
132 dft_control, qmmm, qs_env, gapw, gapw_xc)
144 INTEGER :: output_unit
147 INTEGER,
INTENT(IN) :: ndep
149 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_initial_info'
151 INTEGER :: handle, homo, ispin, nao, &
154 CALL timeset(routinen, handle)
156 IF (output_unit > 0)
THEN
157 DO ispin = 1, dft_control%nspins
160 nelectron=nelectron_spin, &
163 IF (dft_control%nspins > 1)
THEN
164 WRITE (unit=output_unit, fmt=
"(/,T2,A,I2)")
"Spin", ispin
166 WRITE (unit=output_unit, fmt=
"(/,(T2,A,T71,I10))") &
167 "Number of electrons:", nelectron_spin, &
168 "Number of occupied orbitals:", homo, &
169 "Number of molecular orbitals:", nmo
171 WRITE (unit=output_unit, fmt=
"(/,(T2,A,T71,I10))") &
172 "Number of orbital functions:", nao, &
173 "Number of independent orbital functions:", nao - ndep
176 CALL timestop(handle)
191 LOGICAL,
INTENT(IN) :: final_mos
193 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_write_mos'
195 CHARACTER(LEN=2) :: solver_method
196 CHARACTER(LEN=3*default_string_length) :: message
197 CHARACTER(LEN=5) :: spin
198 CHARACTER(LEN=default_string_length), &
199 DIMENSION(:),
POINTER :: tmpstringlist
200 INTEGER :: handle, homo, ikp, ispin, iw, kpoint, &
201 nao, nelectron, nkp, nmo, nspin, numo
202 INTEGER,
DIMENSION(2) :: nmos_occ
203 INTEGER,
DIMENSION(:),
POINTER :: mo_index_range
204 LOGICAL :: do_kpoints, do_printout, print_eigvals, &
205 print_eigvecs, print_mo_info, &
206 print_occup, print_occup_stats
207 REAL(kind=
dp) :: flexible_electron_count, maxocc, n_el_f, &
208 occup_stats_occ_threshold
209 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mo_eigenvalues, umo_eigenvalues
213 TYPE(
cp_fm_type),
POINTER :: mo_coeff, umo_coeff
216 TYPE(
dbcsr_type),
POINTER :: matrix_ks, matrix_s, mo_coeff_deriv
225 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
229 CALL timeset(routinen, handle)
231 cpassert(
ASSOCIATED(qs_env))
235 blacs_env=blacs_env, &
236 dft_control=dft_control, &
237 do_kpoints=do_kpoints, &
239 qs_kind_set=qs_kind_set, &
241 particle_set=particle_set, &
242 scf_control=scf_control)
249 CALL section_vals_val_get(dft_section,
"PRINT%MO%OCCUPATION_NUMBERS_STATS", c_vals=tmpstringlist)
251 print_occup_stats = .false.
252 occup_stats_occ_threshold = 1e-6_dp
253 IF (
SIZE(tmpstringlist) > 0)
THEN
254 print_occup_stats = .true.
255 IF (len_trim(tmpstringlist(1)) > 0)
THEN
256 READ (tmpstringlist(1), *) print_occup_stats
259 IF (
SIZE(tmpstringlist) > 1)
THEN
260 READ (tmpstringlist(2), *) occup_stats_occ_threshold
266 IF ((.NOT. print_mo_info) .OR. (.NOT. (print_eigvals .OR. print_eigvecs .OR. print_occup .OR. print_occup_stats)))
THEN
267 CALL timestop(handle)
271 NULLIFY (fm_struct_tmp)
273 NULLIFY (mo_coeff_deriv)
274 NULLIFY (mo_eigenvalues)
277 NULLIFY (umo_eigenvalues)
281 nspin = dft_control%nspins
287 nkp =
SIZE(kpoints%kp_env)
289 CALL get_qs_env(qs_env, matrix_ks=ks, matrix_s=s)
290 cpassert(
ASSOCIATED(ks))
291 cpassert(
ASSOCIATED(s))
295 kp_loop:
DO ikp = 1, nkp
298 mos => kpoints%kp_env(ikp)%kpoint_env%mos(1, :)
301 CALL get_qs_env(qs_env, matrix_ks=ks, mos=mos)
304 cpassert(
ASSOCIATED(mos))
315 cpabort(
"The OT method is not implemented for k points")
320 matrix_ks => ks(ispin)%matrix
321 matrix_s => s(1)%matrix
324 IF (dft_control%do_admm)
THEN
332 eigenvalues=mo_eigenvalues, &
335 nelectron=nelectron, &
339 flexible_electron_count=flexible_electron_count)
341 IF (
ASSOCIATED(qs_env%mo_derivs))
THEN
342 mo_coeff_deriv => qs_env%mo_derivs(ispin)%matrix
344 mo_coeff_deriv => null()
349 ks_matrix=matrix_ks, &
350 evals_arg=mo_eigenvalues, &
351 co_rotate_dbcsr=mo_coeff_deriv)
356 cpassert(
ASSOCIATED(mo_index_range))
357 IF (mo_index_range(2) < 0)
THEN
360 numo = min(mo_index_range(2) - homo, nao - homo)
379 flexible_electron_count=flexible_electron_count)
381 fm_struct=fm_struct_tmp, &
382 name=
"Temporary MO set (unoccupied MOs only) for printout")
385 mo_coeff=umo_coeff, &
386 eigenvalues=umo_eigenvalues)
392 NULLIFY (local_preconditioner)
393 IF (
ASSOCIATED(scf_env%ot_preconditioner))
THEN
394 local_preconditioner => scf_env%ot_preconditioner(1)%preconditioner
396 NULLIFY (local_preconditioner)
403 matrix_c_fm=umo_coeff, &
404 matrix_orthogonal_space_fm=mo_coeff, &
405 eps_gradient=scf_control%eps_lumos, &
407 iter_max=scf_control%max_iter_lumos, &
408 size_ortho_space=nmo)
411 ks_matrix=matrix_ks, &
412 evals_arg=umo_eigenvalues)
418 IF (dft_control%do_admm)
THEN
424 message =
"The MO information is only calculated after SCF convergence "// &
425 "is achieved when the orbital transformation (OT) method is used"
426 cpwarn(trim(message))
427 do_printout = .false.
441 NULLIFY (cart_overlap_qs_env)
442 IF ((ikp == 1) .AND. (ispin == 1)) cart_overlap_qs_env => qs_env
450 cpabort(
"Invalid spin")
452 IF (
ASSOCIATED(umo_set))
THEN
454 final_mos=final_mos, spin=trim(spin), solver_method=solver_method, &
455 umo_set=umo_set, qs_env=cart_overlap_qs_env)
458 final_mos=final_mos, spin=trim(spin), solver_method=solver_method, &
459 qs_env=cart_overlap_qs_env)
462 IF (
ASSOCIATED(umo_set))
THEN
464 final_mos=final_mos, solver_method=solver_method, &
465 umo_set=umo_set, qs_env=cart_overlap_qs_env)
468 final_mos=final_mos, solver_method=solver_method, &
469 qs_env=cart_overlap_qs_env)
473 nmos_occ(ispin) = max(nmos_occ(ispin), count(mo_set%occupation_numbers > occup_stats_occ_threshold))
477 IF (
ASSOCIATED(umo_set))
THEN
490 IF (do_printout .AND. print_mo_info .AND. print_occup_stats)
THEN
492 ignore_should_output=print_mo_info, &
495 IF (
SIZE(mos) > 1)
THEN
496 WRITE (unit=iw, fmt=
"(A,I4)")
" MO| Total occupied (ALPHA):", nmos_occ(1)
497 WRITE (unit=iw, fmt=
"(A,I4)")
" MO| Total occupied (BETA): ", nmos_occ(2)
499 WRITE (unit=iw, fmt=
"(A,I4)")
" MO| Total occupied: ", nmos_occ(1)
501 WRITE (unit=iw, fmt=
"(A)")
""
504 ignore_should_output=print_mo_info)
507 CALL timestop(handle)
522 energy, total_steps, should_stop, outer_loop_converged)
523 INTEGER :: output_unit
527 INTEGER :: total_steps
528 LOGICAL,
INTENT(IN) :: should_stop, outer_loop_converged
530 REAL(kind=
dp) :: outer_loop_eps
532 outer_loop_eps = sqrt(maxval(scf_env%outer_scf%gradient(:, scf_env%outer_scf%iter_count)**2))
533 IF (output_unit > 0)
WRITE (output_unit,
'(/,T3,A,I4,A,E10.2,A,F22.10)') &
534 "outer SCF iter = ", scf_env%outer_scf%iter_count, &
535 " RMS gradient = ", outer_loop_eps,
" energy =", energy%total
537 IF (outer_loop_converged)
THEN
538 IF (output_unit > 0)
WRITE (output_unit,
'(T3,A,I4,A,I4,A,/)') &
539 "outer SCF loop converged in", scf_env%outer_scf%iter_count, &
540 " iterations or ", total_steps,
" steps"
541 ELSE IF (scf_env%outer_scf%iter_count > scf_control%outer_scf%max_scf &
542 .OR. should_stop)
THEN
543 IF (output_unit > 0)
WRITE (output_unit,
'(T3,A,I4,A,I4,A,/)') &
544 "outer SCF loop FAILED to converge after ", &
545 scf_env%outer_scf%iter_count,
" iterations or ", total_steps,
" steps"
562 INTEGER :: output_unit
563 LOGICAL :: just_energy
564 REAL(kind=
dp) :: t1, t2
567 IF ((output_unit > 0) .AND. scf_env%print_iter_line)
THEN
568 IF (just_energy)
THEN
569 WRITE (unit=output_unit, &
570 fmt=
"(T2,A,1X,A,T20,E8.2,1X,F6.1,16X,F20.10)") &
571 " -", trim(scf_env%iter_method), scf_env%iter_param, t2 - t1, energy%total
573 IF ((abs(scf_env%iter_delta) < 1.0e-8_dp) .OR. &
574 (abs(scf_env%iter_delta) >= 1.0e5_dp))
THEN
575 WRITE (unit=output_unit, &
576 fmt=
"(T2,I5,1X,A,T20,E8.2,1X,F6.1,1X,ES14.4,1X,F20.10,1X,ES9.2)") &
577 scf_env%iter_count, trim(scf_env%iter_method), scf_env%iter_param, &
578 t2 - t1, scf_env%iter_delta, energy%total, energy%total - energy%tot_old
580 WRITE (unit=output_unit, &
581 fmt=
"(T2,I5,1X,A,T20,E8.2,1X,F6.1,1X,F14.8,1X,F20.10,1X,ES9.2)") &
582 scf_env%iter_count, trim(scf_env%iter_method), scf_env%iter_param, &
583 t2 - t1, scf_env%iter_delta, energy%total, energy%total - energy%tot_old
608 SUBROUTINE qs_scf_print_scf_summary(output_unit, rho, qs_charges, energy, nelectron_total, &
609 dft_control, qmmm, qs_env, gapw, gapw_xc)
610 INTEGER,
INTENT(IN) :: output_unit
614 INTEGER,
INTENT(IN) :: nelectron_total
616 LOGICAL,
INTENT(IN) :: qmmm
618 LOGICAL,
INTENT(IN) :: gapw, gapw_xc
620 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_print_scf_summary'
622 INTEGER :: bc, handle, ispin, psolver
623 REAL(kind=
dp) :: e_extrapolated, exc1_energy, exc_energy, &
624 implicit_ps_ehartree, tot1_h, tot1_s
625 REAL(kind=
dp),
DIMENSION(:),
POINTER :: tot_rho_r
629 NULLIFY (tot_rho_r, pw_env)
630 CALL timeset(routinen, handle)
632 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, scf_control=scf_control)
633 psolver = pw_env%poisson_env%parameters%solver
635 IF (output_unit > 0)
THEN
637 IF (.NOT. (dft_control%qs_control%semi_empirical .OR. &
638 dft_control%qs_control%xtb .OR. &
639 dft_control%qs_control%dftb))
THEN
640 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T41,2F20.10))") &
641 "Electronic density on regular grids: ", &
644 "Core density on regular grids:", &
645 qs_charges%total_rho_core_rspace, &
646 qs_charges%total_rho_core_rspace + &
647 qs_charges%total_rho1_hard_nuc - &
648 REAL(nelectron_total + dft_control%charge,
dp)
650 IF (dft_control%correct_surf_dip)
THEN
651 WRITE (unit=output_unit, fmt=
"((T3,A,/,T3,A,T41,F20.10))") &
652 "Total dipole moment perpendicular to ", &
653 "the slab [electrons-Angstroem]: ", &
654 qs_env%surface_dipole_moment
658 tot1_h = qs_charges%total_rho1_hard(1)
659 tot1_s = qs_charges%total_rho1_soft(1)
660 DO ispin = 2, dft_control%nspins
661 tot1_h = tot1_h + qs_charges%total_rho1_hard(ispin)
662 tot1_s = tot1_s + qs_charges%total_rho1_soft(ispin)
664 WRITE (unit=output_unit, fmt=
"((T3,A,T41,2F20.10))") &
665 "Hard and soft densities (Lebedev):", &
667 WRITE (unit=output_unit, fmt=
"(T3,A,T41,F20.10)") &
668 "Total Rho_soft + Rho1_hard - Rho1_soft (r-space): ", &
670 "Total charge density (r-space): ", &
672 + qs_charges%total_rho_core_rspace &
673 + qs_charges%total_rho1_hard_nuc
674 IF (qs_charges%total_rho1_hard_nuc /= 0.0_dp)
THEN
675 WRITE (unit=output_unit, fmt=
"(T3,A,T41,F20.10)") &
676 "Total CNEO nuc. char. den. (Lebedev): ", &
677 qs_charges%total_rho1_hard_nuc, &
678 "Total CNEO soft char. den. (Lebedev): ", &
679 qs_charges%total_rho1_soft_nuc_lebedev, &
680 "Total CNEO soft char. den. (r-space): ", &
681 qs_charges%total_rho1_soft_nuc_rspace, &
682 "Total soft Rho_e+n+0 (g-space):", &
683 qs_charges%total_rho_gspace
685 WRITE (unit=output_unit, fmt=
"(T3,A,T41,F20.10)") &
686 "Total Rho_soft + Rho0_soft (g-space):", &
687 qs_charges%total_rho_gspace
691 WRITE (unit=output_unit, fmt=
"(T3,A,T41,F20.10)") &
692 "Total charge density on r-space grids: ", &
694 qs_charges%total_rho_core_rspace, &
695 "Total charge density g-space grids: ", &
696 qs_charges%total_rho_gspace
699 IF (dft_control%qs_control%semi_empirical)
THEN
700 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
701 "Core-core repulsion energy [eV]: ", energy%core_overlap*
evolt, &
702 "Core Hamiltonian energy [eV]: ", energy%core*
evolt, &
703 "Two-electron integral energy [eV]: ", energy%hartree*
evolt, &
704 "Electronic energy [eV]: ", &
705 (energy%core + 0.5_dp*energy%hartree)*
evolt
706 IF (energy%dispersion /= 0.0_dp)
THEN
707 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
708 "Dispersion energy [eV]: ", energy%dispersion*
evolt
710 ELSE IF (dft_control%qs_control%dftb)
THEN
711 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
712 "Core Hamiltonian energy: ", energy%core, &
713 "Repulsive potential energy: ", energy%repulsive, &
714 "Electronic energy: ", energy%hartree, &
715 "Dispersion energy: ", energy%dispersion
716 IF (energy%dftb3 /= 0.0_dp)
THEN
717 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
718 "DFTB3 3rd order energy: ", energy%dftb3
720 IF (energy%efield /= 0.0_dp)
THEN
721 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
722 "Electric field interaction energy: ", energy%efield
724 ELSE IF (dft_control%qs_control%xtb)
THEN
725 IF (dft_control%qs_control%xtb_control%do_tblite)
THEN
726 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
727 "Core Hamiltonian energy: ", energy%core, &
728 "Repulsive potential energy: ", energy%repulsive, &
729 "Electrostatic energy: ", energy%el_stat, &
730 "Self-consistent dispersion energy: ", energy%dispersion_sc, &
731 "Non-self consistent dispersion energy: ", energy%dispersion, &
732 "Correction for halogen bonding: ", energy%xtb_xb_inter
734 IF (dft_control%qs_control%xtb_control%gfn_type == 0)
THEN
735 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
736 "Core Hamiltonian energy: ", energy%core, &
737 "Repulsive potential energy: ", energy%repulsive, &
738 "SRB Correction energy: ", energy%srb, &
739 "Charge equilibration energy: ", energy%eeq, &
740 "Dispersion energy: ", energy%dispersion
741 ELSE IF (dft_control%qs_control%xtb_control%gfn_type == 1)
THEN
742 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
743 "Core Hamiltonian energy: ", energy%core, &
744 "Repulsive potential energy: ", energy%repulsive, &
745 "Electronic energy: ", energy%hartree, &
746 "DFTB3 3rd order energy: ", energy%dftb3, &
747 "Dispersion energy: ", energy%dispersion
748 IF (dft_control%qs_control%xtb_control%xb_interaction)
THEN
749 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
750 "Correction for halogen bonding: ", energy%xtb_xb_inter
752 ELSE IF (dft_control%qs_control%xtb_control%gfn_type == 2)
THEN
753 cpabort(
"gfn_typ 2 NYA")
755 cpabort(
"invalid gfn_typ")
758 IF (dft_control%qs_control%xtb_control%do_nonbonded)
THEN
759 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
760 "Correction for nonbonded interactions: ", energy%xtb_nonbonded
762 IF (energy%efield /= 0.0_dp)
THEN
763 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
764 "Electric field interaction energy: ", energy%efield
767 IF (dft_control%do_admm)
THEN
768 exc_energy = energy%exc + energy%exc_aux_fit
769 IF (gapw .OR. gapw_xc) exc1_energy = energy%exc1 + energy%exc1_aux_fit
771 exc_energy = energy%exc
772 IF (gapw .OR. gapw_xc) exc1_energy = energy%exc1
776 implicit_ps_ehartree = pw_env%poisson_env%implicit_env%ehartree
777 bc = pw_env%poisson_env%parameters%ps_implicit_params%boundary_condition
780 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
781 "Overlap energy of the core charge distribution:", energy%core_overlap, &
782 "Self energy of the core charge distribution: ", energy%core_self, &
783 "Core Hamiltonian energy: ", energy%core, &
784 "Hartree energy: ", implicit_ps_ehartree, &
785 "Electric enthalpy: ", energy%hartree, &
786 "Exchange-correlation energy: ", exc_energy
788 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
789 "Overlap energy of the core charge distribution:", energy%core_overlap, &
790 "Self energy of the core charge distribution: ", energy%core_self, &
791 "Core Hamiltonian energy: ", energy%core, &
792 "Hartree energy: ", energy%hartree, &
793 "Exchange-correlation energy: ", exc_energy
796 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
797 "Overlap energy of the core charge distribution:", energy%core_overlap, &
798 "Self energy of the core charge distribution: ", energy%core_self, &
799 "Core Hamiltonian energy: ", energy%core, &
800 "Hartree energy: ", energy%hartree, &
801 "Exchange-correlation energy: ", exc_energy
803 IF (energy%e_hartree /= 0.0_dp)
THEN
804 WRITE (unit=output_unit, fmt=
"(T3,A,/,T3,A,T56,F25.14)") &
805 "Coulomb Electron-Electron Interaction Energy ", &
806 "- Already included in the total Hartree term ", energy%e_hartree
808 IF (energy%ex /= 0.0_dp)
THEN
809 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
810 "Hartree-Fock Exchange energy: ", energy%ex
812 IF (energy%dispersion /= 0.0_dp)
THEN
813 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
814 "Dispersion energy: ", energy%dispersion
816 IF (energy%gcp /= 0.0_dp)
THEN
817 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
818 "gCP energy: ", energy%gcp
820 IF (energy%efield /= 0.0_dp)
THEN
821 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
822 "Electric field interaction energy: ", energy%efield
825 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
826 "GAPW| Exc from hard and soft atomic rho1: ", exc1_energy, &
827 "GAPW| local Eh = 1 center integrals: ", energy%hartree_1c
830 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
831 "GAPW_XC| Exc from hard and soft atomic rho1: ", exc1_energy
833 IF (energy%core_cneo /= 0.0_dp)
THEN
834 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
835 "CNEO| quantum nuclear core energy: ", energy%core_cneo
838 IF (dft_control%hairy_probes .EQV. .true.)
THEN
839 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
840 "Electronic entropic energy:", energy%kTS
841 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
842 "Fermi energy:", energy%efermi
844 IF (dft_control%smear)
THEN
845 SELECT CASE (scf_control%smear%method)
848 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
849 "Smearing free energy correction:", energy%kTS
851 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
852 "Electronic entropic energy:", energy%kTS
854 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
855 "Fermi energy:", energy%efermi
857 IF (dft_control%dft_plus_u)
THEN
858 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
859 "DFT+U energy:", energy%dft_plus_u
861 IF (dft_control%do_sccs)
THEN
862 WRITE (unit=output_unit, fmt=
"(A)")
""
866 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
867 "QM/MM Electrostatic energy: ", energy%qmmm_el
868 IF (qs_env%qmmm_env_qm%image_charge)
THEN
869 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
870 "QM/MM image charge energy: ", energy%image_charge
873 IF (dft_control%qs_control%mulliken_restraint)
THEN
874 WRITE (unit=output_unit, fmt=
"(T3,A,T56,F25.14)") &
875 "Mulliken restraint energy: ", energy%mulliken
877 IF (dft_control%qs_control%semi_empirical)
THEN
878 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
879 "Total energy [eV]: ", energy%total*
evolt
880 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
881 "Atomic reference energy [eV]: ", energy%core_self*
evolt, &
882 "Heat of formation [kcal/mol]: ", &
883 (energy%total + energy%core_self)*
kcalmol
885 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
886 "Total energy: ", energy%total
887 IF (dft_control%smear)
THEN
888 SELECT CASE (scf_control%smear%method)
890 e_extrapolated = energy%total - 0.5_dp*energy%kTS
891 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
892 "Total energy (extrapolated to T->0): ", e_extrapolated
893 IF (scf_control%gce%do_gce)
THEN
894 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T56,F25.14))") &
895 "GCE work function [eV]: ", scf_control%gce%prev_workfunction*
evolt
896 WRITE (unit=output_unit, fmt=
"((T3,A,T56,ES25.10))") &
897 "GCE WF-TWF [eV]: ", (scf_control%gce%prev_workfunction - &
898 scf_control%gce%target_workfunction)*
evolt
899 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
900 "GCE charge [e]: ", dft_control%pcc_control%charge
901 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
902 "GCE free energy: ", (dft_control%pcc_control%charge + dft_control%charge) &
903 *scf_control%gce%prev_workfunction*
evolt
906 e_extrapolated = energy%total - 0.5_dp*energy%kTS
907 WRITE (unit=output_unit, fmt=
"((T3,A,T56,F25.14))") &
908 "Total energy (extrapolated to sigma->0): ", e_extrapolated
915 IF (qs_env%qmmm_env_qm%image_charge)
THEN
922 CALL timestop(handle)
924 END SUBROUTINE qs_scf_print_scf_summary
939 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_loop_print'
941 INTEGER :: after, handle, ic, ispin, iw
942 LOGICAL :: do_kpoints, omit_headers
943 REAL(kind=
dp) :: mo_mag_max, mo_mag_min, orthonormality
945 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_ks, matrix_p, matrix_s
952 CALL timeset(routinen, handle)
954 CALL get_qs_env(qs_env=qs_env, input=input, dft_control=dft_control, &
955 do_kpoints=do_kpoints)
961 DO ispin = 1, dft_control%nspins
964 dft_section,
"PRINT%AO_MATRICES/DENSITY"),
cp_p_file))
THEN
970 after = min(max(after, 1), 16)
971 DO ic = 1,
SIZE(matrix_p, 2)
973 output_unit=iw, omit_headers=omit_headers)
976 "PRINT%AO_MATRICES/DENSITY")
980 dft_section,
"PRINT%AO_MATRICES/KOHN_SHAM_MATRIX"),
cp_p_file))
THEN
984 after = min(max(after, 1), 16)
985 CALL get_qs_env(qs_env=qs_env, matrix_ks_kp=matrix_ks)
986 DO ic = 1,
SIZE(matrix_ks, 2)
987 IF (dft_control%qs_control%semi_empirical)
THEN
989 scale=
evolt, output_unit=iw, omit_headers=omit_headers)
992 output_unit=iw, omit_headers=omit_headers)
996 "PRINT%AO_MATRICES/KOHN_SHAM_MATRIX")
1002 scf_section,
"PRINT%MO_ORTHONORMALITY"),
cp_p_file))
THEN
1003 IF (do_kpoints)
THEN
1005 extension=
".scfLog")
1007 WRITE (iw,
'(T8,A)') &
1008 " K-points: Maximum deviation from MO S-orthonormality not determined"
1011 "PRINT%MO_ORTHONORMALITY")
1017 CALL get_qs_env(qs_env=qs_env, matrix_s_kp=matrix_s)
1021 extension=
".scfLog")
1023 WRITE (iw,
'(T8,A,T61,E20.4)') &
1024 " Maximum deviation from MO S-orthonormality", orthonormality
1027 "PRINT%MO_ORTHONORMALITY")
1031 scf_section,
"PRINT%MO_MAGNITUDE"),
cp_p_file))
THEN
1032 IF (do_kpoints)
THEN
1034 extension=
".scfLog")
1036 WRITE (iw,
'(T8,A)') &
1037 " K-points: Minimum/Maximum MO magnitude not determined"
1040 "PRINT%MO_MAGNITUDE")
1045 extension=
".scfLog")
1047 WRITE (iw,
'(T8,A,T41,2E20.4)') &
1048 " Minimum/Maximum MO magnitude ", mo_mag_min, mo_mag_max
1051 "PRINT%MO_MAGNITUDE")
1055 CALL timestop(handle)
1074 energy, total_steps, should_stop, outer_loop_converged, &
1076 INTEGER :: output_unit
1081 INTEGER :: total_steps
1082 LOGICAL,
INTENT(IN) :: should_stop, outer_loop_converged, &
1085 REAL(kind=
dp) :: outer_loop_eps
1088 outer_loop_eps = sqrt(maxval(scf_env%outer_scf%gradient(:, scf_env%outer_scf%iter_count)**2))
1089 IF (output_unit > 0)
WRITE (output_unit,
'(/,T3,A,I4,A,E10.2,A,F22.10)') &
1090 "CDFT SCF iter = ", scf_env%outer_scf%iter_count, &
1091 " RMS gradient = ", outer_loop_eps,
" energy =", energy%total
1092 IF (outer_loop_converged)
THEN
1093 IF (output_unit > 0)
WRITE (output_unit,
'(T3,A,I4,A,I4,A,/)') &
1094 "CDFT SCF loop converged in", scf_env%outer_scf%iter_count, &
1095 " iterations or ", total_steps,
" steps"
1097 IF ((scf_env%outer_scf%iter_count > scf_control%outer_scf%max_scf .OR. should_stop) &
1098 .AND. .NOT. outer_loop_converged)
THEN
1099 IF (output_unit > 0)
WRITE (output_unit,
'(T3,A,I4,A,I4,A,/)') &
1100 "CDFT SCF loop FAILED to converge after ", &
1101 scf_env%outer_scf%iter_count,
" iterations or ", total_steps,
" steps"
1116 INTEGER :: output_unit
1119 IF (output_unit > 0)
THEN
1120 WRITE (output_unit,
'(/,A)') &
1121 " ---------------------------------- CDFT --------------------------------------"
1122 WRITE (output_unit,
'(A)') &
1123 " Optimizing a density constraint in an external SCF loop "
1124 WRITE (output_unit,
'(A)')
" "
1125 SELECT CASE (cdft_control%type)
1127 WRITE (output_unit,
'(A)')
" Type of constraint: Hirshfeld"
1129 WRITE (output_unit,
'(A)')
" Type of constraint: Becke"
1131 WRITE (output_unit,
'(A,I8)')
" Number of constraints: ",
SIZE(cdft_control%group)
1132 WRITE (output_unit,
'(A,L8)')
" Using fragment densities:", cdft_control%fragment_density
1133 WRITE (output_unit,
'(A)')
" "
1134 IF (cdft_control%atomic_charges)
WRITE (output_unit,
'(A,/)')
" Calculating atomic CDFT charges"
1135 SELECT CASE (cdft_control%constraint_control%optimizer)
1137 WRITE (output_unit,
'(A)') &
1138 " Minimizer : SD : steepest descent"
1140 WRITE (output_unit,
'(A)') &
1141 " Minimizer : DIIS : direct inversion"
1142 WRITE (output_unit,
'(A)') &
1143 " in the iterative subspace"
1144 WRITE (output_unit,
'(A,I3,A)') &
1146 cdft_control%constraint_control%diis_buffer_length,
" DIIS vectors"
1148 WRITE (output_unit,
'(A)') &
1149 " Minimizer : BISECT : gradient bisection"
1150 WRITE (output_unit,
'(A,I3)') &
1151 " using a trust count of", &
1152 cdft_control%constraint_control%bisect_trust_count
1156 cdft_control%constraint_control%optimizer, output_unit)
1158 WRITE (output_unit,
'(A)')
" Minimizer : Secant"
1160 cpabort(
"Unknown CDFT outer_scf optimizer")
1162 WRITE (output_unit,
'(/,A,L7)') &
1163 " Reusing OT preconditioner: ", cdft_control%reuse_precond
1164 IF (cdft_control%reuse_precond)
THEN
1165 WRITE (output_unit,
'(A,I3,A,I3,A)') &
1166 " using old preconditioner for up to ", &
1167 cdft_control%max_reuse,
" subsequent CDFT SCF"
1168 WRITE (output_unit,
'(A,I3,A,I3,A)') &
1169 " iterations if the relevant loop converged in less than ", &
1170 cdft_control%precond_freq,
" steps"
1172 SELECT CASE (cdft_control%type)
1174 WRITE (output_unit,
'(/,A)')
" Hirshfeld constraint settings"
1175 WRITE (output_unit,
'(A)')
" "
1176 SELECT CASE (cdft_control%hirshfeld_control%shape_function)
1178 WRITE (output_unit,
'(A, A8)') &
1179 " Shape function type: ",
"Gaussian"
1180 WRITE (output_unit,
'(A)', advance=
'NO') &
1181 " Type of Gaussian: "
1182 SELECT CASE (cdft_control%hirshfeld_control%gaussian_shape)
1184 WRITE (output_unit,
'(A13)')
"Default"
1186 WRITE (output_unit,
'(A13)')
"Covalent"
1188 WRITE (output_unit,
'(A13)')
"Fixed radius"
1190 WRITE (output_unit,
'(A13)')
"Van der Waals"
1192 WRITE (output_unit,
'(A13)')
"User-defined"
1196 WRITE (output_unit,
'(A, A8)') &
1197 " Shape function type: ",
"Density"
1200 WRITE (output_unit,
'(/, A)')
" Becke constraint settings"
1201 WRITE (output_unit,
'(A)')
" "
1202 SELECT CASE (cdft_control%becke_control%cutoff_type)
1204 WRITE (output_unit,
'(A,F8.3,A)') &
1205 " Cutoff for partitioning :",
cp_unit_from_cp2k(cdft_control%becke_control%rglobal, &
1206 "angstrom"),
" angstrom"
1208 WRITE (output_unit,
'(A)') &
1209 " Using element specific cutoffs for partitioning"
1211 WRITE (output_unit,
'(A,L7)') &
1212 " Skipping distant gpoints: ", cdft_control%becke_control%should_skip
1213 WRITE (output_unit,
'(A,L7)') &
1214 " Precompute gradients : ", cdft_control%becke_control%in_memory
1215 WRITE (output_unit,
'(A)')
" "
1216 IF (cdft_control%becke_control%adjust)
THEN
1217 WRITE (output_unit,
'(A)') &
1218 " Using atomic radii to generate a heteronuclear charge partitioning"
1220 WRITE (output_unit,
'(A)')
" "
1221 IF (.NOT. cdft_control%becke_control%cavity_confine)
THEN
1222 WRITE (output_unit,
'(A)') &
1223 " No confinement is active"
1225 WRITE (output_unit,
'(A)')
" Confinement using a Gaussian shaped cavity is active"
1226 SELECT CASE (cdft_control%becke_control%cavity_shape)
1228 WRITE (output_unit,
'(A,F8.4, A)') &
1229 " Type of Gaussian : Fixed radius: ", &
1232 WRITE (output_unit,
'(A)') &
1233 " Type of Gaussian : Covalent radius "
1235 WRITE (output_unit,
'(A)') &
1236 " Type of Gaussian : vdW radius "
1238 WRITE (output_unit,
'(A)') &
1239 " Type of Gaussian : User radius "
1241 WRITE (output_unit,
'(A,ES12.4)') &
1242 " Cavity threshold : ", cdft_control%becke_control%eps_cavity
1245 WRITE (output_unit,
'(/,A)') &
1246 " ---------------------------------- CDFT --------------------------------------"
1259 INTEGER :: output_unit
1264 IF (output_unit > 0)
THEN
1265 SELECT CASE (cdft_control%type)
1267 WRITE (output_unit,
'(/,T3,A,T60)') &
1268 '------------------- Hirshfeld constraint information -------------------'
1270 WRITE (output_unit,
'(/,T3,A,T60)') &
1271 '--------------------- Becke constraint information ---------------------'
1273 cpabort(
"Unknown CDFT constraint.")
1275 DO igroup = 1,
SIZE(cdft_control%target)
1276 IF (igroup > 1)
WRITE (output_unit,
'(T3,A)')
' '
1277 WRITE (output_unit,
'(T3,A,T54,(3X,I18))') &
1278 'Atomic group :', igroup
1279 SELECT CASE (cdft_control%group(igroup)%constraint_type)
1281 IF (cdft_control%group(igroup)%is_fragment_constraint)
THEN
1282 WRITE (output_unit,
'(T3,A,T42,A)') &
1283 'Type of constraint :', adjustr(
'Charge density constraint (frag.)')
1285 WRITE (output_unit,
'(T3,A,T50,A)') &
1286 'Type of constraint :', adjustr(
'Charge density constraint')
1289 IF (cdft_control%group(igroup)%is_fragment_constraint)
THEN
1290 WRITE (output_unit,
'(T3,A,T35,A)') &
1291 'Type of constraint :', adjustr(
'Magnetization density constraint (frag.)')
1293 WRITE (output_unit,
'(T3,A,T43,A)') &
1294 'Type of constraint :', adjustr(
'Magnetization density constraint')
1297 IF (cdft_control%group(igroup)%is_fragment_constraint)
THEN
1298 WRITE (output_unit,
'(T3,A,T38,A)') &
1299 'Type of constraint :', adjustr(
'Alpha spin density constraint (frag.)')
1301 WRITE (output_unit,
'(T3,A,T46,A)') &
1302 'Type of constraint :', adjustr(
'Alpha spin density constraint')
1305 IF (cdft_control%group(igroup)%is_fragment_constraint)
THEN
1306 WRITE (output_unit,
'(T3,A,T39,A)') &
1307 'Type of constraint :', adjustr(
'Beta spin density constraint (frag.)')
1309 WRITE (output_unit,
'(T3,A,T47,A)') &
1310 'Type of constraint :', adjustr(
'Beta spin density constraint')
1313 cpabort(
"Unknown constraint type.")
1315 WRITE (output_unit,
'(T3,A,T54,(3X,F18.12))') &
1316 'Target value of constraint :', cdft_control%target(igroup)
1317 WRITE (output_unit,
'(T3,A,T54,(3X,F18.12))') &
1318 'Current value of constraint :', cdft_control%value(igroup)
1319 WRITE (output_unit,
'(T3,A,T59,(3X,ES13.3))') &
1320 'Deviation from target :', cdft_control%value(igroup) - cdft_control%target(igroup)
1321 WRITE (output_unit,
'(T3,A,T54,(3X,F18.12))') &
1322 'Strength of constraint :', cdft_control%strength(igroup)
1324 WRITE (output_unit,
'(T3,A)') &
1325 '------------------------------------------------------------------------'
1338 INTEGER,
INTENT(IN) :: output_unit
1340 LOGICAL,
INTENT(IN) :: just_energy
1342 REAL(kind=
dp) :: charge, current_wf_ev, delta_wf_ev, &
1343 free_ener, target_wf_ev
1346 IF (output_unit <= 0)
RETURN
1347 IF (just_energy)
RETURN
1349 current_wf_ev = qs_env%scf_control%gce%prev_workfunction*
evolt
1350 target_wf_ev = qs_env%scf_control%gce%target_workfunction*
evolt
1351 delta_wf_ev = current_wf_ev - target_wf_ev
1353 CALL get_qs_env(qs_env, dft_control=dft_control)
1354 charge = dft_control%pcc_control%charge
1355 free_ener = (charge + dft_control%charge)*qs_env%scf_control%gce%prev_workfunction
1357 WRITE (unit=output_unit, &
1358 fmt=
"(T8,A,T13,A,T24,A,T27,F6.1,A,T40,A,T56,A,T59,ES10.2,A)") &
1359 "GCE",
"WF",
"=", current_wf_ev,
" eV", &
1360 "WF-TWF",
"=", delta_wf_ev,
" eV"
1362 WRITE (unit=output_unit, &
1363 fmt=
"(T13,A,T24,A,T27,F7.3,A,T40,A,T56,A,T59,F14.10,A)") &
1364 "Charge",
"=", charge,
" e", &
1365 "GCE free energy",
"=", free_ener,
" a.u."
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, 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.
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
subroutine, public qs_scf_gce_info(output_unit, qs_env, just_energy)
Print grand canonical SCF information for the current SCF iteration.
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.