Skip to content

Fix the pyrochlore Kondo coupling and unused-parameter checks in FCOrtho - #65

Open
aoymt wants to merge 2 commits into
developfrom
fix/c-lattice-couplings
Open

Fix the pyrochlore Kondo coupling and unused-parameter checks in FCOrtho#65
aoymt wants to merge 2 commits into
developfrom
fix/c-lattice-couplings

Conversation

@aoymt

@aoymt aoymt commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

This PR fixes two Standard-mode generator bugs found during a systematic
per-lattice review of the generated Hamiltonians (cross-checked against
the Python port). Both are confirmed against the full base-mode
integration suite (94/94 tests pass before and after; the suite contains
no pyrochlore/fcc Standard-mode cases, so no reference files change in
this repository).

Fixes

  1. Pyrochlore: the Kondo exchange coupled only the sublattice-3
    itinerant site
    (199095c)

    The Kondo loop in StdFace_Pyrochlore passed isite + 3 as the
    itinerant-site index:

    for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) {
      StdFace_GeneralJ(StdI, StdI->J, 1, StdI->S2, isite + 3, jsite + isiteUC);
    

    so per unit cell only the sublattice-3 itinerant site was coupled —
    to all four local spins — while the itinerant sites on sublattices
    0–2 got no Kondo coupling at all. Every other multi-site lattice
    (kagome, honeycomb) pairs the two species sublattice by sublattice,
    and the standard Kondo-lattice model couples each itinerant site to
    the local spin at the same site, so this looks like a typo for
    isite + isiteUC; this PR changes it to exactly that.

    The number of generated terms is unchanged (NsiteUC pairs per
    cell), so the nintrMax estimate still holds.

    Behavior change: for model = "Kondo" / "KondoGC" on
    lattice = "pyrochlore", the site pairs written to
    coulombinter.def / exchange.def / hund.def change from
    (7,0) (7,1) (7,2) (7,3)-style rows to (4,0) (5,1) (6,2) (7,3)
    (per cell). Existing pyrochlore Kondo results produced by Standard
    mode were computed for the unintended Hamiltonian. Suggest a
    release-note entry.

  2. FCOrtho: accepted-but-unwired interaction parameters are now
    rejected
    (01c8093)

    The fcc/face-centered-orthorhombic lattice has no third-neighbor
    bonds (all couplings wire the 0–2 and 0'–2' families only, and
    nintrMax counts 0 for the double-prime family), yet several
    double-prime parameters were accepted and then silently dropped:

    • fermion branch: t''/t0''t2'' and V''/V0''V2'' were
      neither consumed by StdFace_InputHopp/StdFace_InputCoulombV
      nor rejected by StdFace_NotUsed_*; J0''/J1''/J2'' were
      likewise missing from the NotUsed_J list (only the scalar J''
      was declared).
    • spin branch: J0''/J1''/J2'' were read and echoed to
      stdout via StdFace_InputSpinNN as if consumed
      , but never wired
      to any bond; the NotUsed list stopped at V, V0, V1, V',
      omitting V2, V0'V2' and the whole double-prime t/V family.

    All of these are now declared not-used, following the complete
    declaration style of TriangularLattice.c (where the double-prime
    family actually exists and is either wired or rejected per model).

    Behavior change: inputs that specified one of these parameters
    were silently ignored before (or echoed and then ignored, in the
    spin-model J'' case) and now abort with the standard
    unused-parameter error. Generated definition files are unchanged.

Notes for reviewers

  • Same review effort as the earlier Standard-mode checks PR
    (fix/c-standard-mode-checks); like that PR, this branch is based on
    develop and intentionally touches only src/.
  • The base-mode integration suite passes 94/94 both before and after;
    it has no pyrochlore or fcc Standard-mode cases, so no reference
    files change here. (Downstream reference suites that do cover
    pyrochlore Kondo need the three .def files above regenerated; the
    Python development line has already done so.)
  • Fix 1 verified by hand with the dry binaries: a 1×1×1 pyrochlore
    Kondo run now emits NHund/NExchange = 4 with pairs
    (4,0) (5,1) (6,2) (7,3); fix 2 verified by confirming V'',
    t'' and J0'' inputs on lattice = "fcc" abort with the
    standard message while a clean run is byte-identical.

🤖 Generated with Claude Code

aoymt and others added 2 commits August 31, 2026 09:35
…ondo

The Kondo exchange loop passed isite + 3 as the itinerant-site index,
so only the sublattice-3 itinerant site was coupled, to all four local
spins, while sublattices 0-2 got no Kondo coupling at all.  Every other
multi-site lattice (Kagome, Honeycomb) pairs sublattice-by-sublattice;
use isite + isiteUC to do the same.  The number of generated terms is
unchanged (NsiteUC pairs per cell), so the nintrMax estimate still holds.

Note: this changes the generated exchange.def/hund.def for Kondo models
on the pyrochlore lattice.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
FCOrtho has no third-neighbor bonds (all couplings wire J/t/V 0-2 and
0'-2' only, and the nintrMax estimate counts 0 for the double-prime
family), yet several double-prime parameters were accepted and then
silently dropped:

- fermion branch: t''/t0''-t2'' and V''/V0''-V2'' were neither consumed
  by InputHopp/InputCoulombV nor rejected by NotUsed; J0''/J1''/J2''
  were likewise missing from the NotUsed_J list (only the scalar J''
  was declared).
- spin branch: J0''/J1''/J2'' were read and echoed via InputSpinNN but
  never wired to any bond; the NotUsed list stopped at V, V0, V1, V',
  omitting V2, V0'-V2' and the whole double-prime t/V family.

Declare all of them NotUsed, following the complete declaration style
of TriangularLattice.  Inputs that used to be silently ignored (or
echoed as if consumed) now stop with the usual "SPECIFIED but will
NOT be USED" error.  Output files are unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant