capytaine 2.2.1__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 (284) hide show
  1. {capytaine-2.2.1 → capytaine-2.3.1}/.github/workflows/build_docs.yml +11 -7
  2. capytaine-2.3.1/.github/workflows/build_wheels.yaml +107 -0
  3. {capytaine-2.2.1 → capytaine-2.3.1}/.github/workflows/test_new_commits.yaml +20 -13
  4. capytaine-2.3.1/.github/workflows/test_with_latest_dependencies.yaml +48 -0
  5. {capytaine-2.2.1 → capytaine-2.3.1}/.gitignore +1 -0
  6. {capytaine-2.2.1 → capytaine-2.3.1}/.pre-commit-config.yaml +1 -1
  7. capytaine-2.3.1/CONTRIBUTING.md +18 -0
  8. capytaine-2.3.1/Justfile +154 -0
  9. {capytaine-2.2.1 → capytaine-2.3.1}/PKG-INFO +6 -10
  10. {capytaine-2.2.1 → capytaine-2.3.1}/docs/Makefile +1 -1
  11. {capytaine-2.2.1 → capytaine-2.3.1}/docs/changelog.rst +149 -6
  12. capytaine-2.3.1/docs/citing.rst +127 -0
  13. {capytaine-2.2.1 → capytaine-2.3.1}/docs/conf.py +2 -1
  14. capytaine-2.2.1/CONTRIBUTING.md → capytaine-2.3.1/docs/developer_manual/contributing.rst +14 -24
  15. {capytaine-2.2.1 → capytaine-2.3.1}/docs/developer_manual/index.rst +3 -0
  16. capytaine-2.3.1/docs/developer_manual/installation.rst +195 -0
  17. capytaine-2.3.1/docs/developer_manual/making_a_release.rst +106 -0
  18. capytaine-2.3.1/docs/developer_manual/testing.rst +136 -0
  19. capytaine-2.3.1/docs/examples/A_beginners_cookbook.rst +84 -0
  20. capytaine-2.3.1/docs/examples/B_intermediate_cookbook.rst +93 -0
  21. capytaine-2.3.1/docs/examples/C_advanced_cookbook.rst +87 -0
  22. capytaine-2.3.1/docs/examples/index.rst +12 -0
  23. capytaine-2.2.1/docs/user_manual/examples/radiation_cylinder.py → capytaine-2.3.1/docs/examples/src/A1_radiation_cylinder.py +13 -11
  24. capytaine-2.2.1/docs/user_manual/examples/multibody.py → capytaine-2.3.1/docs/examples/src/A2_multibody.py +0 -3
  25. capytaine-2.3.1/docs/examples/src/A3_finite_depth_cylinder.py +46 -0
  26. capytaine-2.2.1/docs/user_manual/examples/custom_dofs.py → capytaine-2.3.1/docs/examples/src/A4_custom_dofs.py +0 -2
  27. capytaine-2.2.1/docs/user_manual/examples/elasticity_of_beam.py → capytaine-2.3.1/docs/examples/src/A7_elasticity_of_beam.py +0 -3
  28. capytaine-2.3.1/docs/examples/src/A8_export_dataset.py +45 -0
  29. capytaine-2.2.1/docs/user_manual/examples/pressure_on_hull.py → capytaine-2.3.1/docs/examples/src/B1_pressure_on_hull.py +4 -1
  30. capytaine-2.2.1/docs/user_manual/examples/haskind.py → capytaine-2.3.1/docs/examples/src/B2_haskind.py +1 -5
  31. capytaine-2.2.1/docs/user_manual/examples/free_surface_elevation.py → capytaine-2.3.1/docs/examples/src/B3_free_surface_elevation.py +0 -2
  32. capytaine-2.2.1/docs/user_manual/examples/kochin.py → capytaine-2.3.1/docs/examples/src/B4_kochin.py +1 -1
  33. capytaine-2.2.1/docs/user_manual/examples/plot_velocity_in_domain.py → capytaine-2.3.1/docs/examples/src/B5_plot_velocity_in_domain.py +4 -4
  34. capytaine-2.2.1/docs/user_manual/examples/animate_free_surface.py → capytaine-2.3.1/docs/examples/src/B6_animate_free_surface.py +0 -2
  35. capytaine-2.3.1/docs/examples/src/B8_pressure_infinite_frequency.py +26 -0
  36. capytaine-2.3.1/docs/examples/src/C10_custom_linear_solver_on_gpu.py +90 -0
  37. capytaine-2.2.1/docs/user_manual/examples/plot_influence_matrix.py → capytaine-2.3.1/docs/examples/src/C5_plot_influence_matrix.py +0 -2
  38. capytaine-2.2.1/docs/user_manual/examples/axisymmetric_buoy.py → capytaine-2.3.1/docs/examples/src/C6_axisymmetric_buoy.py +1 -3
  39. capytaine-2.2.1/docs/user_manual/examples/preconditioner.py → capytaine-2.3.1/docs/examples/src/C7_h_matrices_with_preconditionner.py +0 -2
  40. capytaine-2.3.1/docs/examples/src/C8_compare_Green_functions.py +41 -0
  41. capytaine-2.3.1/docs/examples/src/C9_custom_Green_function.py +106 -0
  42. {capytaine-2.2.1/docs/user_manual/examples → capytaine-2.3.1/docs/examples/src}/quickstart.py +12 -10
  43. capytaine-2.3.1/docs/examples/validation.rst +17 -0
  44. {capytaine-2.2.1 → capytaine-2.3.1}/docs/index.rst +7 -2
  45. {capytaine-2.2.1 → capytaine-2.3.1}/docs/theory_manual/theory.rst +49 -8
  46. capytaine-2.3.1/docs/user_manual/Panel_convention.svg +187 -0
  47. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/body.rst +2 -2
  48. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/conventions.rst +1 -1
  49. capytaine-2.3.1/docs/user_manual/export_output.rst +166 -0
  50. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/index.rst +1 -2
  51. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/installation.rst +60 -36
  52. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/mesh.rst +10 -3
  53. capytaine-2.3.1/docs/user_manual/post_pro.rst +256 -0
  54. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/problem_setup.rst +46 -4
  55. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/quickstart.rst +2 -4
  56. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/resolution.rst +121 -23
  57. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/tutorial.rst +50 -34
  58. {capytaine-2.2.1 → capytaine-2.3.1}/meson.build +26 -18
  59. capytaine-2.3.1/pyproject.toml +84 -0
  60. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/envs/2023-08-01-py3.8.txt +13 -1
  61. capytaine-2.3.1/pytest/envs/2025-04-18-py3.12.txt +93 -0
  62. capytaine-2.2.1/pytest/test_bem_engines.py → capytaine-2.3.1/pytest/test_bem_engines_basic_matric_engine.py +24 -4
  63. capytaine-2.2.1/pytest/test_bem_hierarchical_toeplitz_matrices.py → capytaine-2.3.1/pytest/test_bem_engines_hierarchical_toeplitz_matrices.py +16 -16
  64. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_bem_irregular_frequencies_removal.py +47 -4
  65. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_bem_linear_combination_of_dofs.py +4 -4
  66. capytaine-2.3.1/pytest/test_bem_no_free_surface.py +27 -0
  67. capytaine-2.3.1/pytest/test_bem_problems_and_results.py +329 -0
  68. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_bem_solver.py +39 -12
  69. capytaine-2.3.1/pytest/test_bem_zero_and_infinite_freq.py +212 -0
  70. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_bodies.py +63 -0
  71. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_bodies_predefined.py +11 -0
  72. capytaine-2.3.1/pytest/test_consistency_with_HAMS.py +55 -0
  73. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_consistency_with_Nemoh_2.py +2 -0
  74. capytaine-2.3.1/pytest/test_consistency_with_analytical_solutions.py +31 -0
  75. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_forward_speed.py +3 -3
  76. capytaine-2.3.1/pytest/test_green_functions_finite_depth.py +202 -0
  77. capytaine-2.2.1/pytest/test_bem_green_function_fortran_core.py → capytaine-2.3.1/pytest/test_green_functions_fortran_core.py +61 -71
  78. capytaine-2.3.1/pytest/test_green_functions_tabulation_caching.py +40 -0
  79. capytaine-2.3.1/pytest/test_io_bemio.py +26 -0
  80. capytaine-2.2.1/pytest/test_io.py → capytaine-2.3.1/pytest/test_io_legacy.py +3 -64
  81. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_io_meshes.py +1 -1
  82. capytaine-2.3.1/pytest/test_io_wamit.py +313 -0
  83. capytaine-2.3.1/pytest/test_io_xarray.py +333 -0
  84. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_meshes.py +31 -79
  85. capytaine-2.3.1/pytest/test_meshes_clipping.py +102 -0
  86. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_meshes_collections_and_symmetries.py +58 -0
  87. capytaine-2.3.1/pytest/test_meshes_interface.py +92 -0
  88. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_meshes_lid_generation.py +48 -1
  89. capytaine-2.3.1/pytest/test_tool_symbolic_multiplication.py +76 -0
  90. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/__about__.py +1 -1
  91. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/__init__.py +2 -1
  92. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bem/airy_waves.py +7 -2
  93. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bem/problems_and_results.py +91 -39
  94. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bem/solver.py +128 -40
  95. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bodies/bodies.py +46 -18
  96. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bodies/predefined/rectangles.py +2 -0
  97. capytaine-2.3.1/src/capytaine/green_functions/FinGreen3D/.gitignore +1 -0
  98. capytaine-2.3.1/src/capytaine/green_functions/FinGreen3D/FinGreen3D.f90 +3589 -0
  99. capytaine-2.3.1/src/capytaine/green_functions/FinGreen3D/LICENSE +165 -0
  100. capytaine-2.3.1/src/capytaine/green_functions/FinGreen3D/Makefile +16 -0
  101. capytaine-2.3.1/src/capytaine/green_functions/FinGreen3D/README.md +24 -0
  102. capytaine-2.3.1/src/capytaine/green_functions/FinGreen3D/test_program.f90 +39 -0
  103. capytaine-2.3.1/src/capytaine/green_functions/LiangWuNoblesse/.gitignore +1 -0
  104. capytaine-2.3.1/src/capytaine/green_functions/LiangWuNoblesse/LICENSE +504 -0
  105. capytaine-2.3.1/src/capytaine/green_functions/LiangWuNoblesse/LiangWuNoblesseWaveTerm.f90 +751 -0
  106. capytaine-2.3.1/src/capytaine/green_functions/LiangWuNoblesse/Makefile +16 -0
  107. capytaine-2.3.1/src/capytaine/green_functions/LiangWuNoblesse/README.md +2 -0
  108. capytaine-2.3.1/src/capytaine/green_functions/LiangWuNoblesse/test_program.f90 +28 -0
  109. capytaine-2.3.1/src/capytaine/green_functions/abstract_green_function.py +64 -0
  110. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/delhommeau.py +205 -130
  111. capytaine-2.3.1/src/capytaine/green_functions/hams.py +204 -0
  112. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/Makefile +17 -4
  113. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/openmp/benchmark_omp.f90 +7 -53
  114. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/profiling/benchmark_profiling.f90 +6 -51
  115. capytaine-2.3.1/src/capytaine/green_functions/libDelhommeau/benchmarks/rankine/benchmark_rankine.f90 +71 -0
  116. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/tabulations/benchmark_tabulation.f90 +1 -1
  117. capytaine-2.3.1/src/capytaine/green_functions/libDelhommeau/benchmarks/waves/benchmark_waves.f90 +186 -0
  118. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/examples/minimal/minimal_example.f90 +25 -40
  119. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/examples/minimal/minimal_example.py +5 -5
  120. capytaine-2.3.1/src/capytaine/green_functions/libDelhommeau/src/FinGreen3D.f90 +3589 -0
  121. capytaine-2.3.1/src/capytaine/green_functions/libDelhommeau/src/Green_Rankine.f90 +331 -0
  122. capytaine-2.3.1/src/capytaine/green_functions/libDelhommeau/src/Green_wave.f90 +604 -0
  123. capytaine-2.3.1/src/capytaine/green_functions/libDelhommeau/src/LiangWuNoblesseWaveTerm.f90 +751 -0
  124. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/constants.f90 +8 -1
  125. capytaine-2.3.1/src/capytaine/green_functions/libDelhommeau/src/interface.f90 +59 -0
  126. capytaine-2.3.1/src/capytaine/green_functions/libDelhommeau/src/matrices.f90 +421 -0
  127. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/old_Prony_decomposition.f90 +15 -14
  128. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/io/bemio.py +14 -2
  129. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/io/mesh_loaders.py +1 -1
  130. capytaine-2.3.1/src/capytaine/io/wamit.py +479 -0
  131. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/io/xarray.py +261 -117
  132. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/matrices/linear_solvers.py +1 -1
  133. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/clipper.py +1 -0
  134. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/collections.py +19 -1
  135. capytaine-2.3.1/src/capytaine/meshes/mesh_like_protocol.py +37 -0
  136. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/meshes.py +28 -8
  137. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/symmetric.py +89 -10
  138. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/post_pro/kochin.py +4 -4
  139. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/tools/lists_of_points.py +3 -3
  140. capytaine-2.3.1/src/capytaine/tools/prony_decomposition.py +150 -0
  141. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/tools/symbolic_multiplication.py +30 -4
  142. capytaine-2.3.1/src/capytaine/tools/timer.py +66 -0
  143. capytaine-2.2.1/.github/workflows/build_wheels.yaml +0 -64
  144. capytaine-2.2.1/.github/workflows/test_with_latest_dependencies.yaml +0 -35
  145. capytaine-2.2.1/Makefile +0 -30
  146. capytaine-2.2.1/capytaine/green_functions/abstract_green_function.py +0 -12
  147. capytaine-2.2.1/capytaine/green_functions/libDelhommeau/src/Green_Rankine.f90 +0 -148
  148. capytaine-2.2.1/capytaine/green_functions/libDelhommeau/src/Green_wave.f90 +0 -402
  149. capytaine-2.2.1/capytaine/green_functions/libDelhommeau/src/matrices.f90 +0 -302
  150. capytaine-2.2.1/capytaine/tools/prony_decomposition.py +0 -94
  151. capytaine-2.2.1/docs/citing.rst +0 -61
  152. capytaine-2.2.1/docs/developer_manual/installation.rst +0 -193
  153. capytaine-2.2.1/docs/user_manual/cookbook.rst +0 -161
  154. capytaine-2.2.1/docs/user_manual/examples/compare_Green_functions.py +0 -33
  155. capytaine-2.2.1/docs/user_manual/examples/custom_Green_function.py +0 -62
  156. capytaine-2.2.1/docs/user_manual/examples/finite_depth_cylinder.py +0 -52
  157. capytaine-2.2.1/docs/user_manual/outputs.rst +0 -289
  158. capytaine-2.2.1/docs/user_manual/post_pro.rst +0 -120
  159. capytaine-2.2.1/editable_install_requirements.txt +0 -12
  160. capytaine-2.2.1/noxfile.py +0 -104
  161. capytaine-2.2.1/pyproject.toml +0 -55
  162. capytaine-2.2.1/pytest/Nemoh_verification_cases/Nemoh.m +0 -121
  163. capytaine-2.2.1/pytest/test_bem_problems_and_results.py +0 -349
  164. capytaine-2.2.1/pytest/test_bem_zero_and_infinite_freq.py +0 -99
  165. capytaine-2.2.1/pytest/test_tool_symbolic_multiplication.py +0 -106
  166. {capytaine-2.2.1 → capytaine-2.3.1}/.zenodo.json +0 -0
  167. {capytaine-2.2.1 → capytaine-2.3.1}/LICENSE +0 -0
  168. {capytaine-2.2.1 → capytaine-2.3.1}/README.md +0 -0
  169. {capytaine-2.2.1 → capytaine-2.3.1}/code_of_conduct.md +0 -0
  170. {capytaine-2.2.1 → capytaine-2.3.1}/docs/_static/custom.css +0 -0
  171. {capytaine-2.2.1 → capytaine-2.3.1}/docs/_static/proof.css +0 -0
  172. {capytaine-2.2.1 → capytaine-2.3.1}/docs/_static/proof.js +0 -0
  173. {capytaine-2.2.1 → capytaine-2.3.1}/docs/_templates/layout.html +0 -0
  174. {capytaine-2.2.1 → capytaine-2.3.1}/docs/developer_manual/overview.rst +0 -0
  175. /capytaine-2.2.1/docs/user_manual/examples/convergence_study.py → /capytaine-2.3.1/docs/examples/src/A5_convergence_study.py +0 -0
  176. /capytaine-2.2.1/docs/user_manual/examples/irregular_frequency_removal.py → /capytaine-2.3.1/docs/examples/src/A6_irregular_frequency_removal.py +0 -0
  177. /capytaine-2.2.1/docs/user_manual/examples/boat_animation.py → /capytaine-2.3.1/docs/examples/src/B7_boat_animation.py +0 -0
  178. /capytaine-2.2.1/docs/user_manual/examples/Malenica_forward_speed.py → /capytaine-2.3.1/docs/examples/src/V_Malenica_forward_speed.py +0 -0
  179. /capytaine-2.2.1/docs/user_manual/examples/hydrostatics.py → /capytaine-2.3.1/docs/examples/src/V_hydrostatics.py +0 -0
  180. {capytaine-2.2.1/docs/user_manual/examples → capytaine-2.3.1/docs/examples/src}/boat_200.mar +0 -0
  181. {capytaine-2.2.1 → capytaine-2.3.1}/docs/features.rst +0 -0
  182. {capytaine-2.2.1 → capytaine-2.3.1}/docs/theory_manual/bibliography.rst +0 -0
  183. {capytaine-2.2.1 → capytaine-2.3.1}/docs/theory_manual/index.rst +0 -0
  184. {capytaine-2.2.1/docs/user_manual/examples → capytaine-2.3.1/docs/user_manual}/Nemoh.cal +0 -0
  185. {capytaine-2.2.1 → capytaine-2.3.1}/docs/user_manual/hydrostatics.rst +0 -0
  186. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Bemio_verification_cases/sphere.out +0 -0
  187. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Hydrostatics_cases/sphere__hor_cyl__ver_cyl.pkl.json +0 -0
  188. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/Cylinder.dat +0 -0
  189. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/Nemoh.cal +0 -0
  190. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/Nemoh_v3.cal +0 -0
  191. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/DiffractionForce.tec +0 -0
  192. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/ExcitationForce.tec +0 -0
  193. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/RadiationCoefficients.tec +0 -0
  194. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/Nemoh.cal +0 -0
  195. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/Nemoh_v3.cal +0 -0
  196. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/NonSymmetrical.dat +0 -0
  197. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/DiffractionForce.tec +0 -0
  198. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/ExcitationForce.tec +0 -0
  199. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/RadiationCoefficients.tec +0 -0
  200. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/envs/2024-04-08-py3.12.txt +0 -0
  201. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/envs/2024-10-22-py3.12.txt +0 -0
  202. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/single_body/Hydrostatics.dat +0 -0
  203. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/single_body/KH.dat +0 -0
  204. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/single_body_list/Hydrostatics.dat +0 -0
  205. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/single_body_list/KH.dat +0 -0
  206. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/two_bodies_list/Hydrostatics_0.dat +0 -0
  207. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/two_bodies_list/Hydrostatics_1.dat +0 -0
  208. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/two_bodies_list/KH_0.dat +0 -0
  209. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/io_legacy_cases/reference_data/two_bodies_list/KH_1.dat +0 -0
  210. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/mesh_files_examples/barge.med +0 -0
  211. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/mesh_files_examples/cylinder2.msh +0 -0
  212. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/mesh_files_examples/cylinder4.msh +0 -0
  213. /capytaine-2.2.1/pytest/test_airy_waves.py → /capytaine-2.3.1/pytest/test_bem_airy_waves.py +0 -0
  214. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_bem_potential_velocity_and_free_surface_elevation.py +0 -0
  215. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_bem_with_quadratures.py +0 -0
  216. /capytaine-2.2.1/pytest/test_bem_green_function_matrix_shape.py → /capytaine-2.3.1/pytest/test_green_functions_matrix_shape.py +0 -0
  217. /capytaine-2.2.1/pytest/test_bem_green_function_table_density.py → /capytaine-2.3.1/pytest/test_green_functions_table_density.py +0 -0
  218. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_hydrostatics.py +0 -0
  219. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_io_meshes_gdf.py +0 -0
  220. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_io_meshes_hst.py +0 -0
  221. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_io_meshes_mar.py +0 -0
  222. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_io_meshes_pnl.py +0 -0
  223. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_linear_solvers.py +0 -0
  224. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_matrices.py +0 -0
  225. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_meshes_geometry.py +0 -0
  226. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_meshes_predefined.py +0 -0
  227. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_post_pro_kochin.py +0 -0
  228. /capytaine-2.2.1/pytest/test_post_pro.py → /capytaine-2.3.1/pytest/test_post_pro_rao.py +0 -0
  229. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_tool_lru_cache.py +0 -0
  230. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_ui_matplotlib.py +0 -0
  231. {capytaine-2.2.1 → capytaine-2.3.1}/pytest/test_ui_vtk.py +0 -0
  232. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bem/__init__.py +0 -0
  233. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bem/engines.py +0 -0
  234. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bodies/__init__.py +0 -0
  235. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bodies/dofs.py +0 -0
  236. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bodies/predefined/__init__.py +0 -0
  237. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bodies/predefined/cylinders.py +0 -0
  238. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/bodies/predefined/spheres.py +0 -0
  239. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/__init__.py +0 -0
  240. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/.gitignore +0 -0
  241. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/LICENSE +0 -0
  242. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/README.md +0 -0
  243. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/openmp/display_mesh.py +0 -0
  244. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/benchmarks/openmp/read_output.py +0 -0
  245. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/Delhommeau_integrals.f90 +0 -0
  246. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/float32.f90 +0 -0
  247. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libDelhommeau/src/float64.f90 +0 -0
  248. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/green_functions/libs/__init__.py +0 -0
  249. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/io/__init__.py +0 -0
  250. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/io/legacy.py +0 -0
  251. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/io/mesh_writers.py +0 -0
  252. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/io/meshio.py +0 -0
  253. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/matrices/__init__.py +0 -0
  254. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/matrices/block.py +0 -0
  255. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/matrices/block_toeplitz.py +0 -0
  256. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/matrices/builders.py +0 -0
  257. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/matrices/low_rank.py +0 -0
  258. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/__init__.py +0 -0
  259. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/geometry.py +0 -0
  260. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/predefined/__init__.py +0 -0
  261. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/predefined/cylinders.py +0 -0
  262. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/predefined/rectangles.py +0 -0
  263. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/predefined/spheres.py +0 -0
  264. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/properties.py +0 -0
  265. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/quadratures.py +0 -0
  266. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/quality.py +0 -0
  267. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/meshes/surface_integrals.py +0 -0
  268. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/post_pro/__init__.py +0 -0
  269. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/post_pro/free_surfaces.py +0 -0
  270. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/post_pro/impedance.py +0 -0
  271. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/post_pro/rao.py +0 -0
  272. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/tools/__init__.py +0 -0
  273. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/tools/cache_on_disk.py +0 -0
  274. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/tools/deprecation_handling.py +0 -0
  275. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/tools/lru_cache.py +0 -0
  276. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/tools/optional_imports.py +0 -0
  277. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/ui/__init__.py +0 -0
  278. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/ui/cli.py +0 -0
  279. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/ui/rich.py +0 -0
  280. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/ui/vtk/__init__.py +0 -0
  281. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/ui/vtk/animation.py +0 -0
  282. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/ui/vtk/body_viewer.py +0 -0
  283. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/ui/vtk/helpers.py +0 -0
  284. {capytaine-2.2.1 → capytaine-2.3.1/src}/capytaine/ui/vtk/mesh_viewer.py +0 -0
@@ -31,18 +31,22 @@ 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
- if: github.ref == 'refs/heads/master' # Only deploy the version merged into the master branch
46
+ if: |
47
+ github.repository_owner == 'capytaine' &&
48
+ github.ref == 'refs/heads/master'
49
+ # Only deploy the version merged into the master branch of capytaine/capytaine
46
50
  uses: JamesIves/github-pages-deploy-action@releases/v4
47
51
  with:
48
52
  folder: ./docs/_build/html/
@@ -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,31 +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
 
41
- - name: Set up Python ${{ matrix.python-version }}
42
- uses: actions/setup-python@v5
43
- with:
44
- python-version: ${{ matrix.python-version }}
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
45
46
 
46
- - name: Set up nox
47
- uses: wntrblm/nox@2024.04.15
47
+ - name: Set up UV
48
+ uses: astral-sh/setup-uv@v5
49
+ with:
50
+ enable-cache: true
48
51
 
49
- - name: Run nox session
50
- run: 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
51
54
 
52
- compile_fortran:
55
+ "compile_fortran":
53
56
 
54
57
  runs-on: ubuntu-latest
55
58
 
@@ -69,7 +72,11 @@ jobs:
69
72
  # version: '13'
70
73
 
71
74
  - name: Compile and run example
72
- working-directory: capytaine/green_functions/libDelhommeau/
75
+ working-directory: src/capytaine/green_functions/libDelhommeau/
73
76
  run: make example && examples/minimal/minimal_example.bin
74
77
  # Soundness of the results is not tested, only that the compiling and
75
78
  # execution are succeeding.
79
+
80
+ - name: Run simple benchmark
81
+ working-directory: src/capytaine/green_functions/libDelhommeau/
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
@@ -1,3 +1,4 @@
1
+ uv.lock
1
2
  .idea/
2
3
  pytest/Nemoh_verification_cases/*/results/
3
4
  docs/_static/
@@ -37,4 +37,4 @@ repos:
37
37
  rev: "v2.2.5"
38
38
  hooks:
39
39
  - id: codespell
40
- args: ["-L", "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,18 @@
1
+ # How to contribute
2
+
3
+ Thank you for your interest into Capytaine.
4
+
5
+ ## Contact
6
+
7
+ The best place to report a bug or to propose an enhancement is the [issue
8
+ tracker](https://github.com/mancellin/capytaine/issues) of Capytaine's Github
9
+ repository.
10
+
11
+ The [discussion page](https://github.com/mancellin/capytaine/discussions) can
12
+ also be used to ask questions and submit ideas.
13
+
14
+ ## Submitting changes
15
+
16
+ Pull requests are welcome.
17
+ See the [developer manual](https://capytaine.org/master/developer_manual) for
18
+ instructions.
@@ -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,8 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: capytaine
3
- Version: 2.2.1
3
+ Version: 2.3.1
4
4
  Summary: Python BEM solver for linear potential flow, based on Nemoh
5
- Author-Email: Matthieu Ancellin <matthieu.ancellin@eurobios.com>
5
+ Author-Email: Matthieu Ancellin <matthieu.ancellin@mews-labs.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
7
7
  Version 3, 29 June 2007
8
8
 
@@ -683,25 +683,21 @@ Classifier: Programming Language :: Fortran
683
683
  Classifier: Intended Audience :: Science/Research
684
684
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
685
685
  Classifier: Topic :: Scientific/Engineering
686
+ Project-URL: homepage, https://capytaine.org
686
687
  Project-URL: repository, https://github.com/capytaine/capytaine
687
688
  Requires-Python: >=3.8
688
689
  Requires-Dist: numpy>=1.20; python_version >= "3.9"
689
690
  Requires-Dist: numpy>=1.24; python_version == "3.8"
690
691
  Requires-Dist: scipy
691
- Requires-Dist: pandas>=1.3
692
+ Requires-Dist: pandas<3,>=1.3
692
693
  Requires-Dist: xarray
693
694
  Requires-Dist: rich
694
695
  Provides-Extra: optional
695
696
  Requires-Dist: matplotlib; extra == "optional"
696
697
  Requires-Dist: joblib>=1.3; extra == "optional"
697
698
  Requires-Dist: meshio; extra == "optional"
698
- Provides-Extra: test
699
- Requires-Dist: pytest; extra == "test"
700
- Provides-Extra: docs
701
- Requires-Dist: sphinx; extra == "docs"
702
- Requires-Dist: sphinx-toolbox; extra == "docs"
703
- Requires-Dist: sphinxcontrib-proof; extra == "docs"
704
- Requires-Dist: sphinxcontrib-mermaid; extra == "docs"
699
+ Requires-Dist: netcdf4; extra == "optional"
700
+ Requires-Dist: vtk; extra == "optional"
705
701
  Description-Content-Type: text/markdown
706
702
 
707
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"