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