diff --git a/e3sm_diags/derivations/derivations.py b/e3sm_diags/derivations/derivations.py index 32b427d56..14eef3104 100644 --- a/e3sm_diags/derivations/derivations.py +++ b/e3sm_diags/derivations/derivations.py @@ -55,6 +55,7 @@ pminuse_convert_units, precst, prect, + prect_frac, qflx_convert_to_lhflx, qflx_convert_to_lhflx_approxi, qflxconvert_units, @@ -117,6 +118,16 @@ rename(prw), target_units="kg/m2" ), # EAMxx }, + "PRECC": { + ("PRECC",): lambda pr: convert_units(pr, target_units="mm/day"), + ("prc",): rename, + }, + "PRECL": { + ("PRECL",): lambda pr: convert_units(rename(pr), target_units="mm/day"), + }, + "PRECC_Frac": { + ("PRECC", "PRECL"): lambda precc, precl: prect_frac(precc, precl), + }, # Sea Surface Temperature: Degrees C # Temperature of the water, not the air. Ignore land. "SST": OrderedDict( @@ -734,7 +745,6 @@ ("huss",): lambda q: convert_units(q, target_units="g/kg"), ("d2m", "sp"): qsat, }, - "PRECC": {("prc",): rename}, "TAUX": { ("tauu",): lambda tauu: -tauu, ("surf_mom_flux_U",): lambda tauu: -tauu, # EAMxx diff --git a/e3sm_diags/derivations/formulas.py b/e3sm_diags/derivations/formulas.py index 57d6e1305..e1621f965 100644 --- a/e3sm_diags/derivations/formulas.py +++ b/e3sm_diags/derivations/formulas.py @@ -235,6 +235,17 @@ def prect(precc: xr.DataArray, precl: xr.DataArray): return var +def prect_frac(precc: xr.DataArray, precl: xr.DataArray): + """convective precipitation fraction = convective /(convective + large-scale)""" + with xr.set_options(keep_attrs=True): + var = precc / (precc + precl) * 100.0 + + var.attrs["units"] = "%" + var.attrs["long_name"] = "convective precipitation fraction" + + return var + + def precst(precc: xr.DataArray, precl: xr.DataArray): """Total precipitation flux = convective + large-scale""" with xr.set_options(keep_attrs=True):