capytaine 2.3__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 → capytaine-3.0.0a1}/.github/workflows/build_docs.yml +10 -12
- capytaine-3.0.0a1/.github/workflows/build_wheels.yaml +103 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/.github/workflows/test_new_commits.yaml +14 -8
- capytaine-3.0.0a1/.github/workflows/test_with_latest_dependencies.yaml +48 -0
- capytaine-3.0.0a1/.pre-commit-config.yaml +25 -0
- capytaine-3.0.0a1/Justfile +189 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/PKG-INFO +8 -14
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/Makefile +1 -1
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/changelog.rst +277 -12
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/conf.py +3 -2
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/developer_manual/installation.rst +59 -74
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/developer_manual/making_a_release.rst +22 -18
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/developer_manual/overview.rst +0 -18
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/developer_manual/testing.rst +26 -31
- capytaine-3.0.0a1/docs/examples/A_beginners_cookbook.rst +102 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/C_advanced_cookbook.rst +0 -15
- capytaine-2.3/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/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/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/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/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 → capytaine-3.0.0a1}/docs/examples/src/B4_kochin.py +1 -1
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/C5_plot_influence_matrix.py +1 -2
- {capytaine-2.3 → 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 → capytaine-3.0.0a1}/docs/examples/src/V_hydrostatics.py +9 -8
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/quickstart.py +10 -9
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/features.rst +23 -23
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/index.rst +1 -1
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/theory_manual/bibliography.rst +4 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/theory_manual/theory.rst +15 -14
- capytaine-3.0.0a1/docs/user_manual/body.rst +157 -0
- {capytaine-2.3 → 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 → capytaine-3.0.0a1}/docs/user_manual/hydrostatics.rst +60 -47
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/user_manual/index.rst +3 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/user_manual/installation.rst +20 -14
- {capytaine-2.3 → 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 → capytaine-3.0.0a1}/docs/user_manual/post_pro.rst +23 -7
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/user_manual/problem_setup.rst +2 -2
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/user_manual/resolution.rst +140 -108
- capytaine-3.0.0a1/docs/user_manual/symmetries.rst +119 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/user_manual/tutorial.rst +49 -34
- {capytaine-2.3/capytaine/green_functions/libDelhommeau/src → capytaine-3.0.0a1/libs/LiangWuNoblesse}/LiangWuNoblesseWaveTerm.f90 +112 -112
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/Makefile +0 -2
- capytaine-3.0.0a1/libs/fakeblocks/LICENSE +674 -0
- {capytaine-2.3/docs/examples/src → capytaine-3.0.0a1/libs/fakeblocks/examples}/C6_axisymmetric_buoy.py +2 -1
- {capytaine-2.3/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/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/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/__init__.py +5 -5
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/block.py +2 -2
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/block_toeplitz.py +3 -3
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/builders.py +3 -3
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/linear_solvers.py +2 -83
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/collections.py +10 -2
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/mesh_like_protocol.py +1 -1
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/meshes.py +11 -2
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/surface_integrals.py +20 -13
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/symmetric.py +90 -25
- capytaine-3.0.0a1/libs/fakeblocks/test/test_bodies.py +29 -0
- capytaine-2.3/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/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_linear_solvers.py +3 -4
- {capytaine-2.3/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_matrices.py +4 -4
- {capytaine-2.3/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes.py +35 -24
- {capytaine-2.3/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes_clipping.py +26 -23
- capytaine-3.0.0a1/libs/fakeblocks/test/test_meshes_collections_and_symmetries.py +204 -0
- capytaine-3.0.0a1/libs/fakeblocks/test/test_meshes_interface.py +94 -0
- {capytaine-2.3/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes_predefined.py +30 -26
- {capytaine-2.3/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_tool_lru_cache.py +1 -1
- {capytaine-2.3/capytaine/green_functions/LiangWuNoblesse → capytaine-3.0.0a1/libs/libDelhommeau/src}/LiangWuNoblesseWaveTerm.f90 +112 -112
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/matrices.f90 +8 -5
- {capytaine-2.3 → capytaine-3.0.0a1}/meson.build +34 -18
- capytaine-3.0.0a1/pyproject.toml +97 -0
- capytaine-3.0.0a1/pytest/Hydrostatics_cases/sphere__hor_cyl__ver_cyl.pkl.json +1 -0
- {capytaine-2.3 → 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 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/single_body/Hydrostatics.dat +1 -1
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/single_body_list/Hydrostatics.dat +1 -1
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/two_bodies_list/Hydrostatics_0.dat +1 -1
- {capytaine-2.3 → 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 → capytaine-3.0.0a1}/pytest/test_bem_irregular_frequencies_removal.py +79 -44
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_bem_linear_combination_of_dofs.py +7 -4
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_bem_no_free_surface.py +1 -1
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_bem_potential_velocity_and_free_surface_elevation.py +10 -4
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_bem_problems_and_results.py +8 -4
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_bem_solver.py +42 -9
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_bem_with_quadratures.py +11 -32
- {capytaine-2.3 → 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 → capytaine-3.0.0a1}/pytest/test_consistency_with_Nemoh_2.py +44 -26
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_forward_speed.py +16 -7
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_green_functions_fortran_core.py +4 -4
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_green_functions_matrix_shape.py +23 -14
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_green_functions_table_density.py +1 -1
- capytaine-3.0.0a1/pytest/test_green_functions_tabulation_caching.py +40 -0
- capytaine-3.0.0a1/pytest/test_hydrostatics.py +605 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_io_legacy.py +2 -2
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_io_wamit.py +4 -8
- {capytaine-2.3 → 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/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 → 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 → capytaine-3.0.0a1}/pytest/test_post_pro_kochin.py +34 -17
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_post_pro_rao.py +4 -5
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_tool_symbolic_multiplication.py +23 -1
- capytaine-3.0.0a1/pytest/test_tools_block_circulant_matrices.py +204 -0
- capytaine-2.3/capytaine/__about__.py → capytaine-3.0.0a1/src/capytaine/__about__.py.in +7 -2
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/__init__.py +8 -12
- capytaine-3.0.0a1/src/capytaine/bem/engines.py +321 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/bem/problems_and_results.py +30 -21
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/bem/solver.py +205 -81
- 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 → capytaine-3.0.0a1/src}/capytaine/green_functions/abstract_green_function.py +2 -2
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/green_functions/delhommeau.py +50 -31
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/green_functions/hams.py +19 -13
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/io/legacy.py +3 -103
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/io/xarray.py +15 -10
- 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 → capytaine-3.0.0a1/src}/capytaine/post_pro/free_surfaces.py +1 -4
- {capytaine-2.3 → 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 → 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 → capytaine-3.0.0a1/src}/capytaine/tools/symbolic_multiplication.py +31 -5
- 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/.github/workflows/build_wheels.yaml +0 -64
- capytaine-2.3/.github/workflows/test_with_latest_dependencies.yaml +0 -32
- capytaine-2.3/.pre-commit-config.yaml +0 -40
- capytaine-2.3/Makefile +0 -32
- capytaine-2.3/capytaine/bodies/bodies.py +0 -1213
- capytaine-2.3/capytaine/bodies/dofs.py +0 -19
- capytaine-2.3/capytaine/bodies/predefined/__init__.py +0 -6
- capytaine-2.3/capytaine/bodies/predefined/cylinders.py +0 -151
- capytaine-2.3/capytaine/bodies/predefined/rectangles.py +0 -111
- capytaine-2.3/capytaine/bodies/predefined/spheres.py +0 -70
- capytaine-2.3/capytaine/tools/timer.py +0 -64
- capytaine-2.3/docs/_static/proof.css +0 -34
- capytaine-2.3/docs/_static/proof.js +0 -8
- capytaine-2.3/docs/examples/A_beginners_cookbook.rst +0 -84
- capytaine-2.3/docs/examples/src/A1_radiation_cylinder.py +0 -56
- capytaine-2.3/docs/examples/src/A2_multibody.py +0 -44
- capytaine-2.3/docs/examples/src/A5_convergence_study.py +0 -42
- capytaine-2.3/docs/examples/src/A8_export_dataset.py +0 -45
- capytaine-2.3/docs/user_manual/body.rst +0 -166
- capytaine-2.3/editable_install_requirements.txt +0 -13
- capytaine-2.3/noxfile.py +0 -117
- capytaine-2.3/pyproject.toml +0 -66
- capytaine-2.3/pytest/Hydrostatics_cases/sphere__hor_cyl__ver_cyl.pkl.json +0 -1
- capytaine-2.3/pytest/envs/2024-04-08-py3.12.txt +0 -80
- capytaine-2.3/pytest/envs/2024-10-22-py3.12.txt +0 -81
- capytaine-2.3/pytest/envs/2025-04-18-py3.12.txt +0 -93
- capytaine-2.3/pytest/test_bem_engines_basic_matric_engine.py +0 -75
- capytaine-2.3/pytest/test_bodies.py +0 -320
- capytaine-2.3/pytest/test_bodies_predefined.py +0 -189
- capytaine-2.3/pytest/test_hydrostatics.py +0 -457
- capytaine-2.3/pytest/test_io_meshes.py +0 -134
- capytaine-2.3/pytest/test_io_meshes_gdf.py +0 -146
- capytaine-2.3/pytest/test_io_meshes_hst.py +0 -169
- capytaine-2.3/pytest/test_io_meshes_mar.py +0 -53
- capytaine-2.3/pytest/test_meshes_collections_and_symmetries.py +0 -157
- capytaine-2.3/pytest/test_meshes_interface.py +0 -81
- capytaine-2.3/pytest/test_ui_matplotlib.py +0 -32
- capytaine-2.3/pytest/test_ui_vtk.py +0 -26
- {capytaine-2.3 → capytaine-3.0.0a1}/.gitignore +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/.zenodo.json +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/CONTRIBUTING.md +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/LICENSE +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/README.md +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/code_of_conduct.md +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/_static/custom.css +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/_templates/layout.html +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/citing.rst +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/developer_manual/contributing.rst +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/developer_manual/index.rst +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/B_intermediate_cookbook.rst +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/index.rst +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/B1_pressure_on_hull.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/B2_haskind.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/B3_free_surface_elevation.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/B5_plot_velocity_in_domain.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/B6_animate_free_surface.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/B7_boat_animation.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/B8_pressure_infinite_frequency.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/C10_custom_linear_solver_on_gpu.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/C8_compare_Green_functions.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/src/boat_200.mar +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/examples/validation.rst +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/theory_manual/index.rst +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/user_manual/Nemoh.cal +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/user_manual/Panel_convention.svg +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/user_manual/export_output.rst +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/docs/user_manual/quickstart.rst +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/.gitignore +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/FinGreen3D.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/LICENSE +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/Makefile +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/README.md +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/FinGreen3D/test_program.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/.gitignore +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/LICENSE +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/README.md +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/LiangWuNoblesse/test_program.f90 +0 -0
- /capytaine-2.3/capytaine/bem/__init__.py → /capytaine-3.0.0a1/libs/fakeblocks/README.md +0 -0
- {capytaine-2.3/capytaine/green_functions/libs → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/__init__.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/matrices/low_rank.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/__init__.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/clipper.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/geometry.py +0 -0
- {capytaine-2.3/capytaine/io → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks/meshes}/mesh_loaders.py +0 -0
- {capytaine-2.3/capytaine/io → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks/meshes}/mesh_writers.py +0 -0
- {capytaine-2.3/capytaine/io → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks/meshes}/meshio.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/predefined/__init__.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/predefined/cylinders.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/predefined/rectangles.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/predefined/spheres.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/properties.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/quadratures.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/meshes/quality.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/tools/lru_cache.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/__init__.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/animation.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/body_viewer.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/helpers.py +0 -0
- {capytaine-2.3/capytaine → capytaine-3.0.0a1/libs/fakeblocks/src/fakeblocks}/ui/vtk/mesh_viewer.py +0 -0
- {capytaine-2.3/pytest → capytaine-3.0.0a1/libs/fakeblocks/test}/test_meshes_geometry.py +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/.gitignore +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/LICENSE +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/Makefile +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/README.md +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/openmp/benchmark_omp.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/openmp/display_mesh.py +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/openmp/read_output.py +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/profiling/benchmark_profiling.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/rankine/benchmark_rankine.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/tabulations/benchmark_tabulation.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/benchmarks/waves/benchmark_waves.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/examples/minimal/minimal_example.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/examples/minimal/minimal_example.py +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/Delhommeau_integrals.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/FinGreen3D.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/Green_Rankine.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/Green_wave.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/constants.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/float32.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/float64.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/interface.f90 +0 -0
- {capytaine-2.3/capytaine/green_functions → capytaine-3.0.0a1/libs}/libDelhommeau/src/old_Prony_decomposition.f90 +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Bemio_verification_cases/sphere.out +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/Cylinder.dat +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/Nemoh.cal +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/Nemoh_v3.cal +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/DiffractionForce.tec +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/ExcitationForce.tec +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/Cylinder/reference_results/RadiationCoefficients.tec +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/Nemoh.cal +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/Nemoh_v3.cal +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/NonSymmetrical.dat +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/DiffractionForce.tec +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/ExcitationForce.tec +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/Nemoh_verification_cases/NonSymmetrical/reference_results/RadiationCoefficients.tec +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/single_body/KH.dat +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/single_body_list/KH.dat +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/two_bodies_list/KH_0.dat +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/io_legacy_cases/reference_data/two_bodies_list/KH_1.dat +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/mesh_files_examples/barge.med +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/mesh_files_examples/cylinder2.msh +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/mesh_files_examples/cylinder4.msh +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_bem_airy_waves.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_consistency_with_HAMS.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_consistency_with_analytical_solutions.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_green_functions_finite_depth.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1}/pytest/test_io_bemio.py +0 -0
- {capytaine-2.3/capytaine/io → capytaine-3.0.0a1/src/capytaine/bem}/__init__.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/bem/airy_waves.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/bodies/__init__.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/green_functions/__init__.py +0 -0
- {capytaine-2.3/capytaine/tools → capytaine-3.0.0a1/src/capytaine/io}/__init__.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/io/bemio.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/io/wamit.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/post_pro/__init__.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/post_pro/impedance.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/post_pro/rao.py +0 -0
- {capytaine-2.3/capytaine/ui → capytaine-3.0.0a1/src/capytaine/tools}/__init__.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/tools/cache_on_disk.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/tools/deprecation_handling.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/tools/optional_imports.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/tools/prony_decomposition.py +0 -0
- {capytaine-2.3 → capytaine-3.0.0a1/src}/capytaine/ui/cli.py +0 -0
- {capytaine-2.3 → 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
|
|
|
@@ -31,26 +29,26 @@ jobs:
|
|
|
31
29
|
- name: Checkout
|
|
32
30
|
uses: actions/checkout@v4
|
|
33
31
|
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
python-version: '3.12'
|
|
32
|
+
- name: Set up Just
|
|
33
|
+
run: sudo apt install -y just
|
|
37
34
|
|
|
38
|
-
- name:
|
|
39
|
-
|
|
35
|
+
- name: Set up UV
|
|
36
|
+
uses: astral-sh/setup-uv@v5
|
|
37
|
+
with:
|
|
38
|
+
enable-cache: true
|
|
40
39
|
|
|
41
40
|
- name: Build documentation
|
|
42
|
-
run:
|
|
41
|
+
run: just build_docs
|
|
43
42
|
|
|
44
43
|
- name: Deploy pages
|
|
45
44
|
if: |
|
|
46
|
-
github.repository_owner == 'capytaine'
|
|
47
|
-
|
|
48
|
-
# 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
|
|
49
47
|
uses: JamesIves/github-pages-deploy-action@releases/v4
|
|
50
48
|
with:
|
|
51
49
|
folder: ./docs/_build/html/
|
|
52
50
|
repository-name: capytaine/capytaine.github.io
|
|
53
51
|
branch: main
|
|
54
|
-
target-folder:
|
|
52
|
+
target-folder: ${{ github.ref_name }}/
|
|
55
53
|
clean: true
|
|
56
54
|
token: ${{ secrets.TOKEN_PAGES }}
|
|
@@ -0,0 +1,103 @@
|
|
|
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@v6
|
|
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.3.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@v6
|
|
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@v6
|
|
45
|
+
|
|
46
|
+
# No need to setup fortran, it won't be used by CIbuildwheel which is
|
|
47
|
+
# using a Manylinux container
|
|
48
|
+
|
|
49
|
+
- name: Build wheels on Ubuntu
|
|
50
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
51
|
+
env:
|
|
52
|
+
CIBW_SKIP: "*i686* *musllinux*"
|
|
53
|
+
|
|
54
|
+
- uses: actions/upload-artifact@v6
|
|
55
|
+
with:
|
|
56
|
+
name: wheels-ubuntu
|
|
57
|
+
path: ./wheelhouse/*.whl
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
"build_wheels_on_macos_intel":
|
|
61
|
+
name: Build wheels on MacOS Intel
|
|
62
|
+
runs-on: macos-15-intel
|
|
63
|
+
|
|
64
|
+
steps:
|
|
65
|
+
- uses: actions/checkout@v6
|
|
66
|
+
|
|
67
|
+
- uses: fortran-lang/setup-fortran@v1
|
|
68
|
+
with:
|
|
69
|
+
compiler: 'gcc'
|
|
70
|
+
version: '13'
|
|
71
|
+
|
|
72
|
+
- name: Build wheels
|
|
73
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
74
|
+
env:
|
|
75
|
+
CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=15.0
|
|
76
|
+
|
|
77
|
+
- uses: actions/upload-artifact@v6
|
|
78
|
+
with:
|
|
79
|
+
name: wheels-macos-intel
|
|
80
|
+
path: ./wheelhouse/*.whl
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
"build_wheels_on_macos_arm":
|
|
84
|
+
name: Build wheels on MacOS ARM
|
|
85
|
+
runs-on: macos-14
|
|
86
|
+
|
|
87
|
+
steps:
|
|
88
|
+
- uses: actions/checkout@v6
|
|
89
|
+
|
|
90
|
+
- uses: fortran-lang/setup-fortran@v1
|
|
91
|
+
with:
|
|
92
|
+
compiler: 'gcc'
|
|
93
|
+
version: '13'
|
|
94
|
+
|
|
95
|
+
- name: Build wheels
|
|
96
|
+
uses: pypa/cibuildwheel@v3.3.0
|
|
97
|
+
env:
|
|
98
|
+
CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=14.0
|
|
99
|
+
|
|
100
|
+
- uses: actions/upload-artifact@v6
|
|
101
|
+
with:
|
|
102
|
+
name: wheels-macos-arm
|
|
103
|
+
path: ./wheelhouse/*.whl
|
|
@@ -16,7 +16,6 @@ on:
|
|
|
16
16
|
|
|
17
17
|
env:
|
|
18
18
|
FORCE_COLOR: 3
|
|
19
|
-
# Colors for nox
|
|
20
19
|
|
|
21
20
|
# The following block is meant to cancel the workflow if a newer commit is pushed on the pull request
|
|
22
21
|
# From https://stackoverflow.com/questions/66335225/how-to-cancel-previous-runs-in-the-pr-when-you-push-new-commitsupdate-the-curre
|
|
@@ -25,28 +24,35 @@ concurrency:
|
|
|
25
24
|
cancel-in-progress: true
|
|
26
25
|
|
|
27
26
|
jobs:
|
|
28
|
-
build_and_test:
|
|
27
|
+
"build_and_test":
|
|
29
28
|
|
|
30
29
|
runs-on: ubuntu-latest
|
|
31
30
|
|
|
32
31
|
strategy:
|
|
33
32
|
matrix:
|
|
34
|
-
python-version: ['
|
|
33
|
+
python-version: ['38', '313']
|
|
35
34
|
|
|
36
35
|
steps:
|
|
37
36
|
|
|
38
37
|
- name: Checkout repository
|
|
39
38
|
uses: actions/checkout@v4
|
|
40
39
|
|
|
40
|
+
# - name: Set up Just
|
|
41
|
+
# uses: extractions/setup-just@v3
|
|
42
|
+
# with:
|
|
43
|
+
# just-version: 1.40
|
|
44
|
+
- name: Set up Just
|
|
45
|
+
run: sudo apt install -y just
|
|
46
|
+
|
|
41
47
|
- name: Set up UV
|
|
42
48
|
uses: astral-sh/setup-uv@v5
|
|
43
49
|
with:
|
|
44
50
|
enable-cache: true
|
|
45
51
|
|
|
46
|
-
- name: Run
|
|
47
|
-
run:
|
|
52
|
+
- name: Run tests
|
|
53
|
+
run: just test_in_py${{ matrix.python-version }}_reference_env
|
|
48
54
|
|
|
49
|
-
compile_fortran:
|
|
55
|
+
"compile_fortran":
|
|
50
56
|
|
|
51
57
|
runs-on: ubuntu-latest
|
|
52
58
|
|
|
@@ -66,11 +72,11 @@ jobs:
|
|
|
66
72
|
# version: '13'
|
|
67
73
|
|
|
68
74
|
- name: Compile and run example
|
|
69
|
-
working-directory:
|
|
75
|
+
working-directory: libs/libDelhommeau/
|
|
70
76
|
run: make example && examples/minimal/minimal_example.bin
|
|
71
77
|
# Soundness of the results is not tested, only that the compiling and
|
|
72
78
|
# execution are succeeding.
|
|
73
79
|
|
|
74
80
|
- name: Run simple benchmark
|
|
75
|
-
working-directory:
|
|
81
|
+
working-directory: libs/libDelhommeau/
|
|
76
82
|
run: make run_bench_rankine && make run_bench_waves
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: Build and test using latest available dependencies
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
schedule:
|
|
6
|
+
- cron: '5 5 5/15 * *' # On the 5th and 20th of each month at 5:05
|
|
7
|
+
|
|
8
|
+
env:
|
|
9
|
+
FORCE_COLOR: 3
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
"test_in_latest_env":
|
|
13
|
+
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout repository
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Set up UV
|
|
21
|
+
uses: astral-sh/setup-uv@v5
|
|
22
|
+
with:
|
|
23
|
+
enable-cache: true
|
|
24
|
+
|
|
25
|
+
- name: Set up Just
|
|
26
|
+
run: sudo apt install -y just
|
|
27
|
+
|
|
28
|
+
- name: Run tests
|
|
29
|
+
run: just test_in_latest_env
|
|
30
|
+
|
|
31
|
+
"test_in_nightly_env":
|
|
32
|
+
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
|
|
35
|
+
steps:
|
|
36
|
+
- name: Checkout repository
|
|
37
|
+
uses: actions/checkout@v4
|
|
38
|
+
|
|
39
|
+
- name: Set up UV
|
|
40
|
+
uses: astral-sh/setup-uv@v5
|
|
41
|
+
with:
|
|
42
|
+
enable-cache: true
|
|
43
|
+
|
|
44
|
+
- name: Set up Just
|
|
45
|
+
run: sudo apt install -y just
|
|
46
|
+
|
|
47
|
+
- name: Run tests
|
|
48
|
+
run: just test_in_nightly_env
|
|
@@ -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
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
set shell := ["bash", "-c"]
|
|
2
|
+
set windows-shell := ["powershell.exe", "-c"]
|
|
3
|
+
|
|
4
|
+
default:
|
|
5
|
+
just --list
|
|
6
|
+
|
|
7
|
+
# Run the recipe below in a clean virtual environment to install Capytaine in
|
|
8
|
+
# editable mode.
|
|
9
|
+
editable_install:
|
|
10
|
+
uv pip install -r pyproject.toml \
|
|
11
|
+
--extra optional \
|
|
12
|
+
--group editable_install \
|
|
13
|
+
--group dev
|
|
14
|
+
uv pip install --no-build-isolation --editable .
|
|
15
|
+
|
|
16
|
+
# Define the temporary directory differently based on OS
|
|
17
|
+
TEMP_DIR := if os_family() == 'windows' {
|
|
18
|
+
`$temp = Join-Path $env:TEMP ('capytainedev-' + [System.IO.Path]::GetRandomFileName()); New-Item -ItemType Directory -Path $temp -Force | Out-Null; Write-Output $temp`
|
|
19
|
+
} else {
|
|
20
|
+
`mktemp --directory --tmpdir capytainedev-XXXXX`
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
ENV := "MPLBACKEND=pdf CAPYTAINE_PROGRESS_BAR=False CAPYTAINE_CACHE_DIR=" + TEMP_DIR + "/cache/"
|
|
24
|
+
|
|
25
|
+
TEST_DIR := justfile_directory() / 'pytest'
|
|
26
|
+
NEMOH_CASES := TEST_DIR / 'Nemoh_verification_cases' / 'Cylinder'
|
|
27
|
+
|
|
28
|
+
EXAMPLES_DIR := justfile_directory() / 'docs' / 'examples' / 'src'
|
|
29
|
+
EXAMPLES_FILES := ' \
|
|
30
|
+
A1_single_body_hydrodynamics.py \
|
|
31
|
+
A2_multibody.py \
|
|
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 \
|
|
38
|
+
B1_pressure_on_hull.py \
|
|
39
|
+
B2_haskind.py \
|
|
40
|
+
B3_free_surface_elevation.py \
|
|
41
|
+
B4_kochin.py \
|
|
42
|
+
B5_plot_velocity_in_domain.py \
|
|
43
|
+
B8_pressure_infinite_frequency.py \
|
|
44
|
+
C5_plot_influence_matrix.py \
|
|
45
|
+
C8_compare_Green_functions.py \
|
|
46
|
+
C9_custom_Green_function.py \
|
|
47
|
+
'
|
|
48
|
+
|
|
49
|
+
## Reason for skipping some example files:
|
|
50
|
+
# A5_benchmark_plane_symmetries.py \
|
|
51
|
+
# A6_benchmark_axisymmetric_mesh.py \
|
|
52
|
+
# A9_test_irregular_frequency_removal.py \ # Slow
|
|
53
|
+
# B6_animate_free_surface.py \ # Requires VTK
|
|
54
|
+
# B7_boat_animation.py \ # Requires VTK
|
|
55
|
+
# C6_axisymmetric_buoy.py \ # Requires VTK
|
|
56
|
+
# C10_custom_linear_solver_on_gpu.py \ # Requires torch
|
|
57
|
+
|
|
58
|
+
# Run the test suite and the example files assuming a virtual environment with
|
|
59
|
+
# Capytaine installed has been activated
|
|
60
|
+
[unix]
|
|
61
|
+
_test:
|
|
62
|
+
#!/usr/bin/env bash
|
|
63
|
+
set -euxo pipefail
|
|
64
|
+
uv pip list | grep -Ei "numpy|xarray|capytaine" || true
|
|
65
|
+
cd {{TEMP_DIR}}
|
|
66
|
+
export {{ENV}}
|
|
67
|
+
python -c "import capytaine; print(capytaine.__version__)"
|
|
68
|
+
python -m pytest {{TEST_DIR}}
|
|
69
|
+
capytaine --help
|
|
70
|
+
capytaine {{NEMOH_CASES}}/Nemoh.cal
|
|
71
|
+
capytaine {{NEMOH_CASES}}/Nemoh_v3.cal
|
|
72
|
+
set +x # Stop displaying commands
|
|
73
|
+
for f in {{EXAMPLES_FILES}}; do
|
|
74
|
+
echo -e "\n---> Running $f";
|
|
75
|
+
python {{EXAMPLES_DIR}}/$f;
|
|
76
|
+
done
|
|
77
|
+
|
|
78
|
+
# Simplified version of the above, working on Windows
|
|
79
|
+
[windows]
|
|
80
|
+
_test:
|
|
81
|
+
#! powershell
|
|
82
|
+
cd {{TEMP_DIR}}
|
|
83
|
+
python -c "import capytaine; print(capytaine.__version__)"
|
|
84
|
+
python -m pytest {{TEST_DIR}}
|
|
85
|
+
capytaine --help
|
|
86
|
+
capytaine {{NEMOH_CASES}}/Nemoh.cal
|
|
87
|
+
capytaine {{NEMOH_CASES}}/Nemoh_v3.cal
|
|
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.
|
|
109
|
+
|
|
110
|
+
test_in_latest_env:
|
|
111
|
+
uv run \
|
|
112
|
+
--isolated --no-default-groups \
|
|
113
|
+
--no-editable --with "capytaine[optional] @ ." \
|
|
114
|
+
--group test \
|
|
115
|
+
-- \
|
|
116
|
+
just _test
|
|
117
|
+
|
|
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:
|
|
123
|
+
uv run \
|
|
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
|
+
-- \
|
|
131
|
+
just _test
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
test_in_py38_reference_env:
|
|
135
|
+
uv run \
|
|
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
|
|
142
|
+
|
|
143
|
+
test_in_py313_reference_env:
|
|
144
|
+
uv run \
|
|
145
|
+
--isolated --no-default-groups \
|
|
146
|
+
--python 3.13 \
|
|
147
|
+
--no-editable \
|
|
148
|
+
--with-requirements {{TEST_DIR}}/envs/2025-11-25-py3.13.txt \
|
|
149
|
+
-- \
|
|
150
|
+
just _install_and_test
|
|
151
|
+
|
|
152
|
+
# How the requirements files from the above recipes where generated.
|
|
153
|
+
create_test_env_file python="3.8" date="2023-08-01":
|
|
154
|
+
uv pip compile \
|
|
155
|
+
pyproject.toml \
|
|
156
|
+
--python-version {{python}} \
|
|
157
|
+
--group test \
|
|
158
|
+
--group editable_install \
|
|
159
|
+
--extra optional \
|
|
160
|
+
--exclude-newer {{date}} \
|
|
161
|
+
-o {{TEST_DIR}}/envs/{{date}}-py{{python}}.txt
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
# Compile the Fortran code without parallelism for easier reading of the errors.
|
|
165
|
+
test_fortran_compilation:
|
|
166
|
+
# It is assumed that meson and ninja are already installed (e.g. with editable_install).
|
|
167
|
+
meson setup --wipe {{TEMP_DIR}}/build && meson compile -C {{TEMP_DIR}}/build -j 1
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
build_docs:
|
|
171
|
+
uv run \
|
|
172
|
+
--isolated \
|
|
173
|
+
--no-editable --with "capytaine[optional] @ ." \
|
|
174
|
+
--group docs \
|
|
175
|
+
-- \
|
|
176
|
+
make --directory="./docs/"
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
clean:
|
|
180
|
+
rm -f src/capytaine/green_functions/libs/*.so
|
|
181
|
+
rm -rf build/
|
|
182
|
+
rm -rf dist/
|
|
183
|
+
rm -rf src/capytaine.egg-info/
|
|
184
|
+
rm -rf docs/_build
|
|
185
|
+
rm -rf .pytest_cache/
|
|
186
|
+
rm -rf .venv/
|
|
187
|
+
rm -rf __pycache__ */__pycache__ */*/__pycache__ */*/*/__pycache__
|
|
188
|
+
rm -rf $HOME/.cache/capytaine/*
|
|
189
|
+
rm -rf /tmp/capytainedev-*/
|
|
@@ -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
|
|
@@ -689,26 +689,20 @@ Requires-Python: >=3.8
|
|
|
689
689
|
Requires-Dist: numpy>=1.20; python_version >= "3.9"
|
|
690
690
|
Requires-Dist: numpy>=1.24; python_version == "3.8"
|
|
691
691
|
Requires-Dist: scipy
|
|
692
|
-
Requires-Dist: pandas
|
|
692
|
+
Requires-Dist: pandas<3,>=1.3
|
|
693
693
|
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
|
-
Provides-Extra: more-optional
|
|
702
|
-
Requires-Dist: pygmsh; extra == "more-optional"
|
|
703
|
-
Requires-Dist: gmsh; extra == "more-optional"
|
|
704
|
-
Provides-Extra: test
|
|
705
|
-
Requires-Dist: pytest; extra == "test"
|
|
706
|
-
Requires-Dist: capytaine[optional]; extra == "test"
|
|
707
|
-
Provides-Extra: docs
|
|
708
|
-
Requires-Dist: sphinx; extra == "docs"
|
|
709
|
-
Requires-Dist: sphinx-toolbox; extra == "docs"
|
|
710
|
-
Requires-Dist: sphinxcontrib-proof; extra == "docs"
|
|
711
|
-
Requires-Dist: sphinxcontrib-mermaid; extra == "docs"
|
|
712
706
|
Description-Content-Type: text/markdown
|
|
713
707
|
|
|
714
708
|
# 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"
|