Parameter Reference
NRG Ljubljana reads a file named param from the current working directory.
The same file is consumed in two stages:
nrginitreads model, discretization, and Wilson-chain settings and writesdata.nrgreads runtime, algorithm, and output settings and consumesdata.
This page is the user-facing reference for the current release. Parameters are case-sensitive. Defaults in the tables are the values used when a key is absent, except where an effective default is described separately.
Portable File Syntax
Use this syntax for files that must be accepted by both nrginit and nrg:
[param]
# Whole-line comments begin with #.
symtype=QS
Lambda=2.0
keep=100
[extra]
# Model-specific settings go here.
- Put one
key=valueassignment on each line. - Block names and keys are case-sensitive.
- Leading and trailing ASCII spaces around a key or value are ignored. Do not
use tabs: the
nrginitparser does not strip them. - Blank lines and lines whose first character after stripping ASCII spaces is
#are ignored. Tab-indented comments are not portable. - Inline comments are not supported. For example,
T=0.1 # kelvinis not a valid numeric assignment. - Do not quote strings. Quotes become part of the value.
- Do not repeat a key. The C++ parser rejects duplicates, while the Mathematica parser can overwrite them.
- Boolean values are case-insensitive and accept
yes,true, or1andno,false, or0. - List-valued parameters such as
opsandspecduse whitespace-separated tokens unless their entry below states otherwise.
An nrginit value beginning with ! is evaluated as a Mathematica expression.
The perturb parameter and advanced hook files also execute Mathematica code
without that prefix. Use these features only with trusted input. They are not
part of the portable literal syntax recommended for reproducible runs.
Ownership And Diagnostics
Settings such as model, band, Nmax, Tmin, U, and Gamma are read by
nrginit but are not runtime parameters. When these keys are in [param],
nrg prints them under Unused settings; values in [extra] are instead
printed under Extra params. The unused list is expected for documented
initializer-only keys, but it is also where spelling mistakes appear, so review
it on every run.
Several settings are read by both stages. Regenerate data after changing any
of these generation-locked values:
symtype, Lambda, z, discretization, bandrescale, polarized,
pol2x2, rungs, tri, Ninit, floquet, ops, and
data_has_rescaled_energies.
Nmax is intentionally different: nrginit stores the resulting chain length
in data, and nrg obtains it from that file. When Tmin_ratio is used, T
and Tmin_ratio also determine that generated chain length.
Physical energies, temperatures, and frequencies are normally expressed in
units of the half-bandwidth D, with k_B=1. keepenergy is a dimensionless
shell cutoff. Other degeneracy and patching thresholds act in the current
eigenspectrum convention: shell-rescaled units normally and unscaled physical
units when absolute=true.
Initializer Parameters
These settings define the model and the data file generated by nrginit.
Shared settings also appear in the runtime tables because nrg validates or
uses them again.
Model And Initialization
| Parameter | Type | Default | Meaning |
|---|---|---|---|
symtype |
string | required | Symmetry implementation. It must also be available in the selected build. |
model |
string | SIAM |
Built-in model name, or a Mathematica file ending in .m. |
variant |
string | empty | Model-specific variant selector. |
options |
string list | empty | Advanced initializer options. See Initializer options. |
perturb |
Mathematica expression | empty | Expression added to the Hamiltonian after its normal check; this executes without a leading !. |
ops |
string list | empty | Operators to encode in data; names are sorted by nrginit. |
U |
number | 0.1 |
Common model interaction. [extra] U takes precedence. |
Gamma |
number | 0.1 |
Common hybridization strength. [extra] Gamma takes precedence. |
delta |
number | 0 |
Common level-energy parameter. [extra] delta takes precedence. |
t |
number | 0 |
Common hopping parameter. [extra] t takes precedence. |
spinless |
boolean | false |
Use the spinless initializer basis where supported. |
checkHc |
boolean | true |
Check the Hamiltonian before perturb is added; it does not validate the final perturbation. |
mmadebug |
integer | 1 |
Mathematica-side diagnostic verbosity. |
readdir |
path | . |
First directory searched for saved basis, Hamiltonian, and operator expressions; .. is a fallback. |
writedir |
path | empty | Prefix for saved Mathematica expressions; it does not relocate data or mmalog. |
Recognized built-in symmetry names are:
QS QST QSTZ QSZTZ QJ ISO ISO2 QSZ ISOLR ISO2LR QSLR QSC3
QSZLR DBLQSZ DBLSU2 DBLISOSZ SU2 U1 SPSU2 SPU1 SPU1LR
SPSU2LR SPSU2C3 SPSU2T SL SL3 P PP NONE ISOSZ ISOSZLR
Builds made without the extended symmetry sets support only a subset. Complex
data is required by the complex-only implementations.
Discretization And Wilson Chain
| Parameter | Type | Default | Meaning |
|---|---|---|---|
Lambda |
number | 2.0 |
Logarithmic discretization parameter; must be greater than 1. |
z |
number | 1.0 |
Twist of the logarithmic mesh. |
band |
string | flat |
Band construction method. See the values below. |
bandrescale |
number | 1 |
Support and energy rescaling factor. |
discretization |
string | Z |
Y, C, or Z; only the first uppercase character is used. |
polarized |
boolean | false |
Generate spin-dependent coefficients; supported by QSZ, U1, SPU1, P, PP, and NONE. |
pol2x2 |
boolean | false |
Generate a full spin-space 2x2 Wilson chain; supported with U1. |
rungs |
boolean | false |
Include channel-mixing terms for supported two-channel QS and QSZ calculations. |
Ninit |
non-negative integer | 0 |
Highest Wilson orbital included in the initial Hamiltonian. |
Nmax |
positive integer | required unless derived | Requested chain length. It is mutually exclusive with an explicit Tmin. |
Tmin |
number | unset | Derive Nmax from the lowest retained energy scale. |
Tmin_ratio |
number | unset | If positive and T is also explicitly present and positive, set a provisional Tmin=T*Tmin_ratio; an explicit Tmin takes precedence. |
tri |
string | old |
Tridiagonalization implementation. |
wilsonchain |
string | legacy |
Coefficient-table interface. matrix is an experimental initializer output not consumed by a normal build. |
prec |
integer | method-dependent | Mathematica precision used for tridiagonalization. |
preccpp |
non-negative integer | 2000 |
C++ tridiagonalization precision when tri=cpp. |
nrxi |
integer | -1 |
Number of discretization intervals; a negative value follows Nmax, and the resolved value must be in 0..998. |
mMAX |
integer | derived | Number of Lanczos input values; normally max(80, 2*nrxi) and constrained to 1..998. |
dos |
path | Delta.dat |
Tabulated density of states for methods that require one. |
xmax |
number | 30 |
Largest argument used by the asymode and adapt solver tables. |
solpath |
path | .. |
Directory containing FSOL* and GSOL* files. |
floquet |
boolean | false |
Generate input for Floquet quasi-energies; runtime use also requires [extra] Omega and ops=m. |
data_has_rescaled_energies |
boolean | true |
Compatibility switch for the seed-energy convention in data. |
Recognized tri values are old, sc, sc2, orth, cpp, none,
nambu, manual, manual_nambu, and manual_nambu_new. Manual methods need
coefficient files in the working directory. none intentionally emits no
coefficient table and is only useful for an external hand-off; its direct
data output is not runnable by the normal runtime. nambu is currently a
zero-filled placeholder rather than a production tridiagonalization method.
Built-in band branches include flat, cosine, dmft, nambu, manual,
manual_V, asymode, adapt, and flat_with_bulk_field. A value ending in
.m loads custom Mathematica code. Non-flat branches can require additional
files and parameters such as hardgap, boundary, gap, shift0, bcsgap,
bcsgap1, bcsgap2, bcsgap3, globalB, globalh, or bulkh; consult the
documentation supplied with that band implementation before using it.
The nambu band branch is currently a placeholder. asymode, adapt, and
flat_with_bulk_field require discretization=Z; the bulk-field branch also
requires polarized=true and SPU1 or QSZ. band=dmft requires a [dmft]
block containing either gamma=<value> or run=<path> and can additionally
use [dmft] discchecksum=<value>. Normal DMFT chains require
discretization=Y or C, and the superconducting DMFT path requires Y.
polarized=true and pol2x2=true are mutually exclusive.
Advanced Initializer Hooks
These settings expose implementation and Mathematica extension points rather than ordinary physical parameters:
| Parameter | Type | Default | Meaning |
|---|---|---|---|
disccheck |
presence flag | absent | Print Wilson-coefficient checks when the key is present. |
Hcsimpl |
Mathematica file | empty | Load code while simplifying/checking the conduction Hamiltonian. |
hook_basis |
Mathematica file | empty | Load code during basis construction. |
hook_pre_lanczosinit |
Mathematica file | empty | Load code before Wilson-chain initialization. |
hook_post_lanczosinit |
Mathematica file | empty | Load code after Wilson-chain initialization. |
hook_bcs |
Mathematica file | empty | Load code while applying superconducting coefficient changes. |
Hook files execute in the initializer process and must be treated as trusted code.
Initializer Options
options is a whitespace-separated advanced token list. Tokens used by the
bundled initializer include:
PARAMPRE WRITE READBASIS READHAM READOPS EPSCLIP TEMPLATE
LRTRICK COMPLEX MPVCSLOW GENERATE_TEMPLATE GENERATE_TEMPLATE_ALL
GENERATE_TEMPLATE_F LRSPIN NOGSSHIFT CHOP NOSCHUR
Some models accept valued tokens such as Nph=value. Options affect generated
Mathematica artifacts and are not a general replacement for named parameters.
The [extra] Block
[extra] contains model-specific values. Built-in models and custom .m
models can introduce arbitrary keys, so there is no finite global table for
this block. Every entry becomes available to Mathematica model code. The C++
runtime normally preserves these as strings; the built-in exception is
floquet=true, which requires Omega in [extra] and an operator named m
in generated input (ops=m).
For reproducibility, document the model name and all [extra] keys alongside
published results. Do not assume that an unknown [extra] key is validated.
Runtime Parameters
The following tables contain all active param<T> settings read by nrg.
An empty string default means that the feature or list is disabled.
Chain, Iteration, Truncation, And Temperature
| Parameter | Type | Default | Meaning |
|---|---|---|---|
symtype |
string | empty, but required | Symmetry name; it must match the header in data. |
Lambda |
number | 2.0 |
Logarithmic discretization; must be greater than 1. |
discretization |
string | Z |
Y, C, or Z; legacy names beginning with that uppercase character are accepted. |
z |
number | 1.0 |
Logarithmic-mesh twist. |
bandrescale |
number | 1.0 |
Band and energy rescaling factor. |
polarized |
boolean | false |
Use spin-dependent Wilson coefficients. |
pol2x2 |
boolean | false |
Use the full 2x2 spin structure. |
rungs |
boolean | false |
Use channel-mixing Wilson-chain terms. |
tri |
string | old |
Coefficient source; exact cpp selects C++ tridiagonalization. |
preccpp |
non-negative integer | 2000 |
Precision used by C++ tridiagonalization. |
diag |
string | default |
Eigensolver. See Eigensolvers and backends. |
saveram |
boolean | false |
Request minimal documented LAPACK workspace sizes. |
mult |
string | blas |
Matrix multiplication backend, blas or cuda; case-insensitive. |
diagratio |
number | 1.0 |
Fraction of eigenpairs requested from partial eigensolvers; range (0,1]. |
restart |
boolean | true |
Retry partial diagonalization when too few states were found. |
restartfactor |
number | 2.0 |
Multiplier applied to diagratio on retry; values must exceed 1 for a failed partial solve to make progress. |
keep |
non-negative integer | 100 |
Maximum retained states; must be greater than 1. |
keepenergy |
number | -1.0 |
Positive values enable a shell-rescaled energy cutoff; retention extends through the first state above the cutoff, subject to keep. |
keepmin |
non-negative integer | 0 |
Minimum retained states with energy-cutoff truncation; cannot exceed keep. |
keepall |
string | empty | even, odd, or comma-separated iteration numbers to retain completely. |
safeguard |
number | 1e-5 |
Near-degeneracy tolerance in current eigenspectrum units; non-positive disables it. |
safeguardmax |
non-negative integer | 200 |
Maximum extra states retained by safeguard. |
fixeps |
number | 1e-15 |
Threshold in current eigenspectrum units for correcting floating-point eigenvalue splitting. |
floquet |
boolean | false |
Interpret energies as Floquet quasi-energies; requires [extra] Omega and an operator named m in data. |
T |
number | 0.001 |
Physical temperature; must be positive. |
betabar |
number | 1.0 |
Effective inverse-temperature factor for shell thermodynamics. |
Operators And Algorithms
| Parameter | Type | Default | Meaning |
|---|---|---|---|
ops |
string list | empty | Operators requested during input generation; retained for configuration reporting at runtime. |
specs |
string list | empty | Singlet correlator pairs. |
specd |
string list | empty | Doublet spectral-function pairs. |
spect |
string list | empty | Triplet response pairs. |
specq |
string list | empty | Quadruplet spectral-function pairs. |
specot |
string list | empty | Orbital-triplet response pairs. |
specgt |
string list | empty | Operator pairs for temperature-dependent conductance. |
speci1t |
string list | empty | Operator pairs for first transport moments. |
speci2t |
string list | empty | Operator pairs for second transport moments. |
gtp |
number | 0.7 |
Parameter p used for conductance and transport curves. |
specchit |
string list | empty | Operator pairs for k_B*T*chi(T), emitted with the chit prefix. |
chitp |
number | 1.0 |
Parameter p used for susceptibility. |
chitp_ratio |
number | -999 |
If positive, overrides chitp with chitp_ratio/betabar. |
finite |
boolean | false |
Enable the finite-temperature Costi-Hewson-Zlatic algorithm. |
dmnrg |
boolean | false |
Enable DM-NRG real-frequency spectra. |
cfs |
boolean | false |
Enable complete-Fock-space spectra. |
cfsgt |
boolean | false |
Enable CFS greater correlators. |
cfsls |
boolean | false |
Enable CFS lesser correlators. |
fdm |
boolean | false |
Enable full-density-matrix NRG spectra and thermodynamics. |
fdm_cutoff |
number | 1e-16 |
Non-negative shell-weight cutoff for FDM energy moments; only shells with w_n > fdm_cutoff contribute. |
fdmgt |
boolean | false |
Enable FDM greater correlators. |
fdmls |
boolean | false |
Enable FDM lesser correlators. |
fdmexpv |
boolean | false |
Calculate FDM expectation values. |
fdmexpvn |
non-negative integer | 0 |
Iteration at which FDM expectation values are emitted. |
finitemats |
boolean | false |
Enable finite-temperature Matsubara output. |
dmnrgmats |
boolean | false |
Enable DM-NRG Matsubara output. |
fdmmats |
boolean | false |
Enable FDM Matsubara output. |
mats |
non-negative integer | 100 |
Number of Matsubara frequencies. |
dm |
boolean | false |
Internal second-phase/storage switch automatically enabled by algorithms that need density matrices; setting it alone does not prepare one. |
checkrho |
boolean | build-dependent | Check density-matrix trace normalization; default is true in debug and false in release builds. |
Spectrum lists contain whitespace-separated operator pairs. The usual token is
operator1-operator2; polarized variants can add -u or -d. Every named
operator must have been included in the generated data file.
Broadening And Execution Control
| Parameter | Type | Default | Meaning |
|---|---|---|---|
broaden_max |
number | 10 |
Largest positive frequency on the broadening mesh. |
broaden_min |
number | -99 |
Smallest frequency; non-positive selects broaden_min_ratio times the final shell scale. |
broaden_min_ratio |
number | 3.0 |
Multiplier for the automatic broaden_min. |
broaden_ratio |
number | 1.05 |
Ratio of consecutive geometric mesh points; must be finite and greater than 1. |
alpha |
number | 0.3 |
Width of logarithmic-Gaussian broadening; must be positive when used. |
omega0 |
number | -1.0 |
Low-frequency crossover; negative selects omega0_ratio*T, while zero is invalid when broadening is used. |
omega0_ratio |
number | 1.0 |
Multiplier used by the automatic omega0. |
diagth |
integer | 1 |
Threads for the application OpenMP loop over independent diagonalization tasks; ignored without application OpenMP and separate from BLAS threading. |
substeps |
boolean | false |
Enable interleaved diagonalization for supported QS, QSZ, SPSU2, or SPU1 calculations. |
strategy |
string | kept |
Recalculate kept states or all states; CFS/FDM can force all. |
Ninit |
non-negative integer | 0 |
Highest Wilson site included in the seed problem; must be below Nmax from data. |
reim |
boolean | false |
Include imaginary spectral weights in output files. |
clip_tol_imag |
number | 1e-10 |
Non-negative relative tolerance for clipping imaginary values in text output. |
substeps requires the ordinary coefficient structure and is not compatible
with every polarized, rung, or custom-chain configuration. Unsupported
symmetry/backend combinations abort when interleaved recalculation is selected.
Spectral Binning, Patching, And Formatting
| Parameter | Type | Default | Meaning |
|---|---|---|---|
dumpannotated |
non-negative integer | 0 |
Emit at least this many low-energy states per iteration to annotated.dat. |
dumpabs |
boolean | false |
Add the accumulated ground-state energy to diagnostic energies. |
dumpscaled |
boolean | true |
Report diagnostics in shell-energy units rather than bandwidth units. |
dumpEscale |
number | 1.0 |
Final divisor applied to diagnostic energies. |
dumpprecision |
non-negative integer | 8 |
Significant digits in annotated.dat. |
dumpgroups |
boolean | true |
Group degenerate entries in annotated.dat. |
grouptol |
number | 1e-6 |
Degeneracy tolerance in current eigenspectrum units used by diagnostic grouping. |
dumpdiagonal |
non-negative integer | 0 |
Print diagonal singlet matrix elements to standard output. |
reportdiagonal |
non-negative integer | 0 |
Emit this many states per sector to report.nrg. |
reportdiagonallast |
boolean | true |
Limit report.nrg to the final iteration. |
savebins |
boolean | false |
Save unbroadened native binary spectral bins. |
broaden |
boolean | true |
Save broadened real-frequency text spectra. |
emin |
number | -1.0 |
Explicit lower binning limit; non-positive selects a chain-derived limit. |
emax |
number | -1.0 |
Explicit upper binning limit; non-positive selects a chain-derived limit. |
bins |
positive integer | 1000 |
Spectral bins per energy decade; zero is rejected when binning is used. |
accumulation |
number | 0.0 |
Shift logarithmic-mesh accumulation points away from zero. |
linstep |
number | 0 |
Linear bin width near a nonzero accumulation point. |
discard_trim |
number | 1e-16 |
Relative final peak-trimming threshold. |
discard_immediately |
number | 1e-16 |
Relative on-the-fly peak-trimming threshold. |
goodE |
number | 2.0 |
Non-FDM patching window: a shell-scale multiplier normally, or a direct unscaled window with absolute=true. |
NN1 |
boolean | false |
Use N/N+1 rather than N/N+2 patching. |
NN2even |
boolean | true |
Use even iterations for N/N+2 patching. |
NN2avg |
boolean | false |
Average even and odd N/N+2 results. |
NNtanh |
number | 0.0 |
Positive values select a smooth tanh patching window. |
width_td |
integer | 16 |
Minimum column width in td and tdfdm. |
width_custom |
integer | 16 |
Minimum column width in custom and customfdm. |
prec_td |
integer | 10 |
Significant digits in td and tdfdm. |
prec_custom |
integer | 10 |
Significant digits in custom expectation-value output. |
prec_xy |
integer | 10 |
Significant digits in spectral text output. |
resume |
boolean | false |
Intended to scan for saved unitary files, but the current startup order scans before Nmax is loaded and therefore does not recover a prior run. |
dumpabs=true and dumpscaled=true are mutually incompatible. Widths are
minimum padding widths, not fixed field boundaries; parse output as
whitespace-separated text.
Logging, Diagnostics, HDF5, And Compatibility
| Parameter | Type | Default | Meaning |
|---|---|---|---|
log |
string | empty | Character tokens selecting diagnostic logging categories. |
logall |
boolean | false |
Enable every logging category. |
silent |
boolean | false |
Reduce standard-output verbosity. |
done |
boolean | true |
Create DONE after requested phases return. |
calc0 |
boolean | true |
Calculate observables for the seed iteration. |
lastall |
boolean | false |
Keep all last-step states for DM-NRG. |
lastalloverride |
boolean | false |
Prevent CFS/FDM from automatically enabling last-step retention. |
dumpsubspaces |
boolean | false |
Write subspaces.dat. |
dump_f |
boolean | false |
Print irreducible f-operator matrix elements. |
dumpenergies |
boolean | false |
Write all diagonalized energies to energies.nrg. |
dumpcorr |
boolean | false |
Add corrected energies to energies.nrg; requires dumpenergies. |
dumpcrit |
boolean | false |
Add truncation criteria to energies.nrg; requires dumpenergies. |
dumpstates |
boolean | false |
Write energy and available vector diagnostics to states.nrg. |
dumpenergiesunscaled |
boolean | false |
Convert energy/state dumps from shell units to bandwidth units. |
dumpabsenergies |
boolean | false |
Write absolute_energies.dat. |
removefiles |
boolean | true |
Remove temporary phase files as they are consumed. The temporary workdir is still removed after a normal run. |
checksumrules |
boolean | false |
Check operator sum rules. |
absolute |
boolean | false |
Run without the usual NRG energy rescaling; generated input must also use data_has_rescaled_energies=false. |
diag_mode |
string | default |
Scheduling mode: default, MPI, OpenMP, or serial. |
h5raw |
boolean | false |
Enable raw.h5 and, when needed, raw-dm.h5. |
h5all |
boolean | false |
Store HDF5 data at every iteration. |
h5last |
boolean | true |
Store HDF5 data at the final iteration. |
h5ham |
boolean | false |
Include Hamiltonian matrices in HDF5 output. |
h5ops |
boolean | false |
Include iteration operator matrices in HDF5 output; a seed group written by h5all includes operators independently. |
h5vectors |
boolean | false |
Include available iteration eigenspectrum vectors in HDF5 output; a seed group written by h5all can include vectors independently. |
h5U |
boolean | false |
Include block transformation matrices in HDF5 output. |
h5struct |
boolean | false |
Include ancestor/subspace structure in HDF5 output. |
project |
string | empty | Measurement projection. Universal value trivial retains everything; other values are symmetry-specific. |
data_has_rescaled_energies |
boolean | true |
Interpret seed energies using the current rescaled convention; set it to false during generation and runtime for absolute=true. |
Common log combinations are @0 for high-level flow, is for
matrix-construction diagnostics, eAt for diagonalization, and fr for
irreducible operator recalculation. Logging text is diagnostic and not a
machine-readable interface.
Eigensolvers And Backends
diag=default selects dsyevd for real data and zheevd for complex data.
Real-data choices are dsyev, dsyevd, dsyevr, cuda, and cuda_dsyevd.
Complex-data choices are zheev, zheevd, zheevr, cuda, and
cuda_zheevd. CUDA choices require a CUDA-enabled build and a usable device.
diagratio applies to the partial dsyevr and zheevr solvers. CFS and FDM
calculations require diagratio=1.
Effective Defaults And Interactions
Several declared defaults are sentinels rather than literal runtime values:
| Setting | Effective behavior |
|---|---|
broaden_min<=0 |
Use broaden_min_ratio times the final shell scale. |
omega0<0 |
Use omega0_ratio*T. |
emin<=0, emax<=0 |
Derive the binning interval from Wilson-chain scales. |
keepenergy<=0 |
Use fixed-count truncation controlled by keep. |
safeguard<=0 |
Disable extra near-degenerate-state retention. |
NNtanh<=0 |
Use the linear patching window. |
positive chitp_ratio |
Replace chitp with chitp_ratio/betabar. |
| any DM-NRG/CFS/FDM algorithm | Enable dm automatically. |
| CFS or FDM algorithm | Keep all states at the last step unless lastalloverride=true. |
positive Tmin_ratio with explicit positive T and no explicit Tmin |
Regenerate the chain length from T*Tmin_ratio, replacing an explicit Nmax. |
absolute=true |
Use data_has_rescaled_energies=false in both generation and runtime so seed and iterative energies use one convention. |
Validation is partly feature-dependent. For example, mesh and broadening bounds are checked only when spectra are actually produced. An accepted startup configuration can therefore still fail when a selected algorithm first uses one of its parameters.
See Output format reference for the files controlled by the output parameters and Getting started for a complete minimal calculation.