65#include "./base/base_uses.f90"
71 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_scf_loop_utils'
89 energy_only, just_energy, exit_inner_loop)
92 LOGICAL :: diis_step, energy_only, just_energy, &
104 scf_env%iter_count = 0
105 exit_inner_loop = .false.
120 SUBROUTINE qs_scf_new_mos(qs_env, scf_env, scf_control, scf_section, diis_step, &
126 LOGICAL :: diis_step, energy_only
130 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_new_mos'
132 INTEGER :: handle, ispin
133 LOGICAL :: has_unit_metric, skip_diag_sub
134 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_s
141 CALL timeset(routinen, handle)
143 NULLIFY (energy, ks_env, matrix_ks, matrix_s, rho, mos, dft_control)
146 matrix_s=matrix_s, energy=energy, &
148 matrix_ks=matrix_ks, rho=rho, mos=mos, &
149 dft_control=dft_control, &
150 has_unit_metric=has_unit_metric)
151 scf_env%iter_param = 0.0_dp
155 IF (dft_control%correct_el_density_dip)
THEN
156 scf_env%sum_zeff_corr = qs_env%total_zeff_corr
157 IF (abs(qs_env%total_zeff_corr) > 0.0_dp)
THEN
159 CALL cp_abort(__location__, &
160 "Please use ALGORITHM STANDARD in "// &
161 "SCF%DIAGONALIZATION if "// &
162 "CORE_CORRECTION /= 0.0 and "// &
163 "SURFACE_DIPOLE_CORRECTION TRUE ")
164 ELSEIF (dft_control%roks)
THEN
165 CALL cp_abort(__location__, &
166 "Combination of "// &
167 "CORE_CORRECTION /= 0.0 and "// &
168 "SURFACE_DIPOLE_CORRECTION TRUE "// &
169 "is not implemented with ROKS")
170 ELSEIF (scf_control%diagonalization%mom)
THEN
171 CALL cp_abort(__location__, &
172 "Combination of "// &
173 "CORE_CORRECTION /= 0.0 and "// &
174 "SURFACE_DIPOLE_CORRECTION TRUE "// &
175 "is not implemented with SCF%MOM")
180 SELECT CASE (scf_env%method)
182 CALL cp_abort(__location__, &
183 "unknown scf method: "// &
191 IF (abs(qs_env%total_zeff_corr) > 0.0_dp)
THEN
192 CALL cp_abort(__location__, &
193 "CORE_CORRECTION /= 0.0 plus SURFACE_DIPOLE_CORRECTION TRUE "// &
194 "requires SCF%DIAGONALIZATION: ALGORITHM STANDARD")
197 matrix_ks, matrix_s, scf_section, diis_step)
201 IF (dft_control%roks)
THEN
203 scf_control, scf_section, diis_step, &
206 IF (scf_control%diagonalization%mom)
THEN
208 matrix_s, scf_control, scf_section, &
211 IF (dft_control%hairy_probes .EQV. .true.)
THEN
213 matrix_s, scf_control, scf_section, &
218 matrix_s, scf_control, scf_section, &
222 IF (scf_control%do_diag_sub)
THEN
223 skip_diag_sub = (scf_env%subspace_env%eps_diag_sub > 0.0_dp) .AND. &
224 (scf_env%iter_count == 1 .OR. scf_env%iter_delta > scf_env%subspace_env%eps_diag_sub)
225 IF (.NOT. skip_diag_sub)
THEN
227 ks_env, scf_section, scf_control)
233 IF (dft_control%roks)
THEN
235 scf_control, scf_section, diis_step, &
239 scf_control, scf_section, &
244 CALL do_ot_diag(scf_env, mos, matrix_ks, matrix_s, &
245 scf_control, scf_section, diis_step)
248 IF ((scf_env%krylov_space%eps_std_diag > 0.0_dp) .AND. &
249 (scf_env%iter_count == 1 .OR. scf_env%iter_delta > scf_env%krylov_space%eps_std_diag))
THEN
250 IF (scf_env%krylov_space%always_check_conv)
THEN
252 scf_control, scf_section, check_moconv_only=.true.)
255 matrix_s, scf_control, scf_section, diis_step)
258 scf_control, scf_section)
260 IF (scf_control%do_diag_sub)
THEN
261 skip_diag_sub = (scf_env%subspace_env%eps_diag_sub > 0.0_dp) .AND. &
262 (scf_env%iter_count == 1 .OR. scf_env%iter_delta > scf_env%subspace_env%eps_diag_sub)
263 IF (.NOT. skip_diag_sub)
THEN
265 ks_env, scf_section, scf_control)
271 scf_section, .false.)
274 CALL qs_scf_loop_do_ot(qs_env, scf_env, scf_control%smear, mos, rho, &
275 qs_env%mo_derivs, energy%total, &
276 matrix_s, energy_only=energy_only, has_unit_metric=has_unit_metric)
280 energy%efermi = 0.0_dp
282 DO ispin = 1,
SIZE(mos)
283 energy%kTS = energy%kTS + mos(ispin)%kTS
284 energy%efermi = energy%efermi + mos(ispin)%mu
286 energy%efermi = energy%efermi/real(
SIZE(mos), kind=
dp)
288 CALL timestop(handle)
309 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_new_mos_kp'
311 INTEGER :: handle, ispin
312 LOGICAL :: has_unit_metric
313 REAL(
dp) :: diis_error
314 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_ks, matrix_s
320 CALL timeset(routinen, handle)
322 NULLIFY (dft_control, kpoints, matrix_ks, matrix_s)
324 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control, kpoints=kpoints)
325 scf_env%iter_param = 0.0_dp
327 IF (dft_control%roks) &
328 cpabort(
"KP code: ROKS method not available: ")
330 SELECT CASE (scf_env%method)
332 CALL cp_abort(__location__, &
333 "KP code: Unknown scf method: "// &
337 CALL get_qs_env(qs_env, matrix_ks_kp=matrix_ks, matrix_s_kp=matrix_s)
338 IF (dft_control%hairy_probes .EQV. .true.)
THEN
339 scf_control%smear%do_smear = .false.
341 diis_step, diis_error, qs_env, probe)
344 diis_step, diis_error, qs_env)
347 scf_env%iter_param = diis_error
348 scf_env%iter_method =
"DIIS/Diag."
350 IF (scf_env%mixing_method == 0)
THEN
351 scf_env%iter_method =
"NoMix/Diag."
352 ELSE IF (scf_env%mixing_method == 1)
THEN
353 scf_env%iter_param = scf_env%p_mix_alpha
354 scf_env%iter_method =
"P_Mix/Diag."
355 ELSEIF (scf_env%mixing_method > 1)
THEN
356 scf_env%iter_param = scf_env%mixing_store%alpha
357 scf_env%iter_method = trim(scf_env%mixing_store%iter_method)//
"/Diag."
361 CALL get_qs_env(qs_env=qs_env, has_unit_metric=has_unit_metric)
362 cpassert(has_unit_metric)
364 CALL cp_abort(__location__, &
365 "KP code: Scf method not available: "// &
371 CALL cp_abort(__location__, &
372 "KP code: Scf method not available: "// &
377 IF (scf_env%mixing_method == 0)
THEN
378 scf_env%iter_method =
"NoMix/SMGL"
379 ELSE IF (scf_env%mixing_method == 1)
THEN
380 scf_env%iter_param = scf_env%p_mix_alpha
381 scf_env%iter_method =
"P_Mix/SMGL"
382 ELSE IF (scf_env%mixing_method > 1)
THEN
383 scf_env%iter_param = scf_env%mixing_store%alpha
384 scf_env%iter_method = trim(scf_env%mixing_store%iter_method)//
"/SMGL"
386 CALL run_smeagol_emtrans(qs_env, last=.false., iter=scf_env%iter_count, rho_ao_kp=scf_env%p_mix_new)
391 energy%efermi = 0.0_dp
392 mos => kpoints%kp_env(1)%kpoint_env%mos
393 DO ispin = 1,
SIZE(mos, 2)
394 energy%kTS = energy%kTS + mos(1, ispin)%kTS
395 energy%efermi = energy%efermi + mos(1, ispin)%mu
397 energy%efermi = energy%efermi/real(
SIZE(mos, 2), kind=
dp)
399 CALL timestop(handle)
420 SUBROUTINE qs_scf_loop_do_ot(qs_env, scf_env, smear, mos, rho, mo_derivs, total_energy, &
421 matrix_s, energy_only, has_unit_metric)
426 TYPE(
mo_set_type),
DIMENSION(:),
INTENT(INOUT) :: mos
429 REAL(kind=
dp),
INTENT(IN) :: total_energy
431 LOGICAL,
INTENT(INOUT) :: energy_only
432 LOGICAL,
INTENT(IN) :: has_unit_metric
434 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_scf_loop_do_ot'
436 INTEGER :: handle, ispin
438 TYPE(
dbcsr_type),
POINTER :: orthogonality_metric
440 CALL timeset(routinen, handle)
445 IF (has_unit_metric)
THEN
446 NULLIFY (orthogonality_metric)
448 orthogonality_metric => matrix_s(1)%matrix
454 CALL ot_scf_mini(mos, mo_derivs, smear, orthogonality_metric, &
455 total_energy, energy_only, scf_env%iter_delta, &
458 DO ispin = 1,
SIZE(mos)
462 DO ispin = 1,
SIZE(mos)
464 rho_ao(ispin)%matrix, &
468 scf_env%iter_method = scf_env%qs_ot_env(1)%OT_METHOD_FULL
469 scf_env%iter_param = scf_env%qs_ot_env(1)%ds_min
470 qs_env%broyden_adaptive_sigma = scf_env%qs_ot_env(1)%broyden_adaptive_sigma
472 CALL timestop(handle)
474 END SUBROUTINE qs_scf_loop_do_ot
489 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: rho_ao_kp
495 SELECT CASE (scf_env%mixing_method)
498 scf_env%mixing_store, rho_ao_kp, para_env, scf_env%iter_delta, scf_env%iter_count, &
504 delta=scf_env%iter_delta)
507 CALL cp_abort(__location__, &
508 "unknown scf mixing method: "// &
524 outer_loop_converged, exit_outer_loop)
528 LOGICAL :: should_stop, outer_loop_converged, &
531 REAL(kind=
dp) :: outer_loop_eps
533 outer_loop_converged = .true.
534 IF (scf_control%outer_scf%have_scf)
THEN
536 scf_env%outer_scf%iter_count = scf_env%outer_scf%iter_count + 1
537 outer_loop_converged = .false.
541 outer_loop_eps = sqrt(maxval(scf_env%outer_scf%gradient(:, scf_env%outer_scf%iter_count)**2))
543 IF (outer_loop_eps < scf_control%outer_scf%eps_scf) outer_loop_converged = .true.
546 exit_outer_loop = should_stop .OR. outer_loop_converged .OR. &
547 scf_env%outer_scf%iter_count > scf_control%outer_scf%max_scf
563 exit_inner_loop, inner_loop_converged, output_unit)
567 LOGICAL :: should_stop, just_energy, &
568 exit_inner_loop, inner_loop_converged
569 INTEGER :: output_unit
571 inner_loop_converged = .false.
572 exit_inner_loop = .false.
575 start_time=qs_env%start_time)
576 IF (scf_env%iter_delta < scf_control%eps_scf)
THEN
577 IF (output_unit > 0)
THEN
578 WRITE (unit=output_unit, fmt=
"(/,T3,A,I5,A/)") &
579 "*** SCF run converged in ", scf_env%iter_count,
" steps ***"
581 inner_loop_converged = .true.
582 exit_inner_loop = .true.
583 ELSE IF (should_stop .OR. scf_env%iter_count >= scf_control%max_scf)
THEN
584 inner_loop_converged = .false.
585 IF (just_energy)
THEN
586 exit_inner_loop = .false.
588 exit_inner_loop = .true.
589 IF (output_unit > 0)
THEN
590 WRITE (unit=output_unit, fmt=
"(/,T3,A,I5,A/)") &
591 "Leaving inner SCF loop after reaching ", scf_env%iter_count,
" steps."
606 SUBROUTINE qs_scf_undo_mixing(scf_env, rho, dft_control, para_env, diis_step)
613 CHARACTER(len=default_string_length) :: name
614 INTEGER :: ic, ispin, nc
615 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: rho_ao_kp
619 IF (scf_env%mixing_method > 0)
THEN
621 nc =
SIZE(scf_env%p_mix_new, 2)
622 SELECT CASE (scf_env%mixing_method)
625 rho_ao_kp, para_env, scf_env%iter_delta, &
626 scf_env%iter_count, diis=diis_step, &
629 DO ispin = 1, dft_control%nspins
631 CALL dbcsr_copy(rho_ao_kp(ispin, ic)%matrix, scf_env%p_mix_new(ispin, ic)%matrix, name=name)
637 DO ispin = 1, dft_control%nspins
639 CALL dbcsr_copy(rho_ao_kp(ispin, ic)%matrix, scf_env%p_mix_new(ispin, ic)%matrix, name=name)
644 END SUBROUTINE qs_scf_undo_mixing
659 LOGICAL,
INTENT(IN) :: mix_rho
669 CALL gspace_mixing(qs_env, scf_env%mixing_method, scf_env%mixing_store, rho, &
670 para_env, scf_env%iter_count)
688 INTEGER,
INTENT(IN) :: output_unit
690 LOGICAL :: do_kpoints
697 NULLIFY (energy, rho, dft_control, ks_env)
699 CALL get_qs_env(qs_env=qs_env, energy=energy, ks_env=ks_env, &
700 rho=rho, dft_control=dft_control, para_env=para_env, &
701 do_kpoints=do_kpoints)
703 CALL cleanup_scf_loop(scf_env)
709 CALL qs_scf_undo_mixing(scf_env, rho, dft_control, para_env, diis_step)
724 SUBROUTINE cleanup_scf_loop(scf_env)
727 CHARACTER(len=*),
PARAMETER :: routinen =
'cleanup_scf_loop'
729 INTEGER :: handle, ispin
731 CALL timeset(routinen, handle)
733 SELECT CASE (scf_env%method)
735 DO ispin = 1,
SIZE(scf_env%qs_ot_env)
738 DEALLOCATE (scf_env%qs_ot_env)
752 CALL cp_abort(__location__, &
753 "unknown scf method method:"// &
757 CALL timestop(handle)
759 END SUBROUTINE cleanup_scf_loop
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_get_info(matrix, nblkrows_total, nblkcols_total, nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, my_prow, my_pcol, local_rows, local_cols, proc_row_dist, proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, distribution, name, matrix_type, group)
...
Routines to handle the external control of CP2K.
subroutine, public external_control(should_stop, flag, globenv, target_time, start_time, force_check)
External manipulations during a run : when the <PROJECT_NAME>.EXIT_$runtype command is sent the progr...
various routines to log and control the output. The idea is that decisions about where to log 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.
Interface to the message passing library MPI.
collects routines that calculate density matrices
module that contains the definitions of the scf types
integer, parameter, public broyden_mixing_nr
integer, parameter, public no_mixing_nr
integer, parameter, public direct_mixing_nr
integer, parameter, public multisecant_mixing_nr
integer, parameter, public pulay_mixing_nr
integer, parameter, public gspace_mixing_nr
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, ecoul_1c, rho0_s_rs, rho0_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, wanniercentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, tb_tblite)
Get the QUICKSTEP environment.
subroutine, public fb_env_do_diag(fb_env, qs_env, matrix_ks, matrix_s, scf_section, diis_step)
Do filtered matrix method diagonalisation.
subroutine, public gspace_mixing(qs_env, mixing_method, mixing_store, rho, para_env, iter_count)
Driver for the g-space mixing, calls the proper routine given the requested method.
subroutine, public qs_ks_did_change(ks_env, s_mstruct_changed, rho_changed, potential_changed, full_reset)
tells that some of the things relevant to the ks calculation did change. has to be called when change...
subroutine, public self_consistency_check(rho_ao, p_delta, para_env, p_out, delta)
...
Set occupation of molecular orbitals.
Definition and initialisation of the mo data type.
methods for deltaSCF calculations
subroutine, public do_mom_diag(scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, diis_step)
do an SCF iteration, then compute occupation numbers of the new molecular orbitals according to their...
basic functionality for using ot in the scf routines.
subroutine, public ot_scf_mini(mo_array, matrix_dedc, smear, matrix_s, energy, energy_only, delta, qs_ot_env)
...
subroutine, public ot_scf_destroy(qs_ot_env)
...
Routines for performing an outer scf loop.
subroutine, public outer_loop_gradient(qs_env, scf_env)
computes the gradient wrt to the outer loop variables
methods of the rho structure (defined in qs_rho_types)
subroutine, public qs_rho_update_rho(rho_struct, qs_env, rho_xc_external, local_rho_set, task_list_external, task_list_external_soft, pw_env_external, para_env_external)
updates rho_r and rho_g to the rhorho_ao. if use_kinetic_energy_density also computes tau_r and tau_g...
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...
Different diagonalization schemes that can be used for the iterative solution of the eigenvalue probl...
subroutine, public do_ot_diag(scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, diis_step)
the inner loop of scf, specific to iterative diagonalization using OT with S matrix; basically,...
subroutine, public do_block_davidson_diag(qs_env, scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, check_moconv_only)
iterative diagonalization using the block davidson space approach
subroutine, public do_roks_diag(scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, diis_step, orthogonal_basis)
Solve a set restricted open Kohn-Sham (ROKS) equations based on the alpha and beta Kohn-Sham matrices...
subroutine, public do_scf_diag_subspace(qs_env, scf_env, subspace_env, mos, rho, ks_env, scf_section, scf_control)
inner loop within MOS subspace, to refine occupation and density, before next diagonalization of the ...
subroutine, public do_block_krylov_diag(scf_env, mos, matrix_ks, scf_control, scf_section, check_moconv_only)
iterative diagonalization using the block Krylov-space approach
subroutine, public do_special_diag(scf_env, mos, matrix_ks, scf_control, scf_section, diis_step)
the inner loop of scf, specific to diagonalization without S matrix basically, in goes the ks matrix ...
subroutine, public do_general_diag(scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, diis_step, probe)
...
subroutine, public do_general_diag_kp(matrix_ks, matrix_s, kpoints, scf_env, scf_control, update_p, diis_step, diis_error, qs_env, probe)
Kpoint diagonalization routine Transforms matrices to kpoint, distributes kpoint groups,...
Utility routines for qs_scf.
subroutine, public qs_scf_check_inner_exit(qs_env, scf_env, scf_control, should_stop, just_energy, exit_inner_loop, inner_loop_converged, output_unit)
checks whether exit conditions for inner loop are satisfied
subroutine, public qs_scf_inner_finalize(scf_env, qs_env, diis_step, output_unit)
Performs the necessary steps before leaving innner scf loop.
subroutine, public qs_scf_set_loop_flags(scf_env, diis_step, energy_only, just_energy, exit_inner_loop)
computes properties for a given hamiltonian using the current wfn
subroutine, public qs_scf_rho_update(rho, qs_env, scf_env, ks_env, mix_rho)
Performs the updates rho (takes care of mixing as well)
subroutine, public qs_scf_new_mos_kp(qs_env, scf_env, scf_control, diis_step, probe)
Updates MOs and density matrix using diagonalization Kpoint code.
subroutine, public qs_scf_check_outer_exit(qs_env, scf_env, scf_control, should_stop, outer_loop_converged, exit_outer_loop)
checks whether exit conditions for outer loop are satisfied
subroutine, public qs_scf_density_mixing(scf_env, rho, para_env, diis_step)
Performs the requested density mixing if any needed.
subroutine, public qs_scf_new_mos(qs_env, scf_env, scf_control, scf_section, diis_step, energy_only, probe)
takes known energy and derivatives and produces new wfns and or density matrix
groups fairly general SCF methods, so that modules other than qs_scf can use them too split off from ...
subroutine, public scf_env_density_mixing(p_mix_new, mixing_store, rho_ao, para_env, iter_delta, iter_count, diis, invert)
perform (if requested) a density mixing
subroutine, public qs_scf_print_summary(output_unit, qs_env)
writes a summary of information after scf
module that contains the definitions of the scf types
integer, parameter, public ot_diag_method_nr
integer, parameter, public filter_matrix_diag_method_nr
integer, parameter, public block_davidson_diag_method_nr
integer, parameter, public smeagol_method_nr
integer, parameter, public ot_method_nr
integer, parameter, public special_diag_method_nr
integer, parameter, public block_krylov_diag_method_nr
integer, parameter, public general_diag_method_nr
parameters that control an scf iteration
subroutine, public run_smeagol_emtrans(qs_env, last, iter, rho_ao_kp)
Run NEGF/SMEAGOL transport calculation.
Contains information about kpoints.
stores all the informations relevant to an mpi environment
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
keeps the density in various representations, keeping track of which ones are valid.
contains the parameters needed by a scf run