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)