@@ -86,6 +86,24 @@ def __init__(self, name: str = None, data=None):
8686 self .name = name
8787 self .data = data
8888
89+ class MiniGridObj :
90+
91+ def __init__ (self , xsize : int = None , ysize : int = None , x : npt .NDArray = None , y : npt .NDArray = None ):
92+ self .xsize = xsize
93+ self .ysize = ysize
94+ self .x = x
95+ self .y = y
96+
97+ def set_size (self ):
98+
99+ xsize , ysize = self .x .shape
100+
101+ if self .x .shape != self .y .shape :
102+ logger .error ("MiniGrid, x and y differ in dimensions" )
103+
104+ self .xsize = xsize
105+ self .ysize = ysize
106+
89107
90108class GridObj :
91109 """
@@ -136,6 +154,9 @@ def __init__(
136154
137155 self ._set_dims ()
138156
157+ self .gridc = MiniGridObj ()
158+ self .gridt = MiniGridObj ()
159+
139160 logger .info ("Created new GridObj named:\n %s" , self .__repr__ ())
140161
141162 def to_domain (self , domain : dict = None ):
@@ -212,12 +233,54 @@ def get_fms_area(self):
212233 self .area = pyfms .grid_utils .get_grid_area (lon = x , lat = y , convert_cf_order = False )
213234 return self .area
214235
236+ def get_gridc (self ):
237+
238+ """
239+ Save the edge points
240+ """
241+
242+ if self .x is None or self .y is None :
243+ logger .error ("Cannot set gridc. Please set x and y values first" )
244+
245+ self .gridc .x = np .ascontiguousarray (self .x [::2 , ::2 ])
246+ self .gridc .y = np .ascontiguousarray (self .y [::2 , ::2 ])
247+ self .gridc .set_size ()
248+
249+ return self .gridc
250+
251+ def get_gridt (self ):
252+
253+ """
254+ Save the center points
255+ """
256+
257+ if self .x is None or self .y is None :
258+ logger .error ("Cannot set gridt. Please set and y values first" )
259+
260+ self .gridt .x = np .ascontiguousarray (self .x [1 ::2 , 1 ::2 ])
261+ self .gridt .y = np .ascontiguousarray (self .x [1 ::2 , 1 ::2 ])
262+ self .gridt .set_size ()
263+
264+ return self .gridt
265+
266+ def free_supergrid (self ):
267+
268+ self .x = None
269+ self .y = None
270+
271+ def free_gridc (self ):
272+
273+ self .gridc = None
274+
275+ def free_gridt (self ):
276+
277+ self .gridt = None
278+
215279 def read (
216280 self ,
217281 gridfile : str = None ,
218282 domain : dict = None ,
219283 radians : bool = False ,
220- center : bool = False ,
221284 on_domain : bool = False ,
222285 xy_only : bool = False ,
223286 ):
@@ -252,9 +315,6 @@ def read(
252315 for obj in objlist :
253316 if obj .name in ds :
254317 obj .data = ds [obj .name ].data
255- if center :
256- logger .info ("saving center points for %s" , {obj .name })
257- obj .data = np .ascontiguousarray (obj .data [::2 , ::2 ])
258318 else :
259319 logger .warning ("could not %s in %s" , {obj .name }, {self .gridfile })
260320
0 commit comments