Source code for swot_simulator.plugins.ssh.mitgcm_ww3
# Copyright (c) 2021 CNES/JPL
#
# All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
"""
Interpolation of the SSH from MITGCM interpolated model for WW3
===============================================================
"""
import logging
import numpy as np
import xarray as xr
from .. import data_handler
LOGGER = logging.getLogger(__name__)
[docs]class MITGCM_WW3(data_handler.CartesianGridHandler):
"""Interpolation of the SSH from MITGCM interpolated for WWW3."""
[docs] def __init__(self, path: str):
loader = MITGCM_WW3.OverriddenNetcdfLoader(
path,
date_fmt="%Y%m%d",
ssh_name="wlv",
pattern=r"ww3.(?P<date>\d{8})_wlv.nc")
super().__init__(loader)
class OverriddenNetcdfLoader(data_handler.NetcdfLoader):
def load_dataset(self, first_date: np.datetime64,
last_date: np.datetime64):
LOGGER.debug("fetch data for %s, %s", first_date, last_date)
selected = self.select_netcdf_files(first_date, last_date)
dataset = xr.open_mfdataset(self.time_series["path"][selected],
concat_dim=self.time_name,
combine="nested",
decode_times=True)
if self.time_name not in dataset.coords:
LOGGER.debug(
"Time coordinate %s was not found, assigning "
"axis with time from file names", self.time_name)
dataset = dataset.assign_coords(
{self.time_name: self.time_series["dates"][selected]})
LOGGER.debug(
"Renaming dataset with canonical names lon, lat, time, ssh")
return dataset.rename({
self.lon_name: "lon",
self.lat_name: "lat",
self.ssh_name: "ssh",
self.time_name: "time"
})