import os
import numpy as np
import pandas as pd
import xarray
from .....utils.classes.fluxes import Flux
from .....utils.netcdf import save_nc
[docs]
def write(self, name, ic_file, ic_data, mode="a", **kwargs):
"""Write flux to AEMISSION CHIMERE compatible files.
Args:
self (Fluxes): the Fluxes plugin
ic_file (str): the file where to write fluxes
ic_data (xarray.DataArray): fluxes data to write
mode (str): 'w' to overwrite, 'a' to append
"""
# If mode is 'a' but file does not exit, switch to mode 'w'
if mode == "a" and not os.path.isfile(ic_file):
mode = "w"
# Array shape
nhours, nlev, nmerid, nzonal = np.shape(ic_data)
# Dimensions
spstrlen = 23
dimnames = [
"temps",
"rlonv",
"rlatu",
"sigs",
]
dimlens = [None, nmerid, nzonal, nlev, spstrlen, 19, 1]
# Variables names, dimension and attributes
varnames = ["temps", "rlonv", "rlatu", name]
vardims = [
("temps"),
("rlonv"),
("rlatu"),
("temps", "sigs", "rlatu", "rlonv"),
]
dtypes = ["i", "f", "f", "d"]
units = ["", "degrees_east", "degrees_north", ""]
attributes = [
{},
{"long_name": "Longitude"},
{"long_name": "Latitude"},
{},
]
# Variables to save
times = 0
lon = self.domain.zlon
lat = self.domain.zlat
variables = [times, lon, lat, ic_data]
save_nc(
ic_file,
variables,
varnames,
vardims,
dimnames,
dimlens,
units,
dtypes,
mode=mode,
attributes=attributes,
format="NETCDF3_CLASSIC",
)