Parameter Reference

NRG Ljubljana reads a file named param from the current working directory. The same file is consumed in two stages:

  1. nrginit reads model, discretization, and Wilson-chain settings and writes data.
  2. nrg reads runtime, algorithm, and output settings and consumes data.

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=value assignment 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 nrginit parser 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 # kelvin is 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, or 1 and no, false, or 0.
  • List-valued parameters such as ops and specd use 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.