Source code for pycif.plugins.datastreams.meteos.lmdz_mass_fluxes.fetch
from __future__ import annotations
from datetime import datetime
from pathlib import Path
from .....utils import path
# pylint: disable=unused-argument
[docs]
def fetch(
ref_dir: str,
ref_file: str,
input_interval: dict[datetime, list[datetime]],
target_dir: str,
tracer: object | None = None,
**kwargs,
):
"""Reads meteorology and links to the working directory"""
if tracer is None:
raise ValueError("tracer is None")
filetype_list = [("fluxstoke", ""), ("phystoke", "_csr")]
if tracer.model.grid == "regular":
filetype_list.append(("fluxstokev", ""))
input_dates = tracer.model.meteo_input_dates # type: ignore
list_dates: dict[datetime, list[tuple[datetime, datetime]]] = {}
list_files: dict[datetime, list[str]] = {}
# Link meteo files
for di, dates in input_dates.items():
# Set dates
list_dates[di] = [(di, df) for di, df in zip(dates[:-1], dates[1:])]
list_files[di] = len(list_dates[di]) * ["dummy"]
# Link meteo files
for prefix, suffix in filetype_list:
filename = f"{prefix}.{di:an%Y.m%m}{suffix}.nc"
source = Path(ref_dir, filename)
if not source.is_file():
raise FileNotFoundError(f"Meteo file '{source}' for {di} not found")
target = Path(target_dir, source.name)
path.link(source, target)
return list_files, list_dates