@@ -142,10 +142,14 @@ def remap(gds, domain_info, vc, surflib, initial=False):
142142 gds = gds .rename ({gds .ta .cf ["vertical" ].name : lev_input })
143143
144144 # remove time dimension if there is one
145- fibem = surflib .FIB .squeeze (drop = True ) * const .grav_const
146- blaem = surflib .BLA .squeeze (drop = True )
145+ surflib = surflib .squeeze (drop = True )
146+ surflib ["rlon" ] = np .round (surflib .rlon , 14 )
147+ surflib ["rlat" ] = np .round (surflib .rlat , 14 )
147148
148- lamem , phiem = geo_coords (domain_info , fibem .rlon , fibem .rlat )
149+ fibem = surflib .FIB * const .grav_const
150+ blaem = surflib .BLA
151+
152+ lamem , phiem = geo_coords (domain_info , surflib .rlon , surflib .rlat )
149153
150154 # broadcast 1d global coordinates
151155 lamgm , phigm = broadcast_coords (gds )
@@ -281,29 +285,28 @@ def remap(gds, domain_info, vc, surflib, initial=False):
281285 ads .attrs ["history" ] = "preprocessing with pyremo = {}" .format (pr .__version__ )
282286 ads .attrs ["CORDEX_domain" ] = domain_info .get ("domain_id" , "no name" )
283287
288+ # transpose to remo convention
289+ ads = ads .transpose (..., "lev" , "rlat" , "rlon" )
290+
284291 if initial is True :
285292 ads = add_surflib (ads , surflib )
286293 soil = _remap_era_soil (
287294 gds , tsw , fibem , blaem , lamem , phiem , lamgm , phigm , indii , indjj
288- )
289- wsmxem = surflib .WSMX .squeeze (drop = True )
290- soil ["WS" ] = np .minimum (wsmxem , soil .WS * wsmxem )
295+ ).transpose ("rlat" , "rlon" )
291296 # ads = xr.merge([ads, soil])
292297 ads = ads .merge (soil , join = "override" )
298+ ads ["WS" ] = np .minimum (ads .WSMX , ads .WS * ads .WSMX )
293299 ads ["GLAC" ] = xr .where (ads .SN > 9.5 , 1.0 , 0.0 )
294300
295301 grid = get_grid (domain_info )
296302
297303 ads = ads .sel (rlon = grid .rlon , rlat = grid .rlat , method = "nearest" )
298304 ads ["rlon" ] = grid .rlon
299305 ads ["rlat" ] = grid .rlat
300-
301306 ads = xr .merge ([ads , grid ])
302-
303307 ads = update_attrs (ads )
304308
305- # transpose to remo convention
306- return ads .transpose (..., "lev" , "rlat" , "rlon" )
309+ return ads
307310
308311
309312def remap_remo (
@@ -699,9 +702,8 @@ def _remap_era_soil(ds, tswge, fibem, blaem, lamem, phiem, lamgm, phigm, indii,
699702
700703 # horizontal interpolation
701704 wsge = interpolate_horizontal (
702- wsgm , lamem , phiem , lamgm , phigm , "WS" , indii = indii , indjj = indjj
703- )
704-
705+ wsgm .clip (min = 0.0 ), lamem , phiem , lamgm , phigm , "WS" , indii = indii , indjj = indjj
706+ ).clip (min = 0.0 )
705707 td3ge = interpolate_horizontal (
706708 ds .tsl1 , lamem , phiem , lamgm , phigm , "TD3" , indii = indii , indjj = indjj
707709 )
@@ -718,8 +720,8 @@ def _remap_era_soil(ds, tswge, fibem, blaem, lamem, phiem, lamgm, phigm, indii,
718720 ds .snd , lamem , phiem , lamgm , phigm , "SN" , indii = indii , indjj = indjj
719721 )
720722 wlem = interpolate_horizontal (
721- ds .src , lamem , phiem , lamgm , phigm , "WL" , indii = indii , indjj = indjj
722- )
723+ ds .src . clip ( min = 0.0 ) , lamem , phiem , lamgm , phigm , "WL" , indii = indii , indjj = indjj
724+ ). clip ( min = 0.0 )
723725 fibge = interpolate_horizontal (
724726 ds .orog , lamem , phiem , lamgm , phigm , "FIB" , indii = indii , indjj = indjj
725727 )
@@ -866,10 +868,8 @@ def add_surflib(ads, surflib):
866868 rlon = slice (ads .rlon .min (), ads .rlon .max ()),
867869 rlat = slice (ads .rlat .min (), ads .rlat .max ()),
868870 )
869- try :
871+ if "rotated_pole" in surflib :
870872 surflib = surflib .drop ("rotated_pole" )
871- except Exception :
872- pass
873873 return xr .merge (
874874 (ads , surflib .squeeze (drop = True )), join = "override" , compat = "override"
875875 )
0 commit comments