Source code for pycif.plugins.datastreams.fields.lmdz_inicond_reg.read

from __future__ import annotations

import datetime

import numpy as np
import xarray as xr


[docs] def read( self, name: str, varnames: str, dates: list[tuple[datetime.datetime, datetime.datetime]], files: list[str], tracer: object | None = None, **kwargs, ) -> xr.DataArray: varnames = varnames if varnames else name if len(files) > 1: raise ValueError("multiple files provided for initial conditions") (path,) = files with xr.open_dataset(path) as ds: data = ds[varnames].values # Backward compatibility with old LMDZ files if data.shape[0] == 1: data = data[0, ...] if data.shape[2] == self.domain.nlon + 1: data = data[:, :, :-1] if data.shape != (self.domain.nlev, self.domain.nlat, self.domain.nlon): raise ValueError( f"unexpected initial conditions data shape {data.shape}, " f"should be ({self.domain.nlev}, {self.domain.nlat}, {self.domain.nlon})" ) xmod = xr.DataArray( data[np.newaxis, :, :, :], coords={"time": [dates[0][0]]}, dims=("time", "lev", "lat", "lon"), ) return xmod