Source code for pycif.plugins.models.TM5.io.inputs.make_meteo
from ......utils import path
# JvP 20210517: added import statements, MODULE_NAME module level logger
import logging
import sys
MODULE_NAME = __name__[__name__.index('TM5'):] if 'TM5' in __name__ else __name__
logger = logging.getLogger(MODULE_NAME)
# Original make_meteo function by A. Berchet
[docs]
def make_meteo_AB(self, datastore, runsubdir, mode, ddi, ddf):
"""Link TM5 meteorological input files from the original source directory.
Reads the original meteo file directory (``dirorig``) from *datastore*
and creates symlinks inside *runsubdir* pointing at the meteo files
expected by TM5 for the period ``[ddi, ddf]``.
Args:
self: TM5 model plugin instance.
datastore: meteo data-store containing the ``dirorig`` path.
runsubdir (str): path to the period run directory.
mode (str): ``'fwd'``, ``'tl'``, or ``'adj'``.
ddi (datetime): period start date.
ddf (datetime): period end date.
"""
ref_dir = datastore.datastore[("meteo", "")]["dirorig"]
# File directories and prefixes
filedirs = {"an0tr1": ["albedo_%Y%m%d_00p01.nc",
"sr_%Y%m%d_00p01.nc",
"veg_%Y%m%d_00p01.nc"],
"h06h18tr1": ["blh_%Y%m%d_00p01.nc",
"ci_%Y%m%d_00p01.nc",
"cp_%Y%m%d_00p01.nc"],
"h06h18tr3": ["cld_%Y%m%d_00p03.nc",
"convec_%Y%m%d_00p03.nc",
"mfw_%Y%m%d_00p03.nc"]}
for filedir in filedirs:
for filetype in filedirs[filedir]:
source = ddi.strftime(f"{ref_dir}/{filetype}")
target = ddi.strftime(
f"{runsubdir}/{filetype}//ec/ea/")
path.link(source, target)
return
# New make_meteo function by J.C.A. van Peet
[docs]
def make_meteo(self, datastore, runsubdir, mode, ddi, ddf):
"""
PURPOSE
Link to datavect/meteo from obsoperator/fwd_0000/2018-01-01_00-00/meteo.
VERSION HISTORY
2.0 17-05-2021 by J.C.A. van Peet
Link to datavect/meteo from obsoperator/fwd_0000/2018-01-01_00-00/meteo.
1.0 28-04-2021 by A. Berchet
Original code (see above)
"""
# Set the name of this function
PROG_NAME = MODULE_NAME + ".make_meteo"
# Local logger
logger = logging.getLogger(PROG_NAME)
logger.setLevel(logging.DEBUG)
# The ref_dir defined here is the meteo directory in .../work/datavect/meteo
# which is initialised in .../plugins/meteos/tm5_meteo/fetch.py.
ref_dir = datastore[("meteo", "")]["dirorig"]
# Some debug statements
logger.debug("")
logger.debug("*"*30)
logger.debug(PROG_NAME+" => DEBUG:")
logger.debug(" ref_dir = %s", ref_dir)
logger.debug(" runsubdir = %s", runsubdir)
logger.debug("*"*30)
logger.debug("")
# Link to the meteo data in ref_dir = .../work/datavect/meteo dir. You can
# use the CIF function path.link(source, target) to create a link to source
# with name target.
path.link(ref_dir, f'{runsubdir}/meteo')
#logger.debug("")
#logger.debug("*"*30)
#logger.debug(PROG_NAME+" => Computer says no!")
#logger.debug("*"*30)
#logger.debug("")
#try:
# raise RuntimeError
#except RuntimeError as e:
# #logger.exception("OOPS!")
# logger.critical(e, exc_info=True)
# #raise # => Will display the traceback on screen a second time
# sys.exit() # => Just exit.
## end try
# end function make_meteo