-
Notifications
You must be signed in to change notification settings - Fork 0
Stabilization Parameters
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.
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).
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 |
-
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
Dtau - The
infofile reports poor precision - You see the error message "Try with smaller Nwrap or dtau"
- Working at strong coupling (large
-
Nwrapmust be ≥ 1. Setting it to 0 is not valid.
- Start with the default (no STAB flag). It is fast and works well for most problems.
-
Use
LOGwhen you need to reach large$\beta$ (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.
Nwrap and Dtau together determine the imaginary-time interval between stabilizations: Dtau (for Trotter error reasons), you can often afford a proportionally larger Nwrap while maintaining the same stability.
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.,
- Reduce
Nwrap - Reduce
Dtau - Switch to
LOGstabilization
If the deviation exceeds 10, ALF prints the error: 'Try with smaller Nwrap or dtau.'
-
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.