Skip to content

Commit 91af2d5

Browse files
update gcm remap for initial conditions
1 parent e4fab9c commit 91af2d5

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

pyremo/preproc/remap.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

309312
def 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

Comments
 (0)