diff --git a/.github/workflows/esm_tools_actions.yml b/.github/workflows/esm_tools_actions.yml index 13fee631e..e05d66dd2 100644 --- a/.github/workflows/esm_tools_actions.yml +++ b/.github/workflows/esm_tools_actions.yml @@ -29,9 +29,14 @@ jobs: run: | ./install.sh - - name: Run Pytest + - name: Install Test requirements run: | + # pip install .[test] # <-- PG: seems not to work for reasons I do not really understand. pip install pytest + pip install pyfakefs + + - name: Run Pytest + run: | pytest -v . # For now, only test actual source code. Stuff like coupling scripts is ignored pytest -v --doctest-modules src --ignore src/esm_runscripts/coupling --ignore-glob "*backup*" diff --git a/.github/workflows/esm_tools_actions_novm.yml b/.github/workflows/esm_tools_actions_novm.yml index 60b338f8c..a7e74d993 100644 --- a/.github/workflows/esm_tools_actions_novm.yml +++ b/.github/workflows/esm_tools_actions_novm.yml @@ -30,10 +30,17 @@ jobs: run: | ./install.sh - - name: Run Pytest + - name: Install Test requirements run: | + # pip install .[test] # <-- PG: seems not to work for reasons I do not really understand. pip install pytest + pip install pyfakefs + + - name: Run Pytest + run: | pytest -v . + # For now, only test actual source code. Stuff like coupling scripts is ignored + pytest -v --doctest-modules src --ignore src/esm_runscripts/coupling --ignore-glob "*backup*" - name: run esm_master first time run: | diff --git a/setup.cfg b/setup.cfg index 4a0e23bf7..9faa27be6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -68,7 +68,7 @@ universal = 1 [flake8] exclude = docs -max-line-length = 88 +max-line-length = 300 # This is dumb, but my editor keeps throwing errors at me :-( [aliases] diff --git a/setup.py b/setup.py index d707ec26f..4c1b0d6d5 100644 --- a/setup.py +++ b/setup.py @@ -17,6 +17,7 @@ "PyGithub", "colorama", "coloredlogs", + "dpath==2.0.6", "emoji", "f90nml", "gfw-creator", @@ -39,7 +40,11 @@ setup_requirements = [] -test_requirements = ["pyfakefs"] +test_requirements = ["pytest", "pyfakefs"] + +extras = { + "test": test_requirements, +} setup( author="Dirk Barbi", @@ -91,6 +96,7 @@ setup_requires=setup_requirements, test_suite="tests", tests_require=test_requirements, + extras_require=extras, url="https://github.com/esm-tools/esm_tools", version="6.21.11", zip_safe=False, diff --git a/src/esm_calendar/.esm_calendar.py.swp b/src/esm_calendar/.esm_calendar.py.swp new file mode 100644 index 000000000..14c76a36e Binary files /dev/null and b/src/esm_calendar/.esm_calendar.py.swp differ diff --git a/src/esm_calendar/esm_calendar.py b/src/esm_calendar/esm_calendar.py index 8abcaceb1..8c746ce90 100644 --- a/src/esm_calendar/esm_calendar.py +++ b/src/esm_calendar/esm_calendar.py @@ -895,3 +895,27 @@ def sub_tuple(self, to_sub): new_date = self.from_list(result) return new_date + + def is_in_interval(self, interval: tuple) -> bool: + """ + Finds if a date falls in an open interval. + + + Parameters + ---------- + interval : tuple of Date + A date interval in which there are 2 Dates objects. + + Returns + ------- + True : + If the date of ``self`` is within the open interval defined by ``interval`` + False : + If the date of ``self`` is out of the open interval defined by ``interval`` + """ + + if len(interval) != 2: + raise TypeError(f"You must have {interval} be a tuple of two Dates!") + + # Check whether the ``self`` date falls within the interval + return interval[0] < self < interval[1] diff --git a/src/esm_runscripts/__init__.py b/src/esm_runscripts/__init__.py index c10a67bc9..d1c256eb8 100644 --- a/src/esm_runscripts/__init__.py +++ b/src/esm_runscripts/__init__.py @@ -9,6 +9,7 @@ from .database import * from .database_actions import * from .dataprocess import * +from .filedicts import * from .filelists import * from .last_minute import * from .namelists import * diff --git a/src/esm_runscripts/filedicts.py b/src/esm_runscripts/filedicts.py new file mode 100644 index 000000000..6c8d332ef --- /dev/null +++ b/src/esm_runscripts/filedicts.py @@ -0,0 +1,1260 @@ +""" +The file-dictionary implementation + +Developer Notes +--------------- +* Internal functions, decorators, and methods are prefixed with _. They should + only be used inside of this file. +* Decorators should have names that map to an attribute of the object. See the + example in ``_allowed_to_be_missing``. +""" +import copy +import functools +import glob +import inspect +import os +import pathlib +import shutil +import sys +from enum import Enum, auto +from typing import Any, AnyStr, Dict, Iterator + +import dpath.util +import yaml +from loguru import logger + +from esm_calendar import Date +# These should be relative +from esm_parser import ConfigSetup, user_error + +# Set up the logger: +logger.remove() +LEVEL = "ERROR" +LOGGING_FORMAT = "[{time:HH:mm:ss DD/MM/YYYY}] |{level}| [{file} -> {function}() line:{line: >3}] >> {message}" +logger.add(sys.stderr, level=LEVEL, format=LOGGING_FORMAT) + + +class DatestampFormatError(Exception): + """Raise this error when the Datestamp formatter is incorrectly used""" + + +class DotDict(dict): + """ + A dictionary subclass that allows accessing data via dot-attributes and keeps changes between dictionary + keys and dot-attributes in sync. + + This class inherits from the built-in `dict` class and overrides the `__getattr__` and `__setattr__` methods + to provide dot-attribute access to dictionary items. When an attribute is accessed using dot notation, the + corresponding dictionary key is returned. Similarly, when an attribute is set using dot notation, the corresponding + dictionary key is updated. Changes made using dictionary keys are also reflected in the dot-attributes. + + Note that this implementation assumes that the keys in the dictionary are strings, since dot-attributes can + only be strings in Python. + """ + + def __getattr__(self, attr): + try: + return self[attr] + except KeyError: + raise AttributeError( + f"'{self.__class__.__name__}' object has no attribute '{attr}'" + ) + + def __setattr__(self, attr, value): + self[attr] = value + + +class NameIterEnum(Enum): + def __iter__(self) -> Iterator[str]: + """Returns list of names of the iteration, guarentted to be lower-case""" + return iter(str(name).lower() for name in self.__members__) + + +class FileTypes(NameIterEnum): + """Describes which type a file might belong to, e.g. input, outdata, forcing""" + + ANALYSIS = auto() + CONFIG = auto() + COUPLE = auto() + FORCING = auto() + IGNORE = auto() + INPUT = auto() + LOG = auto() + MON = auto() + OUTDATA = auto() + RESTART = auto() + VIZ = auto() + + +class FileLocations(NameIterEnum): + """Posibile locations for a file""" + + COMPUTER = auto() + EXP_TREE = auto() + RUN_TREE = auto() + WORK = auto() + + +class FileStatus(NameIterEnum): + """Describes which status a particular file might have, e.g. ``FILE``, ``NOT_EXISTS``, ``BROKEN_LINK``.""" + + FILE = auto() # ordinary file + DIR = auto() # directory + LINK = auto() # symbolic link + EXISTS = auto() # object exists in the system + NOT_EXISTS = auto() # file does not exist + BROKEN_LINK = auto() # target of the symbolic link does not exist + + +# NOTE(PG): Comment can be removed later. Here I prefix with an underscore as +# this decorator should **only** be used inside of this file. +def _allowed_to_be_missing(method): + """Allows to decorate a method with ``_allowed_to_be_missing``, causing it + to always return ``None``. + + If a method is decorated with ``@_allowed_to_be_missing``, it will return + ``None`` instead of executing if the file has a attribute of + ``_allowed_to_be_missing`` set to ``True``. You get a warning via the logger + giving the full method name that was decorated and a representation of the + file that was attempted to be moved, linked, or copied. + + Usage Example + ------------- + Given you have an instantiated simulation file under ``sim_file`` with + the following property in YAML:: + + echam: + files: + sim_file: + allowed_to_be_missing: True + ...other properties... + + >>> sim_file.allowed_to_be_missing # doctest: +SKIP + True + + And given that you have a decorated method foo, that would act on the file:: + >>> rvalue = sim_file.foo(*args, **kwargs) # doctest: +SKIP + >>> rvalue is None # doctest: +SKIP + True + >>> print(rvalue) # doctest: +SKIP + None + + Programming Example + ------------------- + class MyCoolClass: + def __init__(self): + self.allowed_to_be_missing = True + + @_allowed_to_be_missing + def foo(self, *args, **kwargs): + # This method will always return None, the return below is never + # reached: + return 123 + + Notes + ----- + Why does this thing have an underscore and the attribute does not? + + Because this is a decorator to enable the functionality, and I do not want + anyone to use this decorator outside of this file, so, we start with ``_`` + to denote that ("Private", even though Python does not formally have that). + + And, the attribute might be interesting for the end-user, not the programmer. + + That's why. + """ + + @functools.wraps(method) + def inner_method(self, *args, **kwargs): + if self.allowed_to_be_missing: + try: + return method(self, *args, **kwargs) + except (FileNotFoundError, IOError): + logger.warning( + f"Skipping {method.__qualname__} as this file ({self}) is allowed to be missing!" + ) + # None is the default return, but let us be explicit here, as it is a bit confusing + return None + else: + return method(self, *args, **kwargs) + + return inner_method + + +def _fname_has_date_stamp_info(fname, date, reqs=["%Y", "%m", "%d"]): + """ + Checks if a particular file has all elements of a particular date in its name. + + Parameters + ---------- + fname : str + The name of the file to check + date : esm_calendar.Date + The date to be checked against + reqs : list of str + A list of ``strftime`` compliant strings to determine which elements of + the date to check. Compatible with %Y %m %d %H %M %S (year, month, day, + hour, minute, second) + + Returns + ------- + bool : + True if all elements appear in the filename, False otherwise. + + """ + date_attrs = { + "%Y": "syear", + "%m": "smonth", + "%d": "sday", + "%H": "shour", + "%M": "sminute", + "%S": "ssecond", + } + required_attrs = [getattr(date, v) for k, v in date_attrs.items() if k in reqs] + # all(attr in fname for attr in required_attrs) + for attr in required_attrs: + if attr in fname: + fname = fname.replace(attr, "checked", 1) + return fname.count("checked") == len(reqs) + + +def _globbing(method): + """ + Decorator method for ``SimulationFile``'s methods ``cp``, ``mv``, ``ln``, that + enables globbing. If a ``*`` is found on the ``source`` or ``target`` the globbing + logic is activated, and consist of: + - run checks for globbing syntax + - check if any file matches the globbing pattern + - construct one instance of ``SimulationFile`` for each file matching the globbing + - run the ``method`` for that particular file + + Parameters + ---------- + method : method + The decorated method (``cp``, ``mv``, ``ln``) + + Returns + ------- + method : method + If no globbing is needed, returns the method as it was given originally. + """ + + @functools.wraps(method) + def inner_method(self, source, target, *args, **kwargs): + method_name = method.__name__ + source_name = self[f"name_in_{source}"] + target_name = self[f"name_in_{target}"] + + if "*" in source_name or "*" in target_name: + # Get wildcard patterns + source_pattern = source_name.split("*") + target_pattern = target_name.split("*") + + # Check wild cards syntax + self._wild_card_check(source_pattern, target_pattern) + + # Obtain source files + glob_source_paths = self._find_globbing_files(source) + + # Extract globbing source names + glob_source_names = [ + pathlib.Path(glob_source_path).name + for glob_source_path in glob_source_paths + ] + + # Solve the globbing target names + glob_target_names = [] + for glob_source_name in glob_source_names: + glob_target_name = glob_source_name + for sp, tp in zip(source_pattern, target_pattern): + glob_target_name = glob_target_name.replace(sp, tp) + glob_target_names.append(glob_target_name) + + # Loop through source files + for glob_source_name, glob_target_name in zip( + glob_source_names, glob_target_names + ): + # Create a new simulation file object for this specific glob file's config + glob_dict = dict(self) + glob_dict[f"name_in_{source}"] = glob_source_name + glob_dict[f"name_in_{target}"] = glob_target_name + glob_file = SimulationFile(**glob_dict) + # Use method + this_method = getattr(glob_file, method_name) + return this_method(source, target, *args, **kwargs) + else: + return method(self, source, target, *args, **kwargs) + + return inner_method + + +class SimulationFile(DotDict): + """ + Describes a file used within a ESM Simulation. + + A ``SimulationFile`` object describes one particular file used within an + ``esm-tools`` run. This description is similar to a standard Python + dictionary. Beyond the standard dictionary methods and attributes, there + are a variety of attributes that describe how the file should behave, as + well as a few additional methods you can use to relocate the file around on + the system. Please see the detailed documentation on each of the methods + for more specifics, but in summary, a ``SimulationFile`` has the following + additional functions:: + + >>> sim_file = SimulationFile(...) # doctest: +SKIP + >>> sim_file.mv("computer", "work") # doctest: +SKIP + >>> sim_file.ln("work", "run_tree") # doctest: +SKIP + >>> sim_file.cp("run_tree", "exp_tree") # doctest: +SKIP + + You get extra functions for moving, copying, or linking a file from one + location to another. Location keys are desccribed in detail in the Notes + section. + + Furthermore, there are a few attributes that you should be aware of. These + include: + + * ``name`` : A human readable name for the file. + * ``allowed_to_be_missing`` : A ``bool`` value to set a certain file as + allowed to be missing or not. In case it is, the cp/ln/mv command will not + fail if the original file is not found. + * ``datestamp_method`` : Sets how a datestamp should be added. See + ``_allowed_datestamp_methods`` for more information. + * ``datestamp_format`` : Sets how a datestamp should be formatted. See + ``_allowed_datestamp_methods`` for more information. + + Example + ------- + Given a config, you should be able to use this in YAML:: + + $ cat dummy_config.yaml + + echam: + files: + jan_surf: + name_in_computer: T63CORE2_jan_surf.nc + name_in_work: unit.24 + filetype: NetCDF + allowed_to_be_missing: True + description: > + Initial values used for the simulation, including + properties such as geopotential, temperature, pressure + + And, assuming config is as described above:: + + >>> sim_file = SimulationFile.from_config(config, 'echam.files.jan_surf') # doctest: +SKIP + + You could then copy the file to the experiment folder:: + + >>> sim_file.cp("pool", "work") # doctest: +SKIP + + Notes + ----- + A file can be located in one of these categories (``LOCATION_KEYS``): + - computer: pool/source directory (for input files) + - exp_tree: file in the category directory in experiment directory (eg. input, output, ...) + - run_tree: file in the experiment/run_// directory + - work: file in the current work directory. Eg. experiment/run_/work/ + + LOCATION_KEY is one of the strings defined in LOCATION_KEY list + - name_in_ : file name (without path) in the LOCATION_KEY + - eg. name_in_computer: T63CORE2_jan_surf.nc + - eg. name_in_work: unit.24 + - absolute_path_in_ : absolute path in the LOCATION_KEY + - eg. absolute_path_in_run_tree: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam/T63CORE2_jan_surf.nc + """ + + # Should all be replaced by Enums: + input_file_kinds = [ + "config", + "forcing", + "input", + ] + output_file_kinds = [ + "analysis", + "couple", + "log", + "mon", + "outdata", + "restart", + "viz", + "ignore", + ] + all_model_filekinds = ( + input_file_kinds + output_file_kinds + ["src"] + ) # FIXME: In review, someone should check this + + def __init__( + self, + name="", + component="", + paths={}, + kind=None, + allowed_to_be_missing=False, + description="", + filetype="", + datestamp_method="avoid_overwrite", + **kwargs, + ): + # self.name = name + # self.paths = paths + # self.kind = kind + # self.allowed_to_be_missing = allowed_to_be_missing + # self.description = description + # self.filetype = filetype + # self._datestamp_method = datestamp_method + # self.locations = {k: v.parent for k, v in self.paths.items()} + + super().__init__( + name=name, + component=component, + paths={k: pathlib.Path(v) for k, v in paths.items()}, + kind=kind, + allowed_to_be_missing=allowed_to_be_missing, + description=description, + filetype=filetype, + datestamp_method=datestamp_method, + locations={k: pathlib.Path(v).parent for k, v in paths.items()}, + **kwargs, + ) + + for location, path in paths.items(): + for attr_name, attr_value in { + f"absolute_path_in_{location}": path.resolve(), + f"name_in_{location}": path.name, + }.items(): + if attr_name not in self: + self[attr_name] = attr_value + + # possible paths for files: + + # location_keys = ["computer", "exp_tree", "run_tree", "work"] + # initialize the locations and complete paths for all possible locations + # self.locations = dict.fromkeys(location_keys, None) + + # Current Attributes: + # {'absolute_path_in_computer': PosixPath('/work/ollie/pool/ECHAM/T63/T63CORE2_jan_surf.nc'), + # 'absolute_path_in_exp_tree': PosixPath('/work/ollie/pgierz/some_exp/input/echam/T63CORE2_jan_surf.nc'), + # 'absolute_path_in_run_tree': PosixPath('/work/ollie/pgierz/some_exp/run_20000101-20000101/input/echam/T63CORE2_jan_surf.nc'), + # 'absolute_path_in_work': PosixPath('/work/ollie/pgierz/some_exp/run_20010101-20010101/work/unit.24'), + # 'allowed_to_be_missing': False, + # 'description': 'Initial values used for the simulation, including properties such as geopotential, temperature, pressure\n', + # 'filetype': 'NetCDF', + # 'name_in_computer': 'T63CORE2_jan_surf.nc', + # 'name_in_exp_tree': 'T63CORE2_jan_surf.nc', + # 'name_in_run_tree': 'T63CORE2_jan_surf.nc', + # 'name_in_work': 'unit.24', + # 'path_in_computer': '/work/ollie/pool/ECHAM/T63', + # 'type': 'input'} + + ############################################################################################## + # Initialize from esm-tools config + ############################################################################################## + + @classmethod + def from_config(cls, full_config: dict, attrs_address: str): + """ + - Initiates the properties of the object + - Triggers basic checks + + Parameters + ---------- + full_config : dict + The full simulation configuration + attrs_address : str + The address of this specific file in the full config, separated by dots. + + Note + ---- + A file can be located in one of these categories (``LOCATION_KEYS``): + - computer: pool/source directory (for input files) + - exp_tree: file in the category directory in experiment directory (eg. input, output, ...) + - run_tree: file in the experiment/run_// directory + - work: file in the current work directory. Eg. experiment/run_/work/ + + LOCATION_KEY is one of the strings defined in LOCATION_KEY list + - name_in : file name (without path) in the LOCATION_KEY + - eg. name_in_computer: T63CORE2_jan_surf.nc + - eg. name_in_work: unit.24 + - absolute_path_in_ : absolute path in the LOCATION_KEY + - eg. absolute_path_in_run_tree: + - /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam/T63CORE2_jan_surf.nc + """ + attrs_dict = dpath.util.get( + full_config, attrs_address, separator=".", default={} + ) + # _original_filedict = copy.deepcopy(attrs_dict) + + name = attrs_address.split(".")[-1] + component = attrs_address.split(".")[0] + # Check if attr dict gives a sufficient representation of a file + cls._check_config_syntax(attrs_dict, name) + kind = attrs_dict.get("kind") + # Complete tree names if not defined by the user + names = cls._complete_file_names(attrs_dict) + paths = cls._resolve_abs_paths(full_config, component, attrs_dict, names, kind) + obj = cls(name=name, paths=paths, **attrs_dict) + + # Verbose set to true by default, for now at least + obj._verbose = full_config.get("general", {}).get("verbose", True) + + # Checks + obj._check_path_in_computer_is_abs(paths, component, name) + return obj + + @classmethod + def _check_config_syntax(cls, cfg, name) -> None: + """ + Checks for missing variables: + - ``kind`` + - ``path_in_computer`` if the file it an input for the experiment + - ``name_in_computer`` if the file it an input for the experiment + - ``name_in_work`` if the file it an output of the experiment + + It also checks whether ``kind``'s value is correct. + + It notifies the user about these errors in the syntax using + ``esm_parser.error``. + """ + error_text = "" + missing_vars = "" + kinds_text = ", ".join(cls.all_model_filekinds) + this_filedict = copy.deepcopy(cfg) + + if "kind" not in cfg.keys(): + error_text = ( + f"{error_text}" + f"- the ``kind`` variable is missing. Please define a ``kind`` " + f"({kinds_text})\n" + ) + missing_vars = ( + f"{missing_vars} ``kind``: forcing/input/restart/outdata/...\n" + ) + elif cfg["kind"] not in cls.all_model_filekinds: + error_text = ( + f"{error_text}" + f"- ``{cfg['kind']}`` is not a supported ``kind`` " + f"(``files.{name}.kind``), please choose one of the following " + f"kinds: {kinds_text}\n" + ) + this_filedict["kind"] = f"``{this_filedict['kind']}``" + + if ( + "path_in_computer" not in cfg.keys() + and cfg.get("kind") in cls.input_file_kinds + ): + error_text = ( + f"{error_text}" + f"- the ``path_in_computer`` variable is missing. Please define a " + f"``path_in_computer`` (i.e. the path to the file excluding its name)." + f" NOTE: this is only required for {', '.join(cls.input_file_kinds)} file " + f"kinds\n" + ) + missing_vars = ( + f"{missing_vars} ``path_in_computer``: \n" + ) + + if ( + "name_in_computer" not in cfg.keys() + and cfg.get("kind") in cls.input_file_kinds + ): + error_text = ( + f"{error_text}" + f"- the ``name_in_computer`` variable is missing. Please define a ``name_in_computer`` " + f"(i.e. name of the file in the work folder). NOTE: this is only required for " + f"{', '.join(cls.input_file_kinds)} file kinds\n" + ) + missing_vars = f"{missing_vars} ``name_in_computer``: \n" + + if ( + "name_in_work" not in cfg.keys() + and cfg.get("kind") in cls.output_file_kinds + ): + error_text = ( + f"{error_text}" + f"- the ``name_in_work`` variable is missing. Please define a ``name_in_work`` " + f"(i.e. name of the file in the work folder). NOTE: this is only required for " + f"{', '.join(cls.output_file_kinds)} file kinds\n" + ) + missing_vars = ( + f"{missing_vars} ``name_in_work``: \n" + ) + + missing_vars = ( + f"Please, complete/correct the following vars for your file:\n\n" + f"{_pretty_filedict(name, this_filedict)}" + f"{missing_vars}" + ) + + if error_text: + error_text = ( + f"The file dictionary ``{name}`` is missing relevant information " + f"or is incorrect:\n{error_text}" + ) + user_error("File Dictionaries", f"{error_text}\n{missing_vars}") + + @classmethod + def _complete_file_names(cls, cfg): + """ + Complete missing names in the file with the default name, depending whether + the file is of kind ``input`` or ``output``. + """ + if cfg["kind"] in cls.input_file_kinds: + default_name = cfg["name_in_computer"] + elif cfg["kind"] in cls.output_file_kinds: + default_name = cfg["name_in_work"] + else: + raise TypeError(f"Unknown file kind: {cfg['kind']}") + names = {} + names["computer"] = cfg.get("name_in_computer", default_name) + names["run_tree"] = cfg.get("name_in_run_tree", default_name) + names["exp_tree"] = cfg.get("name_in_exp_tree", default_name) + names["work"] = cfg.get("name_in_work", default_name) + return names + + @staticmethod + def _resolve_abs_paths(config, component, attrs_dict, names, kind) -> Dict: + # NOTE(PG): I....hate this! :-( + """ + Builds the absolute paths of the file for the different locations + (``computer``, ``work``, ``exp_tree``, ``run_tree``) using the information + about the experiment paths in ``config`` and the + ``self["path_in_computer"]``. + + It defines these new variables in the ``SimulationFile`` dictionary: + - ``self["absolute_path_in_work"]`` + - ``self["absolute_path_in_computer"]`` + - ``self["absolute_path_in_run_tree"]`` + - ``self["absolute_path_in_exp_tree"]`` + """ + locations = { + "work": pathlib.Path(config["general"]["thisrun_work_dir"]), + "computer": pathlib.Path(attrs_dict.get("path_in_computer", "/dev/null")), + "exp_tree": pathlib.Path(config[component][f"experiment_{kind}_dir"]), + "run_tree": pathlib.Path(config[component][f"thisrun_{kind}_dir"]), + } + + return {key: path.joinpath(names[key]) for key, path in locations.items()} + + @staticmethod + def _check_path_in_computer_is_abs(paths, component, name): + if paths["computer"] is not None and not paths["computer"].is_absolute(): + user_error( + "File Dictionaries", + "The path defined for " + f"``{component}.files.{name}.path_in_computer`` is not " + f"absolute (``{paths['computer']}``). Please, always define an " + "absolute path for the ``path_in_computer`` variable.", + ) + + ############################################################################################## + # Overrides of standard dict methods + ############################################################################################## + + def __setattr__(self, name: str, value: Any) -> None: + """Checks when changing dot attributes for disallowed values""" + if name == "datestamp_format": + self._check_datestamp_format_is_allowed(value) + if name == "datestamp_method": + self._check_datestamp_method_is_allowed(value) + return super().__setattr__(name, value) + + def __setitem__(self, key: Any, value: Any) -> None: + """Checks for changing with sim_file['my_key'] = 'new_value'""" + if key == "datestamp_format": + self._check_datestamp_format_is_allowed(value) + if key == "datestamp_method": + self._check_datestamp_method_is_allowed(value) + return super().__setitem__(key, value) + + def update(self, *args, **kwargs): + """ + Standard dictionary update method, enhanced by additional safe-guards + for particular values. + """ + for k, v in dict(*args, **kwargs).items(): + if k == "datestamp_format": + self._check_datestamp_format_is_allowed(v) + if k == "datestamp_method": + self._check_datestamp_method_is_allowed(v) + self[k] = v + + ############################################################################################## + + ############################################################################################## + # Object Properties + ############################################################################################## + + @property + def datestamp_method(self): + """ + Defines which datestamp_method shall be used when possibly including + date stamps to the file. Valid choices are "never", "always", + "avoid_overwrite". + """ + return self._datestamp_method + + @datestamp_method.setter + def datestamp_method(self, new_attr_value): + """ + Sets a new value for datestamp method. + """ + # NOTE(PG): The checks could go here + self._datestamp_method = new_attr_value + + @property + def datestamp_format(self): + """ + Defines which datestamp_format shall be used when possibly including + date stamps to the file. Valid choices are "check_from_filename" and + "append". + """ + datestamp_format = self.get( + "datestamp_format", "append" + ) # This is the old default behaviour + return datestamp_format + + ############################################################################################## + # Main Methods + ############################################################################################## + @_globbing + @_allowed_to_be_missing + def cp(self, source: str, target: str) -> None: + """ + Copies the source file or folder to the target path. It changes the name of the + target if ``self["name_in_"]`` differs from ``self["name_in_"]. + + Parameters + ---------- + source : str + String specifying one of the following options: ``"computer"``, ``"work"``, + ``"exp_tree"``, ``run_tree`` + target : str + String specifying one of the following options: ``"computer"``, ``"work"``, + ``"exp_tree"``, ``run_tree`` + """ + if source not in self.locations: + raise ValueError( + f"Source is incorrectly defined, and needs to be in {self.locations}" + ) + if target not in self.locations: + raise ValueError( + f"Target is incorrectly defined, and needs to be in {self.locations}" + ) + source_path = self[f"absolute_path_in_{source}"] + target_path = self[f"absolute_path_in_{target}"] + + # Datestamps + if self.datestamp_method == "always": + target_path = self._always_datestamp(target_path) + if self.datestamp_method == "avoid_overwrite": + target_path = self._avoid_override_datestamp(target_path) + + # General Checks + # TODO (deniz): need to add higher level exception handler (eg. user_error) + self._check_source_and_target(source_path, target_path) + + # Actual copy + source_path_type = self._path_type(source_path) + if source_path_type == FileStatus.DIR: + copy_func = shutil.copytree + else: + copy_func = shutil.copy2 + try: + copy_func(source_path, target_path) + logger.success(f"Copied {source_path} --> {target_path}") + except IOError as error: + raise IOError( + f"Unable to copy {source_path} to {target_path}\n\n" + f"Exception details:\n{error}" + ) + + @_globbing + @_allowed_to_be_missing + def ln(self, source: AnyStr, target: AnyStr) -> None: + """creates symbolic links from the path retrieved by ``source`` to the one by ``target``. + + Parameters + ---------- + source : str + key to retrieve the source from the file dictionary. Possible options: ``computer``, ``work``, ``exp_tree``, ``run_tree`` + + target : str + key to retrieve the target from the file dictionary. Possible options: ``computer``, ``work``, ``exp_tree``, ``run_tree`` + + Returns + ------- + None + + Raises + ------ + FileNotFoundError + - Source path does not exist + OSError + - Target path is a directory + - Symbolic link is trying to link to itself + - Target path does not exist + FileExistsError + - Target path already exists + """ + if source not in self.locations: + raise ValueError( + f"Source is incorrectly defined, and needs to be in {self.locations}" + ) + if target not in self.locations: + raise ValueError( + f"Target is incorrectly defined, and needs to be in {self.locations}" + ) + # full paths: directory path / file name + source_path = self[f"absolute_path_in_{source}"] + target_path = self[f"absolute_path_in_{target}"] + + # Datestamps + if self.datestamp_method == "always": + target_path = self._always_datestamp(target_path) + if self.datestamp_method == "avoid_overwrite": + target_path = self._avoid_override_datestamp(target_path) + # General Checks + # TODO (deniz): need to add higher level exception handler (eg. user_error) + self._check_source_and_target(source_path, target_path) + + try: + os.symlink(source_path, target_path) + except IOError as error: + raise IOError( + f"Unable to link {source_path} to {target_path}\n\n" + f"Exception details:\n{error}" + ) + + @_globbing + @_allowed_to_be_missing + def mv(self, source: str, target: str) -> None: + """ + Moves (renames) the SimulationFile from it's location in ``source`` to + it's location in ``target``. + + Parameters + ---------- + source : str + One of ``"computer"``, ``"work"``, ``"exp_tree"``, "``run_tree``" + target : str + One of ``"computer"``, ``"work"``, ``"exp_tree"``, "``run_tree``" + """ + if source not in self.locations: + raise ValueError( + f"Source is incorrectly defined, and needs to be in {self.locations}" + ) + if target not in self.locations: + raise ValueError( + f"Target is incorrectly defined, and needs to be in {self.locations}" + ) + source_path = self[f"absolute_path_in_{source}"] + target_path = self[f"absolute_path_in_{target}"] + + # Datestamps + if self.datestamp_method == "always": + target_path = self._always_datestamp(target_path) + if self.datestamp_method == "avoid_overwrite": + target_path = self._avoid_override_datestamp(target_path) + # General Checks + # TODO (deniz): need to add higher level exception handler (eg. user_error) + self._check_source_and_target(source_path, target_path) + + # Perform the movement: + try: + source_path.rename(target_path) + logger.success(f"Moved {source_path} --> {target_path}") + except IOError as error: + raise IOError( + f"Unable to move {source_path} to {target_path}\n\n" + f"Exception details:\n{error}" + ) + + _allowed_datestamp_methods = {"never", "always", "avoid_overwrite"} + """ + Set containing the allowed datestamp methods which can be chosen from. + + Notes on possible datestamp methods + ----------------------------------- + never : str + This will never add a datestamp to a file. **WARNING** this will + cause you to possibly overwrite files. + always : str + This will always add a datestamp to a file, even if the canonical + target name would not suggest one. + avoid_overwrite : str + This will add a datestamp at the end of the file, if the during the + mv/cp/ln operation the file would be identically named. + """ + + _allowed_datestamp_formats = {"check_from_filename", "append"} + """ + Set containing the allowed datestamp formats which can be chosen from. + + Notes on possible datestamp formats + ----------------------------------- + check_from_filename : str + This option will add a datestamp to a file, if the year, month, and day + cannot be extracted from the standard declared filename. + append : str + This will add a datestamp at the end of the file, regardless of if it + can be extracted from the file or not. + """ + + def _check_datestamp_method_is_allowed(self, datestamp_method): + """ + Ensures that the datestamp method is in the defined valid set. + """ + if datestamp_method not in self._allowed_datestamp_methods: + raise ValueError( + "The datestamp_method must be defined as one of never, always, or avoid_overwrite" + ) + + def _check_datestamp_format_is_allowed(self, datestamp_format): + """ + Ensures that the datestamp format is in the defined valid set. + """ + if datestamp_format not in self._allowed_datestamp_formats: + raise ValueError( + "The datestamp_format must be defined as one of check_from_filename or append" + ) + + def _path_type(self, path: pathlib.Path) -> FileStatus: + """ + Checks if the given ``path`` exists. If it does returns it's type, if it + doesn't, returns ``None``. + + Parameters + ---------- + path : pathlib.Path + Path to be checked. + + Returns + ------- + Enum value + One of the values from FileType enumeration + + Raises + ------ + TypeError + - when ``path`` has incompatible type + - when ``path`` is not identified + """ + if not isinstance(path, (str, pathlib.Path)): + datatype = type(path).__name__ + raise TypeError( + f"Path ``{path}`` has an incompatible datatype ``{datatype}``. str or pathlib.Path is expected" + ) + + path = pathlib.Path(path) + + # NOTE: is_symlink() needs to come first because it is also a is_file() + # NOTE: pathlib.Path().exists() also checks is the target of a symbolic link exists or not + if path.is_symlink() and not path.exists(): + return FileStatus.BROKEN_LINK + elif not path.exists(): + return FileStatus.NOT_EXISTS + elif path.is_symlink(): + return FileStatus.LINK + elif path.is_file(): + return FileStatus.FILE + elif path.is_dir(): + return FileStatus.DIR + else: + # probably, this will not happen + raise TypeError(f"{path} can not be identified") + + def _always_datestamp(self, fname) -> pathlib.Path: + """ + Method called when ``always`` is the ``datestamp_method. + + Appends the datestamp in any case if ``datestamp_format`` is + ``append``. Appends the datestamp only if it is not obviously in the + filename if the ``datestamp_format`` is ``check_from_filename``. Only + appends to files or links, not directories. + + Parameters + ---------- + fname : pathlib.Path + The file who's name should be modified. + + Returns + ------- + pathlib.Path + A modified file with an added date stamp. + """ + if fname.is_dir(): + return fname + if self.datestamp_format == "append": + return pathlib.Path(f"{fname}_{self._sim_date}") + if self.datestamp_format == "check_from_filename": + if _fname_has_date_stamp_info(fname, self._sim_date): + return fname + else: + return pathlib.Path(f"{fname}_{self._sim_date}") + raise DatestampFormatError( + "Unknown Datestamp formatting type, please use `append` or `check_from_filename`" + ) + + def _avoid_override_datestamp(self, target: pathlib.Path) -> pathlib.Path: + """ + If source and target are identical, adds the date stamp to the target. + + This method is used in the case that the object's attribute + ``datestamp_method`` is set to ``avoid_overwrite``, and is called + before the checks of each of ln, cp, and mv. + + Parameters + ---------- + target : pathlib.Path + + Returns + ------- + pathlib.Path : + The new target that can be used + """ + if target.exists() and not target.is_dir(): + if self.datestamp_format == "append": + target = pathlib.Path(f"{target}_{self._sim_date}") + # The other case ("check_from_filename") is meaningless? + return target + + @staticmethod + def _wild_card_check(source_pattern: list, target_pattern: list) -> bool: + """ + Checks for syntax mistakes. If any were found, it notifies the user about these + errors in the syntax using ``esm_parser.error``. + + Parameters + ---------- + source_pattern : list + A list including the different pieces of the source name pattern + target_pattern : list + A list including the different pieces of the target name pattern + + Returns + ------- + bool : + If no issues were found + """ + target_and_source_patterns_match = len(target_pattern) == len(source_pattern) + if not target_and_source_patterns_match: + user_error( + "Wild card", + ( + "The wild card pattern of the source " + + f"``{source_pattern}`` does not match with the " + + f"target ``{target_pattern}``. Make sure the " + + f"that the number of ``*`` are the same in both " + + f"sources and targets." + ), + ) + + return target_and_source_patterns_match + + def _find_globbing_files(self, location: str) -> list: + """ + Lists the files matching the globbing path of the given ``location``, and + notifies the user if none were found, via ``esm_parser.user_error``. + + Parameters + ---------- + location : str + The location string (``work``, ``computer``, ``exp_tree``, ``run_tree``) + + Returns + ------- + glob_paths : list + List of paths found matching the globbing case for the ``location`` pattern + """ + absolute_path_in_location = str(self[f"absolute_path_in_{location}"]) + glob_paths = glob.glob(absolute_path_in_location) + + # Check that there are any source files available + if len(glob_paths) == 0: + user_error( + "Globbing", + f"No files found for the globbing pattern " + f"``{absolute_path_in_location}``.", + ) + + return glob_paths + + def _check_source_and_target( + self, source_path: pathlib.Path, target_path: pathlib.Path + ) -> None: + """ + Performs common checks for file movements + + Parameters + ---------- + source_path : pathlib.Path + path of the file to be copied / linked / moved + + target_path : pathlib.Path + path of the file to be generated + + Returns + ------- + True + + Raises + ------ + Exception + - If the ``source_path`` does not exist + - If the ``target_path`` exists + - If the parent dir of the ``target_path`` does not exist + """ + # Types. Eg. file, dir, link, or None + source_path_type = self._path_type(source_path) + target_path_type = self._path_type(target_path) + + # Checks + # ------ + # Source does not exist + if source_path_type == FileStatus.NOT_EXISTS: + err_msg = f"Unable to perform file operation. Source ``{source_path}`` does not exist!" + raise FileNotFoundError(err_msg) + + # Target already exists + target_exists = ( + os.path.exists(target_path) or target_path_type == FileStatus.LINK + ) + if target_exists: + err_msg = f"Unable to perform file operation. Target ``{target_path}`` already exists" + raise FileExistsError(err_msg) + + # Target parent directory does not exist + if not target_path.parent.exists(): + # TODO: we might consider creating it (Miguel) + err_msg = f"Unable to perform file operation. Parent directory of the target ``{target_path}`` does not exist" + raise FileNotFoundError(err_msg) + + # if source is a broken link. Ie. pointing to a non-existing file + if source_path_type == FileStatus.BROKEN_LINK: + err_msg = f"Unable to create symbolic link: ``{source_path}`` points to a broken path: {source_path.resolve()}" + raise FileNotFoundError(err_msg) + + +class DatedSimulationFile(SimulationFile): + """A SimultionFile which also needs to know about dates""" + + def __init__( + self, + date=Date("2000-01-01"), + **kwargs, + ): + super().__init__(**kwargs) + self._sim_date = date + + @classmethod + def from_config(cls, full_config: dict, attrs_address: str, date: Date): + obj = super().from_config(full_config, attrs_address) + obj._sim_date = date + return obj + + +def _pretty_filedict(name, filedict): + """ + Returns a string in yaml format of the given file dictionary. + + Parameters + ---------- + dict + A file dictionary + + Returns + ------- + str + A string in yaml format of the given file dictionary + """ + return yaml.dump({"files": {name: filedict}}) + + +def copy_files(config): + """Copies files""" + # PG: No. We do not want this kind of general function. This is just to + # demonstrate how the test would work + return config + + +class SimulationFileCollection(dict): + """ + Once instanciated, searches in the ``config`` dictionary for the ``files`` keys. + This class contains the methods to: 1) instanciate each of the files defined in + ``files`` as ``SimulationFile`` objects and 2) loop through these objects + triggering the desire file movement. + """ + + def __init__(self): + pass + + # PG: Not sure I need this... + @property + def _defined_from(self): + stack = inspect.stack() + caller_frame = stack[1] # Get the frame of the caller + caller_name = caller_frame.function + return caller_name + + @classmethod + def from_config(cls, config: dict): + sim_files = cls() + for component in config["general"]["valid_model_names"]: + config_address = f"{component}.files" + for file_key in dpath.util.get( + config, config_address, separator="." + ).keys(): + sim_files[file_key] = SimulationFile.from_config( + config, f"{config_address}.{file_key}" + ) + return sim_files + + def _gather_file_movements(self) -> None: + """Puts the methods for each file movement into the dictionary as callable values behind the `_filesystem_op` key""" + for sim_file_id, sim_file_obj in self.items(): + movement_type = sim_file_obj.get("movement_type", "cp") + if movement_type == "mv": + self[sim_file_id]["_filesystem_op"] = getattr(sim_file_obj, "mv") + elif movement_type == "cp": + self[sim_file_id]["_filesystem_op"] = getattr(sim_file_obj, "cp") + elif movement_type == "ln": + self[sim_file_id]["_filesystem_op"] = getattr(sim_file_obj, "ln") + else: + raise ValueError( + f"Movement Type is not defined correctly, please use `mv`, `cp` or `ln` for {sim_file_id}" + ) + + def execute_filesystem_operation( + self, config: ConfigSetup + ) -> ConfigSetup: # , from: pathlib.Path | str, to: pathlib.Path | str) -> None: + self._gather_file_movements() + for sim_file_id, sim_file_obj in self.items(): + logger.info(f"Processing {sim_file_id}") + if config["general"]["jobtype"] == "prepcompute": + src, dest = "pool", "work" + elif config["general"]["jobtype"] == "tidy": + src, dest = "work", "exp_tree" + else: + raise ValueError(f"Incorrect jobtype specified for {sim_file_obj}") + sim_file_obj["_filesystem_op"](src, dest) + return config + + +def resolve_file_movements(config: ConfigSetup) -> ConfigSetup: + """ + Runs all methods required to get files into their correct locations. This will + instantiate the ``SimulationFiles`` class. It's called by the recipe manager. + + Parameters + ---------- + config : ConfigSetup + The complete simulation configuration. + + Returns + ------- + config : ConfigSetup + The complete simulation configuration, potentially modified. + """ + sim_file_collection = SimulationFileCollection.from_config(config) + config = sim_file_collection.execute_filesystem_operation(config) + return config diff --git a/tests/test_esm_calendar/test_esm_calendar.py b/tests/test_esm_calendar/test_esm_calendar.py new file mode 100644 index 000000000..b65ec0aee --- /dev/null +++ b/tests/test_esm_calendar/test_esm_calendar.py @@ -0,0 +1,18 @@ +""" +Unit tests for esm_calendar +""" + +import pytest + +import esm_calendar + +def test_date_is_in_interval(): + """ + Checks that a date falls into an interval while another doesn't + """ + date1 = esm_calendar.Date("1949-12-31") + date2 = esm_calendar.Date("1950-01-01") + interval = (esm_calendar.Date("1850-01-01"), esm_calendar.Date("1950-01-01")) + + assert date1.is_in_interval(interval) + assert date2.is_in_interval(interval) == False diff --git a/tests/test_esm_runscripts/awicm3_config.yaml b/tests/test_esm_runscripts/awicm3_config.yaml new file mode 100644 index 000000000..0459b1b4e --- /dev/null +++ b/tests/test_esm_runscripts/awicm3_config.yaml @@ -0,0 +1,3637 @@ +computer: + GribApiLib: none + GribApiRoot: none + GribSamples: none + OpenMP_CCDEFS: _OPENMP + OpenMP_flag: -qopenmp + account: None + accounting: false + actual_script_dir: <--methods.script_dir-- + add_choose_heterogeneous_parallelization: &id001 + false: + cpu_bind: cores + srun_execution_command: srun -l --kill-on-bad-exit=1 --cpu_bind=none --multi-prog hostfile_srun + true: + choose_taskset: + false: + launcher_comp_sep: '\ + + :' + launcher_flags_per_component: --nodes=@nnodes@ --ntasks=@nproc@ --ntasks-per-node=@nproc_per_node@ --cpus-per-task=@cpus_per_proc@ --export=ALL,OMP_NUM_THREADS=@omp_num_threads@ + srun_execution_command: 'srun -l --kill-on-bad-exit=1 --cpu_bind=none \ + + @components@' + true: + srun_execution_command: srun -l --kill-on-bad-exit=1 --cpu_bind=none --multi-prog hostfile_srun + cpu_bind: none + additional_flags: [] + batch_system: slurm + c++_lib: stdc++ + cc: mpiicc + check_error: + 'slurmstepd: error: execve():': + file: stdout + frequency: 600 + message: 'SLURM ERROR: slurm probably didn''t find executable' + method: kill + 'srun: error:': + file: stdout + frequency: 30 + message: 'SLURM ERROR: slurm ended with an error, exiting.' + method: kill + choose_heterogeneous_parallelization: *id001 + config_files: + hostfile: hostfile_srun + cpu_bind: none + cxx: mpiicpc + debug_info: + loaded_from_file: + - /home/ollie/mandresm/esm_tools/configs//machines/ollie.yaml + debugger: None + debugger_flags_prelauncher: '' + exclusive_flag: --exclusive + execution_command: srun -l --kill-on-bad-exit=1 --cpu_bind=none --multi-prog hostfile_srun + export_vars: + CC: mpiicc + CXX: mpiicpc + F77: '"mpiifort -mkl"' + FC: '"mpiifort -mkl"' + HDF5ROOT: $HDF5_ROOT + IO_LIB_ROOT: '' + LAPACK_LIB: '"-lmkl_intel_lp64 -lmkl_core -mkl=sequential -lpthread -lm -ldl"' + LAPACK_LIB_DEFAULT: '"-L/global/AWIsoft/intel/2018/compilers_and_libraries_2018.5.274/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential"' + LC_ALL: en_US.UTF-8 + MPICC: mpiicc + MPIFC: mpiifort + MPIROOT: ${I_MPI_ROOT}/intel64 + MPI_LIB: $(mpiifort -show |sed -e 's/^[^ ]*//' -e 's/-[I][^ ]*//g') + NETCDFFROOT: $NETCDF_DIR + NETCDFROOT: $NETCDF_DIR + NETCDF_CXX_INCLUDE_DIRECTORIES: $NETCDFROOT/include + NETCDF_CXX_LIBRARIES: $NETCDFROOT/lib + NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFROOT/include + PATH: /work/ollie/jhegewal/sw/cmake/bin:$PATH + PERL5LIB: /usr/lib64/perl5 + XML2ROOT: /usr + ZLIBROOT: /usr + f77: '"mpiifort -mkl"' + fc: '"mpiifort -mkl"' + header_start: '#SBATCH' + heterogeneous_parallelization: true + hetjob_flag: packjob + hostname_list: DUMMY_HOST1 DUMMY_HOST2 + hyper_flag: '' + iolibraries: awi_libs + jobtype: unknown + launcher: srun + launcher_flags: -l --kill-on-bad-exit=1 --cpu_bind=none + logical_cpus_per_core: 2 + mail1: --mail-type=NONE + mail2: '' + mail_type: NONE + model: computer + module_actions: + - source /etc/profile.d/modules.sh + - purge + - load cmake + - load udunits + - load gribapi/1.28.0 + - unload intel.compiler + - load intel.compiler + - unload netcdf + - load hdf5 + - load centoslibs cdo nco netcdf/4.6.2_intel + - load automake + - load python3/3.7.7_intel2020u2 + - load git + - list + - unload intel.mpi + - load intel.mpi + mpicc: mpiicc + mpifc: mpiifort + mt_launcher_flag: '' + name: ollie + name_flag: --job-name=awicm3-v3.1-TCO95L91-CORE2_initial + nodes_flag: --nodes=@nodes@ + nothing: much + notification_flag: --mail-type=NONE + operating_system: linux-centos + output_flags: --output=/work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/awicm3-v3.1-TCO95L91-CORE2_initial_awicm3_@jobtype@_20000101-20000101_%j.log --error=/work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/awicm3-v3.1-TCO95L91-CORE2_initial_awicm3_@jobtype@_20000101-20000101_%j.log + output_path: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/ + overcommit_flag: '' + overcommit_nodes: None + overcommit_rule: '' + partition_flag: --partition=@partition@ + partitions: + compute: + cores_per_node: 36 + name: mpp + pp: + cores_per_node: 1 + name: smp + pool_dir: /work/ollie/pool + pool_directories: + focipool: /dev/null + pool: /work/ollie/pool + projects: /work/ollie/projects + runtime_environment_changes: + add_export_vars: + ACCOUNT: None + ESM_TESTING_DIR: /work/ollie/mandresm/testing//run/awicm3/ + MODEL_DIR: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1 + script_name: <--methods.scriptname-- + sh_interpreter: /usr/bin/bash + single_proc_submit_flag: --ntasks-per-node=1 + srun_execution_command: srun -l --kill-on-bad-exit=1 --cpu_bind=none --multi-prog hostfile_srun + submit: sbatch + submitted: false + tasks_flag: --ntasks=@tasks@ + taskset: true + taskset_chs: '' + thisrun_logfile: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/awicm3-v3.1-TCO95L91-CORE2_initial_awicm3_@jobtype@_20000101-20000101_%j.log + threads_per_core: 1 + time_flag: --time=01:00:00 + unset_vars: + - SLURM_MEM_PER_NODE + - SLURM_MEM_PER_CPU + - SLURM_DISTRIBUTION + - SLURM_NTASKS + - SLURM_NPROCS + - SLURM_ARBITRARY_NODELIST + useMPI: intelmpi +debug_info: + loaded_from_file: + - /home/ollie/mandresm/esm_tools/configs//setups/awicm3/awicm3.yaml +defaults: + clean_command: rm -rf build CMakeCache.txt + comp_command: mkdir -p build; cd build; cmake ..; make install -j `nproc --all` + debug_info: + loaded_from_file: /home/ollie/mandresm/esm_tools/configs//defaults/download_and_compile.yaml +fesom: + add_config_files: + cvmix: cvmix + add_config_sources: + cvmix: /home/ollie/mandresm/esm_tools/namelists//fesom2/2.0/awicm3/v3.1//namelist.cvmix + all_filetypes: + - analysis + - bin + - config + - forcing + - input + - couple + - log + - mon + - outdata + - restart_in + - restart_out + - viz + - ignore + asforcing: CORE2 + awicm3_fields: + - ist_feom + - sia_feom + bin_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/bin + bin_intermediate: + fesom: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/bin/fesom/fesom + bin_sources: + fesom: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/bin/fesom.x + bin_targets: + fesom: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/fesom + branch: 2.0.2 + branchoff: false + clean_command: rm -rf build CMakeCache.txt + climate_data_dir: /work/ollie/jstreffi/input/fesom2//hydrography/ + comp_command: mkdir -p build; cd build; cmake -DOIFS_COUPLED=ON -DFESOM_COUPLED=ON ..; make install -j `nproc --all` + comp_executable: fesom.x + compiletime_environment_changes: + add_export_vars: + taken2from: fesom2_compile + config_intermediate: + config: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/fesom/namelist.config + cvmix: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/fesom/namelist.cvmix + fesom.clock: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/fesom/fesom.clock + forcing: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/fesom/namelist.forcing + ice: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/fesom/namelist.ice + io: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/fesom/namelist.io + oce: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/fesom/namelist.oce + config_sources: + config: /home/ollie/mandresm/esm_tools/namelists//fesom2/2.0/awicm3/v3.1//namelist.config + cvmix: /home/ollie/mandresm/esm_tools/namelists//fesom2/2.0/awicm3/v3.1//namelist.cvmix + fesom.clock: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/fesom//fesom.clock + forcing: /home/ollie/mandresm/esm_tools/namelists//fesom2/2.0/awicm3/v3.1//namelist.forcing + ice: /home/ollie/mandresm/esm_tools/namelists//fesom2/2.0/awicm3/v3.1//namelist.ice + io: /home/ollie/mandresm/esm_tools/namelists//fesom2/2.0/awicm3/v3.1//namelist.io + oce: /home/ollie/mandresm/esm_tools/namelists//fesom2/2.0/awicm3/v3.1//namelist.oce + config_targets: + config: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/namelist.config + cvmix: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/namelist.cvmix + fesom.clock: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/fesom.clock + forcing: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/namelist.forcing + ice: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/namelist.ice + io: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/namelist.io + oce: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/namelist.oce + coupling_fields: + enth_oce: + grid: feom + evap_oce: + grid: feom + heat_ico: + grid: feom + heat_oce: + grid: feom + heat_swo: + grid: feom + hydr_oce: + grid: feom + ist_feom: + grid: feom + prec_oce: + grid: feom + sia_feom: + grid: feom + sie_feom: + grid: feom + sit_feom: + grid: feom + snow_oce: + grid: feom + snt_feom: + grid: feom + sst_feom: + grid: feom + subl_oce: + grid: feom + taux_ico: + grid: feom + taux_oce: + grid: feom + tauy_ico: + grid: feom + tauy_oce: + grid: feom + u_feom: + grid: feom + v_feom: + grid: feom + coupling_freq_in_steps: 3 + create_config: + fesom.clock: + - <--append-- 0.0000000000000 1 2000 + - <--append-- 0.0000000000000 1 2000 + currentday: 1 + daynew: 1 + debug_info: + loaded_from_file: /home/ollie/mandresm/esm_tools/configs//components/fesom/fesom-2.0.yaml + destination: fesom-2.0 + executable: fesom + experiment_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/analysis/fesom/ + experiment_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/bin/fesom/ + experiment_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/config/fesom/ + experiment_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/couple/fesom/ + experiment_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/forcing/fesom/ + experiment_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/ignore/fesom/ + experiment_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/input/fesom/ + experiment_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/fesom/ + experiment_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/mon/fesom/ + experiment_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/outdata/fesom/ + experiment_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/fesom/ + experiment_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/fesom/ + experiment_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/viz/fesom/ + file_movements: + analysis: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + bin: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + config: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + couple: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + fesom_raw_restart_in: + exp_to_run: move + init_to_exp: move + run_to_work: move + work_to_run: move + fesom_raw_restart_info_in: + exp_to_run: move + init_to_exp: move + run_to_work: move + work_to_run: move + fesom_raw_restart_info_out: + exp_to_run: move + init_to_exp: move + run_to_work: move + work_to_run: move + fesom_raw_restart_out: + exp_to_run: move + init_to_exp: move + run_to_work: move + work_to_run: move + forcing: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + ignore: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + input: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + log: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + mon: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + outdata: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_in: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_out: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + scripts: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + unknown: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + viz: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + forcing_data_dir: '' + git-repository: + - https://github.com/FESOM/fesom2.git + - https://gitlab.dkrz.de/FESOM/fesom2.git + grids: + feom: + name: feom + number_of_overlapping_points: 0 + nx: 126858 + ny: 1 + oasis_grid_type: U + ini_data_dir: /work/ollie/jstreffi/input/fesom2//pool-data/ + install_bins: bin/fesom.x + last_parent_date: '1999-12-31T22:40:00' + lasttime: 84000 + leapyear: true + log_intermediate: + clock: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/fesom/fesom.clock + mesh_diag: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/fesom/fesom.mesh.diag.nc + log_sources: + clock: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//fesom.clock + mesh_diag: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//fesom.mesh.diag.nc + log_targets: + clock: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/log/fesom/fesom.clock + mesh_diag: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/log/fesom/fesom.mesh.diag.nc + lresume: false + mesh_dir: /work/ollie/jstreffi/input/fesom2//core2/ + mesh_rotated: false + model: fesom + model_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/fesom-2.0 + namelist_changes: + namelist.config: + calendar: + include_fleapyear: true + clockinit: + daynew: 1 + yearnew: 2000 + inout: + output_length: 1 + output_length_unit: d + restartflag: last + paths: + ClimateDataPath: /work/ollie/jstreffi/input/fesom2//hydrography/ + MeshPath: /work/ollie/jstreffi/input/fesom2//core2/ + ResultPath: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ + restart_log: + restart_length: 1 + restart_length_unit: d + timestep: + run_length: 1 + run_length_unit: d + step_per_day: 36 + namelist.io: + nml_list: + io_list: + - sst + - 1 + - d + - 4 + namelist.oce: + oce_tra: + surf_relax_s: 0 + namelist_dir: /home/ollie/mandresm/esm_tools/namelists//fesom2/2.0/awicm3/v3.1/ + namelists: + - namelist.config + - namelist.forcing + - namelist.oce + - namelist.ice + - namelist.io + - namelist.cvmix + nproc: 288 + nx: 126858 + old_mesh_format: false + omp_num_threads: 1 + opbnd_dir: '' + outdata_intermediate: {} + outdata_sources: {} + outdata_sources_wild_card: + fesom: '*.fesom.*.nc' + outdata_targets: {} + parent_date: '1999-12-31T23:20:00' + parent_expid: awicm3-v3.1-TCO95L91-CORE2_initial + parent_restart_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/fesom/ + pool_dir: /work/ollie/jstreffi/input/fesom2/ + prev_date: '1999-12-31T23:20:00' + resolution: CORE2 + restart_first: 1 + restart_flag: last + restart_out_intermediate: + ice_restart: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/fesom/fesom.2000.ice.restart.nc + oce_restart: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/fesom/fesom.2000.oce.restart.nc + restart_out_sources: + ice_restart: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//fesom.2000.ice.restart.nc + oce_restart: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//fesom.2000.oce.restart.nc + restart_out_sources_wild_card: + fesom_raw_restart: '*.dump' + fesom_raw_restart_info: '*.info' + par_ice_restart: '*.nc' + par_oce_restart: '*.nc' + restart_out_targets: + ice_restart: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/fesom/fesom.2000.ice.restart.nc + oce_restart: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/fesom/fesom.2000.oce.restart.nc + restart_rate: 1 + restart_unit: d + rnproc: 288 + runtime_environment_changes: + add_export_vars: + taken2from: fesom2_ru + takenfrom: fesom2_run + setup_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1 + startday: 1 + starttime: 0 + steps_per_day: 36 + surf_relax_s: 0 + thisrun_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/analysis/fesom/ + thisrun_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/bin/fesom/ + thisrun_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/fesom/ + thisrun_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/couple/fesom/ + thisrun_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/forcing/fesom/ + thisrun_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/ignore/fesom/ + thisrun_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/fesom/ + thisrun_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/fesom/ + thisrun_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/mon/fesom/ + thisrun_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/fesom/ + thisrun_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/fesom/ + thisrun_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/fesom/ + thisrun_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/viz/fesom/ + tide_forcing_dir: '' + time_dimension: time + time_step: 2400 + type: ocean + version: 2 + with_part_format: false + yearnew: 2000 +general: + account: None + add_compiletime_environment_changes: + choose_computer.fc: &id002 + ftn: + add_export_vars: + - OASIS_FFLAGS=-emf + choose_computer.name: + levante: + add_export_vars: + OASIS_FFLAGS: '"-march=core-avx2 -mtune=core-avx2"' + additional_files: [] + all_filetypes: + - analysis + - config + - log + - mon + - couple + - scripts + - ignore + - unknown + - src + - work + all_model_filetypes: + - analysis + - bin + - config + - forcing + - input + - couple + - log + - mon + - outdata + - restart_in + - restart_out + - viz + - ignore + available_versions: + - v3.0 + - v3.1 + - master + - frontiers + - frontiers-xios + base_dir: /work/ollie/mandresm/testing//run/awicm3/ + batch: slurm + calendar: esm_calendar object with allowed leap years + check: true + chunk_number: 1 + command_line_config: + check: true + current_date: null + expid: awicm3-v3.1-TCO95L91-CORE2_initial + ignore_config_warnings: false + inspect: null + jobtype: prepcompute + last_jobtype: prepcompute + launcher_pid: -666 + no_motd: true + original_command: awicm3-v3.1-TCO95L91-CORE2_initial.yaml -e awicm3-v3.1-TCO95L91-CORE2_initial --open-run -c --no-motd --last-jobtype prepcompute + profile: false + run_number: null + runscript_abspath: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/scripts/awicm3-v3.1-TCO95L91-CORE2_initial.yaml + scriptname: awicm3-v3.1-TCO95L91-CORE2_initial.yaml + started_from: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/scripts/ + update: false + update_filetypes: [] + use_venv: false + verbose: false + compiletime_environment_changes: + choose_computer.fc: *id002 + choose_computer.name: + aleph: + add_export_vars: + GRIB_SAMPLES_PATH: '"$GRIBAPIROOT/share/grib_api/ifs_samples/grib1_mlgrib2/"' + LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$ECCODESROOT/lib:$PROJ4_DIR/lib + OIFS_CC: mpiicc + OIFS_CCDEFS: '"LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS"' + OIFS_CFLAGS: '"-emf -O2 -hcpu=x86-skylake"' + OIFS_FC: '"mpiifort -mkl"' + OIFS_FCDEFS: '"BLAS LITTLE LINUX INTEGER_IS_INT"' + OIFS_FFIXED: '"-s real64"' + OIFS_FFLAGS: '"-O2 -emf -hthread1 -hflex_mp=conservative -hfp1 -hadd_paren -hbyteswapio -J./ -hcpu=x86-skylake -U_CRAYFTN"' + OIFS_FFTW_INCLUDE: '''-I$FFTW_INC''' + OIFS_FFTW_LIB: '''-L$FFTW_DIR -ldfftw -ldrfftw''' + OIFS_GRIB_API_BIN: '"$ECCODESROOT/bin"' + OIFS_GRIB_API_INCLUDE: '"-I$ECCODESROOT/include"' + OIFS_GRIB_API_LIB: '"-L$ECCODESROOT/lib -leccodes_f90 -leccodes"' + OIFS_GRIB_INCLUDE: '"$OIFS_GRIB_API_INCLUDE"' + OIFS_GRIB_LIB: '"$OIFS_GRIB_API_LIB"' + OIFS_LFLAGS: '"-dynamic -hbyteswapio"' + OIFS_NETCDFF_INCLUDE: -I$NETCDF_DIR/include + OIFS_NETCDFF_LIB: '"-L$NETCDF_DIR/lib -lnetcdff"' + OIFS_NETCDF_INCLUDE: -I$NETCDF_DIR/include + OIFS_NETCDF_LIB: '"-L$NETCDF_DIR/lib -lnetcdf"' + OIFS_OASIS_BASE: $(pwd)/oasis + OIFS_OASIS_INCLUDE: '"-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu"' + OIFS_OASIS_LIB: '"-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip"' + OIFS_XIOS_LIB_NAME: stdc++ + blogin: + add_export_vars: + - LAPACK_LIB='-mkl=sequential' + - LAPACK_LIB_DEFAULT='-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - OIFS_FFTW_DIR='-L$MKLROOT/lib/intel64' + - OIFS_FFTW_INCLUDE='-I$OIFS_FFTW_DIR/include/' + - OIFS_FFTW_LIB='-L$OIFS_FFTW_DIR/lib/ -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - ESM_NETCDF_C_DIR=$NETCDFROOT + - ESM_NETCDF_F_DIR=$NETCDFFROOT + - OIFS_GRIB_API_INCLUDE="-I$ECCODESROOT/include" + - OIFS_GRIB_API_LIB="-L$ECCODESROOT/lib -leccodes_f90 -leccodes" + - OIFS_GRIB_INCLUDE="$OIFS_GRIB_API_INCLUDE" + - OIFS_GRIB_LIB="$OIFS_GRIB_API_LIB" + - OIFS_GRIB_API_BIN="$ECCODESROOT/bin" + - LAPACK_LIB_DEFAULT="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential" + - OIFS_OASIS_BASE=$(pwd)/oasis + - OIFS_OASIS_INCLUDE="-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu" + - OIFS_OASIS_LIB="-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip" + - OIFS_NETCDF_INCLUDE="-I$NETCDFROOT/include" + - OIFS_NETCDF_LIB="-L$NETCDFROOT/lib -lnetcdf" + - OIFS_NETCDFF_INCLUDE="-I$NETCDFFROOT/include" + - OIFS_NETCDFF_LIB="-L$NETCDFFROOT/lib -lnetcdff" + - OIFS_FC=$FC + - OIFS_FFLAGS="-r8 -fp-model precise -align array32byte -O1 -xCORE_AVX2 -g -traceback -convert big_endian -fpe0" + - OIFS_FFIXED="" + - OIFS_FCDEFS="BLAS LITTLE LINUX INTEGER_IS_INT" + - OIFS_LFLAGS=$OIFS_MPI_LIB + - OIFS_CC=$CC + - OIFS_CFLAGS="-fp-model precise -O1 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0" + - OIFS_CCDEFS="LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS" + glogin: + add_export_vars: + - LAPACK_LIB='-mkl=sequential' + - LAPACK_LIB_DEFAULT='-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - OIFS_FFTW_DIR='-L$MKLROOT/lib/intel64' + - OIFS_FFTW_INCLUDE='-I$OIFS_FFTW_DIR/include/' + - OIFS_FFTW_LIB='-L$OIFS_FFTW_DIR/lib/ -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - ESM_NETCDF_C_DIR=$NETCDFROOT + - ESM_NETCDF_F_DIR=$NETCDFFROOT + - OIFS_GRIB_API_INCLUDE="-I$ECCODESROOT/include" + - OIFS_GRIB_API_LIB="-L$ECCODESROOT/lib -leccodes_f90 -leccodes" + - OIFS_GRIB_INCLUDE="$OIFS_GRIB_API_INCLUDE" + - OIFS_GRIB_LIB="$OIFS_GRIB_API_LIB" + - OIFS_GRIB_API_BIN="$ECCODESROOT/bin" + - LAPACK_LIB_DEFAULT="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential" + - OIFS_OASIS_BASE=$(pwd)/oasis + - OIFS_OASIS_INCLUDE="-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu" + - OIFS_OASIS_LIB="-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip" + - OIFS_NETCDF_INCLUDE="-I$NETCDFROOT/include" + - OIFS_NETCDF_LIB="-L$NETCDFROOT/lib -lnetcdf -lnetcdff" + - OIFS_NETCDFF_INCLUDE="-I$NETCDFFROOT/include" + - OIFS_NETCDFF_LIB="-L$NETCDFFROOT/lib -lnetcdff" + - OIFS_FC=$FC + - OIFS_FFLAGS="-r8 -fp-model precise -align array32byte -O1 -xCORE_AVX2 -g -traceback -convert big_endian -fpe0" + - OIFS_FFIXED="" + - OIFS_FCDEFS="BLAS LITTLE LINUX INTEGER_IS_INT" + - OIFS_LFLAGS=$OIFS_MPI_LIB + - OIFS_CC=$CC + - OIFS_CFLAGS="-fp-model precise -O1 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0" + - OIFS_CCDEFS="LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS" + juwels: + add_export_vars: + - ESM_NETCDF_C_DIR=$NETCDFROOT + - ESM_NETCDF_F_DIR=$NETCDFFROOT + - OIFS_GRIB_API_INCLUDE="-I$ECCODESROOT/include" + - OIFS_GRIB_API_LIB="-L$ECCODESROOT/lib -leccodes_f90 -leccodes" + - OIFS_GRIB_INCLUDE="$OIFS_GRIB_API_INCLUDE" + - OIFS_GRIB_LIB="$OIFS_GRIB_API_LIB" + - OIFS_GRIB_API_BIN="$ECCODESROOT/bin" + - LAPACK_LIB_DEFAULT="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential" + - OIFS_OASIS_BASE=$(pwd)/oasis + - OIFS_OASIS_INCLUDE="-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu" + - OIFS_OASIS_LIB="-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip" + - OIFS_NETCDF_INCLUDE="-I$NETCDFROOT/include" + - OIFS_NETCDF_LIB="-L$NETCDFROOT/lib -lnetcdf" + - OIFS_NETCDFF_INCLUDE="-I$NETCDFFROOT/include" + - OIFS_NETCDFF_LIB="-L$NETCDFFROOT/lib -lnetcdff" + - OIFS_FC=$FC + - OIFS_FFLAGS="-r8 -fp-model precise -align array32byte -O1 -qopenmp -xCORE_AVX2 -g -traceback -convert big_endian -fpe0" + - OIFS_FFIXED="" + - OIFS_FCDEFS="BLAS LITTLE LINUX INTEGER_IS_INT" + - OIFS_LFLAGS="$OIFS_MPI_LIB -qopenmp" + - OIFS_CC=$CC + - OIFS_CFLAGS="-fp-model precise -O3 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0 -qopenmp" + - OIFS_CCDEFS="LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS _OPENMP" + - MAIN_LDFLAGS=-openmp + levante: + add_export_vars: + ECCODESROOT: /work/ab0246/HPC_libraries/intel-oneapi-compilers/2022.0.1-gcc-11.2.0/openmpi/4.1.2-intel-2021.5.0 + ESM_NETCDF_C_DIR: $NETCDFROOT + ESM_NETCDF_F_DIR: $NETCDFFROOT + HDF5ROOT: /sw/spack-levante/hdf5-1.12.1-tvymb5 + HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include + HDF5_ROOT: $HDF5ROOT + LAPACK_LIB_DEFAULT: '"-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential"' + NETCDFFROOT: /sw/spack-levante/netcdf-fortran-4.5.3-k6xq5g + NETCDFROOT: /sw/spack-levante/netcdf-c-4.8.1-2k3cmu + NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include + NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include + OASIS3MCT_FC_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OASIS_FFLAGS: '"-march=core-avx2 -mtune=core-avx2"' + OIFS_CC: $CC + OIFS_CCDEFS: '"LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS _OPENMP"' + OIFS_CFLAGS: '"-fp-model precise -O3 -g -traceback -qopt-report=0 -fpe0 -qopenmp -march=core-avx2 -mtune=core-avx2"' + OIFS_FC: $FC + OIFS_FCDEFS: '"BLAS LITTLE LINUX INTEGER_IS_INT"' + OIFS_FFIXED: '""' + OIFS_FFLAGS: '"-r8 -fp-model precise -align array32byte -O3 -qopenmp -g -traceback -convert big_endian -march=core-avx2 -mtune=core-avx2"' + OIFS_GRIB_API_BIN: '"$ECCODESROOT/bin"' + OIFS_GRIB_API_INCLUDE: '"-I$ECCODESROOT/include"' + OIFS_GRIB_API_LIB: '"-L$ECCODESROOT/lib64 -leccodes_f90 -leccodes"' + OIFS_GRIB_INCLUDE: '"$OIFS_GRIB_API_INCLUDE"' + OIFS_GRIB_LIB: '"$OIFS_GRIB_API_LIB"' + OIFS_LFLAGS: '"$OIFS_MPI_LIB -qopenmp"' + OIFS_MPI_LIB: '"$MPI_LIB"' + OIFS_NETCDFF_INCLUDE: '"-I$NETCDFFROOT/include"' + OIFS_NETCDFF_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_NETCDF_INCLUDE: '"-I$NETCDFROOT/include"' + OIFS_NETCDF_LIB: '"-L$NETCDFROOT/lib -lnetcdf"' + OIFS_OASIS_BASE: $(pwd)/oasis + OIFS_OASIS_INCLUDE: '"-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu"' + OIFS_OASIS_LIB: '"-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip"' + SZIPROOT: /sw/spack-levante/libaec-1.0.5-gij7yv + add_module_actions: + - load libaec/1.0.5-intel-2021.5.0 + mistral: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + ESM_NETCDF_C_DIR: $NETCDFROOT + ESM_NETCDF_F_DIR: $NETCDFFROOT + FFTW_ROOT: /sw/rhel6-x64/numerics/fftw-3.3.7-openmp-gcc64 + GRIBAPIROOT: none + GRIBROOT: none + GRIB_SAMPLES_PATH: '"$GRIBAPIROOT/share/none/ifs_samples/grib1_mlgrib2/"' + LAPACK_LIB_DEFAULT[(1)]: '"-L$MKLROOT -lmkl_intel_lp64 -lmkl_core -lmkl_sequential"' + LD_LIBRARY_PATH[(2)]: $LD_LIBRARY_PATH:$GRIBAPIROOT/lib:$PROJ4_ROOT/lib:$FFTW_ROOT/lib:$SZIPROOT/lib + MKLROOT: /sw/rhel6-x64/intel/intel-18.0.4/compilers_and_libraries_2018/linux/mkl/lib/intel64/ + OIFS_CC: $CC + OIFS_CCDEFS: '"LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS"' + OIFS_CFLAGS: '"-fp-model precise -O3 -qopenmp -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0"' + OIFS_FC: $FC + OIFS_FCDEFS: '"BLAS LITTLE LINUX INTEGER_IS_INT"' + OIFS_FFIXED: '""' + OIFS_FFLAGS: '"-r8 -fp-model precise -align array32byte -O3 -qopenmp -xCORE_AVX2 -g -traceback -convert big_endian -fpe0"' + OIFS_FFTW_DIR: '"$FFTW_ROOT"' + OIFS_FFTW_INCLUDE: '"-I$OIFS_FFTW_DIR/include/"' + OIFS_FFTW_LIB: '"-L$OIFS_FFTW_DIR/lib/ -lfftw3f"' + OIFS_GRIB_API_BIN: '"$GRIBAPIROOT/bin"' + OIFS_GRIB_API_INCLUDE: '"-I$GRIBAPIROOT/include"' + OIFS_GRIB_API_LIB: '"none"' + OIFS_GRIB_INCLUDE: '"$OIFS_GRIB_API_INCLUDE"' + OIFS_GRIB_LIB: '"$OIFS_GRIB_API_LIB"' + OIFS_LFLAGS: '"$OIFS_MPI_LIB -qopenmp"' + OIFS_NETCDFF_INCLUDE: '"-I$NETCDFFROOT/include"' + OIFS_NETCDFF_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_NETCDF_INCLUDE: '"-I$NETCDFROOT/include"' + OIFS_NETCDF_LIB: '"-L$NETCDFROOT/lib -lnetcdf"' + OIFS_OASIS_BASE: $(pwd)/oasis + OIFS_OASIS_INCLUDE: '"-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu"' + OIFS_OASIS_LIB: '"-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip"' + PATH[(2)]: /sw/rhel6-x64/gcc/binutils-2.24-gccsys/bin:${PATH} + PATH[(3)]: $PATH:/mnt/lustre01/sw/rhel6-x64/devtools/fcm-2017.10.0/bin/ + PROJ4_ROOT: /sw/rhel6-x64/graphics/proj4-4.9.3-gcc48 + UDUNITS2_ROOT: /sw/rhel6-x64/util/udunits-2.2.26-gcc64 + nesh: + add_export_vars: + - LAPACK_LIB='-mkl=sequential' + - LAPACK_LIB_DEFAULT='-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - OIFS_FFTW_DIR='-L$MKLROOT/lib/intel64' + - OIFS_FFTW_INCLUDE='-I$OIFS_FFTW_DIR/include/' + - OIFS_FFTW_LIB='-L$OIFS_FFTW_DIR/lib/ -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - ESM_NETCDF_C_DIR=$NETCDFROOT + - ESM_NETCDF_F_DIR=$NETCDFFROOT + - OIFS_GRIB_API_INCLUDE="-I$ECCODESROOT/include" + - OIFS_GRIB_API_LIB="-L$ECCODESROOT/lib -leccodes_f90 -leccodes" + - OIFS_GRIB_INCLUDE="$OIFS_GRIB_API_INCLUDE" + - OIFS_GRIB_LIB="$OIFS_GRIB_API_LIB" + - OIFS_GRIB_API_BIN="$ECCODESROOT/bin" + - LAPACK_LIB_DEFAULT="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential" + - OIFS_OASIS_BASE=$(pwd)/oasis + - OIFS_OASIS_INCLUDE="-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu" + - OIFS_OASIS_LIB="-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip" + - OIFS_NETCDF_INCLUDE="-I$NETCDFROOT/include" + - OIFS_NETCDF_LIB="-L$NETCDFROOT/lib -lnetcdf" + - OIFS_NETCDFF_INCLUDE="-I$NETCDFFROOT/include" + - OIFS_NETCDFF_LIB="-L$NETCDFFROOT/lib -lnetcdff" + - OIFS_FC=$FC + - OIFS_FFLAGS="-r8 -fp-model precise -align array32byte -O1 -xCORE_AVX2 -g -traceback -convert big_endian -fpe0" + - OIFS_FFIXED="" + - OIFS_FCDEFS="BLAS LITTLE LINUX INTEGER_IS_INT" + - OIFS_LFLAGS=$OIFS_MPI_LIB + - OIFS_CC=$CC + - OIFS_CFLAGS="-fp-model precise -O1 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0" + - OIFS_CCDEFS="LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS" + compiler_mpi: intel2020_impi2020 + ollie: + add_export_vars: + ECCODESROOT: $IO_LIB_ROOT + ESM_NETCDF_C_DIR: $NETCDFROOT + ESM_NETCDF_F_DIR: $NETCDFFROOT + HDF5ROOT: $IO_LIB_ROOT + HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include + HDF5_ROOT: $HDF5ROOT + IO_LIB_ROOT: /work/ollie/jstreffi/software/HPC_libraries/intel2018.0.5_intelmpi_2021.3.0_20220623 + LAPACK_LIB_DEFAULT: '"-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential"' + LD_LIBRARY_PATH: $IO_LIB_ROOT/lib:$LD_LIBRARY_PATH + NETCDFFROOT: $IO_LIB_ROOT + NETCDFROOT: $IO_LIB_ROOT + NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include + NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include + OASIS3MCT_FC_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_CC: $CC + OIFS_CCDEFS: '"LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS _OPENMP"' + OIFS_CFLAGS: '"-fp-model precise -O3 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0 -qopenmp"' + OIFS_FC: $FC + OIFS_FCDEFS: '"BLAS LITTLE LINUX INTEGER_IS_INT"' + OIFS_FFIXED: '""' + OIFS_FFLAGS: '"-r8 -fp-model precise -align array32byte -O3 -qopenmp -xCORE_AVX2 -g -traceback -convert big_endian"' + OIFS_GRIB_API_BIN: '"$ECCODESROOT/bin"' + OIFS_GRIB_API_INCLUDE: '"-I$ECCODESROOT/include"' + OIFS_GRIB_API_LIB: '"-L$ECCODESROOT/lib -leccodes_f90 -leccodes"' + OIFS_GRIB_INCLUDE: '"$OIFS_GRIB_API_INCLUDE"' + OIFS_GRIB_LIB: '"$OIFS_GRIB_API_LIB"' + OIFS_LFLAGS: '"$OIFS_MPI_LIB -qopenmp"' + OIFS_NETCDFF_INCLUDE: '"-I$NETCDFFROOT/include"' + OIFS_NETCDFF_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_NETCDF_INCLUDE: '"-I$NETCDFROOT/include"' + OIFS_NETCDF_LIB: '"-L$NETCDFROOT/lib -lnetcdf"' + OIFS_OASIS_BASE: $(pwd)/oasis + OIFS_OASIS_INCLUDE: '"-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu"' + OIFS_OASIS_LIB: '"-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip"' + SZIPROOT: $IO_LIB_ROOT + add_module_actions: + - purge + - load intel.mpi/2021.3.0 intel.compiler cmake + compute_time: 01:00:00 + coupled_setup: true + coupler: oasis3mct + coupler_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/oasis3mct/ + couplings: + - fesom-2.0-awicm-3.1+oifs-43r3-awicm-3.1+xios-2.5 + current_date: '2000-01-01T00:00:00' + debug_info: + loaded_from_file: + - /home/ollie/mandresm/esm_tools/configs//defaults/general.yaml + - /home/ollie/mandresm/esm_tools/configs//components/oasis3mct/oasis3mct.env.yaml + defaults.yaml: + debug_info: + loaded_from_file: /home/ollie/mandresm/esm_tools/configs//esm_software/esm_runscripts/defaults.yaml + per_model_defaults: {} + delta_date: + - 0 + - 0 + - 1 + - 0 + - 0 + - 0 + dr_hook_ignore_signals: -1 + end_date: '2000-01-01T00:00:00' + environment_changes: + GribApiLib: none + GribApiRoot: none + GribSamples: none + OpenMP_CCDEFS: '' + OpenMP_flag: '' + c++_lib: none + choose_computer.useMPI: + '*': + c++_lib: none + cray_mpich: + c++_lib: cray-c++-rts + intelmpi: + c++_lib: stdc++ + choose_computer.name: + mistral: + GribApiLib: -L$GRIBAPIROOT/lib -lgrib_api_f90 -lgrib_api + GribApiRoot: /sw/rhel6-x64/grib_api/grib_api-1.15.0-intel14 + GribSamples: grib_api + openmpi: + choose_computer.name: + mistral: + GribApiLib: -L$GRIBAPIROOT/lib -lgrib_api_f90 -lgrib_api + GribApiRoot: /pf/a/a270092/ecmwf/grib_api_intel_modulegcc + GribSamples: grib_api + add_export_vars: + DR_HOOK: 1 + DR_HOOK_OPT: prof + DR_HOOK_PROFILE_LIMIT: 0.5 + HDF5_DISABLE_VERSION_CHECK: 1 + OIFS_DUMMY_ACTION: ABORT + esm_function_dir: /home/ollie/mandresm/esm_tools/configs/ + esm_namelist_dir: /home/ollie/mandresm/esm_tools/namelists/ + esm_runscript_dir: /home/ollie/mandresm/esm_tools/runscripts/ + experiment_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/analysis/ + experiment_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/config/ + experiment_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/couple/ + experiment_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial + experiment_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/ignore/ + experiment_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/ + experiment_log_file: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log//awicm3-v3.1-TCO95L91-CORE2_initial_awicm3.log + experiment_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/mon/ + experiment_scripts_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/scripts/ + experiment_src_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/src/ + experiment_unknown_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/unknown/ + expid: awicm3-v3.1-TCO95L91-CORE2_initial + file_movements: + analysis: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + bin: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + config: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + couple: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + forcing: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + ignore: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + input: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + log: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + mon: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + outdata: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_in: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_out: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + scripts: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + unknown: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + viz: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + final_date: '2000-01-04T00:00:00' + first_run_in_chunk: true + further_reading: + - xios/xios.env.yaml + ignore_config_warnings: false + in_filetypes: + - scripts + - input + - forcing + - bin + - config + - restart_in + include_models: + - xios + initial_date: '2000-01-01T00:00:00' + inspect: null + isinteractive: false + jobid: 110052 + jobtype: prepcompute + last_jobtype: prepcompute + last_run_datestamp: 19991231-19991231 + last_run_in_chunk: false + last_start_date: '1999-12-31T00:00:00' + launcher_pid: -666 + leapyear: true + logfile_path: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log//awicm3-v3.1-TCO95L91-CORE2_initial_awicm3_prepcompute_20000101-20000101.log + logfile_path_in_run: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log//awicm3-v3.1-TCO95L91-CORE2_initial_awicm3_prepcompute_20000101-20000101.log + lresume: false + model: awicm3 + model_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1 + models: + - fesom + - oifs + - rnfmap + - oasis3mct + - xios + nday: 1 + next_date: '2000-01-02T00:00:00' + nhour: 0 + nminute: 0 + nmonth: 0 + no_motd: true + nsecond: 0 + nyear: 0 + original_command: awicm3-v3.1-TCO95L91-CORE2_initial.yaml -e awicm3-v3.1-TCO95L91-CORE2_initial --open-run -c --no-motd --last-jobtype prepcompute + out_filetypes: + - analysis + - log + - mon + - scripts + - ignore + - unknown + - outdata + - restart_out + pool_dir: /work/ollie/jstreffi/input + post_time: 00:05:00 + postprocessing: false + potentially_reusable_filetypes: + - analysis + - config + - log + - mon + - couple + - scripts + - ignore + - unknown + - src + - scripts + - input + - forcing + - bin + - config + - restart_in + prepcompute_recipe: + - compile_model + - _show_simulation_info + - create_new_files + - create_empty_folders + - prepare_coupler_files + - assemble + - log_used_files + - _write_finalized_config + - copy_files_to_thisrun + - write_env + - preprocess + - modify_namelists + - modify_files + - copy_files_to_work + - report_missing_files + - add_vcs_info + - check_vcs_info_against_last_run + - database_entry + - oasis_rmp_rst_to_input + prev_date: '1999-12-31T00:00:00' + profile: false + relevant_filetypes: + - bin + - config + - forcing + - input + - restart_in + reset_calendar_to_last: false + resolution: TCO95_CORE2 + reusable_filetypes: + - input + - bin + - src + run_datestamp: 20000101-20000101 + run_number: 1 + run_or_compile: runtime + runscript_abspath: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/scripts/awicm3-v3.1-TCO95L91-CORE2_initial.yaml + runtime: + - 0 + - 0 + - 1 + - 24 + - 1440 + - 86400 + runtime_environment_changes: + choose_computer.name: + aleph: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + GRIB_SAMPLES_PATH: '"$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/"' + LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$ECCODESROOT/lib:$PROJ4_DIR/lib + PATH: $ECCODESROOT/bin:${PATH} + blogin: + add_export_vars: + - OIFS_FFIXED="" + - GRIB_SAMPLES_PATH="$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/" + - DR_HOOK_IGNORE_SIGNALS=-1 + - OMP_SCHEDULE=STATIC + - OMP_STACKSIZE=128M + add_module_actions: + - source $I_MPI_ROOT/intel64/bin/mpivars.sh release_mt + glogin: + add_export_vars: + - OIFS_FFIXED="" + - GRIB_SAMPLES_PATH="$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/" + - DR_HOOK_IGNORE_SIGNALS=-1 + - OMP_SCHEDULE=STATIC + - OMP_STACKSIZE=128M + add_module_actions: + - source $I_MPI_ROOT/intel64/bin/mpivars.sh release_mt + juwels: + add_export_vars: + - OIFS_FFIXED="" + - GRIB_SAMPLES_PATH="$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/" + - DR_HOOK_IGNORE_SIGNALS=-1 + - OMP_SCHEDULE=STATIC + - OMP_STACKSIZE=128M + - MAIN_LDFLAGS=-openmp + levante: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + ECCODESROOT: /work/ab0246/HPC_libraries/intel-oneapi-compilers/2022.0.1-gcc-11.2.0/openmpi/4.1.2-intel-2021.5.0 + GRIB_SAMPLES_PATH: '"$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2"' + HDF5ROOT: /sw/spack-levante/hdf5-1.12.1-tvymb5 + HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include + HDF5_ROOT: $HDF5ROOT + LD_LIBRARY_PATH[(3)]: $ECCODESROOT/lib:$LD_LIBRARY_PATH + NETCDFFROOT: /sw/spack-levante/netcdf-fortran-4.5.3-k6xq5g + NETCDFROOT: /sw/spack-levante/netcdf-c-4.8.1-2k3cmu + NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include + NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include + OIFS_FFIXED: '""' + OMP_SCHEDULE: STATIC + OMP_STACKSIZE: 128M + PATH: $ECCODESROOT/bin:$PATH + SZIPROOT: /sw/spack-levante/libaec-1.0.5-gij7yv + mistral: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + FFTW_ROOT: /sw/rhel6-x64/numerics/fftw-3.3.7-openmp-gcc64 + GRIBAPIROOT: none + GRIB_SAMPLES_PATH: '"$GRIBAPIROOT/share/none/ifs_samples/grib1_mlgrib2/"' + LD_LIBRARY_PATH[(2)]: $LD_LIBRARY_PATH:$GRIBAPIROOT/lib:$PROJ4_ROOT/lib:$FFTW_ROOT/lib + MPI_BUFS_PER_PROC: 256 + OIFS_FFIXED: '""' + OMP_SCHEDULE: STATIC + OMP_STACKSIZE: 128M + PATH[(2)]: $GRIBAPIROOT/bin:${PATH} + PATH[(3)]: /sw/rhel6-x64/gcc/binutils-2.24-gccsys/bin:${PATH} + PROJ4_ROOT: /sw/rhel6-x64/graphics/proj4-4.9.3-gcc48 + UDUNITS2_ROOT: /sw/rhel6-x64/util/udunits-2.2.26-gcc64 + nesh: + add_export_vars: + - OIFS_FFIXED="" + - GRIB_SAMPLES_PATH="$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/" + - DR_HOOK_IGNORE_SIGNALS=-1 + add_module_actions: + - source $I_MPI_ROOT/intel64/bin/mpivars.sh release_mt + compiler_mpi: intel2020_impi2020 + ollie: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + ECCODESROOT: $IO_LIB_ROOT + GRIB_SAMPLES_PATH: '"$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2"' + HDF5ROOT: $IO_LIB_ROOT + HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include + HDF5_ROOT: $HDF5ROOT + IO_LIB_ROOT: /work/ollie/jstreffi/software/HPC_libraries/intel2018.0.5_intelmpi_2021.3.0_20220623 + LD_LIBRARY_PATH: $IO_LIB_ROOT/lib:$LD_LIBRARY_PATH + NETCDFFROOT: $IO_LIB_ROOT + NETCDFROOT: $IO_LIB_ROOT + NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include + NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include + OASIS3MCT_FC_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_FFIXED: '""' + OMP_SCHEDULE: STATIC + OMP_STACKSIZE: 128M + PATH[(2)]: $PATH:$IO_LIB_ROOT/bin + SZIPROOT: $IO_LIB_ROOT + add_module_actions: + - unload gribapi + - unload hdf5 + - unload intel.mpi + - load intel.mpi/2021.3.0 + scenario: piControl + scriptname: awicm3-v3.1-TCO95L91-CORE2_initial.yaml + setup_name: awicm3 + standalone: false + start_date: '2000-01-01T00:00:00' + started_from: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/scripts/ + submitted: false + thisrun_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/analysis/ + thisrun_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/ + thisrun_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/couple/ + thisrun_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101 + thisrun_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/ignore/ + thisrun_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/ + thisrun_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/mon/ + thisrun_scripts_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/scripts/ + thisrun_src_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/src/ + thisrun_unknown_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/unknown/ + thisrun_work_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ + total_runtime: + - 0 + - 0 + - 1 + - 24 + - 1440 + - 86400 + update: false + update_filetypes: [] + use_database: false + use_venv: false + valid_model_names: + - fesom + - oifs + - rnfmap + - oasis3mct + - xios + valid_setup_names: + - computer + - general + - oifs + - fesom + - xios + - rnfmap + - oasis3mct + - debug_info + verbose: false + version: v3.1 + work_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ + workflow: + first_task_in_queue: prepcompute + last_task_in_queue: tidy + next_run_triggered_by: tidy + subjob_clusters: + compute: + batch_or_shell: batch + called_from: prepcompute + next_submit: + - tidy + nproc: 308 + order_in_cluster: sequential + run_before: tidy + run_on_queue: mpp + subjobs: + - compute_general + submit_to_batch_system: true + prepcompute: + batch_or_shell: SimulationSetup + called_from: tidy + next_submit: + - compute + nproc: 1 + order_in_cluster: sequential + run_before: compute + subjobs: + - prepcompute_general + submit_to_batch_system: false + tidy: + batch_or_shell: SimulationSetup + called_from: compute + next_submit: + - prepcompute + nproc: 1 + order_in_cluster: sequential + run_after: compute + subjobs: + - tidy_general + submit_to_batch_system: false + subjobs: + compute_general: + nproc: 308 + run_before: tidy + run_on_queue: mpp + subjob_cluster: compute + submit_to_batch_system: true + prepcompute_general: + nproc: 1 + run_before: compute + subjob_cluster: prepcompute + tidy_general: + nproc: 1 + run_after: compute + subjob_cluster: tidy +oasis3mct: + a2o_lag: 0 + a2o_seq: 2 + a2r_lag: 0 + add_compiletime_environment_changes: &id003 + choose_computer.fc: + ftn: + add_export_vars: + - OASIS_FFLAGS=-emf + choose_computer.name: + levante: + add_export_vars: + OASIS_FFLAGS: '"-march=core-avx2 -mtune=core-avx2"' + all_filetypes: + - analysis + - bin + - config + - forcing + - input + - couple + - log + - mon + - outdata + - restart_in + - restart_out + - viz + - ignore + available_versions: + - foci + - fociagrif + - ec-earth + - 2.8 + - 3 + - 4 + - 4.0-geomar + - 4.0-oifsdeck + - 4.0-awicm-frontiers + - 4.0-awicm-3.0 + - 4.0-awicm-3.1 + branch: v2.8 + cf_name_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oasis + clean_command: rm -rf build CMakeCache.txt include lib/libpsmile.a lib/libscrip.a lib/libmct.a lib/libmpeu.a + comp_command: mkdir -p build; cd build; cmake ..; make -j 1; mkdir -p ../include/; cp lib/psmile/libpsmile.a lib/psmile/mct/libmct.a lib/psmile/mct/mpeu/libmpeu.a lib/psmile/scrip/libscrip.a ../lib; cp lib/psmile/mod_oasis*mod ../include + compiletime_environment_changes: *id003 + config_intermediate: + cf: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/oasis3mct/cf_name_table.txt + namcouple: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/oasis3mct/namcouple + config_sources: + cf: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oasis/cf_name_table.txt + namcouple: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/oasis3mct//namcouple + config_targets: + cf: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/cf_name_table.txt + namcouple: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/namcouple + coupling_directions: + atma->feom: + lag: 0 + seq: 2 + atmr->rnfa: + lag: 0 + seq: 2 + feom->atma: + lag: 0 + seq: 2 + rnfo->feom: + lag: 0 + seq: 1 + coupling_methods: + bicubic: + remapping: + bicubic: + nb_of_search_bins: 15 + search_bin: latitude + time_transformation: average + bicubic_glb: + postprocessing: + conserv: + algorithm: opt + method: glbpos + remapping: + bicubic: + nb_of_search_bins: 15 + search_bin: latitude + time_transformation: average + bicubic_gss: + postprocessing: + conserv: + algorithm: opt + method: gsspos + remapping: + bicubic: + nb_of_search_bins: 15 + search_bin: latitude + time_transformation: average + gauswgt_c: + postprocessing: + conserv: + algorithm: opt + method: glbpos + remapping: + gauswgt: + nb_of_neighbours: 25 + nb_of_search_bins: 1 + search_bin: latitude + weight: 0.1 + time_transformation: conserv + gauswgt_gss: + postprocessing: + conserv: + algorithm: opt + method: gsspos + remapping: + gauswgt: + nb_of_neighbours: 25 + nb_of_search_bins: 1 + search_bin: latitude + weight: 0.1 + time_transformation: conserv + gauswgt_i: + remapping: + gauswgt: + nb_of_neighbours: 25 + nb_of_search_bins: 1 + search_bin: latitude + weight: 0.1 + time_transformation: instant + coupling_target_fields: + rstas.nc: + - heat_oce:heat_swo <--gauswgt_gss-- A_Qns_oce:A_Qs_all + - prec_oce:snow_oce:evap_oce:subl_oce <--gauswgt_gss-- A_Precip_liquid:A_Precip_solid:A_Evap:A_Subl + - heat_ico <--gauswgt_gss-- A_Q_ice + - taux_oce:tauy_oce:taux_ico:tauy_ico <--bicubic-- A_TauX_oce:A_TauY_oce:A_TauX_ice:A_TauY_ice + - R_Runoff_atm:R_Calving_atm <--gauswgt_gss-- A_Runoff:A_Calving + - hydr_oce:enth_oce <--gauswgt_gss-- R_Runoff_oce:R_Calving_oce + rstos.nc: + - A_SST:A_Ice_frac:A_Snow_thickness:A_Ice_temp:A_Ice_albedo <--gauswgt_i-- sst_feom:sie_feom:snt_feom:ist_feom:sia_feom + - A_CurX:A_CurY <--gauswgt_i-- u_feom:v_feom + coupling_time_step: 7200 + debug_info: + loaded_from_file: + - /home/ollie/mandresm/esm_tools/configs//components/oasis3mct/oasis3mct.yaml + destination: oasis + experiment_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/analysis/oasis3mct/ + experiment_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/bin/oasis3mct/ + experiment_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/config/oasis3mct/ + experiment_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/couple/oasis3mct/ + experiment_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/forcing/oasis3mct/ + experiment_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/ignore/oasis3mct/ + experiment_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/input/oasis3mct/ + experiment_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/oasis3mct/ + experiment_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/mon/oasis3mct/ + experiment_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/ + experiment_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/ + experiment_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/ + experiment_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/viz/oasis3mct/ + file_movements: + analysis: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + bin: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + config: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + couple: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + forcing: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + ignore: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + input: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + log: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + mon: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + outdata: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_in: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_out: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + scripts: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + unknown: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + viz: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + git-repository: https://gitlab.dkrz.de/modular_esm/oasis3-mct.git + ignore_intermediate: + nout: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/ignore/oasis3mct/nout.000000 + ignore_sources: + nout: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//nout.000000 + ignore_sources_wild_card: + debug.notroot: debug.notroot* + debug.root: debug.root* + lucia: lucia.* + ignore_targets: + nout: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/ignore/oasis3mct/nout.000000 + ini_parent_date: '19500101' + ini_parent_dir: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2/ + ini_parent_exp_id: khw0030 + ini_restart_dir: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2/ + input_dir: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2/ + input_intermediate: + areas: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oasis3mct/areas.nc + grids: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oasis3mct/grids.nc + masks: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oasis3mct/masks.nc + rmp_glob_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oasis3mct/rmp_A096_to_feom_BICUBIC.nc + rmp_glob_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oasis3mct/rmp_A096_to_feom_GAUSWGT.nc + rmp_glob_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oasis3mct/rmp_RnfO_to_feom_GAUSWGT.nc + rmp_glob_3: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oasis3mct/rmp_feom_to_A096_GAUSWGT.nc + rmp_glob_4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oasis3mct/rmp_R096_to_RnfA_GAUSWGT.nc + input_sources: + areas: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2//areas.nc + grids: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2//grids.nc + masks: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2//masks.nc + rmp_glob_0: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2//288/rmp_A096_to_feom_BICUBIC.nc + rmp_glob_1: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2//288/rmp_A096_to_feom_GAUSWGT.nc + rmp_glob_2: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2//288/rmp_RnfO_to_feom_GAUSWGT.nc + rmp_glob_3: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2//288/rmp_feom_to_A096_GAUSWGT.nc + rmp_glob_4: /work/ollie/jstreffi/input/oasis//cy43r3/TCO95-CORE2//288/rmp_R096_to_RnfA_GAUSWGT.nc + input_sources_wild_card: + rmp: rmp_*.nc + input_targets: + areas: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/areas.nc + grids: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/grids.nc + masks: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/masks.nc + rmp_glob_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/rmp_A096_to_feom_BICUBIC.nc + rmp_glob_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/rmp_A096_to_feom_GAUSWGT.nc + rmp_glob_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/rmp_RnfO_to_feom_GAUSWGT.nc + rmp_glob_3: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/rmp_feom_to_A096_GAUSWGT.nc + rmp_glob_4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/rmp_R096_to_RnfA_GAUSWGT.nc + install_libs: + - build/lib/psmile/libpsmile.a + - build/lib/psmile/mct/libmct.a + - build/lib/psmile/mct/mpeu/libmpeu.a + - build/lib/psmile/scrip/libscrip.a + lag: 0 + last_parent_date: '1999-12-31T20:00:00' + leapyear: true + log_intermediate: + debug_nr1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/oasis3mct/debug_notroot.01 + debug_nr2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/oasis3mct/debug_notroot.02 + debug_r1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/oasis3mct/debug.root.01 + debug_r2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/oasis3mct/debug.root.02 + nout: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/oasis3mct/nout.000000 + log_sources: + debug_nr1: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//debug_notroot.01 + debug_nr2: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//debug_notroot.02 + debug_r1: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//debug.root.01 + debug_r2: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//debug.root.02 + nout: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//nout.000000 + log_targets: + debug_nr1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/log/oasis3mct/debug_notroot.01 + debug_nr2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/log/oasis3mct/debug_notroot.02 + debug_r1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/log/oasis3mct/debug.root.01 + debug_r2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/log/oasis3mct/debug.root.02 + nout: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/log/oasis3mct/nout.000000 + lresume: false + mct_version: 4 + model: oasis3mct + model_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oasis + norestart: F + o2a_lag: 0 + o2a_seq: 2 + o2r_lag: 0 + o2r_seq: 1 + oasis_date_stamp: '' + outdata_intermediate: + A_Calving_oifs_05.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Calving_oifs_05.nc + A_CurX_oifs_08.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_CurX_oifs_08.nc + A_CurY_oifs_08.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_CurY_oifs_08.nc + A_Evap_oifs_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Evap_oifs_02.nc + A_Ice_albedo_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Ice_albedo_oifs_07.nc + A_Ice_frac_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Ice_frac_oifs_07.nc + A_Ice_temp_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Ice_temp_oifs_07.nc + A_Precip_liquid_oifs_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Precip_liquid_oifs_02.nc + A_Precip_solid_oifs_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Precip_solid_oifs_02.nc + A_Q_ice_oifs_03.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Q_ice_oifs_03.nc + A_Qns_oce_oifs_01.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Qns_oce_oifs_01.nc + A_Qs_all_oifs_01.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Qs_all_oifs_01.nc + A_Runoff_oifs_05.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Runoff_oifs_05.nc + A_SST_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_SST_oifs_07.nc + A_Snow_thickness_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Snow_thickness_oifs_07.nc + A_Subl_oifs_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_Subl_oifs_02.nc + A_TauX_ice_oifs_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_TauX_ice_oifs_04.nc + A_TauX_oce_oifs_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_TauX_oce_oifs_04.nc + A_TauY_ice_oifs_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_TauY_ice_oifs_04.nc + A_TauY_oce_oifs_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/A_TauY_oce_oifs_04.nc + R_Calving_atm_rnfma_05.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/R_Calving_atm_rnfma_05.nc + R_Calving_oce_rnfma_06.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/R_Calving_oce_rnfma_06.nc + R_Runoff_atm_rnfma_05.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/R_Runoff_atm_rnfma_05.nc + R_Runoff_oce_rnfma_06.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/R_Runoff_oce_rnfma_06.nc + enth_oce_fesom_06.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/enth_oce_fesom_06.nc + evap_oce_fesom_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/evap_oce_fesom_02.nc + heat_ico_fesom_03.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/heat_ico_fesom_03.nc + heat_oce_fesom_01.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/heat_oce_fesom_01.nc + heat_swo_fesom_01.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/heat_swo_fesom_01.nc + hydr_oce_fesom_06.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/hydr_oce_fesom_06.nc + ist_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/ist_feom_fesom_07.nc + prec_oce_fesom_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/prec_oce_fesom_02.nc + sia_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/sia_feom_fesom_07.nc + sie_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/sie_feom_fesom_07.nc + snow_oce_fesom_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/snow_oce_fesom_02.nc + snt_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/snt_feom_fesom_07.nc + sst_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/sst_feom_fesom_07.nc + subl_oce_fesom_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/subl_oce_fesom_02.nc + taux_ico_fesom_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/taux_ico_fesom_04.nc + taux_oce_fesom_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/taux_oce_fesom_04.nc + tauy_ico_fesom_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/tauy_ico_fesom_04.nc + tauy_oce_fesom_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/tauy_oce_fesom_04.nc + u_feom_fesom_08.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/u_feom_fesom_08.nc + v_feom_fesom_08.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/v_feom_fesom_08.nc + outdata_sources: + A_Calving_oifs_05.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Calving_oifs_05.nc + A_CurX_oifs_08.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_CurX_oifs_08.nc + A_CurY_oifs_08.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_CurY_oifs_08.nc + A_Evap_oifs_02.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Evap_oifs_02.nc + A_Ice_albedo_oifs_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Ice_albedo_oifs_07.nc + A_Ice_frac_oifs_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Ice_frac_oifs_07.nc + A_Ice_temp_oifs_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Ice_temp_oifs_07.nc + A_Precip_liquid_oifs_02.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Precip_liquid_oifs_02.nc + A_Precip_solid_oifs_02.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Precip_solid_oifs_02.nc + A_Q_ice_oifs_03.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Q_ice_oifs_03.nc + A_Qns_oce_oifs_01.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Qns_oce_oifs_01.nc + A_Qs_all_oifs_01.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Qs_all_oifs_01.nc + A_Runoff_oifs_05.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Runoff_oifs_05.nc + A_SST_oifs_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_SST_oifs_07.nc + A_Snow_thickness_oifs_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Snow_thickness_oifs_07.nc + A_Subl_oifs_02.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_Subl_oifs_02.nc + A_TauX_ice_oifs_04.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_TauX_ice_oifs_04.nc + A_TauX_oce_oifs_04.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_TauX_oce_oifs_04.nc + A_TauY_ice_oifs_04.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_TauY_ice_oifs_04.nc + A_TauY_oce_oifs_04.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//A_TauY_oce_oifs_04.nc + R_Calving_atm_rnfma_05.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//R_Calving_atm_rnfma_05.nc + R_Calving_oce_rnfma_06.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//R_Calving_oce_rnfma_06.nc + R_Runoff_atm_rnfma_05.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//R_Runoff_atm_rnfma_05.nc + R_Runoff_oce_rnfma_06.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//R_Runoff_oce_rnfma_06.nc + enth_oce_fesom_06.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//enth_oce_fesom_06.nc + evap_oce_fesom_02.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//evap_oce_fesom_02.nc + heat_ico_fesom_03.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//heat_ico_fesom_03.nc + heat_oce_fesom_01.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//heat_oce_fesom_01.nc + heat_swo_fesom_01.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//heat_swo_fesom_01.nc + hydr_oce_fesom_06.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//hydr_oce_fesom_06.nc + ist_feom_fesom_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//ist_feom_fesom_07.nc + prec_oce_fesom_02.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//prec_oce_fesom_02.nc + sia_feom_fesom_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//sia_feom_fesom_07.nc + sie_feom_fesom_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//sie_feom_fesom_07.nc + snow_oce_fesom_02.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//snow_oce_fesom_02.nc + snt_feom_fesom_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//snt_feom_fesom_07.nc + sst_feom_fesom_07.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//sst_feom_fesom_07.nc + subl_oce_fesom_02.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//subl_oce_fesom_02.nc + taux_ico_fesom_04.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//taux_ico_fesom_04.nc + taux_oce_fesom_04.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//taux_oce_fesom_04.nc + tauy_ico_fesom_04.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//tauy_ico_fesom_04.nc + tauy_oce_fesom_04.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//tauy_oce_fesom_04.nc + u_feom_fesom_08.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//u_feom_fesom_08.nc + v_feom_fesom_08.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//v_feom_fesom_08.nc + outdata_targets: + A_Calving_oifs_05.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Calving_oifs_05.nc + A_CurX_oifs_08.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_CurX_oifs_08.nc + A_CurY_oifs_08.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_CurY_oifs_08.nc + A_Evap_oifs_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Evap_oifs_02.nc + A_Ice_albedo_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Ice_albedo_oifs_07.nc + A_Ice_frac_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Ice_frac_oifs_07.nc + A_Ice_temp_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Ice_temp_oifs_07.nc + A_Precip_liquid_oifs_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Precip_liquid_oifs_02.nc + A_Precip_solid_oifs_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Precip_solid_oifs_02.nc + A_Q_ice_oifs_03.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Q_ice_oifs_03.nc + A_Qns_oce_oifs_01.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Qns_oce_oifs_01.nc + A_Qs_all_oifs_01.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Qs_all_oifs_01.nc + A_Runoff_oifs_05.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Runoff_oifs_05.nc + A_SST_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_SST_oifs_07.nc + A_Snow_thickness_oifs_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Snow_thickness_oifs_07.nc + A_Subl_oifs_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_Subl_oifs_02.nc + A_TauX_ice_oifs_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_TauX_ice_oifs_04.nc + A_TauX_oce_oifs_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_TauX_oce_oifs_04.nc + A_TauY_ice_oifs_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_TauY_ice_oifs_04.nc + A_TauY_oce_oifs_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/A_TauY_oce_oifs_04.nc + R_Calving_atm_rnfma_05.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/R_Calving_atm_rnfma_05.nc + R_Calving_oce_rnfma_06.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/R_Calving_oce_rnfma_06.nc + R_Runoff_atm_rnfma_05.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/R_Runoff_atm_rnfma_05.nc + R_Runoff_oce_rnfma_06.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/R_Runoff_oce_rnfma_06.nc + enth_oce_fesom_06.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/enth_oce_fesom_06.nc + evap_oce_fesom_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/evap_oce_fesom_02.nc + heat_ico_fesom_03.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/heat_ico_fesom_03.nc + heat_oce_fesom_01.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/heat_oce_fesom_01.nc + heat_swo_fesom_01.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/heat_swo_fesom_01.nc + hydr_oce_fesom_06.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/hydr_oce_fesom_06.nc + ist_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/ist_feom_fesom_07.nc + prec_oce_fesom_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/prec_oce_fesom_02.nc + sia_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/sia_feom_fesom_07.nc + sie_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/sie_feom_fesom_07.nc + snow_oce_fesom_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/snow_oce_fesom_02.nc + snt_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/snt_feom_fesom_07.nc + sst_feom_fesom_07.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/sst_feom_fesom_07.nc + subl_oce_fesom_02.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/subl_oce_fesom_02.nc + taux_ico_fesom_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/taux_ico_fesom_04.nc + taux_oce_fesom_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/taux_oce_fesom_04.nc + tauy_ico_fesom_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/tauy_ico_fesom_04.nc + tauy_oce_fesom_04.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/tauy_oce_fesom_04.nc + u_feom_fesom_08.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/u_feom_fesom_08.nc + v_feom_fesom_08.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oasis3mct/v_feom_fesom_08.nc + output_exchanged_vars: false + parent_date: '1999-12-31T22:00:00' + parent_expid: awicm3-v3.1-TCO95L91-CORE2_initial + parent_restart_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/ + pool_dir: /work/ollie/jstreffi/input/oasis/ + prev_date: '1999-12-31T22:00:00' + process_ordering: + - fesom + - oifs + - rnfmap + - xios + r2a_lag: 0 + r2a_seq: 2 + required_plugins: + - git+https://github.com/esm-tools-plugins/oasis_rmp_rst_to_input + restart_out_intermediate: + areas: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oasis3mct/areas.nc + grids: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oasis3mct/grids.nc + masks: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oasis3mct/masks.nc + rstas.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oasis3mct/rstas.nc + rstas.nc_recv: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oasis3mct/rstas.nc_recv + rstos.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oasis3mct/rstos.nc + rstos.nc_recv: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oasis3mct/rstos.nc_recv + restart_out_sources: + areas: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//areas.nc + grids: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//grids.nc + masks: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//masks.nc + rstas.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//rstas.nc + rstas.nc_recv: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//rstas.nc_recv + rstos.nc: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//rstos.nc + rstos.nc_recv: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//rstos.nc_recv + restart_out_sources_wild_card: + rmp: rmp_*.nc + restart_out_targets: + areas: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/areas.nc + grids: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/grids.nc + masks: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/masks.nc + rstas.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/rstas.nc + rstas.nc_recv: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/rstas.nc_recv + rstos.nc: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/rstos.nc + rstos.nc_recv: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/oasis3mct/rstos.nc_recv + rstas_file_name: rstas_uv + rstos_file_name: rstos_uv + thisrun_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/analysis/oasis3mct/ + thisrun_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/bin/oasis3mct/ + thisrun_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/oasis3mct/ + thisrun_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/couple/oasis3mct/ + thisrun_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/forcing/oasis3mct/ + thisrun_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/ignore/oasis3mct/ + thisrun_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oasis3mct/ + thisrun_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/oasis3mct/ + thisrun_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/mon/oasis3mct/ + thisrun_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oasis3mct/ + thisrun_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oasis3mct/ + thisrun_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oasis3mct/ + thisrun_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/viz/oasis3mct/ + time_step: 7200 + use_lucia: false + version: 2.8 +oifs: + ICMGG_INIT_name: _CORE2 + ICMSH_INIT_name: '' + a4xco2: false + add_prepcompute_recipe: + - oasis_rmp_rst_to_input + all_filetypes: + - analysis + - bin + - config + - forcing + - input + - couple + - log + - mon + - outdata + - restart_in + - restart_out + - viz + - ignore + awicm3_fields: + - A_Qns_oce + - A_Qs_all + - A_Precip_liquid + - A_Precip_solid + - A_Evap + - A_Subl + - A_Q_ice + - A_TauX_oce + - A_TauY_oce + - A_TauX_ice + - A_TauY_ice + - A_SST + - A_Ice_frac + - A_Snow_thickness + - A_Ice_temp + - A_Ice_albedo + - A_CurX + - A_CurY + bin_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/bin + bin_intermediate: + bin: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/bin/oifs/oifs + bin_sources: + bin: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/bin/oifs + bin_targets: + bin: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/oifs + branchoff: false + clim_dir: /work/ollie/jstreffi/input/oifs-43r3/../ + cmip5_data_dir: /work/ollie/jstreffi/input/oifs-43r3/../cmip5_data + cmip5_data_dir_nml: /work/ollie/jstreffi/input/oifs-43r3/cmip5-data + cmip6_data_dir: /work/ollie/jstreffi/input/oifs-43r3/../cmip6_data + cmip6_data_dir_nml: /work/ollie/jstreffi/input/oifs-43r3/cmip6-data + cmip_fix_year: 0 + compile_infos: + available_versions: + - 40r1 + - 43r3-master + - 43r3-awicm-3.0 + - 43r3-awicm-3.1 + - 43r3-awicm-frontiers + - 43r3-awicm-frontiers-xios + - 43r3 + - 40r1-foci + - 43r3-foci + - 40r1-agcm + - 43r3-v1 + choose_version: + 40r1: + branch: foci_conserv + 40r1-agcm: + compile_command: export OIFS_COMP=agcm; cd make; ../fcm/bin/fcm make -v -j8 -f oifs-agcm.cfg + 40r1-foci: + branch: foci_conserv + comp_command: cd make; ../fcm/bin/fcm make -v -j24 -f oifs.cfg + destination: 40r1 + 43r3: + branch: oifs-deck + comp_command: export OIFS_TOPLEVEL_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3; cd make; ../fcm/bin/fcm make -v -j8 -f oifs.cfg ; mv esm/oifs/bin/master.exe esm/oifs/bin/oifs + git-repository: https://gitlab.dkrz.de/ec-earth/oifs-43r3.git + install_bins: make/esm/oifs/bin/oifs + with_xios: false + 43r3-awicm-3.0: + branch: awicm3-frontiers-freeze-candidate-1 + comp_command: export OIFS_TOPLEVEL_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3; cd make; ../fcm/bin/fcm make -v -j8 -f oifs.cfg ; mv esm/oifs/bin/master.exe esm/oifs/bin/oifs + destination: oifs-43r3 + git-repository: https://gitlab.dkrz.de/ec-earth/oifs-43r3.git + install_bins: make/esm/oifs/bin/oifs + requires: + - oasis3mct-4.0-awicm-3.0 + with_xios: false + 43r3-awicm-3.1: + branch: awicm-3.1 + comp_command: export OIFS_TOPLEVEL_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3; export OIFS_XIOS=enable ; export OIFS_XIOS_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3/../xios ; export OIFS_XIOS_INCLUDE=-I//work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3/../xios/inc/; cd make; ../fcm/bin/fcm make -v -j8 -f oifs.fcm ; mv esm/oifs/bin/master.exe esm/oifs/bin/oifs + destination: oifs-43r3 + git-repository: https://gitlab.dkrz.de/ec-earth/oifs-43r3.git + install_bins: make/esm/oifs/bin/oifs + requires: + - oasis3mct-4.0-awicm-3.1 + with_xios: true + 43r3-awicm-frontiers: + branch: awicm-3-frontiers + comp_command: export OIFS_TOPLEVEL_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3; cd make; ../fcm/bin/fcm make -v -j8 -f oifs.cfg ; mv esm/oifs/bin/master.exe esm/oifs/bin/oifs + destination: oifs-43r3 + git-repository: https://gitlab.dkrz.de/ec-earth/oifs-43r3.git + install_bins: make/esm/oifs/bin/oifs + requires: + - oasis3mct-4.0-awicm-frontiers + with_xios: false + 43r3-awicm-frontiers-xios: + branch: awicm-3-frontiers-xios + comp_command: export OIFS_TOPLEVEL_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3; export OIFS_XIOS=enable ; export OIFS_XIOS_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3/../xios ; export OIFS_XIOS_INCLUDE=-I//work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3/../xios/inc/; cd make; ../fcm/bin/fcm make -v -j8 -f oifs.fcm ; mv esm/oifs/bin/master.exe esm/oifs/bin/oifs + destination: oifs-43r3 + git-repository: https://gitlab.dkrz.de/ec-earth/oifs-43r3.git + install_bins: make/esm/oifs/bin/oifs + requires: + - oasis3mct-4.0-awicm-frontiers + with_xios: true + 43r3-foci: + branch: master + comp_command: export OIFS_TOPLEVEL_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3; export OIFS_XIOS=enable ; export OIFS_XIOS_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3/../xios ; export OIFS_XIOS_INCLUDE=-I//work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3/../xios/inc/ ; cd make; ../fcm/bin/fcm make -v -j8 -f oifs.fcm ; mv esm/oifs/bin/master.exe esm/oifs/bin/oifs + git-repository: https://gitlab.dkrz.de/ec-earth/oifs-43r3.git + install_bins: make/esm/oifs/bin/oifs + requires: + - oasis3mct-4.0 + - xios-2.5_r1910 + 43r3-master: + branch: master + comp_command: export OIFS_TOPLEVEL_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3; cd make; ../fcm/bin/fcm make -v -j8 -f oifs.cfg ; mv esm/oifs/bin/master.exe esm/oifs/bin/oifs + destination: oifs-43r3 + git-repository: https://gitlab.dkrz.de/ec-earth/oifs-43r3.git + install_bins: make/esm/oifs/bin/oifs + requires: + - oasis3mct-4.0-awicm-frontiers + with_xios: false + 43r3-v1: + branch: master + comp_command: export OIFS_TOPLEVEL_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3; export OIFS_XIOS=enable ; export OIFS_XIOS_DIR=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3/../xios ; export OIFS_XIOS_INCLUDE=-I//work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3/../xios/inc/ ; cd make; ../fcm/bin/fcm make -v -j8 -f oifs.fcm ; mv esm/oifs/bin/master.exe esm/oifs/bin/oifs + git-repository: https://gitlab.dkrz.de/ec-earth/oifs-43r3.git + install_bins: make/esm/oifs/bin/oifs + requires: + - oasis3mct-4.0 + - xios-2.5_r1910_oifs + clean_command: rm -rf make/esm + comp_command: cd make; ../fcm/bin/fcm make -v -j8 -f oifs.cfg + git-repository: https://gitlab.dkrz.de/modular_esm/oifs-40r1.git + install_bins: make/esm/oifs/bin/master.exe + requires: + - oasis3mct-4.0 + compiletime_environment_changes: + choose_computer.name: + aleph: + add_export_vars: + GRIB_SAMPLES_PATH: '"$GRIBAPIROOT/share/grib_api/ifs_samples/grib1_mlgrib2/"' + LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$ECCODESROOT/lib:$PROJ4_DIR/lib + OIFS_CC: mpiicc + OIFS_CCDEFS: '"LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS"' + OIFS_CFLAGS: '"-emf -O2 -hcpu=x86-skylake"' + OIFS_FC: '"mpiifort -mkl"' + OIFS_FCDEFS: '"BLAS LITTLE LINUX INTEGER_IS_INT"' + OIFS_FFIXED: '"-s real64"' + OIFS_FFLAGS: '"-O2 -emf -hthread1 -hflex_mp=conservative -hfp1 -hadd_paren -hbyteswapio -J./ -hcpu=x86-skylake -U_CRAYFTN"' + OIFS_FFTW_INCLUDE: '''-I$FFTW_INC''' + OIFS_FFTW_LIB: '''-L$FFTW_DIR -ldfftw -ldrfftw''' + OIFS_GRIB_API_BIN: '"$ECCODESROOT/bin"' + OIFS_GRIB_API_INCLUDE: '"-I$ECCODESROOT/include"' + OIFS_GRIB_API_LIB: '"-L$ECCODESROOT/lib -leccodes_f90 -leccodes"' + OIFS_GRIB_INCLUDE: '"$OIFS_GRIB_API_INCLUDE"' + OIFS_GRIB_LIB: '"$OIFS_GRIB_API_LIB"' + OIFS_LFLAGS: '"-dynamic -hbyteswapio"' + OIFS_NETCDFF_INCLUDE: -I$NETCDF_DIR/include + OIFS_NETCDFF_LIB: '"-L$NETCDF_DIR/lib -lnetcdff"' + OIFS_NETCDF_INCLUDE: -I$NETCDF_DIR/include + OIFS_NETCDF_LIB: '"-L$NETCDF_DIR/lib -lnetcdf"' + OIFS_OASIS_BASE: $(pwd)/oasis + OIFS_OASIS_INCLUDE: '"-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu"' + OIFS_OASIS_LIB: '"-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip"' + OIFS_XIOS_LIB_NAME: stdc++ + blogin: + add_export_vars: + - LAPACK_LIB='-mkl=sequential' + - LAPACK_LIB_DEFAULT='-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - OIFS_FFTW_DIR='-L$MKLROOT/lib/intel64' + - OIFS_FFTW_INCLUDE='-I$OIFS_FFTW_DIR/include/' + - OIFS_FFTW_LIB='-L$OIFS_FFTW_DIR/lib/ -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - ESM_NETCDF_C_DIR=$NETCDFROOT + - ESM_NETCDF_F_DIR=$NETCDFFROOT + - OIFS_GRIB_API_INCLUDE="-I$ECCODESROOT/include" + - OIFS_GRIB_API_LIB="-L$ECCODESROOT/lib -leccodes_f90 -leccodes" + - OIFS_GRIB_INCLUDE="$OIFS_GRIB_API_INCLUDE" + - OIFS_GRIB_LIB="$OIFS_GRIB_API_LIB" + - OIFS_GRIB_API_BIN="$ECCODESROOT/bin" + - LAPACK_LIB_DEFAULT="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential" + - OIFS_OASIS_BASE=$(pwd)/oasis + - OIFS_OASIS_INCLUDE="-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu" + - OIFS_OASIS_LIB="-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip" + - OIFS_NETCDF_INCLUDE="-I$NETCDFROOT/include" + - OIFS_NETCDF_LIB="-L$NETCDFROOT/lib -lnetcdf" + - OIFS_NETCDFF_INCLUDE="-I$NETCDFFROOT/include" + - OIFS_NETCDFF_LIB="-L$NETCDFFROOT/lib -lnetcdff" + - OIFS_FC=$FC + - OIFS_FFLAGS="-r8 -fp-model precise -align array32byte -O1 -xCORE_AVX2 -g -traceback -convert big_endian -fpe0" + - OIFS_FFIXED="" + - OIFS_FCDEFS="BLAS LITTLE LINUX INTEGER_IS_INT" + - OIFS_LFLAGS=$OIFS_MPI_LIB + - OIFS_CC=$CC + - OIFS_CFLAGS="-fp-model precise -O1 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0" + - OIFS_CCDEFS="LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS" + iolibraries: geomar_libs + glogin: + add_export_vars: + - LAPACK_LIB='-mkl=sequential' + - LAPACK_LIB_DEFAULT='-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - OIFS_FFTW_DIR='-L$MKLROOT/lib/intel64' + - OIFS_FFTW_INCLUDE='-I$OIFS_FFTW_DIR/include/' + - OIFS_FFTW_LIB='-L$OIFS_FFTW_DIR/lib/ -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - ESM_NETCDF_C_DIR=$NETCDFROOT + - ESM_NETCDF_F_DIR=$NETCDFFROOT + - OIFS_GRIB_API_INCLUDE="-I$ECCODESROOT/include" + - OIFS_GRIB_API_LIB="-L$ECCODESROOT/lib -leccodes_f90 -leccodes" + - OIFS_GRIB_INCLUDE="$OIFS_GRIB_API_INCLUDE" + - OIFS_GRIB_LIB="$OIFS_GRIB_API_LIB" + - OIFS_GRIB_API_BIN="$ECCODESROOT/bin" + - LAPACK_LIB_DEFAULT="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential" + - OIFS_OASIS_BASE=$(pwd)/oasis + - OIFS_OASIS_INCLUDE="-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu" + - OIFS_OASIS_LIB="-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip" + - OIFS_NETCDF_INCLUDE="-I$NETCDFROOT/include" + - OIFS_NETCDF_LIB="-L$NETCDFROOT/lib -lnetcdf -lnetcdff" + - OIFS_NETCDFF_INCLUDE="-I$NETCDFFROOT/include" + - OIFS_NETCDFF_LIB="-L$NETCDFFROOT/lib -lnetcdff" + - OIFS_FC=$FC + - OIFS_FFLAGS="-r8 -fp-model precise -align array32byte -O1 -xCORE_AVX2 -g -traceback -convert big_endian -fpe0" + - OIFS_FFIXED="" + - OIFS_FCDEFS="BLAS LITTLE LINUX INTEGER_IS_INT" + - OIFS_LFLAGS=$OIFS_MPI_LIB + - OIFS_CC=$CC + - OIFS_CFLAGS="-fp-model precise -O1 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0" + - OIFS_CCDEFS="LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS" + iolibraries: geomar_libs + juwels: + add_export_vars: + - ESM_NETCDF_C_DIR=$NETCDFROOT + - ESM_NETCDF_F_DIR=$NETCDFFROOT + - OIFS_GRIB_API_INCLUDE="-I$ECCODESROOT/include" + - OIFS_GRIB_API_LIB="-L$ECCODESROOT/lib -leccodes_f90 -leccodes" + - OIFS_GRIB_INCLUDE="$OIFS_GRIB_API_INCLUDE" + - OIFS_GRIB_LIB="$OIFS_GRIB_API_LIB" + - OIFS_GRIB_API_BIN="$ECCODESROOT/bin" + - LAPACK_LIB_DEFAULT="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential" + - OIFS_OASIS_BASE=$(pwd)/oasis + - OIFS_OASIS_INCLUDE="-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu" + - OIFS_OASIS_LIB="-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip" + - OIFS_NETCDF_INCLUDE="-I$NETCDFROOT/include" + - OIFS_NETCDF_LIB="-L$NETCDFROOT/lib -lnetcdf" + - OIFS_NETCDFF_INCLUDE="-I$NETCDFFROOT/include" + - OIFS_NETCDFF_LIB="-L$NETCDFFROOT/lib -lnetcdff" + - OIFS_FC=$FC + - OIFS_FFLAGS="-r8 -fp-model precise -align array32byte -O1 -qopenmp -xCORE_AVX2 -g -traceback -convert big_endian -fpe0" + - OIFS_FFIXED="" + - OIFS_FCDEFS="BLAS LITTLE LINUX INTEGER_IS_INT" + - OIFS_LFLAGS="$OIFS_MPI_LIB -qopenmp" + - OIFS_CC=$CC + - OIFS_CFLAGS="-fp-model precise -O3 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0 -qopenmp" + - OIFS_CCDEFS="LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS _OPENMP" + - MAIN_LDFLAGS=-openmp + compiler_mpi: intel2022_ompi2022 + levante: + add_export_vars: + ECCODESROOT: /work/ab0246/HPC_libraries/intel-oneapi-compilers/2022.0.1-gcc-11.2.0/openmpi/4.1.2-intel-2021.5.0 + ESM_NETCDF_C_DIR: $NETCDFROOT + ESM_NETCDF_F_DIR: $NETCDFFROOT + HDF5ROOT: /sw/spack-levante/hdf5-1.12.1-tvymb5 + HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include + HDF5_ROOT: $HDF5ROOT + LAPACK_LIB_DEFAULT: '"-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential"' + NETCDFFROOT: /sw/spack-levante/netcdf-fortran-4.5.3-k6xq5g + NETCDFROOT: /sw/spack-levante/netcdf-c-4.8.1-2k3cmu + NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include + NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include + OASIS3MCT_FC_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_CC: $CC + OIFS_CCDEFS: '"LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS _OPENMP"' + OIFS_CFLAGS: '"-fp-model precise -O3 -g -traceback -qopt-report=0 -fpe0 -qopenmp -march=core-avx2 -mtune=core-avx2"' + OIFS_FC: $FC + OIFS_FCDEFS: '"BLAS LITTLE LINUX INTEGER_IS_INT"' + OIFS_FFIXED: '""' + OIFS_FFLAGS: '"-r8 -fp-model precise -align array32byte -O3 -qopenmp -g -traceback -convert big_endian -march=core-avx2 -mtune=core-avx2"' + OIFS_GRIB_API_BIN: '"$ECCODESROOT/bin"' + OIFS_GRIB_API_INCLUDE: '"-I$ECCODESROOT/include"' + OIFS_GRIB_API_LIB: '"-L$ECCODESROOT/lib64 -leccodes_f90 -leccodes"' + OIFS_GRIB_INCLUDE: '"$OIFS_GRIB_API_INCLUDE"' + OIFS_GRIB_LIB: '"$OIFS_GRIB_API_LIB"' + OIFS_LFLAGS: '"$OIFS_MPI_LIB -qopenmp"' + OIFS_MPI_LIB: '"$MPI_LIB"' + OIFS_NETCDFF_INCLUDE: '"-I$NETCDFFROOT/include"' + OIFS_NETCDFF_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_NETCDF_INCLUDE: '"-I$NETCDFROOT/include"' + OIFS_NETCDF_LIB: '"-L$NETCDFROOT/lib -lnetcdf"' + OIFS_OASIS_BASE: $(pwd)/oasis + OIFS_OASIS_INCLUDE: '"-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu"' + OIFS_OASIS_LIB: '"-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip"' + SZIPROOT: /sw/spack-levante/libaec-1.0.5-gij7yv + add_module_actions: + - load libaec/1.0.5-intel-2021.5.0 + iolibraries: system_libs + mistral: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + ESM_NETCDF_C_DIR: $NETCDFROOT + ESM_NETCDF_F_DIR: $NETCDFFROOT + FFTW_ROOT: /sw/rhel6-x64/numerics/fftw-3.3.7-openmp-gcc64 + GRIBAPIROOT: none + GRIBROOT: none + GRIB_SAMPLES_PATH: '"$GRIBAPIROOT/share/none/ifs_samples/grib1_mlgrib2/"' + LAPACK_LIB_DEFAULT[(1)]: '"-L$MKLROOT -lmkl_intel_lp64 -lmkl_core -lmkl_sequential"' + LD_LIBRARY_PATH[(2)]: $LD_LIBRARY_PATH:$GRIBAPIROOT/lib:$PROJ4_ROOT/lib:$FFTW_ROOT/lib:$SZIPROOT/lib + MKLROOT: /sw/rhel6-x64/intel/intel-18.0.4/compilers_and_libraries_2018/linux/mkl/lib/intel64/ + OIFS_CC: $CC + OIFS_CCDEFS: '"LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS"' + OIFS_CFLAGS: '"-fp-model precise -O3 -qopenmp -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0"' + OIFS_FC: $FC + OIFS_FCDEFS: '"BLAS LITTLE LINUX INTEGER_IS_INT"' + OIFS_FFIXED: '""' + OIFS_FFLAGS: '"-r8 -fp-model precise -align array32byte -O3 -qopenmp -xCORE_AVX2 -g -traceback -convert big_endian -fpe0"' + OIFS_FFTW_DIR: '"$FFTW_ROOT"' + OIFS_FFTW_INCLUDE: '"-I$OIFS_FFTW_DIR/include/"' + OIFS_FFTW_LIB: '"-L$OIFS_FFTW_DIR/lib/ -lfftw3f"' + OIFS_GRIB_API_BIN: '"$GRIBAPIROOT/bin"' + OIFS_GRIB_API_INCLUDE: '"-I$GRIBAPIROOT/include"' + OIFS_GRIB_API_LIB: '"none"' + OIFS_GRIB_INCLUDE: '"$OIFS_GRIB_API_INCLUDE"' + OIFS_GRIB_LIB: '"$OIFS_GRIB_API_LIB"' + OIFS_LFLAGS: '"$OIFS_MPI_LIB -qopenmp"' + OIFS_NETCDFF_INCLUDE: '"-I$NETCDFFROOT/include"' + OIFS_NETCDFF_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_NETCDF_INCLUDE: '"-I$NETCDFROOT/include"' + OIFS_NETCDF_LIB: '"-L$NETCDFROOT/lib -lnetcdf"' + OIFS_OASIS_BASE: $(pwd)/oasis + OIFS_OASIS_INCLUDE: '"-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu"' + OIFS_OASIS_LIB: '"-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip"' + PATH[(2)]: /sw/rhel6-x64/gcc/binutils-2.24-gccsys/bin:${PATH} + PATH[(3)]: $PATH:/mnt/lustre01/sw/rhel6-x64/devtools/fcm-2017.10.0/bin/ + PROJ4_ROOT: /sw/rhel6-x64/graphics/proj4-4.9.3-gcc48 + UDUNITS2_ROOT: /sw/rhel6-x64/util/udunits-2.2.26-gcc64 + nesh: + add_export_vars: + - LAPACK_LIB='-mkl=sequential' + - LAPACK_LIB_DEFAULT='-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - OIFS_FFTW_DIR='-L$MKLROOT/lib/intel64' + - OIFS_FFTW_INCLUDE='-I$OIFS_FFTW_DIR/include/' + - OIFS_FFTW_LIB='-L$OIFS_FFTW_DIR/lib/ -lmkl_intel_lp64 -lmkl_core -lmkl_sequential' + - ESM_NETCDF_C_DIR=$NETCDFROOT + - ESM_NETCDF_F_DIR=$NETCDFFROOT + - OIFS_GRIB_API_INCLUDE="-I$ECCODESROOT/include" + - OIFS_GRIB_API_LIB="-L$ECCODESROOT/lib -leccodes_f90 -leccodes" + - OIFS_GRIB_INCLUDE="$OIFS_GRIB_API_INCLUDE" + - OIFS_GRIB_LIB="$OIFS_GRIB_API_LIB" + - OIFS_GRIB_API_BIN="$ECCODESROOT/bin" + - LAPACK_LIB_DEFAULT="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential" + - OIFS_OASIS_BASE=$(pwd)/oasis + - OIFS_OASIS_INCLUDE="-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu" + - OIFS_OASIS_LIB="-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip" + - OIFS_NETCDF_INCLUDE="-I$NETCDFROOT/include" + - OIFS_NETCDF_LIB="-L$NETCDFROOT/lib -lnetcdf" + - OIFS_NETCDFF_INCLUDE="-I$NETCDFFROOT/include" + - OIFS_NETCDFF_LIB="-L$NETCDFFROOT/lib -lnetcdff" + - OIFS_FC=$FC + - OIFS_FFLAGS="-r8 -fp-model precise -align array32byte -O1 -xCORE_AVX2 -g -traceback -convert big_endian -fpe0" + - OIFS_FFIXED="" + - OIFS_FCDEFS="BLAS LITTLE LINUX INTEGER_IS_INT" + - OIFS_LFLAGS=$OIFS_MPI_LIB + - OIFS_CC=$CC + - OIFS_CFLAGS="-fp-model precise -O1 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0" + - OIFS_CCDEFS="LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS" + compiler_mpi: intel2020_impi2020 + ollie: + add_export_vars: + ECCODESROOT: $IO_LIB_ROOT + ESM_NETCDF_C_DIR: $NETCDFROOT + ESM_NETCDF_F_DIR: $NETCDFFROOT + HDF5ROOT: $IO_LIB_ROOT + HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include + HDF5_ROOT: $HDF5ROOT + IO_LIB_ROOT: /work/ollie/jstreffi/software/HPC_libraries/intel2018.0.5_intelmpi_2021.3.0_20220623 + LAPACK_LIB_DEFAULT: '"-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential"' + LD_LIBRARY_PATH: $IO_LIB_ROOT/lib:$LD_LIBRARY_PATH + NETCDFFROOT: $IO_LIB_ROOT + NETCDFROOT: $IO_LIB_ROOT + NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include + NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include + OASIS3MCT_FC_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_CC: $CC + OIFS_CCDEFS: '"LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS _OPENMP"' + OIFS_CFLAGS: '"-fp-model precise -O3 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0 -qopenmp"' + OIFS_FC: $FC + OIFS_FCDEFS: '"BLAS LITTLE LINUX INTEGER_IS_INT"' + OIFS_FFIXED: '""' + OIFS_FFLAGS: '"-r8 -fp-model precise -align array32byte -O3 -qopenmp -xCORE_AVX2 -g -traceback -convert big_endian"' + OIFS_GRIB_API_BIN: '"$ECCODESROOT/bin"' + OIFS_GRIB_API_INCLUDE: '"-I$ECCODESROOT/include"' + OIFS_GRIB_API_LIB: '"-L$ECCODESROOT/lib -leccodes_f90 -leccodes"' + OIFS_GRIB_INCLUDE: '"$OIFS_GRIB_API_INCLUDE"' + OIFS_GRIB_LIB: '"$OIFS_GRIB_API_LIB"' + OIFS_LFLAGS: '"$OIFS_MPI_LIB -qopenmp"' + OIFS_NETCDFF_INCLUDE: '"-I$NETCDFFROOT/include"' + OIFS_NETCDFF_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_NETCDF_INCLUDE: '"-I$NETCDFROOT/include"' + OIFS_NETCDF_LIB: '"-L$NETCDFROOT/lib -lnetcdf"' + OIFS_OASIS_BASE: $(pwd)/oasis + OIFS_OASIS_INCLUDE: '"-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu"' + OIFS_OASIS_LIB: '"-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip"' + SZIPROOT: $IO_LIB_ROOT + add_module_actions: + - purge + - load intel.mpi/2021.3.0 intel.compiler cmake + iolibraries: awi_libs + config_intermediate: + fort.4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/oifs/fort.4 + wam_namelist: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/oifs/wam_namelist + config_sources: + fort.4: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/awicm3/frontiers/fort.4 + wam_namelist: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/awicm3/frontiers/wam_namelist + config_targets: + fort.4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/fort.4 + wam_namelist: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/wam_namelist + copy_forcing: false + coupling_fields: + A_Calving: + grid: atmr + A_CurX: + grid: atma + A_CurY: + grid: atma + A_Evap: + grid: atma + A_Ice_albedo: + grid: atma + A_Ice_frac: + grid: atma + A_Ice_temp: + grid: atma + A_Precip_liquid: + grid: atma + A_Precip_solid: + grid: atma + A_Q_ice: + grid: atma + A_Qns_oce: + grid: atma + A_Qs_all: + grid: atma + A_Runoff: + grid: atmr + A_SST: + grid: atma + A_Snow_thickness: + grid: atma + A_Subl: + grid: atma + A_TauX_ice: + grid: atma + A_TauX_oce: + grid: atma + A_TauY_ice: + grid: atma + A_TauY_oce: + grid: atma + debug_info: + loaded_from_file: + - /home/ollie/mandresm/esm_tools/configs//components/oifs/oifs.yaml + description: 'The OpenIFS atmosphere model based on ECMWF IFS + + Carver et al., in prep.' + dr_hook_ignore_signals: -1 + ensemble: 0 + ensemble_id: 1 + environment_changes: + GribApiLib: none + GribApiRoot: none + GribSamples: none + OpenMP_CCDEFS: _OPENMP + OpenMP_flag: -qopenmp + c++_lib: none + choose_computer.useMPI: + '*': + c++_lib: none + cray_mpich: + c++_lib: cray-c++-rts + intelmpi: + c++_lib: stdc++ + choose_computer.name: + mistral: + GribApiLib: -L$GRIBAPIROOT/lib -lgrib_api_f90 -lgrib_api + GribApiRoot: /sw/rhel6-x64/grib_api/grib_api-1.15.0-intel14 + GribSamples: grib_api + openmpi: + choose_computer.name: + mistral: + GribApiLib: -L$GRIBAPIROOT/lib -lgrib_api_f90 -lgrib_api + GribApiRoot: /pf/a/a270092/ecmwf/grib_api_intel_modulegcc + GribSamples: grib_api + add_export_vars: + DR_HOOK: 1 + DR_HOOK_OPT: prof + DR_HOOK_PROFILE_LIMIT: 0.5 + HDF5_DISABLE_VERSION_CHECK: 1 + OIFS_DUMMY_ACTION: ABORT + eternal_run_number: 1 + executable: oifs + execution_command: oifs -v ecmwf -e awi3 + experiment_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/analysis/oifs/ + experiment_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/bin/oifs/ + experiment_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/config/oifs/ + experiment_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/couple/oifs/ + experiment_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/forcing/oifs/ + experiment_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/ignore/oifs/ + experiment_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/input/oifs/ + experiment_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/oifs/ + experiment_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/mon/oifs/ + experiment_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/outdata/oifs/ + experiment_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/oifs/ + experiment_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/oifs/ + experiment_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/viz/oifs/ + file_movements: + analysis: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + bin: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + config: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + couple: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + forcing: + exp_to_run: link + init_to_exp: link + run_to_work: link + work_to_run: link + ignore: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + input: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + log: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + mon: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + outdata: + exp_to_run: move + init_to_exp: move + run_to_work: move + work_to_run: move + rcf_in: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_in: + exp_to_run: link + init_to_exp: link + run_to_work: link + work_to_run: link + restart_out: + exp_to_run: move + init_to_exp: move + run_to_work: move + work_to_run: move + scripts: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + unknown: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + viz: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + waminfo_in: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + filebase_wam_source: '{''NONE_YET'': {}}' + filebase_wam_work: '20000101000000_' + forcing_dir: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/ + forcing_intermediate: {} + forcing_sources: {} + forcing_targets: {} + generate_namelist: 1 + grids: + atma: + name: A096 + nx: 40320 + ny: 1 + oasis_grid_type: D + atml: + name: L096 + nx: 40320 + ny: 1 + oasis_grid_type: D + atmr: + name: R096 + nx: 40320 + ny: 1 + oasis_grid_type: D + hours: 0 + icmcl_dir: /work/ollie/jstreffi/input/oifs-43r3 + icmcl_end_date: '2000-01-03T00:00:00' + icmcl_end_date_formatted: 20000103 + icmcl_file: ICMCLaackINIT + ifsdata_dir: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/ + ignore_intermediate: {} + ignore_sources: {} + ignore_sources_wild_card: + ICMCL: ICMCL* + drhook: drhook* + ignore_targets: {} + in_date_folder: 19991231 + include_models: + - xios + input_dir: /work/ollie/jstreffi/input/oifs-43r3 + input_expid: awi3 + input_intermediate: + ICMGG_INIT: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ICMGGawi3INIT + ICMGG_INIUA: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ICMGGawi3INIUA + ICMSH_INIT: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ICMSHawi3INIT + cdwavein: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/cdwavein + ifsdata_glob_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2020 + ifsdata_glob_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_OBS1930 + ifsdata_glob_10: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/CH4CLIM + ifsdata_glob_11: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2070 + ifsdata_glob_12: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2050 + ifsdata_glob_13: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/GCO2CLIM + ifsdata_glob_14: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/slingo_droplet_scattering_rrtm.nc + ifsdata_glob_15: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/MCO2CLIM + ifsdata_glob_16: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/C12CLIM + ifsdata_glob_17: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2040 + ifsdata_glob_18: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2090 + ifsdata_glob_19: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/OZOCLIM + ifsdata_glob_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/C11CLIM + ifsdata_glob_20: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/es_droplet_scattering_rrtm.nc + ifsdata_glob_21: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/C22CLIM + ifsdata_glob_22: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2100 + ifsdata_glob_23: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/RADSRTM + ifsdata_glob_24: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2080 + ifsdata_glob_25: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_OBS1970 + ifsdata_glob_26: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2030 + ifsdata_glob_27: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/CO2CLIM + ifsdata_glob_28: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/MOZOCLIM + ifsdata_glob_29: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_OBS1940 + ifsdata_glob_3: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/aerosol_ifs_rrtm_43R1.nc + ifsdata_glob_30: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/aerosol_ifs_rrtm_tegen.nc + ifsdata_glob_31: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2000 + ifsdata_glob_32: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/NO2CLIM + ifsdata_glob_33: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/fu_ice_scattering_rrtm.nc + ifsdata_glob_34: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/GOZOCLIM + ifsdata_glob_35: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/aerosol_ifs_rrtm_43R1a.nc + ifsdata_glob_36: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/aerosol_cams_climatology_43R3.nc + ifsdata_glob_37: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2010 + ifsdata_glob_38: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_OBS1950 + ifsdata_glob_39: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/N2OCLIM + ifsdata_glob_4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_A1B2060 + ifsdata_glob_40: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/MCH4CLIM + ifsdata_glob_41: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/aerosol_ifs_rrtm_AB.nc + ifsdata_glob_42: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/MCICA + ifsdata_glob_43: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/CCL4CLIM + ifsdata_glob_44: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/socrates_droplet_scattering_rrtm.nc + ifsdata_glob_45: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/RADRRTM + ifsdata_glob_46: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_OBS1990 + ifsdata_glob_47: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_OBS1980 + ifsdata_glob_48: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/aerosol_ifs_rrtm_42R1.nc + ifsdata_glob_49: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/mcica_gamma.nc + ifsdata_glob_5: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/baran_ice_scattering_rrtm.nc + ifsdata_glob_50: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/aerosol_ifs_rrtm.nc + ifsdata_glob_51: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/aerosol_ifs_rrtm_43R3.nc + ifsdata_glob_52: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/mcica_lognormal.nc + ifsdata_glob_53: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/ECOZC + ifsdata_glob_6: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/GCH4CLIM + ifsdata_glob_7: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_OBS1960 + ifsdata_glob_8: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/SO4_OBS1920 + ifsdata_glob_9: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ifsdata/aerosol_cams_climatology_43R3a.nc + o3_data_glob_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM06_V2.9 + o3_data_glob_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM05_V2.9 + o3_data_glob_10: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM10_V2.9 + o3_data_glob_11: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM04_V2.9 + o3_data_glob_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM08_V2.9 + o3_data_glob_3: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM03_V2.9 + o3_data_glob_4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM11_V2.9 + o3_data_glob_5: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM01_V2.9 + o3_data_glob_6: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM09_V2.9 + o3_data_glob_7: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM12_V2.9 + o3_data_glob_8: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM07_V2.9 + o3_data_glob_9: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/o3chem_l91/O3CHEM02_V2.9 + sfcwindin: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/sfcwindin + specwavein: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/specwavein + tl_data_glob_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.08 + tl_data_glob_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_alnip + tl_data_glob_10: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_alnid + tl_data_glob_11: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/slt + tl_data_glob_12: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.07 + tl_data_glob_13: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.03 + tl_data_glob_14: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sporog + tl_data_glob_15: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.02 + tl_data_glob_16: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_laih + tl_data_glob_17: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/lsmoro + tl_data_glob_18: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sfc + tl_data_glob_19: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.04 + tl_data_glob_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.05 + tl_data_glob_20: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_aluvd + tl_data_glob_21: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_aluvg + tl_data_glob_22: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_alb + tl_data_glob_23: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_aluvv + tl_data_glob_24: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.12 + tl_data_glob_25: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.09 + tl_data_glob_26: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/cicecap + tl_data_glob_27: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_aluvp + tl_data_glob_28: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_aluvi + tl_data_glob_29: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_alnig + tl_data_glob_3: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.11 + tl_data_glob_30: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.10 + tl_data_glob_4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.01 + tl_data_glob_5: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sstgrib.clim.06 + tl_data_glob_6: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_alniv + tl_data_glob_7: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_lail + tl_data_glob_8: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/sdfor + tl_data_glob_9: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/95_4/month_alnii + uwavein: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/uwavein + wam_grid_tables: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/wam_grid_tables + wam_subgrid_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/wam_subgrid_0 + wam_subgrid_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/wam_subgrid_1 + wam_subgrid_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/wam_subgrid_2 + input_sources: + ICMGG_INIT: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//ICMGGaackINIT_CORE2 + ICMGG_INIUA: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//ICMGGaackINIUA + ICMSH_INIT: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//ICMSHaackINIT + cdwavein: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//cdwavein + ifsdata_glob_0: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2020 + ifsdata_glob_1: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_OBS1930 + ifsdata_glob_10: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/CH4CLIM + ifsdata_glob_11: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2070 + ifsdata_glob_12: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2050 + ifsdata_glob_13: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/GCO2CLIM + ifsdata_glob_14: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/slingo_droplet_scattering_rrtm.nc + ifsdata_glob_15: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/MCO2CLIM + ifsdata_glob_16: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/C12CLIM + ifsdata_glob_17: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2040 + ifsdata_glob_18: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2090 + ifsdata_glob_19: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/OZOCLIM + ifsdata_glob_2: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/C11CLIM + ifsdata_glob_20: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/es_droplet_scattering_rrtm.nc + ifsdata_glob_21: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/C22CLIM + ifsdata_glob_22: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2100 + ifsdata_glob_23: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/RADSRTM + ifsdata_glob_24: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2080 + ifsdata_glob_25: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_OBS1970 + ifsdata_glob_26: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2030 + ifsdata_glob_27: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/CO2CLIM + ifsdata_glob_28: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/MOZOCLIM + ifsdata_glob_29: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_OBS1940 + ifsdata_glob_3: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/aerosol_ifs_rrtm_43R1.nc + ifsdata_glob_30: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/aerosol_ifs_rrtm_tegen.nc + ifsdata_glob_31: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2000 + ifsdata_glob_32: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/NO2CLIM + ifsdata_glob_33: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/fu_ice_scattering_rrtm.nc + ifsdata_glob_34: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/GOZOCLIM + ifsdata_glob_35: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/aerosol_ifs_rrtm_43R1a.nc + ifsdata_glob_36: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/aerosol_cams_climatology_43R3.nc + ifsdata_glob_37: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2010 + ifsdata_glob_38: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_OBS1950 + ifsdata_glob_39: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/N2OCLIM + ifsdata_glob_4: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_A1B2060 + ifsdata_glob_40: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/MCH4CLIM + ifsdata_glob_41: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/aerosol_ifs_rrtm_AB.nc + ifsdata_glob_42: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/MCICA + ifsdata_glob_43: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/CCL4CLIM + ifsdata_glob_44: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/socrates_droplet_scattering_rrtm.nc + ifsdata_glob_45: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/RADRRTM + ifsdata_glob_46: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_OBS1990 + ifsdata_glob_47: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_OBS1980 + ifsdata_glob_48: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/aerosol_ifs_rrtm_42R1.nc + ifsdata_glob_49: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/mcica_gamma.nc + ifsdata_glob_5: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/baran_ice_scattering_rrtm.nc + ifsdata_glob_50: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/aerosol_ifs_rrtm.nc + ifsdata_glob_51: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/aerosol_ifs_rrtm_43R3.nc + ifsdata_glob_52: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/mcica_lognormal.nc + ifsdata_glob_53: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/ECOZC + ifsdata_glob_6: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/GCH4CLIM + ifsdata_glob_7: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_OBS1960 + ifsdata_glob_8: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/SO4_OBS1920 + ifsdata_glob_9: /work/ollie/jstreffi/input/oifs-43r3/43r3/ifsdata/aerosol_cams_climatology_43R3a.nc + o3_data_glob_0: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM06_V2.9 + o3_data_glob_1: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM05_V2.9 + o3_data_glob_10: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM10_V2.9 + o3_data_glob_11: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM04_V2.9 + o3_data_glob_2: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM08_V2.9 + o3_data_glob_3: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM03_V2.9 + o3_data_glob_4: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM11_V2.9 + o3_data_glob_5: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM01_V2.9 + o3_data_glob_6: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM09_V2.9 + o3_data_glob_7: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM12_V2.9 + o3_data_glob_8: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM07_V2.9 + o3_data_glob_9: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/o3chem_l91/O3CHEM02_V2.9 + sfcwindin: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//sfcwindin + specwavein: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//specwavein + tl_data_glob_0: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.08 + tl_data_glob_1: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_alnip + tl_data_glob_10: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_alnid + tl_data_glob_11: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/slt + tl_data_glob_12: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.07 + tl_data_glob_13: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.03 + tl_data_glob_14: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sporog + tl_data_glob_15: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.02 + tl_data_glob_16: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_laih + tl_data_glob_17: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/lsmoro + tl_data_glob_18: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sfc + tl_data_glob_19: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.04 + tl_data_glob_2: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.05 + tl_data_glob_20: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_aluvd + tl_data_glob_21: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_aluvg + tl_data_glob_22: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_alb + tl_data_glob_23: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_aluvv + tl_data_glob_24: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.12 + tl_data_glob_25: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.09 + tl_data_glob_26: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/cicecap + tl_data_glob_27: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_aluvp + tl_data_glob_28: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_aluvi + tl_data_glob_29: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_alnig + tl_data_glob_3: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.11 + tl_data_glob_30: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.10 + tl_data_glob_4: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.01 + tl_data_glob_5: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sstgrib.clim.06 + tl_data_glob_6: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_alniv + tl_data_glob_7: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_lail + tl_data_glob_8: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/sdfor + tl_data_glob_9: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate//95_4/month_alnii + uwavein: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//uwavein + wam_grid_tables: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//wam_grid_tables + wam_subgrid_0: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//wam_subgrid_0 + wam_subgrid_1: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//wam_subgrid_1 + wam_subgrid_2: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91//wam_subgrid_2 + input_sources_wild_card: + ifsdata: '*' + o3_data: '*' + tl_data: '*' + input_targets: + ICMGG_INIT: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ICMGGawi3INIT + ICMGG_INIUA: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ICMGGawi3INIUA + ICMSH_INIT: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ICMSHawi3INIT + cdwavein: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/cdwavein + ifsdata_glob_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2020 + ifsdata_glob_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_OBS1930 + ifsdata_glob_10: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/CH4CLIM + ifsdata_glob_11: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2070 + ifsdata_glob_12: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2050 + ifsdata_glob_13: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/GCO2CLIM + ifsdata_glob_14: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/slingo_droplet_scattering_rrtm.nc + ifsdata_glob_15: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/MCO2CLIM + ifsdata_glob_16: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/C12CLIM + ifsdata_glob_17: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2040 + ifsdata_glob_18: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2090 + ifsdata_glob_19: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/OZOCLIM + ifsdata_glob_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/C11CLIM + ifsdata_glob_20: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/es_droplet_scattering_rrtm.nc + ifsdata_glob_21: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/C22CLIM + ifsdata_glob_22: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2100 + ifsdata_glob_23: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/RADSRTM + ifsdata_glob_24: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2080 + ifsdata_glob_25: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_OBS1970 + ifsdata_glob_26: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2030 + ifsdata_glob_27: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/CO2CLIM + ifsdata_glob_28: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/MOZOCLIM + ifsdata_glob_29: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_OBS1940 + ifsdata_glob_3: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/aerosol_ifs_rrtm_43R1.nc + ifsdata_glob_30: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/aerosol_ifs_rrtm_tegen.nc + ifsdata_glob_31: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2000 + ifsdata_glob_32: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/NO2CLIM + ifsdata_glob_33: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/fu_ice_scattering_rrtm.nc + ifsdata_glob_34: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/GOZOCLIM + ifsdata_glob_35: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/aerosol_ifs_rrtm_43R1a.nc + ifsdata_glob_36: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/aerosol_cams_climatology_43R3.nc + ifsdata_glob_37: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2010 + ifsdata_glob_38: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_OBS1950 + ifsdata_glob_39: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/N2OCLIM + ifsdata_glob_4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_A1B2060 + ifsdata_glob_40: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/MCH4CLIM + ifsdata_glob_41: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/aerosol_ifs_rrtm_AB.nc + ifsdata_glob_42: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/MCICA + ifsdata_glob_43: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/CCL4CLIM + ifsdata_glob_44: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/socrates_droplet_scattering_rrtm.nc + ifsdata_glob_45: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/RADRRTM + ifsdata_glob_46: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_OBS1990 + ifsdata_glob_47: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_OBS1980 + ifsdata_glob_48: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/aerosol_ifs_rrtm_42R1.nc + ifsdata_glob_49: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/mcica_gamma.nc + ifsdata_glob_5: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/baran_ice_scattering_rrtm.nc + ifsdata_glob_50: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/aerosol_ifs_rrtm.nc + ifsdata_glob_51: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/aerosol_ifs_rrtm_43R3.nc + ifsdata_glob_52: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/mcica_lognormal.nc + ifsdata_glob_53: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/ECOZC + ifsdata_glob_6: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/GCH4CLIM + ifsdata_glob_7: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_OBS1960 + ifsdata_glob_8: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/SO4_OBS1920 + ifsdata_glob_9: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ifsdata/aerosol_cams_climatology_43R3a.nc + o3_data_glob_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM06_V2.9 + o3_data_glob_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM05_V2.9 + o3_data_glob_10: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM10_V2.9 + o3_data_glob_11: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM04_V2.9 + o3_data_glob_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM08_V2.9 + o3_data_glob_3: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM03_V2.9 + o3_data_glob_4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM11_V2.9 + o3_data_glob_5: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM01_V2.9 + o3_data_glob_6: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM09_V2.9 + o3_data_glob_7: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM12_V2.9 + o3_data_glob_8: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM07_V2.9 + o3_data_glob_9: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/o3chem_l91/O3CHEM02_V2.9 + sfcwindin: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/sfcwindin + specwavein: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/specwavein + tl_data_glob_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.08 + tl_data_glob_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_alnip + tl_data_glob_10: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_alnid + tl_data_glob_11: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/slt + tl_data_glob_12: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.07 + tl_data_glob_13: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.03 + tl_data_glob_14: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sporog + tl_data_glob_15: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.02 + tl_data_glob_16: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_laih + tl_data_glob_17: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/lsmoro + tl_data_glob_18: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sfc + tl_data_glob_19: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.04 + tl_data_glob_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.05 + tl_data_glob_20: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_aluvd + tl_data_glob_21: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_aluvg + tl_data_glob_22: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_alb + tl_data_glob_23: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_aluvv + tl_data_glob_24: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.12 + tl_data_glob_25: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.09 + tl_data_glob_26: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/cicecap + tl_data_glob_27: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_aluvp + tl_data_glob_28: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_aluvi + tl_data_glob_29: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_alnig + tl_data_glob_3: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.11 + tl_data_glob_30: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.10 + tl_data_glob_4: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.01 + tl_data_glob_5: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sstgrib.clim.06 + tl_data_glob_6: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_alniv + tl_data_glob_7: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_lail + tl_data_glob_8: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/sdfor + tl_data_glob_9: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/95_4/month_alnii + uwavein: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/uwavein + wam_grid_tables: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/wam_grid_tables + wam_subgrid_0: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/wam_subgrid_0 + wam_subgrid_1: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/wam_subgrid_1 + wam_subgrid_2: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/wam_subgrid_2 + lassi: false + last_parent_date: '1999-12-31T22:00:00' + leapyear: true + lecompgrid: true + levels: L91 + levels_number: 91 + lfdbop: false + lgradsp: false + lhvolca: false + license_text: ECMWF license. AWI and GEOMAR have licenses. + log_intermediate: + NODE: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/oifs/NODE.001_01 + ifsstat: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/oifs/ifs.stat + log_sources: + NODE: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//NODE.001_01 + ifsstat: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//ifs.stat + log_targets: + NODE: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/log/oifs/NODE.001_01 + ifsstat: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/log/oifs/ifs.stat + lresume: false + lsmssig: false + massfixer: 2 + metadata: + Authors: Glenn Carver (openifs-support@ecmwf.int) + Description: OpenIFS provides research institutions with an easy-to-use version of the ECMWF IFS (Integrated Forecasting System). + Institute: ECMWF + License: Please make sure you have a licence to use OpenIFS. In case you are unsure, please contact redmine... + Name: OpenIFS + Website: https://www.ecmwf.int/en/research/projects/openifs + mip: cmip6 + model: oifs + model_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/oifs-43r3 + namelist_case: uppercase + namelist_changes: + fort.4: + NAEPHY: + LECURR: true + LWCOU: true + LWCOU2W: true + NAERAD: + CMIP6DATADIR: /work/ollie/jstreffi/input/oifs-43r3/cmip6-data + CRTABLEDIR: /work/ollie/jstreffi/input/oifs-43r3/rtables/ + LCMIP6: true + LECOMPGRID: true + NSOLARSPECTRUM: 1 + NAMARG: + CNMEXP: awi3 + CUSTOP: t24 + UTSTEP: 3600 + NAMCLDP: + SCLCT_SWITCH: 2 + NAMCT0: + LFDBOP: false + LSMSSIG: false + LXIOS: true + NFRHIS: 6 + NFRMASSCON: 1 + NFRPOS: 6 + NAMDYN: + LMASCOR: true + LMASDRY: false + NAMDYNA: + LGRADSP: false + NAMFPD: + NLAT: 192 + NLON: 384 + NAMFPG: + NFPLEV: 91 + NFPMAX: 95 + NAMGFL: + LTRCMFMG: true + YI_NL%LMASSFIX: true + YL_NL%LMASSFIX: true + YQ_NL%LMASSFIX: true + YR_NL%LMASSFIX: true + YS_NL%LMASSFIX: true + NAMIO_SERV: + NIO_SERV_METHOD: 2 + NMSG_LEVEL_CLIENT: 0 + NMSG_LEVEL_SERVER: 1 + NPROCESS_LEVEL: 5 + NPROC_IO: 2 + NAMNMI: + LASSI: false + NAMORB: + LCORBMD: false + ORBIY: 2000 + ORBMODE: variable_year + NAMPAR0: + NPROC: 18 + NSPECRESMIN: 96 + NAMPPC: + LRSACC: true + NAMRES: + NFRRES: 1 + NRESTS: + - -1 + - -24 + wam_namelist: + NALINE: + CBPLTDT: '20000101000000' + CDATECURA: '20000101000000' + CDATEF: '20000101000000' + namelist_dir: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/awicm3/frontiers + namelists: + - fort.4 + - wam_namelist + ndays_out: 1 + ndays_per_run: 1 + ndays_per_run_string: 1 + ndays_source_in: 0 + ndays_work_in: 0 + next_days_string: 0 + next_ndays: 1 + next_ndays_wam: 0 + next_step: 24 + nfrests: + - -1 + - -24 + nfrmasscon: 1 + nfrres: 1 + nlat: 192 + nlev: 91 + nlon: 384 + nproc: 18 + nrest_ind: '' + nspecresmin: 96 + nx: 40320 + ny: 1 + oasis_grid_name: 96 + oasis_grid_name_a: A096 + oasis_grid_name_l: L096 + oasis_grid_name_r: R096 + ocean_resolution: CORE2 + omp_num_threads: 2 + onepctco2: false + orb_iyear: 2000 + orb_mode: variable_year + orb_switch: false + out_date_folder: 20000101 + outdata_intermediate: {} + outdata_sources: {} + outdata_sources_wild_card: + ICMUA: ICMUAawi3+* + MPP: MPP* + atm: atm* + oifsnc: awi3_*_20000101_*.nc + outdata_targets: {} + output: default + parent_date: '1999-12-31T23:00:00' + parent_dir: /work/ollie/jstreffi/input/OPENIFS43R3-TCO95/restart/awicm3-v3.1-TCO95L91-CORE2_initial + parent_expid: awicm3-v3.1-TCO95L91-CORE2_initial + parent_restart_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/oifs/ + perturb: 0 + pextra: 0 + pool_dir: /work/ollie/jstreffi/input + post_processing: 0 + postprocess: + postprocess_shell: + method: /home/ollie/mandresm/esm_tools/configs//components/oifs/oifs-43r3-postprocess.sh /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/ ECE3 20000101 20000101 + type: shell + prepcompute_recipe: + - compile_model + - _show_simulation_info + - create_new_files + - create_empty_folders + - prepare_coupler_files + - assemble + - log_used_files + - _write_finalized_config + - copy_files_to_thisrun + - write_env + - preprocess + - modify_namelists + - modify_files + - copy_files_to_work + - report_missing_files + - add_vcs_info + - check_vcs_info_against_last_run + - database_entry + - oasis_rmp_rst_to_input + prepifs_dir: /work/ollie/jstreffi/input/oifs-43r3/TCO95L91/ + prepifs_expid: aack + prepifs_startdate: '19820101' + preprocess: + preprocess_shell: + method: '/home/ollie/mandresm/esm_tools/configs//components/oifs/change_icm_date.sh /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs// awi3 awi3 20000101 20000101 1 0 40320 1; echo ''Run number for internal OpenIFS timekeeping: 1''' + type: shell + preprocess_method: '/home/ollie/mandresm/esm_tools/configs//components/oifs/change_icm_date.sh /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs// awi3 awi3 20000101 20000101 1 0 40320 1; echo ''Run number for internal OpenIFS timekeeping: 1''' + prev_date: '1999-12-31T23:00:00' + pseudo_initial_date: '2000-01-01T00:00:00' + read_icmcl: 0 + required_plugins: + - git+https://github.com/esm-tools-plugins/postprocess + - git+https://github.com/esm-tools-plugins/preprocess + res_level: TCO95L91 + res_number: 95 + res_number_tl: '95_4' + resolution: TCO95 + restart: 1 + restart_dir: '' + restart_firstlast: last + restart_out_intermediate: + rcf: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oifs/20000101/rcf + waminfo: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oifs/20000101/waminfo00000001 + restart_out_sources: + rcf: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//rcf + waminfo: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//waminfo + restart_out_sources_wild_card: + BLS: BLS20000101000000_000000230000.* + LAW: LAW20000101000000_000000230000.* + srf: srf000000010000.* + restart_out_targets: + rcf: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/oifs/20000101/rcf + waminfo: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/restart/oifs/20000101/waminfo00000001 + restart_rate: 12 + restart_type: eternal + restart_unit: months + reusable_filetypes: + - input + - bin + - src + rnproc: 18 + rtables_dir: /work/ollie/jstreffi/input/oifs-43r3/rtables/ + runtime_environment_changes: + add_export_vars: + ECE_AWI_CPL_FESOM: '"true"' + ECE_CPL_FESOM_FESIM: '"true"' + ECE_CPL_NEMO_LIM: '"false"' + FESOM_USE_CPLNG: '"active"' + choose_computer.name: + aleph: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + GRIB_SAMPLES_PATH: '"$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/"' + LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$ECCODESROOT/lib:$PROJ4_DIR/lib + PATH: $ECCODESROOT/bin:${PATH} + blogin: + add_export_vars: + - OIFS_FFIXED="" + - GRIB_SAMPLES_PATH="$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/" + - DR_HOOK_IGNORE_SIGNALS=-1 + - OMP_SCHEDULE=STATIC + - OMP_STACKSIZE=128M + add_module_actions: + - source $I_MPI_ROOT/intel64/bin/mpivars.sh release_mt + iolibraries: geomar_libs + glogin: + add_export_vars: + - OIFS_FFIXED="" + - GRIB_SAMPLES_PATH="$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/" + - DR_HOOK_IGNORE_SIGNALS=-1 + - OMP_SCHEDULE=STATIC + - OMP_STACKSIZE=128M + add_module_actions: + - source $I_MPI_ROOT/intel64/bin/mpivars.sh release_mt + iolibraries: geomar_libs + juwels: + add_export_vars: + - OIFS_FFIXED="" + - GRIB_SAMPLES_PATH="$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/" + - DR_HOOK_IGNORE_SIGNALS=-1 + - OMP_SCHEDULE=STATIC + - OMP_STACKSIZE=128M + - MAIN_LDFLAGS=-openmp + compiler_mpi: intel2022_ompi2022 + levante: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + ECCODESROOT: /work/ab0246/HPC_libraries/intel-oneapi-compilers/2022.0.1-gcc-11.2.0/openmpi/4.1.2-intel-2021.5.0 + GRIB_SAMPLES_PATH: '"$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2"' + HDF5ROOT: /sw/spack-levante/hdf5-1.12.1-tvymb5 + HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include + HDF5_ROOT: $HDF5ROOT + LD_LIBRARY_PATH[(3)]: $ECCODESROOT/lib:$LD_LIBRARY_PATH + NETCDFFROOT: /sw/spack-levante/netcdf-fortran-4.5.3-k6xq5g + NETCDFROOT: /sw/spack-levante/netcdf-c-4.8.1-2k3cmu + NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include + NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include + OIFS_FFIXED: '""' + OMP_SCHEDULE: STATIC + OMP_STACKSIZE: 128M + PATH: $ECCODESROOT/bin:$PATH + SZIPROOT: /sw/spack-levante/libaec-1.0.5-gij7yv + iolibraries: system_libs + mistral: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + FFTW_ROOT: /sw/rhel6-x64/numerics/fftw-3.3.7-openmp-gcc64 + GRIBAPIROOT: none + GRIB_SAMPLES_PATH: '"$GRIBAPIROOT/share/none/ifs_samples/grib1_mlgrib2/"' + LD_LIBRARY_PATH[(2)]: $LD_LIBRARY_PATH:$GRIBAPIROOT/lib:$PROJ4_ROOT/lib:$FFTW_ROOT/lib + MPI_BUFS_PER_PROC: 256 + OIFS_FFIXED: '""' + OMP_SCHEDULE: STATIC + OMP_STACKSIZE: 128M + PATH[(2)]: $GRIBAPIROOT/bin:${PATH} + PATH[(3)]: /sw/rhel6-x64/gcc/binutils-2.24-gccsys/bin:${PATH} + PROJ4_ROOT: /sw/rhel6-x64/graphics/proj4-4.9.3-gcc48 + UDUNITS2_ROOT: /sw/rhel6-x64/util/udunits-2.2.26-gcc64 + nesh: + add_export_vars: + - OIFS_FFIXED="" + - GRIB_SAMPLES_PATH="$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2/" + - DR_HOOK_IGNORE_SIGNALS=-1 + add_module_actions: + - source $I_MPI_ROOT/intel64/bin/mpivars.sh release_mt + compiler_mpi: intel2020_impi2020 + ollie: + add_export_vars: + DR_HOOK_IGNORE_SIGNALS: -1 + ECCODESROOT: $IO_LIB_ROOT + GRIB_SAMPLES_PATH: '"$ECCODESROOT/share/eccodes/ifs_samples/grib1_mlgrib2"' + HDF5ROOT: $IO_LIB_ROOT + HDF5_C_INCLUDE_DIRECTORIES: $HDF5_ROOT/include + HDF5_ROOT: $HDF5ROOT + IO_LIB_ROOT: /work/ollie/jstreffi/software/HPC_libraries/intel2018.0.5_intelmpi_2021.3.0_20220623 + LD_LIBRARY_PATH: $IO_LIB_ROOT/lib:$LD_LIBRARY_PATH + NETCDFFROOT: $IO_LIB_ROOT + NETCDFROOT: $IO_LIB_ROOT + NETCDF_C_INCLUDE_DIRECTORIES: $NETCDFROOT/include + NETCDF_Fortran_INCLUDE_DIRECTORIES: $NETCDFFROOT/include + OASIS3MCT_FC_LIB: '"-L$NETCDFFROOT/lib -lnetcdff"' + OIFS_FFIXED: '""' + OMP_SCHEDULE: STATIC + OMP_STACKSIZE: 128M + PATH[(2)]: $PATH:$IO_LIB_ROOT/bin + SZIPROOT: $IO_LIB_ROOT + add_module_actions: + - unload gribapi + - unload hdf5 + - unload intel.mpi + - load intel.mpi/2021.3.0 + iolibraries: awi_libs + runtime_seconds: 86400 + scenario: historical + sclct_switch: 2 + seconds_since_initial: 0 + setup_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1 + simulation_length_seconds: 86400 + slice_icml: '' + source_days_string: -1 + source_ndays_wam: -1 + start_days_string: -1 + start_ndays: 0 + start_ndays_source: 0 + start_ndays_wam: -1 + steps_per_day: 24 + steps_since_initial: 0 + supercooled_liquid_could_fix: 0 + thisrun_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/analysis/oifs/ + thisrun_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/bin/oifs/ + thisrun_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/oifs/ + thisrun_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/couple/oifs/ + thisrun_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/forcing/oifs/ + thisrun_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/ignore/oifs/ + thisrun_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/ + thisrun_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/oifs/ + thisrun_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/mon/oifs/ + thisrun_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/oifs/ + thisrun_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oifs/ + thisrun_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/oifs/ + thisrun_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/viz/oifs/ + threads: 1 + time_step: 3600 + timestep_per_run: 24 + tl_o3_data_dir: /work/ollie/jstreffi/input/oifs-43r3/43r3/climate/ + truncation: TCO + type: atmosphere + version: 43r3 + vtables_dir: /work/ollie/jstreffi/input/oifs-43r3/../vtables/ + wam: true + wam_2w: true + wam_number: 1 + wam_out: 230000 + wam_source_in: -1230000 + wam_start_date: '20000101000000' + wam_step: 1 + wam_work_in: -1230000 + with_nest1: false + with_xios: true + xml_dir: '' +rnfmap: + all_filetypes: + - analysis + - bin + - config + - forcing + - input + - couple + - log + - mon + - outdata + - restart_in + - restart_out + - viz + - ignore + available_versions: + - ec-earth + - awicm-3.0 + - awicm-3.1 + - awicm-frontiers + - focioifs + - focioifs1 + bin_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/bin + bin_intermediate: + bin: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/bin/rnfmap/rnfma + bin_sources: + bin: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/bin/rnfma + bin_targets: + bin: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/rnfma + branch: esm-tools-focioifs + cflags: -fp-model precise -O3 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0 + clean_command: rm -rf bin; cd src; make clean; cd .. + comp_command: rm -rf bin; mkdir bin; cd src; make ; cd .. ; cp bin/rnfmap.exe ./bin/rnfma + compiletime_environment_changes: + add_export_vars: + - OIFS_OASIS_BASE=$(pwd)/oasis + - OIFS_OASIS_INCLUDE="-I$OIFS_OASIS_BASE/build/lib/psmile -I$OIFS_OASIS_BASE/build/lib/psmile/scrip -I$OIFS_OASIS_BASE/build/lib/psmile/mct -I$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu" + - OIFS_OASIS_LIB="-L$OIFS_OASIS_BASE/build/lib/psmile -L$OIFS_OASIS_BASE/build/lib/psmile/scrip -L$OIFS_OASIS_BASE/build/lib/psmile/mct -L$OIFS_OASIS_BASE/build/lib/psmile/mct/mpeu -lpsmile -lmct -lmpeu -lscrip" + - OIFS_NETCDF_INCLUDE="-I$NETCDFROOT/include" + - OIFS_NETCDF_LIB="-L$NETCDFROOT/lib -lnetcdf" + - OIFS_NETCDFF_INCLUDE="-I$NETCDFFROOT/include" + - OIFS_NETCDFF_LIB="-L$NETCDFFROOT/lib -lnetcdff" + - OIFS_FC=$FC + - OIFS_FFLAGS="-r8 -fp-model precise -align array32byte -O3 -xCORE_AVX2 -g -traceback -convert big_endian -fpe0" + - OIFS_FFIXED="" + - OIFS_FCDEFS="BLAS LITTLE LINUX INTEGER_IS_INT" + - OIFS_LFLAGS=$OIFS_MPI_LIB + - OIFS_CC=$CC + - OIFS_CFLAGS="-fp-model precise -O3 -xCORE_AVX2 -g -traceback -qopt-report=0 -fpe0" + - OIFS_CCDEFS="LINUX LITTLE INTEGER_IS_INT _ABI64 BLAS" + config_intermediate: + namelist.runoffmapper: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/rnfmap/namelist.runoffmapper + config_sources: + namelist.runoffmapper: /home/ollie/mandresm/esm_tools/namelists//rnfmap//namelist.runoffmapper + config_targets: + namelist.runoffmapper: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/namelist.runoffmapper + coupling_fields: + R_Calving_atm: + grid: rnfa + R_Calving_oce: + grid: rnfo + R_Runoff_atm: + grid: rnfa + R_Runoff_oce: + grid: rnfo + debug_info: + loaded_from_file: /home/ollie/mandresm/esm_tools/configs//components/rnfmap/rnfmap.yaml + description: 'River routing scheme taken from EC-Earth + + Modified for use in FOCI' + executable: rnfma + execution_command: rnfma + experiment_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/analysis/rnfmap/ + experiment_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/bin/rnfmap/ + experiment_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/config/rnfmap/ + experiment_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/couple/rnfmap/ + experiment_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/forcing/rnfmap/ + experiment_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/ignore/rnfmap/ + experiment_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/input/rnfmap/ + experiment_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/rnfmap/ + experiment_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/mon/rnfmap/ + experiment_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/outdata/rnfmap/ + experiment_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/rnfmap/ + experiment_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/rnfmap/ + experiment_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/viz/rnfmap/ + fflags: -r8 -fp-model precise -align array32byte -O3 -xCORE_AVX2 -g -traceback -convert big_endian -fpe0 + file_movements: + analysis: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + bin: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + config: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + couple: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + forcing: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + ignore: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + input: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + log: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + mon: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + outdata: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_in: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_out: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + scripts: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + unknown: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + viz: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + generate_namelist: 1 + git-repository: https://gitlab.dkrz.de/ec-earth/runoff-mapper.git + grids: + rnfa: + name: RnfA + nx: 512 + ny: 256 + oasis_grid_type: LR + rnfo: + name: RnfO + nx: 512 + ny: 256 + oasis_grid_type: LR + input_dir: /work/ollie/jstreffi/input/runoff-mapper + input_intermediate: + runoff_maps: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/rnfmap/runoff_maps.nc + input_sources: + runoff_maps: /work/ollie/jstreffi/input/runoff-mapper/runoff_maps_CORE2.nc + input_targets: + runoff_maps: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/runoff_maps.nc + install_bins: bin/rnfma + last_parent_date: '1999-12-31T20:00:00' + leapyear: true + lresume: false + model: rnfmap + model_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1 + namelist_changes: + namelist.runoffmapper: + NAMRNFMAP: + RunLengthSec: 86400 + TimeStepSec: 7200 + namelist_dir: /home/ollie/mandresm/esm_tools/namelists//rnfmap/ + namelists: + - namelist.runoffmapper + nproc: 1 + nproca: 1 + nprocb: 1 + nx: 512 + ny: 256 + omp_num_threads: 36 + parent_date: '1999-12-31T22:00:00' + parent_dir: /work/ollie/jstreffi/input/RUNOFF_MAPPER/restart/awicm3-v3.1-TCO95L91-CORE2_initial + parent_expid: awicm3-v3.1-TCO95L91-CORE2_initial + parent_restart_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/rnfmap/ + pool_dir: /work/ollie/jstreffi/input + prev_date: '1999-12-31T22:00:00' + resolution: 512x256 + restart: 1 + restart_rate: 1 + restart_unit: months + runoff_fields_recv: + - R_Runoff_atm + - R_Calving_atm + runoff_fields_send: + - R_Runoff_oce + - R_Calving_oce + runoff_file: /work/ollie/jstreffi/input/runoff-mapper/runoff_maps_CORE2.nc + runoff_maps_name: _CORE2 + runoff_method: awicm3-default + runtime_seconds: 86400 + thisrun_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/analysis/rnfmap/ + thisrun_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/bin/rnfmap/ + thisrun_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/rnfmap/ + thisrun_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/couple/rnfmap/ + thisrun_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/forcing/rnfmap/ + thisrun_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/ignore/rnfmap/ + thisrun_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/rnfmap/ + thisrun_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/rnfmap/ + thisrun_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/mon/rnfmap/ + thisrun_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/rnfmap/ + thisrun_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/rnfmap/ + thisrun_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/rnfmap/ + thisrun_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/viz/rnfmap/ + time_step: 7200 + type: river + version: focioifs1 +xios: + all_filetypes: + - analysis + - bin + - config + - forcing + - input + - couple + - log + - mon + - outdata + - restart_in + - restart_out + - viz + - ignore + archfile: ESMTOOLS_generic_intel + available_versions: + - 2.0_r982_ogcm + - 2.0_r982 + - trunk + - trunk_oasis + - 2.5 + - 2.5_r1910 + - 2.5_r1910_oifs + - 2.5_r1910_ogcm + bin_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/bin + bin_intermediate: + server: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/bin/xios/xios.x + bin_sources: + server: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1/bin/xios.x + bin_targets: + server: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/xios.x + branch: esm-tools + clean_command: rm -rf bin lib obj ppsrc cfg done etc flags inc tmp + comp_command: export XIOS_TOPLEVEL=/work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1; ./make_xios --arch ESMTOOLS_generic_intel --netcdf_lib netcdf4_par --full --job 24; cp bin/xios_server.exe bin/xios.x + config_intermediate: + axis_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/xios/axis_def.xml + context_ifs: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/xios/context_ifs.xml + domain_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/xios/domain_def.xml + field_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/xios/field_def.xml + file_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/xios/file_def.xml + grid_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/xios/grid_def.xml + io_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/xios/iodef.xml + config_sources: + axis_def: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/xios/TCO95_CORE2/axis_def.xml + context_ifs: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/xios/TCO95_CORE2/context_ifs.xml + domain_def: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/xios/TCO95_CORE2/domain_def.xml + field_def: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/xios/TCO95_CORE2/field_def.xml + file_def: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/xios/TCO95_CORE2/file_def.xml + grid_def: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/xios/TCO95_CORE2/grid_def.xml + io_def: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/xios/TCO95_CORE2/iodef.xml + config_sources_wild_card: + ifs_xml: '*' + config_targets: + axis_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/axis_def.xml + context_ifs: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/context_ifs.xml + domain_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/domain_def.xml + field_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/field_def.xml + file_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/file_def.xml + grid_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/grid_def.xml + io_def: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/iodef.xml + debug_info: + loaded_from_file: + - /home/ollie/mandresm/esm_tools/configs//components/xios/xios.yaml + destination: xios + environment_changes: + choose_computer.name: + ollie: + add_module_actions: + - unload netcdf + - load netcdf/4.4.1.1_intel_mpi + executable: xios.x + experiment_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/analysis/xios/ + experiment_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/bin/xios/ + experiment_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/config/xios/ + experiment_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/couple/xios/ + experiment_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/forcing/xios/ + experiment_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/ignore/xios/ + experiment_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/input/xios/ + experiment_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/log/xios/ + experiment_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/mon/xios/ + experiment_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/outdata/xios/ + experiment_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/xios/ + experiment_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/xios/ + experiment_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/viz/xios/ + file_movements: + analysis: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + bin: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + config: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + couple: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + forcing: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + ignore: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + input: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + log: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + mon: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + outdata: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_in: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + restart_out: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + scripts: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + unknown: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + viz: + exp_to_run: copy + init_to_exp: copy + run_to_work: copy + work_to_run: copy + git-repository: https://git.geomar.de/foci/src/xios.git + ignore_intermediate: + xios_registry: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/ignore/xios/xios_registry.bin + ignore_sources: + xios_registry: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work//xios_registry.bin + ignore_sources_wild_card: + xios_err: xios*.err + xios_int: xios_interpolation_weights* + xios_out: xios*.out + ignore_targets: + xios_registry: /work/ollie/mandresm/testing/run/awicm3/awicm3-v3.1-TCO95L91-CORE2_initial/ignore/xios/xios_registry.bin + install_bins: bin/xios.x + leapyear: true + lresume: false + metadata: + Authors: Yann Meurdesoif (yann.meurdesoif@cea.fr) + Description: A library dedicated to I/O management in climate codes. + Institute: IPSL and CEA + License: Please make sure you have a licence to use XIOS. In case you are unsure, please contact redmine... + Website: https://portal.enes.org/models/software-tools/xios + model: xios + nproc: 1 + omp_num_threads: 36 + parent_date: '2000-01-01T00:00:00' + parent_expid: awicm3-v3.1-TCO95L91-CORE2_initial + parent_restart_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/restart/xios/ + prev_date: '2000-01-01T00:00:00' + setup_dir: /work/ollie/mandresm/testing//comp/awicm3/awicm3-v3.1 + thisrun_analysis_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/analysis/xios/ + thisrun_bin_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/bin/xios/ + thisrun_config_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/config/xios/ + thisrun_couple_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/couple/xios/ + thisrun_forcing_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/forcing/xios/ + thisrun_ignore_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/ignore/xios/ + thisrun_input_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/xios/ + thisrun_log_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/log/xios/ + thisrun_mon_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/mon/xios/ + thisrun_outdata_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/outdata/xios/ + thisrun_restart_in_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/xios/ + thisrun_restart_out_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/restart/xios/ + thisrun_viz_dir: /work/ollie/mandresm/testing//run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/viz/xios/ + use_oasis: '' + version: 2.0r982 + xml_dir: /home/ollie/mandresm/esm_tools/namelists//oifs/43r3/xios/TCO95_CORE2 diff --git a/tests/test_esm_runscripts/test_filedicts.py b/tests/test_esm_runscripts/test_filedicts.py new file mode 100644 index 000000000..d6f2b29c6 --- /dev/null +++ b/tests/test_esm_runscripts/test_filedicts.py @@ -0,0 +1,1117 @@ +""" +Unit tests for the new file-dict feature + +Some considerations +~~~~~~~~~~~~~~~~~~~ +* It might be clever to put the "fake config" somewhere in the top level, but + then again, it would be nice to have a unique config for each test. This is + undeniably more verbose, but we then have very clear examples to follow when + we want to translate later on. +* You _could_ use the config in each function to generate the fake files, to + avoid repeating yourself; however, that adds real programming logic into the + unit test, which you don't really want. +""" +import os +import sys +from collections import namedtuple +from collections.abc import Callable +from io import StringIO +from pathlib import Path + +import pytest +import yaml + +import esm_calendar +import esm_runscripts.filedicts +import esm_runscripts.filedicts as filedicts + + +class Capturing(list): + """Taken from https://stackoverflow.com/questions/16571150/how-to-capture-stdout-output-from-a-python-function-call""" + + def __enter__(self): + self._stdout = sys.stdout + sys.stdout = self._stringio = StringIO() + return self + + def __exit__(self, *args): + self.extend(self._stringio.getvalue().splitlines()) + del self._stringio # free up some memory + sys.stdout = self._stdout + + +@pytest.fixture() +def config_tuple(): + """setup function + Generates fake config to be used before each test. NamedTuple has 2 fields: + - config: configuration dictionary + - attr_address: path to retrieve from the config + """ + config_str = """ + general: + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101" + exp_dir: "/work/ollie/pgierz/some_exp" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + valid_model_names: ["echam"] + jobtype: "prepcompute" + computer: + pool_dir: "/work/ollie/pool" + echam: + files: + jan_surf: + kind: input + allowed_to_be_missing: False + name_in_computer: T63CORE2_jan_surf.nc + name_in_work: unit.24 + path_in_computer: /work/ollie/pool/ECHAM/T63 + filetype: NetCDF + description: > + Initial values used for the simulation, including + properties such as geopotential, temperature, pressure + experiment_input_dir: "/work/ollie/pgierz/some_exp/input/echam" + thisrun_input_dir: "/work/ollie/pgierz/some_exp/run_20000101-20000101/input/echam" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(config_str) + config["general"]["current_date"] = date + attr_address = "echam.files.jan_surf" + # create a named tuple since configuration and the attribute address is tightly coupled to each other + Config_Tuple = namedtuple("Config_Tuple", ["config", "attr_address"]) + fake_config_tuple = Config_Tuple(config, attr_address) + yield fake_config_tuple + + +@pytest.fixture() +def simulation_file(fs, config_tuple): + """setup function + Generates + - fake SimulationFile + - source directory (computer) + - target directory (work) + - fake file on computer + to be used before each test + """ + config = config_tuple.config + attr_address = config_tuple.attr_address + fake_simulation_file = filedicts.SimulationFile.from_config(config, attr_address) + + fs.create_dir(fake_simulation_file.locations["work"]) + fs.create_dir(fake_simulation_file.locations["computer"]) + fs.create_dir(fake_simulation_file.locations["exp_tree"]) + fs.create_dir(fake_simulation_file.locations["run_tree"]) + fs.create_file(fake_simulation_file["absolute_path_in_computer"]) + + yield fake_simulation_file + + +@pytest.fixture() +def dated_simulation_file(fs, config_tuple): + config = config_tuple.config + attr_address = config_tuple.attr_address + date = esm_calendar.Date("2000-01-01") + fake_simulation_file = filedicts.DatedSimulationFile.from_config( + config, attr_address, date + ) + + fs.create_dir(fake_simulation_file.locations["work"]) + fs.create_dir(fake_simulation_file.locations["computer"]) + fs.create_dir(fake_simulation_file.locations["exp_tree"]) + fs.create_dir(fake_simulation_file.locations["run_tree"]) + fs.create_file(fake_simulation_file["absolute_path_in_computer"]) + + yield fake_simulation_file + + +def test_example(fs): + # Make a fake config: + config = """ + general: + base_dir: /some/dummy/location/ + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + jobtype: "prepcompute" + echam: + files: + jan_surf: + name: ECHAM Jan Surf File + path_in_computer: /work/ollie/pool/ECHAM + name_in_computer: T63CORE2_jan_surf.nc + name_in_work: unit.24 + kind: input + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(config) + config["general"]["current_date"] = date + # Create some fake files and directories you might want in your test + fs.create_file("/work/ollie/pool/ECHAM/T63CORE2_jan_surf.nc") + fs.create_dir("/some/dummy/location/expid/run_18500101-18501231/work") + # This module also have functions for link files, globbing, etc. + esm_runscripts.filedicts.copy_files(config) + assert os.path.exists("/some/dummy/location/expid/run_18500101-18501231/work/") + assert os.path.exists("/work/ollie/pool/ECHAM/T63CORE2_jan_surf.nc") + + +def test_filedicts_basics(fs): + """Tests basic attribute behavior of filedicts""" + + dummy_config = """ + general: + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101" + exp_dir: "/work/ollie/pgierz/some_exp" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + jobtype: "prepcompute" + computer: + pool_dir: "/work/ollie/pool" + echam: + files: + jan_surf: + name_in_computer: T63CORE2_jan_surf.nc + name_in_work: unit.24 + path_in_computer: /work/ollie/pool/ECHAM/T63 + filetype: NetCDF + kind: input + description: > + Initial values used for the simulation, including + properties such as geopotential, temperature, pressure + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + # Not needed for this test, just a demonstration: + fs.create_file("/work/ollie/pool/ECHAM/T63/T63CORE2_jan_surf.nc") + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.jan_surf" + ) + assert sim_file["name_in_work"] == "unit.24" + assert sim_file.locations["work"] == Path( + "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + ) + # NOTE(PG): This check is removed, a SimulationFile no longer needs to know it was initialized from a config + # assert sim_file._config == config + assert sim_file.locations["computer"] == Path("/work/ollie/pool/ECHAM/T63") + + +# === +# tests for SimulationFile._path_type() method +# === +def test_path_type_raises_exception_on_incompatible_input(simulation_file): + # check for incompatible type + with pytest.raises(TypeError): + simulation_file._path_type(12312312) + + +def test_path_type_detects_non_existing_file(simulation_file): + # check for non-existent directory / file + path = "/this/path/does/not/exist" + output = simulation_file._path_type(path) + assert output == filedicts.FileStatus.NOT_EXISTS + + +def test_path_type_detects_symbolic_link(simulation_file, fs): + # check for link + mylink = "/tmp/mylink" + fs.create_symlink(mylink, simulation_file["absolute_path_in_computer"]) + output = simulation_file._path_type(mylink) + assert output == filedicts.FileStatus.LINK + + +def test_path_type_detects_file(simulation_file): + # check for file + output = simulation_file._path_type(simulation_file["absolute_path_in_computer"]) + assert output == filedicts.FileStatus.FILE + + +def test_path_type_detects_directory(simulation_file): + # check for directory + output = simulation_file._path_type(simulation_file.locations["work"]) + assert output == filedicts.FileStatus.DIR + + +# === end of the tests for _path_type() method + + +# === +# tests for SimulationFile._check_source_and_target() method +# === +def test_check_source_and_targets_works_as_expected(simulation_file, fs): + # successful return + path_str = "/home/ollie/dural/test_dir" + fs.create_dir(path_str) + source_path = simulation_file.locations["computer"] + target_path = Path(f"{path_str}/file.txt") + output = simulation_file._check_source_and_target(source_path, target_path) + assert output == True + + +def test_check_source_and_targets_raises_exception_on_incompatible_input_type( + simulation_file, +): + # check incompatible types for file paths + with pytest.raises(TypeError): + simulation_file._check_source_and_target(Path("/usr/bin"), {"foo": 1}) + with pytest.raises(TypeError): + simulation_file._check_source_and_target(1234, 3.1415) + + +def test_check_source_and_targets_raises_exception_on_nonexisting_directory( + simulation_file, +): + # source does not exist + source_path = Path("/this/does/not/exist") + target_path = simulation_file.locations["work"] + with pytest.raises(FileNotFoundError): + simulation_file._check_source_and_target(source_path, target_path) + + # target does not exist + source_path = simulation_file.locations["computer"] + target_path = Path("/this/does/not/exist") + with pytest.raises(FileNotFoundError): + simulation_file._check_source_and_target(source_path, target_path) + + +# === end of the tests for check_source_and_target() method + + +def test_allowed_to_be_missing_attr(): + """Ensures the property allowed_to_be_missing works correctly""" + dummy_config = """ + general: + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + exp_dir: "/work/ollie/pgierz/some_exp" + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + jobtype: "prepcompute" + computer: + pool_dir: "/work/ollie/pool" + echam: + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam + files: + human_readable_tag_001: + allowed_to_be_missing: True + path_in_computer: "/some/location/on/ollie" + name_in_computer: "foo" + kind: "input" + human_readable_tag_002: + allowed_to_be_missing: False + path_in_computer: "/some/location/on/ollie" + name_in_computer: "bar" + kind: "input" + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + # Not needed for this test, just a demonstration: + sim_file_001 = esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.human_readable_tag_001" + ) + sim_file_002 = esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.human_readable_tag_002" + ) + + assert sim_file_001.allowed_to_be_missing == True + assert sim_file_002.allowed_to_be_missing == False + + +def test_allowed_to_be_missing_mv(fs): + """Checks that files in move mode which are allowed to be missing are skipped""" + dummy_config = """ + general: + expid: expid + base_dir: /some/dummy/location/ + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20011231/work" + exp_dir: "/work/ollie/pgierz/some_exp" + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20011231" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + jobtype: "prepcompute" + computer: + pool_dir: "/work/ollie/pool" + echam: + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20011231/input/echam + files: + human_readable_tag_001: + kind: input + allowed_to_be_missing: True + name_in_computer: foo + path_in_computer: /work/data/pool + name_in_work: foo + path_in_work: . + movement_type: move + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + fs.create_dir("/work/data/pool") + fs.create_file("/work/data/pool/not_foo_at_all") + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.human_readable_tag_001" + ) + sim_file.mv("computer", "work") + assert not os.path.exists( + "/work/ollie/pgierz/some_exp/run_20010101-20011231/work/foo" + ) + + +def test_allowed_to_be_missing_mv_if_exists(fs): + """Checks that a file which is allowed to be missing is still moved if it exists""" + dummy_config = """ + general: + expid: expid + base_dir: "/work/ollie/pgierz/some_exp" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20011231/work" + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20011231" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + computer: + pool_dir: "/work/ollie/pool" + echam: + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20011231/input/echam + files: + human_readable_tag_001: + kind: input + allowed_to_be_missing: True + name_in_computer: foo + path_in_computer: /work/data/pool + name_in_work: foo + path_in_work: . + movement_type: move + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + fs.create_dir("/work/data/pool") + fs.create_file("/work/data/pool/foo") + fs.create_dir("/work/ollie/pgierz/some_exp/run_20010101-20011231/work") + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.human_readable_tag_001" + ) + sim_file.mv("computer", "work") + assert os.path.exists("/work/ollie/pgierz/some_exp/run_20010101-20011231/work/foo") + + +def test_cp_file(fs): + """Tests for ``filedicts.cp`` copying file""" + + dummy_config = """ + general: + thisrun_work_dir: /work/ollie/mandresm/awiesm/run_20010101-20010101/work/ + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + echam: + files: + jan_surf: + name_in_computer: T63CORE2_jan_surf.nc + name_in_work: unit.24 + kind: input + path_in_computer: /work/ollie/pool/ECHAM/T63/ + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + + # Set source and targets + target_folder = config["general"]["thisrun_work_dir"] + source = Path( + config["echam"]["files"]["jan_surf"]["path_in_computer"], + config["echam"]["files"]["jan_surf"]["name_in_computer"], + ) + target = Path( + target_folder, + config["echam"]["files"]["jan_surf"]["name_in_work"], + ) + # Create files and folders + fs.create_file(source) + fs.create_dir(target_folder) + + # Test the method + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.jan_surf" + ) + sim_file.cp("computer", "work") + + assert os.path.exists(target) + + +def test_cp_folder(fs): + """Tests for ``filedicts.cp`` copying folder""" + + dummy_config = """ + general: + thisrun_work_dir: /work/ollie/mandresm/awiesm/run_20010101-20010101/work/ + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + oifs: + files: + o3_data: + name_in_computer: o3chem_l91 + name_in_work: o3chem_l91 + kind: input + path_in_computer: /work/ollie/pool/OIFS/159_4 + datestamp_method: never + experiment_input_dir: /work/ollie/pgierz/some_exp/input/oifs + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/oifs + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + + # Set source and targets + target_folder = config["general"]["thisrun_work_dir"] + source = Path( + config["oifs"]["files"]["o3_data"]["path_in_computer"], + config["oifs"]["files"]["o3_data"]["name_in_computer"], + ) + target = Path( + target_folder, + config["oifs"]["files"]["o3_data"]["name_in_work"], + ) + # Create files and folders + fs.create_dir(source) + fs.create_dir(target_folder) + + # Test the method + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "oifs.files.o3_data" + ) + sim_file.cp("computer", "work") + + assert os.path.exists(target) + + +def test_resolve_file_movements(config_tuple): + # arrange config-in + config = config_tuple.config + attr_address = config_tuple.attr_address + filedicts.SimulationFile.from_config(config, attr_address) + config = filedicts.resolve_file_movements(config) + + # check config-out + assert isinstance(config, dict) + + +def test_mv(fs): + """Tests for mv""" + dummy_config = """ + general: + exp_dir: "/work/ollie/pgierz/some_exp" + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + computer: + pool_dir: "/work/ollie/pool" + echam: + files: + jan_surf: + name_in_computer: T63CORE2_jan_surf.nc + path_in_computer: /work/ollie/pool/ECHAM/T63/ + kind: input + name_in_work: unit.24 + path_in_work: . + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + fs.create_file("/work/ollie/pool/ECHAM/T63/T63CORE2_jan_surf.nc") + fs.create_dir("/work/ollie/pgierz/some_exp/run_20010101-20010101/work") + assert os.path.exists("/work/ollie/pool/ECHAM/T63/T63CORE2_jan_surf.nc") + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.jan_surf" + ) + sim_file.mv("computer", "work") + assert not os.path.exists("/work/ollie/pool/ECHAM/T63/T63CORE2_jan_surf.nc") + assert os.path.exists( + "/work/ollie/pgierz/some_exp/run_20010101-20010101/work/unit.24" + ) + + +# === +# Tests for SimulationFile.ln() method +# + 1) check if function is callable +# + 2) check if linking occurs +# + 3) check for self pointing +# + 4) check if target path is a directory and not a file # <-- PG NO!!! +# + 5) check if target file already exists or a symlink +# + 6) check if source file does not exists +# + 8) check if target directory does not exist +# === +def test_ln_iscallable(simulation_file): + assert isinstance(simulation_file.ln, Callable) + + +def test_ln_links_file_from_computer_to_work(simulation_file): + file_path_in_work = simulation_file["absolute_path_in_work"] + file_path_in_computer = simulation_file["absolute_path_in_computer"] + + simulation_file.ln("computer", "work") + assert os.path.exists(file_path_in_computer) + assert os.path.exists(file_path_in_work) + + +def test_ln_raises_exception_when_source_is_a_broken_link(simulation_file, fs): + # create a symbolic link that points to a non-existing file + broken_path_str = "/this/does/not/exist" + link_str = "/tmp/broken_link" + fs.create_symlink(link_str, broken_path_str) + # overwrite the path in computer with the link to trigger the exception + simulation_file["absolute_path_in_computer"] = Path(link_str).absolute() + + with pytest.raises(FileNotFoundError): + simulation_file.ln("computer", "work") + + +def test_ln_raises_exception_when_target_is_a_directory_and_not_a_file(simulation_file): + # Since the simulation_file fixture is a fake_jan_surf, we need the work folder: + simulation_file["absolute_path_in_work"] = simulation_file.locations["work"] + with pytest.raises(OSError): + simulation_file.ln("computer", "work") + + +def test_ln_raises_exception_when_target_path_exists(dated_simulation_file, fs): + file_path_in_work = dated_simulation_file["absolute_path_in_work"] + # create the target file so that it will raise an exception + fs.create_file(file_path_in_work) + dated_simulation_file._datestamp_method = "never" + + with pytest.raises(FileExistsError): + dated_simulation_file.ln("computer", "work") + + +def test_ln_raises_exception_when_source_file_does_not_exist(simulation_file, fs): + fs.remove_object(str(simulation_file["absolute_path_in_computer"])) + with pytest.raises(FileNotFoundError): + simulation_file.ln("computer", "work") + + +def test_ln_raises_exception_when_target_path_does_not_exist(simulation_file, fs): + fs.remove_object(str(simulation_file.locations["work"])) + with pytest.raises(FileNotFoundError): + simulation_file.ln("computer", "work") + + +# ========== end of ln() tests ========== + + +def test_check_file_syntax_kind_missing(): + """Tests for ``kind`` variable missing""" + dummy_config = """ + general: + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + echam: + files: + jan_surf: + name_in_work: unit.24 + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + + # Captures output (i.e. the user-friendly error) + with Capturing() as output: + with pytest.raises(SystemExit): + esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.jan_surf" + ) + + error_text = "the \x1b[31mkind\x1b[0m variable is missing" + assert any([error_text in line for line in output]) + + +def test_check_file_syntax_kind_incorrect(): + """Tests for ``kind`` variable being incorrectly defined""" + dummy_config = """ + general: + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + echam: + files: + jan_surf: + kind: is_wrong + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + + # Captures output (i.e. the user-friendly error) + with Capturing() as output: + with pytest.raises(SystemExit): + esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.jan_surf" + ) + + error_text = "is_wrong\x1b[0m is not a supported \x1b[31mkind" + assert any([error_text in line for line in output]) + + +def test_check_file_syntax_input(): + """ + Tests for missing ``name_in_computer`` and ``path_in_computer`` for input file types + """ + dummy_config = """ + general: + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + echam: + files: + jan_surf: + kind: input + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + + # Captures output (i.e. the user-friendly error) + with Capturing() as output: + with pytest.raises(SystemExit): + esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.jan_surf" + ) + + error_text = "the \x1b[31mpath_in_computer\x1b[0m variable is missing" + assert any([error_text in line for line in output]) + error_text = "the \x1b[31mname_in_computer\x1b[0m variable is missing" + assert any([error_text in line for line in output]) + + +def test_check_file_syntax_output(): + """Tests for missing ``name_in_work`` for output file types""" + dummy_config = """ + general: + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + echam: + files: + jan_surf: + kind: outdata + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + + # Captures output (i.e. the user-friendly error) + with Capturing() as output: + with pytest.raises(SystemExit): + esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.jan_surf" + ) + + error_text = "the \x1b[31mname_in_work\x1b[0m variable is missing" + assert any([error_text in line for line in output]) + + +def test_check_path_in_computer_is_abs(simulation_file): + """ + Tests that ``esm_parser.user_error`` is used when the ``path_in_computer`` + is not absolute + """ + simulation_file.paths["computer"] = Path("foo/bar") + + # Captures output (i.e. the user-friendly error) + with Capturing() as output: + with pytest.raises(SystemExit): + simulation_file._check_path_in_computer_is_abs( + simulation_file.paths, simulation_file.component, simulation_file.name + ) + + # error needs to occur as the path is not absolute + assert any(["ERROR: File Dictionaries" in line for line in output]) + + +def test_resolve_abs_paths(): + """ + Tests ``_resolve_abs_paths`` + """ + + dummy_config = """ + general: + thisrun_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101" + thisrun_work_dir: "/work/ollie/pgierz/some_exp/run_20010101-20010101/work" + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + echam: + files: + jan_surf: + kind: input + name_in_computer: T63CORE2_jan_surf.nc + name_in_work: unit.24 + path_in_computer: /work/ollie/pool/ECHAM/T63/ + experiment_input_dir: /work/ollie/pgierz/some_exp/input/echam + thisrun_input_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "echam.files.jan_surf" + ) + + assert sim_file["absolute_path_in_work"] == Path( + "/work/ollie/pgierz/some_exp/run_20010101-20010101/work/unit.24" + ) + assert sim_file["absolute_path_in_computer"] == Path( + "/work/ollie/pool/ECHAM/T63/T63CORE2_jan_surf.nc" + ) + assert sim_file["absolute_path_in_exp_tree"] == Path( + "/work/ollie/pgierz/some_exp/input/echam/T63CORE2_jan_surf.nc" + ) + assert sim_file["absolute_path_in_run_tree"] == Path( + "/work/ollie/pgierz/some_exp/run_20010101-20010101/input/echam/T63CORE2_jan_surf.nc" + ) + + +def test_resolve_paths_old_config(): + """ + Tests ``_resolve_paths`` + """ + # Load an old config + tests_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), ".") + with open(f"{tests_path}/awicm3_config.yaml", "r") as f: + config = yaml.safe_load(f) + # Add the new ``files`` dictionary + config["oifs"]["files"] = { + "o3_data": { + "name_in_computer": "o3chem_l91", + "name_in_work": "o3chem_l91", + "kind": "input", + "path_in_computer": "/work/ollie/jstreffi/input/oifs-43r3/43r3/climate/95_4", + } + } + + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "oifs.files.o3_data" + ) + + assert sim_file["absolute_path_in_work"] == Path( + "/work/ollie/mandresm/testing/run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/work/o3chem_l91" + ) + assert sim_file["absolute_path_in_computer"] == Path( + "/work/ollie/jstreffi/input/oifs-43r3/43r3/climate/95_4/o3chem_l91" + ) + assert sim_file["absolute_path_in_exp_tree"] == Path( + "/work/ollie/mandresm/testing/run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/input/oifs/o3chem_l91" + ) + assert sim_file["absolute_path_in_run_tree"] == Path( + "/work/ollie/mandresm/testing/run/awicm3//awicm3-v3.1-TCO95L91-CORE2_initial/run_20000101-20000101/input/oifs/o3chem_l91" + ) + + +def test_datestamp_method_attr(simulation_file): + assert hasattr(simulation_file, "datestamp_method") + assert isinstance(simulation_file.datestamp_method, str) + assert simulation_file.datestamp_method in ["never", "always", "avoid_overwrite"] + with pytest.raises(ValueError, match="one of never, always, or avoid_overwrite"): + simulation_file["datestamp_method"] = "blah" + with pytest.raises(ValueError, match="one of never, always, or avoid_overwrite"): + simulation_file.datestamp_method = "blah" + with pytest.raises(ValueError, match="one of never, always, or avoid_overwrite"): + simulation_file.update(dict(datestamp_method="blah")) + + +def test_datestamp_format_attr(simulation_file): + assert hasattr(simulation_file, "datestamp_format") + assert isinstance(simulation_file.datestamp_format, str) + assert simulation_file.datestamp_format in ["check_from_filename", "append"] + with pytest.raises(ValueError, match="one of check_from"): + simulation_file["datestamp_format"] = "blah" + with pytest.raises(ValueError, match="one of "): + simulation_file.datestamp_format = "blah" + with pytest.raises(ValueError, match="one of check_from"): + simulation_file.update(dict(datestamp_format="blah")) + + +@pytest.mark.parametrize("movement_type", ["mv", "ln", "cp"]) +def test_datestamp_added_by_default(dated_simulation_file, fs, movement_type): + """ + Checks that the simulation file gets a timestamp if a file already exists with that name + + Defaults checked: + ----------------- + * datestamp_format: append + * datestamp_method: avoid_overwrite + """ + simulation_file_meth = getattr(dated_simulation_file, movement_type) + simulation_file2 = dated_simulation_file # Make a copy + simulation_file2_meth = getattr(simulation_file2, movement_type) + simulation_file_meth("computer", "work") + if movement_type == "mv": + assert not os.path.exists("/work/ollie/pool/ECHAM/T63/T63CORE2_jan_surf.nc") + # Recreate the moved file in computer (let's pretend we copied it): + fs.create_file(simulation_file2["absolute_path_in_computer"]) + assert os.path.exists( + "/work/ollie/pgierz/some_exp/run_20010101-20010101/work/unit.24" + ) + simulation_file2_meth("computer", "work") + assert os.path.exists( + "/work/ollie/pgierz/some_exp/run_20010101-20010101/work/unit.24_2000-01-01T00:00:00" + ) + simulation_file_meth("work", "run_tree") + assert os.path.exists( + "/work/ollie/pgierz/some_exp/run_20000101-20000101/input/echam/T63CORE2_jan_surf.nc" + ) + simulation_file_meth("run_tree", "exp_tree") + + +def test_datestamp_not_added_if_attr_set(): + pass # Still to be implemented + + +def test_datestamp_not_added_if_in_filename(): + pass # Still to be implemented + + +def test_fname_has_date_stamp_info(): + fname = "blah_2000-01-01.nc" + fname2 = "blah_without_a_date_in_the_name.nc" + fname3 = "blah_with_a_wrong_date_2004-01-01.nc" + date = esm_calendar.Date("2000-01-01T00:00:00") + assert filedicts._fname_has_date_stamp_info(fname, date) + assert not filedicts._fname_has_date_stamp_info(fname2, date) + assert not filedicts._fname_has_date_stamp_info(fname3, date) + + +def test_wild_card_check(): + """Tests that wild card check is passed""" + source_name = "a_wild_card*name*.txt" + target_name = "another_wild_card*newname*.txt1" + source_pattern = source_name.split("*") + target_pattern = target_name.split("*") + + assert esm_runscripts.filedicts.SimulationFile._wild_card_check( + source_pattern, target_pattern + ) + + +def test_wild_card_check_fails(): + """ + Tests that, when given an incorrect wildcard pattern (more wildcards in source than + in target), a ``user_error`` is reported + """ + source_name = "a_wild_card*name*.txt" + target_name = "another_wild_cardnewname*.txt1" + source_pattern = source_name.split("*") + target_pattern = target_name.split("*") + + # Captures output (i.e. the user-friendly error) + with Capturing() as output: + with pytest.raises(SystemExit): + esm_runscripts.filedicts.SimulationFile._wild_card_check( + source_pattern, target_pattern + ) + + # error needs to occur as the path is not absolute + assert any(["The wild card pattern of the source" in line for line in output]) + + +def test_find_globbing_files(fs): + """ + Tests for files with the globbing pattern not found + """ + + dummy_config = """ + general: + thisrun_work_dir: /work/ollie/mandresm/awiesm/run_20010101-20010101/work/ + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + oifs: + files: + oifsnc: + name_in_work: input_expid_*_DATE_*.nc + name_in_exp_tree: new_input_expid_*_NEW_DATE_*.nc + kind: outdata + experiment_outdata_dir: /work/ollie/pgierz/some_exp/input/oifs + thisrun_outdata_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/oifs + """ + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + # These files are incorrect since they do not have input_expid and instead have input_ + files = [ + "input_11_DATE_12.nc", + "input_21_DATE_22.nc", + "input_31_DATE_32.nc", + ] + for f in files: + fs.create_file(Path(config["general"]["thisrun_work_dir"]).joinpath(f)) + + fs.create_dir(config["oifs"]["experiment_outdata_dir"]) + + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "oifs.files.oifsnc" + ) + + # Captures output (i.e. the user-friendly error) + with Capturing() as output: + with pytest.raises(SystemExit): + sim_file.cp("work", "exp_tree") + + # error needs to occur as the path is not absolute + assert any(["No files found for the globbing pattern" in line for line in output]) + + +def test_globbing_cp(fs): + """Tests globbing for copying""" + + dummy_config = """ + general: + thisrun_work_dir: /work/ollie/mandresm/awiesm/run_20010101-20010101/work/ + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + oifs: + files: + oifsnc: + name_in_work: input_expid_*_DATE_*.nc + name_in_exp_tree: new_input_expid_*_NEW_DATE_*.nc + kind: outdata + experiment_outdata_dir: /work/ollie/pgierz/some_exp/input/oifs + thisrun_outdata_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/oifs + """ + + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + files = [ + "input_expid_11_DATE_12.nc", + "input_expid_21_DATE_22.nc", + "input_expid_31_DATE_32.nc", + ] + for f in files: + fs.create_file(Path(config["general"]["thisrun_work_dir"]).joinpath(f)) + + fs.create_dir(config["oifs"]["experiment_outdata_dir"]) + + new_files = [ + "new_input_expid_11_NEW_DATE_12.nc", + "new_input_expid_21_NEW_DATE_22.nc", + "new_input_expid_31_NEW_DATE_32.nc", + ] + expected_new_paths = [] + for f in new_files: + expected_new_paths.append( + Path(config["oifs"]["experiment_outdata_dir"]).joinpath(f) + ) + + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "oifs.files.oifsnc" + ) + sim_file.cp("work", "exp_tree") + + for nf in expected_new_paths: + assert os.path.exists(nf) + + +def test_globbing_mv(fs): + """Tests globbing for moving""" + + dummy_config = """ + general: + thisrun_work_dir: /work/ollie/mandresm/awiesm/run_20010101-20010101/work/ + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + oifs: + files: + oifsnc: + name_in_work: input_expid_*_DATE_*.nc + name_in_exp_tree: new_input_expid_*_NEW_DATE_*.nc + kind: outdata + experiment_outdata_dir: /work/ollie/pgierz/some_exp/input/oifs + thisrun_outdata_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/oifs + """ + + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + files = [ + "input_expid_11_DATE_12.nc", + "input_expid_21_DATE_22.nc", + "input_expid_31_DATE_32.nc", + ] + for f in files: + fs.create_file(Path(config["general"]["thisrun_work_dir"]).joinpath(f)) + + fs.create_dir(config["oifs"]["experiment_outdata_dir"]) + + new_files = [ + "new_input_expid_11_NEW_DATE_12.nc", + "new_input_expid_21_NEW_DATE_22.nc", + "new_input_expid_31_NEW_DATE_32.nc", + ] + expected_new_paths = [] + for f in new_files: + expected_new_paths.append( + Path(config["oifs"]["experiment_outdata_dir"]).joinpath(f) + ) + + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "oifs.files.oifsnc" + ) + sim_file.mv("work", "exp_tree") + + for nf in expected_new_paths: + assert os.path.exists(nf) + + +def test_globbing_ln(fs): + """Tests globbing for linking""" + + dummy_config = """ + general: + thisrun_work_dir: /work/ollie/mandresm/awiesm/run_20010101-20010101/work/ + all_model_filetypes: [analysis, bin, config, forcing, input, couple, log, mon, outdata, restart, viz, ignore] + oifs: + files: + oifsnc: + name_in_work: input_expid_*_DATE_*.nc + name_in_exp_tree: new_input_expid_*_NEW_DATE_*.nc + kind: outdata + experiment_outdata_dir: /work/ollie/pgierz/some_exp/input/oifs + thisrun_outdata_dir: /work/ollie/pgierz/some_exp/run_20010101-20010101/input/oifs + """ + + date = esm_calendar.Date("2000-01-01T00:00:00") + config = yaml.safe_load(dummy_config) + config["general"]["current_date"] = date + files = [ + "input_expid_11_DATE_12.nc", + "input_expid_21_DATE_22.nc", + "input_expid_31_DATE_32.nc", + ] + for f in files: + fs.create_file(Path(config["general"]["thisrun_work_dir"]).joinpath(f)) + + fs.create_dir(config["oifs"]["experiment_outdata_dir"]) + + new_files = [ + "new_input_expid_11_NEW_DATE_12.nc", + "new_input_expid_21_NEW_DATE_22.nc", + "new_input_expid_31_NEW_DATE_32.nc", + ] + expected_new_paths = [] + for f in new_files: + expected_new_paths.append( + Path(config["oifs"]["experiment_outdata_dir"]).joinpath(f) + ) + + sim_file = esm_runscripts.filedicts.SimulationFile.from_config( + config, "oifs.files.oifsnc" + ) + sim_file.ln("work", "exp_tree") + + for nf in expected_new_paths: + assert os.path.exists(nf) diff --git a/utils/environment.yaml b/utils/environment.yaml index 48fe558a1..cd2db56ec 100644 --- a/utils/environment.yaml +++ b/utils/environment.yaml @@ -30,6 +30,7 @@ dependencies: - packaging - pandas>=1.0 - psutil + - pyfakefs=5.1.0 - pyyaml - pyyaml>=5.1 - questionary