77"""
88
99
10- def mf_to_numpy (self , copy = False , order = "F" ):
10+ def mf_to_numpy (amr , self , copy = False , order = "F" ):
1111 """
1212 Provide a Numpy view into a MultiFab.
1313
@@ -29,13 +29,24 @@ def mf_to_numpy(self, copy=False, order="F"):
2929
3030 Returns
3131 -------
32- list of np .array
32+ list of numpy .array
3333 A list of numpy n-dimensional arrays, for each local block in the
3434 MultiFab.
3535 """
36+ mf = self
37+ if copy :
38+ mf = amr .MultiFab (
39+ self .box_array (),
40+ self .dm (),
41+ self .n_comp (),
42+ self .n_grow_vect (),
43+ amr .MFInfo ().set_arena (amr .The_Pinned_Arena ()),
44+ )
45+ amr .dtoh_memcpy (mf , self )
46+
3647 views = []
37- for mfi in self :
38- views .append (self .array (mfi ).to_numpy (copy , order ))
48+ for mfi in mf :
49+ views .append (mf .array (mfi ).to_numpy (copy = False , order = order ))
3950
4051 return views
4152
@@ -80,15 +91,11 @@ def mf_to_cupy(self, copy=False, order="F"):
8091
8192def register_MultiFab_extension (amr ):
8293 """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
94+
95+ # register member functions for the MultiFab type
96+ amr .MultiFab .to_numpy = lambda self , copy = False , order = "F" : mf_to_numpy (
97+ amr , self , copy , order
98+ )
99+ amr .MultiFab .to_numpy .__doc__ = mf_to_numpy .__doc__
100+
101+ amr .MultiFab .to_cupy = mf_to_cupy
0 commit comments