capytaine 2.3.1__tar.gz → 3.0.0a1__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.
- {capytaine-2.3.1 → capytaine-3.0.0a1}/.github/workflows/build_docs.yml +3 -6
- {capytaine-2.3.1 → capytaine-3.0.0a1}/.github/workflows/build_wheels.yaml +16 -20
- {capytaine-2.3.1 → capytaine-3.0.0a1}/.github/workflows/test_new_commits.yaml +3 -3
- capytaine-3.0.0a1/.pre-commit-config.yaml +25 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/Justfile +74 -39
- {capytaine-2.3.1 → capytaine-3.0.0a1}/PKG-INFO +7 -2
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/changelog.rst +230 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/conf.py +1 -1
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/developer_manual/installation.rst +33 -32
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/developer_manual/making_a_release.rst +4 -2
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/developer_manual/overview.rst +0 -18
- capytaine-3.0.0a1/docs/examples/A_beginners_cookbook.rst +102 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/C_advanced_cookbook.rst +0 -15
- capytaine-2.3.1/docs/examples/src/A7_elasticity_of_beam.py → capytaine-3.0.0a1/docs/examples/src/A10_elasticity_of_beam.py +41 -21
- capytaine-2.3.1/docs/examples/src/A3_finite_depth_cylinder.py → capytaine-3.0.0a1/docs/examples/src/A11_parametric_study_depth.py +11 -4
- capytaine-3.0.0a1/docs/examples/src/A1_single_body_hydrodynamics.py +66 -0
- capytaine-3.0.0a1/docs/examples/src/A2_multibody.py +68 -0
- capytaine-3.0.0a1/docs/examples/src/A3_finite_depth_flap.py +67 -0
- capytaine-2.3.1/docs/examples/src/V_Malenica_forward_speed.py → capytaine-3.0.0a1/docs/examples/src/A4_forward_speed_on_vertical_cylinder.py +43 -24
- capytaine-3.0.0a1/docs/examples/src/A5_benchmark_plane_symmetries.py +57 -0
- capytaine-3.0.0a1/docs/examples/src/A6_benchmark_axisymmetric_mesh.py +64 -0
- capytaine-2.3.1/docs/examples/src/A4_custom_dofs.py → capytaine-3.0.0a1/docs/examples/src/A7_custom_dofs.py +12 -17
- capytaine-3.0.0a1/docs/examples/src/A8_convergence_study.py +58 -0
- capytaine-2.3.1/docs/examples/src/A6_irregular_frequency_removal.py → capytaine-3.0.0a1/docs/examples/src/A9_test_irregular_frequency_removal.py +27 -25
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/B4_kochin.py +1 -1
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/C5_plot_influence_matrix.py +1 -2
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/C9_custom_Green_function.py +10 -3
- capytaine-3.0.0a1/docs/examples/src/Cy_symmetric_matrix_shapes.py +69 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/V_hydrostatics.py +9 -8
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/quickstart.py +2 -3
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/features.rst +23 -23
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/index.rst +1 -1
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/theory_manual/bibliography.rst +4 -0
- capytaine-3.0.0a1/docs/user_manual/body.rst +157 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/conventions.rst +20 -2
- capytaine-3.0.0a1/docs/user_manual/fixing_issues.rst +66 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/hydrostatics.rst +60 -47
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/index.rst +3 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/installation.rst +6 -2
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/mesh.rst +113 -166
- capytaine-3.0.0a1/docs/user_manual/multibody.rst +37 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/post_pro.rst +23 -7
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/resolution.rst +139 -107
- capytaine-3.0.0a1/docs/user_manual/symmetries.rst +119 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/tutorial.rst +1 -2
- {capytaine-2.3.1/src/capytaine/green_functions/libDelhommeau/src → capytaine-3.0.0a1/libs/LiangWuNoblesse}/LiangWuNoblesseWaveTerm.f90 +112 -112
- capytaine-3.0.0a1/libs/fakeblocks/LICENSE +674 -0
- {capytaine-2.3.1/docs/examples/src → capytaine-3.0.0a1/libs/fakeblocks/examples}/C6_axisymmetric_buoy.py +2 -1
- {capytaine-2.3.1/docs/examples/src → capytaine-3.0.0a1/libs/fakeblocks/examples}/C7_h_matrices_with_preconditionner.py +6 -4
- capytaine-3.0.0a1/libs/fakeblocks/pyproject.toml +25 -0
- capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks/bodies.py +158 -0
- {capytaine-2.3.1/src/capytaine/bem → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/engines.py +146 -150
- capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks/io.py +105 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/__init__.py +5 -5
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/block.py +2 -2
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/block_toeplitz.py +3 -3
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/builders.py +3 -3
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/linear_solvers.py +2 -83
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/surface_integrals.py +20 -13
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/symmetric.py +11 -16
- capytaine-3.0.0a1/libs/fakeblocks/test/test_bodies.py +29 -0
- capytaine-2.3.1/pytest/test_bem_engines_hierarchical_toeplitz_matrices.py → capytaine-3.0.0a1/libs/fakeblocks/test/test_hierarchical_toeplitz_matrices.py +12 -10
- {capytaine-2.3.1/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_linear_solvers.py +3 -4
- {capytaine-2.3.1/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_matrices.py +4 -4
- {capytaine-2.3.1/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes.py +28 -26
- {capytaine-2.3.1/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes_clipping.py +26 -23
- {capytaine-2.3.1/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes_collections_and_symmetries.py +57 -53
- {capytaine-2.3.1/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes_interface.py +35 -33
- {capytaine-2.3.1/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes_predefined.py +30 -26
- {capytaine-2.3.1/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_tool_lru_cache.py +1 -1
- {capytaine-2.3.1/src/capytaine/green_functions/LiangWuNoblesse → capytaine-3.0.0a1/libs/libDelhommeau/src}/LiangWuNoblesseWaveTerm.f90 +112 -112
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/matrices.f90 +8 -5
- {capytaine-2.3.1 → capytaine-3.0.0a1}/meson.build +30 -15
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pyproject.toml +20 -7
- capytaine-3.0.0a1/pytest/Hydrostatics_cases/sphere__hor_cyl__ver_cyl.pkl.json +1 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/envs/2023-08-01-py3.8.txt +34 -9
- capytaine-3.0.0a1/pytest/envs/2025-11-25-py3.13.txt +122 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/single_body/Hydrostatics.dat +1 -1
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/single_body_list/Hydrostatics.dat +1 -1
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/two_bodies_list/Hydrostatics_0.dat +1 -1
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/two_bodies_list/Hydrostatics_1.dat +1 -1
- capytaine-3.0.0a1/pytest/mesh_files_examples/boat_200.mar.gz +0 -0
- capytaine-3.0.0a1/pytest/mesh_files_examples/viking_ship.stl.xz +0 -0
- capytaine-3.0.0a1/pytest/test_bem_engines_basic_matrix_engine.py +288 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_bem_irregular_frequencies_removal.py +71 -43
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_bem_linear_combination_of_dofs.py +7 -4
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_bem_no_free_surface.py +1 -1
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_bem_potential_velocity_and_free_surface_elevation.py +10 -4
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_bem_problems_and_results.py +8 -4
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_bem_solver.py +42 -9
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_bem_with_quadratures.py +11 -32
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_bem_zero_and_infinite_freq.py +0 -1
- capytaine-3.0.0a1/pytest/test_bodies.py +172 -0
- capytaine-3.0.0a1/pytest/test_bodies_multibodies.py +216 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_consistency_with_Nemoh_2.py +44 -26
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_forward_speed.py +15 -7
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_green_functions_fortran_core.py +4 -4
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_green_functions_matrix_shape.py +23 -14
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_green_functions_table_density.py +1 -1
- capytaine-3.0.0a1/pytest/test_hydrostatics.py +605 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_io_legacy.py +2 -2
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_io_wamit.py +4 -8
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_io_xarray.py +2 -0
- capytaine-3.0.0a1/pytest/test_meshes_clipping.py +130 -0
- capytaine-3.0.0a1/pytest/test_meshes_initialization.py +347 -0
- capytaine-3.0.0a1/pytest/test_meshes_io_gdf.py +134 -0
- capytaine-3.0.0a1/pytest/test_meshes_io_hst.py +211 -0
- capytaine-3.0.0a1/pytest/test_meshes_io_mar.py +120 -0
- capytaine-3.0.0a1/pytest/test_meshes_io_meshio.py +109 -0
- capytaine-2.3.1/pytest/test_io_meshes_pnl.py → capytaine-3.0.0a1/pytest/test_meshes_io_pnl.py +51 -42
- capytaine-3.0.0a1/pytest/test_meshes_io_trimesh.py +71 -0
- capytaine-3.0.0a1/pytest/test_meshes_io_xarray.py +83 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_meshes_lid_generation.py +51 -29
- capytaine-3.0.0a1/pytest/test_meshes_predefined.py +232 -0
- capytaine-3.0.0a1/pytest/test_meshes_quality.py +113 -0
- capytaine-3.0.0a1/pytest/test_meshes_reflection_symmetry.py +212 -0
- capytaine-3.0.0a1/pytest/test_meshes_rotation_symmetry.py +232 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_post_pro_kochin.py +34 -17
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_post_pro_rao.py +4 -5
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_tool_symbolic_multiplication.py +13 -0
- capytaine-3.0.0a1/pytest/test_tools_block_circulant_matrices.py +204 -0
- capytaine-2.3.1/src/capytaine/__about__.py → capytaine-3.0.0a1/src/capytaine/__about__.py.in +7 -2
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/__init__.py +8 -12
- capytaine-3.0.0a1/src/capytaine/bem/engines.py +321 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/bem/problems_and_results.py +14 -13
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/bem/solver.py +204 -80
- capytaine-3.0.0a1/src/capytaine/bodies/bodies.py +630 -0
- capytaine-3.0.0a1/src/capytaine/bodies/dofs.py +146 -0
- capytaine-3.0.0a1/src/capytaine/bodies/hydrostatics.py +540 -0
- capytaine-3.0.0a1/src/capytaine/bodies/multibodies.py +216 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/green_functions/abstract_green_function.py +2 -2
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/green_functions/delhommeau.py +31 -16
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/green_functions/hams.py +19 -13
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/io/legacy.py +3 -103
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/io/xarray.py +11 -6
- capytaine-3.0.0a1/src/capytaine/meshes/__init__.py +2 -0
- capytaine-3.0.0a1/src/capytaine/meshes/abstract_meshes.py +375 -0
- capytaine-3.0.0a1/src/capytaine/meshes/clean.py +302 -0
- capytaine-3.0.0a1/src/capytaine/meshes/clip.py +347 -0
- capytaine-3.0.0a1/src/capytaine/meshes/export.py +89 -0
- capytaine-3.0.0a1/src/capytaine/meshes/geometry.py +259 -0
- capytaine-3.0.0a1/src/capytaine/meshes/io.py +433 -0
- capytaine-3.0.0a1/src/capytaine/meshes/meshes.py +826 -0
- capytaine-3.0.0a1/src/capytaine/meshes/predefined/__init__.py +6 -0
- capytaine-3.0.0a1/src/capytaine/meshes/predefined/cylinders.py +280 -0
- capytaine-3.0.0a1/src/capytaine/meshes/predefined/rectangles.py +202 -0
- capytaine-3.0.0a1/src/capytaine/meshes/predefined/spheres.py +55 -0
- capytaine-3.0.0a1/src/capytaine/meshes/quality.py +159 -0
- capytaine-3.0.0a1/src/capytaine/meshes/surface_integrals.py +82 -0
- capytaine-3.0.0a1/src/capytaine/meshes/symmetric_meshes.py +641 -0
- capytaine-3.0.0a1/src/capytaine/meshes/visualization.py +353 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/post_pro/free_surfaces.py +1 -4
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/post_pro/kochin.py +10 -10
- capytaine-3.0.0a1/src/capytaine/tools/block_circulant_matrices.py +275 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/tools/lists_of_points.py +2 -2
- capytaine-3.0.0a1/src/capytaine/tools/memory_monitor.py +45 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/tools/symbolic_multiplication.py +13 -1
- capytaine-3.0.0a1/src/capytaine/tools/timer.py +90 -0
- capytaine-3.0.0a1/src/capytaine/ui/__init__.py +0 -0
- capytaine-2.3.1/.pre-commit-config.yaml +0 -40
- capytaine-2.3.1/docs/_static/proof.css +0 -34
- capytaine-2.3.1/docs/_static/proof.js +0 -8
- capytaine-2.3.1/docs/examples/A_beginners_cookbook.rst +0 -84
- capytaine-2.3.1/docs/examples/src/A1_radiation_cylinder.py +0 -56
- capytaine-2.3.1/docs/examples/src/A2_multibody.py +0 -44
- capytaine-2.3.1/docs/examples/src/A5_convergence_study.py +0 -42
- capytaine-2.3.1/docs/examples/src/A8_export_dataset.py +0 -45
- capytaine-2.3.1/docs/user_manual/body.rst +0 -166
- capytaine-2.3.1/pytest/Hydrostatics_cases/sphere__hor_cyl__ver_cyl.pkl.json +0 -1
- capytaine-2.3.1/pytest/envs/2024-04-08-py3.12.txt +0 -80
- capytaine-2.3.1/pytest/envs/2024-10-22-py3.12.txt +0 -81
- capytaine-2.3.1/pytest/envs/2025-04-18-py3.12.txt +0 -93
- capytaine-2.3.1/pytest/test_bem_engines_basic_matric_engine.py +0 -75
- capytaine-2.3.1/pytest/test_bodies.py +0 -330
- capytaine-2.3.1/pytest/test_bodies_predefined.py +0 -189
- capytaine-2.3.1/pytest/test_hydrostatics.py +0 -457
- capytaine-2.3.1/pytest/test_io_meshes.py +0 -134
- capytaine-2.3.1/pytest/test_io_meshes_gdf.py +0 -146
- capytaine-2.3.1/pytest/test_io_meshes_hst.py +0 -169
- capytaine-2.3.1/pytest/test_io_meshes_mar.py +0 -53
- capytaine-2.3.1/pytest/test_ui_matplotlib.py +0 -32
- capytaine-2.3.1/pytest/test_ui_vtk.py +0 -26
- capytaine-2.3.1/src/capytaine/bodies/bodies.py +0 -1221
- capytaine-2.3.1/src/capytaine/bodies/dofs.py +0 -19
- capytaine-2.3.1/src/capytaine/bodies/predefined/__init__.py +0 -6
- capytaine-2.3.1/src/capytaine/bodies/predefined/cylinders.py +0 -151
- capytaine-2.3.1/src/capytaine/bodies/predefined/rectangles.py +0 -111
- capytaine-2.3.1/src/capytaine/bodies/predefined/spheres.py +0 -70
- capytaine-2.3.1/src/capytaine/tools/timer.py +0 -66
- {capytaine-2.3.1 → capytaine-3.0.0a1}/.github/workflows/test_with_latest_dependencies.yaml +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/.gitignore +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/.zenodo.json +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/CONTRIBUTING.md +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/LICENSE +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/README.md +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/code_of_conduct.md +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/Makefile +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/_static/custom.css +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/_templates/layout.html +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/citing.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/developer_manual/contributing.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/developer_manual/index.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/developer_manual/testing.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/B_intermediate_cookbook.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/index.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/B1_pressure_on_hull.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/B2_haskind.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/B3_free_surface_elevation.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/B5_plot_velocity_in_domain.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/B6_animate_free_surface.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/B7_boat_animation.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/B8_pressure_infinite_frequency.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/C10_custom_linear_solver_on_gpu.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/C8_compare_Green_functions.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/src/boat_200.mar +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/examples/validation.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/theory_manual/index.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/theory_manual/theory.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/Nemoh.cal +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/Panel_convention.svg +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/export_output.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/problem_setup.rst +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/docs/user_manual/quickstart.rst +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/.gitignore +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/FinGreen3D.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/LICENSE +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/Makefile +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/README.md +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/test_program.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/.gitignore +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/LICENSE +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/Makefile +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/README.md +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/test_program.f90 +0 -0
- /capytaine-2.3.1/src/capytaine/bem/__init__.py → /capytaine-3.0.0a1/libs/fakeblocks/README.md +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions/libs → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/__init__.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/low_rank.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/__init__.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/clipper.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/collections.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/geometry.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/mesh_like_protocol.py +0 -0
- {capytaine-2.3.1/src/capytaine/io → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks/meshes}/mesh_loaders.py +0 -0
- {capytaine-2.3.1/src/capytaine/io → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks/meshes}/mesh_writers.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/meshes.py +0 -0
- {capytaine-2.3.1/src/capytaine/io → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks/meshes}/meshio.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/predefined/__init__.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/predefined/cylinders.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/predefined/rectangles.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/predefined/spheres.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/properties.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/quadratures.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/quality.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/tools/lru_cache.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/__init__.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/animation.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/body_viewer.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/helpers.py +0 -0
- {capytaine-2.3.1/src/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/mesh_viewer.py +0 -0
- {capytaine-2.3.1/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes_geometry.py +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/.gitignore +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/LICENSE +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/Makefile +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/README.md +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/openmp/benchmark_omp.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/openmp/display_mesh.py +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/openmp/read_output.py +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/profiling/benchmark_profiling.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/rankine/benchmark_rankine.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/tabulations/benchmark_tabulation.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/waves/benchmark_waves.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/examples/minimal/minimal_example.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/examples/minimal/minimal_example.py +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/Delhommeau_integrals.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/FinGreen3D.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/Green_Rankine.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/Green_wave.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/constants.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/float32.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/float64.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/interface.f90 +0 -0
- {capytaine-2.3.1/src/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/old_Prony_decomposition.f90 +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Bemio_verification_cases/sphere.out +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/Cylinder.dat +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/Nemoh.cal +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/Nemoh_v3.cal +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/DiffractionForce.tec +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/ExcitationForce.tec +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/RadiationCoefficients.tec +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/Nemoh.cal +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/Nemoh_v3.cal +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/NonSymmetrical.dat +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/DiffractionForce.tec +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/ExcitationForce.tec +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/RadiationCoefficients.tec +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/single_body/KH.dat +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/single_body_list/KH.dat +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/two_bodies_list/KH_0.dat +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/two_bodies_list/KH_1.dat +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/mesh_files_examples/barge.med +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/mesh_files_examples/cylinder2.msh +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/mesh_files_examples/cylinder4.msh +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_bem_airy_waves.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_consistency_with_HAMS.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_consistency_with_analytical_solutions.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_green_functions_finite_depth.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_green_functions_tabulation_caching.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/pytest/test_io_bemio.py +0 -0
- {capytaine-2.3.1/src/capytaine/io → capytaine-3.0.0a1/src/capytaine/bem}/__init__.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/bem/airy_waves.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/bodies/__init__.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/green_functions/__init__.py +0 -0
- {capytaine-2.3.1/src/capytaine/tools → capytaine-3.0.0a1/src/capytaine/io}/__init__.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/io/bemio.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/io/wamit.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/post_pro/__init__.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/post_pro/impedance.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/post_pro/rao.py +0 -0
- {capytaine-2.3.1/src/capytaine/ui → capytaine-3.0.0a1/src/capytaine/tools}/__init__.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/tools/cache_on_disk.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/tools/deprecation_handling.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/tools/optional_imports.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/tools/prony_decomposition.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/ui/cli.py +0 -0
- {capytaine-2.3.1 → capytaine-3.0.0a1}/src/capytaine/ui/rich.py +0 -0
|
@@ -2,8 +2,6 @@ name: Build and deploy documentation
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
|
-
branches:
|
|
6
|
-
- master
|
|
7
5
|
paths:
|
|
8
6
|
- 'docs/**'
|
|
9
7
|
|
|
@@ -44,14 +42,13 @@ jobs:
|
|
|
44
42
|
|
|
45
43
|
- name: Deploy pages
|
|
46
44
|
if: |
|
|
47
|
-
github.repository_owner == 'capytaine'
|
|
48
|
-
|
|
49
|
-
# Only deploy the version merged into the master branch of capytaine/capytaine
|
|
45
|
+
github.repository_owner == 'capytaine'
|
|
46
|
+
# Only deploy the version of capytaine/capytaine
|
|
50
47
|
uses: JamesIves/github-pages-deploy-action@releases/v4
|
|
51
48
|
with:
|
|
52
49
|
folder: ./docs/_build/html/
|
|
53
50
|
repository-name: capytaine/capytaine.github.io
|
|
54
51
|
branch: main
|
|
55
|
-
target-folder:
|
|
52
|
+
target-folder: ${{ github.ref_name }}/
|
|
56
53
|
clean: true
|
|
57
54
|
token: ${{ secrets.TOKEN_PAGES }}
|
|
@@ -15,7 +15,7 @@ jobs:
|
|
|
15
15
|
runs-on: windows-2025
|
|
16
16
|
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
19
|
|
|
20
20
|
- uses: fortran-lang/setup-fortran@v1
|
|
21
21
|
with:
|
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
version: '13'
|
|
24
24
|
|
|
25
25
|
- name: Build wheels
|
|
26
|
-
uses: pypa/cibuildwheel@v3.
|
|
26
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
27
27
|
env:
|
|
28
28
|
CIBW_SKIP: "*win32* cp314t*"
|
|
29
29
|
CIBW_BEFORE_BUILD_WINDOWS: pip install delvewheel
|
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
# Package the DLL dependencies in the wheel for windows (done by default for the other platforms).
|
|
32
32
|
# delvewheel cannot mangle the libraries, stripping does not work.
|
|
33
33
|
|
|
34
|
-
- uses: actions/upload-artifact@
|
|
34
|
+
- uses: actions/upload-artifact@v6
|
|
35
35
|
with:
|
|
36
36
|
name: wheels-windows
|
|
37
37
|
path: ./wheelhouse/*.whl
|
|
@@ -41,19 +41,17 @@ jobs:
|
|
|
41
41
|
runs-on: ubuntu-22.04
|
|
42
42
|
|
|
43
43
|
steps:
|
|
44
|
-
- uses: actions/checkout@
|
|
44
|
+
- uses: actions/checkout@v6
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
compiler: 'gcc'
|
|
49
|
-
version: '13'
|
|
46
|
+
# No need to setup fortran, it won't be used by CIbuildwheel which is
|
|
47
|
+
# using a Manylinux container
|
|
50
48
|
|
|
51
49
|
- name: Build wheels on Ubuntu
|
|
52
|
-
uses: pypa/cibuildwheel@v3.
|
|
50
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
53
51
|
env:
|
|
54
52
|
CIBW_SKIP: "*i686* *musllinux*"
|
|
55
53
|
|
|
56
|
-
- uses: actions/upload-artifact@
|
|
54
|
+
- uses: actions/upload-artifact@v6
|
|
57
55
|
with:
|
|
58
56
|
name: wheels-ubuntu
|
|
59
57
|
path: ./wheelhouse/*.whl
|
|
@@ -61,12 +59,10 @@ jobs:
|
|
|
61
59
|
|
|
62
60
|
"build_wheels_on_macos_intel":
|
|
63
61
|
name: Build wheels on MacOS Intel
|
|
64
|
-
runs-on: macos-
|
|
65
|
-
# Should be replaced by macos-15-intel soon, but it does not seem to be
|
|
66
|
-
# supported by setup-fortran?
|
|
62
|
+
runs-on: macos-15-intel
|
|
67
63
|
|
|
68
64
|
steps:
|
|
69
|
-
- uses: actions/checkout@
|
|
65
|
+
- uses: actions/checkout@v6
|
|
70
66
|
|
|
71
67
|
- uses: fortran-lang/setup-fortran@v1
|
|
72
68
|
with:
|
|
@@ -74,11 +70,11 @@ jobs:
|
|
|
74
70
|
version: '13'
|
|
75
71
|
|
|
76
72
|
- name: Build wheels
|
|
77
|
-
uses: pypa/cibuildwheel@v3.
|
|
73
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
78
74
|
env:
|
|
79
|
-
CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=
|
|
75
|
+
CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=15.0
|
|
80
76
|
|
|
81
|
-
- uses: actions/upload-artifact@
|
|
77
|
+
- uses: actions/upload-artifact@v6
|
|
82
78
|
with:
|
|
83
79
|
name: wheels-macos-intel
|
|
84
80
|
path: ./wheelhouse/*.whl
|
|
@@ -89,7 +85,7 @@ jobs:
|
|
|
89
85
|
runs-on: macos-14
|
|
90
86
|
|
|
91
87
|
steps:
|
|
92
|
-
- uses: actions/checkout@
|
|
88
|
+
- uses: actions/checkout@v6
|
|
93
89
|
|
|
94
90
|
- uses: fortran-lang/setup-fortran@v1
|
|
95
91
|
with:
|
|
@@ -97,11 +93,11 @@ jobs:
|
|
|
97
93
|
version: '13'
|
|
98
94
|
|
|
99
95
|
- name: Build wheels
|
|
100
|
-
uses: pypa/cibuildwheel@v3.
|
|
96
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
101
97
|
env:
|
|
102
98
|
CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=14.0
|
|
103
99
|
|
|
104
|
-
- uses: actions/upload-artifact@
|
|
100
|
+
- uses: actions/upload-artifact@v6
|
|
105
101
|
with:
|
|
106
102
|
name: wheels-macos-arm
|
|
107
103
|
path: ./wheelhouse/*.whl
|
|
@@ -30,7 +30,7 @@ jobs:
|
|
|
30
30
|
|
|
31
31
|
strategy:
|
|
32
32
|
matrix:
|
|
33
|
-
python-version: ['38', '
|
|
33
|
+
python-version: ['38', '313']
|
|
34
34
|
|
|
35
35
|
steps:
|
|
36
36
|
|
|
@@ -72,11 +72,11 @@ jobs:
|
|
|
72
72
|
# version: '13'
|
|
73
73
|
|
|
74
74
|
- name: Compile and run example
|
|
75
|
-
working-directory:
|
|
75
|
+
working-directory: libs/libDelhommeau/
|
|
76
76
|
run: make example && examples/minimal/minimal_example.bin
|
|
77
77
|
# Soundness of the results is not tested, only that the compiling and
|
|
78
78
|
# execution are succeeding.
|
|
79
79
|
|
|
80
80
|
- name: Run simple benchmark
|
|
81
|
-
working-directory:
|
|
81
|
+
working-directory: libs/libDelhommeau/
|
|
82
82
|
run: make run_bench_rankine && make run_bench_waves
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
exclude: "pytest/.*/.*"
|
|
2
|
+
repos:
|
|
3
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
4
|
+
rev: "v6.0.0"
|
|
5
|
+
hooks:
|
|
6
|
+
- id: check-added-large-files # Prevent giant files from being committed
|
|
7
|
+
- id: check-ast # Simply check whether files parse as valid python
|
|
8
|
+
- id: check-case-conflict # Check for filenames that would conflict on a case-insensitive filesystem
|
|
9
|
+
- id: check-illegal-windows-names # Check for filenames that could not exist on Windows
|
|
10
|
+
- id: check-merge-conflict # Check for files that contain merge conflict strings
|
|
11
|
+
- id: check-symlinks # Checks for symlinks which do not point to anything
|
|
12
|
+
- id: check-toml # Attempts to load all TOML files to verify syntax
|
|
13
|
+
- id: check-yaml # Attempts to load all YAML files to verify syntax
|
|
14
|
+
- id: debug-statements # Check for calls to breakpoint()
|
|
15
|
+
- id: end-of-file-fixer # Makes sure files end in a newline and only a newline
|
|
16
|
+
- id: no-commit-to-branch # Disallow commiting directly to "master"
|
|
17
|
+
- id: mixed-line-ending # Check the kind of line ending (LF or CRLF)
|
|
18
|
+
- id: trailing-whitespace # Trim trailing whitespaces
|
|
19
|
+
|
|
20
|
+
- repo: https://github.com/codespell-project/codespell
|
|
21
|
+
rev: "v2.4.1"
|
|
22
|
+
hooks:
|
|
23
|
+
- id: codespell
|
|
24
|
+
additional_dependencies:
|
|
25
|
+
- tomli
|
|
@@ -4,12 +4,14 @@ set windows-shell := ["powershell.exe", "-c"]
|
|
|
4
4
|
default:
|
|
5
5
|
just --list
|
|
6
6
|
|
|
7
|
+
# Run the recipe below in a clean virtual environment to install Capytaine in
|
|
8
|
+
# editable mode.
|
|
7
9
|
editable_install:
|
|
8
10
|
uv pip install -r pyproject.toml \
|
|
11
|
+
--extra optional \
|
|
9
12
|
--group editable_install \
|
|
10
13
|
--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)
|
|
14
|
+
uv pip install --no-build-isolation --editable .
|
|
13
15
|
|
|
14
16
|
# Define the temporary directory differently based on OS
|
|
15
17
|
TEMP_DIR := if os_family() == 'windows' {
|
|
@@ -25,13 +27,14 @@ NEMOH_CASES := TEST_DIR / 'Nemoh_verification_cases' / 'Cylinder'
|
|
|
25
27
|
|
|
26
28
|
EXAMPLES_DIR := justfile_directory() / 'docs' / 'examples' / 'src'
|
|
27
29
|
EXAMPLES_FILES := ' \
|
|
28
|
-
|
|
30
|
+
A1_single_body_hydrodynamics.py \
|
|
29
31
|
A2_multibody.py \
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
A3_finite_depth_flap.py \
|
|
33
|
+
A4_forward_speed_on_vertical_cylinder.py \
|
|
34
|
+
A7_custom_dofs.py \
|
|
35
|
+
A8_convergence_study.py \
|
|
36
|
+
A10_elasticity_of_beam.py \
|
|
37
|
+
A11_parametric_study_depth.py \
|
|
35
38
|
B1_pressure_on_hull.py \
|
|
36
39
|
B2_haskind.py \
|
|
37
40
|
B3_free_surface_elevation.py \
|
|
@@ -44,14 +47,16 @@ EXAMPLES_FILES := ' \
|
|
|
44
47
|
'
|
|
45
48
|
|
|
46
49
|
## Reason for skipping some example files:
|
|
47
|
-
#
|
|
50
|
+
# A5_benchmark_plane_symmetries.py \
|
|
51
|
+
# A6_benchmark_axisymmetric_mesh.py \
|
|
52
|
+
# A9_test_irregular_frequency_removal.py \ # Slow
|
|
48
53
|
# B6_animate_free_surface.py \ # Requires VTK
|
|
49
54
|
# B7_boat_animation.py \ # Requires VTK
|
|
50
55
|
# C6_axisymmetric_buoy.py \ # Requires VTK
|
|
51
|
-
# C7_h_matrices_with_preconditionner.py \ # Slow
|
|
52
56
|
# C10_custom_linear_solver_on_gpu.py \ # Requires torch
|
|
53
57
|
|
|
54
|
-
# Run the test suite and the example files assuming a virtual environment
|
|
58
|
+
# Run the test suite and the example files assuming a virtual environment with
|
|
59
|
+
# Capytaine installed has been activated
|
|
55
60
|
[unix]
|
|
56
61
|
_test:
|
|
57
62
|
#!/usr/bin/env bash
|
|
@@ -81,52 +86,81 @@ _test:
|
|
|
81
86
|
capytaine {{NEMOH_CASES}}/Nemoh.cal
|
|
82
87
|
capytaine {{NEMOH_CASES}}/Nemoh_v3.cal
|
|
83
88
|
|
|
89
|
+
_install_and_test:
|
|
90
|
+
uv pip install --no-deps --no-build-isolation .
|
|
91
|
+
just _test
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
# In the recipes below, we have
|
|
95
|
+
#
|
|
96
|
+
# --no-editable --with "capytaine @ ." -- just _test
|
|
97
|
+
#
|
|
98
|
+
# or
|
|
99
|
+
#
|
|
100
|
+
# --no-editable -- just _install_and_test
|
|
101
|
+
#
|
|
102
|
+
# because the default behavior of uv is to install the local project in
|
|
103
|
+
# editable mode, but we don't want that because of an incompatibility with
|
|
104
|
+
# meson-python (https://github.com/astral-sh/uv/issues/10214)
|
|
105
|
+
#
|
|
106
|
+
# besides, we have --no-default-groups because uv loads by default the `dev`
|
|
107
|
+
# dependency-group from pyproject.toml, but we don't need it here and it can
|
|
108
|
+
# actually cause issue in CI.
|
|
84
109
|
|
|
85
110
|
test_in_latest_env:
|
|
86
111
|
uv run \
|
|
87
|
-
--isolated --no-
|
|
88
|
-
--
|
|
112
|
+
--isolated --no-default-groups \
|
|
113
|
+
--no-editable --with "capytaine[optional] @ ." \
|
|
114
|
+
--group test \
|
|
115
|
+
-- \
|
|
89
116
|
just _test
|
|
90
117
|
|
|
91
|
-
|
|
118
|
+
# In the recipe below,
|
|
119
|
+
# "--index-strategy unsafe-best-match" means uv should not ignore wheels
|
|
120
|
+
# from PyPI during universal resolution
|
|
121
|
+
|
|
122
|
+
test_in_nightly_env:
|
|
92
123
|
uv run \
|
|
93
|
-
--isolated --no-
|
|
94
|
-
--
|
|
95
|
-
--
|
|
96
|
-
--
|
|
124
|
+
--isolated --no-default-groups \
|
|
125
|
+
--python 3.14 \
|
|
126
|
+
--pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple \
|
|
127
|
+
--index-strategy unsafe-best-match \
|
|
128
|
+
--no-editable --with "capytaine @ ." \
|
|
129
|
+
--group test \
|
|
130
|
+
-- \
|
|
97
131
|
just _test
|
|
98
|
-
# TODO: Also build Capytaine in this environment?
|
|
99
132
|
|
|
100
|
-
|
|
133
|
+
|
|
134
|
+
test_in_py38_reference_env:
|
|
101
135
|
uv run \
|
|
102
|
-
--isolated --no-
|
|
103
|
-
--
|
|
104
|
-
--
|
|
105
|
-
--with-requirements {{TEST_DIR}}/envs/
|
|
106
|
-
|
|
107
|
-
|
|
136
|
+
--isolated --no-default-groups \
|
|
137
|
+
--python 3.8 \
|
|
138
|
+
--no-editable \
|
|
139
|
+
--with-requirements {{TEST_DIR}}/envs/2023-08-01-py3.8.txt \
|
|
140
|
+
-- \
|
|
141
|
+
just _install_and_test
|
|
108
142
|
|
|
109
|
-
|
|
143
|
+
test_in_py313_reference_env:
|
|
110
144
|
uv run \
|
|
111
|
-
--isolated --no-
|
|
112
|
-
--pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple \
|
|
113
|
-
--index-strategy unsafe-best-match \
|
|
145
|
+
--isolated --no-default-groups \
|
|
114
146
|
--python 3.13 \
|
|
115
|
-
--
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
# TODO: Also build Capytaine in this environment?
|
|
147
|
+
--no-editable \
|
|
148
|
+
--with-requirements {{TEST_DIR}}/envs/2025-11-25-py3.13.txt \
|
|
149
|
+
-- \
|
|
150
|
+
just _install_and_test
|
|
120
151
|
|
|
121
152
|
# How the requirements files from the above recipes where generated.
|
|
122
153
|
create_test_env_file python="3.8" date="2023-08-01":
|
|
123
154
|
uv pip compile \
|
|
124
|
-
pyproject.toml
|
|
155
|
+
pyproject.toml \
|
|
125
156
|
--python-version {{python}} \
|
|
157
|
+
--group test \
|
|
158
|
+
--group editable_install \
|
|
159
|
+
--extra optional \
|
|
126
160
|
--exclude-newer {{date}} \
|
|
127
|
-
--extra optional --extra test \
|
|
128
161
|
-o {{TEST_DIR}}/envs/{{date}}-py{{python}}.txt
|
|
129
162
|
|
|
163
|
+
|
|
130
164
|
# Compile the Fortran code without parallelism for easier reading of the errors.
|
|
131
165
|
test_fortran_compilation:
|
|
132
166
|
# It is assumed that meson and ninja are already installed (e.g. with editable_install).
|
|
@@ -135,8 +169,9 @@ test_fortran_compilation:
|
|
|
135
169
|
|
|
136
170
|
build_docs:
|
|
137
171
|
uv run \
|
|
138
|
-
--isolated
|
|
139
|
-
--
|
|
172
|
+
--isolated \
|
|
173
|
+
--no-editable --with "capytaine[optional] @ ." \
|
|
174
|
+
--group docs \
|
|
140
175
|
-- \
|
|
141
176
|
make --directory="./docs/"
|
|
142
177
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: capytaine
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.0a1
|
|
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
|
|
@@ -694,10 +694,15 @@ Requires-Dist: xarray
|
|
|
694
694
|
Requires-Dist: rich
|
|
695
695
|
Provides-Extra: optional
|
|
696
696
|
Requires-Dist: matplotlib; extra == "optional"
|
|
697
|
+
Requires-Dist: vtk; extra == "optional"
|
|
698
|
+
Requires-Dist: pyvista; extra == "optional"
|
|
699
|
+
Requires-Dist: psutil; extra == "optional"
|
|
697
700
|
Requires-Dist: joblib>=1.3; extra == "optional"
|
|
701
|
+
Requires-Dist: threadpoolctl; extra == "optional"
|
|
698
702
|
Requires-Dist: meshio; extra == "optional"
|
|
703
|
+
Requires-Dist: trimesh; extra == "optional"
|
|
704
|
+
Requires-Dist: h5py; extra == "optional"
|
|
699
705
|
Requires-Dist: netcdf4; extra == "optional"
|
|
700
|
-
Requires-Dist: vtk; extra == "optional"
|
|
701
706
|
Description-Content-Type: text/markdown
|
|
702
707
|
|
|
703
708
|
# Capytaine: a linear potential flow BEM solver with Python.
|
|
@@ -7,6 +7,236 @@ Changelog
|
|
|
7
7
|
:depth: 1
|
|
8
8
|
:backlinks: none
|
|
9
9
|
|
|
10
|
+
-----------------------------------
|
|
11
|
+
New in version 3.0.0a1 (2026-02-02)
|
|
12
|
+
-----------------------------------
|
|
13
|
+
|
|
14
|
+
Version 3 includes a major rewrite of several internal modules, most notably
|
|
15
|
+
the ``meshes`` module which has been rewritten from scratch.
|
|
16
|
+
|
|
17
|
+
About the new mesh module
|
|
18
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
19
|
+
|
|
20
|
+
* **No in-place mutation of the mesh objects.**
|
|
21
|
+
To make the maintenance of the mesh routines easier, all in-place transformation of the objects have been removed.
|
|
22
|
+
Code such as the following::
|
|
23
|
+
|
|
24
|
+
mesh = cpt.load_mesh("...")
|
|
25
|
+
mesh.translate_x(1.0)
|
|
26
|
+
mesh.keep_immersed_part()
|
|
27
|
+
mesh.show() # Show translated and clipped mesh
|
|
28
|
+
|
|
29
|
+
can be rewritted as::
|
|
30
|
+
|
|
31
|
+
mesh = cpt.load_mesh("...")
|
|
32
|
+
mesh = mesh.translated_x(1.0)
|
|
33
|
+
mesh = mesh.immersed_part()
|
|
34
|
+
mesh.show()
|
|
35
|
+
|
|
36
|
+
or more consisely::
|
|
37
|
+
|
|
38
|
+
mesh = cpt.load_mesh("...").translated_x(1.0).immersed_part()
|
|
39
|
+
mesh.show()
|
|
40
|
+
|
|
41
|
+
In the latter version, each line returns a new Python object of class
|
|
42
|
+
``Mesh`` which is the object now referred to by the variable name ``mesh``.
|
|
43
|
+
The new version makes it less error prone to have complex workflows such as::
|
|
44
|
+
|
|
45
|
+
full_mesh = cpt.load_mesh("...")
|
|
46
|
+
full_mesh_draft = full_mesh.vertices[:, 2].min()
|
|
47
|
+
for draft in [1.0, 2.0, 3.0]:
|
|
48
|
+
mesh = full_mesh.translated_z(full_mesh_draft - draft).immersed_part()
|
|
49
|
+
...
|
|
50
|
+
|
|
51
|
+
without any risk to overwriting the original ``full_mesh``.
|
|
52
|
+
|
|
53
|
+
The only usage of in-place transformations is for performance critical part of the code.
|
|
54
|
+
Given that most hydrodynamical meshes are usually below 100k faces, Capytaine's mesh class is usually not the performance bottleneck.
|
|
55
|
+
Computation intensive mesh transformations should be done with a dedicated meshing tool and not directly in Capytaine anyway.
|
|
56
|
+
If you find yourself nonetheless struggling with performance issues of the new mesh module in Capytaine, please open an issue on Github.
|
|
57
|
+
|
|
58
|
+
* **No in-place mutation of the body objects.**
|
|
59
|
+
For the same reasons as above, the in-place transformations of the ``FloatingBody`` object have been removed.
|
|
60
|
+
|
|
61
|
+
Code such as the following::
|
|
62
|
+
|
|
63
|
+
body = cpt.FloatingBody(mesh=mesh)
|
|
64
|
+
body.rotation_center = (0, 0, -1)
|
|
65
|
+
body.add_all_rigid_body_dofs()
|
|
66
|
+
body.keep_only_dofs(['Heave'])
|
|
67
|
+
body.keep_immersed_part()
|
|
68
|
+
body.translate([0, 1, 0])
|
|
69
|
+
|
|
70
|
+
can be rewritten as::
|
|
71
|
+
|
|
72
|
+
body = cpt.FloatingBody(
|
|
73
|
+
mesh=mesh,
|
|
74
|
+
dofs=cpt.rigid_body_dofs(rotation_center=(0, 0, -1))
|
|
75
|
+
)
|
|
76
|
+
body = body.with_only_dofs(['Heave'])
|
|
77
|
+
body = body.immersed_part()
|
|
78
|
+
body = body.translated([0, 1, 0])
|
|
79
|
+
|
|
80
|
+
* **Only a few built-in mesh loaders, but transparently use external libraries**
|
|
81
|
+
Only the domain mesh file formats (Nemoh's, WAMIT's, Hydrostar's and HAMS's) are built-in in Capytaine.
|
|
82
|
+
Loading a mesh in a general purpose file format such as GMSH or STL is still
|
|
83
|
+
easy, assuming a third party library supporting this file format is installed
|
|
84
|
+
(see :doc:`user_manual/mesh`).
|
|
85
|
+
|
|
86
|
+
* **No more mesh writers**
|
|
87
|
+
To reduce the burden of maintenance, mesh writers have been removed, but the
|
|
88
|
+
mesh objects can be exported to external libraries that can write mesh files.
|
|
89
|
+
As a consequence ``export_as_Nemoh_directory`` has been moved out of Capytaine.
|
|
90
|
+
|
|
91
|
+
* **Symmetries are only available around the main axis.**
|
|
92
|
+
The ``Plane`` and ``Axis`` objects have been removed.
|
|
93
|
+
Symmetric meshes using ``ReflectionSymmetricMesh`` can now only be defined for global symmetries across the ``'xOz'`` and ``'yOz'`` planes.
|
|
94
|
+
Other planes and local symmetries used to be supported in the previous version of Capytaine, but they were making the implementation much more complicated for little practical gain, so it has been chosen for this new version to reduce the scope but make sure that this feature is well integrated with all the other features of Capytaine
|
|
95
|
+
Similarly, transformations with the ``mirrored`` and ``rotated`` methods don't work with arbitrary plane or axis anymore.
|
|
96
|
+
Most transformation can still be performed by combining translation, rotation and mirroring.
|
|
97
|
+
More complex transformations should be done in a dedicated meshing software.
|
|
98
|
+
|
|
99
|
+
* **Rotation symmetric meshes have been completely reworked.**
|
|
100
|
+
They are now well integrated with the other features such as irregular frequencies removal.
|
|
101
|
+
The user interface has been changed since the experimental methods from previous versions.
|
|
102
|
+
See :class:`~capytaine.meshes.symmetric_meshes.RotationSymmetricMesh`.
|
|
103
|
+
The method to create a symmetric mesh from a profile of points has also changed, see :meth:`~capytaine.meshes.symmetric_meshes.RotationSymmetricMesh.from_profile_points`.
|
|
104
|
+
|
|
105
|
+
* **Prototype translation symmetry has been removed.**
|
|
106
|
+
As a consequence, the ``translation_symmetry`` arguments of the mesh generations functions has been removed.
|
|
107
|
+
|
|
108
|
+
* ``Mesh.clipped`` and ``FloatingBody.clipped`` don't take as argument a
|
|
109
|
+
``Plane`` object, but directly a point and a normal (as two 3-ple of floats).
|
|
110
|
+
|
|
111
|
+
* If no name is provided, no generic name is given to the mesh, no name is used.
|
|
112
|
+
Meshes' names are only useful to keep track of Python objects, since printing the full list of points and faces is not very convenient.
|
|
113
|
+
|
|
114
|
+
* Default 3D display now uses ``pyvista`` as a backend instead of raw ``vtk``. Please consider installing ``pyvista``.
|
|
115
|
+
Animation support has not been implemented in this new backend yet, only static mesh viewing is available.
|
|
116
|
+
The ``matplotlib`` backend is also still available for static mesh viewing.
|
|
117
|
+
Some keyword argument might have been changed to uniformize usage of the two 3D backends.
|
|
118
|
+
|
|
119
|
+
* The barely-used and barely-documented ``geometric_center`` attribute of the mesh and the bodies have been removed.
|
|
120
|
+
|
|
121
|
+
* Support for optionallay using quadratures from Quadpy has been removed.
|
|
122
|
+
|
|
123
|
+
Other major changes
|
|
124
|
+
~~~~~~~~~~~~~~~~~~~
|
|
125
|
+
|
|
126
|
+
* Add :class:`~capytaine.bodies.multibodies.Multibody` meant to represent a
|
|
127
|
+
multibody system. For hydrodynamics, this is equivalent to the previous
|
|
128
|
+
behavior of coalescing bodies together. For hydrostatics, the new class
|
|
129
|
+
is slightly more powerful, for instance by being able to keep track of
|
|
130
|
+
several center of buoyancy and center of mass. (:pull:`822`)
|
|
131
|
+
|
|
132
|
+
Joining bodies with :meth:`~capytaine.bodies.bodies.FloatingBody.join_bodies`
|
|
133
|
+
or ``+`` now creates a :class:`~capytaine.bodies.multibodies.Multibody` instance. It can be converted back to a
|
|
134
|
+
:class:`~capytaine.bodies.bodies.FloatingBody` instance with::
|
|
135
|
+
|
|
136
|
+
both = body_1 + body_2 # `both` is now a Multibody
|
|
137
|
+
both = (body_1 + body_2).as_FloatingBody() # Recover former behavior of joining FloatingBody with a FloatingBody
|
|
138
|
+
|
|
139
|
+
* New internal data model for rigid body dofs with the classes
|
|
140
|
+
:class:`~capytaine.bodies.dofs.TranslationDof` and
|
|
141
|
+
:class:`~capytaine.bodies.dofs.RotationDof`. (:pull:`838`)
|
|
142
|
+
This should ensure that rigid dofs are detected and treated as such, without
|
|
143
|
+
relying only on their name.
|
|
144
|
+
This is relevant for multiple bodies and articulated bodies when computing:
|
|
145
|
+
* hydrostatics, where the exact hydrostatic stiffness formula for rigid body dofs can be used instead of the approximation for generalized dofs.
|
|
146
|
+
* forward speed, where the m-term is currently only implemented for rigid dofs.
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
Minor changes
|
|
150
|
+
~~~~~~~~~~~~~
|
|
151
|
+
|
|
152
|
+
* Add option :code:`'lu_decomposition_with_overwrite'` for the :code:`linear_solver` of :class:`~capytaine.bem.engines.BasicMatrixEngine`, which reduces the RAM usage of the solver (:pull:`775`).
|
|
153
|
+
|
|
154
|
+
* Velocity in the fluid can be post-processed in the limit frequencies (:math:`\omega = 0` or :math:`\omega = \infty`). Divide it by :math:`\omega` to have a finite value (:pull:`777`).
|
|
155
|
+
|
|
156
|
+
* Display in the log the RAM usage estimation before a batch resolution and the measured RAM usage at the end of the resolution (:pull:`784`)
|
|
157
|
+
|
|
158
|
+
* **Breaking** When building the dataset in :meth:`~cpt.bem.solver.fill_dataset`, the previous ``kochin`` attribute has been renamed to ``kochin_radiation``
|
|
159
|
+
to be consistent with the existing ``kochin_diffraction`` attribute.
|
|
160
|
+
|
|
161
|
+
* **Breaking** Remove the geometric body classes ``cpt.Sphere()``,
|
|
162
|
+
``cpt.VerticalCylinder()``, ``cpt.HorizontalCylinder()``, ``cpt.Disk()``,
|
|
163
|
+
``cpt.Rectangle()``, ``cpt.RectangularParallelepiped()``, that were marked as
|
|
164
|
+
deprecated since version 2.0. Consider using instead::
|
|
165
|
+
|
|
166
|
+
cpt.FloatingBody(mesh=cpt.mesh_sphere(...), ...)
|
|
167
|
+
|
|
168
|
+
or something equivalent, separating the geometric mesh generation from the
|
|
169
|
+
floating body definition.
|
|
170
|
+
|
|
171
|
+
* :func:`~capytaine.bodies.dofs.rigid_body_dofs` now instantiate the new dof class instead of a placeholder.
|
|
172
|
+
It now has an additional input argument ``only`` to have only some of the six rigid body dofs.
|
|
173
|
+
Also a rotation center should be passed, because the properties of the body
|
|
174
|
+
(e.g. `center_of_mass`) cannot be accessed at that stage. (:pull:`838`)
|
|
175
|
+
|
|
176
|
+
Bug fixes
|
|
177
|
+
~~~~~~~~~
|
|
178
|
+
|
|
179
|
+
* Fix type of the right-hand-side of the linear solver when using option :code:`floating_point_precision = 'float32'` in :class:`~capytaine.green_functions.delhommeau.Delhommeau`.
|
|
180
|
+
As a consequence, the whole computation is done in single precision and the RAM usage is lower as expected. (:pull:`774`)
|
|
181
|
+
|
|
182
|
+
* Fix the timer for parallel resolution, i.e. when :code:`n_jobs` is greater than 1. Now the durations for each process are displayed. (:pull:`782`)
|
|
183
|
+
|
|
184
|
+
* Hydrostatics methods better take into account the free surface even when
|
|
185
|
+
the mesh has not been clipped yet.
|
|
186
|
+
Internally, the mesh is clipped before computing methods such as
|
|
187
|
+
:meth:`~cpt.bodies.bodies.FloatingBody.disp_volume` or
|
|
188
|
+
:meth:`~cpt.bodies.bodies.FloatingBody.center_of_buoyancy`, such that the
|
|
189
|
+
computed displaced volume is always actually the volume below $z=0$ and the
|
|
190
|
+
center of buoyancy is always below the free surface.
|
|
191
|
+
The inertia matrix always uses the displaced water mass for the mass and
|
|
192
|
+
compute the inertia moments on the full shape if the full mesh is provided.
|
|
193
|
+
(:pull:`794`)
|
|
194
|
+
|
|
195
|
+
* Fix the frequency type in the dimensions of the dataset returned by :meth:`~cpt.io.xarray.kochin_data_array`. Previously, the dimension was always named ``omega``;
|
|
196
|
+
it is now named ``omega``, ``freq``, ``period``, ``wavenumber`` or ``wavelength`` depending on the user settings.
|
|
197
|
+
|
|
198
|
+
* Fix a bug when computing the Kochin function on a mesh with a lid. The Kochin function now also takes the faces on the lid into account. (:issue:`833`)
|
|
199
|
+
|
|
200
|
+
Internals
|
|
201
|
+
~~~~~~~~~
|
|
202
|
+
|
|
203
|
+
* **Breaking** The ``green_function`` is not an attribute of the :class:`~capytaine.bem.solver.BEMSolver` anymore, but of the engine.
|
|
204
|
+
The motivation is that not all engines can be made compatible with all Green function implementations (although the builtins one are).
|
|
205
|
+
The possibility to call ``BEMSolver(green_function=...)`` is kept as a convenient shortcut to ``BEMSolver(engine=BasicMatrixEngine(green_function=...))``.
|
|
206
|
+
Calls to ``BEMSolver(green_function=..., engine=...)`` now raise an error. (:pull:`752`)
|
|
207
|
+
Post-processing new requires the implementation of the methods ``build_S_matrix`` and ``build_fullK_matrix`` by the engine (:pull:`753`)
|
|
208
|
+
|
|
209
|
+
* New implementation of the block symmetric matrices for mesh symmetry, now
|
|
210
|
+
used by :class:`~capytaine.bem.engines.BasicMatrixEngine` (:pull:`754`).
|
|
211
|
+
|
|
212
|
+
* Rafactor of the :class:`~capytaine.bem.engines.BasicMatrixEngine` to make the
|
|
213
|
+
caching more straightforward and improve its interaction with LU
|
|
214
|
+
decomposition and symmetries. (:pull:`755`)
|
|
215
|
+
|
|
216
|
+
* The whole ``matrices`` module as well as the corresponding engines in
|
|
217
|
+
``bem/engines.py`` and ``tool/lru_caches.py`` have been removed from
|
|
218
|
+
Capytaine. For compatibility, they will remain accessible from a separate
|
|
219
|
+
package. (:pull:`757`, :pull:`765`)
|
|
220
|
+
|
|
221
|
+
* Instead of creating a ``CollectionOfMeshes``, now ``join_bodies`` merges the
|
|
222
|
+
meshes of the bodies together. The legacy behavior is still available from
|
|
223
|
+
Fakeblocks ``join_bodies``. (:pull:`779`)
|
|
224
|
+
|
|
225
|
+
* The new ``Mesh`` class has a ``faces_metadata`` attribute storing fields
|
|
226
|
+
defined on each faces of the mesh. When faces are added or removed, the
|
|
227
|
+
metadata are automatically updated accordingly. (:pull:`791`)
|
|
228
|
+
|
|
229
|
+
* Move hydrostatics routines in a dedicated module and rewrite corresponding tests (:pull:`794`)
|
|
230
|
+
|
|
231
|
+
* Refactor the implementation of the timer to make it easier to include more steps (:pull:`809`)
|
|
232
|
+
|
|
233
|
+
* Parameters ``free_surface``, ``water_depth`` and ``wavenumber`` are always
|
|
234
|
+
keyword arguments in the engine and the Green function (:pull:`812`)
|
|
235
|
+
|
|
236
|
+
* **Breaking** :meth:`~capytaine.bodies.FloatingBody.add_rotation_dof` takes
|
|
237
|
+
arguments called ``rotation_center`` and ``direction`` instead of an ``Axis``
|
|
238
|
+
object. Also the geometric center is not used anymore as a fallback value for
|
|
239
|
+
``rotation_center``.
|
|
10
240
|
|
|
11
241
|
---------------------------------
|
|
12
242
|
New in version 2.3.1 (2025-10-14)
|