Source code for pycif.plugins.models.lmdz_old.io.outputs2native_adj
import datetime
import glob
import os
import numpy as np
import pandas as pd
import xarray as xr
from .....utils.datastores.empty import init_empty
from .inputs.make_endconcs import make_endconcs
from .inputs.obs import make_obs
[docs]
def outputs2native_adj(
self,
data2dump,
input_type,
datei,
datef,
runsubdir,
mode="fwd",
dump=True,
onlyinit=False,
do_simu=True,
check_transforms=False,
**kwargs,
):
"""Reads outputs to pycif objects.
If the mode is 'fwd' or 'tl', only observation-like outputs are extracted.
For the 'adj' mode, all outputs relative to model sensitivity are extracted.
Dumps to a NetCDF file with output concentrations if needed
Args:
self (pycif.utils.classes.models.Model): Model object
runsubdir (str): current sub-sumilation directory
mode (str): running mode; one of: 'fwd', 'tl', 'adj'; default is 'fwd'
dump (bool): dumping outputs or not; default is True
Return:
dict
"""
ddi = min(datei, datef)
ddf = max(datei, datef)
# Hour steps of the sub-run
hour_dates = pd.date_range(ddi, ddf, freq="1h")
for trid in data2dump:
mod_input = trid[0]
trcr = trid[1]
if mod_input != "endconcs":
if onlyinit:
make_obs(
self,
ddi,
data2dump[trid][ddi],
runsubdir,
"fwd",
trcr,
input_type,
do_simu,
)
else:
make_obs(
self,
ddi,
data2dump[trid][ddi],
runsubdir,
"adj",
trcr,
input_type,
do_simu,
)
elif mod_input == "endconcs":
if not onlyinit:
make_endconcs(
self,
data2dump,
runsubdir,
mode,
ddi,
ddf,
onlyinit,
check_transforms=check_transforms,
)