Source code for meteodatalab.operators.rho

"""Algorithm to compute the density (rho)."""

# Third-party
import xarray as xr

# Local
from .. import metadata
from .. import physical_constants as pc


[docs] def compute_rho_tot( t: xr.DataArray, p: xr.DataArray, qv: xr.DataArray, qc: xr.DataArray, qi: xr.DataArray | None = None, qp: xr.DataArray | None = None, ) -> xr.DataArray: """Total density of air mixture. Assumes perfect gas law, pressure as sum of partial pressures. Parameters ---------- t : xarray.DataArray Temperature [Kelvin] p : xarray.DataArray Pressure [Pascal] qv : xarray.DataArray Specific humidity [kg/kg] qc : xarray.DataArray Specific cloud water content [kg/kg] qi : xarray.DataArray, optional Specific cloud ice content [kg/kg] qp : xarray.DataArray, optional Specific precipitable components content [kg/kg] Returns ------- xarray.DataArray Total density of air mixture [kg/m**3] """ q = qc if qi is not None: q += qi if qp is not None: q += qp return xr.DataArray( data=p / (pc.r_d * t * (1.0 + pc.rvd_o * qv - q)), attrs=metadata.override(p.message, shortName="DEN"), )