66License: BSD-3-Clause-LBNL
77"""
88
9-
10- def mf_to_numpy (self , copy = False , order = "F" ):
9+ def mf_to_numpy (amr , self , copy = False , order = "F" ):
1110 """
1211 Provide a Numpy view into a MultiFab.
1312
@@ -29,13 +28,24 @@ def mf_to_numpy(self, copy=False, order="F"):
2928
3029 Returns
3130 -------
32- list of np .array
31+ list of numpy .array
3332 A list of numpy n-dimensional arrays, for each local block in the
3433 MultiFab.
3534 """
35+ mf = self
36+ if copy :
37+ mf = amr .MultiFab (
38+ self .box_array (),
39+ self .dm (),
40+ self .n_comp (),
41+ self .n_grow_vect (),
42+ amr .MFInfo ().set_arena (amr .The_Pinned_Arena ()),
43+ )
44+ amr .dtoh_memcpy (mf , self )
45+
3646 views = []
37- for mfi in self :
38- views .append (self .array (mfi ).to_numpy (copy , order ))
47+ for mfi in mf :
48+ views .append (mf .array (mfi ).to_numpy (copy = False , order = order ))
3949
4050 return views
4151
@@ -80,15 +90,9 @@ def mf_to_cupy(self, copy=False, order="F"):
8090
8191def register_MultiFab_extension (amr ):
8292 """MultiFab helper methods"""
83- import inspect
84- import sys
85-
86- # register member functions for every MultiFab* type
87- for _ , MultiFab_type in inspect .getmembers (
88- sys .modules [amr .__name__ ],
89- lambda member : inspect .isclass (member )
90- and member .__module__ == amr .__name__
91- and member .__name__ .startswith ("MultiFab" ),
92- ):
93- MultiFab_type .to_numpy = mf_to_numpy
94- MultiFab_type .to_cupy = mf_to_cupy
93+
94+ # register member functions for the MultiFab type
95+ amr .MultiFab .to_numpy = lambda self , copy = False , order = "F" : mf_to_numpy (amr , self , copy , order )
96+ amr .MultiFab .to_numpy .__doc__ = mf_to_numpy .__doc__
97+
98+ amr .MultiFab .to_cupy = mf_to_cupy
0 commit comments