|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This page describes current API-doc quality, warning sources, and the expected standard for new changes.
Function-level documentation coverage is now enforced across:
include/,src/,tests/c/,picurv_cli/ and generators/,tests/.The current repository contract requires every executable function to have an attached descriptive comment/docstring. Public C headers own the rendered Doxygen API contract, including @brief, exact parameter coverage, and documented return values where applicable; implementation comments preserve local intent without duplicating public parameter documentation.
Doxygen warnings are written to:
logs/doxygen.warningsConfigured in docs/Doxyfile via:
WARN_LOGFILE = ../logs/doxygen.warningsRepository consistency checks now also enforce function-level documentation via:
GitHub Actions quality CI also runs the audit explicitly before pytest -q on pull requests and pushes to main.
The audit requires a meaningful explanation, not merely a tag or symbol label: public C declarations must have a specific Doxygen brief, private C helpers must have a specific attached implementation comment, and Python functions must have a specific brief docstring. It scans production code, generators, tests, and documentation tooling.
make build-docs remains useful for rendered output verification, but the audit script is the primary completeness gate for function comments. For a commit-scoped claim that the documentation is current, use make certify-docs. It requires a clean worktree, runs link/API/user-facing-reporting/starter-content/ ingress/configuration/Doxygen gates plus make check-full, and writes an ignored certificate named logs/documentation-certificate-<full-sha>.md. The certificate is valid only through that exact Git commit.
Every rendered Doxygen page also carries a bottom banner linking to the commit whose source tree produced it. The banner identifies the documentation revision; the full certificate records whether the PETSc/MPI runtime gate was included.
For newly added or modified functions and test helpers:
@param,For C test files, concise briefs are acceptable, but they must still say what the test/helper verifies or sets up. Placeholder summaries like Test-local routine. are rejected.
Minimum acceptable quality is interface correctness and discoverability, even when deep theoretical derivation is documented elsewhere.
For nontrivial numerical APIs, the header must also identify the coordinate or field convention, ownership/ghost-state preconditions, and output meaning when those facts determine correct use. A parameter name by itself is not a contract.
Inside a function, comment only the information that code cannot communicate reliably by itself: numerical rationale, invariant or unit convention, distributed-memory/ownership boundary, intentionally surprising early return, or error-handling constraint. Do not add line-by-line narration of obvious assignments or assertions. These in-body explanations are reviewed with the code change; the automated gate enforces the function-level baseline and rejects known stub language.
python3 tests/tooling/audit_function_docs.py,include/*.h + matching src/*.c, plus affected Python helpers/tests),make build-docs) to verify rendered output where needed.Batching by subsystem still keeps review scope manageable, but the audit gate now prevents silent regressions between cleanup passes.
This page describes API Documentation Status within the PICurv workflow. For CFD users, the most reliable reading strategy is to map the page content to a concrete run decision: what is configured, what runtime stage it influences, and which diagnostics should confirm expected behavior.
Treat this page as both a conceptual reference and a runbook. If you are debugging, pair the method/procedure described here with monitor output, generated runtime artifacts under runs/<run_id>/config, and the associated solver/post logs so numerical intent and implementation behavior stay aligned.