qf-solver 0.2.0a0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. qf_solver-0.2.0a0/CHANGELOG.md +477 -0
  2. qf_solver-0.2.0a0/CITATION.cff +12 -0
  3. qf_solver-0.2.0a0/LICENSE +199 -0
  4. qf_solver-0.2.0a0/LICENSE-DOCS +16 -0
  5. qf_solver-0.2.0a0/MANIFEST.in +11 -0
  6. qf_solver-0.2.0a0/NOTICE +8 -0
  7. qf_solver-0.2.0a0/PKG-INFO +327 -0
  8. qf_solver-0.2.0a0/README.md +268 -0
  9. qf_solver-0.2.0a0/THIRD_PARTY_LICENSES.md +31 -0
  10. qf_solver-0.2.0a0/examples/beam2_cantilever.json +31 -0
  11. qf_solver-0.2.0a0/examples/frictional_contact_plane.json +32 -0
  12. qf_solver-0.2.0a0/examples/frictionless_contact_plane.json +17 -0
  13. qf_solver-0.2.0a0/examples/frictionless_contact_surface.json +16 -0
  14. qf_solver-0.2.0a0/examples/invalid_inverted_tet4.json +23 -0
  15. qf_solver-0.2.0a0/examples/mitc3_laminate_harmonic.json +30 -0
  16. qf_solver-0.2.0a0/examples/mitc3_modal_cantilever.json +24 -0
  17. qf_solver-0.2.0a0/examples/mitc3_newmark_cantilever.json +34 -0
  18. qf_solver-0.2.0a0/examples/mitc3_shell_static.json +28 -0
  19. qf_solver-0.2.0a0/examples/mitc4_dynamic_multicomponent.json +48 -0
  20. qf_solver-0.2.0a0/examples/mitc4_harmonic_cantilever.json +34 -0
  21. qf_solver-0.2.0a0/examples/mitc4_laminate_static.json +46 -0
  22. qf_solver-0.2.0a0/examples/mitc4_modal_cantilever.json +30 -0
  23. qf_solver-0.2.0a0/examples/mitc4_newmark_cantilever.json +39 -0
  24. qf_solver-0.2.0a0/examples/mitc4_shell_static.json +26 -0
  25. qf_solver-0.2.0a0/examples/rbe2_rigid_arm.json +18 -0
  26. qf_solver-0.2.0a0/examples/spring_mass_oscillator.json +40 -0
  27. qf_solver-0.2.0a0/examples/tet10_orthotropic_newmark.json +57 -0
  28. qf_solver-0.2.0a0/examples/tet10_orthotropic_static.json +37 -0
  29. qf_solver-0.2.0a0/examples/tet10_static.json +35 -0
  30. qf_solver-0.2.0a0/examples/tet4_body_force.json +33 -0
  31. qf_solver-0.2.0a0/examples/tet4_compression.json +33 -0
  32. qf_solver-0.2.0a0/examples/tet4_dynamic_free_vibration.json +29 -0
  33. qf_solver-0.2.0a0/examples/tet4_dynamic_sdof_free_vibration.json +30 -0
  34. qf_solver-0.2.0a0/examples/tet4_dynamic_tabulated_load.json +32 -0
  35. qf_solver-0.2.0a0/examples/tet4_elastoplastic_static.json +35 -0
  36. qf_solver-0.2.0a0/examples/tet4_geometric_nonlinear_static.json +19 -0
  37. qf_solver-0.2.0a0/examples/tet4_harmonic_response.json +24 -0
  38. qf_solver-0.2.0a0/examples/tet4_harmonic_sdof_response.json +25 -0
  39. qf_solver-0.2.0a0/examples/tet4_modal_unit.json +24 -0
  40. qf_solver-0.2.0a0/examples/tet4_nonlinear_static.json +29 -0
  41. qf_solver-0.2.0a0/examples/tet4_orthotropic_modal.json +32 -0
  42. qf_solver-0.2.0a0/examples/tet4_orthotropic_static.json +31 -0
  43. qf_solver-0.2.0a0/examples/tet4_pressure.json +30 -0
  44. qf_solver-0.2.0a0/examples/tet4_static.json +26 -0
  45. qf_solver-0.2.0a0/examples/tet4_transient_dynamic.json +28 -0
  46. qf_solver-0.2.0a0/pyproject.toml +139 -0
  47. qf_solver-0.2.0a0/qualification/benchmarks.json +178 -0
  48. qf_solver-0.2.0a0/qualification/campaign.json +423 -0
  49. qf_solver-0.2.0a0/qualification/demonstrations.json +34 -0
  50. qf_solver-0.2.0a0/qualification/formulas.json +738 -0
  51. qf_solver-0.2.0a0/qualification/requirements.json +708 -0
  52. qf_solver-0.2.0a0/requirements/baseline-large-linux.txt +5 -0
  53. qf_solver-0.2.0a0/requirements/baseline-standard.txt +33 -0
  54. qf_solver-0.2.0a0/setup.cfg +4 -0
  55. qf_solver-0.2.0a0/src/mitc4/__init__.py +19 -0
  56. qf_solver-0.2.0a0/src/mitc4/benchmarks.py +183 -0
  57. qf_solver-0.2.0a0/src/mitc4/cli.py +115 -0
  58. qf_solver-0.2.0a0/src/mitc4/constants.py +11 -0
  59. qf_solver-0.2.0a0/src/mitc4/convergence.py +282 -0
  60. qf_solver-0.2.0a0/src/mitc4/element.py +312 -0
  61. qf_solver-0.2.0a0/src/mitc4/geometry.py +43 -0
  62. qf_solver-0.2.0a0/src/mitc4/locking.py +274 -0
  63. qf_solver-0.2.0a0/src/mitc4/material.py +63 -0
  64. qf_solver-0.2.0a0/src/mitc4/mesh.py +71 -0
  65. qf_solver-0.2.0a0/src/mitc4/model.py +179 -0
  66. qf_solver-0.2.0a0/src/mitc4/verification.py +287 -0
  67. qf_solver-0.2.0a0/src/mitc4/visualization.py +80 -0
  68. qf_solver-0.2.0a0/src/qf_solver.egg-info/PKG-INFO +327 -0
  69. qf_solver-0.2.0a0/src/qf_solver.egg-info/SOURCES.txt +346 -0
  70. qf_solver-0.2.0a0/src/qf_solver.egg-info/dependency_links.txt +1 -0
  71. qf_solver-0.2.0a0/src/qf_solver.egg-info/entry_points.txt +4 -0
  72. qf_solver-0.2.0a0/src/qf_solver.egg-info/requires.txt +43 -0
  73. qf_solver-0.2.0a0/src/qf_solver.egg-info/top_level.txt +2 -0
  74. qf_solver-0.2.0a0/src/solveur/__init__.py +94 -0
  75. qf_solver-0.2.0a0/src/solveur/api/__init__.py +131 -0
  76. qf_solver-0.2.0a0/src/solveur/api/public.py +538 -0
  77. qf_solver-0.2.0a0/src/solveur/benchmarks/__init__.py +16 -0
  78. qf_solver-0.2.0a0/src/solveur/benchmarks/beam.py +169 -0
  79. qf_solver-0.2.0a0/src/solveur/benchmarks/catalog.py +106 -0
  80. qf_solver-0.2.0a0/src/solveur/benchmarks/demonstrations.py +322 -0
  81. qf_solver-0.2.0a0/src/solveur/benchmarks/dynamic.py +158 -0
  82. qf_solver-0.2.0a0/src/solveur/benchmarks/gmsh_factory.py +273 -0
  83. qf_solver-0.2.0a0/src/solveur/benchmarks/nonlinear.py +149 -0
  84. qf_solver-0.2.0a0/src/solveur/benchmarks/runner.py +70 -0
  85. qf_solver-0.2.0a0/src/solveur/benchmarks/shell.py +287 -0
  86. qf_solver-0.2.0a0/src/solveur/benchmarks/solid.py +406 -0
  87. qf_solver-0.2.0a0/src/solveur/benchmarks/solid_extended.py +358 -0
  88. qf_solver-0.2.0a0/src/solveur/benchmarks/support.py +175 -0
  89. qf_solver-0.2.0a0/src/solveur/benchmarks/types.py +48 -0
  90. qf_solver-0.2.0a0/src/solveur/cli/__init__.py +1 -0
  91. qf_solver-0.2.0a0/src/solveur/cli/benchmark.py +35 -0
  92. qf_solver-0.2.0a0/src/solveur/cli/large.py +348 -0
  93. qf_solver-0.2.0a0/src/solveur/cli/main.py +348 -0
  94. qf_solver-0.2.0a0/src/solveur/cli/mesh.py +33 -0
  95. qf_solver-0.2.0a0/src/solveur/cli/standard.py +182 -0
  96. qf_solver-0.2.0a0/src/solveur/cli/verification.py +219 -0
  97. qf_solver-0.2.0a0/src/solveur/cli/vnv.py +39 -0
  98. qf_solver-0.2.0a0/src/solveur/contact/__init__.py +5 -0
  99. qf_solver-0.2.0a0/src/solveur/contact/entities.py +102 -0
  100. qf_solver-0.2.0a0/src/solveur/contact/slip_root.py +338 -0
  101. qf_solver-0.2.0a0/src/solveur/contact/solver.py +700 -0
  102. qf_solver-0.2.0a0/src/solveur/core/__init__.py +1 -0
  103. qf_solver-0.2.0a0/src/solveur/core/analysis.py +89 -0
  104. qf_solver-0.2.0a0/src/solveur/core/assembler.py +306 -0
  105. qf_solver-0.2.0a0/src/solveur/core/audit.py +682 -0
  106. qf_solver-0.2.0a0/src/solveur/core/audit_checks.py +418 -0
  107. qf_solver-0.2.0a0/src/solveur/core/constraints.py +325 -0
  108. qf_solver-0.2.0a0/src/solveur/core/dofs.py +61 -0
  109. qf_solver-0.2.0a0/src/solveur/core/dynamic.py +641 -0
  110. qf_solver-0.2.0a0/src/solveur/core/dynamic_checkpoint.py +101 -0
  111. qf_solver-0.2.0a0/src/solveur/core/dynamic_controls.py +153 -0
  112. qf_solver-0.2.0a0/src/solveur/core/dynamic_history.py +144 -0
  113. qf_solver-0.2.0a0/src/solveur/core/dynamic_reduction.py +361 -0
  114. qf_solver-0.2.0a0/src/solveur/core/errors.py +57 -0
  115. qf_solver-0.2.0a0/src/solveur/core/geometric_nonlinear.py +200 -0
  116. qf_solver-0.2.0a0/src/solveur/core/geometric_nonlinear_controls.py +25 -0
  117. qf_solver-0.2.0a0/src/solveur/core/harmonic.py +210 -0
  118. qf_solver-0.2.0a0/src/solveur/core/linear_methods.py +256 -0
  119. qf_solver-0.2.0a0/src/solveur/core/linear_policy.py +212 -0
  120. qf_solver-0.2.0a0/src/solveur/core/material_state.py +61 -0
  121. qf_solver-0.2.0a0/src/solveur/core/modal.py +395 -0
  122. qf_solver-0.2.0a0/src/solveur/core/model.py +287 -0
  123. qf_solver-0.2.0a0/src/solveur/core/nonlinear.py +700 -0
  124. qf_solver-0.2.0a0/src/solveur/core/nonlinear_checkpoint.py +206 -0
  125. qf_solver-0.2.0a0/src/solveur/core/nonlinear_controls.py +174 -0
  126. qf_solver-0.2.0a0/src/solveur/core/qualification.py +321 -0
  127. qf_solver-0.2.0a0/src/solveur/core/rbe.py +173 -0
  128. qf_solver-0.2.0a0/src/solveur/core/result_serialization.py +51 -0
  129. qf_solver-0.2.0a0/src/solveur/core/results.py +256 -0
  130. qf_solver-0.2.0a0/src/solveur/core/router.py +39 -0
  131. qf_solver-0.2.0a0/src/solveur/core/solver.py +216 -0
  132. qf_solver-0.2.0a0/src/solveur/documentation/__init__.py +2 -0
  133. qf_solver-0.2.0a0/src/solveur/documentation/server.py +112 -0
  134. qf_solver-0.2.0a0/src/solveur/elements/__init__.py +1 -0
  135. qf_solver-0.2.0a0/src/solveur/elements/beam/__init__.py +6 -0
  136. qf_solver-0.2.0a0/src/solveur/elements/beam/beam2.py +181 -0
  137. qf_solver-0.2.0a0/src/solveur/elements/discrete.py +122 -0
  138. qf_solver-0.2.0a0/src/solveur/elements/registry.py +72 -0
  139. qf_solver-0.2.0a0/src/solveur/elements/shell/__init__.py +1 -0
  140. qf_solver-0.2.0a0/src/solveur/elements/shell/frames.py +36 -0
  141. qf_solver-0.2.0a0/src/solveur/elements/shell/mitc3.py +342 -0
  142. qf_solver-0.2.0a0/src/solveur/elements/shell/mitc3_condensation.py +43 -0
  143. qf_solver-0.2.0a0/src/solveur/elements/shell/mitc4.py +21 -0
  144. qf_solver-0.2.0a0/src/solveur/elements/solid/__init__.py +1 -0
  145. qf_solver-0.2.0a0/src/solveur/elements/solid/common.py +44 -0
  146. qf_solver-0.2.0a0/src/solveur/elements/solid/quadrature.py +93 -0
  147. qf_solver-0.2.0a0/src/solveur/elements/solid/tet10.py +275 -0
  148. qf_solver-0.2.0a0/src/solveur/elements/solid/tet4.py +106 -0
  149. qf_solver-0.2.0a0/src/solveur/elements/solid/tet4_total_lagrangian.py +114 -0
  150. qf_solver-0.2.0a0/src/solveur/elements/solid/tet4_total_lagrangian_batch.py +162 -0
  151. qf_solver-0.2.0a0/src/solveur/io/__init__.py +9 -0
  152. qf_solver-0.2.0a0/src/solveur/io/audit_markdown.py +373 -0
  153. qf_solver-0.2.0a0/src/solveur/io/checkpoint_common.py +17 -0
  154. qf_solver-0.2.0a0/src/solveur/io/constraint_schema.py +151 -0
  155. qf_solver-0.2.0a0/src/solveur/io/contact_schema.py +92 -0
  156. qf_solver-0.2.0a0/src/solveur/io/csv_writer.py +118 -0
  157. qf_solver-0.2.0a0/src/solveur/io/discrete_schema.py +153 -0
  158. qf_solver-0.2.0a0/src/solveur/io/dynamic_checkpoint.py +75 -0
  159. qf_solver-0.2.0a0/src/solveur/io/evidence_verifier.py +194 -0
  160. qf_solver-0.2.0a0/src/solveur/io/evidence_writer.py +138 -0
  161. qf_solver-0.2.0a0/src/solveur/io/json_reader.py +48 -0
  162. qf_solver-0.2.0a0/src/solveur/io/json_writer.py +15 -0
  163. qf_solver-0.2.0a0/src/solveur/io/laminate_schema.py +96 -0
  164. qf_solver-0.2.0a0/src/solveur/io/load_schema.py +151 -0
  165. qf_solver-0.2.0a0/src/solveur/io/manifest.py +193 -0
  166. qf_solver-0.2.0a0/src/solveur/io/model_writer.py +158 -0
  167. qf_solver-0.2.0a0/src/solveur/io/nonlinear_checkpoint.py +76 -0
  168. qf_solver-0.2.0a0/src/solveur/io/schema.py +700 -0
  169. qf_solver-0.2.0a0/src/solveur/io/schema_values.py +55 -0
  170. qf_solver-0.2.0a0/src/solveur/io/vtu_writer.py +179 -0
  171. qf_solver-0.2.0a0/src/solveur/large/__init__.py +46 -0
  172. qf_solver-0.2.0a0/src/solveur/large/assembler.py +194 -0
  173. qf_solver-0.2.0a0/src/solveur/large/audit.py +204 -0
  174. qf_solver-0.2.0a0/src/solveur/large/benchmark.py +294 -0
  175. qf_solver-0.2.0a0/src/solveur/large/campaign.py +277 -0
  176. qf_solver-0.2.0a0/src/solveur/large/distributed_model.py +426 -0
  177. qf_solver-0.2.0a0/src/solveur/large/dofs.py +25 -0
  178. qf_solver-0.2.0a0/src/solveur/large/evidence.py +55 -0
  179. qf_solver-0.2.0a0/src/solveur/large/generator.py +143 -0
  180. qf_solver-0.2.0a0/src/solveur/large/io.py +199 -0
  181. qf_solver-0.2.0a0/src/solveur/large/materials.py +26 -0
  182. qf_solver-0.2.0a0/src/solveur/large/matrix_free.py +156 -0
  183. qf_solver-0.2.0a0/src/solveur/large/memory.py +78 -0
  184. qf_solver-0.2.0a0/src/solveur/large/model.py +82 -0
  185. qf_solver-0.2.0a0/src/solveur/large/mpi_diagnostics.py +93 -0
  186. qf_solver-0.2.0a0/src/solveur/large/optimization.py +283 -0
  187. qf_solver-0.2.0a0/src/solveur/large/partitioning.py +277 -0
  188. qf_solver-0.2.0a0/src/solveur/large/postprocess.py +328 -0
  189. qf_solver-0.2.0a0/src/solveur/large/profiling.py +240 -0
  190. qf_solver-0.2.0a0/src/solveur/large/qualification.py +262 -0
  191. qf_solver-0.2.0a0/src/solveur/large/readiness.py +179 -0
  192. qf_solver-0.2.0a0/src/solveur/large/runtime.py +108 -0
  193. qf_solver-0.2.0a0/src/solveur/large/solver.py +524 -0
  194. qf_solver-0.2.0a0/src/solveur/large/tet4_batch.py +141 -0
  195. qf_solver-0.2.0a0/src/solveur/large/tuning.py +199 -0
  196. qf_solver-0.2.0a0/src/solveur/large/verification.py +273 -0
  197. qf_solver-0.2.0a0/src/solveur/loads/__init__.py +5 -0
  198. qf_solver-0.2.0a0/src/solveur/loads/entities.py +132 -0
  199. qf_solver-0.2.0a0/src/solveur/loads/integration.py +376 -0
  200. qf_solver-0.2.0a0/src/solveur/materials/__init__.py +27 -0
  201. qf_solver-0.2.0a0/src/solveur/materials/beam.py +42 -0
  202. qf_solver-0.2.0a0/src/solveur/materials/composite.py +128 -0
  203. qf_solver-0.2.0a0/src/solveur/materials/factory.py +173 -0
  204. qf_solver-0.2.0a0/src/solveur/materials/failure.py +190 -0
  205. qf_solver-0.2.0a0/src/solveur/materials/laminate.py +280 -0
  206. qf_solver-0.2.0a0/src/solveur/materials/orthotropic.py +221 -0
  207. qf_solver-0.2.0a0/src/solveur/materials/shell.py +5 -0
  208. qf_solver-0.2.0a0/src/solveur/materials/solid.py +224 -0
  209. qf_solver-0.2.0a0/src/solveur/mesh/__init__.py +1 -0
  210. qf_solver-0.2.0a0/src/solveur/mesh/constraint_validation.py +32 -0
  211. qf_solver-0.2.0a0/src/solveur/mesh/contact_validation.py +74 -0
  212. qf_solver-0.2.0a0/src/solveur/mesh/entities.py +13 -0
  213. qf_solver-0.2.0a0/src/solveur/mesh/gmsh_importer.py +578 -0
  214. qf_solver-0.2.0a0/src/solveur/mesh/gmsh_reader.py +148 -0
  215. qf_solver-0.2.0a0/src/solveur/mesh/gmsh_types.py +81 -0
  216. qf_solver-0.2.0a0/src/solveur/mesh/quality.py +225 -0
  217. qf_solver-0.2.0a0/src/solveur/mesh/topology.py +11 -0
  218. qf_solver-0.2.0a0/src/solveur/mesh/validation.py +686 -0
  219. qf_solver-0.2.0a0/src/solveur/mesh/validation_helpers.py +111 -0
  220. qf_solver-0.2.0a0/src/solveur/paths.py +34 -0
  221. qf_solver-0.2.0a0/src/solveur/post/__init__.py +6 -0
  222. qf_solver-0.2.0a0/src/solveur/post/audit.py +88 -0
  223. qf_solver-0.2.0a0/src/solveur/post/harmonic_shell.py +325 -0
  224. qf_solver-0.2.0a0/src/solveur/post/shell_results.py +226 -0
  225. qf_solver-0.2.0a0/src/solveur/post/stress.py +609 -0
  226. qf_solver-0.2.0a0/src/solveur/verification/__init__.py +1 -0
  227. qf_solver-0.2.0a0/src/solveur/verification/analytical_references.py +56 -0
  228. qf_solver-0.2.0a0/src/solveur/verification/calculix_composite.py +309 -0
  229. qf_solver-0.2.0a0/src/solveur/verification/calculix_composite_conical_cutout.py +341 -0
  230. qf_solver-0.2.0a0/src/solveur/verification/calculix_composite_conical_ply_stress.py +220 -0
  231. qf_solver-0.2.0a0/src/solveur/verification/calculix_curved_composite.py +452 -0
  232. qf_solver-0.2.0a0/src/solveur/verification/calculix_curved_orientation.py +465 -0
  233. qf_solver-0.2.0a0/src/solveur/verification/calculix_j2.py +287 -0
  234. qf_solver-0.2.0a0/src/solveur/verification/calculix_mitc3.py +206 -0
  235. qf_solver-0.2.0a0/src/solveur/verification/calculix_mitc3_curved_composite.py +472 -0
  236. qf_solver-0.2.0a0/src/solveur/verification/calculix_mitc3_laminate_ply_stress.py +299 -0
  237. qf_solver-0.2.0a0/src/solveur/verification/calculix_mitc4_conical_cutout.py +281 -0
  238. qf_solver-0.2.0a0/src/solveur/verification/calculix_nafems.py +213 -0
  239. qf_solver-0.2.0a0/src/solveur/verification/calculix_tet10.py +216 -0
  240. qf_solver-0.2.0a0/src/solveur/verification/calculix_tl_structural.py +396 -0
  241. qf_solver-0.2.0a0/src/solveur/verification/calculix_total_lagrangian.py +254 -0
  242. qf_solver-0.2.0a0/src/solveur/verification/campaign.py +632 -0
  243. qf_solver-0.2.0a0/src/solveur/verification/code_aster_beam2.py +118 -0
  244. qf_solver-0.2.0a0/src/solveur/verification/code_aster_beam2_modal.py +128 -0
  245. qf_solver-0.2.0a0/src/solveur/verification/code_aster_beam2_newmark.py +265 -0
  246. qf_solver-0.2.0a0/src/solveur/verification/code_aster_beam2_transverse.py +272 -0
  247. qf_solver-0.2.0a0/src/solveur/verification/code_aster_contact.py +247 -0
  248. qf_solver-0.2.0a0/src/solveur/verification/code_aster_contact_additional.py +662 -0
  249. qf_solver-0.2.0a0/src/solveur/verification/code_aster_contact_folded.py +118 -0
  250. qf_solver-0.2.0a0/src/solveur/verification/code_aster_contact_folded_search.py +107 -0
  251. qf_solver-0.2.0a0/src/solveur/verification/code_aster_contact_tet4.py +155 -0
  252. qf_solver-0.2.0a0/src/solveur/verification/code_aster_discrete.py +299 -0
  253. qf_solver-0.2.0a0/src/solveur/verification/code_aster_friction_contact.py +282 -0
  254. qf_solver-0.2.0a0/src/solveur/verification/code_aster_j2.py +299 -0
  255. qf_solver-0.2.0a0/src/solveur/verification/code_aster_mitc3.py +335 -0
  256. qf_solver-0.2.0a0/src/solveur/verification/code_aster_mitc3_dynamic.py +270 -0
  257. qf_solver-0.2.0a0/src/solveur/verification/code_aster_mitc3_hemisphere.py +438 -0
  258. qf_solver-0.2.0a0/src/solveur/verification/code_aster_mitc3_laminate_dynamic.py +346 -0
  259. qf_solver-0.2.0a0/src/solveur/verification/code_aster_mitc4_conical_cutout.py +272 -0
  260. qf_solver-0.2.0a0/src/solveur/verification/code_aster_mitc4_laminate_dynamic.py +444 -0
  261. qf_solver-0.2.0a0/src/solveur/verification/code_aster_nafems.py +130 -0
  262. qf_solver-0.2.0a0/src/solveur/verification/code_aster_rbe.py +142 -0
  263. qf_solver-0.2.0a0/src/solveur/verification/code_aster_tet10_dynamic.py +481 -0
  264. qf_solver-0.2.0a0/src/solveur/verification/code_aster_tet10_j2_complex.py +376 -0
  265. qf_solver-0.2.0a0/src/solveur/verification/code_aster_tet10_j2_structural.py +353 -0
  266. qf_solver-0.2.0a0/src/solveur/verification/code_aster_tet4_dynamic.py +28 -0
  267. qf_solver-0.2.0a0/src/solveur/verification/code_aster_tl_structural.py +510 -0
  268. qf_solver-0.2.0a0/src/solveur/verification/composite_analytic.py +286 -0
  269. qf_solver-0.2.0a0/src/solveur/verification/composite_conical_cutout.py +170 -0
  270. qf_solver-0.2.0a0/src/solveur/verification/composite_curved_assembly.py +397 -0
  271. qf_solver-0.2.0a0/src/solveur/verification/composite_nafems.py +391 -0
  272. qf_solver-0.2.0a0/src/solveur/verification/composite_ply_stress.py +301 -0
  273. qf_solver-0.2.0a0/src/solveur/verification/composite_structural.py +361 -0
  274. qf_solver-0.2.0a0/src/solveur/verification/contact_additional_models.py +266 -0
  275. qf_solver-0.2.0a0/src/solveur/verification/contact_additional_oracle.py +123 -0
  276. qf_solver-0.2.0a0/src/solveur/verification/contact_campaign.py +81 -0
  277. qf_solver-0.2.0a0/src/solveur/verification/contact_deformable_master.py +145 -0
  278. qf_solver-0.2.0a0/src/solveur/verification/contact_master_surface.py +314 -0
  279. qf_solver-0.2.0a0/src/solveur/verification/contact_tet4_master.py +196 -0
  280. qf_solver-0.2.0a0/src/solveur/verification/dynamic_family_campaign.py +324 -0
  281. qf_solver-0.2.0a0/src/solveur/verification/elastica.py +61 -0
  282. qf_solver-0.2.0a0/src/solveur/verification/external_correlation.py +248 -0
  283. qf_solver-0.2.0a0/src/solveur/verification/frictional_contact.py +253 -0
  284. qf_solver-0.2.0a0/src/solveur/verification/frictional_contact_structural.py +163 -0
  285. qf_solver-0.2.0a0/src/solveur/verification/frictionless_contact_structural.py +294 -0
  286. qf_solver-0.2.0a0/src/solveur/verification/j2_material.py +491 -0
  287. qf_solver-0.2.0a0/src/solveur/verification/j2_methods.py +158 -0
  288. qf_solver-0.2.0a0/src/solveur/verification/j2_step_sensitivity.py +172 -0
  289. qf_solver-0.2.0a0/src/solveur/verification/j2_structural.py +233 -0
  290. qf_solver-0.2.0a0/src/solveur/verification/large_petsc_scipy.py +173 -0
  291. qf_solver-0.2.0a0/src/solveur/verification/linear_solver_comparison.py +145 -0
  292. qf_solver-0.2.0a0/src/solveur/verification/mechanical.py +5 -0
  293. qf_solver-0.2.0a0/src/solveur/verification/mesh_checks.py +5 -0
  294. qf_solver-0.2.0a0/src/solveur/verification/mitc3_campaign.py +416 -0
  295. qf_solver-0.2.0a0/src/solveur/verification/mitc3_dynamic_extended.py +471 -0
  296. qf_solver-0.2.0a0/src/solveur/verification/mitc3_laminate_dynamic.py +376 -0
  297. qf_solver-0.2.0a0/src/solveur/verification/mitc3_models.py +369 -0
  298. qf_solver-0.2.0a0/src/solveur/verification/mitc3_refined.py +347 -0
  299. qf_solver-0.2.0a0/src/solveur/verification/mitc4_campaign.py +605 -0
  300. qf_solver-0.2.0a0/src/solveur/verification/mitc4_conical_cutout.py +271 -0
  301. qf_solver-0.2.0a0/src/solveur/verification/mitc4_harmonic.py +294 -0
  302. qf_solver-0.2.0a0/src/solveur/verification/mitc4_harmonic_broadband.py +383 -0
  303. qf_solver-0.2.0a0/src/solveur/verification/mitc4_harmonic_condensation.py +301 -0
  304. qf_solver-0.2.0a0/src/solveur/verification/mitc4_harmonic_nafems.py +513 -0
  305. qf_solver-0.2.0a0/src/solveur/verification/mitc4_laminate_dynamic.py +372 -0
  306. qf_solver-0.2.0a0/src/solveur/verification/mitc4_laminate_layups.py +148 -0
  307. qf_solver-0.2.0a0/src/solveur/verification/mitc4_modal.py +254 -0
  308. qf_solver-0.2.0a0/src/solveur/verification/mitc4_modal_extended.py +692 -0
  309. qf_solver-0.2.0a0/src/solveur/verification/mitc4_modal_external.py +262 -0
  310. qf_solver-0.2.0a0/src/solveur/verification/mitc4_modal_plate.py +310 -0
  311. qf_solver-0.2.0a0/src/solveur/verification/mitc4_newmark.py +270 -0
  312. qf_solver-0.2.0a0/src/solveur/verification/mitc4_newmark_broadband.py +377 -0
  313. qf_solver-0.2.0a0/src/solveur/verification/mitc4_newmark_extended.py +356 -0
  314. qf_solver-0.2.0a0/src/solveur/verification/mitc4_newmark_operational.py +508 -0
  315. qf_solver-0.2.0a0/src/solveur/verification/orthotropic_additional_stress.py +243 -0
  316. qf_solver-0.2.0a0/src/solveur/verification/orthotropic_complex_mesh.py +297 -0
  317. qf_solver-0.2.0a0/src/solveur/verification/orthotropic_convergence.py +230 -0
  318. qf_solver-0.2.0a0/src/solveur/verification/orthotropic_external.py +378 -0
  319. qf_solver-0.2.0a0/src/solveur/verification/orthotropic_modal_dynamic.py +363 -0
  320. qf_solver-0.2.0a0/src/solveur/verification/orthotropic_performance.py +193 -0
  321. qf_solver-0.2.0a0/src/solveur/verification/orthotropic_singularity_vnv.py +591 -0
  322. qf_solver-0.2.0a0/src/solveur/verification/orthotropic_solid.py +219 -0
  323. qf_solver-0.2.0a0/src/solveur/verification/singularity_stress.py +133 -0
  324. qf_solver-0.2.0a0/src/solveur/verification/tet10.py +176 -0
  325. qf_solver-0.2.0a0/src/solveur/verification/tet10_geometry_quadrature.py +248 -0
  326. qf_solver-0.2.0a0/src/solveur/verification/tet10_mass_modal_loads.py +299 -0
  327. qf_solver-0.2.0a0/src/solveur/verification/tet10_near_incompressible.py +270 -0
  328. qf_solver-0.2.0a0/src/solveur/verification/tet10_structural_convergence.py +552 -0
  329. qf_solver-0.2.0a0/src/solveur/verification/tet4_tl_buckling_refinement.py +179 -0
  330. qf_solver-0.2.0a0/src/solveur/verification/tet4_total_lagrangian.py +149 -0
  331. qf_solver-0.2.0a0/src/solveur/verification/tet4_total_lagrangian_assembly.py +335 -0
  332. qf_solver-0.2.0a0/src/solveur/verification/tet4_total_lagrangian_buckling.py +325 -0
  333. qf_solver-0.2.0a0/src/solveur/verification/tet4_total_lagrangian_postbuckling.py +295 -0
  334. qf_solver-0.2.0a0/src/solveur/verification/tet4_total_lagrangian_steps.py +141 -0
  335. qf_solver-0.2.0a0/src/solveur/verification/tet4_total_lagrangian_stress.py +236 -0
  336. qf_solver-0.2.0a0/src/solveur/verification/torsion_stress_probe.py +441 -0
  337. qf_solver-0.2.0a0/src/solveur/verification/total_lagrangian_structural.py +237 -0
  338. qf_solver-0.2.0a0/src/solveur/verification/traceability.py +398 -0
  339. qf_solver-0.2.0a0/src/solveur/verification/transient_modal_oracle.py +115 -0
  340. qf_solver-0.2.0a0/src/solveur/verification/vnv_benchmark_import.py +397 -0
  341. qf_solver-0.2.0a0/src/solveur/verification/vnv_manifest.py +55 -0
  342. qf_solver-0.2.0a0/src/solveur/verification/vnv_report.py +241 -0
  343. qf_solver-0.2.0a0/src/solveur/verification/vnv_runner.py +391 -0
  344. qf_solver-0.2.0a0/src/solveur/verification/vnv_schema.py +407 -0
  345. qf_solver-0.2.0a0/src/solveur/verification/vnv_torsion_import.py +516 -0
  346. qf_solver-0.2.0a0/src/solveur/verification/vnv_types.py +124 -0
  347. qf_solver-0.2.0a0/src/solveur/verification/vnv_visualization.py +231 -0
  348. qf_solver-0.2.0a0/src/solveur/version.py +17 -0
@@ -0,0 +1,477 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0a0 - 2026-08-13
4
+
5
+ Cette version alpha est la premiere publication open source preparee de
6
+ QF_solver. Le code est sous Apache-2.0 et la documentation ainsi que les
7
+ exemples originaux sont sous CC BY 4.0. Les fonctionnalites marquees
8
+ `experimental` ou `research` restent hors de toute revendication de
9
+ qualification et doivent etre utilisees avec une revue mecanique adaptee.
10
+
11
+ - Ajout des informations d'auteur, de citation et de licence.
12
+ - Ajout de l'inventaire des dependances et des regles de redistribution.
13
+ - Conservation des niveaux de maturite et des limites de validation existants.
14
+ - Gel du perimetre alpha avec decisions Owner tracees pour TET4/TET10/MITC3
15
+ en modal, Newmark et harmonique, BEAM2 dynamique et entites discretes.
16
+ - Inclusion des preuves Owner recentes MITC3+ multicouche courbe a orientation
17
+ projetee et TET10 J2 structurel, en conservant leur statut experimental borne.
18
+ - La campagne MITC4 multicouche dynamique est acceptee par l'Owner pour un
19
+ usage engineering experimental borne; la tentative modale a 10 000 QUAD4
20
+ conserve une reserve numerique explicite.
21
+ - Adoption d'un layout `src/` pour isoler le paquet installable du repertoire
22
+ de travail. Le noyau MITC4 historique reste dans `src/mitc4` et l'API
23
+ generaliste dans `src/solveur`.
24
+ - Deplacement du conteneur PETSc/MPI dans `tools/containers/large`; Docker
25
+ reste une aide de reproductibilite optionnelle et ne fait pas partie du
26
+ runtime standard.
27
+ - Reduction de la wheel aux sources, exemples et registres d'execution. Le
28
+ manuel, les tests et les decisions de revue restent publics dans le depot
29
+ GitHub et ne sont pas dupliques dans les archives PyPI.
30
+
31
+ ### Documentation technique
32
+
33
+ - Ajout d'un contrat documentaire uniforme par element et methode.
34
+ - Ajout des pages direct, CG, MINRES, GMRES, BiCGSTAB et arc-length.
35
+ - Ajout de figures BEAM2, ressort-masse et RBE2 regenerees par l'API.
36
+ - Ajout d'un registre `pending_owner_review` qui interdit d'assimiler une
37
+ demonstration documentee a une qualification.
38
+ - Ajout des formulations forte/faible TET4, TET10, MITC4 et BEAM2, de leurs
39
+ matrices de tests et des sous-chapitres BEAM2.
40
+ - Le dossier PDF compose les equations LaTeX et controle automatiquement un
41
+ minimum de dix pages pour chaque formulation elementaire principale.
42
+
43
+ ### Consolidation de l'alpha
44
+
45
+ - Consolidation du manuel technique, des cartes de contraintes et deformations,
46
+ des contrats de chargement, des convergences et des vues
47
+ QF_solver/reference. La decision documentaire Owner est enregistree sans
48
+ effet automatique sur les maturites mecaniques.
49
+ - Ajout d'une couverture machine-readable de 33 couples element-analyse,
50
+ sept contrats de chargement et douze familles de methodes.
51
+ - Ajout de `pypdf==6.10.0` a l'extra et a la baseline documentaire. La
52
+ decouverte de Pandoc et MiKTeX utilise `PATH`, des variables QF_solver ou
53
+ l'API portable des repertoires utilisateur, sans chemin de poste dans les
54
+ sources. L'audit public repasse a `649` fichiers et `0` constat.
55
+ - Enregistrement de l'Owner review MITC3+ statique lineaire en
56
+ `accepted_for_bounded_engineering_use` le 1er aout 2026.
57
+ - Ajout d'une matrice machine-readable element/analyse distinguant capacite
58
+ implementee, verification automatique, Owner review et domaines non
59
+ supportes. Elle met en evidence les campagnes dynamiques encore manquantes.
60
+
61
+ - Ajout du benchmark MITC3+ de l'hemisphere pince a ouverture `18 deg`, six
62
+ raffinements et reconstruction des quatre quadrants. Au niveau fin,
63
+ QF_solver/Code_Aster DKT differe de `0,0927 %`, le champ nodal de `0,1536 %`
64
+ et QF_solver se situe a `0,5912 %` de la reference publiee `0,0924`.
65
+ - Ajout des figures separees de geometrie, convergence, deformees comparees et
66
+ champ Code_Aster, ainsi que du patch de flexion explicite
67
+ `kappa_x/kappa_y/kappa_xy`.
68
+
69
+ - Correction de l'interpolation de cisaillement MITC3+ : le facteur `2/3`
70
+ multiplie desormais tout le premier groupe de l'equation (17) de Lee, Lee
71
+ et Bathe. Le patch de cisaillement constant atteint `1,81e-16` et la
72
+ baseline precedente est marquee `SUPERSEDED`.
73
+ - Ajout des raffinements MITC3+ Scordelis-Lo `20 000` triangles et cylindre
74
+ pince `19 600` triangles, avec erreurs respectives `0,4044 %` et
75
+ `2,0899 %`, champs, courbes, manifestes et PDF d'Owner review.
76
+ - Optimisation de l'assemblage des charges distribuees par contributions
77
+ creuses locales, supprimant un vecteur global intermediaire par charge.
78
+ - Regeneration des correlations MITC3+ : ecart de flexion Code_Aster DKT
79
+ `0,007116 %`; CalculiX S3 reste un temoin negatif a `113,086 %`.
80
+ - Ajout de `VNV-J2-CODEASTER-VMIS-ISOT-LINE-004`, seconde implementation
81
+ externe J2 executee avec Code_Aster 18.1.0 epingle. La conversion
82
+ `D_SIGM_EPSI=E H/(E+H)` est explicite; contrainte, plasticite equivalente,
83
+ contraintes laterales et homogeneite passent a la precision machine.
84
+ - Fermeture de `VNV-ORTHOTROPIC-SINGULAR-STRESS-005` sur huit raffinements,
85
+ jusqu'a `237 358` TET4, avec recuperation compacte ponderee par volume,
86
+ correlation Code_Aster bloquante et comparaison nodale CalculiX diagnostique.
87
+ - Ajout de trois modeles de contact demandes en Owner review : coin a deux
88
+ normales, rampe facettisee et bloc TET4 deformable a deux esclaves.
89
+ - Ajout de deux pieces orthotropes de contrainte, encoche arrondie et double
90
+ trou, avec cinq raffinements, cartes `S11` et correlation Code_Aster.
91
+ - Enregistrement de l'Owner review des contraintes singulieres en
92
+ `accepted_with_recommendations`, datee du 29 juillet 2026.
93
+ - Ajout de `VNV-CONTACT-CODEASTER-ADDITIONAL-009` : dix paliers sur le coin,
94
+ la rampe et le bloc TET4. Deux courbes sont confondues; le bloc passe sur la
95
+ branche fermee; son raffinement a `768` TET4 abaisse l'ecart de transition
96
+ de `5,2565 %` a `4,3400 %`, sous le seuil Owner review de `5 %`.
97
+ - Ajout de `VNV-CONTACT-CODEASTER-ADDITIONAL-H10K-010` : confirmation du
98
+ bloc deformable sur `9 984` TET4. QF_solver et Code_Aster donnent un ecart
99
+ maximal de courbe de `3,3029e-12 %`; la decision Contact V1 est enregistree
100
+ `accepted_for_bounded_engineering_use`.
101
+ - Fermeture de la baseline Windows de preparation V1 : `926` tests passent,
102
+ le profil engineering est PASS, le site regenere `625` artefacts, l'audit
103
+ public analyse `579` fichiers sans constat et l'archive prospective en
104
+ exporte `407` sans inclure les instructions de travail internes.
105
+ - Correction de l'execution directe de `scripts/release_readiness.py` et ajout
106
+ d'un test CLI. Le verdict reste volontairement `NOT_READY` jusqu'au choix de
107
+ licence, au gel de l'arbre Git et au tag `0.2.0`.
108
+
109
+ - Preparation de publication open source : URLs de projet packagees, contrat
110
+ de stabilite API, guide de contribution, politique de securite, support,
111
+ modele de pull request, formulaires GitHub et checklist de publication.
112
+ La licence reste volontairement `Proprietary` jusqu'a une decision explicite
113
+ du proprietaire du projet.
114
+
115
+ - Ouverture de P6.1 avec la lamelle orthotrope plane `OrthotropicLamina`, les
116
+ transformations `Q/Qbar`, les controles de positivite et les preuves
117
+ analytiques `0/90/+/-45 deg`.
118
+ - Ajout de la theorie classique des stratifies avec plis et interfaces,
119
+ matrices `A/B/D`, resultantes, inversion generalisee et contraintes aux
120
+ faces de chaque pli; preuves `[0]`, `[0/90]s`, `[+45/-45]s` et `[0/90]`.
121
+ - Ajout du materiau `shell_laminate` dans MITC4 statique avec couplage `B`,
122
+ cisaillement transverse `G13/G23`, contraintes par pli, exemple JSON et
123
+ controles d'objectivite, coque facettisee et shear locking.
124
+ - Ajout des indicateurs non degradants contrainte/deformation maximale,
125
+ Tsai-Hill et Tsai-Wu, avec facteurs de reserve et synthese du pli critique.
126
+ - Ajout de `VNV-COMP-ANALYTIC-001`: six oracles analytiques, enveloppes de
127
+ rupture, rapport Markdown et manifeste SHA-256.
128
+ - Ajout de `VNV-COMP-STRUCTURAL-CONVERGENCE-002`: membrane et flexion de
129
+ stratifies sur sept niveaux de maillage, avec separation explicite entre
130
+ oracle analytique applicable et stabilisation d'un panneau couple.
131
+ - Ajout de `VNV-COMP-CALCULIX-S8R-003`: correlation externe reelle entre
132
+ MITC4 et CalculiX 2.20 S8R composite, avec ecart fin de fleche `0,0310 %`.
133
+ - Ajout de `VNV-COMP-NAFEMS-R0031-CODEASTER-004`: benchmark NAFEMS R0031/1
134
+ execute avec QF_solver MITC4 et Code_Aster 18.1.0 DST/DSQ sur cinq maillages
135
+ jusqu'a `5 120` elements; ecarts fins sur `UZ(E)` de `0,458 %` et `0,710 %`,
136
+ avec increments finaux inferieurs a `0,1 %`.
137
+ - Ajout de `VNV-COMP-CONICAL-CUTOUT-PLY-STRESS-CALCULIX-S8R-012` :
138
+ correlation de contraintes par pli sur une couronne conique a distance
139
+ normalisee du bord libre. L'ecart L2 fin QF_solver/CalculiX S8R est
140
+ `0,298 %`; `S13`, pics de bord libre et delaminage restent hors scope.
141
+ - Ajout de la specification future `orthotropic_3d` pour TET4/TET10, avec
142
+ orientations, sorties, programme V&V et limites explicites.
143
+ - Implementation `research` de `orthotropic_3d` et
144
+ `composite_orthotropic_3d` pour TET4/TET10, avec repere global ou
145
+ `e1/e2_hint`, sorties dans les axes globaux/materiau et exemples JSON.
146
+ - Ajout de `VNV-ORTHOTROPIC-SOLID-KERNEL-001`: loi, tractions,
147
+ cisaillements, objectivite, energie, patchs affines et modes rigides
148
+ `SPEC-COMP-SOLID-001..005` PASS.
149
+ - Ajout de `VNV-ORTHOTROPIC-SOLID-EXTERNAL-002`: deux geometries 3D maillees
150
+ complexes, eprouvette perforee et equerre, comparees sur maillage identique
151
+ a Code_Aster 18.1.0 TETRA4 et CalculiX 2.20 C3D4. Les six controles de
152
+ deplacement et contrainte passent; `SPEC-COMP-SOLID-007` est couvert.
153
+ - Ajout de `VNV-ORTHOTROPIC-SOLID-CONVERGENCE-003`: convergence hors axes sur
154
+ quatre maillages TET4/TET10 et reference TET10 fine. Le TET10 atteint
155
+ `0,292 %`; le TET4 converge mais conserve `21,66 %` d'ecart en flexion.
156
+ - Ajout de `VNV-ORTHOTROPIC-ISOTROPIC-NONREGRESSION-004` et mise en cache de
157
+ la matrice isotrope : equivalence numerique sous `2,50e-16`, ratios temps et
158
+ memoire sous `1,25`. Les specifications `001..008` sont couvertes.
159
+
160
+ ### TET4 total lagrangien structurel V2
161
+
162
+ - Ajout du post-traitement fini par element : `F`, Green-Lagrange, PK2,
163
+ Cauchy, energie et `det(F)`.
164
+ - Ajout des campagnes `VNV-TET4-TL-STRESS-005`,
165
+ `VNV-TET4-TL-BUCKLING-EULER-006` et
166
+ `VNV-TET4-TL-POSTBUCKLING-007`.
167
+ - Ajout d'une recherche de charge critique par tangente precontrainte et d'un
168
+ suivi arc-length creux sans matrice augmentee dense.
169
+ - Ajout des rapports Markdown, PNG et manifestes SHA-256 associes; statut
170
+ `research`, en attente d'une nouvelle revue mecanique.
171
+ - Correlation externe CalculiX `2.20` C3D4 sur contrainte finie et flambement
172
+ propre: ecart Cauchy `1,17e-7` et ecart de charge critique fine `0,035 %`.
173
+ - Correlation externe Code_Aster `18.1.0` TETRA4 sur PK2 et colonne imparfaite:
174
+ ecarts `8,54e-5` et `1,69e-9`; flambement propre solide marque non applicable
175
+ pour l'operateur `RIGI_GEOM` au lieu d'utiliser une formulation differente.
176
+ - Ajout du chemin public `geometric_nonlinear_static` pour TET4 homogene sous
177
+ charges nodales mortes, avec Newton complet, sorties finies et maturite
178
+ `research` bloquee par le profil qualification.
179
+ - Ajout du point de flambement `VNV-TET4-TL-BUCKLING-H5-010` a `98 304` TET4:
180
+ erreur Euler `1,896 %`, accord CalculiX `0,0343 %` et revue structurelle V2
181
+ `accepted_with_recommendations` par Quentin Farinazzo.
182
+ - Demarrage de la consolidation TET10 avec selection de quadrature : Hammer a
183
+ 4 points sur geometrie droite, Duffy positive a 64 points sur geometrie
184
+ courbe et controle du Jacobien sur 35 points avant assemblage.
185
+ - Ajout de `VNV-TET10-GEOMETRY-QUADRATURE-011` : erreur matricielle courbe
186
+ `7,51e-7` face a Duffy ordre 8, amelioration superieure a quatre ordres de
187
+ grandeur face a Hammer et rejet controle des geometries inversees.
188
+ - Ajout de `VNV-TET10-STRUCTURAL-CONVERGENCE-012` sur 24 calculs TET4/TET10:
189
+ patch de traction au bruit machine, erreur de flexion TET10 `1,179 %`,
190
+ erreur de rotation de torsion `0,00250 %` et erreur de contrainte `0,991 %`.
191
+ - Extension du chargement coherent de torsion aux faces quadratiques T6 avec
192
+ correction discrete de resultante et conservation du couple a `2,27e-16`.
193
+ - Ajout de `VNV-TET10-MASS-MODAL-LOADS-013` : masse courbe, pression T6,
194
+ recuperation nodale et premier couple modal verifies; ecart frequentiel
195
+ maximal `0,434 %` et residu propre `9,74e-11`.
196
+ - Ajout de `VNV-TET10-CALCULIX-C3D10-014` sur un arbre courbe strictement
197
+ identique : ecarts QF_solver/CalculiX de `6,84e-5` sur le champ complet et
198
+ `6,45e-5` sur la rotation terminale.
199
+ - Ajout de `VNV-TET10-NEAR-INCOMPRESSIBLE-015` : a `nu=0,499`, le TET10
200
+ conserve `94,83 %` de la compliance de Timoshenko contre `8,48 %` pour le
201
+ TET4 temoin; l'incompressibilite exacte reste hors scope.
202
+ - Ajout de la revue mecanique TET10 lineaire en PDF autonome de 11 pages, avec
203
+ catalogue des modeles et sept figures incorporees sans lien externe.
204
+ - Validation interne TET10 lineaire `accepted_with_recommendations` par Quentin
205
+ Farinazzo le `2026-07-18`; campagne finale sur pieces complexes et
206
+ correlations multi-solveurs differee avant acceptation totale.
207
+ - Centralisation des quadratures triangulaires positives T3/T6 dans le module
208
+ solide commun, utilise par les charges et les oracles V&V.
209
+
210
+ ### Validation modale MITC4
211
+
212
+ - Ajout des etudes analytiques `VNV-MITC4-MODAL-CANTILEVER-002` et
213
+ `VNV-MITC4-MODAL-PLATE-003` avec convergence h, MAC, residus et
214
+ orthogonalite masse.
215
+ - Verification des dix premiers modes de Navier, y compris trois paires
216
+ propres doubles comparees par sous-espaces.
217
+ - Publication automatique des courbes, de la deformee et des tableaux dans le
218
+ site technique hors ligne.
219
+ - Ajout de sondes temporelles Newmark optionnelles et de
220
+ `VNV-MITC4-NEWMARK-FREE-002`: historique cosinus, convergence d'ordre deux,
221
+ retour de periode, energie et residu dynamique.
222
+ - Ajout de `VNV-MITC4-NEWMARK-DAMPED-FORCED-003` avec decroissance amortie,
223
+ puissance dissipative, force modale sinusoidale et deux solutions fermees.
224
+ - Ajout de la reponse harmonique MITC4 avec condensation/reconstruction
225
+ complexe du drilling, limite statique, amplitude, phase, resonance et
226
+ sensibilite a l'amortissement dans `VNV-MITC4-HARMONIC-MODAL-001`.
227
+ - Demonstration et implementation du complement de Schur harmonique exact
228
+ pour `C=alpha*M+beta*K`, incluant charge directe `RZ`, `rayleigh_beta > 0`
229
+ et comparaison au systeme complexe complet dans
230
+ `VNV-MITC4-HARMONIC-CONDENSATION-002`.
231
+ - Le scope `mitc4-modal` est `candidate`; la revue mecanique doit etre refaite
232
+ et une revue independante reste obligatoire avant qualification externe.
233
+
234
+ ### Non-linearite, dynamique et grand modele
235
+
236
+ - correction de la recherche lineaire non lineaire aux passages par charge
237
+ nulle par normalisation avec la charge de reference;
238
+ - validation et journalisation des pas adaptatifs, avec plafond explicite des
239
+ coupures et tests de reduction, croissance, rollback et erreurs d'entree;
240
+ - ajout de `VNV-J2-NONLINEAR-METHODS-004`: accord Newton complet/Armijo sur la
241
+ reponse axiale et caracterisation de l'echec de Newton modifie en inversion
242
+ plastique;
243
+ - ajout du checkpoint/restart non lineaire NPZ atomique avec deplacements,
244
+ facteur de charge, etats J2 committes, empreinte physique et preuve
245
+ d'identite entre calcul continu et repris;
246
+ - ajout des diagnostics incrementaux non lineaires: corrections, travaux
247
+ interne/externe trapezoidaux, desequilibre, coupures et commit;
248
+ - ajout de `VNV-J2-STEP-SENSITIVITY-005` sur `12/24/48` increments avec
249
+ comparaison des retournements et de l'etat final;
250
+ - ajout du noyau de recherche TET4 total lagrangien Saint-Venant-Kirchhoff,
251
+ avec objectivite, energie et tangente consistante verifiees;
252
+ - extension de `VNV-TET4-TL-ASSEMBLY-002` a
253
+ `192/648/1536/5184/12288/24000` elements: invariants assembles `PASS`,
254
+ variation finale de fleche `3,81 %` et ecart elastica `6,91 %`;
255
+ - ajout de `VNV-TET4-TL-STEPS-004`: identite de la fleche avec `6/10/12/24`
256
+ increments a `8,10e-16` relatif; minimum technique `6`, valeur recommandee
257
+ et valeur par defaut `10`;
258
+ - ajout de `VNV-TET4-TL-CALCULIX-003` sur six maillages identiques C3D4;
259
+ ecart maximal de fleche QF_solver/CalculiX `1,86e-7` relatif;
260
+ - ajout d'un oracle d'elastica Euler sous charge morte et de courbes de
261
+ convergence/deformee pour la revue mecanique;
262
+ - vectorisation de la force et tangente TET4-TL avec cache de la geometrie de
263
+ reference; les trois anciens niveaux sont acceleres d'environ `28,8x` sur la
264
+ machine de campagne;
265
+ - ajout d'une evaluation de force interne TET4-TL sans construction inutile
266
+ de la tangente pendant la recherche lineaire;
267
+ - ajout au plan P6 du futur perimetre composites: orthotropie, theorie des
268
+ stratifies, MITC4 multicouche, criteres de rupture et campagne V&V;
269
+ - ajout de `postprocess-large`: contraintes, deformations, von Mises, volumes
270
+ et energies TET4 ecrits par blocs HDF5 avec checkpoint atomique et reprise;
271
+ - preuve sur `477 042` TET4: reprise apres `131 072` elements, environ
272
+ `536k elements/s` et accord energetique solveur/post-traitement `4,14e-13`;
273
+ - ajout de `benchmark-large --restart-from`, avec validation SHA-256 du modele
274
+ et lecture de la tranche de deplacement possedee par chaque rang; reprise
275
+ PETSc quatre rangs en zero iteration et ecart de deplacement nul;
276
+ - ajout de `petsc-tuning-report` et de cinq presets GAMG/Hypre executes dans
277
+ des processus MPI separes sur bloc, poutre et plaque;
278
+ - campagne de quinze calculs `PASS`, ecart deplacement maximal `1,96e-11`;
279
+ GAMG seuil `0.01` gagne `18,0/5,3/7,3 %`, mais GAMG par defaut est conserve
280
+ car le seuil de gain `10 %` n'est pas atteint sur toutes les topologies;
281
+ - ajout de `petsc-profile-report` et d'une campagne `-Action profile` sur bloc,
282
+ poutre et plaque a environ 254k DDL, avec journaux `-log_view`, rapports
283
+ JSON/Markdown, manifeste et diagnostics des communications/evenements;
284
+ - campagne PETSc quatre rangs multi-topologie `PASS`: `49/161/136` iterations
285
+ et `1,96/6,24/5,11 s` dans `KSPSolve`; le setup GAMG reste voisin de
286
+ `0,55-0,61 s` et le defaut n'est pas modifie;
287
+ - ajout de `large-preconditioners` et `large-scaling-report`, avec comparaison
288
+ des deplacements par blocs, rapports JSON/Markdown et preuves SHA-256;
289
+ - comparaison 1M/4 rangs GAMG contre Hypre/BoomerAMG: accord `3,40e-12`, GAMG
290
+ retenu car plus rapide et plus leger sur le cas mesure;
291
+ - activation tracee du repartitionnement des grilles grossieres GAMG a partir
292
+ de quatre rangs et separation des temps setup/iterations KSP;
293
+ - campagne de scalabilite faible 1/2/4 rangs, classee `WARNING` avec une
294
+ efficacite minimale de `41,6 %`;
295
+ - lecture PETSc multi-rangs par hyperslabs HDF5, connectivite locale et table
296
+ compacte des noeuds references, sans replication des grands tableaux;
297
+ - sortie distribuee `displacements.bin` par MPI-IO collectif, sans
298
+ rassemblement sur le rang racine, avec metadonnees, controle de taille et
299
+ manifeste SHA-256;
300
+ - executions distribuees `PASS` sur quatre rangs a `1 029 000` DDL en
301
+ `25,30 s` et `3 000 000` DDL en `64,00 s`, avec residus inferieurs a
302
+ `1,1e-18`;
303
+ - ajout d'un runtime Docker PETSc/MPI epingle, avec `mpi4py 4.1.2`,
304
+ PETSc/`petsc4py 3.25.1` et `h5py 3.13.0`;
305
+ - correction du backend PETSc multi-rangs : partition contigue des elements,
306
+ matrice/vecteur distribues, Dirichlet homogene symetrique et rassemblement
307
+ des deplacements uniquement sur le rang racine;
308
+ - execution `PASS` des jalons `107 811` et `1 029 000` DDL sur deux rangs,
309
+ avec residus `1,82e-15` et `5,22e-15` et preuves SHA-256;
310
+ - vectorisation batchee des gradients, matrices `B` et rigidites TET4, avec
311
+ gains d'assemblage `x10,36` a 100k et `x2,88` a 1M sans ecart numerique;
312
+ - assemblage PETSc BAIJ par blocs nodaux `3x3`, conversion AIJ avant GAMG et
313
+ execution `PASS` du cas 3M en `88,68 s` avec residu `9,00e-19`;
314
+ - scalabilite forte 1/2/4 rangs sur 1M, avec acceleration maximale `1,65` et
315
+ efficacite quatre rangs `41,18 %`;
316
+ - ajout de `large-campaign` pour planifier ou executer une serie TET4
317
+ `100k/1M/3M+`, avec readiness par niveau, rapports JSON/Markdown, preuve
318
+ SHA-256 et distinction explicite entre montee en taille et scalabilite MPI;
319
+ - ajout de la telemetrie RSS processus en complement de `tracemalloc` pour les
320
+ benchmarks grands modeles;
321
+ - extension de `VNV-MITC4-MODAL-CODEASTER-DKQ-004` a dix modes sur `32x32`:
322
+ ecart maximal QF/Code_Aster `1,609 %`, MAC minimal `0,999998493`;
323
+ - ajout de `VNV-MITC4-MODAL-EXTENDED-005`: structure assemblee libre-libre,
324
+ coque cylindrique distordue et `eigsh` sur `7011` DDL actifs, tous `PASS`;
325
+ - ajout d'une grille de revue modale independante qui doit etre signee par une
326
+ personne autre que l'auteur avant qualification externe;
327
+ - gel du scope dynamique sur la masse coherente; les formulations `lumped` et
328
+ `concentrated` sont documentees hors scope et rejetees explicitement;
329
+ - tentative de validation interne du scope `mitc4-modal` par Quentin Farinazzo
330
+ le `2026-07-16`, decision provisoire `accepted_with_recommendations`;
331
+ - ajout des histoires Newmark independantes par contribution de charge, du
332
+ calage de Rayleigh sur deux cibles modales et de leur tracabilite;
333
+ - ajout de `VNV-MITC4-NEWMARK-OPERATIONAL-006`: superposition, decroissance
334
+ analytique et identite calcul continu/reprise checkpoint `PASS`;
335
+ - validation mecanique interne du scope `mitc4-transient-dynamic` par Quentin
336
+ Farinazzo le `2026-07-16`, decision `accepted_with_recommendations`, revue
337
+ Markdown/PDF et registre machine-readable controles;
338
+ - ajout de `VNV-MITC4-NEWMARK-BROADBAND-004`: impulsion demi-sinus, chirp,
339
+ table arbitraire, contraintes transitoires de face, bilan d'energie et
340
+ convergence temporelle face a un oracle modal par exponentielle de matrice;
341
+ - ajout de la correlation locale Code_Aster `18.1.0` DKQ transitoire sur le
342
+ meme maillage `8x8`: correlations `0,9543` en `UZ` et `0,9560` en `S11`,
343
+ ecarts de pic `5,20 %` et `10,51 %`, verdict `PASS`;
344
+ - ajout des lois `half_sine_pulse` et `linear_chirp`, de leur validation
345
+ stricte et des sondes `history_shell_stress_probes`;
346
+ - gel par SHA-256 des six preuves harmoniques dans
347
+ `qualification/baselines/mitc4_harmonic_2026-07-15.json`; la baseline code
348
+ reste candidate jusqu'a un commit Git propre;
349
+ - ajout de la correlation locale Code_Aster `18.1.0` DKQ sur NAFEMS 13H:
350
+ ecarts QF_solver de `3,364 %` en frequence, `1,900 %` en deplacement et
351
+ `3,272 %` en contrainte `S11`, avec verdict `PASS`;
352
+ - ajout du runner Docker epingle, du maillage ASTER, de la reconstruction
353
+ testee de `S11`, du rapport Markdown et de la figure comparative;
354
+ - ajout des contraintes harmoniques complexes MITC4 `S11/S22/S12`, avec reel,
355
+ imaginaire, amplitude et phase par face, element et frequence;
356
+ - correlation `S11` NAFEMS 13H: `30,819 MPa` pour QF_solver, ecarts `1,477 %`
357
+ a Abaqus S4R, `1,412 %` a S4, `2,626 %` a NAFEMS et `3,730 %` a Navier;
358
+ - decision interne du scope harmonique MITC4 portee a
359
+ `accepted_with_recommendations` par Quentin Farinazzo le `2026-07-15`;
360
+ - ajout de `VNV-MITC4-HARMONIC-BROADBAND-003`: excitation decentree de
361
+ `0,1-16 Hz`, quatre familles de resonance et comparaison plein champ a une
362
+ superposition complete de `175` modes, avec erreur maximale `2,411e-7`;
363
+ - ajout de `VNV-MITC4-HARMONIC-NAFEMS13H-004`: reproduction du Test 13H
364
+ publie par Abaqus/Standard, avec ecarts S4R de `2,442 %` en amplitude et
365
+ `0,866 %` en frequence;
366
+ - ajout d'une fiche de revue harmonique controlee, techniquement prete mais
367
+ explicitement non signee et `pending`;
368
+ - ajout d'une correlation externe controlee avec la table Abaqus/Standard S4R
369
+ publiee pour le cylindre pince, incluant provenance, limites, rapport et PNG;
370
+ - ajout de la masse coherente MITC4, incluant masse surfacique et inerties
371
+ rotatoires Reissner-Mindlin sans inertie artificielle de drilling;
372
+ - ajout d'une condensation objective des directions de drilling sans masse,
373
+ avec reconstruction des six ddl pour le modal et Newmark;
374
+ - ajout des scopes `mitc4-modal` et `mitc4-transient-dynamic`, de deux formules
375
+ controlees et des exemples CLI/API associes;
376
+ - ajout de `VNV-MITC4-SHEAR-LOCKING-001`: 160 calculs epaisseur, maillage et
377
+ distorsion, erreur fine maximale `2,08 %` et Q4 verrouillant temoin;
378
+ - ajout des convergences MITC4 Cook, Scordelis-Lo et cylindre pince, avec six
379
+ niveaux Cook (`4,52 %` a `64x64`) et cinq niveaux Scordelis-Lo (`0,31 %`) et
380
+ cylindre pince (`7,26 %`);
381
+ - extension Cook a `64x64` et point isole `200x200` (40 000 elements), montrant
382
+ une reponse stabilisee vers `0,2515` et declenchant une revue de reference;
383
+ - justification de `drilling_scale=1e-4` par une sensibilite de `1e-6` a
384
+ `1e-2`, avec variation de plateau maximale `9,50e-6`;
385
+ - ajout du runner `scripts/run_mitc4_vnv.py`, de rapports Markdown, PNG et
386
+ manifeste de preuves; correlation Abaqus a maillage identique maintenue en attente;
387
+ - ajout de la sonde de contrainte de torsion h9 a `105 529` TET4, soit
388
+ `4,007` fois h8, avec assemblage creux chunked, CG/Jacobi et manifeste;
389
+ - passage de l'erreur globale L2 de contrainte de `29,06 %` a `18,89 %`,
390
+ sous un seuil engineering borne de `20 %` pour l'arbre circulaire lisse;
391
+ - ajout des PNG h9 QF_solver/Saint-Venant pour la deformee, le von Mises et
392
+ l'ecart de contrainte, publies automatiquement dans le site apres controle
393
+ SHA-256;
394
+ - ajout de l'etude V&V TET4 de torsion sur huit maillages, avec champs
395
+ QF_solver/Saint-Venant comparables, PNG, VTU, empreintes et Markdown;
396
+ - ajout de `import_torsion_vnv_study` et du cas torsion a
397
+ `vnv-import-benchmark`;
398
+ - decision interne de torsion portee a `accepted` apres la sonde h9, avec
399
+ maintien explicite des pics ponctuels et singularites hors domaine accepte;
400
+ - ajout du lanceur `qf-solver-docs` / `scripts/serve_docs.py`, limite a
401
+ `127.0.0.1`, pour ouvrir le manuel dans le navigateur systeme sans lien
402
+ local cliquable dans une interface de developpement;
403
+ - suppression des badges de statut parasites dans la navigation et
404
+ renforcement du contraste du titre principal.
405
+
406
+ ### Identite QF_solver et benchmarks mailles
407
+
408
+ - Adoption de l'identite publique `QF_solver`, distribution `qf-solver`, CLI
409
+ `qf-solver` et lanceur `qf_solver.py`.
410
+ - Conservation temporaire de `solveur-ef` et `main_solveur.py` avec
411
+ avertissement de deprecation jusqu'a 0.3.0.
412
+ - Ajout de l'import Gmsh MSH 4.1 ASCII/binaire, groupes physiques, charges,
413
+ remappage deterministe et rapport d'import SHA-256.
414
+ - Ajout du catalogue controle de huit benchmarks structures mailles et des
415
+ commandes `benchmarks` et `benchmark`.
416
+ - Ajout des pages individuelles, deformees, champs, criteres et artefacts MSH,
417
+ JSON et VTU regeneres pour les huit benchmarks.
418
+ - Decoupage des formulations TET4, TET10 et MITC4 en cinq chapitres chacune.
419
+ - Correction de l'ordre des deux dernieres aretes TET10 lors de l'import Gmsh.
420
+ - Correction critique de la transformation des gradients TET10 de
421
+ $J^{-1}$ vers $J^{-T}$, protegee par un patch test oblique.
422
+
423
+ ### Durcissement P0
424
+
425
+ - Ajout du site technique MkDocs Material hors ligne, organise par fondements,
426
+ elements, solveurs, demonstrations, verification et reference.
427
+ - Migration du manuel theorique monolithique vers 79 pages controlees et un
428
+ registre documentaire machine-readable; l'ancien chemin devient une
429
+ redirection de compatibilite.
430
+ - Ajout d'une campagne documentaire reproductible generant deformees, courbes,
431
+ tableaux, modeles, resultats et manifeste SHA-256 depuis l'API publique.
432
+ - Ajout de MathJax local, du profil de construction `engineering` et du gate
433
+ `qualification` exigeant revision Git et revues documentaires approuvees.
434
+ - Ajout des controles documentaires et visuels responsifs sous Playwright.
435
+ - Ajout de la tracabilite executable de 18 formules TET4, TET10 et MITC4 vers
436
+ exigences, sections, fonctions, tests et references.
437
+ - Ajout d'une convergence h TET4 calculee sur quatre maillages Gmsh, avec
438
+ ordre observe, monotonie, erreur fine et residus comme criteres executables.
439
+ - Separation du statut numerique et de `RunVerdict`, avec codes de sortie
440
+ stables `0`, `2`, `3`, `4`, `5`.
441
+ - Ajout du registre machine-readable des exigences et de la readiness par
442
+ scope.
443
+ - Passage du manifeste de preuve en v2, compatible en lecture avec v1.
444
+ - Correction de la tangente algorithmique J2 et du post-traitement TET10
445
+ chemin-dependant.
446
+ - Rejet explicite des singularites, valeurs non finies et parametres
447
+ dynamiques instables.
448
+ - Ajout de la CI Windows/Linux Python 3.10/3.13, couverture de branches,
449
+ typage progressif et baselines verrouillees.
450
+ - Ajout d'une factorisation LU sparse reutilisable pour Newmark et suppression
451
+ de la conversion dense de la masse initiale.
452
+ - Passage du modal par defaut a `eigsh` et ajout de la garde
453
+ `dense_modal_max_dofs` avant `eigh`.
454
+ - Remplacement de la masse concentree TET10 par une masse coherente integree.
455
+ - Ajout des controles TET10 de noeuds d'arete et de jacobiens echantillonnes.
456
+ - Ajout de l'extrapolation nodale elastique TET10 et de la campagne
457
+ `verify-tet10` avec patch, energie et convergence.
458
+ - Ajout des chargements repartis coherents TET4/TET10/MITC4: pesanteur,
459
+ force volumique, pression, traction de surface et traction de bord MITC4.
460
+ - Ajout du bilan force/moment par contribution dans les resultats et l'audit,
461
+ avec validation stricte, exemple CLI/API et tests analytiques.
462
+
463
+ ## 0.1.0 - qualification-ready baseline
464
+
465
+ - Ajout des profils de verification `quick`, `engineering`, `strict` et
466
+ `qualification`.
467
+ - Ajout du dossier de preuve `evidence` via CLI et API.
468
+ - Ajout du resume `qualification_summary` dans les resultats JSON.
469
+ - Ajout des metadonnees auditables: version solveur, schema JSON, unites,
470
+ profil de verification, maturite et niveau de preuve.
471
+ - Ajout de la matrice de qualification dans `docs/qualification_matrix.md`.
472
+
473
+ ## Politique de version
474
+
475
+ - `patch`: correction sans changement volontaire de schema ou de resultat.
476
+ - `minor`: nouvelle fonctionnalite compatible.
477
+ - `major`: changement de schema, d'API ou de comportement numerique attendu.
@@ -0,0 +1,12 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use QF_solver, please cite the software and its release version."
3
+ type: software
4
+ title: "QF_solver"
5
+ version: "0.2.0-alpha"
6
+ date-released: 2026-08-13
7
+ license: "Apache-2.0"
8
+ authors:
9
+ - family-names: "Farinazzo"
10
+ given-names: "Quentin"
11
+ repository-code: "https://github.com/emptiesvoid-cloud/QF_solver"
12
+ abstract: "White-box finite-element solver for controlled mechanical studies."