Source code for pycif.plugins.transforms.complex.moist2dry.forward
import xarray as xr
[docs]
def forward(
transf,
inout_datastore,
controlvect,
obsvect,
mapper,
di,
df,
mode,
runsubdir,
workdir,
onlyinit=False,
**kwargs
):
ddi = min(di, df)
# Constants
Rdry = 287.05
Rvapor = 461.5
R = 8.314462
beta = (Rvapor - Rdry) / Rvapor
# Converts to dry
trid_out = (transf.component[0], transf.parameter[0])
spec = inout_datastore["inputs"][trid_out][ddi]["spec"]
q = inout_datastore["inputs"][
("specific_humidity", transf.parameter[0])][ddi]["spec"]
dry_coef = (1 - beta * q / (1 - q)) \
* R / Rdry / transf.molmass * 1000 * 1e9
inout_datastore["outputs"][trid_out][ddi] = xr.Dataset(
{"spec": spec * dry_coef})
if mode == "tl":
inout_datastore["outputs"][trid_out][ddi]["incr"] = \
inout_datastore["inputs"][trid_out][ddi]["incr"] * dry_coef