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