Numerical stabilization settings in ALF. These apply to every simulation regardless of the update scheme.
Reference: The stabilization algorithm is described in the documentation (PDF), Section on numerical stabilization.
Parameters¶
Nwrap¶
Set in the &VAR_QMC namelist in the parameters file.
| Parameter | Default | Description |
|---|---|---|
Nwrap | 10 (in pyALF/examples; 0 internally if not set) | Number of imaginary-time slices between QR stabilizations |
The Green’s function is recomputed from scratch after every Nwrap × Dtau interval of imaginary time. The total number of stabilization checkpoints is Ltrot / Nwrap (rounded up if Ltrot is not evenly divisible).
Stabilization Scheme¶
Set at compile time via configure.sh:
source configure.sh GNU noMPI STAB3 # or STAB1, STAB2, LOG| Scheme | Flag | Description |
|---|---|---|
| Default | (none) | Standard stabilization — generally works well |
| STAB1 | -DSTAB1 | Older UDV decomposition |
| STAB2 | -DSTAB2 | UDV with additional normalizations |
| STAB3 | -DSTAB3 | Newest: separates large and small scales |
| LOG | -DSTABLOG | Logarithmic storage of internal scales — extends accessible parameter ranges |
Guidelines¶
Choosing Nwrap¶
Smaller
Nwrap= more stable but slower. Each stabilization costs a full Green’s function recomputation.Larger
Nwrap= faster but risks numerical errors. The propagated Green’s function drifts further from the exact value between stabilizations.Nwrap = 10is a good default for moderate interaction strengths and typicalDtauvalues.Reduce
Nwrap(e.g., to 5 or even 1) when:Working at strong coupling (large
ham_U)Using large
DtauThe
infofile reports poor precisionYou see the error message “Try with smaller Nwrap or dtau”
Nwrapmust be ≥ 1. Setting it to 0 is not valid.
Choosing a Stabilization Scheme¶
Start with the default (no STAB flag). It is fast and works well for most problems.
Use
LOGwhen you need to reach large (low temperature) or strong interactions. It solves NaN issues by storing internal scales in logarithmic form, extending the accessible parameter range at some computational overhead.STAB1 and STAB2 are older schemes kept for backward compatibility. STAB1 uses UDV decompositions; STAB2 adds additional normalizations. They are generally not recommended for new simulations.
STAB3 separates large and small scales explicitly. It can be useful for specific problems but is not the default.
Interaction with Dtau¶
Nwrap and Dtau together determine the imaginary-time interval between stabilizations: . If you reduce Dtau (for Trotter error reasons), you can often afford a proportionally larger Nwrap while maintaining the same stability.
Diagnostics¶
The info file reports the precision of the Green’s function — the maximum deviation between the propagated and freshly computed Green’s function at stabilization checkpoints. Values should be small (e.g., ). If the precision is poor:
Reduce
NwrapReduce
DtauSwitch to
LOGstabilization
If the deviation exceeds 10, ALF prints the error: 'Try with smaller Nwrap or dtau.'
Known Pitfalls¶
Nwrap too large for strong coupling. At large interaction strengths, scales separate rapidly in imaginary time. The default
Nwrap = 10may be too aggressive.Changing stabilization scheme requires recompilation. The scheme is set via preprocessor flags, not at runtime.
Ltrot not divisible by Nwrap. This is handled (the last interval is shorter), but can lead to slightly uneven stabilization. Choose
DtauandBetasuch thatLtrot = Beta/Dtauis a nice multiple ofNwrapwhen possible.