"""
Ctpini files.
"""
from bronx.fancies import loggers
from vortex.data.outflow import StaticResource
from vortex.data.flow import GeoFlowResource
from ..syntax.stdattrs import gvar
from vortex.data.contents import DataTemplate
from .gridfiles import GridPoint
#: No automatic export
__all__ = []
logger = loggers.getLogger(__name__)
[docs]
class CtpiniDirectiveFile(GeoFlowResource):
"""
Class dealing with Ctpini directive file.
"""
_footprint = dict(
info="Ctpini directive file",
attr=dict(
kind=dict(
values=[
"ctpini_directives_file",
],
),
nativefmt=dict(default="ascii"),
),
)
@property
def realkind(self):
return "ctpini_directives_file"
[docs]
class AsciiFiles(StaticResource):
"""
Class to deal with miscellaneous ascii files coming from genv.
"""
_abstract = True
_footprint = [
gvar,
dict(
info="Abstract class for ascii files from genv.",
),
]
[docs]
class CtpiniAsciiFiles(AsciiFiles):
"""
Class to deal with Genv Ctpini ascii files.
"""
_footprint = [
dict(
info="Ctpini Genv ascii files.",
attr=dict(
kind=dict(
values=["ctpini_ascii_file"],
),
source=dict(
values=["levels", "covano", "fort61", "coor", "cov46"],
),
gvar=dict(
default="tsr_misc_[source]",
),
clscontents=dict(default=DataTemplate),
),
)
]
@property
def realkind(self):
return "ctpini_ascii_file"
[docs]
class GridPointCtpini(GridPoint):
"""
Class to deal with Gridpoint files used as input in Ctpini.
"""
_footprint = dict(
info="Ctpini Gridpoint Fields",
attr=dict(
kind=dict(
values=[
"ctpini_gridpoint",
],
),
origin=dict(
values=[
"oper",
"PS",
"dble",
"PX",
"ctpini",
"PTSR",
],
remap=dict(
PS="oper",
PX="dble",
PTSR="ctpini",
),
),
parameter=dict(
values=[
"PMERSOL",
"T850HPA",
"Z15PVU",
"Z20PVU",
"Z07PVU",
"TROPO",
],
),
run_ctpini=dict(
optional=True,
default=None,
),
nativefmt=dict(
values=[
"geo",
],
default="geo",
),
),
)
@property
def realkind(self):
return "ctpini_gridpoint"
def namebuilding_info(self):
"""Generic information, radical = ``grid``."""
ninfo = super().namebuilding_info()
if self.origin == "ctpini" and self.run_ctpini is not None:
source = [self.model, self.origin, self.parameter, self.run_ctpini]
else:
source = [self.model, self.origin, self.parameter]
ninfo.update(
radical="ctpini-grid",
src=source,
)
return ninfo