Etudes V&V comparees¶
Objectif¶
Chaque nouvel element ou solveur doit etre associe a une etude V&V avant son integration dans un perimetre candidat. Une etude compare QF_solver a une solution analytique, a une publication primaire ou a un solveur de reference. Les solveurs libres CalculiX et Code_Aster sont prioritaires lorsqu'une licence commerciale n'est pas disponible; Abaqus et Ansys peuvent rester des references publiees clairement identifiees. Elle produit obligatoirement un rapport Markdown, des resultats machine-readable, des empreintes SHA-256 et les deformees utilisees pour la revue.
Le format v1 compare des grandeurs scalaires choisies aux memes points et avec les memes conventions : deplacements, energies, reactions, contraintes ou frequences. La comparaison champ a champ avec projection entre maillages dissemblables n'est pas encore implementee. Les PNG et VTU permettent donc la revue visuelle, tandis que les criteres automatiques portent sur les grandeurs normalisees declarees.
Organisation d'une etude¶
VNV-TET4-CANTILEVER-001/
study.json
results/
h1_qf.json
h1_qf_deformation.png
h1_qf_deformation.vtu
h2_qf.json
h3_qf.json
references/
h1_abaqus.json
h1_abaqus.inp
h1_abaqus_deformation.png
h1_abaqus_deformation.vtu
h2_abaqus.json
h3_abaqus.json
Les modeles controles sont disponibles dans
qualification/vnv/templates/. Les schemas documentaires se trouvent dans
qualification/vnv/schema/.
Definition study.json¶
Le fichier d'etude est l'autorite pour le cas, les maillages et les seuils. Les niveaux sont ranges du plus grossier au plus fin avec une taille caracteristique strictement decroissante.
| Groupe | Role |
|---|---|
study_id, title, scope |
Identite stable et perimetre de qualification |
subject |
Element ou methode evaluee et maturite revendiquee |
author, validation |
Responsabilites, decision et nature de la revue |
reference |
Solveur, version, manuel, revision et cas de reference |
quantities |
Grandeurs, metrique d'erreur, unite implicite interdite et seuil |
levels |
Taille h et paire de resultats normalises par maillage |
convergence |
Monotonie, ordre minimal et erreur finale admissible |
acceptance |
Exigence de deformees sur aucun, le dernier ou tous les maillages |
Pour une grandeur $q$, l'erreur absolue et l'erreur relative sont
$$ e_a = |q_{QF}-q_{ref}|, \qquad e_r = \frac{|q_{QF}-q_{ref}|} {\max(|q_{ref}|,q_{floor})}. $$
L'ordre observe est estime par regression lineaire de $\log(e)$ sur $\log(h)$. Au moins trois niveaux sont imposes lorsqu'un critere de convergence est declare.
Resultat normalise¶
QF_solver et le solveur de reference utilisent le meme contrat :
{
"schema_version": 1,
"case_id": "VNV-TET4-CANTILEVER-001",
"producer": {
"name": "Abaqus",
"version": "2024",
"run_id": "ABAQUS-H1-20260713"
},
"units_system": "SI",
"mesh": {
"nodes": 1000,
"elements": 4200,
"dofs": 3000,
"characteristic_size": 0.2
},
"quantities": {
"tip_uz": {"value": -0.00125, "unit": "m"},
"strain_energy": {"value": 12.4, "unit": "J"},
"max_von_mises": {"value": 205000000.0, "unit": "Pa"}
},
"diagnostics": {"source_job_status": "COMPLETED"},
"visualization": {
"deformation_scale": 100.0,
"field": "displacement_magnitude",
"view": "isometric_xyz",
"undeformed_overlay": true
},
"artifacts": {
"deformation_png": "h1_abaqus_deformation.png",
"deformation_vtu": "h1_abaqus_deformation.vtu",
"source_input": "h1_abaqus.inp"
}
}
Les identifiants de grandeur et les unites doivent etre strictement identiques
dans les deux sorties. Une conversion d'unites manuelle non tracee est
interdite. Le run_id, la version du solveur et le fichier source commercial
doivent permettre de retrouver le calcul d'origine.
Correlation avec un solveur externe¶
- Utiliser exactement la meme geometrie, le meme maillage ou une serie de maillages dont la difference est expliquee.
- Verifier la famille elementaire, l'integration, les materiaux, les charges, les blocages et le systeme d'unites.
- Extraire les valeurs avec un script reproductible depuis les resultats CalculiX, Code_Aster, Abaqus ou Ansys; ne pas recopier une valeur lue a l'ecran.
- Enregistrer le fichier d'entree, la version du solveur, le statut du job, les criteres de convergence et les points d'extraction.
- Exporter une vue de la deformee avec facteur d'amplification, legende, chargements et conditions aux limites, puis un champ VTU lorsque possible.
- Remplir un
normalized_reference_result.jsonpar niveau de maillage.
Le dossier doit distinguer un resultat effectivement calcule d'une valeur publiee. Une table Abaqus ou NAFEMS peut constituer une reference primaire, mais ne doit jamais etre etiquetee comme une execution locale. Les manuels commerciaux sont soumis a licence; le rapport cite leur version et leur section sans recopier de contenu protege dans le depot.
Chaine de preuve recommandee¶
Pour les elements et solveurs critiques, la cible est :
QF_solver <-> solution analytique <-> benchmark publie <-> solveur libre independant
Lorsque les outils le permettent, CalculiX et Code_Aster sont tous deux executes. Ils ne sont pas fusionnes en une reference unique : chaque solveur possede son entree, sa version, ses conventions, ses resultats normalises et son verdict. Une divergence entre les deux fait l'objet d'une analyse avant acceptation du scope.
Le cas VNV-MITC4-HARMONIC-CODEASTER13H-DKQ-007 applique cette regle au
benchmark NAFEMS 13H. Code_Aster 18.1.0 est execute localement sur le meme
maillage 8x8. Les ecarts Code_Aster/QF_solver restent inferieurs a 5 %
sur la frequence de pic, le deplacement central et S11 de face. La
formulation DKQ Kirchhoff et la reconstruction de contrainte depuis les
rotations complexes sont explicitement distinguees du MITC4 Reissner-Mindlin.
Execution¶
qf-solver vnv-compare `
--study .\VNV-TET4-CANTILEVER-001\study.json `
--output .\results\VNV-TET4-CANTILEVER-001
Etude pre-remplie depuis le benchmark TET4¶
Le benchmark controle BM-SOL-CANTILEVER-001 contient deja six maillages
TET4, les VTU et la reference analytique de Timoshenko. La commande suivante
creee une etude complete sans recopier les grands resultats JSON bruts :
qf-solver vnv-import-benchmark `
--case BM-SOL-CANTILEVER-001 `
--output .\VNV-TET4-CANTILEVER-ANALYTIC-001
Elle genere six PNG QF_solver et une PNG de la ligne moyenne analytique,
avec le meme facteur d'amplification. La reference analytique est explicitement
identifiee; elle ne remplace ni une comparaison Abaqus/Ansys, ni un champ 3D
de contraintes de reference. Un dossier de sortie deja existant est refuse
par securite; --overwrite doit etre demande explicitement.
Etude de torsion TET4 et sonde fine de contrainte¶
La commande suivante construit et execute l'etude controlee de torsion circulaire :
qf-solver vnv-import-benchmark `
--case BM-SOL-TET4-TORSION-001 `
--output .\VNV-TET4-TORSION-ANALYTIC-001
qf-solver vnv-compare `
--study .\VNV-TET4-TORSION-ANALYTIC-001\study.json `
--output .\results\VNV-TET4-TORSION-ANALYTIC-001 `
--require-approval
Les huit niveaux utilisent le meme maillage pour le champ QF_solver et le
champ analytique de Saint-Venant. Chaque niveau contient deux PNG comparables
et deux VTU. La rotation terminale converge de 34,50 % d'erreur a 3,07 %,
avec un ordre observe de 1,499. Le couple resultant est reproduit a l'arrondi
pres et le verdict automatique est PASS.
Sur h8, l'erreur L2 de contrainte vaut 29,06 %. Une sonde supplementaire
utilise ensuite 105 529 TET4, soit 4,007 fois plus d'elements, et ramene
l'erreur de rotation a 1,242 % et l'erreur globale L2 de contrainte a
18,891 %. Les six controles de la sonde sont en PASS.
La decision Owner est donc accepted pour l'usage engineering interne dans
le domaine borne de l'etude. Le seuil de contrainte est 20 % sur une norme
L2 globale d'un arbre circulaire lisse; il ne qualifie pas un pic ponctuel,
une singularite ou une autre geometrie. Le dossier controle est
VNV-TET4-TORSION-ANALYTIC-001/; STUDY.md et
stress_probe_h9/STRESS_PROBE.md permettent une lecture directe.
La sonde est reproductible sans audit JSON monolithique :
python .\scripts\run_torsion_stress_probe.py `
--output .\VNV-TET4-TORSION-ANALYTIC-001\stress_probe_h9 `
--overwrite
Le sous-dossier commercial_reference/ explique les entrees Abaqus ou Ansys
encore attendues. Aucun resultat commercial n'est simule ou remplace par la
reference analytique.
Pour rendre la decision Owner obligatoire dans une campagne de livraison :
qf-solver vnv-compare --study study.json --output results --require-approval
La commande produit :
| Fichier | Contenu |
|---|---|
comparison.json |
Ecarts, convergence, checks et statut de revue |
study_report.md |
Etude complete lisible et checklist owner_review |
convergence.png |
Courbes d'erreur pour les grandeurs declarees |
inputs/ |
Copie autonome du protocole et des resultats normalises |
artifacts/ |
Copies autonomes des PNG, VTU et sources declarees |
vnv_manifest.json |
Empreintes d'entrees, environnement et revision source |
Revue de Quentin Farinazzo¶
Dans la baseline actuelle, Quentin Farinazzo est a la fois auteur et
validateur mecanique. Le champ mode doit donc rester self_review et le
rapport indique independence: not_independent. Apres lecture complete, la
decision passe de pending a accepted, accepted_with_reservations ou
rejected, avec une date et des commentaires.
Cette auto-revue est recevable comme decision interne engineering. Elle ne doit pas etre presentee comme une revue independante, une certification ou une qualification attribuee par une autorite externe. Toute modification d'une entree ou d'un resultat change son empreinte et impose une nouvelle revue.
Regle d'integration¶
Une fonctionnalite ne peut pas monter en maturite si :
- un critere automatique est en
FAIL; - la convergence demandee n'est pas monotone ou reste sous l'ordre minimal;
- les deformees requises ne sont pas disponibles;
- la decision Owner est
pendingourejectedpour une livraison; - les ecarts, points d'extraction, versions ou unites ne sont pas explicables;
- une anomalie bloquante reste ouverte.