| solutions |
String |
|
List of Hamiltonian solution names (per-component prefixes for multi-band H) |
| H |
String |
|
Hamiltonian equations (may contain i/j for complex). References kx/ky/kz fields broadcast from the kgrid each k-iteration. |
| mask |
String |
|
Alagator string on the spatial mesh selecting solve nodes |
| nev |
Int |
-1 |
Number of eigenvalues per k-node. Default is all. |
| half |
Boolean |
0 |
Return half of max eigenvalues per k-node |
| ndisp |
Boolean |
0 |
Negative dispersion (negative meff like) |
| kgrid |
String |
|
Name of the k-grid FieldServer (required) |
| kx |
String |
kx |
Name of the kx field on the kgrid FS; also broadcast onto spatial for H-expression evaluation |
| ky |
String |
ky |
Name of the ky field on the kgrid FS |
| kz |
String |
kz |
Name of the kz field on the kgrid FS |
| wavebase |
String |
|
Basename for kgrid output fields (E and idx). Default: first solutions= entry. |
| k.solver |
String |
full |
Per-k solver chain (+-separated). Recognized stages: full | rqi | ritz | gs. Valid combinations: full | rqi | ritz | ritz+rqi | gs+ritz | gs+ritz+rqi. full = DoAlagator at every k-node. rqi = Rayleigh-quotient iteration warm-started from the previous-k stored wavefunctions. ritz = Rayleigh-Ritz projection on a basis copied from those wavefunctions. gs = B-orthogonal modified Gram-Schmidt on the ritz basis before projection (controls error accumulation across k-points). +rqi appended polishes ritz output via RQI. |
| k.full |
String |
|
k-nodes that get a full solve when k.solver=rqi. Comma list of indices ('0,5,10,15') or 'stride:N' for every Nth node. Default: 0. |
| n.iter |
Int |
-1 |
Maximum RQI iterations per eigenvector at non-full k-nodes. -1 (default) = unlimited (converge to tolerance). |
| track |
String |
proximity |
Sub-band tracking across k: proximity (greedy match by eigenvalue distance to previous k) | none (write in returned order). |
| firm.basis |
Int |
-1 |
k-node index of previously-stored wavefunctions to use as the ritz basis source for EVERY non-full k-node, locking the basis through the sweep. Only meaningful when k.solver includes ritz; ignored for full / rqi modes. -1 (default) = disabled (basis advances with last_full). |
| basis |
Int |
-1 |
k-node index of previously-stored wavefunctions (under the <sols[s]>_b<j>_<n> naming convention from a prior kaschro run) to use as the RQI seed at the FIRST k-node instead of a full solve. Default -1 = disabled (full solve at the first k-node). |
| cutoff |
Float |
0.000000e+00 |
Energy-window width (eV) relative to the per-band extremum across the kgrid (min for ndisp=0/electron, max for ndisp=1/hole). Bands at a given k whose E falls outside the window get IntData index = -1 and are flagged for downstream skip. Default 0 = disabled. |
| interp.skip |
Int |
0 |
Skip every (interp.skip + 1)-th k-node along the kgrid axis and fill in the eigenvalues + wavefunctions via 4-point cubic Lagrange interpolation after the main sweep. 0 (default) computes every node; 1 computes every other (n=0,2,4,...) and interpolates the rest; N skips N nodes between each computed. Currently 1D kgrid only — N-D tensor cubic deferred. Use to speed up kaschro on a fine kgrid where LBTE quadrature wants the dense output but per-node solves are cheap to interpolate from sparse samples. |
| mirror.kgrid |
Int |
0 |
Time-reversal symmetry: when 1, kaschro computes only on the positive half of the kgrid (lexicographic kz>0, with kz=0 tiebreaker on ky then kx) and mirrors the eigenvalues + Idxdata to the negative half via (kx,ky,kz)→(-kx,-ky,-kz). Wavefunctions are stored only at the +half kgrid index; -half Idxdata points at the same +half slot so kcharge reads the same <sol>_b<j>_<n> field. For complex ψ this gives the right |ψ|² (TR-symmetric) but not ψ itself — downstream consumers that need ψ(-k) for matrix elements must apply complex conjugation themselves. Currently 1D kgrid only; N-D tensor mirror deferred. Stacks with interp.skip multiplicatively (skip applies stride within the +half). |
| mirror.mode |
String |
same |
Which band the -half kgrid partner gets written to under mirror.kgrid. 'same' (default): the j-th eigenvalue at -k is written to band j at -half (current behavior — correct for zone-centered bands like LK at Γ or [100] X-valley with kz_dev=0). 'new': output 2·nev bands instead of nev — bands [0, nev) carry the +half values (-half nodes pruned via Idxdata=-1), bands [nev, 2·nev) carry the -half partner values (+half nodes pruned). Use 'new' when the +k and -k partners are physically distinct valleys (e.g., off-zone-center X-valley at kz_dev=±k0/√2) so downstream rate filters can separate them with band.classes=. Wavefunctions for bands [nev, 2·nev) are duplicated from the matching slot of the source band — TR phase / spinor-swap not yet applied (treat FF[j][j+nev]=1 as an upper bound for now). Requires mirror.kgrid=1. |