Coverage for src/meshpy/geometric_search/arborx.py: 88%

16 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-28 04:21 +0000

1# The MIT License (MIT) 

2# 

3# Copyright (c) 2018-2025 MeshPy Authors 

4# 

5# Permission is hereby granted, free of charge, to any person obtaining a copy 

6# of this software and associated documentation files (the "Software"), to deal 

7# in the Software without restriction, including without limitation the rights 

8# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 

9# copies of the Software, and to permit persons to whom the Software is 

10# furnished to do so, subject to the following conditions: 

11# 

12# The above copyright notice and this permission notice shall be included in 

13# all copies or substantial portions of the Software. 

14# 

15# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 

16# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 

17# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 

18# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 

19# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 

20# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 

21# THE SOFTWARE. 

22"""This file defines the interface to the ArborX geometric search 

23functionality.""" 

24 

25from meshpy.geometric_search.utils import arborx_is_available as _arborx_is_available 

26 

27if _arborx_is_available(): 

28 from meshpy.geometric_search.arborx_lib import ( 

29 find_close_points as _find_close_points, 

30 ) 

31 from meshpy.geometric_search.arborx_lib import ( 

32 kokkos_finalize as _kokkos_finalize, 

33 ) 

34 from meshpy.geometric_search.arborx_lib import ( 

35 kokkos_initialize as _kokkos_initialize, 

36 ) 

37 

38 

39class KokkosScopeGuardWrapper: 

40 """Wrap the initialize and finalize calls to Kokkos.""" 

41 

42 def __init__(self): 

43 """Call initialize when this object is created.""" 

44 _kokkos_initialize() 

45 

46 def __del__(self): 

47 """Finalize Kokkos after this object goes out of scope, i.e., at the 

48 end of this modules lifetime.""" 

49 _kokkos_finalize() 

50 

51 

52if _arborx_is_available(): 

53 # Create the scope guard 

54 kokkos_scope_guard_wrapper = KokkosScopeGuardWrapper() 

55 

56 

57def find_close_points_arborx(point_coordinates, tol): 

58 """Call the ArborX implementation of find close_points.""" 

59 if _arborx_is_available(): 

60 return _find_close_points(point_coordinates, tol) 

61 else: 

62 raise ModuleNotFoundError("ArborX functionality is not available")