DIAGPT Manual Input#
The unified Python workflow normally validates HDF5 inputs and generates this namelist. This page is for controlled manual runs and legacy regression work.
Structure#
DIAGPT reads &cidfil and then scans for &cidinp:
&cidfil prefix='Ce_', &end
Ce scalar states
&cidinp
zbig=.false.,
thrpri=0.25,
wmupa=1.0,
gap=0.05,
zshift=.false.,
zcontr=.false.,
znocal=.false.,
zwh0=.true.,
zrh0=.false.,
paver=1.0,
&end
The workflow emits the title line for compatibility, but the current DIAGPT
program does not use it as a scientific input. zbig is forced false during
startup; the alternate legacy BD path is unsupported.
Standard Fields#
Field |
Meaning |
Source default |
|---|---|---|
|
Prefix for the optional H0 restart and |
required for manual files |
|
CI coefficient print threshold |
|
|
Multipartitioning weight: |
|
|
Minimum denominator separation used by intruder handling |
|
|
Apply the configured level shift in the pure-MPPT case |
|
|
One state-average weight per model-space state |
first state |
|
Write |
|
|
Read |
|
|
Build/diagonalize H0 and exit before the full PT calculation |
|
|
Use generalized hole/particle Fock diagonals for denominators |
|
|
Force model-space degeneracy |
|
|
Read legacy orbital-equivalence records after the namelist |
|
|
Enable very verbose diagnostic output |
|
zrh0 and zwh0 cannot both be true. Explicit paver values are converted to
absolute values and normalized over metat; at least one nonzero weight is
therefore required.
Forced Orbital Equivalence Records#
zequif applies only when zrh0=.true. reads a previously written H0 record.
When enabled, append the equivalence data immediately after &end:
2
2 5 6
3 7 8 9
The first line is the number of equivalence groups. Each following line gives the group size and then that many 1-based orbital indices; the current reader accepts at most five orbitals per group.
Current limitation: the legacy application loop computes each group’s average
hole occupation, particle occupation, removal energy, attachment energy, and
Fock diagonal but applies those values only to the final listed orbital. Do not
enable zequif for scientific runs until that implementation is corrected; the
record syntax is retained here only for diagnosing legacy inputs.
H0 Restart Record#
zwh0=.true. writes one compiler-native unformatted sequential record to
<prefix>h0.1; zrh0=.true. reads the same layout:
norb, upper_unshifted_limit, lower_unshifted_limit, record_weight,
(hole_occupation(i), particle_occupation(i), removal_energy_eoip(i),
attachment_energy_eoea(i), fock_diagonal(i), i=1,norb)
Orbital entries use DIAGPT’s symmetry-sorted record order. Treat this file as a same-build restart rather than a portable interchange format; HDF5 remains the portable model-space and integral contract.
The compiled target-state ceiling is metat <= 1000. DIAGPT allocates CI
coefficient storage for the active ncf * metat extent, not for the full
compiled ceiling. Inputs above 1000 states fail HDF5 preflight rather than being
truncated.
DIAGPT always uses the repository-pinned PRIMME eigensolver. PRIMME is a
mandatory CMake dependency, so a binary without it is not produced. The former
diag_solver namelist field was removed; delete it from old manual inputs
instead of selecting a backend.
When more than half of the spectrum is requested, DIAGPT automatically expands the PRIMME search basis and uses blocks of up to eight vectors, capped at one quarter of the matrix dimension. The dimension cap keeps PRIMME’s restart space valid for small full-spectrum problems while avoiding single-vector locking in larger near-full-spectrum model spaces. This is not a user setting.
HDF5 Manual Route#
DIAGPT requires both the model space and all scalar/two-electron integrals in
the configured HDF5 file. MPPT_SELECTED chooses between the selected and full
HDF5 contracts; it does not choose a file format, and DIAGPT does not infer the
route from file presence:
export MPPT_HDF5_FILE=/path/to/calculation.h5
export MPPT_SELECTED=false # true only for the selected integral contract
diagpt < diagpt.inp > diagpt.log 2> diagpt.err
The file must contain /mppt/model_space/quasi_restricted with a valid
content_hash_fnv1a64. With MPPT_SELECTED=true, scalar integrals come from
the compact full-labelled J/K slices and the four pair-packed ERI blocks. With
MPPT_SELECTED false or unset, DIAGPT loads fock_full_packed and
int2e_full, keeps the latter in dense packed bijkl, and serves it through
ai(). See the complete selected/full contract.
Normal outputs are the optional <prefix>h0.1 restart file and the
mppt_heffso_handoff_v3 <prefix>heffso.1.h5 handoff described in the
output contract. The handoff retains ordered determinants,
metat, and packed H1/H2 matrices; DIAGPT does not write separate H1/H2
sidecars. Scalar root vectors and energies are not part of the contract.