@@ -275,41 +275,59 @@ def read_domain(domain_dict):
275275
276276 # ---------------------------------------------------------------- #
277277 # Create the cell_ids variable
278- dom_data ['cell_ids' ] = np .arange (dom_data [domain_dict ['LAND_MASK_VAR' ]].size ).reshape (dom_data [domain_dict ['LAND_MASK_VAR' ]].shape )
278+ dom_mask = domain_dict ['LAND_MASK_VAR' ]
279+ temp = np .arange (dom_data [dom_mask ].size )
280+ dom_data ['cell_ids' ] = temp .reshape (dom_data [dom_mask ].shape )
279281 # ---------------------------------------------------------------- #
280282
281283 # ---------------------------------------------------------------- #
282284 # Make sure the longitude / latitude vars are 2d
283- dom_data ['cord_lons' ] = dom_data [domain_dict ['LONGITUDE_VAR' ]]
284- dom_data ['cord_lats' ] = dom_data [domain_dict ['LATITUDE_VAR' ]]
285- if dom_data [domain_dict ['LONGITUDE_VAR' ]].ndim == 1 :
286- dom_data [domain_dict ['LONGITUDE_VAR' ]], \
287- dom_data [domain_dict ['LATITUDE_VAR' ]] = np .meshgrid (dom_data [domain_dict ['LONGITUDE_VAR' ]],
288- dom_data [domain_dict ['LATITUDE_VAR' ]])
285+ dom_lat = domain_dict ['LATITUDE_VAR' ]
286+ dom_lon = domain_dict ['LONGITUDE_VAR' ]
287+ if dom_data [dom_lon ].ndim == 1 :
288+ # ------------------------------------------------------------- #
289+ # Check latitude order, flip if necessary.
290+ if dom_data [dom_lat ][- 1 ] < dom_data [dom_lat ][0 ]:
291+ log .debug ('Inputs came in upside down, flipping everything now.' )
292+ var_list = dom_data .keys ()
293+ var_list .remove (dom_lon )
294+ for var in var_list :
295+ dom_data [var ] = np .flipud (dom_data [var ])
296+ # ------------------------------------------------------------ #
289297
298+ # ------------------------------------------------------------- #
299+ # Make 2d coordinate vars
300+ dom_data [dom_lon ], dom_data [dom_lat ] = np .meshgrid (dom_data [dom_lon ],
301+ dom_data [dom_lat ])
302+ # ------------------------------------------------------------- #
303+ dom_data ['cord_lons' ] = dom_data [dom_lon ]
304+ dom_data ['cord_lats' ] = dom_data [dom_lat ]
290305 # ---------------------------------------------------------------- #
291306
292307 # ---------------------------------------------------------------- #
293308 # Make sure the area is in m2
294- area_units = dom_vatts [domain_dict ['AREA_VAR' ]]['units' ]
309+ dom_area = domain_dict ['AREA_VAR' ]
310+ area_units = dom_vatts [dom_area ]['units' ]
295311
296312 if area_units in ["rad2" , "radians2" , "radian2" , "radian^2" , "rad^2" ,
297- "radians^2" , "rads^2" , "radians squared" , "square-radians" ]:
298- dom_data [domain_dict ['AREA_VAR' ]] = dom_data [domain_dict ['AREA_VAR' ]]* EARTHRADIUS * EARTHRADIUS
313+ "radians^2" , "rads^2" , "radians squared" ,
314+ "square-radians" ]:
315+ dom_data [dom_area ] = dom_data [dom_area ]* EARTHRADIUS * EARTHRADIUS
299316 elif area_units in ["m2" , "m^2" , "meters^2" , "meters2" , "square-meters" ,
300317 "meters squared" ]:
301- dom_data [domain_dict [ 'AREA_VAR' ]] = dom_data [domain_dict [ 'AREA_VAR' ] ]
318+ dom_data [dom_area ] = dom_data [dom_area ]
302319 elif area_units in ["km2" , "km^2" , "kilometers^2" , "kilometers2" ,
303320 "square-kilometers" , "kilometers squared" ]:
304- dom_data [domain_dict [ 'AREA_VAR' ]] = dom_data [domain_dict [ 'AREA_VAR' ] ]* METERSPERKM * METERSPERKM
321+ dom_data [dom_area ] = dom_data [dom_area ]* METERSPERKM * METERSPERKM
305322 elif area_units in ["mi2" , "mi^2" , "miles^2" , "miles" , "square-miles" ,
306323 "miles squared" ]:
307- dom_data [domain_dict [ 'AREA_VAR' ]] = dom_data [domain_dict [ 'AREA_VAR' ] ]* METERSPERMILE * METERSPERMILE
324+ dom_data [dom_area ] = dom_data [dom_area ]* METERSPERMILE * METERSPERMILE
308325 elif area_units in ["acres" , "ac" , "ac." ]:
309- dom_data [domain_dict [ 'AREA_VAR' ]] = dom_data [domain_dict [ 'AREA_VAR' ] ]* METERS2PERACRE
326+ dom_data [dom_area ] = dom_data [dom_area ]* METERS2PERACRE
310327 else :
311328 log .warning ("WARNING: UNKNOWN AREA units (%s), ASSUMING THEY ARE IN "
312- "SQUARE METERS" % dom_data [domain_dict ['AREA_VAR' ]]['units' ])
329+ "SQUARE METERS" ,
330+ dom_data [domain_dict ['AREA_VAR' ]]['units' ])
313331 # ---------------------------------------------------------------- #
314332 return dom_data , dom_vatts , dom_gatts
315333# -------------------------------------------------------------------- #
0 commit comments