Skip to content

Commit 74529de

Browse files
committed
List the stability job type in the input YAML reference
input_reference.rst had no mention of `stability` at all, and its job_types example listed six keys out of twelve, so the only place the feature was documented was advanced.rst -- which describes behaviour and is not where a user goes to find out which keys an input file accepts. The feature was therefore discoverable only by reading the settings module. `stability` is added to the job type key list and to the example with its default, and the example now states which keys default to true and which to false, since the example itself lists a mixture of the two and previously implied that the ones it omitted were unavailable rather than defaulted. A short section states what the analysis is, that ARC has implemented it for Gaussian so far and that other ESSs are not wired up yet, when it runs (once per species, after that species' freq job, for a TS or for a species whose freq job actually ran restricted, at a DFT or HF level, with the freq job's checkfile), and what the user gets back. Which instabilities invalidate analytic frequencies, and what an adopted verdict does and does not correct, stay in advanced.rst; this section links there rather than restating them. The `specific_job_type` interaction is documented because it is a trap. That key replaces job_types wholesale with a dictionary in which only the named type is true, so `specific_job_type: stability` is accepted -- stability is a key of default_job_types, so no InputError is raised -- and then produces nothing at all, because opt, freq and sp are all false and run_stability_job is only ever reached from post_freq_actions. bde is special-cased to re-enable opt/fine/freq/sp; stability is not. Verified against initialize_job_types rather than inferred: specific_job_type 'stability' yields opt False, freq False, sp False, stability True. The reference now says to request it through job_types and says why. Deliberately not documented here: which other programs implement a stability analysis and under what keyword. ORCA and Q-Chem both do, but their exact syntax was not verified against their manuals for this commit, and an unverified keyword in ARC's documentation is worse than none. The text is kept to what ARC does. Also records that the job type now runs in ORCA as well as in Gaussian, that ORCA always follows an instability it finds, and that the two codes test the same space and agree on the verdict, with the sector of a restricted reference's instability read off the solution ORCA relaxes into.
1 parent cc48614 commit 74529de

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

docs/source/input_reference.rst

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ Current job type keys are:
223223
* ``rotors``
224224
* ``irc``
225225
* ``orbitals``
226+
* ``stability``
226227
* ``onedmin``
227228
* ``bde``
228229

@@ -242,6 +243,44 @@ Example:
242243
freq: true
243244
sp: true
244245
rotors: false
246+
stability: false
247+
248+
``conf_opt``, ``opt``, ``fine``, ``freq``, ``sp``, ``rotors`` and ``irc`` default to
249+
``true`` when omitted; ``conf_sp``, ``orbitals``, ``stability``, ``onedmin`` and ``bde``
250+
default to ``false``.
251+
252+
Wavefunction Stability Analysis
253+
-------------------------------
254+
255+
``stability`` is off by default and is opt-in through ``job_types``. ARC has implemented
256+
the analysis for Gaussian and for ORCA so far; other ESSs are not wired up yet, and a run
257+
whose frequency jobs go to another ESS is told so once per ESS in the log rather than
258+
silently producing nothing. The two ESSs test the same space and agree on the verdict; in
259+
ORCA the analysis always follows an instability it finds, since ORCA 6.0.0 aborts rather
260+
than merely reporting one, and the sector of a restricted reference's instability is read
261+
off the solution it relaxes into.
262+
263+
It runs once per species, after that species' frequency job, and only for a transition
264+
state or for a species whose frequency job actually ran with a restricted reference - a
265+
restricted reference is the only one the analysis can inform, since a restricted solution
266+
gives the same energy as an unrestricted one if and only if it is stable. It is further
267+
limited to DFT and Hartree-Fock frequency levels, and needs the checkfile the frequency
268+
job used, so that the SCF under test is the one the Hessian was built from.
269+
270+
What it buys you: a verdict recorded in the log and in ``output.yml`` saying whether the
271+
converged wavefunction is a genuine minimum in the space of orbital rotations, together
272+
with the label and eigenvalue of any negative stability-matrix root, and whether the
273+
analytic frequencies are invalidated by it. For a transition state the verdict can also
274+
decide the restricted-versus-unrestricted reference of the jobs that follow. See
275+
:ref:`Advanced Features <advanced>` for the full treatment, including which instabilities
276+
invalidate analytic frequencies and what an adopted verdict does and does not correct.
277+
278+
``specific_job_type`` cannot be used to request it. That key replaces ``job_types``
279+
wholesale with a dictionary in which only the named job type is ``true``, so
280+
``specific_job_type: stability`` switches off the ``opt``, ``freq`` and ``sp`` jobs the
281+
analysis is spawned from and nothing runs at all (``bde`` is special-cased to re-enable
282+
them; ``stability`` is not). Any other value of ``specific_job_type`` likewise sets
283+
``stability`` to ``false``. Request it through ``job_types``.
245284

246285
ESS Settings
247286
------------

0 commit comments

Comments
 (0)