Source code for pycif.plugins.transforms.system.dump2inputs.adjoint
from logging import info
[docs]
def adjoint(
transform,
inout_datastore,
controlvect,
obsvect,
mapper,
di,
df,
mode,
runsubdir,
workdir,
onlyinit=False,
check_transforms=False,
**kwargs
):
datastore = inout_datastore["outputs"]
for trid in mapper["inputs"]:
input_type = trid[0]
# Create new data to extract
data2dump = {trid: {"data": datastore.get(trid, {}),
**mapper["inputs"][trid]}}
if not onlyinit:
data2dump = transform.native2inputs_adj(
data2dump, input_type, di, df, runsubdir, mode,
check_transforms=check_transforms
)
for tr in data2dump:
if tr in inout_datastore["inputs"]:
inout_datastore["inputs"][tr].update(data2dump[tr]["data"])
else:
info(
"{} was simulated by the model, "
"but could not be transferred to the control vector".format(
tr
)
)
# Update inputs
inout_datastore["inputs"].update(inout_datastore["outputs"])