Repository files navigation

Gusto

Gusto is a Python code library, providing a toolkit of finite element methods for modelling geophysical fluids, such as the atmosphere and ocean. The methods used by Gusto are underpinned by the Firedrake finite element code generation software.

Gusto is particularly targeted at the numerical methods used by the dynamical cores used in numerical weather prediction and climate models. Gusto focuses on compatible finite element discretisations, in which variables lie in function spaces that preserve the underlying geometric structure of the equations. These compatible methods underpin the Met Office's next-generation model, LFRic.

Gusto is designed to provide:

  • a testbed for rapid prototyping of novel numerical methods
  • a flexible framework for exploring different modelling choices for geophysical fluid dynamics
  • a simple environment for setting up and running test cases

Installing

Before installing Gusto you should first install Firedrake using the instructions found here. Once this is done Gusto can then be installed by running:

$ git clone https://github.com/firedrakeproject/gusto.git
$ pip install --editable ./gusto

or equivalently:

$ pip install --src . --editable git+https://github.com/firedrakeproject/gusto.git#egg=gusto

Getting Started

To test your Gusto installation you can run the test suite with:

$ cd gusto
$ make test

The examples directory contains several test cases, which you can play with to get started with Gusto. You can also see the gusto case studies repository, which contains a larger collection of test cases that use Gusto.

Gusto is documented here, which is generated from the doc-strings in the codebase.

Visualisation

Gusto can produce output in two formats:

  • VTU files, which can be viewed with the Paraview software
  • netCDF files, which has data that can be plotted using standard python packages such as matplotlib. We suggest using the tomplot Python library, which contains several routines to simplify the plotting of Gusto output.

Working Practices

Gusto's default development happens on the main branch, which is fixed to the latest release of Firedrake. We also maintain a future branch which builds from the head of Firedrake's main branch. Contributions to Gusto's main branch must pass our Continuous Integration tests.

The relationship between future and main is as follows:

  • whenever there is a new release of Firedrake, future should be merged into mainandmain should be merged into future so that the two are in-sync
  • otherwise, future should not be merged into main
  • we may choose to merge main into future out-of-cycle of Firedrake releases, which might be desirable after we fix bugs or make significant API changes

We also use some tests with "KGOs" (Known Good Output), which are used to detect changes in science. These can be regenerated using the integration-tests/data/update_kgos.py script.

Website

For more information, please see our website, and please do get in touch via the Gusto channel on the Firedrake project Slack workspace.

About

Three dimensional atmospheric dynamical core using the Gung Ho numerics.

Resources

Stars

20 stars

Watchers

17 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Gusto

Gusto is a Python code library, providing a toolkit of finite element methods for modelling geophysical fluids, such as the atmosphere and ocean. The methods used by Gusto are underpinned by the Firedrake finite element code generation software.

Gusto is particularly targeted at the numerical methods used by the dynamical cores used in numerical weather prediction and climate models. Gusto focuses on compatible finite element discretisations, in which variables lie in function spaces that preserve the underlying geometric structure of the equations. These compatible methods underpin the Met Office's next-generation model, LFRic.

Gusto is designed to provide:

  • a testbed for rapid prototyping of novel numerical methods
  • a flexible framework for exploring different modelling choices for geophysical fluid dynamics
  • a simple environment for setting up and running test cases

Installing

Before installing Gusto you should first install Firedrake using the instructions found here. Once this is done Gusto can then be installed by running:

$ git clone https://github.com/firedrakeproject/gusto.git
$ pip install --editable ./gusto

or equivalently:

$ pip install --src . --editable git+https://github.com/firedrakeproject/gusto.git#egg=gusto

Getting Started

To test your Gusto installation you can run the test suite with:

$ cd gusto
$ make test

The examples directory contains several test cases, which you can play with to get started with Gusto. You can also see the gusto case studies repository, which contains a larger collection of test cases that use Gusto.

Gusto is documented here, which is generated from the doc-strings in the codebase.

Visualisation

Gusto can produce output in two formats:

  • VTU files, which can be viewed with the Paraview software
  • netCDF files, which has data that can be plotted using standard python packages such as matplotlib. We suggest using the tomplot Python library, which contains several routines to simplify the plotting of Gusto output.

Working Practices

Gusto's default development happens on the main branch, which is fixed to the latest release of Firedrake. We also maintain a future branch which builds from the head of Firedrake's main branch. Contributions to Gusto's main branch must pass our Continuous Integration tests.

The relationship between future and main is as follows:

  • whenever there is a new release of Firedrake, future should be merged into mainandmain should be merged into future so that the two are in-sync
  • otherwise, future should not be merged into main
  • we may choose to merge main into future out-of-cycle of Firedrake releases, which might be desirable after we fix bugs or make significant API changes

We also use some tests with "KGOs" (Known Good Output), which are used to detect changes in science. These can be regenerated using the integration-tests/data/update_kgos.py script.

Website

For more information, please see our website, and please do get in touch via the Gusto channel on the Firedrake project Slack workspace.

About

Three dimensional atmospheric dynamical core using the Gung Ho numerics.

Resources

Stars

20 stars

Watchers

17 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Gusto

Gusto is a Python code library, providing a toolkit of finite element methods for modelling geophysical fluids, such as the atmosphere and ocean. The methods used by Gusto are underpinned by the Firedrake finite element code generation software.

Gusto is particularly targeted at the numerical methods used by the dynamical cores used in numerical weather prediction and climate models. Gusto focuses on compatible finite element discretisations, in which variables lie in function spaces that preserve the underlying geometric structure of the equations. These compatible methods underpin the Met Office's next-generation model, LFRic.

Gusto is designed to provide:

  • a testbed for rapid prototyping of novel numerical methods
  • a flexible framework for exploring different modelling choices for geophysical fluid dynamics
  • a simple environment for setting up and running test cases

Installing

Before installing Gusto you should first install Firedrake using the instructions found here. Once this is done Gusto can then be installed by running:

$ git clone https://github.com/firedrakeproject/gusto.git
$ pip install --editable ./gusto

or equivalently:

$ pip install --src . --editable git+https://github.com/firedrakeproject/gusto.git#egg=gusto

Getting Started

To test your Gusto installation you can run the test suite with:

$ cd gusto
$ make test

The examples directory contains several test cases, which you can play with to get started with Gusto. You can also see the gusto case studies repository, which contains a larger collection of test cases that use Gusto.

Gusto is documented here, which is generated from the doc-strings in the codebase.

Visualisation

Gusto can produce output in two formats:

  • VTU files, which can be viewed with the Paraview software
  • netCDF files, which has data that can be plotted using standard python packages such as matplotlib. We suggest using the tomplot Python library, which contains several routines to simplify the plotting of Gusto output.

Working Practices

Gusto's default development happens on the main branch, which is fixed to the latest release of Firedrake. We also maintain a future branch which builds from the head of Firedrake's main branch. Contributions to Gusto's main branch must pass our Continuous Integration tests.

The relationship between future and main is as follows:

  • whenever there is a new release of Firedrake, future should be merged into mainandmain should be merged into future so that the two are in-sync
  • otherwise, future should not be merged into main
  • we may choose to merge main into future out-of-cycle of Firedrake releases, which might be desirable after we fix bugs or make significant API changes

We also use some tests with "KGOs" (Known Good Output), which are used to detect changes in science. These can be regenerated using the integration-tests/data/update_kgos.py script.

Website

For more information, please see our website, and please do get in touch via the Gusto channel on the Firedrake project Slack workspace.

About

Three dimensional atmospheric dynamical core using the Gung Ho numerics.

Resources

Stars

20 stars

Watchers

17 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Gusto

Gusto is a Python code library, providing a toolkit of finite element methods for modelling geophysical fluids, such as the atmosphere and ocean. The methods used by Gusto are underpinned by the Firedrake finite element code generation software.

Gusto is particularly targeted at the numerical methods used by the dynamical cores used in numerical weather prediction and climate models. Gusto focuses on compatible finite element discretisations, in which variables lie in function spaces that preserve the underlying geometric structure of the equations. These compatible methods underpin the Met Office's next-generation model, LFRic.

Gusto is designed to provide:

  • a testbed for rapid prototyping of novel numerical methods
  • a flexible framework for exploring different modelling choices for geophysical fluid dynamics
  • a simple environment for setting up and running test cases

Installing

Before installing Gusto you should first install Firedrake using the instructions found here. Once this is done Gusto can then be installed by running:

$ git clone https://github.com/firedrakeproject/gusto.git
$ pip install --editable ./gusto

or equivalently:

$ pip install --src . --editable git+https://github.com/firedrakeproject/gusto.git#egg=gusto

Getting Started

To test your Gusto installation you can run the test suite with:

$ cd gusto
$ make test

The examples directory contains several test cases, which you can play with to get started with Gusto. You can also see the gusto case studies repository, which contains a larger collection of test cases that use Gusto.

Gusto is documented here, which is generated from the doc-strings in the codebase.

Visualisation

Gusto can produce output in two formats:

  • VTU files, which can be viewed with the Paraview software
  • netCDF files, which has data that can be plotted using standard python packages such as matplotlib. We suggest using the tomplot Python library, which contains several routines to simplify the plotting of Gusto output.

Working Practices

Gusto's default development happens on the main branch, which is fixed to the latest release of Firedrake. We also maintain a future branch which builds from the head of Firedrake's main branch. Contributions to Gusto's main branch must pass our Continuous Integration tests.

The relationship between future and main is as follows:

  • whenever there is a new release of Firedrake, future should be merged into mainandmain should be merged into future so that the two are in-sync
  • otherwise, future should not be merged into main
  • we may choose to merge main into future out-of-cycle of Firedrake releases, which might be desirable after we fix bugs or make significant API changes

We also use some tests with "KGOs" (Known Good Output), which are used to detect changes in science. These can be regenerated using the integration-tests/data/update_kgos.py script.

Website

For more information, please see our website, and please do get in touch via the Gusto channel on the Firedrake project Slack workspace.

About

Three dimensional atmospheric dynamical core using the Gung Ho numerics.

Resources

Stars

20 stars

Watchers

17 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Gusto

Gusto is a Python code library, providing a toolkit of finite element methods for modelling geophysical fluids, such as the atmosphere and ocean. The methods used by Gusto are underpinned by the Firedrake finite element code generation software.

Gusto is particularly targeted at the numerical methods used by the dynamical cores used in numerical weather prediction and climate models. Gusto focuses on compatible finite element discretisations, in which variables lie in function spaces that preserve the underlying geometric structure of the equations. These compatible methods underpin the Met Office's next-generation model, LFRic.

Gusto is designed to provide:

  • a testbed for rapid prototyping of novel numerical methods
  • a flexible framework for exploring different modelling choices for geophysical fluid dynamics
  • a simple environment for setting up and running test cases

Installing

Before installing Gusto you should first install Firedrake using the instructions found here. Once this is done Gusto can then be installed by running:

$ git clone https://github.com/firedrakeproject/gusto.git
$ pip install --editable ./gusto

or equivalently:

$ pip install --src . --editable git+https://github.com/firedrakeproject/gusto.git#egg=gusto

Getting Started

To test your Gusto installation you can run the test suite with:

$ cd gusto
$ make test

The examples directory contains several test cases, which you can play with to get started with Gusto. You can also see the gusto case studies repository, which contains a larger collection of test cases that use Gusto.

Gusto is documented here, which is generated from the doc-strings in the codebase.

Visualisation

Gusto can produce output in two formats:

  • VTU files, which can be viewed with the Paraview software
  • netCDF files, which has data that can be plotted using standard python packages such as matplotlib. We suggest using the tomplot Python library, which contains several routines to simplify the plotting of Gusto output.

Working Practices

Gusto's default development happens on the main branch, which is fixed to the latest release of Firedrake. We also maintain a future branch which builds from the head of Firedrake's main branch. Contributions to Gusto's main branch must pass our Continuous Integration tests.

The relationship between future and main is as follows:

  • whenever there is a new release of Firedrake, future should be merged into mainandmain should be merged into future so that the two are in-sync
  • otherwise, future should not be merged into main
  • we may choose to merge main into future out-of-cycle of Firedrake releases, which might be desirable after we fix bugs or make significant API changes

We also use some tests with "KGOs" (Known Good Output), which are used to detect changes in science. These can be regenerated using the integration-tests/data/update_kgos.py script.

Website

For more information, please see our website, and please do get in touch via the Gusto channel on the Firedrake project Slack workspace.

About

Three dimensional atmospheric dynamical core using the Gung Ho numerics.

Resources

Stars

20 stars

Watchers

17 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Gusto

Gusto is a Python code library, providing a toolkit of finite element methods for modelling geophysical fluids, such as the atmosphere and ocean. The methods used by Gusto are underpinned by the Firedrake finite element code generation software.

Gusto is particularly targeted at the numerical methods used by the dynamical cores used in numerical weather prediction and climate models. Gusto focuses on compatible finite element discretisations, in which variables lie in function spaces that preserve the underlying geometric structure of the equations. These compatible methods underpin the Met Office's next-generation model, LFRic.

Gusto is designed to provide:

  • a testbed for rapid prototyping of novel numerical methods
  • a flexible framework for exploring different modelling choices for geophysical fluid dynamics
  • a simple environment for setting up and running test cases

Installing

Before installing Gusto you should first install Firedrake using the instructions found here. Once this is done Gusto can then be installed by running:

$ git clone https://github.com/firedrakeproject/gusto.git
$ pip install --editable ./gusto

or equivalently:

$ pip install --src . --editable git+https://github.com/firedrakeproject/gusto.git#egg=gusto

Getting Started

To test your Gusto installation you can run the test suite with:

$ cd gusto
$ make test

The examples directory contains several test cases, which you can play with to get started with Gusto. You can also see the gusto case studies repository, which contains a larger collection of test cases that use Gusto.

Gusto is documented here, which is generated from the doc-strings in the codebase.

Visualisation

Gusto can produce output in two formats:

  • VTU files, which can be viewed with the Paraview software
  • netCDF files, which has data that can be plotted using standard python packages such as matplotlib. We suggest using the tomplot Python library, which contains several routines to simplify the plotting of Gusto output.

Working Practices

Gusto's default development happens on the main branch, which is fixed to the latest release of Firedrake. We also maintain a future branch which builds from the head of Firedrake's main branch. Contributions to Gusto's main branch must pass our Continuous Integration tests.

The relationship between future and main is as follows:

  • whenever there is a new release of Firedrake, future should be merged into mainandmain should be merged into future so that the two are in-sync
  • otherwise, future should not be merged into main
  • we may choose to merge main into future out-of-cycle of Firedrake releases, which might be desirable after we fix bugs or make significant API changes

We also use some tests with "KGOs" (Known Good Output), which are used to detect changes in science. These can be regenerated using the integration-tests/data/update_kgos.py script.

Website

For more information, please see our website, and please do get in touch via the Gusto channel on the Firedrake project Slack workspace.

About

Three dimensional atmospheric dynamical core using the Gung Ho numerics.

Resources

Stars

20 stars

Watchers

17 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Gusto

Gusto is a Python code library, providing a toolkit of finite element methods for modelling geophysical fluids, such as the atmosphere and ocean. The methods used by Gusto are underpinned by the Firedrake finite element code generation software.

Gusto is particularly targeted at the numerical methods used by the dynamical cores used in numerical weather prediction and climate models. Gusto focuses on compatible finite element discretisations, in which variables lie in function spaces that preserve the underlying geometric structure of the equations. These compatible methods underpin the Met Office's next-generation model, LFRic.

Gusto is designed to provide:

  • a testbed for rapid prototyping of novel numerical methods
  • a flexible framework for exploring different modelling choices for geophysical fluid dynamics
  • a simple environment for setting up and running test cases

Installing

Before installing Gusto you should first install Firedrake using the instructions found here. Once this is done Gusto can then be installed by running:

$ git clone https://github.com/firedrakeproject/gusto.git
$ pip install --editable ./gusto

or equivalently:

$ pip install --src . --editable git+https://github.com/firedrakeproject/gusto.git#egg=gusto

Getting Started

To test your Gusto installation you can run the test suite with:

$ cd gusto
$ make test

The examples directory contains several test cases, which you can play with to get started with Gusto. You can also see the gusto case studies repository, which contains a larger collection of test cases that use Gusto.

Gusto is documented here, which is generated from the doc-strings in the codebase.

Visualisation

Gusto can produce output in two formats:

  • VTU files, which can be viewed with the Paraview software
  • netCDF files, which has data that can be plotted using standard python packages such as matplotlib. We suggest using the tomplot Python library, which contains several routines to simplify the plotting of Gusto output.

Working Practices

Gusto's default development happens on the main branch, which is fixed to the latest release of Firedrake. We also maintain a future branch which builds from the head of Firedrake's main branch. Contributions to Gusto's main branch must pass our Continuous Integration tests.

The relationship between future and main is as follows:

  • whenever there is a new release of Firedrake, future should be merged into mainandmain should be merged into future so that the two are in-sync
  • otherwise, future should not be merged into main
  • we may choose to merge main into future out-of-cycle of Firedrake releases, which might be desirable after we fix bugs or make significant API changes

We also use some tests with "KGOs" (Known Good Output), which are used to detect changes in science. These can be regenerated using the integration-tests/data/update_kgos.py script.

Website

For more information, please see our website, and please do get in touch via the Gusto channel on the Firedrake project Slack workspace.

About

Three dimensional atmospheric dynamical core using the Gung Ho numerics.

Resources

Stars

20 stars

Watchers

17 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Gusto

Gusto is a Python code library, providing a toolkit of finite element methods for modelling geophysical fluids, such as the atmosphere and ocean. The methods used by Gusto are underpinned by the Firedrake finite element code generation software.

Gusto is particularly targeted at the numerical methods used by the dynamical cores used in numerical weather prediction and climate models. Gusto focuses on compatible finite element discretisations, in which variables lie in function spaces that preserve the underlying geometric structure of the equations. These compatible methods underpin the Met Office's next-generation model, LFRic.

Gusto is designed to provide:

  • a testbed for rapid prototyping of novel numerical methods
  • a flexible framework for exploring different modelling choices for geophysical fluid dynamics
  • a simple environment for setting up and running test cases

Installing

Before installing Gusto you should first install Firedrake using the instructions found here. Once this is done Gusto can then be installed by running:

$ git clone https://github.com/firedrakeproject/gusto.git
$ pip install --editable ./gusto

or equivalently:

$ pip install --src . --editable git+https://github.com/firedrakeproject/gusto.git#egg=gusto

Getting Started

To test your Gusto installation you can run the test suite with:

$ cd gusto
$ make test

The examples directory contains several test cases, which you can play with to get started with Gusto. You can also see the gusto case studies repository, which contains a larger collection of test cases that use Gusto.

Gusto is documented here, which is generated from the doc-strings in the codebase.

Visualisation

Gusto can produce output in two formats:

  • VTU files, which can be viewed with the Paraview software
  • netCDF files, which has data that can be plotted using standard python packages such as matplotlib. We suggest using the tomplot Python library, which contains several routines to simplify the plotting of Gusto output.

Working Practices

Gusto's default development happens on the main branch, which is fixed to the latest release of Firedrake. We also maintain a future branch which builds from the head of Firedrake's main branch. Contributions to Gusto's main branch must pass our Continuous Integration tests.

The relationship between future and main is as follows:

  • whenever there is a new release of Firedrake, future should be merged into mainandmain should be merged into future so that the two are in-sync
  • otherwise, future should not be merged into main
  • we may choose to merge main into future out-of-cycle of Firedrake releases, which might be desirable after we fix bugs or make significant API changes

We also use some tests with "KGOs" (Known Good Output), which are used to detect changes in science. These can be regenerated using the integration-tests/data/update_kgos.py script.

Website

For more information, please see our website, and please do get in touch via the Gusto channel on the Firedrake project Slack workspace.

About

Three dimensional atmospheric dynamical core using the Gung Ho numerics.

Resources

Stars

20 stars

Watchers

17 watching

Forks

Releases

Packages

Used by

Contributors

Languages