capytaine 2.3__tar.gz → 2.3.1__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 (266) hide show
  1. {capytaine-2.3 → capytaine-2.3.1}/.github/workflows/build_docs.yml +7 -6
  2. capytaine-2.3.1/.github/workflows/build_wheels.yaml +107 -0
  3. {capytaine-2.3 → capytaine-2.3.1}/.github/workflows/test_new_commits.yaml +14 -8
  4. capytaine-2.3.1/.github/workflows/test_with_latest_dependencies.yaml +48 -0
  5. {capytaine-2.3 → capytaine-2.3.1}/.pre-commit-config.yaml +1 -1
  6. capytaine-2.3.1/Justfile +154 -0
  7. {capytaine-2.3 → capytaine-2.3.1}/PKG-INFO +2 -13
  8. {capytaine-2.3 → capytaine-2.3.1}/docs/Makefile +1 -1
  9. {capytaine-2.3 → capytaine-2.3.1}/docs/changelog.rst +47 -12
  10. {capytaine-2.3 → capytaine-2.3.1}/docs/conf.py +2 -1
  11. {capytaine-2.3 → capytaine-2.3.1}/docs/developer_manual/installation.rst +26 -42
  12. {capytaine-2.3 → capytaine-2.3.1}/docs/developer_manual/making_a_release.rst +19 -17
  13. {capytaine-2.3 → capytaine-2.3.1}/docs/developer_manual/testing.rst +26 -31
  14. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/quickstart.py +10 -8
  15. {capytaine-2.3 → capytaine-2.3.1}/docs/theory_manual/theory.rst +15 -14
  16. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/installation.rst +15 -13
  17. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/problem_setup.rst +2 -2
  18. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/resolution.rst +1 -1
  19. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/tutorial.rst +50 -34
  20. {capytaine-2.3 → capytaine-2.3.1}/meson.build +16 -15
  21. {capytaine-2.3 → capytaine-2.3.1}/pyproject.toml +26 -8
  22. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_irregular_frequencies_removal.py +8 -1
  23. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bodies.py +10 -0
  24. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_forward_speed.py +1 -0
  25. capytaine-2.3.1/pytest/test_green_functions_tabulation_caching.py +40 -0
  26. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_meshes.py +9 -0
  27. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_meshes_collections_and_symmetries.py +47 -4
  28. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_meshes_interface.py +13 -2
  29. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_tool_symbolic_multiplication.py +10 -1
  30. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/__about__.py +1 -1
  31. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bem/problems_and_results.py +17 -9
  32. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bem/solver.py +1 -1
  33. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bodies/bodies.py +17 -9
  34. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/LiangWuNoblesse/Makefile +0 -2
  35. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/delhommeau.py +19 -15
  36. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/io/xarray.py +4 -4
  37. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/collections.py +10 -2
  38. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/mesh_like_protocol.py +1 -1
  39. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/meshes.py +11 -2
  40. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/symmetric.py +79 -9
  41. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/tools/symbolic_multiplication.py +18 -4
  42. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/tools/timer.py +14 -12
  43. capytaine-2.3/.github/workflows/build_wheels.yaml +0 -64
  44. capytaine-2.3/.github/workflows/test_with_latest_dependencies.yaml +0 -32
  45. capytaine-2.3/Makefile +0 -32
  46. capytaine-2.3/editable_install_requirements.txt +0 -13
  47. capytaine-2.3/noxfile.py +0 -117
  48. {capytaine-2.3 → capytaine-2.3.1}/.gitignore +0 -0
  49. {capytaine-2.3 → capytaine-2.3.1}/.zenodo.json +0 -0
  50. {capytaine-2.3 → capytaine-2.3.1}/CONTRIBUTING.md +0 -0
  51. {capytaine-2.3 → capytaine-2.3.1}/LICENSE +0 -0
  52. {capytaine-2.3 → capytaine-2.3.1}/README.md +0 -0
  53. {capytaine-2.3 → capytaine-2.3.1}/code_of_conduct.md +0 -0
  54. {capytaine-2.3 → capytaine-2.3.1}/docs/_static/custom.css +0 -0
  55. {capytaine-2.3 → capytaine-2.3.1}/docs/_static/proof.css +0 -0
  56. {capytaine-2.3 → capytaine-2.3.1}/docs/_static/proof.js +0 -0
  57. {capytaine-2.3 → capytaine-2.3.1}/docs/_templates/layout.html +0 -0
  58. {capytaine-2.3 → capytaine-2.3.1}/docs/citing.rst +0 -0
  59. {capytaine-2.3 → capytaine-2.3.1}/docs/developer_manual/contributing.rst +0 -0
  60. {capytaine-2.3 → capytaine-2.3.1}/docs/developer_manual/index.rst +0 -0
  61. {capytaine-2.3 → capytaine-2.3.1}/docs/developer_manual/overview.rst +0 -0
  62. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/A_beginners_cookbook.rst +0 -0
  63. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/B_intermediate_cookbook.rst +0 -0
  64. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/C_advanced_cookbook.rst +0 -0
  65. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/index.rst +0 -0
  66. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/A1_radiation_cylinder.py +0 -0
  67. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/A2_multibody.py +0 -0
  68. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/A3_finite_depth_cylinder.py +0 -0
  69. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/A4_custom_dofs.py +0 -0
  70. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/A5_convergence_study.py +0 -0
  71. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/A6_irregular_frequency_removal.py +0 -0
  72. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/A7_elasticity_of_beam.py +0 -0
  73. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/A8_export_dataset.py +0 -0
  74. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/B1_pressure_on_hull.py +0 -0
  75. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/B2_haskind.py +0 -0
  76. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/B3_free_surface_elevation.py +0 -0
  77. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/B4_kochin.py +0 -0
  78. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/B5_plot_velocity_in_domain.py +0 -0
  79. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/B6_animate_free_surface.py +0 -0
  80. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/B7_boat_animation.py +0 -0
  81. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/B8_pressure_infinite_frequency.py +0 -0
  82. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/C10_custom_linear_solver_on_gpu.py +0 -0
  83. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/C5_plot_influence_matrix.py +0 -0
  84. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/C6_axisymmetric_buoy.py +0 -0
  85. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/C7_h_matrices_with_preconditionner.py +0 -0
  86. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/C8_compare_Green_functions.py +0 -0
  87. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/C9_custom_Green_function.py +0 -0
  88. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/V_Malenica_forward_speed.py +0 -0
  89. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/V_hydrostatics.py +0 -0
  90. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/src/boat_200.mar +0 -0
  91. {capytaine-2.3 → capytaine-2.3.1}/docs/examples/validation.rst +0 -0
  92. {capytaine-2.3 → capytaine-2.3.1}/docs/features.rst +0 -0
  93. {capytaine-2.3 → capytaine-2.3.1}/docs/index.rst +0 -0
  94. {capytaine-2.3 → capytaine-2.3.1}/docs/theory_manual/bibliography.rst +0 -0
  95. {capytaine-2.3 → capytaine-2.3.1}/docs/theory_manual/index.rst +0 -0
  96. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/Nemoh.cal +0 -0
  97. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/Panel_convention.svg +0 -0
  98. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/body.rst +0 -0
  99. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/conventions.rst +0 -0
  100. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/export_output.rst +0 -0
  101. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/hydrostatics.rst +0 -0
  102. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/index.rst +0 -0
  103. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/mesh.rst +0 -0
  104. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/post_pro.rst +0 -0
  105. {capytaine-2.3 → capytaine-2.3.1}/docs/user_manual/quickstart.rst +0 -0
  106. {capytaine-2.3 → capytaine-2.3.1}/pytest/Bemio_verification_cases/sphere.out +0 -0
  107. {capytaine-2.3 → capytaine-2.3.1}/pytest/Hydrostatics_cases/sphere__hor_cyl__ver_cyl.pkl.json +0 -0
  108. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/Cylinder.dat +0 -0
  109. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/Nemoh.cal +0 -0
  110. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/Nemoh_v3.cal +0 -0
  111. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/DiffractionForce.tec +0 -0
  112. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/ExcitationForce.tec +0 -0
  113. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/RadiationCoefficients.tec +0 -0
  114. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/Nemoh.cal +0 -0
  115. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/Nemoh_v3.cal +0 -0
  116. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/NonSymmetrical.dat +0 -0
  117. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/DiffractionForce.tec +0 -0
  118. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/ExcitationForce.tec +0 -0
  119. {capytaine-2.3 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/RadiationCoefficients.tec +0 -0
  120. {capytaine-2.3 → capytaine-2.3.1}/pytest/envs/2023-08-01-py3.8.txt +0 -0
  121. {capytaine-2.3 → capytaine-2.3.1}/pytest/envs/2024-04-08-py3.12.txt +0 -0
  122. {capytaine-2.3 → capytaine-2.3.1}/pytest/envs/2024-10-22-py3.12.txt +0 -0
  123. {capytaine-2.3 → capytaine-2.3.1}/pytest/envs/2025-04-18-py3.12.txt +0 -0
  124. {capytaine-2.3 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/single_body/Hydrostatics.dat +0 -0
  125. {capytaine-2.3 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/single_body/KH.dat +0 -0
  126. {capytaine-2.3 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/single_body_list/Hydrostatics.dat +0 -0
  127. {capytaine-2.3 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/single_body_list/KH.dat +0 -0
  128. {capytaine-2.3 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/two_bodies_list/Hydrostatics_0.dat +0 -0
  129. {capytaine-2.3 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/two_bodies_list/Hydrostatics_1.dat +0 -0
  130. {capytaine-2.3 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/two_bodies_list/KH_0.dat +0 -0
  131. {capytaine-2.3 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/two_bodies_list/KH_1.dat +0 -0
  132. {capytaine-2.3 → capytaine-2.3.1}/pytest/mesh_files_examples/barge.med +0 -0
  133. {capytaine-2.3 → capytaine-2.3.1}/pytest/mesh_files_examples/cylinder2.msh +0 -0
  134. {capytaine-2.3 → capytaine-2.3.1}/pytest/mesh_files_examples/cylinder4.msh +0 -0
  135. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_airy_waves.py +0 -0
  136. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_engines_basic_matric_engine.py +0 -0
  137. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_engines_hierarchical_toeplitz_matrices.py +0 -0
  138. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_linear_combination_of_dofs.py +0 -0
  139. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_no_free_surface.py +0 -0
  140. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_potential_velocity_and_free_surface_elevation.py +0 -0
  141. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_problems_and_results.py +0 -0
  142. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_solver.py +0 -0
  143. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_with_quadratures.py +0 -0
  144. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bem_zero_and_infinite_freq.py +0 -0
  145. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_bodies_predefined.py +0 -0
  146. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_consistency_with_HAMS.py +0 -0
  147. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_consistency_with_Nemoh_2.py +0 -0
  148. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_consistency_with_analytical_solutions.py +0 -0
  149. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_green_functions_finite_depth.py +0 -0
  150. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_green_functions_fortran_core.py +0 -0
  151. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_green_functions_matrix_shape.py +0 -0
  152. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_green_functions_table_density.py +0 -0
  153. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_hydrostatics.py +0 -0
  154. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_io_bemio.py +0 -0
  155. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_io_legacy.py +0 -0
  156. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_io_meshes.py +0 -0
  157. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_io_meshes_gdf.py +0 -0
  158. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_io_meshes_hst.py +0 -0
  159. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_io_meshes_mar.py +0 -0
  160. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_io_meshes_pnl.py +0 -0
  161. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_io_wamit.py +0 -0
  162. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_io_xarray.py +0 -0
  163. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_linear_solvers.py +0 -0
  164. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_matrices.py +0 -0
  165. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_meshes_clipping.py +0 -0
  166. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_meshes_geometry.py +0 -0
  167. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_meshes_lid_generation.py +0 -0
  168. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_meshes_predefined.py +0 -0
  169. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_post_pro_kochin.py +0 -0
  170. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_post_pro_rao.py +0 -0
  171. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_tool_lru_cache.py +0 -0
  172. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_ui_matplotlib.py +0 -0
  173. {capytaine-2.3 → capytaine-2.3.1}/pytest/test_ui_vtk.py +0 -0
  174. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/__init__.py +0 -0
  175. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bem/__init__.py +0 -0
  176. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bem/airy_waves.py +0 -0
  177. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bem/engines.py +0 -0
  178. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bodies/__init__.py +0 -0
  179. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bodies/dofs.py +0 -0
  180. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bodies/predefined/__init__.py +0 -0
  181. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bodies/predefined/cylinders.py +0 -0
  182. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bodies/predefined/rectangles.py +0 -0
  183. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/bodies/predefined/spheres.py +0 -0
  184. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/FinGreen3D/.gitignore +0 -0
  185. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/FinGreen3D/FinGreen3D.f90 +0 -0
  186. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/FinGreen3D/LICENSE +0 -0
  187. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/FinGreen3D/Makefile +0 -0
  188. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/FinGreen3D/README.md +0 -0
  189. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/FinGreen3D/test_program.f90 +0 -0
  190. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/LiangWuNoblesse/.gitignore +0 -0
  191. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/LiangWuNoblesse/LICENSE +0 -0
  192. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/LiangWuNoblesse/LiangWuNoblesseWaveTerm.f90 +0 -0
  193. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/LiangWuNoblesse/README.md +0 -0
  194. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/LiangWuNoblesse/test_program.f90 +0 -0
  195. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/__init__.py +0 -0
  196. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/abstract_green_function.py +0 -0
  197. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/hams.py +0 -0
  198. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/.gitignore +0 -0
  199. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/LICENSE +0 -0
  200. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/Makefile +0 -0
  201. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/README.md +0 -0
  202. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/openmp/benchmark_omp.f90 +0 -0
  203. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/openmp/display_mesh.py +0 -0
  204. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/openmp/read_output.py +0 -0
  205. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/profiling/benchmark_profiling.f90 +0 -0
  206. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/rankine/benchmark_rankine.f90 +0 -0
  207. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/tabulations/benchmark_tabulation.f90 +0 -0
  208. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/waves/benchmark_waves.f90 +0 -0
  209. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/examples/minimal/minimal_example.f90 +0 -0
  210. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/examples/minimal/minimal_example.py +0 -0
  211. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/Delhommeau_integrals.f90 +0 -0
  212. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/FinGreen3D.f90 +0 -0
  213. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/Green_Rankine.f90 +0 -0
  214. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/Green_wave.f90 +0 -0
  215. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/LiangWuNoblesseWaveTerm.f90 +0 -0
  216. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/constants.f90 +0 -0
  217. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/float32.f90 +0 -0
  218. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/float64.f90 +0 -0
  219. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/interface.f90 +0 -0
  220. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/matrices.f90 +0 -0
  221. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/old_Prony_decomposition.f90 +0 -0
  222. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/green_functions/libs/__init__.py +0 -0
  223. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/io/__init__.py +0 -0
  224. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/io/bemio.py +0 -0
  225. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/io/legacy.py +0 -0
  226. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/io/mesh_loaders.py +0 -0
  227. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/io/mesh_writers.py +0 -0
  228. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/io/meshio.py +0 -0
  229. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/io/wamit.py +0 -0
  230. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/matrices/__init__.py +0 -0
  231. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/matrices/block.py +0 -0
  232. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/matrices/block_toeplitz.py +0 -0
  233. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/matrices/builders.py +0 -0
  234. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/matrices/linear_solvers.py +0 -0
  235. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/matrices/low_rank.py +0 -0
  236. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/__init__.py +0 -0
  237. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/clipper.py +0 -0
  238. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/geometry.py +0 -0
  239. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/predefined/__init__.py +0 -0
  240. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/predefined/cylinders.py +0 -0
  241. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/predefined/rectangles.py +0 -0
  242. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/predefined/spheres.py +0 -0
  243. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/properties.py +0 -0
  244. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/quadratures.py +0 -0
  245. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/quality.py +0 -0
  246. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/meshes/surface_integrals.py +0 -0
  247. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/post_pro/__init__.py +0 -0
  248. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/post_pro/free_surfaces.py +0 -0
  249. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/post_pro/impedance.py +0 -0
  250. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/post_pro/kochin.py +0 -0
  251. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/post_pro/rao.py +0 -0
  252. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/tools/__init__.py +0 -0
  253. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/tools/cache_on_disk.py +0 -0
  254. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/tools/deprecation_handling.py +0 -0
  255. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/tools/lists_of_points.py +0 -0
  256. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/tools/lru_cache.py +0 -0
  257. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/tools/optional_imports.py +0 -0
  258. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/tools/prony_decomposition.py +0 -0
  259. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/ui/__init__.py +0 -0
  260. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/ui/cli.py +0 -0
  261. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/ui/rich.py +0 -0
  262. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/ui/vtk/__init__.py +0 -0
  263. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/ui/vtk/animation.py +0 -0
  264. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/ui/vtk/body_viewer.py +0 -0
  265. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/ui/vtk/helpers.py +0 -0
  266. {capytaine-2.3 → capytaine-2.3.1/src}/capytaine/ui/vtk/mesh_viewer.py +0 -0
@@ -31,15 +31,16 @@ jobs:
31
31
  - name: Checkout
32
32
  uses: actions/checkout@v4
33
33
 
34
- - uses: actions/setup-python@v5
35
- with:
36
- python-version: '3.12'
34
+ - name: Set up Just
35
+ run: sudo apt install -y just
37
36
 
38
- - name: Install Capytaine and other dependencies
39
- run: pip install .[optional,docs]
37
+ - name: Set up UV
38
+ uses: astral-sh/setup-uv@v5
39
+ with:
40
+ enable-cache: true
40
41
 
41
42
  - name: Build documentation
42
- run: cd docs && make
43
+ run: just build_docs
43
44
 
44
45
  - name: Deploy pages
45
46
  if: |
@@ -0,0 +1,107 @@
1
+ name: Build wheels
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ tags:
7
+ - v*
8
+ schedule:
9
+ - cron: '6 6 6/16 * *' # On the 6th and 22nd of each month at 6:06
10
+
11
+
12
+ jobs:
13
+ "build_wheels_on_windows":
14
+ name: Build wheels on Windows
15
+ runs-on: windows-2025
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - uses: fortran-lang/setup-fortran@v1
21
+ with:
22
+ compiler: 'gcc'
23
+ version: '13'
24
+
25
+ - name: Build wheels
26
+ uses: pypa/cibuildwheel@v3.2.0
27
+ env:
28
+ CIBW_SKIP: "*win32* cp314t*"
29
+ CIBW_BEFORE_BUILD_WINDOWS: pip install delvewheel
30
+ CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel show {wheel} && delvewheel repair -w {dest_dir} {wheel} --no-mangle-all"
31
+ # Package the DLL dependencies in the wheel for windows (done by default for the other platforms).
32
+ # delvewheel cannot mangle the libraries, stripping does not work.
33
+
34
+ - uses: actions/upload-artifact@v4
35
+ with:
36
+ name: wheels-windows
37
+ path: ./wheelhouse/*.whl
38
+
39
+ "build_wheels_on_ubuntu":
40
+ name: Build wheels on Ubuntu
41
+ runs-on: ubuntu-22.04
42
+
43
+ steps:
44
+ - uses: actions/checkout@v4
45
+
46
+ - uses: fortran-lang/setup-fortran@v1
47
+ with:
48
+ compiler: 'gcc'
49
+ version: '13'
50
+
51
+ - name: Build wheels on Ubuntu
52
+ uses: pypa/cibuildwheel@v3.2.0
53
+ env:
54
+ CIBW_SKIP: "*i686* *musllinux*"
55
+
56
+ - uses: actions/upload-artifact@v4
57
+ with:
58
+ name: wheels-ubuntu
59
+ path: ./wheelhouse/*.whl
60
+
61
+
62
+ "build_wheels_on_macos_intel":
63
+ name: Build wheels on MacOS Intel
64
+ runs-on: macos-13
65
+ # Should be replaced by macos-15-intel soon, but it does not seem to be
66
+ # supported by setup-fortran?
67
+
68
+ steps:
69
+ - uses: actions/checkout@v4
70
+
71
+ - uses: fortran-lang/setup-fortran@v1
72
+ with:
73
+ compiler: 'gcc'
74
+ version: '13'
75
+
76
+ - name: Build wheels
77
+ uses: pypa/cibuildwheel@v3.2.0
78
+ env:
79
+ CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=13.0
80
+
81
+ - uses: actions/upload-artifact@v4
82
+ with:
83
+ name: wheels-macos-intel
84
+ path: ./wheelhouse/*.whl
85
+
86
+
87
+ "build_wheels_on_macos_arm":
88
+ name: Build wheels on MacOS ARM
89
+ runs-on: macos-14
90
+
91
+ steps:
92
+ - uses: actions/checkout@v4
93
+
94
+ - uses: fortran-lang/setup-fortran@v1
95
+ with:
96
+ compiler: 'gcc'
97
+ version: '13'
98
+
99
+ - name: Build wheels
100
+ uses: pypa/cibuildwheel@v3.2.0
101
+ env:
102
+ CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=14.0
103
+
104
+ - uses: actions/upload-artifact@v4
105
+ with:
106
+ name: wheels-macos-arm
107
+ path: ./wheelhouse/*.whl
@@ -16,7 +16,6 @@ on:
16
16
 
17
17
  env:
18
18
  FORCE_COLOR: 3
19
- # Colors for nox
20
19
 
21
20
  # The following block is meant to cancel the workflow if a newer commit is pushed on the pull request
22
21
  # From https://stackoverflow.com/questions/66335225/how-to-cancel-previous-runs-in-the-pr-when-you-push-new-commitsupdate-the-curre
@@ -25,28 +24,35 @@ concurrency:
25
24
  cancel-in-progress: true
26
25
 
27
26
  jobs:
28
- build_and_test:
27
+ "build_and_test":
29
28
 
30
29
  runs-on: ubuntu-latest
31
30
 
32
31
  strategy:
33
32
  matrix:
34
- python-version: ['3.8', '3.12']
33
+ python-version: ['38', '312']
35
34
 
36
35
  steps:
37
36
 
38
37
  - name: Checkout repository
39
38
  uses: actions/checkout@v4
40
39
 
40
+ # - name: Set up Just
41
+ # uses: extractions/setup-just@v3
42
+ # with:
43
+ # just-version: 1.40
44
+ - name: Set up Just
45
+ run: sudo apt install -y just
46
+
41
47
  - name: Set up UV
42
48
  uses: astral-sh/setup-uv@v5
43
49
  with:
44
50
  enable-cache: true
45
51
 
46
- - name: Run nox session
47
- run: uvx nox --force-python ${{ matrix.python-version }} -s build_and_test_on_locked_env
52
+ - name: Run tests
53
+ run: just test_in_py${{ matrix.python-version }}_reference_env
48
54
 
49
- compile_fortran:
55
+ "compile_fortran":
50
56
 
51
57
  runs-on: ubuntu-latest
52
58
 
@@ -66,11 +72,11 @@ jobs:
66
72
  # version: '13'
67
73
 
68
74
  - name: Compile and run example
69
- working-directory: capytaine/green_functions/libDelhommeau/
75
+ working-directory: src/capytaine/green_functions/libDelhommeau/
70
76
  run: make example && examples/minimal/minimal_example.bin
71
77
  # Soundness of the results is not tested, only that the compiling and
72
78
  # execution are succeeding.
73
79
 
74
80
  - name: Run simple benchmark
75
- working-directory: capytaine/green_functions/libDelhommeau/
81
+ working-directory: src/capytaine/green_functions/libDelhommeau/
76
82
  run: make run_bench_rankine && make run_bench_waves
@@ -0,0 +1,48 @@
1
+ name: Build and test using latest available dependencies
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ schedule:
6
+ - cron: '5 5 5/15 * *' # On the 5th and 20th of each month at 5:05
7
+
8
+ env:
9
+ FORCE_COLOR: 3
10
+
11
+ jobs:
12
+ "test_in_latest_env":
13
+
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - name: Checkout repository
18
+ uses: actions/checkout@v4
19
+
20
+ - name: Set up UV
21
+ uses: astral-sh/setup-uv@v5
22
+ with:
23
+ enable-cache: true
24
+
25
+ - name: Set up Just
26
+ run: sudo apt install -y just
27
+
28
+ - name: Run tests
29
+ run: just test_in_latest_env
30
+
31
+ "test_in_nightly_env":
32
+
33
+ runs-on: ubuntu-latest
34
+
35
+ steps:
36
+ - name: Checkout repository
37
+ uses: actions/checkout@v4
38
+
39
+ - name: Set up UV
40
+ uses: astral-sh/setup-uv@v5
41
+ with:
42
+ enable-cache: true
43
+
44
+ - name: Set up Just
45
+ run: sudo apt install -y just
46
+
47
+ - name: Run tests
48
+ run: just test_in_nightly_env
@@ -37,4 +37,4 @@ repos:
37
37
  rev: "v2.2.5"
38
38
  hooks:
39
39
  - id: codespell
40
- args: ["-L", "ans,ba,informations,inout,ist,lamda,ment,noe,periode,sur", "--skip", "capytaine/green_functions/libDelhommeau/src/old_Prony_decomposition.f90"]
40
+ args: ["-L", "ans,ba,informations,inout,ist,lamda,ment,noe,periode,sur", "--skip", "src/capytaine/green_functions/libDelhommeau/src/old_Prony_decomposition.f90"]
@@ -0,0 +1,154 @@
1
+ set shell := ["bash", "-c"]
2
+ set windows-shell := ["powershell.exe", "-c"]
3
+
4
+ default:
5
+ just --list
6
+
7
+ editable_install:
8
+ uv pip install -r pyproject.toml \
9
+ --group editable_install \
10
+ --group dev
11
+ pip install --no-build-isolation --editable .
12
+ # Meson-backed editable install is not (yet?) supported by uv (https://github.com/astral-sh/uv/issues/10214)
13
+
14
+ # Define the temporary directory differently based on OS
15
+ TEMP_DIR := if os_family() == 'windows' {
16
+ `$temp = Join-Path $env:TEMP ('capytainedev-' + [System.IO.Path]::GetRandomFileName()); New-Item -ItemType Directory -Path $temp -Force | Out-Null; Write-Output $temp`
17
+ } else {
18
+ `mktemp --directory --tmpdir capytainedev-XXXXX`
19
+ }
20
+
21
+ ENV := "MPLBACKEND=pdf CAPYTAINE_PROGRESS_BAR=False CAPYTAINE_CACHE_DIR=" + TEMP_DIR + "/cache/"
22
+
23
+ TEST_DIR := justfile_directory() / 'pytest'
24
+ NEMOH_CASES := TEST_DIR / 'Nemoh_verification_cases' / 'Cylinder'
25
+
26
+ EXAMPLES_DIR := justfile_directory() / 'docs' / 'examples' / 'src'
27
+ EXAMPLES_FILES := ' \
28
+ A1_radiation_cylinder.py \
29
+ A2_multibody.py \
30
+ A3_finite_depth_cylinder.py \
31
+ A4_custom_dofs.py \
32
+ A5_convergence_study.py \
33
+ A7_elasticity_of_beam.py \
34
+ A8_export_dataset.py \
35
+ B1_pressure_on_hull.py \
36
+ B2_haskind.py \
37
+ B3_free_surface_elevation.py \
38
+ B4_kochin.py \
39
+ B5_plot_velocity_in_domain.py \
40
+ B8_pressure_infinite_frequency.py \
41
+ C5_plot_influence_matrix.py \
42
+ C8_compare_Green_functions.py \
43
+ C9_custom_Green_function.py \
44
+ '
45
+
46
+ ## Reason for skipping some example files:
47
+ # A6_irregular_frequency_removal.py \ # Slow
48
+ # B6_animate_free_surface.py \ # Requires VTK
49
+ # B7_boat_animation.py \ # Requires VTK
50
+ # C6_axisymmetric_buoy.py \ # Requires VTK
51
+ # C7_h_matrices_with_preconditionner.py \ # Slow
52
+ # C10_custom_linear_solver_on_gpu.py \ # Requires torch
53
+
54
+ # Run the test suite and the example files assuming a virtual environment has been activated
55
+ [unix]
56
+ _test:
57
+ #!/usr/bin/env bash
58
+ set -euxo pipefail
59
+ uv pip list | grep -Ei "numpy|xarray|capytaine" || true
60
+ cd {{TEMP_DIR}}
61
+ export {{ENV}}
62
+ python -c "import capytaine; print(capytaine.__version__)"
63
+ python -m pytest {{TEST_DIR}}
64
+ capytaine --help
65
+ capytaine {{NEMOH_CASES}}/Nemoh.cal
66
+ capytaine {{NEMOH_CASES}}/Nemoh_v3.cal
67
+ set +x # Stop displaying commands
68
+ for f in {{EXAMPLES_FILES}}; do
69
+ echo -e "\n---> Running $f";
70
+ python {{EXAMPLES_DIR}}/$f;
71
+ done
72
+
73
+ # Simplified version of the above, working on Windows
74
+ [windows]
75
+ _test:
76
+ #! powershell
77
+ cd {{TEMP_DIR}}
78
+ python -c "import capytaine; print(capytaine.__version__)"
79
+ python -m pytest {{TEST_DIR}}
80
+ capytaine --help
81
+ capytaine {{NEMOH_CASES}}/Nemoh.cal
82
+ capytaine {{NEMOH_CASES}}/Nemoh_v3.cal
83
+
84
+
85
+ test_in_latest_env:
86
+ uv run \
87
+ --isolated --no-editable \
88
+ --only-group test \
89
+ just _test
90
+
91
+ test_in_py38_reference_env:
92
+ uv run \
93
+ --isolated --no-editable \
94
+ --only-group test \
95
+ --python 3.8 \
96
+ --with-requirements {{TEST_DIR}}/envs/2023-08-01-py3.8.txt \
97
+ just _test
98
+ # TODO: Also build Capytaine in this environment?
99
+
100
+ test_in_py312_reference_env:
101
+ uv run \
102
+ --isolated --no-editable \
103
+ --only-group test \
104
+ --python 3.12 \
105
+ --with-requirements {{TEST_DIR}}/envs/2025-04-18-py3.12.txt \
106
+ just _test
107
+ # TODO: Also build Capytaine in this environment?
108
+
109
+ test_in_nightly_env:
110
+ uv run \
111
+ --isolated --no-editable \
112
+ --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple \
113
+ --index-strategy unsafe-best-match \
114
+ --python 3.13 \
115
+ --only-group test \
116
+ just _test
117
+ # "--index-strategy unsafe-best-match" means uv should not ignore wheels
118
+ # from PyPI during universal resolution
119
+ # TODO: Also build Capytaine in this environment?
120
+
121
+ # How the requirements files from the above recipes where generated.
122
+ create_test_env_file python="3.8" date="2023-08-01":
123
+ uv pip compile \
124
+ pyproject.toml editable_install_requirements.txt \
125
+ --python-version {{python}} \
126
+ --exclude-newer {{date}} \
127
+ --extra optional --extra test \
128
+ -o {{TEST_DIR}}/envs/{{date}}-py{{python}}.txt
129
+
130
+ # Compile the Fortran code without parallelism for easier reading of the errors.
131
+ test_fortran_compilation:
132
+ # It is assumed that meson and ninja are already installed (e.g. with editable_install).
133
+ meson setup --wipe {{TEMP_DIR}}/build && meson compile -C {{TEMP_DIR}}/build -j 1
134
+
135
+
136
+ build_docs:
137
+ uv run \
138
+ --isolated --no-editable \
139
+ --only-group docs \
140
+ -- \
141
+ make --directory="./docs/"
142
+
143
+
144
+ clean:
145
+ rm -f src/capytaine/green_functions/libs/*.so
146
+ rm -rf build/
147
+ rm -rf dist/
148
+ rm -rf src/capytaine.egg-info/
149
+ rm -rf docs/_build
150
+ rm -rf .pytest_cache/
151
+ rm -rf .venv/
152
+ rm -rf __pycache__ */__pycache__ */*/__pycache__ */*/*/__pycache__
153
+ rm -rf $HOME/.cache/capytaine/*
154
+ rm -rf /tmp/capytainedev-*/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: capytaine
3
- Version: 2.3
3
+ Version: 2.3.1
4
4
  Summary: Python BEM solver for linear potential flow, based on Nemoh
5
5
  Author-Email: Matthieu Ancellin <matthieu.ancellin@mews-labs.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -689,7 +689,7 @@ Requires-Python: >=3.8
689
689
  Requires-Dist: numpy>=1.20; python_version >= "3.9"
690
690
  Requires-Dist: numpy>=1.24; python_version == "3.8"
691
691
  Requires-Dist: scipy
692
- Requires-Dist: pandas>=1.3
692
+ Requires-Dist: pandas<3,>=1.3
693
693
  Requires-Dist: xarray
694
694
  Requires-Dist: rich
695
695
  Provides-Extra: optional
@@ -698,17 +698,6 @@ Requires-Dist: joblib>=1.3; extra == "optional"
698
698
  Requires-Dist: meshio; extra == "optional"
699
699
  Requires-Dist: netcdf4; extra == "optional"
700
700
  Requires-Dist: vtk; extra == "optional"
701
- Provides-Extra: more-optional
702
- Requires-Dist: pygmsh; extra == "more-optional"
703
- Requires-Dist: gmsh; extra == "more-optional"
704
- Provides-Extra: test
705
- Requires-Dist: pytest; extra == "test"
706
- Requires-Dist: capytaine[optional]; extra == "test"
707
- Provides-Extra: docs
708
- Requires-Dist: sphinx; extra == "docs"
709
- Requires-Dist: sphinx-toolbox; extra == "docs"
710
- Requires-Dist: sphinxcontrib-proof; extra == "docs"
711
- Requires-Dist: sphinxcontrib-mermaid; extra == "docs"
712
701
  Description-Content-Type: text/markdown
713
702
 
714
703
  # Capytaine: a linear potential flow BEM solver with Python.
@@ -28,4 +28,4 @@ test: show
28
28
 
29
29
  autodoc:
30
30
  rm -rf developer_manual/api/capytaine*.rst
31
- sphinx-apidoc -o developer_manual/api/ ../capytaine --separate --doc-project "API documentation"
31
+ sphinx-apidoc -o developer_manual/api/ ../src/capytaine --separate --doc-project "API documentation"
@@ -7,6 +7,41 @@ Changelog
7
7
  :depth: 1
8
8
  :backlinks: none
9
9
 
10
+
11
+ ---------------------------------
12
+ New in version 2.3.1 (2025-10-14)
13
+ ---------------------------------
14
+
15
+ Bug fix
16
+ ~~~~~~~
17
+
18
+ * Fix **major bug of version 2.3** where the resolution of problem with **both mesh
19
+ symmetries and a lid** for irregular frequencies removal returned wrong values.
20
+ (:issue:`761`)
21
+
22
+ * Fix issue where in-place transformation of a ``FloatingBody`` (such as
23
+ ``body.keep_immersed_part()`` or ``body.translate(...)``) were sometimes not
24
+ taken into account. In-place transformation are not recommended and might be
25
+ removed in a future version, use the versions returning new objects as seen
26
+ in the documentation (e.g. ``body.immersed_part()`` and
27
+ ``body.translated(...)``).
28
+
29
+ * If loading the tabulation from the file fails, then the tabulation is
30
+ recomputed (`Issue 739
31
+ <https://github.com/capytaine/capytaine/issues/739#issuecomment-3190735343>`_)
32
+
33
+ Internals
34
+ ~~~~~~~~~
35
+
36
+ - The source code moved from ``capytaine`` to ``src/capytaine`` in the main
37
+ repository to avoid importing the local folder instead of the installed
38
+ version (:issue:`395` and :pull:`749`).
39
+
40
+ - Replace development dependencies in ``editable_install_requirements.txt`` and
41
+ ``[project.optional-dependencies]`` with ``[dependency-groups]``
42
+ (:pull:`750`).
43
+
44
+
10
45
  -------------------------------
11
46
  New in version 2.3 (2025-07-17)
12
47
  -------------------------------
@@ -35,13 +70,13 @@ Major change
35
70
  * Infinite frequency is now supported in finite depth (zero frequency is still not and returns the same error as other finite depth low-frequency cases). (:pull:`703`)
36
71
 
37
72
  * Do not interrupt a batch of resolutions when one of them fails.
38
- Instead the exception is displayed in the log and the results are replaced by a :class:`~capytaine.bem.problems_and_results.FailedDiffractionResult` or :class:`~capytaine.bem.problems_and_results.FailedRadiationResult`. The output dataset is filled with a `NaN` value for these parameters. (:pull:`678`)
73
+ Instead the exception is displayed in the log and the results are replaced by a :class:`~capytaine.bem.problems_and_results.FailedDiffractionResult` or :class:`~capytaine.bem.problems_and_results.FailedRadiationResult`. The output dataset is filled with a ``NaN`` value for these parameters. (:pull:`678`)
39
74
  Diffraction problems with zero or infinite frequencies used to have a special treatment to be run with a batch resolution despite raising an error when run alone, they have been reworked to use the same design as other failing resolutions. (:pull:`719`)
40
75
 
41
76
  * The Boundary Integral Equation (``method`` keyword argument) used to solve the problem can now be specified when initializing a solver and will then be use for all resolution with this solver. This general setting can be over overridden by using the ``method`` argument when solving::
42
77
 
43
- solver = cpt.BEMSolver(method="direct") # That is new and recommended
44
- solver.solve(problem, method="direct") # That is still possible and override the above setting.
78
+ solver = cpt.BEMSolver(method="direct") # That is new and recommended
79
+ solver.solve(problem, method="direct") # That is still possible and override the above setting.
45
80
 
46
81
  The method is also saved in the metadata of the results with the other parameters of the solver (whether it was defined when initializing the solver or later). (:pull:`686`)
47
82
 
@@ -52,8 +87,8 @@ Minor change
52
87
 
53
88
  * Add optional :code:`freq` argument (frequency in Hz) for problem set up and output.
54
89
 
55
- * Add :func:`~capytaine.io.xarray.assemble_dataframe` which collect results into a Pandas DataFrame (this was already done internally in `~capytaine.io.xarray.assemble_dataset`) (:pull:`677`).
56
- Also add :func:`~capytaine.io.xarray.assemble_matrices` function which is a simplified version of `~capytaine.io.xarray.assemble_dataset` without metadata, meant to be used mostly for teaching. (:pull:`643`)
90
+ * Add :func:`~capytaine.io.xarray.assemble_dataframe` which collect results into a Pandas DataFrame (this was already done internally in :func:`~capytaine.io.xarray.assemble_dataset`) (:pull:`677`).
91
+ Also add :func:`~capytaine.io.xarray.assemble_matrices` function which is a simplified version of :func:`~capytaine.io.xarray.assemble_dataset` without metadata, meant to be used mostly for teaching. (:pull:`643`)
57
92
 
58
93
  * The environment variable ``CAPYTAINE_PROGRESS_BAR`` can be used to disable globally the display of a progress bar when solving problems. This is meant mostly for testing environments and CI. (:pull:`646`)
59
94
 
@@ -65,7 +100,7 @@ Minor change
65
100
  Bug fixes
66
101
  ~~~~~~~~~
67
102
 
68
- * Properly use `progress_bar` argument in :func:`~capytaine.bem.solver.fill_dataset` to disable progress bar.
103
+ * Properly use ``progress_bar`` argument in :func:`~capytaine.bem.solver.fill_dataset` to disable progress bar.
69
104
 
70
105
  * Always remove degenerate faces after clipping (:issue:`620` and :pull:`624`).
71
106
 
@@ -132,7 +167,7 @@ Bug fixes
132
167
  (:issue:`573` and :pull:`575`).
133
168
 
134
169
  * GDF meshes are accepted in the alternate format now.
135
- Meshes files can list points in either 3 x 4*nPanels or a 12 x nPanels format.
170
+ Meshes files can list points in either 3×4 × ``nb_faces`` or a 12 × ``nb_faces`` format.
136
171
  (:issue:`540` and :pull:`585`).
137
172
 
138
173
  * When filling a test matrix with both diffraction problems and radiation
@@ -144,12 +179,12 @@ Bug fixes
144
179
  When forward speed is non-zero, added mass and radiation dampings at zero encounter frequency are NaN.
145
180
  (:pull:`588`)
146
181
 
147
- * User does not need to import ``pyplot`` themself before running `show_matplotlib()` (:pull:`592`)
182
+ * User does not need to import ``pyplot`` themself before running :meth:`~capytaine.meshes.meshes.Mesh.show_matplotlib()` (:pull:`592`)
148
183
 
149
184
  * Fixes usage of ``ReflectionSymmetricMesh`` with direct solver (:issue:`593` and :pull:`594`).
150
185
 
151
186
  * Do not recompute the same
152
- :meth:`~capytaine.bodies.bodies.FloatingBody.first_irregular_frequency_estimate``
187
+ :meth:`~capytaine.bodies.bodies.FloatingBody.first_irregular_frequency_estimate`
153
188
  for the same body several times.
154
189
  Also better expose the ``_check_wavelength`` option to skip wavelength check,
155
190
  including irregular frequency estimation. (:issue:`601` and :pull:`602`).
@@ -193,9 +228,9 @@ Minor changes
193
228
 
194
229
  * Add a ``tabulation_cache_dir`` parameter to :class:`~capytaine.green_functions.delhommeau.Delhommeau` to choose the directory in which the tabulation is saved on disk. If ``None`` is provided instead, the tabulation is not saved on disk and is recomputed at each initialization of the class. Also, if this parameter is not set, look for the ``CAPYTAINE_CACHE_DIR`` environment variable and use it to save the tabulation if it exists. (:pull:`516`).
195
230
 
196
- * Meshio objects can be directly passed to :func:`~capytaine.io.meshes_loaders.load_mesh` to get a Capytaine mesh (:pull:`555`).
231
+ * Meshio objects can be directly passed to :func:`~capytaine.io.mesh_loaders.load_mesh` to get a Capytaine mesh (:pull:`555`).
197
232
 
198
- * Load gmsh v4 format .msh file using :code:`cpt.load_mesh()` (when meshio is installed) (:pull:`556`)
233
+ * Load gmsh v4 format .msh file using :func:`~capytaine.io.mesh_loaders.load_mesh` (when meshio is installed) (:pull:`556`)
199
234
 
200
235
 
201
236
  Bug fixes
@@ -690,7 +725,7 @@ Major changes
690
725
  to migrate to the new structure.
691
726
 
692
727
  See :doc:`user_manual/resolution` for the full documentation of the new structure
693
- and :doc:`user_manual/cookbook` for examples.
728
+ and the cookbook for examples.
694
729
 
695
730
 
696
731
  * Add Xie's variant of Delhommeau's Green function
@@ -51,7 +51,8 @@ extensions = [
51
51
  'sphinx.ext.napoleon',
52
52
  'sphinx.ext.viewcode',
53
53
  'sphinx_toolbox.collapse',
54
- 'sphinxcontrib.proof',
54
+ 'sphinx_proof',
55
+ 'sphinx_copybutton',
55
56
  'sphinxcontrib.mermaid',
56
57
  ]
57
58