diff --git a/docs/about/contact.md b/docs/about/contact.md index e49ee07ef..2ea7bc7ff 100644 --- a/docs/about/contact.md +++ b/docs/about/contact.md @@ -29,5 +29,5 @@ ACCESS-Hive is an open community supported effort. The underpinning infrastructu [access-about]: https://www.access-nri.org.au/about/what-is-access-nri/ [access-contact]: https://www.access-nri.org.au/contact/ [issues]: https://github.com/ACCESS-Hive/access-hive.github.io/issues -[support]: support.md +[support]: user_support.md [access-hive-forum]: https://forum.access-hive.org.au diff --git a/docs/about/policies.md b/docs/about/policies.md index 2c283e756..2cf372921 100644 --- a/docs/about/policies.md +++ b/docs/about/policies.md @@ -1,4 +1,4 @@ -#
Policies {{ supported }}
+#
Policies
- [Procedures and Practices][pandp]: Contains documents outlining how ACCESS-NRI will function. These documents describe what users can expect and justifications for the decisions against criteria that are based on the values of the organisation. diff --git a/docs/about/support.md b/docs/about/support.md deleted file mode 100644 index f1e434732..000000000 --- a/docs/about/support.md +++ /dev/null @@ -1,27 +0,0 @@ -#
Support
- -## Support levels - -The site uses a system of tags to identify who supports the linked documentation or software, and the level of support you can expect: - -`Supported by ACCESS-NRI` {{ supported }} - -: Documentation that is actively maintained and supported by ACCESS-NRI. This is documentation that was either created by ACCESS-NRI, or it is existing documentation for which ACCESS-NRI has taken over responsibility. - -`Recommended by ACCESS-NRI` {{ recommended }} - -: Documentation for third-party software that ACCESS-NRI recommends and facilitates the use of at [NCI][nci-web] as a service to the community. This means ACCESS-NRI supports the infrastructure required to run the software, but not necessarily the software itself. - -`Community contributed` {{ community }} - -: Documentation that is of use to the community, but is not explicitly endorsed or supported by ACCESS-NRI. - -## How to get help - -Each entry on ACCESS-Hive links to another web site. There should be information on how to get help on the linked site. If there are no obvious channels for help, or the help is not adequate consider asking for assistance from fellow members of your community on the [ACCESS-Hive forum][access-hive-forum]. - -In the case of ACCESS-NRI supported documentation and software, marked {{ supported }}, if there is no information on how to get help, or your query is not appropriate for the support channels provided, please either ask on the [ACCESS-Hive forum][access-hive-forum] or [contact ACCESS-NRI directly][contact]. - -[contact]: contact.md -[nci-web]: https://www.nci.org.au -[access-hive-forum]: https://forum.access-hive.org.au \ No newline at end of file diff --git a/docs/about/user_support.md b/docs/about/user_support.md new file mode 100644 index 000000000..6a83441e4 --- /dev/null +++ b/docs/about/user_support.md @@ -0,0 +1,11 @@ +#
User support
+ +## How to get help + +Each entry on ACCESS-Hive links to another web site. There should be information on how to get help on the linked site. If there are no obvious channels for help, or the help is not adequate consider asking for assistance from fellow members of your community on the [ACCESS-Hive forum][access-hive-forum]. + +In the case of ACCESS-NRI supported documentation and software, marked , if there is no information on how to get help, or your query is not appropriate for the support channels provided, please either ask on the [ACCESS-Hive forum][access-hive-forum] or [contact ACCESS-NRI directly][contact]. + +[contact]: contact.md +[nci-web]: https://www.nci.org.au +[access-hive-forum]: https://forum.access-hive.org.au \ No newline at end of file diff --git a/docs/assets/community-forum-homepage.png b/docs/assets/community-forum-homepage.png index 5fb0ef87a..fb1eaf927 100644 Binary files a/docs/assets/community-forum-homepage.png and b/docs/assets/community-forum-homepage.png differ diff --git a/docs/community_resources/community_data_processing.md b/docs/community_resources/community_data_processing.md index 686c4a315..2f40edbfc 100644 --- a/docs/community_resources/community_data_processing.md +++ b/docs/community_resources/community_data_processing.md @@ -5,14 +5,14 @@ ## Tools -### Kerchunk {{ community }} +### Kerchunk [**Documentation**][kerchunk-doc] | [**Sources**][kerchunk-source] Kerchunk is a library that provides a unified way to represent a variety of chunked, compressed data formats (e.g. NetCDF/HDF5, GRIB2, TIFF, …), allowing efficient access to the data from traditional file systems or cloud object storage. It also provides a flexible way to create virtual datasets from multiple files. -### CMOR3 {{ community }} +### CMOR3 *Climate Model Output Rewriter Version 3* @@ -21,7 +21,7 @@ Kerchunk is a library that provides a unified way to represent a variety of chun CMOR is used to produce CF-compliant netCDF files. The structure of the files created by CMOR and the metadata they contain fulfill the requirements of many of the climate community’s standard model experiments (which are referred to here as “MIPs” and include, for example, AMIP, PMIP, APE, and IPCC scenario runs). -### xMIP {{ community }} +### xMIP [**Documentation**][xmip-doc] | [**Tutorial on NCI**][xmip-tutorial] | @@ -29,7 +29,7 @@ CMOR is used to produce CF-compliant netCDF files. The structure of the files cr This package facilitates the cleaning, organization and interactive analysis of Model Intercomparison Projects (MIPs) within the Pangeo software stack. -### APP4 (The ACCESS Post Processor) {{ community }} +### APP4 (The ACCESS Post Processor) [**Documentation**][APP4-doc] | [**Sources**][APP4-source] @@ -37,25 +37,25 @@ This package facilitates the cleaning, organization and interactive analysis of The APP4 is a CMORisation tool designed to convert ACCESS model output to ESGF-compliant formats, primarily for publication to CMIP6. The code was originally built for CMIP5, and was further developed for CMIP6-era activities. Uses CMOR3 and files created with the CMIP6 data request to generate CF-compliant files according to the CMIP6 data standards. -### ACCESS-Archiver {{ community }} +### ACCESS-Archiver [**Documentation**][ACCESS-Archiver-doc] | [**Sources**][ACCESS-Archiver-source] The ACCESS Archiver is designed to archive model output from ACCESS simulations. It's focus is to copy ACCESS model output from its initial location to a secondary location (typically from `/scratch` to `/g/data`), while converting UM files to netCDF, compressing MOM/CICE files, and culling restart files to 10-yearly. Saves 50-80% of storage space due to conversion and compression. -### Synda {{ recommended }} +### Synda synda is a command line tool to search and download files from the Earth System Grid Federation (ESGF) archive. -### FluxnetLSM {{ community }} +### FluxnetLSM [**Citation** [@Ukkola2017]][fluxnetlsm-cite] | [**Sources**][fluxnetlsm-source] R package for post-processing FLUXNET datasets for use in land surface modelling. Performs quality control and data conversion of FLUXNET data and collated site metadata. Supports FLUXNET2015, La Thuile, OzFlux and ICOS data releases. -### Metpy {{ community }} +### Metpy https://unidata.github.io/MetPy/latest/examples/formats/index.html @@ -66,14 +66,14 @@ MetPy is a collection of tools in Python for reading, visualizing, and performin Format types are: GINI Water Vapor Imagery, NEXRAD Level 3 File, and NEXRAD Level 2 File. -### xskillscore {{ community }} +### xskillscore [**Documentation**][xskillscore-doc] | [**Sources**][xskillscore-source] xskillscore is a Python library for computing a wide variety of skill metrics. Its typical application is to verify deterministic and probabilistic forecasts relative to observations. -## Analysis blogposts and tutorials {{ community }} +## Analysis blogposts and tutorials [Accessing NetCDF and GRIB file collections as cloud-native virtual datasets using Kerchunk, Peter March, Sep 2022](https://medium.com/pangeo/accessing-netcdf-and-grib-file-collections-as-cloud-native-virtual-datasets-using-kerchunk-625a2d0a9191) diff --git a/docs/community_resources/community_med_recipes.md b/docs/community_resources/community_med_recipes.md index 70254085c..acbf87e48 100644 --- a/docs/community_resources/community_med_recipes.md +++ b/docs/community_resources/community_med_recipes.md @@ -2,7 +2,7 @@ -We are trying to ingest more and more model evaluation and diagnostics recipes in your currated [recipe gallery on this website](../model_evaluation/model_evaluation_recipe_gallery.md) {{ supported }}. While this is a continous effort, this site is intented for a list of model evaluation and diagnostics recipes that are not (yet) ingested but may be interesting for the community {{ community }}: +We are trying to ingest more and more model evaluation and diagnostics recipes in your currated [recipe gallery on this website](../model_evaluation/model_evaluation_recipe_gallery.md) . While this is a continous effort, this site is intented for a list of model evaluation and diagnostics recipes that are not (yet) ingested but may be interesting for the community : @@ -26,7 +26,7 @@ We are trying to ingest more and more model evaluation and diagnostics recipes i
- ESMValTool {{ recommended }}
(Earth System Model EValuation Tool)
+ ESMValTool
(Earth System Model EValuation Tool)
@@ -49,7 +49,7 @@ We are trying to ingest more and more model evaluation and diagnostics recipes i
- COSIMA Cookbook / Recipes {{ recommended }}
(Consortium for Ocean-Sea Ice Modelling in Australia)
+ COSIMA Cookbook / Recipes
(Consortium for Ocean-Sea Ice Modelling in Australia)
@@ -78,7 +78,7 @@ We are trying to ingest more and more model evaluation and diagnostics recipes i
- iLAMB {{ recommended }}
(international Land Model Benchmarking)
+ iLAMB
(international Land Model Benchmarking)
@@ -99,7 +99,7 @@ We are trying to ingest more and more model evaluation and diagnostics recipes i
- iOMB {{ recommended }}
(international Ocean Model Benchmarking)
+ iOMB
(international Ocean Model Benchmarking)
@@ -122,7 +122,7 @@ IOMB uses the same code base as the International Land Model Benchmarking (ILAMB
- METPlus {{ recommended }}
(Model Evaluation Tool Plus)
+ METPlus
(Model Evaluation Tool Plus)
@@ -136,7 +136,7 @@ IOMB uses the same code base as the International Land Model Benchmarking (ILAMB Paper + To learn the basics of Git and GitHub. It also includes ACCESS-NRI's recommendations to setup GitHub. - ![NCI Logo](../../assets/nci_logo_color.svg){align=right width=40%} diff --git a/docs/css/access-nri.css b/docs/css/access-nri.css index 03ed67827..725ccbcb8 100644 --- a/docs/css/access-nri.css +++ b/docs/css/access-nri.css @@ -11,7 +11,7 @@ --nri-dark-blue: #115D97; --nri-blue: #06AEEF; --nri-light-blue: #8ED7F8; - --default-fg-color: 220, 220, 220; /* Color for main text in body, navigation, table of content*/ + --default-fg-color: 255, 255, 255; /* Color for main text in body, navigation, table of content*/ --md-default-fg-color: rgb(var(--default-fg-color)); /* Main text in body, navigation, table of content*/ --md-default-fg-color--light: rgba(var(--default-fg-color),.65); /* Inactive tabs */ --md-default-fg-color--lighter: rgba(var(--default-fg-color),.3); /* pencil for editing page, passed toc items text */ @@ -26,7 +26,7 @@ --md-primary-fg-color--dark: var(--nri-dark-blue); /* top tab background */ --primary-bg-color: 237, 237, 237; --md-primary-bg-color: rgb(var(--primary-bg-color)); /* top banner text */ - --md-primary-bg-color--light: rgba(var(--primary-bg-color),0.3); /* search bar 'Search' text */ + --md-primary-bg-color--light: rgba(var(--primary-bg-color),0.5); /* search bar 'Search' text */ --md-accent-fg-color: var(--nri-orange); /* link text hover */ --md-accent-fg-color--transparent: #FAA61916; /* navigation bar little arrows hover */ --md-accent-bg-color: var(--nri-dark-blue); /* back to top button text hover */ @@ -54,8 +54,9 @@ --md-typeset-kbd-color: rgb(39, 39, 39); /* keyboard key background ( tag) */ --md-typeset-kbd-accent-color: rgb(126, 126, 126, .16); /* keyboard key inner border ( tag) */ --md-typeset-kbd-border-color: rgb(30, 30, 30); /* text as keyboard outer border ( tag) */ - --navigation-borders: var(--md-default-fg-color--lighter); /* Left border on the toc and navigation, border of cards */ - --md-typeset-table-color: var(--navigation-borders); /* table borders ( tag) */ + --navigation-borders: #115D9750; /* Left border on the toc and navigation */ + --card-borders: var(--md-primary-fg-color--dark); /* Borders of cards */ + --md-typeset-table-color: var(--card-borders); /* table borders (
tag) */ --md-admonition-fg-color: var(--md-typeset-color); /* Main text warnings */ --md-admonition-bg-color: var(--md-default-bg-color); /* Background warnings */ --md-footer-fg-color: var(--md-primary-bg-color); /* footer text (not much used) */ @@ -70,7 +71,11 @@ --card-shadows: #00000075; /* Shadows on cards and other elements */ --card-shadows-hover: #00000090; /* Shadows hover on cards and other elements */ --img-background: #FFFFFF; /* Background for transparent images */ - --shadow-hover-background: rgba(29, 28, 28, 0.185) /* Shadow Background on hover */ + --shadow-hover-background: rgba(29, 28, 28, 0.185); /* Shadow Background on hover */ + --terminal-animation-directory: var(--nri-green); + --terminal-animation-buttons: var(--nri-orange); + --terminal-animation-buttons-hover: var(--nri-dark-blue); + } [data-md-color-scheme="custom-light"] { @@ -100,7 +105,7 @@ --md-accent-bg-color: var(--nri-orange); /* back to top button text hover */ --md-accent-bg-color--light: #115D97B0; --md-code-fg-color: rgb(33, 36, 44); /* code element text */ - --md-code-bg-color: #c3c3c3; /* code element background */ + --md-code-bg-color: #dedede; /* code element background */ --md-code-hl-color: rgba(255,255,0,.5); --md-code-hl-number-color: #d52a2a; --md-code-hl-special-color: #db1457; @@ -122,8 +127,9 @@ --md-typeset-kbd-color: rgb(226, 226, 226); /* keyboard key background ( tag) */ --md-typeset-kbd-accent-color: rgb(255, 255, 255, .78); /* keyboard key inner border ( tag) */ --md-typeset-kbd-border-color: rgb(212, 212, 212); /* text as keyboard outer border ( tag) */ - --navigation-borders: var(--md-default-fg-color--lighter); /* Left border on the toc and navigation, border of cards */ - --md-typeset-table-color: var(--navigation-borders); /* table borders (
tag) */ + --navigation-borders: #FAA61950; /* Left border on the toc and navigation */ + --card-borders: var(--md-primary-fg-color--dark); /* Borders of cards */ + --md-typeset-table-color: var(--card-borders); /* table borders (
tag) */ --md-admonition-fg-color: var(--md-typeset-color); /* Main text warnings */ --md-admonition-bg-color: var(--md-default-bg-color); /* Background warnings */ --md-footer-fg-color: var(--md-primary-bg-color); /* footer text (not much used) */ @@ -138,7 +144,10 @@ --card-shadows: #00000075; /* Shadows on cards and other elements */ --card-shadows-hover: #00000090; /* Shadows hover on cards and other elements */ --img-background: #FFFFFF; /* Background for transparent images */ - --shadow-hover-background: rgba(29, 28, 28, 0.185) /* Shadow Background on hover */ + --shadow-hover-background: rgba(29, 28, 28, 0.185); /* Shadow Background on hover */ + --terminal-animation-directory: var(--nri-blue); + --terminal-animation-buttons: var(--nri-dark-blue); + --terminal-animation-buttons-hover: var(--nri-orange); } @@ -150,13 +159,20 @@ h1 { font-weight: 600 !important; } +h2 { + font-weight: 500 !important; +} + +h3 { + margin: 1em 0 0.4em !important; +} + /* =============================================================== Introductory paragraph */ .introduction { font-size: 1.2em; - text-align: justify; - padding: 0.3em 0.5em; + padding: 1em; display: flex; align-items: center; } @@ -192,8 +208,7 @@ h1 { } .md-nav:not(.md-nav--primary) { - border-left: 1px solid; - border-color: var(--navigation-borders); + border-left: 1px solid var(--navigation-borders); } /* Make passed items lighter */ @@ -206,7 +221,7 @@ h1 { margin-top: 1em; } -/* Make toc ligher */ +/* Make toc lighter */ /* .md-nav--secondary .md-nav__item { color: #949db2; } */ @@ -381,7 +396,7 @@ h1 { display: flex; justify-content: center; align-items: center; - border: 2px solid var(--navigation-borders); + border: 1px solid var(--card-borders); border-radius: 15px; box-shadow: 6px 6px 10px var(--card-shadows); } @@ -402,12 +417,10 @@ h1 { } .squared-card-image { - height: 75%; - display: flex; - justify-content: center; - align-items: center; - margin: 0.5em 0.5em 0 0.5em; + flex: 1; overflow: hidden; + border-radius: 15px 15px 0 0; + object-fit: cover; } .squared-card-image >img { @@ -473,21 +486,142 @@ a.component-card { box-shadow: unset; } +/* =============================================================== + References +*/ +.references { + font-size:0.8em; +} + +/* =============================================================== + Page summary ('on this page' section) +*/ +div.page-summary { + max-width: 100%; + border: solid 0.5px var(--md-typeset-color); + border-radius: 3px; + padding: 0 15px 10px; + line-height: 1.2em; + margin: 20px 0; +} + +.page-summary h4 { + margin: 0.7em 0; +} + +.page-summary ol { + list-style-type: none !important; + counter-reset: item !important; + margin: 0 !important; + padding: 0 !important; +} + +.page-summary li { + display: table !important; + counter-increment: item !important; + margin: 0 0 0.5em 0.5em !important; +} + +.page-summary li:before { + content: counters(item, ".") ". " !important; + display: table-cell !important; + padding-right: 0.3em !important; +} + +.page-summary li li { + margin: 0.1em 0 0 0 !important; +} + +.page-summary li li:before { + content: counters(item, ".") ". " !important; +} + + +/* =============================================================== + Show different markers for different hierarchy of points (up to 3d hierarchy) +*/ +ul:not([class^='md-']) li { + list-style-type: disc; +} + +ul:not([class^='md-']) li ul li { + list-style-type: circle; +} + +ul:not([class^='md-']) li ul li ul li { + list-style-type: square; +} + +/* =============================================================== + Code block +*/ +pre:has(code) { + display: flow-root !important; + text-align: left !important; + padding: 0 0 !important; + margin-top: 0.5em !important; + margin-bottom: 0.5em !important; +} + +pre>code { + white-space: pre-line !important; + padding: 0.5em 0.8em !important; + word-break: break-all !important; +} + +/* =============================================================== + Terminal animations +*/ +::part(terminal-container) { + background-color: var(--md-code-bg-color); + color: var(--md-code-fg-color); + font-family: var(--md-code-font-family); + font-weight: unset; +} + +::part(input-character) { + color: var(--terminal-animation-buttons); +} + +::part(directory) { + color: var(--terminal-animation-directory); +} + +::part(fast-button), ::part(restart-button) { + color: var(--terminal-animation-buttons); + font-weight: 700; +} + +::part(fast-button):hover, ::part(restart-button):hover { + color: var(--terminal-animation-buttons-hover); +} + +/* Try to format like the output of `ls` command */ +.ls-output-format { + word-spacing: 2em; + word-break: normal; +} + /* =============================================================== Miscellaneous */ +/* Justified text */ +.justified { + text-align: justify; +} + /* Highlight the background */ .highlight-bg { background-color: var(--highlight-bg); - padding: 0.2em 0.4em; - margin: 0.5em 0; + padding: 0.2em 0.6em; + margin: 0.6em 0; width: fit-content; height: fit-content; border-radius: 0.3em; } -/* Higlight background of the same color as tab */ +/* Highlight background of the same color as tab */ .bg-color-like-tab { background-color: var(--md-primary-fg-color--dark); } @@ -500,7 +634,7 @@ a.component-card { /* With borders */ .with-border { border-radius: 7px; - border: 2px solid var(--navigation-borders); + border: 1px solid var(--card-borders); box-sizing: border-box; } diff --git a/docs/css/termynal.css b/docs/css/termynal.css deleted file mode 100644 index a11274415..000000000 --- a/docs/css/termynal.css +++ /dev/null @@ -1,114 +0,0 @@ -/** - * termynal.js - * - * @author Ines Montani - * @version 0.0.1 - * @license MIT - */ - - -:root { - --color-bg: #252a33; - --color-text: #eee; - --color-text-subtle: #a2a2a2; - --color-text-directory: var(--nri-green); /* Colour taken from ACCESS-NRI website */ - --color-text-symlink: var(--nri-blue); /* Colour taken from ACCESS-NRI website */ - --color-text-dollar-sign: var(--nri-orange); /* Colour taken from ACCESS-NRI website */ - --color-control-buttons: #115D97; -} - -.termynal { - /* width: 750px; */ - max-width: 100%; - background: var(--color-bg); - color: var(--color-text); - display: flex; - flex-direction: column; - justify-content: flex-start; - font-size: 13px; - font-family: 'Roboto Mono', 'Fira Mono', Consolas, Menlo, Monaco, 'Courier New', Courier, monospace; - font-weight: bold; - border-radius: 4px; - padding: 35px 25px 25px; - position: relative; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.termynal::before { - content: ''; - position: absolute; - top: 15px; - left: 15px; - display: inline-block; - width: 15px; - height: 15px; - border-radius: 50%; - /* A little hack to display the window buttons in one pseudo element. */ - background: #d9515d; - -webkit-box-shadow: 25px 0 0 #f4c025, 50px 0 0 #3ec930; - box-shadow: 25px 0 0 #f4c025, 50px 0 0 #3ec930; -} - -[data-ty] { - line-height: 2; - justify-self: center; -} - -[data-ty]::before { - /* Set up defaults and ensure empty lines are displayed. */ - content: ''; - display: inline-block; -} - -[data-ty][prompt]::before { - content: attr(prompt); - color: var(--color-text-subtle); -} - -[data-ty="input"][directory]::before { - content: attr(directory); - color: var(--color-text-directory); -} - -[cursor]::after { - content: attr(cursor); - font-family: monospace; - -webkit-animation: blink 1s infinite; - animation: blink 1s infinite; -} - -a[termynal-control-buttons] { - align-self: flex-end; - color: var(--color-control-buttons); -} - -.directory-text { - color: var(--color-text-directory); -} - -.symlink-text { - color: var(--color-text-symlink); -} - -.double-spaced { - word-spacing: 1em; -} - -[charBeforeInput] { - color: var(--color-text-dollar-sign); -} - -/* Cursor animation */ - -@-webkit-keyframes blink { - 50% { - opacity: 0; - } -} - -@keyframes blink { - 50% { - opacity: 0; - } -} diff --git a/docs/index.md b/docs/index.md index ba9540bff..d8145bca5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -16,23 +16,23 @@ ## Navigating ACCESS-Hive @@ -40,18 +40,6 @@ ## About {% include "call_contribute.md" %} -## Support - -There is a system of tags to identify who supports the linked documentation or software, and the level of support you can expect: - -- `Supported by ACCESS-NRI` {{ supported }} - -- `Recommended by ACCESS-NRI` {{ recommended }} - -- `Community contributed` {{ community }} - -See the [support page](about/support.md) for details about the support levels: what is supported, by who, and how to access help. - ## Contribute to ACCESS-Hive [^1]
diff --git a/docs/js/terminal_animation.js b/docs/js/terminal_animation.js new file mode 100644 index 000000000..e2d702c06 --- /dev/null +++ b/docs/js/terminal_animation.js @@ -0,0 +1,1032 @@ +/** + * terminal-animation components + * Components based on the animated terminal app 'termynal.js' by Ines Montani . + * + * @author Davide Marchegiani + * @version 1.0.0 + * + * The usage is as follow: + * + * + * First input line + * Second input line + * Third input with red span + * First output line + * + * + * The tag allows only and tags inside it. All the other nodes will be removed. + * E.g.: + * + * This line will be removed + * This line will be kept + *
Also this line will be removed
+ *
+ * + * The tag allows only text nodes or tags inside it. All the other nodes will be removed. + * E.g.: + * All this line will be kept + * This will be kept but
this will be removed
+ * + * The animation starts only when the terminal becomes visible, unless the 'init' + * attribute is present (in that case the animation starts right after the page loads). + * To know all the other possible attributes and what they do please read the specific components. + * + * + * List of sub-components editable with the CSS ::part pseudo-element: + * - Terminal Container -> ::part(terminal-container) + * - Fast Button -> ::part(fast-button) + * - Restart Button -> ::part(restart-button) + * - Directory -> ::part(directory) + * - Input Character(s) -> ::part(input-character) + * - Prompt Character(s) -> ::part(prompt-character) +*/ +'use strict'; + + +const terminalTemplate = document.createElement('template'); +terminalTemplate.innerHTML = ` + + +
+ +
+` +/* Terminal component */ +class TerminalAnimation extends HTMLElement { + /** + * Custom attributes for the component: + * + * @param {string} mode - 'light' for light mode; 'dark' for dark mode (default). + * @param {string} data - Type of prompt for each line of the entire terminal. Choices can be: + * - 'output': Output of the terminal. Written all at once; (default) + * - 'input': Input to the terminal. Written with typing animation after 'directory' and 'inputChar' attributes; + * - 'prompt': Same as input, but with written with typing animation after 'promptChar' attribute; + * - 'progress' Line with progress bar animation. + * @param {number || string} startDelay - Delay before the start of terminal animation, in ms. + * @param {number || string} lineDelay - Delay before the start of each terminal line animation, in ms. + * @param {number || string} typingDelay - Delay between each typed character in the terminal, in ms. + * @param {string} progressChar – Character(s) to use for progress bar for the entire terminal, defaults to █. + * @param {number || string} progressPercent - Max percent of progress for the entire terminal, default 100%. + * @param {string} cursor – Character to use for cursor for the entire terminal, defaults to ▋. + * @param {string} inputChar – Character(s) to use before the 'input' prompt for the entire terminal, defaults to '$'. + * @param {string} directory – Directory to write in the 'input' prompt before the input character for the entire terminal. + * @param {string} promptChar – Character(s) to use before the 'prompt' prompt for the entire terminal, defaults to '>>>'. + * @param {string} PS1 – String to write in the 'input' prompt before the actual line for the entire terminal. + * If present, any 'directory' or 'input' attribute will be disregarded. + * Accepts HTML format. E.g.: "This is a valid PS1 attribute" + * @param {boolean} init - Initialise the terminal animation at page load. + * @param {boolean} static - Create a static terminal without animation. + */ + constructor() { + super(); + this.attachShadow({ mode: "open" }); + this.shadowRoot.appendChild(terminalTemplate.content.cloneNode(true)); + this.applyMode(); + this.ALLOWED_TAGS = ['terminal-line','img']; + this.DATA_TYPES = ['input','prompt','progress','output']; + this.keepLines(); + if (!this.static) { + this.setTerminal(); + if (this.init) { + this.initialiseAnimation(); + } else { + this.initialiseWhenVisible(); + } + } else { + this.generateAllProgress(); + } + } + + get container() { + const container = this.shadowRoot.querySelector(".terminal-container"); + if (this.hasAttribute('lineDelay')) { + container.setAttribute('lineDelay',parseFloat(this.getAttribute('lineDelay'))) + } + if (this.hasAttribute('typingDelay')) { + container.setAttribute('typingDelay',parseFloat(this.getAttribute('typingDelay'))) + } + return container + } + + get mode() { + /** + * Getter for the mode property + */ + if (this.getAttribute('mode')?.toString().toLowerCase() == 'light') { + return 'light'; + } else { + return 'dark'; + } + } + + get data() { + /** + * Getter for the data property + */ + let attr = this.getAttribute('data'); + if (this.DATA_TYPES.includes(attr)) { + return attr; + } else { + return 'output' + } + } + + get startDelay() { + /** + * Resets startDelay property. + */ + return parseFloat(this.getAttribute('startDelay')) || 300; + } + + get progressChar() { + /** + * Getter for the progressChar property + */ + return this.getAttribute('progressChar')?.toString() || '█'; + } + + get progressPercent() { + /** + * Getter for the progressPercent property + */ + return parseFloat(this.getAttribute('progressPercent')) || 100; + } + + get cursor() { + /** + * Getter for the cursor property + */ + return this.getAttribute('cursor')?.toString() || '▋'; + } + + get inputChar() { + /** + * Getter for the inputChar property + */ + if (this.hasAttribute('PS1')) { + return ''; + } else { + return this.getAttribute('inputChar')?.toString() || '$'; + } + } + + get promptChar() { + /** + * Getter for the promptChar property + */ + return this.getAttribute('promptChar')?.toString() || '>>>'; + } + + get directory() { + /** + * Getter for the directory property + */ + if (this.hasAttribute('PS1')) { + return ''; + } else { + return this.getAttribute('directory')?.toString() || ''; + } + } + + get PS1() { + /** + * Getter for the PS1 property + */ + if (this.hasAttribute('PS1')) { + return this.getAttribute('PS1'); + } else { + return `${this.directory}${this.inputChar} `; + } + } + + get static() { + /** + * Getter for the static property + */ + let attr = this.getAttribute('static') + if (attr == 'false') { + return false + } else if (attr == "") { + return true + } else { + return !!attr + } + } + + get init() { + /** + * Getter for the init property + */ + let attr = this.getAttribute('init') + if (attr == 'false') { + return false + } else if (attr == "") { + return true + } else { + return !!attr + } + } + + applyMode() { + /** + * Sets the color scheme according to the mode selected. + */ + const colors = document.createElement('style'); + if (this.mode == 'dark') { + colors.innerHTML = ` + :host { + --color-bg: #252a33; + --color-text: #eee; + --color-control-buttons: #FAA619; + --color-control-buttons-hover: #115D97; + --color-scrollbar: rgba(255, 255, 255, .6); + ` + } else { + colors.innerHTML = ` + :host { + --color-text: #252a33; + --color-bg: #eee; + --color-control-buttons-hover: #FAA619; + --color-control-buttons: #115D97; + --color-scrollbar: rgba(0, 0, 0, .6); + ` + } + this.shadowRoot.appendChild(colors); + } + + keepLines() { + /* + * Delete all terminal lines without tags or whose tags are not within the elementList + * and create the lines property with the kept ones. + */ + for (let i=0; i { + if (line.data == 'progress') { + line.generateProgress(); + } + }) + } + + hide(element) { + /** + * Change element's style to 'hidden' + */ + element.style.visibility = 'hidden'; + } + + show(element) { + /** + * Change element's style to 'visible' + */ + element.style.visibility = 'visible'; + } + + sleep(time) { + /** + * Sleep for an amount of time + */ + return new Promise(resolve => setTimeout(resolve, time)); + } + + resetDelays() { + this.lines.forEach(line => { + line._lineDelay; + line._typingDelay; + }) + } + + hideLines() { + /** + * Hide lines inside the terminal + */ + this.lines.forEach(line => this.hide(line)); + } + + generateRestartButton() { + /** + * Generate restart button and adds it hidden to 'this.container' + */ + const restart = document.createElement('a') + restart.setAttribute('part','restart-button') + restart.onclick = e => { + e.preventDefault(); + this.hideAll(); + this.scrollToTop(); + this.mutationObserver.disconnect(); + this.initialiseAnimation(); + } + restart.href = ''; + restart.classList.add('restart-button'); + restart.innerHTML = "restart ↻"; + this.hide(restart); + restart.addEventListener('click', e => this.hide(restart)); + this.restartButton = restart; + this.container.appendChild(restart); + } + + generateFastButton() { + /** + * Generate fast button and adds it hidden to 'this.container' + */ + function nullifyDelays(_this) { + _this.lines.forEach(line => { + line._lineDelay = 0; + line._typingDelay = 0; + }) + } + const fast = document.createElement('a') + fast.setAttribute('part','fast-button') + fast.onclick = (e) => { + e.preventDefault(); + nullifyDelays(this); + } + fast.href = ''; + fast.classList.add('fast-button'); + fast.innerHTML = "fast ❯❯❯"; + this.hide(fast); + fast.addEventListener('click', e => this.hide(fast)); + this.addFocusOnTerminalContainerOnClick(fast); + this.fastButton = fast; + this.container.prepend(fast); + } + + setTerminal() { + /** + * Clear container and generate restart/fast buttons. + */ + this.hideLines(); + this.generateRestartButton(); + this.generateFastButton(); + this.generateObservers(); + } + + hidePS1AndPromptChar() { + /** + * Hides PS1 and Prompt Char for terminal reset + */ + this.lines.forEach(line => { + let elem = line.shadowRoot?.querySelector('.ps1, .promptChar'); + if (elem) { + this.hide(elem); + } + }) + } + + hideAll() { + this.hideLines(); + this.hidePS1AndPromptChar(); + } + + async initialiseAnimation() { + /** + * Start the animation and render the lines + */ + // while (this.container.scrollTop != 0) {await this.sleep(50)} //Start when the container is scroll up to the top. + this.autoScroll(); + await this.sleep(this.startDelay); + this.show(this.fastButton); + for (let line of this.lines) { + line.classList.add('isBeingTyped'); + if (line.tagName.toLowerCase() == 'terminal-line') { + // Handle lines + await line.type(); + } else if (line.tagName.toLowerCase() == 'img') { + // Handle lines + this.show(line); + // await this.sleep(2000); + // this.hide(line); + } + line.classList.remove('isBeingTyped'); + } + this.hide(this.fastButton); + this.resetDelays(); + this.show(this.restartButton); + } + + initialiseWhenVisible() { + /** + * Initialise the terminal only when it becomes visible + */ + let observer = new IntersectionObserver(entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + this.initialiseAnimation(); + observer.unobserve(this); + } + }) + }, + { + rootMargin: "-50px", + }) + observer.observe(this); + } + + addFocusOnTerminalContainerOnClick(elem) { + elem.addEventListener('click',() => this.container.focus()) + } + + scrollToTop() { + // Scroll to the bottom of the container. + this.container.scrollTop = 0; + } + + scrollToBottom() { + // Scroll to the bottom of the container. + this.container.scrollTop = this.container.scrollHeight; + } + + scrollOneLine(line) { + const nPix = parseInt(getComputedStyle(line).height); + this.container.scrollBy(0,nPix); + } + + generateObservers() { + const intersectionFunction = entry => { + if (entry.intersectionRatio == 1) { + intersectionObserver.unobserve(entry.target); + } else { + if (entry.target.nextSibling) { + this.scrollOneLine(entry.target); + } + intersectionObserver.unobserve(entry.target); + } + } + + let margin = `${parseInt(getComputedStyle(this.container).marginBottom) - 5}px` // Margin of the intersectionObserver computed as bottom margin - 5px (5px padding) + let intersectionObserver = new IntersectionObserver(entries => { + entries.forEach(entry => { + console.log(entry.intersectionRatio) + console.log(this.container.scrollTop) + intersectionFunction(entry) + }) + }, + { + root: this.container, + rootMargin: `0px 0px ${margin} 0px`, + }) + + const mutationFunction = entry => { + if (entry.target.nextSibling) { + intersectionObserver.observe(entry.target.nextSibling) + } else { + this.scrollToBottom(); + } + } + + this.mutationObserver = new MutationObserver(entries => { + entries.forEach(entry => { + if (entry.oldValue?.includes("isBeingTyped")) { + mutationFunction(entry) + } + }) + }) + } + + autoScroll() { + /** + * Auto scrolls 1 line if the terminal content exceeds the terminal max-height. + */ + this.lines.forEach(line => { + this.mutationObserver.observe(line,{ + attributes: true, + attributeOldValue: true, + attributeFilter: ["class"] + }) + }); + + this.addEventListener('wheel', e => { + this.mutationObserver.disconnect(); + }) + + this.addEventListener('keydown', e => { + if (['ArrowDown','Space','ArrowUp'].includes(e.code)) { + this.mutationObserver.disconnect(); + } + }) + } +} + +/* ============================================================================================================= + =============================================================================================================== + =============================================================================================================== + =============================================================================================================== + =============================================================================================================== + =============================================================================================================== + =============================================================================================================== + =============================================================================================================== + =============================================================================================================== + =============================================================================================================== + =============================================================================================================== */ + + /* Terminal line */ +const lineTemplate = document.createElement('template'); +lineTemplate.innerHTML = ` + + + +
+ + +` + +class TerminalLine extends HTMLElement { + /** + * Defining custom attributes for component + // * @param {string} data - Type of prompt for the current line. Choices can be: + // * - 'output': Output of the terminal. Written all at once; (default) + // * - 'input': Input to the terminal. Written with typing animation after 'directory' and 'inputChar' attributes; + // * - 'prompt': Same as input, but with written with typing animation after 'promptChar' attribute; + // * - 'progress' Line with progress bar animation. + // * @param {number} lineDelay - Delay before the start of the line animation, in ms. + // * @param {number} typingDelay - Delay between each typed character in the line, in ms. + // * @param {string} progressChar – Character to use for progress bar in the line, defaults to █. + // * @param {number} progressPercent - Max percent of progress in the line, default 100%. + // * @param {string} cursor – Character to use for cursor in the line, defaults to ▋. + // * @param {string} inputChar – Character(s) to use before the 'input' prompt in the line, defaults to '$'. + // * @param {string} directory – Directory to write in the 'input' prompt before the input character in the line. + // * @param {string} promptChar – Character(s) to use before the 'prompt' prompt in the line, defaults to '>>>'. + // * @param {string} PS1 – String to write in the 'input' prompt before the actual line. + If present, any 'directory' or 'input' attribute will be disregarded. + Accepts HTML format. E.g.: "This is a valid PS1 attribute" + // */ + constructor() { + super(); + const shadow = this.attachShadow({ mode: "open" }); + shadow.appendChild(lineTemplate.content.cloneNode(true)); + this.ALLOWED_NODES = ["span"]; + this.line = this.shadowRoot.querySelector(".terminal-line"); + this.setCursorChar(); + this.keepNodes(); + this.generatePS1AndPromptCharElements(); + this.resetDelays(); + this.container.addFocusOnTerminalContainerOnClick(this); + } + + get container() { + if (this.parentElement.tagName.toLowerCase() != 'terminal-animation') { + throw new Error("A 'terminal-line' tag can only be placed inside a 'terminal-animation' tag."); + } + return this.parentElement; + } + + get data() { + /** + * Getter for the data property + */ + if (this.hasAttribute('data')) { + let attr = this.getAttribute('data'); + if (this.container.DATA_TYPES.includes(attr)) { + return attr; + } else { + return 'output'; + } + } else { + return this.container.data; + } + } + + get _lineDelay() { + /** + * Resets lineDelay property. + */ + if (this.hasAttribute('lineDelay')) { + this.lineDelay = parseFloat(this.getAttribute('lineDelay')); + } else if (this.container.hasAttribute('lineDelay')) { + this.lineDelay = parseFloat(this.container.getAttribute('lineDelay')); + } else if (["input","prompt"].includes(this.data)) { + this.lineDelay = 600; + } else { + this.lineDelay = 100; + } + } + + set _lineDelay(time) { + /** + * Sets lineDelay property. + */ + this.lineDelay = time; + } + + get _typingDelay() { + /** + * Resets typingDelay property. + */ + if (this.hasAttribute('typingDelay')) { + this.typingDelay = parseFloat(this.getAttribute('typingDelay')); + } else if (this.container.hasAttribute('typingDelay')) { + this.typingDelay = parseFloat(this.container.getAttribute('typingDelay')); + } else if (["progress"].includes(this.data)) { + this.typingDelay = 30; + } else { + this.typingDelay = 80; + } + } + + set _typingDelay(time) { + /** + * Sets typingDelay property. + */ + this.typingDelay = time; + } + + resetDelays() { + this._lineDelay; + this._typingDelay; + } + + get progressChar() { + /** + * Getter for the progressChar property + */ + return this.getAttribute('progressChar')?.toString() || this.container.progressChar; + } + + get progressPercent() { + /** + * Getter for the progressPercent property + */ + return parseFloat(this.getAttribute('progressPercent')) || this.container.progressPercent; + } + + get cursor() { + /** + * Getter for the cursor property + */ + return this.getAttribute('cursor')?.toString() || this.container.cursor; + } + + get inputChar() { + /** + * Getter for the inputChar property + */ + if (this.hasAttribute('PS1')) { + return ''; + } else { + return this.getAttribute('inputChar')?.toString() || this.container.inputChar; + } + } + + get promptChar() { + /** + * Getter for the promptChar property + */ + return this.getAttribute('promptChar')?.toString() || this.container.promptChar; + } + + get directory() { + /** + * Getter for the directory property + */ + if (this.hasAttribute('PS1')) { + return ''; + } else { + return this.getAttribute('directory')?.toString() || this.container.directory; + } + } + + get PS1() { + /** + * Getter for the PS1 property + */ + if (this.hasAttribute('PS1')) { + return this.getAttribute('PS1'); + } else if (this.hasAttribute('directory') || this.hasAttribute('inputChar')) { + return `${this.directory}${this.inputChar} `; + } else { + return this.container.PS1; + } + } + + setCursorChar() { + const style = document.createElement('style'); + style.innerHTML=` + .cursor::after { + content: '${this.cursor}'; + font-family: monospace; + -webkit-animation: blink 1s infinite; + animation: blink 1s infinite; + } + + @-webkit-keyframes blink { + 50% { + opacity: 0; + } + } + + @keyframes blink { + 50% { + opacity: 0; + } + } + ` + this.shadowRoot.appendChild(style); + } + + keepNodes(elementList=this.ALLOWED_NODES) { + /* + * Delete all line nodes whose tags are not within the elementList, + * create tags around textNodes, + * and create the nodes property with the kept ones. + */ + for (let i=0; i setTimeout(resolve, time)); + } + + showPS1() { + this.show(this.shadowRoot.querySelector('.ps1')); + } + + showPromptChar() { + this.show(this.shadowRoot.querySelector('.promptChar')); + } + + async type() { + /** + * Function that handles the animation of the current line based on its data property + */ + if (this.data == 'input') { + this.showPS1(); + await this.typeInput(); + } else if (this.data == 'progress') { + await this.sleep(this.lineDelay); + await this.typeProgress(); + return; + } else if (this.data == 'prompt') { + this.showPromptChar(); + await this.typeInput(); + } else { + await this.sleep(this.lineDelay); + this.show() + } + + } + + measureChar(char=this.progressChar) { + const ruler = document.createElement('span'); + ruler.innerHTML = char; + ruler.style.whiteSpace = 'pre'; + this.appendChild(ruler); + const width = ruler.offsetWidth; + this.removeChild(ruler); + return width; + } + + async typeProgress() { + /** + * Animate a progress bar. + */ + const progressCharWidth = this.measureChar(); + const progressSteps = Math.round((parseInt(getComputedStyle(this).width)*0.8*(this.progressPercent/100))/progressCharWidth); + let percent = 0; + this.textContent = '0%'; + this.show(); + for (let i=1; i<=progressSteps; i++) { + await this.sleep(this.typingDelay); + percent = Math.round(this.progressPercent/progressSteps*i) + this.textContent = `${this.progressChar.repeat(i)} ${percent}%`; + } + } + + generateProgress() { + const progressCharWidth = this.measureChar(); + const progressLength = Math.round((parseInt(getComputedStyle(this).width)*0.8*(this.progressPercent/100))/progressCharWidth); + this.textContent = `${this.progressChar.repeat(progressLength)} ${this.progressPercent}%`; + } + + async typeInput() { + /** + * Animate an input line. + */ + let textArray = this.getAndRemoveTextContent(); + this.show(); + this.addCursor(); + await this.sleep(this.lineDelay); + for (let i=0; i Community Data Processing Tools](../community_resources/community_data_processing.md) {{ community }}. \ No newline at end of file +While we are still ramping up this service, please take a look at the gallery of community tools on [Community Resources -> Community Data Processing Tools](../community_resources/community_data_processing.md) . \ No newline at end of file diff --git a/docs/model_evaluation/model_evaluation_getting_started/access_to_gadi_at_nci.md b/docs/model_evaluation/model_evaluation_getting_started/access_to_gadi_at_nci.md index 3832a8d1b..d0f7fb334 120000 --- a/docs/model_evaluation/model_evaluation_getting_started/access_to_gadi_at_nci.md +++ b/docs/model_evaluation/model_evaluation_getting_started/access_to_gadi_at_nci.md @@ -1 +1 @@ -../../models/running-a-model/getting_started/access_to_gadi_at_nci.md \ No newline at end of file +../../models/run-a-model/getting_started/access_to_gadi_at_nci.md \ No newline at end of file diff --git a/docs/model_evaluation/model_evaluation_model_catalogs/index.md b/docs/model_evaluation/model_evaluation_model_catalogs/index.md index 3dbbae697..0a4234e18 100644 --- a/docs/model_evaluation/model_evaluation_model_catalogs/index.md +++ b/docs/model_evaluation/model_evaluation_model_catalogs/index.md @@ -22,47 +22,47 @@ The premise of this ACCESS-NRI intake Catalog is to provide a ("meta") catalog o {% include "call_contribute.md" %} -## [NCI datasets][NCI-geonetwork] {{ recommended }} +## [NCI datasets][NCI-geonetwork] NCI has an extensive catalog of datasets of interest to the weather and climate community. These datasets are directly available on the NCI supercomputer and the [Australian Research Environment][ARE-opus] -## [CLEX NCI Data Collection Intake Catalogue][Intake-CLEX] {{ recommended }} +## [CLEX NCI Data Collection Intake Catalogue][Intake-CLEX] This is an Intake catalogue maintained by the ARC Centre of Excellence for Climate Extremes [(CLEX)][CLEX-web]. Only datasets from the NCI Catalog are referenced. The catalogue is available in intake's default catalogue list in the CLEX Conda environment. Two notebooks are provided in the docs folder showing how to access the ERA5 and CIP6 datasets. -## [Australia Climate Data Guide Catalogue][ACDG-Catalog] {{ recommended }} +## [Australia Climate Data Guide Catalogue][ACDG-Catalog] *A one-stop catalogue to discover Climate Data in Australia* The ACDG portal is a metadata portal listing climate research resources available in Australia from multiple data repositories. This is a community based project managed by the ACDG Single Access working group. This is a group of Australian climate community self-nominated representatives. Anyone is welcome to join the group or to contribute independently to the metadata portal the group is developing. -## [Australian Ocean Data Network][AODN-Network] {{ recommended }} +## [Australian Ocean Data Network][AODN-Network] The Australian Ocean Data Network (AODN) is an interoperable online network of marine and climate data resources. IMOS and the 6 Australian Commonwealth agencies ([see AODN Partners](https://imos.org.au/facilities/aodn/aodn-data-management/aodn-partners)) form the core of the AODN. Increasingly, though, universities and State government offices are offering up data resources to the AODN, and delivery of data to the AODN is being written in to significant research programs e.g. [National Environmental Science Program Marine Biodiversity Hub](http://www.nespmarine.edu.au/) and the [Great Australian Bight research program](http://www.misa.net.au/GAB). -## [Intake-Ilamb Catalog][Intake-Ilamb] {{ supported }} +## [Intake-Ilamb Catalog][Intake-Ilamb] The Intake-Ilamb catalog provides an yaml-style intake catalog of the reference data used for ESM model benchmarking in the International Land Model Benchmarking [(ILAMB)][ILAMB-web] effort. -## [FLUXNET][FLUXNET-web] {{ community }} +## [FLUXNET][FLUXNET-web] FLUXNET is an international “network of networks,” tying together regional networks of earth system scientists. FLUXNET scientists use the eddy covariance technique to measure the cycling of carbon, water, and energy between the biosphere and atmosphere. Scientists use these data to better understand ecosystem functioning, and to detect trends in climate, greenhouse gases, and air pollution. -## [CEDA Archive][CEDA-Archive-Web] {{ community }} +## [CEDA Archive][CEDA-Archive-Web] The CEDA Archive forms part of NERC's Environmental Data Service (EDS) and is responsible for looking after data from atmospheric and earth observation research. They host over 18 Petabytes of data from climate models, satellites, aircraft, met observations, and other sources. -### [OZFlux][OZFlux-web] {{ community }} +### [OZFlux][OZFlux-web] OzFlux is an ecosystem research network set up to provide Australian, New Zealand and global ecosystem modelling communities with consistent observations of energy, carbon and water exchange between the atmosphere and key Australian and New Zealand ecosystems. -## [Australian Community Reference Climate Data Collection][AusRefClimData] {{ recommended }} +## [Australian Community Reference Climate Data Collection][AusRefClimData] -{{ community }} [Australian Community Reference Climate Data Collection @ NCI] + [Australian Community Reference Climate Data Collection @ NCI] This collection is a collaborative effort between the Australian Climate Service (ACS), ARC Centre of Excellence for Climate Extremes (CLEX) and the wider Australian climate research community to re-establish and maintain a reference dataset collection at NCI. diff --git a/docs/model_evaluation/model_evaluation_model_catalogs/model_evaluation_add_models.md b/docs/model_evaluation/model_evaluation_model_catalogs/model_evaluation_add_models.md index 8deac88f5..4d7967e47 100644 --- a/docs/model_evaluation/model_evaluation_model_catalogs/model_evaluation_add_models.md +++ b/docs/model_evaluation/model_evaluation_model_catalogs/model_evaluation_add_models.md @@ -2,4 +2,4 @@ You've just run a new experiment, now you want to create an intake-esm catalog for that experiment? -Look at this [Tutorial](https://github.com/ACCESS-NRI/access-nri-intake-catalog/blob/main/docs/how_tos/building_intake-esm_catalogs.ipynb) {{ supported }} to learn how to add your own models. \ No newline at end of file +Look at this [Tutorial](https://github.com/ACCESS-NRI/access-nri-intake-catalog/blob/main/docs/how_tos/building_intake-esm_catalogs.ipynb) to learn how to add your own models. \ No newline at end of file diff --git a/docs/model_evaluation/model_evaluation_model_catalogs/model_evaluation_search_models.md b/docs/model_evaluation/model_evaluation_model_catalogs/model_evaluation_search_models.md index d9d4986f1..b282c04ba 100644 --- a/docs/model_evaluation/model_evaluation_model_catalogs/model_evaluation_search_models.md +++ b/docs/model_evaluation/model_evaluation_model_catalogs/model_evaluation_search_models.md @@ -1,12 +1,12 @@ # Search for a model in the ACCESS-NRI intake Catalog -To have the huge amount of data from different experiments on the NCI storage at the palm of your hand, we provide a ("meta") catalog for you to query via python as part of the `#!python intake` package with our curated catalog plugin `#!python intake.cat.access_nri` {{ supported }}. +To have the huge amount of data from different experiments on the NCI storage at the palm of your hand, we provide a ("meta") catalog for you to query via python as part of the `#!python intake` package with our curated catalog plugin `#!python intake.cat.access_nri` . -To use this catalog, you need access to NCI's Gadi. Check out our [Get Started with ACCESS at NCI](../model_evaluation_getting_started/index.md) {{ supported }} guide on how to get access. +To use this catalog, you need access to NCI's Gadi. Check out our [Get Started with ACCESS at NCI](../model_evaluation_getting_started/index.md) guide on how to get access. -Once logged in to Gadi, you will need to add the `#!python access-nri-catalog` to your `#!python conda` environments and start an [ARE JupyterLab Session](https://are.nci.org.au/pun/sys/dashboard). Check out our [ACCESS-NRI Intake Catalog](https://github.com/ACCESS-NRI/access-nri-intake-catalog/blob/main/docs/getting_started/index.rst) guide {{ supported }} for the specific setup (note that you can only read in data from specific experiments if they are loaded through the *Storage* keyword). +Once logged in to Gadi, you will need to add the `#!python access-nri-catalog` to your `#!python conda` environments and start an [ARE JupyterLab Session](https://are.nci.org.au/pun/sys/dashboard). Check out our [ACCESS-NRI Intake Catalog](https://github.com/ACCESS-NRI/access-nri-intake-catalog/blob/main/docs/getting_started/index.rst) guide for the specific setup (note that you can only read in data from specific experiments if they are loaded through the *Storage* keyword). -Once your JupyterLab session started, you can access the `#!python intake` catalog to load the data. Take a look at this [Tutorial](https://github.com/ACCESS-NRI/access-nri-intake-catalog/blob/main/docs/how_tos/example_usage.ipynb) {{ supported }}. +Once your JupyterLab session started, you can access the `#!python intake` catalog to load the data. Take a look at this [Tutorial](https://github.com/ACCESS-NRI/access-nri-intake-catalog/blob/main/docs/how_tos/example_usage.ipynb) . ``` py # Impport packages for searching/loading/plotting diff --git a/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_esmvaltool.md b/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_esmvaltool.md index ef920b89f..b37b88b32 100644 --- a/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_esmvaltool.md +++ b/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_esmvaltool.md @@ -1,3 +1,3 @@ # Tutorial for using `esmvaltool` on Gadi@NCI -{% include "call_contribute.md" %} \ No newline at end of file + \ No newline at end of file diff --git a/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_ilamb.md b/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_ilamb.md index ac192f30e..41e34eeac 100644 --- a/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_ilamb.md +++ b/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_ilamb.md @@ -2,21 +2,22 @@ This tutorial explains how you can setup and run International Land Model Benchmarking (ILAMB) and International Ocean Model Benchmarking (IOMB) tests on `NCI` infrastracture. Both projects are maintained as `python` code under the package name `ilamb`. -The Tutorial contains: -1) [Background](#1-background-international-land-model-benchmarking-ilamb-and-international-ocean-model-benchmarking-iomb) -2) [Installation guide](#2-installing-ilamb) -3) [Setup details](#3-configuring-ilamb) -4) [Run `ilamb`](#4-run-ilamb) -5) [Run `liamb` on `NCI`](#5-run-ilamb-on-nci) -6) [Fix your setup with `ilamb-doctor`](#6-fix-your-interactive-setup-with-ilamb_doctor) +The Tutorial contains: + +1. [Background](#1-background-international-land-model-benchmarking-ilamb-and-international-ocean-model-benchmarking-iomb) +2. [Installation guide](#2-installing-ilamb) +3. [Setup details](#3-configuring-ilamb) +4. [Run `ilamb`](#4-run-ilamb) +5. [Run `liamb` on `NCI`](#5-run-ilamb-on-nci) +6. [Fix your setup with `ilamb-doctor`](#6-fix-your-interactive-setup-with-ilamb_doctor) -## 1) Background: International Land Model Benchmarking (ILAMB) and International Ocean Model Benchmarking (IOMB) +## 1. Background: International Land Model Benchmarking (ILAMB) and International Ocean Model Benchmarking (IOMB) As earth system models (ESMs) become increasingly complex, there is a growing need for comprehensive and multi-faceted evaluation of model projections. The International Land Model Benchmarking (ILAMB) project is a model-data intercomparison and integration project designed to improve the performance of land models and, in parallel, improve the design of new measurement campaigns to reduce uncertainties associated with key land surface processes. If you have used (and installed) `ilamb` on NCI and know the basic principle of `ilamb`, you can start from [Section 5) Guide for using ilamb on NCI](#5-guide-for-use-on-nci). -## 2) Installing `ilamb` +## 2. Installing `ilamb` For NCI users, ACCESS-NRI is providing a `conda` environment called `ilamb_dev` through the `xp65` project, with ilamb installed. You can load and activate it via: @@ -30,7 +31,7 @@ We will soon add `ilamb` also to the ACCESS-NRI MED `conda` environment, `access If you want to install `ilamb` yourself, please follow the official installation instructions at [https://www.ilamb.org/doc/install.html](https://www.ilamb.org/doc/install.html). -## 3) Configuring `ilamb` +## 3. Configuring `ilamb` Before you can run `ilamb`, you need to configure a few things: @@ -39,7 +40,7 @@ Before you can run `ilamb`, you need to configure a few things: 3.3. [Set up a `modelroute` and `regions` files](#33-set-up-modelroute-and-regions-files) (Optional, if you want to run only a subset of models and/or specific regions of the world) 3.4. [Download a `shapefiles` files locally](#33-download-a-shapefiles-files-locally) (Optional online, necessary offline e.g. on NCI compute nodes) -### 3.1) Organise the ILAMB_ROOT path +### 3.1 Organise the ILAMB_ROOT path `ilamb` demands files to be organised in a specific directory structure of `DATA` and `MODELS`. @@ -70,7 +71,7 @@ $ILAMB_ROOT (renamed from "ILAMB_sample") There are two main branches in this directory. The first is the `DATA` directory–this is where we keep the observational datasets each in a subdirectory bearing the name of the variable. While not strictly necesary to follow this form, it is a convenient convention. The second branch is the `MODEL` directory in which we see a single model result from CLM. -#### 3.1.1) Add files to DATA +#### 3.1.1 Add files to DATA There is a lot of DATA available to add. Take a look at https://www.ilamb.org/ILAMB-Data/ and https://www.ilamb.org/IOMB-Data/ for extensive lists for ILAMB-Data (land modelling) and IOMB-Data (ocean modelling). @@ -104,13 +105,13 @@ ilamb-fetch --remote_root https://www.ilamb.org/IOMB-Data/ ``` -#### 3.1.2) Add files to MODEL +#### 3.1.2 Add files to MODEL If you want to add your own `MODEL` to `ilamb`, you can do so by following [this description](https://www.ilamb.org/doc/add_model.html). For `NCI` users, our `ilamb_dev` `conda` enrivonment already provides all observational datasets from the `ilamb` official web and the [ACCESS-ESM1_5](https://access-hive.org.au/configurations/access-esm/) model result for user at `ILAMB_ROOT`. Stay tune for more observational and model data or tell us which ones we should definitely add. -### 3.2) Set up a `config` file +### 3.2 Set up a `config` file Now that we have the data, we need to setup a `config` file which the `ilamb` package will use to initiate a benchmark study. @@ -198,7 +199,7 @@ weight = 1 ``` -### 3.3) Set up `modelroute` and `regions` files +### 3.3 Set up `modelroute` and `regions` files If you plan to run only a specific subset of models, you can already define them in a `modelroute.txt` file. It could look like our specific example for running different versions (1, 2, and 3) of the ACCESS-ESM 1.5 suite: @@ -210,7 +211,7 @@ ACCESS_ESM1-5-r3i1p1f1 , MODELS/r3i1p1f1 , CMIP6 ... (abbreviated) ``` -### 3.4) Download/link `shapefiles` files locally +### 3.4 Download/link `shapefiles` files locally You can download the `shapefiles` that are needed to run `ilamb` and `cartopy` offline here: @@ -227,9 +228,9 @@ Note: For NCI, we already provide shapefiles in a directory as part of project ` export CARTOPY_DATA_DIR=/g/data/xp65/public/apps/cartopy-data ``` -## 4) Run `ilamb` +## 4. Run `ilamb` -### 4.1) ilamb-run +### 4.1 ilamb-run Now that we have the configuration file set up, you can run the study using the `ilamb-run` script. Executing the following command at the $ILAMB_ROOT directory will run `ilamb` as specified in your `sample.cfg` for all models of the `model_root` and all regions (`global`) of the world: ``` @@ -264,7 +265,7 @@ Next we ran all model-confrontation pairs. In our parlance, a confrontation is a The next stage is the post-processing. This is done as a separate loop to exploit some parallelism. All the work in a model-confrontation pair is purely local to the pair. Yet plotting results on the same scale implies that we know the maxmimum and minimum values from all models and thus requires the communcation of this information. Here, as we are plotting only over the globe and not extra regions, the plotting occurs quickly. -### 4.2) Run specific models and regions +### 4.2 Run specific models and regions As mentioned in [Section 3.3](#33-set-up-modelroute-and-regions-files), you can adjust the models and regions that `ilamb` will run on. You can find more information in the `ilamb` [tutorial](https://www.ilamb.org/doc/ilamb_run.html). Calling `ilamb-run` with both specifications, would look like: ``` @@ -272,7 +273,7 @@ ilamb-run --config cmip.cfg --model_setup modelroute.txt --regions regions.txt ``` where you call a specific config file (see [Section 3.2](#32-set-up-a-config-file)) as well as specific model routes and regions with files (see [Section 3.3](#33-set-up-modelroute-and-regions-files)). -### 4.3) Viewing the benchmarking output in your browser +### 4.3 Viewing the benchmarking output in your browser The whole process generates a directory of results within ILAMB_ROOT which by default is called `_build`. To view the results locally on your computer, navigate into this directory and start a local `http` server: ``` @@ -284,13 +285,13 @@ Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ... ``` Open this link in your browser and you will see a webpage with a summary table in the center. As we have so few variables and a single model at this point, the table will very simple: -

Starting side of ilamb output

+

Starting side of ilamb output

As we add more variables and models, this summary table helps you understand relative differences in scores among models. For now, clicking on a row of the table will expand it to reveal the underlying datasets used. Clicking on CERES will take you to another page which presents detailed scores and plots. -

Detailed output of Surface Upward SW Radiation Benchmarking

+

Detailed output of Surface Upward SW Radiation Benchmarking

-## 5) Run `ilamb` on NCI +## 5. Run `ilamb` on NCI If you followed the guides above, you should be familiar with how you can setup `ilamb`. @@ -298,7 +299,7 @@ To run `ilamb` on NCI, you can either start an interactive setup [Section 5.1](# In both cases, you need to again define the variable `$ILAMB_ROOT` -### 5.1) ILAMB_ROOT and DATA/MODEL on NCI +### 5.1 ILAMB_ROOT and DATA/MODEL on NCI In our default setup, we will place ILAMB_ROOT and the shapefiles for cartopy directly in the home directory. First, you have to create the ILAMB_ROOT directory ``` @@ -355,7 +356,7 @@ or shorter source = $ILAMB_ROOT/MODELS/r1i1p1f1/Amon/rsus/gn/files/d20191115/rsus_Amon_ACCESS-ESM1-5_historical_r1i1p1f1_gn_185001-201412.nc ``` -### 5.2) Portable Batch System (PBS) jobs on NCI +### 5.2 Portable Batch System (PBS) jobs on NCI The following default PBS file, let's call it `ilamb_test.sh` can help you to setup your own, while making sure to use the correct project (#PBS -P) to charge your computing cost to: ``` diff --git a/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_pangeo_cosima.md b/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_pangeo_cosima.md index 446f2f660..d4f9cf31e 100644 --- a/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_pangeo_cosima.md +++ b/docs/model_evaluation/model_evaluation_on_gadi/model_evaluation_on_gadi_pangeo_cosima.md @@ -1,5 +1,5 @@ # Tutorial for using `pangeo` & COSIMA on Gadi@NCI -{% include "call_contribute.md" %} + https://pangeo.io \ No newline at end of file diff --git a/docs/model_evaluation/model_evaluation_recipe_gallery.md b/docs/model_evaluation/model_evaluation_recipe_gallery.md index cbcec9884..7e22df3b7 100644 --- a/docs/model_evaluation/model_evaluation_recipe_gallery.md +++ b/docs/model_evaluation/model_evaluation_recipe_gallery.md @@ -6,7 +6,7 @@ While we are still building this gallery, please have a look at the Community ME Here, we plan to provide you with an embedded link to our actively maintained Model Evaluation and Dianostics (MED) Recipe Gallery, hosted at [medportal.herokuapp.com](https://medportal.herokuapp.com/models/published). For now, we provide a placeholder image with link and pointers to useful Model Evaluation and Dianostics (MED) resources. -##
+## diff --git a/docs/models/configurations/access-am.md b/docs/models/configurations/access-am.md index 679117fbd..bd97ca48a 100644 --- a/docs/models/configurations/access-am.md +++ b/docs/models/configurations/access-am.md @@ -1,4 +1,4 @@ -#
ACCESS-AM {{ supported }}
+#
ACCESS-AM
diff --git a/docs/models/configurations/access-cm.md b/docs/models/configurations/access-cm.md index e985b3048..e18df5236 100644 --- a/docs/models/configurations/access-cm.md +++ b/docs/models/configurations/access-cm.md @@ -1,4 +1,4 @@ -#
ACCESS-CM {{ supported }}
+#
ACCESS-CM
ACCESS-CM2 (ACCESS Coupled Model 2) is a global fully-coupled climate model that includes the atmosphere, ocean and sea-ice components, and produces physical climate simulations. ACCESS-CM2 is one of the two models run by the Australian climate community for the @@ -28,7 +28,7 @@ ACCESS-CM2 (ACCESS Coupled Model 2) is a global fully-coupled climate model that ACCESS-NRI will release an ACCESS-CM model configuration. The first release of ACCESS-CM will be derived from the [CSIRO ACCESS-CM2 configuration](#access-cm2) and will include [atmosphere], [land], [ocean] and [sea ice] components. -##
[ACCESS-CM2] {{ recommended }}
+##
[ACCESS-CM2]
[**Citation** [@Bi2020-vj]][ACCESS-CM2-cite] | [**Tutorial**][ACCESS-CM2-tute] diff --git a/docs/models/configurations/access-esm.md b/docs/models/configurations/access-esm.md index 762cc1916..0df7c11a8 100644 --- a/docs/models/configurations/access-esm.md +++ b/docs/models/configurations/access-esm.md @@ -1,4 +1,4 @@ -#
ACCESS-ESM {{ supported }}
+#
ACCESS-ESM
@@ -7,7 +7,7 @@ ACCESS-ESM stands for ACCESS **E**arth **S**ystem **M**odel. Earth system model ACCESS-NRI will release an ACCESS-ESM model configuration. The first release of ACCESS-ESM will be derived from the [CSIRO ACCESS-ESM1.5 configuration](#access-esm15) and will include [atmosphere], [land] and [land biogeochemistry], [ocean] and [ocean biogeochemistry], and [sea ice] components. -##
[ACCESS-ESM1.5] {{ recommended }}
+##
[ACCESS-ESM1.5]
[**Citation** [@Ziehn2020-fq]][ACCESS-ESM1.5-cite] diff --git a/docs/models/configurations/access-om.md b/docs/models/configurations/access-om.md index 0f4f29ea7..38b0ded94 100644 --- a/docs/models/configurations/access-om.md +++ b/docs/models/configurations/access-om.md @@ -1,18 +1,19 @@ -#
ACCESS-OM {{ supported }}
+#
ACCESS-OM
-ACCESS-OM stands for ACCESS **O**cean **M**odel. There is more than just an ocean model, but it indicates that this is not a fully-coupled model, i.e. not coupled with a model atmosphere, the atmospheric fields that drive the model are provided by a data product, usually derived from reanalysis. +The ACCESS **O**cean **M**odel, ACCESS-OM, is a global coupled ocean and sea ice configuration. It couples the ocean and sea ice components via a coupler. The atmospheric fields that drive the model are provided by a data product, usually derived from reanalysis. -ACCESS-NRI will release an ACCESS-OM model configuration. The first release of ACCESS-OM will be derived from the COSIMA ACCESS-OM2 suite and will include [ocean] and [sea ice] components. +ACCESS-NRI will release supported ACCESS-OM configurations. The first release will be derived from the COSIMA [ACCESS-OM2][COSIMA-models] suite and will include [ocean] and [sea ice] components. -##
[ACCESS-OM2][COSIMA-models] {{ recommended }}
+ +##
[ACCESS-OM2][COSIMA-models]
[**Citation** [@Kiss2020-gmd]][ACCESS-OM2-cite] | [**Documentation**][ACCESS-OM2-docs] -ACCESS-OM2 [@Kiss2020-gmd] is a suite of coupled ocean-sea ice models developed by the [Consortium for Ocean-Sea Ice Modelling in Australia (COSIMA)][COSIMA]. All models use the [MOM5] ocean model coupled to the [CICE5] sea ice model via OASIS3-MCT. +ACCESS-OM2 [@Kiss2020-gmd] is a suite of coupled ocean-sea ice models developed by the Consortium for Ocean-Sea Ice Modelling in Australia ([COSIMA][COSIMA]). All models use the [MOM5] ocean model coupled to the [CICE5] sea ice model via an OASIS3-MCT coupler. The models in the ACCESS-OM2 suite differ by their grid spatial resolution: diff --git a/docs/models/configurations/access-s.md b/docs/models/configurations/access-s.md index ff31c0733..c4590e53c 100644 --- a/docs/models/configurations/access-s.md +++ b/docs/models/configurations/access-s.md @@ -1,4 +1,4 @@ -#
[ACCESS-S][ACCESS-S] {{ community }}
+#
[ACCESS-S][ACCESS-S]
diff --git a/docs/models/model_components/aerosols_atmospheric_chemistry.md b/docs/models/model_components/aerosols_atmospheric_chemistry.md index d7066130f..8479d6b8e 100644 --- a/docs/models/model_components/aerosols_atmospheric_chemistry.md +++ b/docs/models/model_components/aerosols_atmospheric_chemistry.md @@ -6,7 +6,7 @@ -##
[UKCA][ukca-wiki] {{ supported }}
+##
[UKCA][ukca-wiki]
The [UK Chemistry-Aerosol model (UKCA)][ukca-wiki] is a community atmospheric chemistry-aerosol global model developed in the United Kingdom. It is suitable for a range of topics in climate and environmental change research. @@ -16,7 +16,7 @@ UKCA chemistry model is enabled in ACCESS-CM2-Chem. -##
[GLOMAP][glomap-wiki] {{ supported }}
+##
[GLOMAP][glomap-wiki]
UKCA contains an aerosol scheme [GLObal Model of Aerosol Processes (GLOMAP)][glomap-wiki] that can be used independently. The multi-component, multi-modal GLOMAP model allows simulation of aerosol number, size and concentrations of individual components such as sulphate,sea salt and different types of carbon. diff --git a/docs/models/model_components/atmosphere.md b/docs/models/model_components/atmosphere.md index 0cdb3bd87..3ccb7c25d 100644 --- a/docs/models/model_components/atmosphere.md +++ b/docs/models/model_components/atmosphere.md @@ -6,7 +6,7 @@ -##
The Unified Model (UM) {{ supported }}
+##
The Unified Model (UM)
[The Unified Model (UM)][um-web] is a numerical model of the atmosphere used for both weather and climate applications, developed by the [Met Office][metoffice-web] in the United Kingdom (UK). It includes solutions of the equations of atmospheric fluid dynamics with advanced parameterizations of subgrid-scale physical processes like convection, cloud formation and atmospheric radiation. diff --git a/docs/models/model_components/bgc_land.md b/docs/models/model_components/bgc_land.md index 3b0b96130..86ee66a21 100644 --- a/docs/models/model_components/bgc_land.md +++ b/docs/models/model_components/bgc_land.md @@ -7,14 +7,14 @@ -##
[CASA-CNP][casa-web] {{ supported }}
+##
[CASA-CNP][casa-web]
-CASA (Carnegie-Ames-Stanford Approach)-CNP (Carbon-Nitrogen-Phosphorous) is the land biogeochemistry model developed in CABLE. - -CASA-CNP models the dynamics of carbon pools and nitrogen and phosphorous limitations. It is directly coupled with the CABLE land surface model. +[CASA-CNP][casa-web], the Carnegie-Ames-Stanford Approach with Carbon-Nitrogen-Phosphorus, is the biogeochemical module implemented in the ACCESS land surface model [CABLE][cable-wiki]. It models the dynamics of carbon pools and the dependance of carbon uptake due to nitrogen and phosphorous limitations. + ### How is CASA-CNP used? -CASA-CNP is switched on for carbon-cycle to use in the ACCESS-ESM1.5 model. +In the ACCESS-ESM1.5 model, CASA-CNP is enabled within CABLE for the simulation of the carbon cycle. -[casa-web]: https://carbonwaterobservatory.csiro.au/casa.html \ No newline at end of file +[casa-web]: https://carbonwaterobservatory.csiro.au/casa.html +[cable-wiki]: https://trac.nci.org.au/trac/cable/wiki \ No newline at end of file diff --git a/docs/models/model_components/bgc_ocean.md b/docs/models/model_components/bgc_ocean.md index b5277feb9..638902b65 100644 --- a/docs/models/model_components/bgc_ocean.md +++ b/docs/models/model_components/bgc_ocean.md @@ -6,7 +6,7 @@ -##
WOMBAT {{ supported }}
+##
WOMBAT
WOMBAT is the ocean carbon model (World Ocean Model of Biogeochemistry And Trophic-dynamics), developed in Australia. It calculates the carbon fluxes of the ocean, by simulating the evolution of phosphate, oxygen, dissolved inorganic carbon, alkalinity and iron with one class of phytoplankton and zooplankton. WOMBAT is a Nutrient, Phytoplankton, Zooplankton and Detritus (NPZD) model, with one zooplankton and one phytoplankton class. diff --git a/docs/models/model_components/coupler.md b/docs/models/model_components/coupler.md index fa0ce2f9a..f36a6d52d 100644 --- a/docs/models/model_components/coupler.md +++ b/docs/models/model_components/coupler.md @@ -1,23 +1,26 @@ -#
Coupler {{ supported }}
+#
Coupler
-A coupler is a software used to perform simulations with different model components at the same time. The coupler enables the different model components to exchange information during the simulation. +A coupler is a software package that allows synchronised exchanges of coupling information between numerical codes representing different components of the climate system. -##
[OASIS3-MCT][OASIS3-MCT] {{ supported }}
+##
[OASIS3-MCT][OASIS3-MCT]
-OASIS3-MCT consists of the OASIS coupler interfaced with the Model Coupling Toolkit (MCT) from the Argonne National Laboratory. OASIS3-MCT is the coupler used for: +[OASIS3-MCT][OASIS3-MCT] is the version of the Ocean Atmosphere Sea Ice Soil (OASIS) coupler interfaced with the Model Coupling Toolkit (MCT) from the Argonne National Laboratory. OASIS3-MCT is the coupler used in the configurations: - ACCESS-ESM1.5 -- ACCESS-CM2 +- ACCESS-CM2 - ACCESS-OM2 -- ACCESS-S1 +- ACCESS-S -##
[NUOPC interoperability layer][NUOPC] {{ recommended }}
+##
[NUOPC interoperability layer][NUOPC]
-The NUOPC interoperability layer is distributed via the Earth System Modelling Framework (ESMF). It is a coupler developed by the National Unified Operational Prediction Capability (NUOPC), a consortium of Navy (USA), NOAA and Air Force (USA) modelers. +[NUOPC][NUOPC-int-layer] (National Unified Operational Prediction Capability) Interoperability Layer defines conventions and a set of generic components for building coupled models using the Earth System Modeling Framework (ESMF). + +ACCESS-OM3, a configuration currently under development, uses [NUOPC to couple its MOM6 and CICE6 model components][coupler-choice] as there are no respective OASIS coupling interfaces for these components. [OASIS3-MCT]: https://oasis.cerfacs.fr/en/ -[NUOPC]: https://earthsystemmodeling.org/nuopc/ \ No newline at end of file +[NUOPC-int-layer]: https://earthsystemmodeling.org/nuopc/ +[coupler-choice]: https://github.com/COSIMA/access-om3/discussions/7 \ No newline at end of file diff --git a/docs/models/model_components/land.md b/docs/models/model_components/land.md index d6937599c..9406427c7 100644 --- a/docs/models/model_components/land.md +++ b/docs/models/model_components/land.md @@ -6,7 +6,7 @@ -##
[CABLE][cable-wiki] {{ supported }}
+##
[CABLE][cable-wiki]
[Community Atmosphere Biosphere Land Exchange (CABLE)][cable-web] is a land surface model, used to calculate the fluxes of momentum, energy, water and carbon between the land surface and the atmosphere. It also models the main biogeochemical cycles of the land ecosystem when used in conjunction with [the CASA-CNP module][casa-cnp]. @@ -20,7 +20,7 @@ CABLE is an open source model developed by a community of Australian climate sci [um-web]: https://www.metoffice.gov.uk/research/approach/modelling-systems/unified-model -##
[JULES][jules-web] {{ supported }}
+##
[JULES][jules-web]
The [Joint UK Land Environment System (JULES)](jules-web) is a community land surface model that can be used both as a standalone model and as the land surface component in the UM model. By modelling different land surface processes (surface energy balance, hydrological cycle, carbon cycle, dynamic vegetation, etc.) and their interaction with each other, JULES provides a framework to assess the impact of modifying a particular process on the ecosystem as a whole, e.g., the impact of climate change on hydrology. diff --git a/docs/models/model_components/ocean.md b/docs/models/model_components/ocean.md index 17e48258e..76ff1a95b 100644 --- a/docs/models/model_components/ocean.md +++ b/docs/models/model_components/ocean.md @@ -6,17 +6,16 @@ -##
[Modular Ocean Model (MOM)][mom-wiki] {{ supported }}
+##
[Modular Ocean Model (MOM)][mom-wiki]
The [Modular Ocean Model (MOM)][mom-wiki] is one of the ocean components of the ACCESS climate model system. Used to simulate ocean currents at both regional and global scales, MOM is an invaluable tool for studying the global ocean climate system, as well as capabilities for regional and coastal applications. -test sentence +###
MOM5
-###
[MOM5][mom5-github] {{ supported }}
[**Source Code**][mom5-github] MOM5 is used in supported configurations, such as ACCESS-OM2, ACCESS-CM2 and ACCESS-ESM1.5. -###
[MOM6][gfdl-web] {{ recommended }}
+###
MOM6
[**Source Code**][mom6-github] | [**Tutorials**][mom6-tutes] diff --git a/docs/models/model_components/sea-ice.md b/docs/models/model_components/sea-ice.md index f68373569..c7f39993e 100644 --- a/docs/models/model_components/sea-ice.md +++ b/docs/models/model_components/sea-ice.md @@ -6,7 +6,7 @@ -##
CICE {{ supported }}
+##
CICE
CICE is a numerical model for simulating the growth, melting and movement of polar sea ice. This software package was developed by researchers at [Los Alamos National Laboratory team][lanl-web] and is currently managed by the [CICE Consortium][cice-web], an international group of institutions formed to maintain and develop CICE in the public domain. [CICE5][cice5-wiki] is the current version used in ACCESS model configurations. diff --git a/docs/models/running-a-model/getting_started/access_to_gadi_at_nci.md b/docs/models/run-a-model/getting_started/access_to_gadi_at_nci.md similarity index 100% rename from docs/models/running-a-model/getting_started/access_to_gadi_at_nci.md rename to docs/models/run-a-model/getting_started/access_to_gadi_at_nci.md diff --git a/docs/models/running-a-model/getting_started/index.md b/docs/models/run-a-model/getting_started/index.md similarity index 58% rename from docs/models/running-a-model/getting_started/index.md rename to docs/models/run-a-model/getting_started/index.md index 0ad038147..3dfd72dd1 100644 --- a/docs/models/running-a-model/getting_started/index.md +++ b/docs/models/run-a-model/getting_started/index.md @@ -5,7 +5,7 @@ If *Model*, *Model Component* or *Model Configuration* are not familiar terms fo If you have not run a model before, our [Getting Started Guide](./access_to_gadi_at_nci.md) will give you the basics to access the Model infrastructure on the high-performance-computing facility Gadi@NCI. Detailed guides for the different Model configurations can then be found on the following pages: -- [Run ACCESS-ESM](../running-access-esm.md) for the ACCESS Earth System Model configurations -- [Run ACCESS-CM](../running-access-cm.md) for the ACCESS Coupled Model configurations -- [Run ACCESS-AM](../running-access-am.md) for the ACCESS Atmosphere Model configurations -- [Run ACCESS-OM](../running-access-om.md) for the ACCESS Ocean Model configurations \ No newline at end of file +- [Run ACCESS-ESM](../run-access-esm.md) for the ACCESS Earth System Model configurations +- [Run ACCESS-CM](../run-access-cm.md) for the ACCESS Coupled Model configurations +- [Run ACCESS-AM](../run-access-am.md) for the ACCESS Atmosphere Model configurations +- [Run ACCESS-OM](../run-access-om.md) for the ACCESS Ocean Model configurations \ No newline at end of file diff --git a/docs/models/running-a-model/index.md b/docs/models/run-a-model/index.md similarity index 60% rename from docs/models/running-a-model/index.md rename to docs/models/run-a-model/index.md index d81c020c2..1a1345b2e 100644 --- a/docs/models/running-a-model/index.md +++ b/docs/models/run-a-model/index.md @@ -7,7 +7,7 @@ If *Model*, *Model Component* or *Model Configuration* are not familiar terms fo If you have not run a model before, our [Getting Started Guide](./getting_started/access_to_gadi_at_nci.md) will give you the basics to access the Model infrastructure on the high-performance-computing facility Gadi@NCI. Detailed guides for the different Model configurations can then be found on the following pages: -- [Run ACCESS-ESM](./running-access-esm.md) for the ACCESS Earth System Model configurations -- [Run ACCESS-CM](./running-access-cm.md) for the ACCESS Coupled Model configurations -- [Run ACCESS-AM](./running-access-am.md) for the ACCESS Atmosphere Model configurations -- [Run ACCESS-OM](./running-access-om.md) for the ACCESS Ocean Model configurations \ No newline at end of file +- [Run ACCESS-ESM](./run-access-esm.md) for the ACCESS Earth System Model configurations +- [Run ACCESS-CM](./run-access-cm.md) for the ACCESS Coupled Model configurations +- [Run ACCESS-AM](./run-access-am.md) for the ACCESS Atmosphere Model configurations +- [Run ACCESS-OM](./run-access-om.md) for the ACCESS Ocean Model configurations \ No newline at end of file diff --git a/docs/models/running-a-model/running-access-am.md b/docs/models/run-a-model/run-access-am.md similarity index 100% rename from docs/models/running-a-model/running-access-am.md rename to docs/models/run-a-model/run-access-am.md diff --git a/docs/models/running-a-model/running-access-cm.md b/docs/models/run-a-model/run-access-cm.md similarity index 97% rename from docs/models/running-a-model/running-access-cm.md rename to docs/models/run-a-model/run-access-cm.md index f4e9ebdce..ad8cfb96d 100644 --- a/docs/models/running-a-model/running-access-cm.md +++ b/docs/models/run-a-model/run-access-cm.md @@ -10,7 +10,7 @@ It is also built as a future point of reference, where you can come back and fin - A Linux/Mac/Unix computer with an internet connection and a command line terminal (e.g., MacOS with XQuartz and command line tools installed, or Putty Cygwin/MobaXterm/similar X-Windows compatible program on a PC). ### Requirements for running ACCESS-CM suites -Here, we assume that you already have access to Gadi, the supercomputer hosted by the National Computational Infrastructure (NCI). If needed, you can go back to our guide on how to get [access to Gadi](../running-a-model/getting_started/access_to_gadi_at_nci.md). +Here, we assume that you already have access to Gadi, the supercomputer hosted by the National Computational Infrastructure (NCI). If needed, you can go back to our guide on how to get [access to Gadi](../run-a-model/getting_started/access_to_gadi_at_nci.md). #### Basic Setup To run an ACCESS-CM suite, new users will need to: @@ -51,7 +51,7 @@ Aliases and shortcuts can be created to simplify these commands by [configuring # Copy, Edit, and Run an ACCESS-CM2 suite
-ACCESS-CM2 is a set of sub-models (eg. UM, MOM, CICE, CABLE, OASIS) with a range of model parameters, input data, and computer related information, that need to be packaged together as a suite in order to run. +ACCESS-CM2 is a set of submodels (eg. UM, MOM, CICE, CABLE, OASIS) with a range of model parameters, input data, and computer related information, that need to be packaged together as a suite in order to run.
Each ACCESS-CM2 suite has an ID, in the format u-<suite-name>, with <suite-name> being a unique identifier (e.g. u-br565 is the CMIP6 release preindustrial experiment suite).
@@ -184,11 +184,11 @@ After completing all the modifications to the suite, we are ready to run it.
ACCESS-CM2 suites run on
Gadi through a PBS job submission.
-When the suite gets run, the suite configuration files are copied on Gadi under /scratch/<$PROJECT>/$USER/cylc-run/<suite-ID>, and a symbolic link to this folder is also created in the $USER's home directory under ~/cylc-run/<suite-ID>. +When the suite gets run, its configuration files are copied on Gadi under /scratch/$PROJECT/$USER/cylc-run/<suite-ID>, and a symbolic link to this folder is also created in the $USER's home directory under ~/cylc-run/<suite-ID>.
An ACCESS-CM2 suite is constituted by several tasks (such as checking out code repositories, compiling and building the different model components, running the model, etc.). The workflow of these tasks is controlled by Cylc.
-Cylc (pronounced ‘silk’), is a workflow manager that automatically executes tasks according to the model main cycle script suite.rc. Cylc deals with how the job will be run and manages the time steps of each sub-model, as well as monitoring all the tasks and reporting any error that might occur. +Cylc (pronounced ‘silk’), is a workflow manager that automatically executes tasks according to the model main cycle script suite.rc. Cylc deals with how the job will be run and manages the time steps of each submodel, as well as monitoring all the tasks and reporting any error that might occur.
To run an ACCESS-CM2 suite, on accessdev:
    @@ -481,7 +481,7 @@ This directory contains 2 subdirectories:
    References
    -
      +
      • https://confluence.csiro.au/display/ACCESS/Using+CM2+suites+in+Rose+and+Cylc
      • diff --git a/docs/models/run-a-model/run-access-esm.md b/docs/models/run-a-model/run-access-esm.md new file mode 100644 index 000000000..d012ce066 --- /dev/null +++ b/docs/models/run-a-model/run-access-esm.md @@ -0,0 +1,416 @@ + +# Run ACCESS-ESM + + +## Requirements +
        +Before running ACCESS-ESM, you need to make sure to possess the right tools and to have an account with specific institutions. +
        + +### General requirements +
        +For the general requirements needed to run all ACCESS models, please refer to the Getting Started (TO DO check link) page. +
        + +### Model-specific requirements +
        +
          +
        • + Payu +
          + To get payu on Gadi, run: +
          module use /g/data/hh5/public/modules
          +            module load conda/analysis3
          +        
          +
        • +
        +
        +---------------------------------------------------------------------------------------- + +## Get ACCESS-ESM configuration +
        +A suitable ACCESS-ESM pre-industrial configuration is avaible on the coecms GitHub. +
        +In order to get it, on Gadi, create a directory where to keep the model configuration, and clone the GitHub repo in it by running: +
        git clone https://github.com/coecms/esm-pre-industrial
        + + mkdir -p ~/access-esm + cd ~/access-esm + git clone https://github.com/coecms/esm-pre-industrial + Cloning into 'esm-pre-industrial'... + remote: Enumerating objects: 767, done. + remote: Counting objects: 100% (295/295), done. + remote: Compressing objects: 100% (138/138), done. + remote: Total 767 (delta 173), reused 274 (delta 157), pack-reused 472 + Receiving objects: 100% (767/767), 461.57 KiB | 5.24 MiB/s, done. + Resolving deltas: 100% (450/450), done. + +Note: Some modules might interfere with the git commands (for example matlab/R2018a). If you are running into issues during the cloning of the repository, it might be a good idea to run
        module purge
        first, before trying again. +
        +---------------------------------------------------------------------------------------- + +## Edit ACCESS-ESM configuration +
        +In order to modify an ACCESS-ESM configuration, it is worth understanding a bit more how its job scheduler payu works. +
        + +### Payu +
        +Payu is a workflow management tool for running numerical models in supercomputing environments. +
        +The general layout of a payu-supported model run consists of two main directories: +
          +
        • + The laboratory is the directory where all parts of the model are kept. For ACCESS-ESM, it is typically /scratch/$PROJECT/$USER/access-esm. +
        • +
        • + The control directory, where the model configuration is kept and from where the model is run (in our case is the cloned directory ~/access-esm/esm-pre-industrial). +
        • +
        +This distinction of directories keeps the small-size configuration files separated from the larger binary outputs and inputs. In this way, we can place the configuration files in the $HOME directory (being the only filesystem on Gadi that is actively backed up), without overloading it with too much data. +
        +Moreover, this separation allows to run multiple self-resubmitting experiments simultaneously that might share common executables and input data. +
        +To proceed with the setup of the laboratory directory, from the control directory run: +
        payu init
        +This will create the laboratory directory, along with other subdirectories (depending on the configuration). The main subdirectories we are interested in are: +
          +
        • work → temporary directory where the model is actually run. It gets cleaned after each run.
        • +
        • archive → directory where the output is placed after each run.
        • + + cd ~/access-esm/esm-pre-industrial + payu init + laboratory path: /scratch/$PROJECT/$USER/access-esm + binary path: /scratch/$PROJECT/$USER/access-esm/bin + input path: /scratch/$PROJECT/$USER/access-esm/input + work path: /scratch/$PROJECT/$USER/access-esm/work + archive path: /scratch/$PROJECT/$USER/access-esm/archive + +
        +
        + +### Edit the Master Configuration file +
        +The config.yaml file, located in the control directory, is the Master Configuration file. +
        +This file controls the general model configuration and if we open it in a text editor, we can see different parts: +
          +
        • + PBS resources +
          +
          jobname: pre-industrial
          +            queue: normal
          +            walltime: 20:00:00
          +        
          + These are settings for the PBS scheduler. Edit lines in this section to change any of the PBS resources. +
          + For example, to run ACCESS-ESM under the tm70 project (TO DO add Getting started, join a NCI Project link), add the following line to this section: +
          project: tm70
          +
        • +
        • + Link to the laboratory directory +
          +
          # note: if laboratory is relative path, it is relative to /scratch/$PROJECT/$USER
          +            laboratory: access-esm
          +        
          + This will set the laboratory directory. Relative paths are relative to /scratch/$PROJECT/$USER. Absolute paths can be specified as well. +
        • +
        • + Model +
          model: access
          + The main model. This tells payu which driver to use (access stands for ACCESS-ESM). +
        • +
        • + Submodels +
          +
          submodels:
          +              - name: atmosphere
          +                model: um
          +                ncpus: 192
          +                exe: /g/data/access/payu/access-esm/bin/coe/um7.3x
          +                input:
          +                  - /g/data/access/payu/access-esm/input/pre-industrial/atmosphere
          +                  - /g/data/access/payu/access-esm/input/pre-industrial/start_dump
          +   - name: ocean +     model: mom +     ncpus: 180 +     exe: /g/data/access/payu/access-esm/bin/coe/mom5xx +     input: +       - /g/data/access/payu/access-esm/input/pre-industrial/ocean/common +       - /g/data/access/payu/access-esm/input/pre-industrial/ocean/pre-industrial
          +   - name: ice +     model: cice +     ncpus: 12 +     exe: /g/data/access/payu/access-esm/bin/coe/cicexx +     input: +       - /g/data/access/payu/access-esm/input/pre-industrial/ice
          +   - name: coupler +     model: oasis +     ncpus: 0 +     input: +       - /g/data/access/payu/access-esm/input/pre-industrial/coupler +
          + ACCESS-ESM is a coupled model, which means it has multiple submodels (i.e. model components). +
          + This section specifies the submodels and contains configuration options (for example the directories of input files) that are required to ensure the model can execute correctly. Each submodel also has additional configuration options that are read in when the submodel is running. These specific configuration options are found in the subdirectory of the control directory having the name of the submodel (e.g. in our case the configuration for the atmosphere submodel, i.e. the UM, will be in the directory ~/access-esm/esm-pre-industrial/atmosphere). +
        • +
        • + collate +
          +
          collate:
          +              exe: /g/data/access/payu/access-esm/bin/mppnccombine
          +              restart: true
          +              mem: 4GB
          +        
          + The collate process joins a number of smaller files, which contain different parts of the model grid, together into target output files. The restart files are typically tiled in the same way and will also be joined together if the restart option is set to true. +
        • +
        • + restart +
          +
          restart: /g/data/access/payu/access-esm/restart/pre-industrial
          + The location of the files used for a warm restart. +
        • +
        • + Start date and internal run length +
          +
          calendar:
          +              start:
          +                year: 101
          +                month: 1
          +                days: 1
          +   runtime: +     years: 1 +     months: 0 +     days: 0 +
          + This section specifies the start date and internal run length. +
          + Note: The internal run length (controlled by runtime) can be different from the total run length. Also, the runtime value can be lowered, but should not be increased to a total of more than 1 year, to avoid errors. If you want to know more about the difference between internal run and total run lenghts, or if you want to run the model for more than 1 year, check Run configuration for multiple years. +
        • +
        • + Number of runs per PBS submission +
          +
          runspersub: 5
          + ACCESS-ESM configurations are often run in multiple steps (or cycles), with payu running a maximum of runspersub internal runs for every PBS job submission. +
          + Note: If we increase runspersub, we might need to increase the walltime in the PBS resources. +
        • +
        +To know more about other configuration settings for the config.yaml file, please check how to configure your experiment with payu. +
        +---------------------------------------------------------------------------------------- + +## Run ACCESS-ESM configuration +After editing the configuration, we are ready to run ACCESS-ESM. +
        +ACCESS-ESM suites run on Gadi through a PBS job submission managed by payu. + +### Payu setup (optional) +
        +As a first step, from the control directory, is good practice to run: +
        payu setup
        +This will prepare the model run, based on the experiment configuration. + + payu setup + laboratory path: /scratch/$PROJECT/$USER/access-esm + binary path: /scratch/$PROJECT/$USER/access-esm/bin + input path: /scratch/$PROJECT/$USER/access-esm/input + work path: /scratch/$PROJECT/$USER/access-esm/work + archive path: /scratch/$PROJECT/$USER/access-esm/archive + Loading input manifest: manifests/input.yaml + Loading restart manifest: manifests/restart.yaml + Loading exe manifest: manifests/exe.yaml + Setting up atmosphere + Setting up ocean + Setting up ice + Setting up coupler + Checking exe and input manifests + Updating full hashes for 3 files in manifests/exe.yaml + Creating restart manifest + Updating full hashes for 30 files in manifests/restart.yaml + Writing manifests/restart.yaml + Writing manifests/exe.yaml + +Note: You can skip this step as it is included also in the run command. However, runnning it explicitly helps to check for errors and make sure executable and restart directories are accessible. +
        + +### Run configuration +
        +To run ACCESS-ESM configuration for one internal run length (controlled by runtime in the config.yaml file), run: +
        payu run -f
        +This will submit a single job to the queue with a total run length of runtime. It there is no previous run, it will start from the start date indicated in the config.yaml file, otherwise it will perform a warm restart from a precedently saved restart file. +
        +Note:The -f option ensures that payu will run even if there is an existing non-empty work directory, which happens if a run crashes. + + payu run -f + Loading input manifest: manifests/input.yaml + Loading restart manifest: manifests/restart.yaml + Loading exe manifest: manifests/exe.yaml + payu: Found modules in /opt/Modules/v4.3.0 + qsub -q normal -P <project> -l walltime=11400 -l ncpus=384 -l mem=1536GB -N pre-industrial -l wd -j n -v PAYU_PATH=/g/data/hh5/public/apps/miniconda3/envs/analysis3-23.01/bin,MODULESHOME=/opt/Modules/v4.3.0,MODULES_CMD=/opt/Modules/v4.3.0/libexec/modulecmd.tcl,MODULEPATH=/g/data3/hh5/public/modules:/etc/scl/modulefiles:/opt/Modules/modulefiles:/opt/Modules/v4.3.0/modulefiles:/apps/Modules/modulefiles -W umask=027 -l storage=gdata/access+gdata/hh5 -- /g/data/hh5/public/apps/miniconda3/envs/analysis3-23.01/bin/python3.9 /g/data/hh5/public/apps/miniconda3/envs/analysis3-23.01/bin/payu-run + <job-ID>.gadi-pbs + +
        + +### Run configuration for multiple years +
        +If you want to run ACCESS-ESM configuration for multiple internal run lengths (controlled by runtime in the config.yaml file), you can use the option -n: +
        payu run -n <number-of-runs>
        +This will run the configuration number-of-runs times with a total run length of runtime * number-of-runs. The number of consecutive PBS jobs submitted to the queue depends on the runspersub value specified in the config.yaml file. +
        + +### Understand runtime, runspersub, and -n parameters +
        +With the correct use of runtime, runspersub, and -n parameters, we can have full control of our run. +
        +
          +
        • + runtime defines the internal run length. +
        • +
        • + runspersub defines the maximum number of internal runs for every PBS job submission. +
        • +
        • + -n sets the number of internal runs to be performed. +
        • +
        +Let's have some practical examples: +
          +
        • + Run 20 years of simulation, with resubmission every 5 years +
          + To have a total run length of 20 years, with a resubmition cycle of 5 years, we can leave runtime to the default value of 1 year, set runspersub to 5, and run the configuration using -n 20: +
          payu run -n 20
          + This will submit subsequent jobs for the following years: 1 to 5, 6 to 10, 11 to 15, and 16 to 20. With a total of 4 PBS jobs. +
        • +
        • + Run 7 years of simulation, with resubmission every 3 years +
          + To have a total run length of 7 years, with a resubmition cycle of 3 years, we can leave runtime to the default value of 1 year, set runspersub to 3, and run the configuration using -n 7: +
          payu run -n 7
          + This will submit subsequent jobs for the following years: 1 to 3, 4 to 6, and 7. With a total of 3 PBS jobs. +
        • +
        • + Run 3 months and 10 days of simulation, in one single submission +
          + To have a total run length of 3 months and 10 days, all in a single submission, we have to set runtime to: +
          years: 0
          +            months: 3
          +            days: 10
          +        
          + set runspersub to 1 (or any value > 1), and run the configuration without -n (or with -n equals 1): +
          payu run
          +
        • +
        • + Run 1 year and 4 months of simulation, with resubmission every 4 months +
          + To have a total run length of 1 year and 4 months (16 months), we will have to split it into multiple internal runs. For example, we can have 4 internal runs of 4 months each. Therefore, we will have to set runtime to: +
          years: 0
          +            months: 4
          +            days: 0
          +        
          + Since the internal run length is set to 4 months, to resubmit our jobs every 4 months (i.e. every internal run), we have to set runspersub to 1. Finally, we will perform 4 internal runs by running the configuration with -n 4: +
          payu run -n 4
          +
        • +
        +
        +---------------------------------------------------------------------------------------- + +## Monitor runs +
        +Currently, there is no specific tool to monitor ACCESS-ESM runs. +
        +One way to check the status of our run is running: +
        qstat -u $USER
        +This will show the status of all your PBS jobs (if there is any PBS job submitted): + + qstat -u $USER + Job id                Name             User             Time Use S Queue + --------------------- ---------------- ---------------- -------- - ----- + <job-ID>.gadi-pbs     pre-industrial   <$USER>            <time> R normal-exec + <job-ID>.gadi-pbs     <other-job-name> <$USER>            <time> R normal-exec + <job-ID>.gadi-pbs     <other-job-name> <$USER>            <time> R normal-exec + +If you changed the jobname in the PBS resources of the Master Configuration file, that will be your job's Name instead of pre-industrial. +
        +S indicates the status of your run: +
          +
        • Q → Job waiting in the queue to start
        • +
        • R → Job running
        • +
        • E → Job ending
        • +
        +If there is no listed job with your jobname (or if there is no job submitted at all), your run might have successfully completed, or might have been terminated due to an error. +
        + +### Check the output and error log files +
        +While the model is running, payu saves the standard output and standard error into the files access.out and access.err in the control directory. You can examine these files, as the run progresses, to check on it's status. +
        +After the model has completed its run, or if it crashed, the output and error log files, respectively, are renamed by default into jobname.o<job-ID> and jobname.e<job-ID>. +
        +---------------------------------------------------------------------------------------- + +## Model outputs +
        +While the configuration is running, output files (as well as restart files) are moved from the work directory to the archive directory, under /scratch/$PROJECT/$USER/access-esm/archive (also symlinked in the control directory under ~/access-esm/esm-pre-industrial/archive). +
        +Both outputs and restarts are stored into subfolders for each different configuration (esm-pre-industrial in our case), and inside the configuration folder, they are subdivided for each internal run. +
        +The format of a typical output folder is outputXXX, whereas the typical restart folder is usually formatted as restartXXX, with XXX being the number of internal run, starting from 000. +
        +In the respective folders, outputs and restarts are separated for each model component. +
        +For the atmospheric output data, each file it is usually a UM fieldsfile, formatted as <UM-suite-identifier>a.p<output-stream-identifier><time-identifier>. + + cd /scratch/$PROJECT/$USER/access-esm/archive/esm-pre-industrial + ls + output000 pbs_logs restart000 + ls output000/atmosphere + aiihca.daa1210 aiihca.daa1810 aiihca.paa1apr aiihca.paa1jun aiihca.pea1apr aiihca.pea1jun aiihca.pga1apr aiihca.pga1jun atm.fort6.pe0 exstat ihist prefix.CNTLGEN UAFLDS_A aiihca.daa1310 aiihca.daa1910 aiihca.paa1aug aiihca.paa1mar aiihca.pea1aug aiihca.pea1mar aiihca.pga1aug aiihca.pga1mar cable.nml fort.57 INITHIS prefix.PRESM_A um_env.py aiihca.daa1410 aiihca.daa1a10 aiihca.paa1dec aiihca.paa1may aiihca.pea1dec aiihca.pea1may aiihca.pga1dec aiihca.pga1may CNTLALL ftxx input_atm.nml SIZES xhist aiihca.daa1510 aiihca.daa1b10 aiihca.paa1feb aiihca.paa1nov aiihca.pea1feb aiihca.pea1nov aiihca.pga1feb aiihca.pga1nov CONTCNTL ftxx.new namelists STASHC aiihca.daa1610 aiihca.daa1c10 aiihca.paa1jan aiihca.paa1oct aiihca.pea1jan aiihca.pea1oct aiihca.pga1jan aiihca.pga1oct debug.root.01 ftxx.vars nout.000000 thist aiihca.daa1710 aiihca.daa2110 aiihca.paa1jul aiihca.paa1sep aiihca.pea1jul aiihca.pea1sep aiihca.pga1jul aiihca.pga1sep errflag hnlist prefix.CNTLATM UAFILES_A + + +
        + + + +
        +
        References
        + \ No newline at end of file diff --git a/docs/models/running-a-model/running-access-om.md b/docs/models/run-a-model/run-access-om.md similarity index 100% rename from docs/models/running-a-model/running-access-om.md rename to docs/models/run-a-model/run-access-om.md diff --git a/docs/models/running-a-model/running-access-esm.md b/docs/models/running-a-model/running-access-esm.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/models/running-a-model/running-access-s.md b/docs/models/running-a-model/running-access-s.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/mkdocs.yml b/mkdocs.yml index ed8bcc7b4..0c4440686 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -15,11 +15,17 @@ theme: name: material custom_dir: overrides palette: - - scheme: custom-light + + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: custom-light toggle: icon: material/theme-light-dark name: Switch to dark mode - - scheme: custom-dark + + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: custom-dark toggle: icon: material/theme-light-dark name: Switch to light mode @@ -41,11 +47,6 @@ theme: - search.share - toc.follow # the sidebar is automatically scrolled to the active anchor - # - navigation.expand - # - navigation.path - # - toc.integrate - # - navigation.sections - logo: assets/ACCESS_icon_HIVE.png favicon: assets/ACCESS_icon_HIVE.png icon: @@ -75,17 +76,21 @@ markdown_extensions: - pymdownx.details - pymdownx.superfences - pymdownx.inlinehilite + - pymdownx.tabbed: + alternate_style: true - def_list - footnotes - tables - pymdownx.keys + - toc: + title: On this page # Navigation nav: - Home: - index.md - Contact: about/contact.md - - Support: about/support.md + - User support: about/user_support.md - Contribute: - Contribute: contribute/index.md - Edit on Github: contribute/edit-on-github.md @@ -118,16 +123,16 @@ nav: - ACCESS-OM: models/configurations/access-om.md - Run a Model: - - models/running-a-model/index.md + - models/run-a-model/index.md # If we add an additional subsection # - Getting Started: # - models/running-a-model/getting_started/index.md # - Access to Gadi@NCI: models/running-a-model/getting_started/access_to_gadi_at_nci.md - - Computing Access (Gadi@NCI): models/running-a-model/getting_started/access_to_gadi_at_nci.md - - Run ACCESS-ESM: models/running-a-model/running-access-esm.md - - Run ACCESS-CM: models/running-a-model/running-access-cm.md - - Run ACCESS-AM: models/running-a-model/running-access-am.md - - Run ACCESS-OM: models/running-a-model/running-access-om.md + - Computing Access (Gadi@NCI): models/run-a-model/getting_started/access_to_gadi_at_nci.md + - Run ACCESS-ESM: models/run-a-model/run-access-esm.md + - Run ACCESS-CM: models/run-a-model/run-access-cm.md + - Run ACCESS-AM: models/run-a-model/run-access-am.md + - Run ACCESS-OM: models/run-a-model/run-access-om.md - Model Evaluation: - model_evaluation/index.md @@ -180,8 +185,6 @@ nav: # Footer extra: generator: true - # version: - # provider: mike social: - icon: fontawesome/brands/twitter link: https://twitter.com/ACCESS_NRI @@ -196,28 +199,12 @@ extra: provider: google property: G-2T6SQEH2CX - # Original implementation - # supported: '' - # recommended: '' - # community: '' - - # Octicons experimental - # supported: ':octicons-check-circle-24:{ .icon-supported title="Supported by ACCESS-NRI" }' - # recommended: ':octicons-star-24:{ .icon-recommended title="Recommended by ACCESS-NRI" }' - # community: ':octicons-heart-fill-24:{ .heart title="Community contributed" }' - - # Material icons experimental - # supported: 'check_circle_outlined' - # recommended: 'star' - # community: 'favorite' - - # Fontawesome icons - supported: '' - recommended: '' - community: '' + # # Fontawesome icons + # supported: '' + # recommended: '' + # community: '' extra_css: - - css/termynal.css - css/fontello.css - "https://fonts.googleapis.com/icon?family=Material+Icons" # Material Icons Reference - https://material.io/resources/icons/?style=baseline - css/fontawesome-free-6.4.0-web/css/fontawesome.css @@ -226,5 +213,5 @@ extra_css: extra_javascript: - https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js # For tablesort functionality - - js/termynal.js + - js/terminal_animation.js - js/miscellaneous.js diff --git a/overrides/partials/toc.html b/overrides/partials/toc.html index 524a211d0..45f92e04e 100644 --- a/overrides/partials/toc.html +++ b/overrides/partials/toc.html @@ -1,8 +1,7 @@ {#- This file was automatically generated - do not edit -#} - - {% set title = "On this page" %} + {% set title = lang.t("toc") %} {% if config.mdx_configs.toc and config.mdx_configs.toc.title %} {% set title = config.mdx_configs.toc.title %} {% endif %}