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