scf controls in .oqp¶
.oqp control reference
Use canonical routes and controls in input files. Raw names
identify implementation storage. A control without an accepted canonical
spelling is not available in .oqp files.
The scf section controls the reference wavefunction and SCF convergence
strategy. It is required for HF, DFT, MP2, TDHF/TDDFT, SF-TDDFT, MRSF-TDDFT,
SOC, NACME, and EKT workflows.
Minimal Examples¶
Closed-shell singlet:
rhf/6-31g*
geom="molecule.xyz"
Triplet ROHF reference for MRSF-TDDFT:
rohf/6-31g* mult=3
geom="molecule.xyz"
Keywords¶
type¶
Use the physical route or primary calculation for this control; see the canonical spelling and ownership. Do not write this raw storage key as a separate input section.
| Field | Value |
|---|---|
| Type | string |
| Default | rhf |
| Values | rhf, rohf, uhf |
| Used by | reference selection |
Selects the SCF reference. Use rhf for closed-shell singlets, rohf for the
high-spin reference commonly used by SF/MRSF workflows, and uhf for
unrestricted references including UMRSF-TDDFT and UHF-referenced SF-TDDFT. Standalone MP2 supports RHF,
UHF, and ROHF references.
The input checker rejects type=rhf with multiplicity>1.
multiplicity¶
Use the physical route or primary calculation for this control; see the canonical spelling and ownership. Do not write this raw storage key as a separate input section.
| Field | Value |
|---|---|
| Type | integer |
| Default | 1 |
| Used by | spin state and electron occupation |
Sets the spin multiplicity, 2S+1. SF/MRSF examples usually use a triplet ROHF
reference with multiplicity=3.
In the high-level Python API, job.theory.mrsf(...) supplies this
usual MRSF reference multiplicity implicitly; set multiplicity in
job.molecule(...) for ordinary HF/DFT references or when overriding the
default deliberately.
maxit¶
Canonical input call: scf(maxit=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 30 |
| Used by | SCF iteration loop |
Maximum number of SCF iterations before failure or fallback handling.
conv¶
Canonical input call: scf(conv=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 1.0e-6 |
| Used by | SCF convergence test |
Energy/density convergence threshold for the SCF cycle. Tighten this for high-precision properties or difficult state comparisons.
maxdiis¶
Canonical input call: scf(maxdiis=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 7 |
| Used by | DIIS subspace |
Maximum number of vectors kept in the DIIS extrapolation space. Set
maxdiis <= 13 whenever an active DIIS stage uses ediis, adiis, vdiis,
or any nonzero vshift; those paths use the deterministic simplex solver,
whose exact supported history limit is 13 states. The rule applies to the
primary DIIS/auto/ml converger, to an enabled init_scf stage when its
effective init_converger is DIIS, and to any DIIS stage selected through
escalation or alternative_scf. A calculation using only soscf or trah,
or unshifted cdiis, may use a larger history.
diis_type¶
Canonical input call: scf(diis_type=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | cdiis |
| Values | none, cdiis, ediis, adiis, vdiis |
| Used by | DIIS convergence accelerator |
Selects the DIIS variant. cdiis is the default. vdiis can be useful for
difficult cases with level shifting. Active ediis, adiis, and vdiis
stages require maxdiis <= 13.
diis_reset_mod¶
Canonical input call: scf(diis_reset_mod=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 10 |
| Used by | DIIS reset logic |
Controls periodic DIIS reset behavior.
diis_reset_conv¶
Canonical input call: scf(diis_reset_conv=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0.005 |
| Used by | DIIS reset logic |
Convergence threshold used by the DIIS reset heuristic.
cdiis_switch¶
Canonical input call: scf(cdiis_switch=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0.3 |
| Used by | CDIIS switching heuristic |
Threshold for switching into CDIIS-style extrapolation.
vdiis_vshift_switch¶
Canonical input call: scf(vdiis_vshift_switch=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0.003 |
| Used by | VDIIS level-shift behavior |
Threshold for VDIIS/level-shift switching.
vshift¶
Canonical input call: scf(vshift=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0.0 |
| Used by | virtual-orbital level shift |
Applies a level shift during SCF. Larger values can stabilize convergence but
may slow final convergence. For an active DIIS stage, any nonzero value selects
the C-DIIS/E-DIIS/C-DIIS cascade regardless of diis_type, so maxdiis must
not exceed 13.
incremental¶
Canonical input call: scf(incremental=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | boolean |
| Default | True |
| Used by | incremental Fock build |
Enables incremental Fock builds where supported.
mom¶
Canonical input call: scf(mom=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | boolean |
| Default | False |
| Used by | maximum-overlap method |
Enables MOM occupation tracking for challenging electronic states. In every
iteration, after the new Fock matrix is diagonalised, MOM occupies the orbitals
with the largest overlap with the previous orbitals instead of the lowest ones.
The first reference is the guess orbitals, so a non-aufbau guess (for example
one prepared with swapmo) is kept from the first
iteration, as long as MOM is already active there (see mom_switch):
rhf/6-31g* scf(mom=true,mom_switch=100)
geom="molecule.xyz"
MOM cannot be combined with TRAH. TRAH minimises the energy and never
rediagonalises the Fock matrix, so it would leave the targeted state.
converger_type=trah or init_converger=trah together with mom=true is an
input error. The escalation ladder, the stability pass and converger_type=ml
never use TRAH for a MOM calculation.
mom_switch¶
Canonical input call: scf(mom_switch=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0.003 |
| Used by | MOM activation heuristic |
MOM becomes active once the DIIS error drops below this value. Before that,
each iteration fills the lowest orbitals. To keep a non-aufbau guess, set it above
the first DIIS error, for example mom_switch=100.
pfon¶
Canonical input call: scf(pfon=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | boolean |
| Default | False |
| Used by | pseudo-fractional occupation number method |
Enables pFON smoothing for difficult SCF cases.
pfon_start_temp¶
Canonical input call: scf(pfon_start_temp=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 2000.0 |
| Used by | pFON schedule |
Initial pFON electronic temperature.
pfon_cooling_rate¶
Canonical input call: scf(pfon_cooling_rate=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 50.0 |
| Used by | pFON schedule |
Cooling rate used as pFON occupations are annealed.
pfon_nsmear¶
Canonical input call: scf(pfon_nsmear=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 5.0 |
| Used by | pFON occupation smoothing |
Controls the smearing width/count used by the pFON method.
converger_type¶
Canonical input call: scf(converger_type=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | diis |
| Values | diis, soscf, trah, auto, ml |
| Used by | SCF convergence manager |
Selects the main SCF convergence strategy. auto and ml are Python-side
manager modes that choose a concrete native converger before dispatch.
trah is rejected together with mom=true or rstctmo=true. When ml
would choose TRAH for such a calculation, DIIS is used instead.
init_converger¶
Canonical input call: scf(init_converger=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | None |
| Values | empty, none, diis, soscf, trah, auto, ml |
| Used by | initial SCF phase |
Overrides the converger used during an optional initial SCF stage. As with
converger_type, trah is rejected together with mom=true or
rstctmo=true.
alternative_scf¶
Canonical input call: scf(alternative_scf=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | trah |
| Values | diis, soscf, trah, auto, ml |
| Used by | fallback SCF attempts |
Fallback converger after repeated SCF difficulty.
escalation¶
Canonical input call: scf(escalation=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | comma-separated string |
| Default | empty |
| Values | diis, soscf, trah stages |
| Used by | custom fallback ladder |
Overrides the default escalation ladder. With mom=true or rstctmo=true
the TRAH stage is dropped from any ladder, because TRAH cannot keep the
selected occupation. Example:
rhf/6-31g* scf(escalation="soscf,trah")
geom="molecule.xyz"
forced_attempt¶
Canonical input call: scf(forced_attempt=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 2 |
| Used by | repeated SCF attempts |
Controls how many attempts the SCF manager can force before declaring failure or escalating.
init_scf¶
Canonical input call: scf(init_scf=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | no |
| Values | no, rhf, uhf, rohf, rks, uks, roks |
| Used by | initial low-cost SCF stage |
Requests an initial SCF calculation before the main SCF. KS-style initial SCF
values (rks, uks, roks) require input.functional.
init_basis¶
Canonical input call: scf(init_basis=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | none |
| Used by | initial SCF basis selection |
Basis used for the initial SCF stage. library can be used with
init_library.
init_library¶
Canonical input call: scf(init_library=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | multiline string |
| Default | empty |
| Used by | tagged basis mapping for init_basis=library |
Maps atom tags to basis names for the initial SCF basis.
init_it¶
Canonical input call: scf(init_it=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 15 |
| Used by | initial SCF stage |
Maximum number of iterations in the initial SCF stage.
init_conv¶
Canonical input call: scf(init_conv=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0.001 |
| Used by | initial SCF stage |
Convergence threshold for the initial SCF stage.
save_molden¶
Canonical input call: scf(save_molden=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | boolean |
| Default | True |
| Used by | Molden output |
Writes Molden orbital files when supported. Hessian calculations combine SCF orbitals and normal modes in the frequency Molden file. MRSF-EKT calculations also write a state-labeled Dyson Molden file after the EKT kernel completes. See Orbital and Vibrational Output.
rstctmo¶
Canonical input call: scf(rstctmo=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | boolean |
| Default | False |
| Used by | MO ordering |
Restricts molecular-orbital ordering in workflows that need stable state or
orbital labels. The occupation chosen in the guess (for example with
swapmo) is kept through the iterations. This is the
delta-CHP core-hole route.
Like mom, rstctmo cannot be combined with TRAH (converger_type=trah or
init_converger=trah is an input error), and TRAH is never used for
escalation or stability.
scal_rel¶
Canonical input call: scf(scal_rel=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 0 |
| Values | 0, 1, 2 |
| Used by | scalar-relativistic one-electron Hamiltonian |
Selects the scalar relativistic Douglas-Kroll-Hess correction applied to the spin-free one-electron core Hamiltonian:
| Value | Meaning |
|---|---|
0 |
Disabled. |
1 |
First-order Douglas-Kroll-Hess correction. |
2 |
First- and second-order Douglas-Kroll-Hess correction. |
This is not the SOC switch. scal_rel changes the scalar, spin-free
Hamiltonian; SOC is selected separately with input.runtype=soc and
input.soc_2e. See References
for the DKH background.
The input-file default is scal_rel=0. In the high-level Python API,
job.workflow.soc(...) sets scal_rel=2 by default for the SOC workflow
because the documented SOC path uses a DKH2 spin-free Hamiltonian before the
SOC matrix is formed. Pass scal_rel=0, 1, or 2 to override that helper
default.
scal_rel_decontract¶
Canonical input call: scf(scal_rel_decontract=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 1 |
| Values | 0, 1 |
| Used by | scalar-relativistic one-electron Hamiltonian (scal_rel=1 or 2) |
Selects the basis in which the Douglas-Kroll-Hess decoupling is carried out:
| Value | Meaning |
|---|---|
1 |
The basis is decontracted (one shell per unique primitive exponent per atom, angular momentum and angular type), the decoupling is carried out there, and the relativistic correction to the core Hamiltonian is projected back onto the contracted basis with the contraction matrix. |
0 |
The decoupling is carried out directly in the contracted basis (the behaviour before this keyword existed). |
Use the default. The contracted basis truncates the kinetic-balance space of the
decoupling, and with contracted relativistic basis sets the resulting
Hamiltonian is not variational: the DKH2 energy of the mercury atom in a
contracted Sapporo-DKH3-DZP basis is about 2300 Hartree below the energy
obtained with the same basis fully uncontracted, and about 2300 Hartree below
the Dirac-Coulomb Hartree-Fock limit. With scal_rel_decontract=1 the
contracted-basis energy lies within the usual contraction error above the
uncontracted-basis value (0.56 Hartree for that case; 0.1 Hartree for krypton
in x2c-TZVPall). For an already uncontracted basis both values give the same
result.
The decontraction applies only to the construction of the relativistic core
Hamiltonian; the SCF itself still uses the contracted basis. 0 is kept to
reproduce earlier results and for comparison.
stability¶
Canonical input call: scf(stability=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | boolean |
| Default | False |
| Used by | SCF stability analysis |
Requests stability analysis where wired. The analysis uses TRAH and is
skipped for mom=true and rstctmo=true calculations.
soscf_lvl_shift¶
Canonical input call: scf(soscf_lvl_shift=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0 |
| Used by | SOSCF convergence |
Level shift used by the SOSCF converger.
verbose¶
Canonical input call: scf(verbose=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 1 (0 for runtype = md and namd) |
| Values | 0, 1, 2, 3 |
| Used by | the text log of the whole run |
Older spelling of input.verbose, which sets the log level
for the whole run. It is still read: when both are given, the one that differs
from the default 1 wins, input first. Its effect on the molecular-orbital
table after each SCF is:
| Value | Effect |
|---|---|
0 |
No molecular-orbital table. |
1 |
Orbital energies, without coefficients, after a converged SCF (the default). |
2 and above |
Orbital energies and coefficients, also when the SCF did not converge. |
The orbital table is written after every SCF, and a dynamics run calls the SCF
at least once per step, so at the default it is repeated for every step of the
trajectory: a 100-step QM/MM surface-hopping run of an 18-atom QM region wrote
405 tables and 83 MB of log, in which the 101 lines that report the dynamics
are impossible to find. runtype = md and namd
therefore default this keyword to 0 unless input.verbose or
scf.verbose is set to a value other than 1; write verbose = 2 in the
deck to get the tables back for a trajectory.
Only the log is affected. The orbitals of any frame remain available from the Molden file, the restart record and the trajectory file, and the setting does not change any computed quantity.
TRAH Keywords¶
TRAH is the trust-region augmented Hessian SCF converger. It is implemented natively; the external OpenTrustRegion (OpenTRAH) backend was removed.
trh_impl¶
Canonical input call: scf(trh_impl=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | auto |
| Accepted | auto, native |
| Used by | TRAH implementation selection |
Selects the TRAH implementation. Both accepted values resolve to the native trust-region augmented-Hessian solver, which is the only implementation.
otr, which selected the external OpenTrustRegion backend, is no longer
accepted: the backend was removed and an input requesting it now fails with a
ValueError naming the accepted values, rather than silently running the native
solver instead.
trh_stab¶
Canonical input call: scf(trh_stab=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | boolean |
| Default | False |
| Used by | TRAH stability mode |
Enables TRAH stability behavior.
trh_ls¶
Canonical input call: scf(trh_ls=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | boolean |
| Default | False |
| Used by | TRAH line search |
Enables line search inside TRAH.
trh_sub_solver¶
Canonical input call: scf(trh_sub_solver=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | davidson |
| Used by | TRAH micro-iteration solver |
Selects the subsystem solver used by TRAH.
trh_nrtv¶
Canonical input call: scf(trh_nrtv=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 1 |
| Used by | TRAH random trial vectors |
Number of random trial vectors used in the TRAH subsystem.
trh_r0¶
Canonical input call: scf(trh_r0=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0.4 |
| Used by | TRAH trust radius |
Initial TRAH trust radius.
trh_jd_start¶
Canonical input call: scf(trh_jd_start=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 30 |
| Used by | TRAH Jacobi-Davidson switch |
Iteration threshold for the Jacobi-Davidson path in TRAH.
trh_nmic¶
Canonical input call: scf(trh_nmic=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | integer |
| Default | 50 |
| Used by | TRAH micro-iterations |
Maximum number of TRAH micro-iterations.
trh_gred¶
Canonical input call: scf(trh_gred=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0.001 |
| Used by | TRAH global reduction |
Global reduction factor for the TRAH microproblem.
trh_lred¶
Canonical input call: scf(trh_lred=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | 0.0001 |
| Used by | TRAH local reduction |
Local reduction factor for the TRAH microproblem.
xc_c2f¶
Canonical input call: scf(xc_c2f=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | auto (follows perf) |
| Values | on, off, auto |
| Used by | DFT SCF — coarse-to-fine XC grid during descent |
Use a coarse XC grid during the SCF descent and the full grid in the convergence tail. Exact at convergence. See Performance.
xc_phi_cache¶
Canonical input call: scf(xc_phi_cache=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | auto (follows perf; no preset enables it) |
| Values | on, off, auto |
| Used by | DFT SCF — collocation-Φ cache |
Cache the collocation Φ across SCF iterations (exact). Opt-in; on the CPU benchmark it was net-negative, so no preset enables it.
xc_incdft¶
Canonical input call: scf(xc_incdft=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | string |
| Default | auto (follows perf; no preset enables it) |
| Values | on, off, auto |
| Used by | DFT SCF — incremental DFT (experimental) |
Incremental XC from density differences. Experimental; typically slows SCF convergence. Opt-in only.
grad_cutoff¶
Canonical input call: scf(grad_cutoff=VALUE); VALUE is a placeholder for the documented value.
| Field | Value |
|---|---|
| Type | float |
| Default | auto (follows perf; 1.0d-10 baseline) |
| Used by | gradients — 2e-derivative Schwarz cutoff |
Schwarz block cutoff for the 2e-derivative gradient build. Looser values trade a
small gradient error for speed (1.0d-8 ≈ 5×10⁻⁷ a.u.).
Progressive Screening Keywords¶
Progressive screening is an opt-in SCF acceleration path. During the early
descent it may use looser integral and XC-grid thresholds; once the DIIS error
falls below pscreen_tight, it returns to the normal converged thresholds. No
performance preset enables it automatically.
pscreen, pscreen_k, pscreen_cap, pscreen_tight¶
| Keyword | Type | Default | Meaning |
|---|---|---|---|
pscreen |
boolean | False |
Enable progressive integral/grid screening. |
pscreen_k |
float | 1.0e-2 |
Safety factor in the iteration-dependent cutoff, approximately pscreen_k * DIIS error. |
pscreen_cap |
float | 1.0e-8 |
Loosest permitted integral cutoff. Values looser than 1e-8 can risk changing the SCF state. |
pscreen_tight |
float | 1.0e-4 |
DIIS-error threshold for returning to tight cutoffs; the effective value is at least 10 * scf.conv. |
pscreen_xc_dcut, pscreen_xc_aocut, pscreen_grid_rad, pscreen_grid_ang¶
| Keyword | Type | Default | Meaning |
|---|---|---|---|
pscreen_xc_dcut |
float | 0.0 |
Loose XC density cutoff during descent; zero disables this ramp. |
pscreen_xc_aocut |
float | 0.0 |
Loose XC AO-pruning threshold during descent; zero disables it. |
pscreen_grid_rad |
integer | 0 |
Coarse radial-grid size during descent; both grid sizes must be positive to enable this progressive-screening override. |
pscreen_grid_ang |
integer | 0 |
Coarse angular-grid size during descent; zero disables this override, independent of the separate xc_c2f schedule. |
Keep pscreen_tight safely above the final SCF convergence threshold so the
calculation reaches the normal integral and grid accuracy before convergence.
Scientific references¶
HF and density functional theory; SCF convergence and response solvers.