Skip to content

solver: Jacobian-free Newton-Krylov (JFNK / matrix-free GMRES) #22

Description

@milanofthe

Kontext

Für sehr große Systeme ist selbst eine Sparse-LU-Faktorisierung pro dt teuer. Jacobian-Free Newton-Krylov (JFNK) vermeidet die explizite Jacobi-Bildung komplett.

Ziel

Matrix-freier Newton-Solve: das Newton-System (I - dt·a_ii·J)·Δ = r per Krylov-Verfahren (GMRES) lösen, wobei das Matrix-Vektor-Produkt J·v über eine richtungsabhängige Ableitung gebildet wird (Finite-Differenz (f(x+εv)-f(x))/ε oder, wo verfügbar, analytisches forward-AD J·v).

Umfang (Skizze)

  • GMRES-Kern (mit Restart) in src/optim/.
  • J·v-Operator: FD-basiert generisch; optional analytisch über den bereits vorhandenen forward-AD-JVP (vgl. model_jvp im codegen, Laufzeit-Pendant im Tape).
  • Vorkonditionierung (mindestens Jacobi/Blockdiagonal), sonst konvergiert GMRES auf steifen Systemen schlecht.
  • Solver-Knopf zum Umschalten LU vs JFNK (heuristisch ab Systemgröße).

Vorab

Großer Umbau des Newton-Solve-Pfades, Konvergenz hängt stark an der Vorkonditionierung. Erst messen ab welcher Größe LU limitiert. Ausgegliedert aus den "Performance-Punkten"; Geschwister-Epic zu Sparse-AD-Jacobi.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions