Skip to content

knowledge

Answers questions about a solver: physics, settings, known traps, materials, coupling, and what an error message means.

Group: Find out.

Parameters

Parameter Type Required Default
topic string yes
solver string no ''
physics string no ''
signal string no ''
category string no ''
index boolean no False

What the model reads

The text below is the tool's own description, exactly as the AI model receives it.

Show the full description
Get knowledge about solvers, physics, materials, coupling,
post-mortems, or input formats.

START WITH THE INDEX when you want pitfalls and do not yet know
what to ask for: `knowledge(topic='pitfalls', solver=...,
index=True)` returns a one-screen map — how many entries exist
per physics and per category, and the exact call for each slice.
Then narrow. If you already have an error message, skip the
index and pass it as `signal=` directly.

This is the single entry point for ALL domain knowledge — the
catalog, the pitfall database, AND the post-mortem record
store. Wiring post-mortems through this same tool closes the
self-improvement loop: every prepare_simulation call also
surfaces the relevant post-mortems so the critic-gate can
retrieve them at planning time (Open-FEM-Agent §3.2 / §5
self-correction loop).

Args:
    topic: What you want to know. Options:
        - "physics" — physics-specific knowledge + matching
          post-mortems (needs solver + physics)
        - "pitfalls" — known pitfalls for a solver. Unfiltered
          returns every entry (comprehensive by design). Narrow
          with `signal=` (the error you saw), `physics=`, or
          `category=`; `index=True` maps what exists first. A
          narrowed answer always states how many entries it held
          back and how to get them.
        - "postmortems" — formal post-mortem records under
          data/postmortems/*.json, filtered by solver +
          physics + optional signal pattern. These are the
          audit-trail entries that record WHY each pitfall
          exists; the critic-gate should retrieve them when
          the agent's plan touches the matching (solver,
          physics) area.
        - "materials" — material catalog for a solver
        - "coupling" — cross-solver coupling knowledge
        - "tsi" — thermo-structural interaction patterns
        - "precice" — preCICE comparison
        - "input_guide" — how to write input files for a solver
        - "solver_guidance" — which solver to use for a physics type
        - "hardware" — parallelism, GPU, and hardware acceleration capabilities
        - "overview" — backend-level reference catalog (element
          families, mesh types, solver catalogue, unique
          features). The content under the special "_general"
          knowledge key — for dealii ~5 KB, fenics / ngsolve /
          skfem / kratos / dune ~1-2 KB each. Needs solver=...
        - "cross_backend" — collation pitfalls that surface ONLY
          when porting a problem between two backends (units
          conventions, Tet10/Hex20 node ordering, 'linear
          elastic' semantic drift across backends, Dirichlet
          strong-vs-penalty enforcement, restart file
          incompatibility, MPI launch idioms). Pass the
          optional `physics` arg as a topic filter
          (e.g. 'units', 'mesh', 'bc', 'restart', 'mpi') to
          narrow the response. These pitfalls belong to no
          single backend's catalog because they only fire on
          the delta between two.
        - "install" — how to INSTALL a backend, how openPASO
          finds it, which environment variables matter, the
          first-run failures with the exact message each one
          produces, and — importantly — which claims depend on
          how the backend was COMPILED. Read this when a
          backend reports not_installed, when a run fails
          before any physics happens, or before trusting any
          claim whose signal is an assertion message (deal.II
          compiles those out in Release), a vendor linear
          solver (FEBio without MKL), a complex scalar type
          (dolfinx real vs complex builds) or an accelerator
          style (SPARTA without KOKKOS). Optional solver=...
          narrows it to one backend; with no solver you get
          every backend plus the probe commands. Also
          reachable as "setup", "dependencies", "build_config"
          and "portability".
    solver: Backend name (e.g. 'fenics', 'fourc', 'dealii', 'ngsolve')
    physics: Physics type (e.g. 'poisson', 'linear_elasticity', 'navier_stokes')
    signal: The error text you actually observed. Paste it raw —
        quoting, case and whitespace differences are folded, and
        a paraphrase still matches on distinctive terms. Filters
        `pitfalls`, `postmortems` AND `coupling`. Every result
        states the match mode, so a partial word-overlap is
        labelled weak instead of being presented as an
        identification. No match means the failure mode is not
        catalogued for that backend — it does NOT mean the setup
        is right.
        With topic='coupling' it is free text describing what
        you SAW, ranked against the coupling failure entries.
        Describe the observation, not the mechanism — "it
        converged but the answer is wrong", "the residual
        stops falling and stays there", "the two sides
        stopped agreeing" all route to the right entry. This
        is the fast path when a coupling misbehaves: it
        returns the two or three entries that explain the
        symptom instead of the whole payload.
    category: Narrow pitfalls by kind. In use, commonest first:
        Numerical, API, Input, Syntax, Physics, Integration,
        Performance, Output, Mesh, Validation. Spelling variants
        are folded, so 'numerics' finds 'Numerical'.
    index: For topic='pitfalls', return the map instead of the
        content — entry counts per physics and per category plus
        the call that fetches each. Use it to choose a filter
        before pulling the full set.