capytaine 2.2.1__cp311-cp311-macosx_14_0_arm64.whl → 2.3__cp311-cp311-macosx_14_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. capytaine/.dylibs/libgcc_s.1.1.dylib +0 -0
  2. capytaine/.dylibs/libgfortran.5.dylib +0 -0
  3. capytaine/.dylibs/libquadmath.0.dylib +0 -0
  4. capytaine/__about__.py +1 -1
  5. capytaine/__init__.py +2 -1
  6. capytaine/bem/airy_waves.py +7 -2
  7. capytaine/bem/problems_and_results.py +78 -34
  8. capytaine/bem/solver.py +127 -39
  9. capytaine/bodies/bodies.py +30 -10
  10. capytaine/bodies/predefined/rectangles.py +2 -0
  11. capytaine/green_functions/FinGreen3D/.gitignore +1 -0
  12. capytaine/green_functions/FinGreen3D/FinGreen3D.f90 +3589 -0
  13. capytaine/green_functions/FinGreen3D/LICENSE +165 -0
  14. capytaine/green_functions/FinGreen3D/Makefile +16 -0
  15. capytaine/green_functions/FinGreen3D/README.md +24 -0
  16. capytaine/green_functions/FinGreen3D/test_program.f90 +39 -0
  17. capytaine/green_functions/LiangWuNoblesse/.gitignore +1 -0
  18. capytaine/green_functions/LiangWuNoblesse/LICENSE +504 -0
  19. capytaine/green_functions/LiangWuNoblesse/LiangWuNoblesseWaveTerm.f90 +751 -0
  20. capytaine/green_functions/LiangWuNoblesse/Makefile +18 -0
  21. capytaine/green_functions/LiangWuNoblesse/README.md +2 -0
  22. capytaine/green_functions/LiangWuNoblesse/test_program.f90 +28 -0
  23. capytaine/green_functions/abstract_green_function.py +55 -3
  24. capytaine/green_functions/delhommeau.py +186 -115
  25. capytaine/green_functions/hams.py +204 -0
  26. capytaine/green_functions/libs/Delhommeau_float32.cpython-311-darwin.so +0 -0
  27. capytaine/green_functions/libs/Delhommeau_float64.cpython-311-darwin.so +0 -0
  28. capytaine/io/bemio.py +14 -2
  29. capytaine/io/mesh_loaders.py +1 -1
  30. capytaine/io/wamit.py +479 -0
  31. capytaine/io/xarray.py +257 -113
  32. capytaine/matrices/linear_solvers.py +1 -1
  33. capytaine/meshes/clipper.py +1 -0
  34. capytaine/meshes/collections.py +11 -1
  35. capytaine/meshes/mesh_like_protocol.py +37 -0
  36. capytaine/meshes/meshes.py +17 -6
  37. capytaine/meshes/symmetric.py +11 -2
  38. capytaine/post_pro/kochin.py +4 -4
  39. capytaine/tools/lists_of_points.py +3 -3
  40. capytaine/tools/prony_decomposition.py +60 -4
  41. capytaine/tools/symbolic_multiplication.py +12 -0
  42. capytaine/tools/timer.py +64 -0
  43. {capytaine-2.2.1.dist-info → capytaine-2.3.dist-info}/METADATA +9 -2
  44. capytaine-2.3.dist-info/RECORD +92 -0
  45. capytaine-2.2.1.dist-info/RECORD +0 -76
  46. {capytaine-2.2.1.dist-info → capytaine-2.3.dist-info}/LICENSE +0 -0
  47. {capytaine-2.2.1.dist-info → capytaine-2.3.dist-info}/WHEEL +0 -0
  48. {capytaine-2.2.1.dist-info → capytaine-2.3.dist-info}/entry_points.txt +0 -0
@@ -10,7 +10,7 @@ import numpy as np
10
10
 
11
11
  from capytaine.meshes.meshes import Mesh
12
12
  from capytaine.meshes.collections import CollectionOfMeshes
13
- from capytaine.meshes.geometry import Axis, Plane, Oz_axis, inplace_transformation
13
+ from capytaine.meshes.geometry import Axis, Plane, xOy_Plane, Oz_axis, inplace_transformation
14
14
 
15
15
  LOG = logging.getLogger(__name__)
16
16
 
@@ -89,7 +89,7 @@ class ReflectionSymmetricMesh(SymmetricMesh):
89
89
  "Only meshes with the same symmetry can be joined together."
90
90
  assert all(meshes[0].plane == mesh.plane for mesh in meshes), \
91
91
  "Only reflection symmetric meshes with the same reflection plane can be joined together."
92
- half_mesh = CollectionOfMeshes([mesh.half for mesh in meshes], name=f"half_of_{name}" if name is not None else None)
92
+ half_mesh = meshes[0].half.join_meshes(*(mesh.half for mesh in meshes[1:]), name=f"half_of_{name}" if name is not None else None)
93
93
  return ReflectionSymmetricMesh(half_mesh, plane=meshes[0].plane, name=name)
94
94
 
95
95
  @inplace_transformation
@@ -110,6 +110,15 @@ class ReflectionSymmetricMesh(SymmetricMesh):
110
110
  CollectionOfMeshes.mirror(self, plane)
111
111
  return self
112
112
 
113
+ def generate_lid(self, z=0.0, faces_max_radius=None, name=None):
114
+ if name is None:
115
+ name = "lid for {}".format(self.name)
116
+ return ReflectionSymmetricMesh(self.half.generate_lid(z, faces_max_radius), self.plane, name=name)
117
+
118
+ def extract_lid(self, plane=xOy_Plane):
119
+ hull, lid = self.half.extract_lid(plane)
120
+ return ReflectionSymmetricMesh(hull, self.plane), ReflectionSymmetricMesh(lid, self.plane)
121
+
113
122
 
114
123
  class TranslationalSymmetricMesh(SymmetricMesh):
115
124
  """A mesh with a repeating pattern by translation.
@@ -1,6 +1,6 @@
1
1
  """Computation of the Kochin function."""
2
2
  # Copyright (C) 2017-2019 Matthieu Ancellin
3
- # See LICENSE file at <https://github.com/mancellin/capytaine>
3
+ # See LICENSE file at <https://github.com/capytaine/capytaine>
4
4
 
5
5
  import logging
6
6
  import numpy as np
@@ -29,9 +29,9 @@ def compute_kochin(result, theta, ref_point=(0.0, 0.0)):
29
29
  LOG.warning("Kochin functions with forward speed have never been validated.")
30
30
 
31
31
  if result.sources is None:
32
- raise Exception(f"""The values of the sources of {result} cannot been found.
33
- They probably have not been stored by the solver because the option keep_details=True have not been set.
34
- Please re-run the resolution with this option.""")
32
+ raise ValueError(f"""The values of the sources of {result} cannot been found.
33
+ They have not been stored by the solver either because the direct method has been used or the option keep_details=True have not been set.
34
+ Please re-run the resolution with `method='indirect'` and `keep_details=True`.""")
35
35
 
36
36
  k = result.wavenumber
37
37
  h = result.water_depth
@@ -1,7 +1,7 @@
1
1
  import numpy as np
2
2
  from capytaine.bodies import FloatingBody
3
3
  from capytaine.post_pro.free_surfaces import FreeSurface
4
- from capytaine.meshes import Mesh, CollectionOfMeshes
4
+ from capytaine.meshes.mesh_like_protocol import MeshLike
5
5
 
6
6
 
7
7
  def _normalize_points(points, keep_mesh=False):
@@ -11,7 +11,7 @@ def _normalize_points(points, keep_mesh=False):
11
11
  else:
12
12
  return points.mesh.faces_centers, (points.mesh.nb_faces,)
13
13
 
14
- if isinstance(points, (Mesh, CollectionOfMeshes)):
14
+ if isinstance(points, MeshLike):
15
15
  if keep_mesh:
16
16
  return points, (points.nb_faces,)
17
17
  else:
@@ -41,7 +41,7 @@ def _normalize_free_surface_points(points, keep_mesh=False):
41
41
  if keep_mesh and isinstance(points, (FloatingBody, FreeSurface)):
42
42
  return points.mesh, (points.mesh.nb_faces,)
43
43
 
44
- if keep_mesh and isinstance(points, (Mesh, CollectionOfMeshes)):
44
+ if keep_mesh and isinstance(points, MeshLike):
45
45
  return points, (points.nb_faces,)
46
46
 
47
47
  points, output_shape = _normalize_points(points, keep_mesh)
@@ -1,8 +1,8 @@
1
1
  """Prony decomposition: tool to approximate a function as a sum of exponentials.
2
2
  Used in particular in the finite depth Green function.
3
3
  """
4
- # Copyright (C) 2017-2019 Matthieu Ancellin
5
- # See LICENSE file at <https://github.com/mancellin/capytaine>
4
+ # Copyright (C) 2017-2024 Matthieu Ancellin
5
+ # See LICENSE file at <https://github.com/capytaine/capytaine>
6
6
 
7
7
  import logging
8
8
 
@@ -12,6 +12,7 @@ from scipy.optimize import curve_fit
12
12
  from scipy.linalg import toeplitz
13
13
 
14
14
  LOG = logging.getLogger(__name__)
15
+ RNG = np.random.default_rng()
15
16
 
16
17
 
17
18
  def exponential_decomposition(X, F, m):
@@ -66,8 +67,8 @@ def exponential_decomposition(X, F, m):
66
67
 
67
68
 
68
69
  def error_exponential_decomposition(X, F, a, lamda):
69
- """Compare exponential decomposition defined by the coefficients a and lamda to the reference
70
- values in F.
70
+ """Mean square error of the exponential decomposition defined by the
71
+ coefficients a and lamda with respect to the reference values in F.
71
72
 
72
73
  Parameters
73
74
  ----------
@@ -92,3 +93,58 @@ def error_exponential_decomposition(X, F, a, lamda):
92
93
  return np.sum(a * np.exp(lamda*x), axis=0)
93
94
 
94
95
  return np.square(f(X) - F).mean()
96
+
97
+
98
+ class PronyDecompositionFailure(Exception):
99
+ pass
100
+
101
+
102
+ def find_best_exponential_decomposition(f, x_min, x_max, n_exp_range, *, tol=1e-4, noise_on_domain_points_std=0.01):
103
+ """Tries to construct an exponential decompositoin of the function f on the
104
+ domain [x_min, x_max] by testing the number of exponentials in n_exp_range.
105
+
106
+ Parameters
107
+ ----------
108
+ f: callable
109
+ The function ℝ→ℝ to be approximated.
110
+ Should support vectorized calls (that is passing a vector of inputs
111
+ and get the vector of corresponding outputs)
112
+ x_min, x_max: floats
113
+ The bounds of the domain of input in which f should be approximated
114
+ n_exp_range: iterable of ints
115
+ The decomposition sizes that will be tested
116
+ tol: float, optional
117
+ The target mean square error.
118
+ noise_on_domain_points_std: float, optional
119
+ Introduces some random variability on the points where the function is evaluated.
120
+ Set this parameter to zero to disable randomness.
121
+
122
+ """
123
+ # Try different range of evaluation points to construct the decomposition.
124
+ for n_exp in n_exp_range:
125
+
126
+ # f might be ill-defined at some single specific values
127
+ # (for the use-case of delhommeau.py, it is when x = kh exactly).
128
+ # Thus we slightly randomize the range of evaluation points for the Prony decomposition.
129
+ # This way, if one of the evaluation points hits the singular point, it will most likely not hit it again at the next iteration.
130
+ x_max_iter = (1 + noise_on_domain_points_std*RNG.uniform())*x_max
131
+
132
+ try:
133
+ # The coefficients are computed on a resolution of 4*n_exp+1 ...
134
+ X = np.linspace(x_min, x_max_iter, 4*n_exp+1)
135
+ a, lamda = exponential_decomposition(X, f(X), n_exp)
136
+
137
+ # ... and they are evaluated on a finer discretization.
138
+ X = np.linspace(x_min, x_max_iter, 8*n_exp+1)
139
+ if error_exponential_decomposition(X, f(X), a, lamda) < tol:
140
+ return a, lamda
141
+ except Exception:
142
+ # If something bad happened while computing the decomposition, try
143
+ # the next one.
144
+ continue
145
+
146
+ raise PronyDecompositionFailure(
147
+ "No suitable Prony decomposition has been found in "
148
+ f"[{x_min}, {x_max}] for tol={tol} "
149
+ f"using a number of terms in {n_exp_range}."
150
+ )
@@ -16,6 +16,8 @@ class SymbolicMultiplication:
16
16
  def __init__(self, symbol, value=1.0):
17
17
  self.symbol = symbol
18
18
  self.value = value
19
+ if hasattr(value, "shape"):
20
+ self.shape = value.shape # When wrapping Numpy arrays
19
21
 
20
22
  def __format__(self, format_spec):
21
23
  return f"{self.symbol}×{self.value.__format__(format_spec)}"
@@ -40,6 +42,9 @@ class SymbolicMultiplication:
40
42
  def __radd__(self, x):
41
43
  return x + self._concretize()
42
44
 
45
+ def __neg__(self):
46
+ return SymbolicMultiplication(self.symbol, -self.value)
47
+
43
48
  def __mul__(self, x):
44
49
  return SymbolicMultiplication(self.symbol, self.value * x)
45
50
 
@@ -106,6 +111,13 @@ class SymbolicMultiplication:
106
111
  def reshape(self, *args):
107
112
  return SymbolicMultiplication(self.symbol, self.value.reshape(*args))
108
113
 
114
+ def sum(self, *args, **kwargs):
115
+ return SymbolicMultiplication(self.symbol, self.value.sum(*args, **kwargs))
116
+
117
+ @property
118
+ def T(self):
119
+ return SymbolicMultiplication(self.symbol, self.value.T)
120
+
109
121
 
110
122
  def supporting_symbolic_multiplication(f):
111
123
  """
@@ -0,0 +1,64 @@
1
+ """A simple timer class used to measure the time spent in various parts of the BEM solver."""
2
+
3
+ from functools import wraps
4
+ import time
5
+
6
+ class Timer:
7
+ """A simple timer class that can be used as context manager or as decorator using `wraps_function` method
8
+
9
+ Example
10
+ -------
11
+ timer = Timer()
12
+ with timer:
13
+ sleep(1.0)
14
+
15
+ print(timer.total) # 1.0...
16
+
17
+ @timer.wraps_function
18
+ def my_function():
19
+ sleep(0.5)
20
+
21
+ my_function()
22
+ print(timer.total) # 1.5...
23
+ my_function()
24
+ print(timer.total) # 2.0...
25
+
26
+ print(timer.timings) # [1.0, 0.5, 0.5]
27
+ """
28
+
29
+ def __init__(self, timings=None):
30
+ if timings is None:
31
+ self.timings = []
32
+ else:
33
+ self.timings = timings
34
+
35
+ def __repr__(self):
36
+ return f"Timer({self.timings})"
37
+
38
+ @property
39
+ def nb_timings(self):
40
+ return len(self.timings)
41
+
42
+ @property
43
+ def total(self):
44
+ return sum(self.timings)
45
+
46
+ @property
47
+ def mean(self):
48
+ if self.nb_timings == 0:
49
+ return float('nan')
50
+ else:
51
+ return self.total/self.nb_timings
52
+
53
+ def __enter__(self):
54
+ self.start_time = time.perf_counter()
55
+
56
+ def __exit__(self, *exc):
57
+ self.timings.append(time.perf_counter() - self.start_time)
58
+
59
+ def wraps_function(self, f):
60
+ @wraps(f)
61
+ def wrapped_f(*args, **kwargs):
62
+ with self:
63
+ return f(*args, **kwargs)
64
+ return wrapped_f
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: capytaine
3
- Version: 2.2.1
3
+ Version: 2.3
4
4
  Summary: Python BEM solver for linear potential flow, based on Nemoh
5
- Author-Email: Matthieu Ancellin <matthieu.ancellin@eurobios.com>
5
+ Author-Email: Matthieu Ancellin <matthieu.ancellin@mews-labs.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
7
7
  Version 3, 29 June 2007
8
8
 
@@ -683,6 +683,7 @@ Classifier: Programming Language :: Fortran
683
683
  Classifier: Intended Audience :: Science/Research
684
684
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
685
685
  Classifier: Topic :: Scientific/Engineering
686
+ Project-URL: homepage, https://capytaine.org
686
687
  Project-URL: repository, https://github.com/capytaine/capytaine
687
688
  Requires-Python: >=3.8
688
689
  Requires-Dist: numpy>=1.20; python_version >= "3.9"
@@ -695,8 +696,14 @@ Provides-Extra: optional
695
696
  Requires-Dist: matplotlib; extra == "optional"
696
697
  Requires-Dist: joblib>=1.3; extra == "optional"
697
698
  Requires-Dist: meshio; extra == "optional"
699
+ 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"
698
704
  Provides-Extra: test
699
705
  Requires-Dist: pytest; extra == "test"
706
+ Requires-Dist: capytaine[optional]; extra == "test"
700
707
  Provides-Extra: docs
701
708
  Requires-Dist: sphinx; extra == "docs"
702
709
  Requires-Dist: sphinx-toolbox; extra == "docs"
@@ -0,0 +1,92 @@
1
+ capytaine/__init__.py,sha256=ffYPfnzVMU03arvItDaf5VoDa68KEGP4J9aE1MQlmQg,1822
2
+ capytaine/__about__.py,sha256=di-zISnbYXwp9FpVIxlF_mgV6Ind8W8YBuMiy82ypCA,413
3
+ capytaine/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ capytaine/ui/rich.py,sha256=ZfMHUpCSVztNseIGpN2I69ts_Aw_HJ5RnZc0f73av5Q,233
5
+ capytaine/ui/cli.py,sha256=o3MH2OCHXFww1kb2zM9R3qs4jjfkCeeZFRAgnFnb2NE,797
6
+ capytaine/ui/vtk/mesh_viewer.py,sha256=y5f3Qc7vWuu_xWXxOQm1bcvwm3D_JKUbzd1M9NVqrac,14750
7
+ capytaine/ui/vtk/__init__.py,sha256=7wIkVipz_3JCZmLuED4-aQXZJwBYylS32PFswAdwvo4,161
8
+ capytaine/ui/vtk/animation.py,sha256=FYH-YAu0LY2zr7fTl36aOSkM8z74_gxQRKOJFhUSluo,12443
9
+ capytaine/ui/vtk/helpers.py,sha256=sOK_a679a7n9ozhcEZY3IhTWmPyctoLkFwKTyzDHrm8,2640
10
+ capytaine/ui/vtk/body_viewer.py,sha256=gGIla-gADWiYuiNdS2io-0whpO6AaH8A8KkEmqX4OSY,1032
11
+ capytaine/green_functions/__init__.py,sha256=527Pd0SIqwR64-d4sT-_jyE89XU-PLgFL0et96ChAIo,107
12
+ capytaine/green_functions/delhommeau.py,sha256=Z3lXv4MP1MPPJKmyISMVDqTQIpEHdroAl-OUjYJVE2w,23357
13
+ capytaine/green_functions/hams.py,sha256=yxT0ysNFxsm4VbRtywHnhtWnHrxkU8q6_DL8eEwZPTs,8252
14
+ capytaine/green_functions/abstract_green_function.py,sha256=6_YjjTKbYNgteWw4FWKQQI9nfpPzEETQxD3WOWFqosw,2834
15
+ capytaine/green_functions/FinGreen3D/test_program.f90,sha256=BlQv3O0z0tYXejz261S8l7x5H01wHAdn9-YfsRurW1w,926
16
+ capytaine/green_functions/FinGreen3D/LICENSE,sha256=2n6rt7r999OuXp8iOqW9we7ORaxWncIbOwN1ILRGR2g,7651
17
+ capytaine/green_functions/FinGreen3D/Makefile,sha256=E5XU-1Ziejhp1dHfKVP_YaGzzX1u7L3m5kZoPhtSscE,354
18
+ capytaine/green_functions/FinGreen3D/README.md,sha256=OAL_oCou4Lf3mXE88dBhDP41yx28lxMws4Dgcu4m3jc,1980
19
+ capytaine/green_functions/FinGreen3D/FinGreen3D.f90,sha256=tBsSc6BfQJpaFQ6j6tEYWG25u_SixJnooiCfQ1Uu9MI,119957
20
+ capytaine/green_functions/FinGreen3D/.gitignore,sha256=GBMUBl3y8v2vkgsai1MR2qIWotZImgatpbScxRTYlBc,7
21
+ capytaine/green_functions/LiangWuNoblesse/test_program.f90,sha256=cettkRXfJDmhigo7oUACjU3qCNFLJVDU0vI6Og4UFs8,494
22
+ capytaine/green_functions/LiangWuNoblesse/LICENSE,sha256=IMF9i4xIpgCADf0U-V1cuf9HBmqWQd3qtI3FSuyW4zE,26526
23
+ capytaine/green_functions/LiangWuNoblesse/Makefile,sha256=S0zjKvMQ9z2nWHEKNe-ES32LWyNI1_ogcJ6s9qVFEho,413
24
+ capytaine/green_functions/LiangWuNoblesse/README.md,sha256=0pQbZxIAWTc-9eQ2Qb62SfM5Eh3dNx0bPSznuOCx8xU,102
25
+ capytaine/green_functions/LiangWuNoblesse/.gitignore,sha256=GBMUBl3y8v2vkgsai1MR2qIWotZImgatpbScxRTYlBc,7
26
+ capytaine/green_functions/LiangWuNoblesse/LiangWuNoblesseWaveTerm.f90,sha256=BYaVrslAbglcI-7-kOz7qH3AQKLY4rvCmXaa7zfDCaM,22552
27
+ capytaine/green_functions/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ capytaine/green_functions/libs/Delhommeau_float32.cpython-311-darwin.so,sha256=A5OENCPrsBffoUo4cj3SVVlKyX7TOTxVGCnGCXe_xt4,363120
29
+ capytaine/green_functions/libs/Delhommeau_float64.cpython-311-darwin.so,sha256=TcuUSJPE3EjQ3M8QQiAwKd64mhCEKvylIMPmsn4Y9tw,399664
30
+ capytaine/bodies/dofs.py,sha256=M5nWTeVJxmxKl2BowOnrE3plv1rrqDHNb76D_qHroS8,598
31
+ capytaine/bodies/bodies.py,sha256=w_2kx-8Hm9qDWI9Zl-RsQQQ9RHAqAZ0lldxSseL4OFw,52243
32
+ capytaine/bodies/__init__.py,sha256=wIYFs14NAWqaHLQWvDGUEZTBWp_kdthKkbOlXHup6LA,157
33
+ capytaine/bodies/predefined/rectangles.py,sha256=PtNK7_RUjRIi1oJNlsBhOosC3Ib2cXX1SnW9llTmD44,4500
34
+ capytaine/bodies/predefined/spheres.py,sha256=8lHMqCQBQneN8EqTSXQanumt6j5TeR70CR4ckrnDfo4,2598
35
+ capytaine/bodies/predefined/__init__.py,sha256=IA1y5XDGmyzNDpgQvz8kjyGajBCYoClAnCPn1PxFwfw,338
36
+ capytaine/bodies/predefined/cylinders.py,sha256=Zfp3ecpKD72dfzv5Dd2y87EvDBBRsOJPq6GR6B76r5Y,5596
37
+ capytaine/tools/lru_cache.py,sha256=ssPo7sZMMe15GIxPiQ7rA0GrjwYWsE66x3A-d-4FQTI,1709
38
+ capytaine/tools/cache_on_disk.py,sha256=Cj2J5pNKw9PbIvxUn53swSmuGJoMibZzIvB5Skt52ig,912
39
+ capytaine/tools/timer.py,sha256=3-PXNn6lMfbPP6z0HNCE9YcnIdrepzMHFd_CZ1F4aiM,1464
40
+ capytaine/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ capytaine/tools/deprecation_handling.py,sha256=_QFNrkreLerm3-LzRZ3l6B_O249PM-fCCAXMsHA7kIU,809
42
+ capytaine/tools/optional_imports.py,sha256=HNjtvNZGxsw-eYmr4ejq001KhLevrvqq7ASAqTOw8W8,860
43
+ capytaine/tools/symbolic_multiplication.py,sha256=Ef7oJftyAyw7kbPl5F4xD3YGDTWQFVNrdYCBii5e9po,4425
44
+ capytaine/tools/lists_of_points.py,sha256=6DyL9kr8jbkvB2IuCq288eSd4Xq6pwa8wiQCYZm9M1Q,1828
45
+ capytaine/tools/prony_decomposition.py,sha256=Eg8CcedPuLKVUA-wpjwXBJsnXjBGZruHVy4jMU2cCSM,5147
46
+ capytaine/bem/solver.py,sha256=KvDzuf4fOnUiklnBMutSWS-IoEd5ST-9BEXkVDdGiD0,28795
47
+ capytaine/bem/engines.py,sha256=YauXkOHKLbrDbzM1qisKiJ1D3LZ0-ALOWIIRNzNchUU,18070
48
+ capytaine/bem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ capytaine/bem/problems_and_results.py,sha256=X5va5A8dMCpXeuhAdDr_OWLYkI_KcerhLq99z-qkS20,27040
50
+ capytaine/bem/airy_waves.py,sha256=GAhX5xNEgjoOo2uEHXfKCxb2TnmbPBCqW6VWfvzJTM8,3498
51
+ capytaine/io/wamit.py,sha256=dvmthwIZnzOM8L1kq814pilCpQPLeTHvjjgg21hV2po,16028
52
+ capytaine/io/legacy.py,sha256=lARoaPGjTsUQ4YiLmD8ZYMSCU_UDmnOQx4_JppaCcRc,14730
53
+ capytaine/io/bemio.py,sha256=WXT7QPJK0t2kgUdI0DOOQG8u5zh_zk9q_PmTXqW1dJE,7334
54
+ capytaine/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ capytaine/io/mesh_loaders.py,sha256=NjSWrCR20ozIFu94B7ZveiSS1kzt-IWKoFnkvLHcNXU,31771
56
+ capytaine/io/meshio.py,sha256=QmuHGJt_a1VDrCpA_OKVWftgHPdZyjNkao38QpGuPT8,1469
57
+ capytaine/io/mesh_writers.py,sha256=zLHRdzTpbpXyPsf7c09s6Nk2ZXIAQCCfHYIF3vKKDBo,21084
58
+ capytaine/io/xarray.py,sha256=LdbWiLAYqN9uz-TaYSqhVfSAKUnFnt2NmbJA4XUoO3Y,26909
59
+ capytaine/.dylibs/libgfortran.5.dylib,sha256=dSE8DDTPKU_CLSN3d0AuwNkb8GAUtZTbsYqNoGgQO1g,1901520
60
+ capytaine/.dylibs/libquadmath.0.dylib,sha256=tGKNZGnL-C5qaYibMY0I363IX2e9FM4ADm_Cv_0c2SU,363936
61
+ capytaine/.dylibs/libgcc_s.1.1.dylib,sha256=EXe8YkYoFevnJKmGZBwrKaltiXgCuN0L4D6ObonN6U0,183040
62
+ capytaine/meshes/clipper.py,sha256=CB38_cmha8q6hnaxKukKQPtB7sXx34fU2HBujF8hD24,18677
63
+ capytaine/meshes/properties.py,sha256=eJHhTtXzW-aiokuvluqLSfumAGMFZGmI3ZLP-pfVh2I,10790
64
+ capytaine/meshes/symmetric.py,sha256=kK6eELnByoZZmkpziiJ_EJsOFc89MMQqAIG810V5VoI,15697
65
+ capytaine/meshes/mesh_like_protocol.py,sha256=9D0PiJHPThc-eezgtJ2FBhxkw50d2sMIHLowA7LVUew,1029
66
+ capytaine/meshes/surface_integrals.py,sha256=ihxbuiSsgep4rbrBQlq2q_2p_uDXDkRPyz0S6OVofc8,2263
67
+ capytaine/meshes/__init__.py,sha256=5-AE32KOmOcq_F09uZanLafy7SzOe0-Cl6PaDbbOLMQ,361
68
+ capytaine/meshes/meshes.py,sha256=GgxXIeVDxrZJ1G9CQqPgGpNToXWs4MJ9z_A_wSZGHrk,32284
69
+ capytaine/meshes/collections.py,sha256=KAnGlw5VQZtAlKj15O_8jw0WUlrYmKiFgUkFVN8HYn8,11089
70
+ capytaine/meshes/geometry.py,sha256=ffeHvFzke3sXHzGexivRmSBQIOCk-pCMoveQF4eYyGM,14107
71
+ capytaine/meshes/quality.py,sha256=OTZvqyDSJGKIHfFWwn-QROH1Je4PjgFxbwp3Ce-nzzI,14383
72
+ capytaine/meshes/quadratures.py,sha256=eT5tsfonBJEDkrCnoUJbEPLX34I1rCkgzD_E6XhDu-E,3227
73
+ capytaine/meshes/predefined/rectangles.py,sha256=lbT8lYsij1bEo1CB9_NVrTsFBpOfedK7fPu-jB8OsV8,12294
74
+ capytaine/meshes/predefined/spheres.py,sha256=dJMcGBgGwJ93V9JBzACy7byKRZe_hj42bCb3wOuSlBI,2212
75
+ capytaine/meshes/predefined/__init__.py,sha256=uc2b-3UJi_4NnTkk6wRlbq5UTKOyRU7JTpMDdlUrjiY,365
76
+ capytaine/meshes/predefined/cylinders.py,sha256=s3VwoQknY9Fnun6zukVccHh6h3rG-5NvLsiTlONbJVs,14846
77
+ capytaine/post_pro/rao.py,sha256=kLePr2sbh38f-ydjQTIyeRuoDDqEootqwLSt575aGik,2293
78
+ capytaine/post_pro/free_surfaces.py,sha256=NIrPoaZGC6-F4mSG8ZwelJsjKaSMGBjtRlwSRG3wuvQ,3117
79
+ capytaine/post_pro/__init__.py,sha256=fi9BE68OzphGjf08HYGcCPmZLJYnD-wHjz86QEXkBn8,274
80
+ capytaine/post_pro/kochin.py,sha256=vEjH850aOnSUprD8cnOSkvTGFdn2X9KAIDvehsxud3s,1927
81
+ capytaine/post_pro/impedance.py,sha256=gNMKkSyD4qN55_PrTZhrtsh2XsAbC3ciFCWtvpJLKLM,3492
82
+ capytaine/matrices/builders.py,sha256=a4P0gamYOUdf4r6ZGK_PuAyec3UZGQQaUljotWp6d8E,3153
83
+ capytaine/matrices/low_rank.py,sha256=Z9nOVsTCrIXQ9-A-upz8UTdcc2uNuZ9VlAO8Tee1Si0,15996
84
+ capytaine/matrices/linear_solvers.py,sha256=_5R-CR7eJ07Z3GcOd1YiX2bRyukuXQnHE0Dgpo8G2R8,8937
85
+ capytaine/matrices/block_toeplitz.py,sha256=yL4GFPghfdVZTKtden0RKVDhpiBZz3D1oZ-pAVjDBjg,12930
86
+ capytaine/matrices/__init__.py,sha256=_b868RYRI8ANHHf2PUVI-2_c0RdBfRDHLvJW5Uq1qys,704
87
+ capytaine/matrices/block.py,sha256=9Gv800-regvNmD62-h9MvbW7vtPb4N-_3o8Y8HPnxgc,25486
88
+ capytaine-2.3.dist-info/RECORD,,
89
+ capytaine-2.3.dist-info/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
90
+ capytaine-2.3.dist-info/WHEEL,sha256=k9O0Z5MyGup_xUQqItmkXXdrQTpD_5zTF196y8PuHc0,93
91
+ capytaine-2.3.dist-info/entry_points.txt,sha256=R72-je8lc6ELm8ftt7lJ7f1aalnQs5BWYrGDBMexHII,53
92
+ capytaine-2.3.dist-info/METADATA,sha256=NSFNwYHZoOfMqn7if-xXY-r9qOLAGrlbUSG8qtlahy8,45516
@@ -1,76 +0,0 @@
1
- capytaine/__init__.py,sha256=1o4pxkhjlPd0e6ONfh8pAudSaHK8ffPFfVMOvEs15_0,1685
2
- capytaine/__about__.py,sha256=hd_f1vSM3IUy1tno5mM8zN-zGcRrLfRKbe2ae1jzCgM,415
3
- capytaine/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- capytaine/ui/rich.py,sha256=ZfMHUpCSVztNseIGpN2I69ts_Aw_HJ5RnZc0f73av5Q,233
5
- capytaine/ui/cli.py,sha256=o3MH2OCHXFww1kb2zM9R3qs4jjfkCeeZFRAgnFnb2NE,797
6
- capytaine/ui/vtk/mesh_viewer.py,sha256=y5f3Qc7vWuu_xWXxOQm1bcvwm3D_JKUbzd1M9NVqrac,14750
7
- capytaine/ui/vtk/__init__.py,sha256=7wIkVipz_3JCZmLuED4-aQXZJwBYylS32PFswAdwvo4,161
8
- capytaine/ui/vtk/animation.py,sha256=FYH-YAu0LY2zr7fTl36aOSkM8z74_gxQRKOJFhUSluo,12443
9
- capytaine/ui/vtk/helpers.py,sha256=sOK_a679a7n9ozhcEZY3IhTWmPyctoLkFwKTyzDHrm8,2640
10
- capytaine/ui/vtk/body_viewer.py,sha256=gGIla-gADWiYuiNdS2io-0whpO6AaH8A8KkEmqX4OSY,1032
11
- capytaine/green_functions/__init__.py,sha256=527Pd0SIqwR64-d4sT-_jyE89XU-PLgFL0et96ChAIo,107
12
- capytaine/green_functions/delhommeau.py,sha256=8JGrX9JC3q7aY9Yj95onp0mfN9Qio7RwD3sfusJovvk,20418
13
- capytaine/green_functions/abstract_green_function.py,sha256=rBWwSvID6gRLQ0BJQCWk0O3IN4lMaitvd-z9wzA7tK0,418
14
- capytaine/green_functions/libs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- capytaine/green_functions/libs/Delhommeau_float32.cpython-311-darwin.so,sha256=edPLAHfCsbi-u71g4ZSQkNnSNS3iTjPnXOyQlOQGEts,217648
16
- capytaine/green_functions/libs/Delhommeau_float64.cpython-311-darwin.so,sha256=tVUfhHtywg_9M83m-HyqDENd1nYWg7yE50_6I6b9fmw,234240
17
- capytaine/bodies/dofs.py,sha256=M5nWTeVJxmxKl2BowOnrE3plv1rrqDHNb76D_qHroS8,598
18
- capytaine/bodies/bodies.py,sha256=YbSX1d_bmllvi3cIX9jqMfWMlTinLwpe_aom6_Yidn4,51472
19
- capytaine/bodies/__init__.py,sha256=wIYFs14NAWqaHLQWvDGUEZTBWp_kdthKkbOlXHup6LA,157
20
- capytaine/bodies/predefined/rectangles.py,sha256=ahzSMg34dIB_jtajsTtWTnidRRYdWh6KYI6dNiHLaKk,4435
21
- capytaine/bodies/predefined/spheres.py,sha256=8lHMqCQBQneN8EqTSXQanumt6j5TeR70CR4ckrnDfo4,2598
22
- capytaine/bodies/predefined/__init__.py,sha256=IA1y5XDGmyzNDpgQvz8kjyGajBCYoClAnCPn1PxFwfw,338
23
- capytaine/bodies/predefined/cylinders.py,sha256=Zfp3ecpKD72dfzv5Dd2y87EvDBBRsOJPq6GR6B76r5Y,5596
24
- capytaine/tools/lru_cache.py,sha256=ssPo7sZMMe15GIxPiQ7rA0GrjwYWsE66x3A-d-4FQTI,1709
25
- capytaine/tools/cache_on_disk.py,sha256=Cj2J5pNKw9PbIvxUn53swSmuGJoMibZzIvB5Skt52ig,912
26
- capytaine/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- capytaine/tools/deprecation_handling.py,sha256=_QFNrkreLerm3-LzRZ3l6B_O249PM-fCCAXMsHA7kIU,809
28
- capytaine/tools/optional_imports.py,sha256=HNjtvNZGxsw-eYmr4ejq001KhLevrvqq7ASAqTOw8W8,860
29
- capytaine/tools/symbolic_multiplication.py,sha256=AFDZEoWYqad19d5QHIZDFsRsJVihM8B3NKAIxN80A5s,4016
30
- capytaine/tools/lists_of_points.py,sha256=_PhLzqtFpOi2pUf0INbvj6Z9RLoen4AcW38ugTUPeLM,1861
31
- capytaine/tools/prony_decomposition.py,sha256=ifNh-nvxaz-hLw9K1xR3tnz5GGimUN40jOl1TLJKDaI,2692
32
- capytaine/bem/solver.py,sha256=-TPGV2js1eX5XcxANVxclU6wj0WLQ6Kl3AOiPSSp1ss,23913
33
- capytaine/bem/engines.py,sha256=YauXkOHKLbrDbzM1qisKiJ1D3LZ0-ALOWIIRNzNchUU,18070
34
- capytaine/bem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- capytaine/bem/problems_and_results.py,sha256=XNn4KQDGXsvPzUgwnClaknnSY5qZbRO7tuw-xBN2t8M,25200
36
- capytaine/bem/airy_waves.py,sha256=7X3vhgn3rXmk6-eegUr6bh0WT5Hvh2ySmAhh1uofrJs,3252
37
- capytaine/io/legacy.py,sha256=lARoaPGjTsUQ4YiLmD8ZYMSCU_UDmnOQx4_JppaCcRc,14730
38
- capytaine/io/bemio.py,sha256=QI_weXtWu_9xlBjHhZk0p1yz9Vu9VI_t40VtTeupdAk,6654
39
- capytaine/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- capytaine/io/mesh_loaders.py,sha256=bg8QkQhzqQjWhZ_xwaJXbqLAssdhCh5ZAsygQq6bY_Q,31774
41
- capytaine/io/meshio.py,sha256=QmuHGJt_a1VDrCpA_OKVWftgHPdZyjNkao38QpGuPT8,1469
42
- capytaine/io/mesh_writers.py,sha256=zLHRdzTpbpXyPsf7c09s6Nk2ZXIAQCCfHYIF3vKKDBo,21084
43
- capytaine/io/xarray.py,sha256=gC_-ocoEAn2wc3O6nF-J8O2LECw7AwlJ62-CyKogRYs,23440
44
- capytaine/.dylibs/libgfortran.5.dylib,sha256=og2O2qNuCaWpeynQu_txGMQ8X4R1zh_P6jGMmNVx46g,1902144
45
- capytaine/.dylibs/libquadmath.0.dylib,sha256=Hwe3rBfQ1FqB3Q5daslY71uhQKdPo1rRJKPmR2cLCsE,364064
46
- capytaine/.dylibs/libgcc_s.1.1.dylib,sha256=SKcIj-uUu7zZBQxLTbLTUUAVkREO8z_pyNsZk2A87EI,183168
47
- capytaine/meshes/clipper.py,sha256=CskR0M0pV3ktlz57eF3wOP8POYkIj7xiGdef5wzy3fg,18633
48
- capytaine/meshes/properties.py,sha256=eJHhTtXzW-aiokuvluqLSfumAGMFZGmI3ZLP-pfVh2I,10790
49
- capytaine/meshes/symmetric.py,sha256=8EVLQswj7roefx6QJxldNKvxXr3AYBZWfeeYMyZPjmQ,15228
50
- capytaine/meshes/surface_integrals.py,sha256=ihxbuiSsgep4rbrBQlq2q_2p_uDXDkRPyz0S6OVofc8,2263
51
- capytaine/meshes/__init__.py,sha256=5-AE32KOmOcq_F09uZanLafy7SzOe0-Cl6PaDbbOLMQ,361
52
- capytaine/meshes/meshes.py,sha256=9EReVjgMrcfp5-AFu2M9M-INKqL7p7c7FkvtElr9Ti0,31880
53
- capytaine/meshes/collections.py,sha256=NRa8VLNAYSEvOBYL_MVGcTjjXxStoBNZr5xjz4mkO58,10757
54
- capytaine/meshes/geometry.py,sha256=ffeHvFzke3sXHzGexivRmSBQIOCk-pCMoveQF4eYyGM,14107
55
- capytaine/meshes/quality.py,sha256=OTZvqyDSJGKIHfFWwn-QROH1Je4PjgFxbwp3Ce-nzzI,14383
56
- capytaine/meshes/quadratures.py,sha256=eT5tsfonBJEDkrCnoUJbEPLX34I1rCkgzD_E6XhDu-E,3227
57
- capytaine/meshes/predefined/rectangles.py,sha256=lbT8lYsij1bEo1CB9_NVrTsFBpOfedK7fPu-jB8OsV8,12294
58
- capytaine/meshes/predefined/spheres.py,sha256=dJMcGBgGwJ93V9JBzACy7byKRZe_hj42bCb3wOuSlBI,2212
59
- capytaine/meshes/predefined/__init__.py,sha256=uc2b-3UJi_4NnTkk6wRlbq5UTKOyRU7JTpMDdlUrjiY,365
60
- capytaine/meshes/predefined/cylinders.py,sha256=s3VwoQknY9Fnun6zukVccHh6h3rG-5NvLsiTlONbJVs,14846
61
- capytaine/post_pro/rao.py,sha256=kLePr2sbh38f-ydjQTIyeRuoDDqEootqwLSt575aGik,2293
62
- capytaine/post_pro/free_surfaces.py,sha256=NIrPoaZGC6-F4mSG8ZwelJsjKaSMGBjtRlwSRG3wuvQ,3117
63
- capytaine/post_pro/__init__.py,sha256=fi9BE68OzphGjf08HYGcCPmZLJYnD-wHjz86QEXkBn8,274
64
- capytaine/post_pro/kochin.py,sha256=d_jQah4XmJEfFrwq_DIMOnA6RcOK6gLbtnS4wSIRf7M,1861
65
- capytaine/post_pro/impedance.py,sha256=gNMKkSyD4qN55_PrTZhrtsh2XsAbC3ciFCWtvpJLKLM,3492
66
- capytaine/matrices/builders.py,sha256=a4P0gamYOUdf4r6ZGK_PuAyec3UZGQQaUljotWp6d8E,3153
67
- capytaine/matrices/low_rank.py,sha256=Z9nOVsTCrIXQ9-A-upz8UTdcc2uNuZ9VlAO8Tee1Si0,15996
68
- capytaine/matrices/linear_solvers.py,sha256=CtVsbm1DdVwzJzIQe7UPK-QI1oY_7WVYwycoB8d-LXs,8912
69
- capytaine/matrices/block_toeplitz.py,sha256=yL4GFPghfdVZTKtden0RKVDhpiBZz3D1oZ-pAVjDBjg,12930
70
- capytaine/matrices/__init__.py,sha256=_b868RYRI8ANHHf2PUVI-2_c0RdBfRDHLvJW5Uq1qys,704
71
- capytaine/matrices/block.py,sha256=9Gv800-regvNmD62-h9MvbW7vtPb4N-_3o8Y8HPnxgc,25486
72
- capytaine-2.2.1.dist-info/RECORD,,
73
- capytaine-2.2.1.dist-info/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
74
- capytaine-2.2.1.dist-info/WHEEL,sha256=k9O0Z5MyGup_xUQqItmkXXdrQTpD_5zTF196y8PuHc0,93
75
- capytaine-2.2.1.dist-info/entry_points.txt,sha256=R72-je8lc6ELm8ftt7lJ7f1aalnQs5BWYrGDBMexHII,53
76
- capytaine-2.2.1.dist-info/METADATA,sha256=mntdNUvFCH4TIl63JhG2wWpWawEFM3EUy0haUPlIyCw,45212