Source code for pycif.plugins.models.chimere.io.inputs.make_meteo


import os
import xarray as xr
import numpy as np
from ......utils import path


[docs] def make_meteo(self, datastore, runsubdir, mode, datei): """Make METEO.nc files for CHIMERE. Args: self (pycif.utils.classes.): plugin with all attributes datastore (dict): information on meteo variables runsubdir (str): directory to the current run nho (int): number of hours in the run mode (str): running mode: 'fwd', 'tl' or 'adj' """ for param in self.meteo_parameters + [""]: trid = ("meteo", param) if trid not in datastore: continue tracer = datastore[trid] tracer_data = tracer["data"][datei] filemet_out = f"{runsubdir}/METEO.nc" file_metincrout = f'{runsubdir}/METEO.increment.nc' if "spec" not in tracer_data: filemet = datei.strftime( f"{tracer['dirorig']}/{tracer['fileorig']}") # If does not exist, just link linked = False if not os.path.isfile(filemet_out): path.link(filemet, filemet_out) linked = True else: # Replace existing link by copy of original file to modify it if os.path.isfile(filemet_out): path.copyfromlink(filemet_out) xr_mode = "a" if os.path.isfile(filemet_out) else "w" todump = xr.Dataset({param: tracer_data["spec"]}) self.meteo.write(param, filemet_out, todump, mode=xr_mode) if mode == "tl": xr_mode = "a" if os.path.isfile(filemet_out) else "w" if "incr" not in tracer_data: tracer_data["incr"] = 0. * tracer_data["spec"] todump = xr.Dataset({param: tracer_data["incr"]}) self.meteo.write(param, file_metincrout, todump, mode=xr_mode)