"""Radiation related operators."""
# Third-party
import xarray as xr
# Local
from .. import metadata
from .. import physical_constants as pc
[docs]
def compute_athd_s(athb_s: xr.DataArray, tsurf: xr.DataArray) -> xr.DataArray:
"""Compute incoming longwave radiation at surface level.
Parameters
----------
athb_s : xarray.DataArray
Net long-wave radiation flux at surface [W m-2]
tsurf : xarray.DataArray
Temperature at surface [K]
Returns
-------
xarray.DataArray
Average downward longwave radiation at the surface [W m-2]
"""
return xr.DataArray(
data=athb_s / pc.emissivity_surface + pc.boltzman_cst * tsurf**4,
attrs=metadata.override(athb_s.message, shortName="ATHD_S"),
)
[docs]
def compute_swdown(diffuse: xr.DataArray, direct: xr.DataArray) -> xr.DataArray:
"""Compute downward shortwave radiation.
Parameters
----------
diffuse : xarray.DataArray
incoming diffuse shortwave radiation.
direct : xarray.DataArray
incoming direct shortwave radiation.
Returns
-------
xarray.DataArray
downward shortwave radiation at surface level.
"""
return xr.DataArray(
data=(diffuse + direct).clip(min=0),
attrs=metadata.override(diffuse.message, shortName="ASOD_S"),
)