Skip to content

Demonstrations et API de reproductibilite

Cette page definit le contrat documentaire des demonstrations QF_solver. Le catalogue contient vingt-huit demonstrations : onze benchmarks mailles, dix cas de qualification cibles, six modeles JSON officiels et un plan grand modele. Les extensions aux variantes de methode restent une etape de feuille de route; elles ne doivent pas etre confondues avec une qualification.

Les labels courts du catalogue (stable, stable_after_reinforced_tests, experimental, research) sont des labels de demonstration. La maturite active d'une combinaison est celle du registry v2 0.2.7 et ne doit pas etre deduite du seul catalogue.

Une entree de demonstration

Le registre qualification/demonstrations.json contient une entree par cas reproductible. Chaque entree relie au minimum :

Champ Role
demo_id Identifiant stable et lisible
family / method Element fini et methode de resolution
maturity stable, stable_after_reinforced_tests, experimental ou research
model Exemple JSON/HDF5 ou generated:BM-* pour un maillage et un setup construits deterministiquement par le benchmark
runner Fonction ou commande publique qui regenere le cas
execution benchmark pour un benchmark maille, qualification_case pour un cas V&V controle, model pour un exemple JSON ou large_plan pour un plan d'infrastructure
case_id Identifiant du cas V&V lorsque execution vaut qualification_case
documentation Page Markdown de formulation et de resultats
requirements / tests Tracabilite vers exigences et tests
references Identifiants REF-* et URL/DOI de la bibliographie
outputs JSON, rapport, PNG, VTU et manifeste attendus
limitations Conditions d'emploi et exclusions explicites

Acces depuis la librairie

L'API publique disponible est :

from qf_solver import list_demonstrations, run_demonstration, run_qualification_case

catalog = list_demonstrations(family="MITC4", method="linear_static")
run = run_demonstration(
    catalog[0].demo_id,
    output_dir="results/demo",
    profile="engineering",
)

# Le profil du manifeste reste fige : cette execution produit une preuve V&V.
case = run_qualification_case("SOV-TET4-STATIC-001", "results/tet4_static")

Une entree benchmark transmet le profil choisi au runner de benchmark. Une entree qualification_case execute le cas avec le profil et les criteres figes dans qualification/campaign.json; l'argument profile de run_demonstration() ne remplace donc jamais le contrat V&V. Une entree model execute un exemple JSON officiel avec le profil demande, puis produit results.json, audit.md, le rapport maillage et un manifeste d'evidence v2. Elle est reservee aux capacites possedant deja une page et des tests V&V, mais qui ne constituent pas un benchmark Gmsh. La demonstration grand modele ne construit pas le modele : elle expose un plan 1M DDL et les prerequis PETSc/MPI. Les autres configurations grand modele seront ajoutees apres leur campagne de verification; une absence du catalogue signifie donc "non enregistre", pas "non implemente" ni "qualifie".

Le descripteur contient les references, la maturite, les tests, les limites et les sorties attendues. L'execution retourne le resultat du runner controle avec son verdict et ses chemins d'artefacts. Le code ne chargera aucune page web pour executer une demonstration. Les solveurs externes seront optionnels, versionnes et signales comme tels dans le manifeste.

Avant publication, la CI appelle DemonstrationCatalog.validate_integrity(). Ce controle ne lance pas les calculs: il refuse une demonstration dont le benchmark ou cas V&V, le modele d'entree ou generateur, la page, le runner, un test, une exigence, une reference ou les sorties minimales sont absents. Les benchmarks exigent benchmark_summary.json et benchmark_manifest.json; les cas V&V exigent qualification_case_summary.json et evidence_manifest.json. Les modeles JSON exigent demonstration_summary.json, results.json et evidence_manifest.json. Le plan grand modele exige large_campaign.json, large_campaign.md et evidence_manifest.json; son verdict PLANNED ou BLOCKED n'est jamais un resultat de resolution. Le controle est volontairement separe de list_demonstrations() afin qu'une installation de la bibliotheque reste utilisable sans outillage de publication documentaire installe.

list_benchmarks() et run_benchmark() restent les interfaces compatibles du catalogue de onze benchmarks mailles existant. Le futur registre transverse pourra les inclure sans changer leur contrat.

Contenu obligatoire d'une page

Chaque page devra expliquer la geometrie et la numerotation, les DDL, le repere local, l'interpolation, le Jacobien, la quadrature, les matrices, les charges, les blocages et le post-traitement. Pour une methode, elle devra ajouter l'equation resolue, les hypotheses matricielles, l'algorithme, le critere d'arret, les residus, la complexite et les modes d'echec.

La page affichera ensuite le modele, le maillage, les blocages, le chargement, la deformee, un tableau de resultats, la convergence, les invariants, la maturite et les limites. Les valeurs seront generees par l'API et associees a un manifeste d'empreintes; elles ne seront pas saisies a la main.

Bibliographie et tracabilite

Les formulations renverront aux entrees REF-* de docs/reference/references.md. Une entree bibliographique devra donner les auteurs, le titre, la revue ou l'editeur, l'annee et un DOI ou une URL stable. Chaque demonstration reliera ensuite cette reference a la formulation, au code, aux tests et aux artefacts de sortie.

Une page ou un cas sans reference, test, runner ou limite ne pourra pas etre publie comme demonstration complete. Une demonstration complete reste une preuve de reproductibilite et de verification; elle ne remplace pas une revue mecanique owner_review ni une qualification externe.