Source code for pycif.plugins.transforms.complex.diagmet.propagate_incompatible
import numpy as np
[docs]
def propagate_incompatible_domain(self, trans_mapper, trid_in, mode="backward"):
meteo_parameters_3d = self.model.meteo_parameters_3d
meteo_parameters_2d = self.model.meteo_parameters_2d
domains = [trans_mapper["outputs"][trid_out]["domain"]
for trid_out in trans_mapper["outputs"]
]
# Get 3D domains and check if incompatible
domains_3d = [
d for d in domains if d.nlev > 1
]
domain_3d = domains_3d[0]
for dom3d in domains_3d:
if dom3d != domain_3d:
raise Exception(
"More than two output 3D domains in diagmet. This should not happen"
)
# Get 3D domains and check if incompatible
domains_2d = [
d for d in domains if d.nlev == 1
]
domain_2d = domains_2d[0]
for dom2d in domains_2d:
if dom2d != domain_2d:
raise Exception(
"More than two output 2D domains in diagmet. This should not happen"
)
# Now fetch the correct domain
trans_mapper["inputs"][trid_in]["domain"] = \
domain_2d if trid_in in self.meteo_parameters_2d_in else domain_3d