Floquet Truncation
With floquet=true, the runtime keeps the eigensolver's extended-zone energies
and assigns a separate quasienergy-aware cost to each state. The generic NRG
truncation controls operate on that cost.
Shell Units
Let
For a normally rescaled calculation, \(s_N\) is the current shell energy scale.
With absolute=true, \(s_N=1\). The frequency used alongside the diagonalized
shell energies is
Here \(\Omega\) is the physical input value from [extra] in bandwidth units.
Recalculated Mode Operator
Before selecting retained states, the runtime recalculates the singlet operator \(\hat M\) in the new shell eigenbasis. For state \((I,i)\), it reads
The seed m blocks define the spectral interval used for these expectation
values. Mode mixing can make \(\mu_{Ii}\) nonintegral.
Mean Energy And Ranking Criterion
Let \(e_{Ii}\) be the raw extended-zone shell energy. Define
and
Equivalently,
Multiplication by \(s_N\) gives the same expression in physical energy units:
Replica Dependence
For a replica shift by integer \(\ell\),
The mean-energy part is invariant:
while the cost becomes
The runtime therefore preserves the extended-zone energy and uses the mode expectation separately when ranking replicas.
Ordering And Reference Shifts
Across all invariant sectors, define
Within each sector, states and eigenvector rows are permuted into ascending criterion order. The shifted values used after preparation are
The raw energy array remains available in extended-zone form; corrected-energy and criterion arrays carry their respective reference shifts.
Retained-State Selection
truncate_prepare(...) collects \(\widetilde c\) from every invariant sector
and applies the existing global controls:
- with
keepenergy<=0,keepsupplies the fixed retained-state count; - with
keepenergy>0, the shell cutoff is \(c_{\mathrm{cut}}=\texttt{keepenergy}\,\texttt{step.unscale()}\), and the existing selection includes one state beyond the counted cutoff subject tokeepminandkeep; keepallselects all computed states on its configured iterations;safeguardandsafeguardmaxcan extend the boundary across a nearby criterion cluster;- on the final CFS/FDM shell, all computed states are retained unless
lastalloverride=true.
The resulting global criterion threshold determines the retained count in each
sector except for that final-shell override. truncate_perform() then applies
those counts.
Worked Criterion Example
Consider three states with
Their mode energies, mean energies, and costs are
Thus \(e_{\min}=4\) and \(c_{\min}=7\). Criterion ordering produces shifted energy and cost arrays
This is the synthetic case covered by the core unit test.
Runtime Sequence
For each newly diagonalized NRG shell, the sequence is:
- establish the Floquet energy reference;
- resolve small eigenspectrum splittings;
- split eigenvectors into ancestor blocks without discarding them;
- recalculate
min the shell eigenbasis; - calculate and assign the criteria;
- order states by criterion and apply the energy and criterion shifts;
- call the generic
truncate_prepare(...)path; - later apply the selected counts through
truncate_perform().
Operator recalculation, measurements, state archives, and optional later phases continue through the normal iteration flow after criterion preparation.
Diagnostics
With dumpenergies=true, energies.nrg contains raw energies. dumpcorr=true
adds corrected energies, and dumpcrit=true adds shifted criterion values. The
seed block retains the criterion present in generated input; iterative blocks
contain the criterion prepared by the runtime.
Log letters 0 through 4 expose progressively more Floquet preparation data,
including the scaled frequency, mode diagonal, per-state criterion, physical
scaling, and prepared eigenspectrum report.