GeophysicalFlows.jl

GeophysicalFlows.jl: Solvers for geophysical fluid dynamics problems in periodic domains on CPUs & GPUs - Published in JOSS (2021)

https://github.com/fourierflows/geophysicalflows.jl

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 13 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    6 of 20 committers (30.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

baroclinic fourierflows geophysical-fluid-dynamics gpu julia navier-stokes pdes qg quasigeostrophy sqg

Keywords from Contributors

fluxes ocean fluid-dynamics graphics climate climate-change data-assimilation tracer surrogate the-human-brain
Last synced: 4 months ago · JSON representation ·

Repository

Geophysical fluid dynamics pseudospectral solvers with Julia and FourierFlows.jl.

Basic Info
Statistics
  • Stars: 164
  • Watchers: 7
  • Forks: 33
  • Open Issues: 16
  • Releases: 54
Topics
baroclinic fourierflows geophysical-fluid-dynamics gpu julia navier-stokes pdes qg quasigeostrophy sqg
Created over 7 years ago · Last pushed 4 months ago
Metadata Files
Readme Contributing License Citation

README.md

GeophysicalFlows.jl

💨🌏🌊 Geophysical fluid dynamics pseudospectral solvers with Julia and FourierFlows.jl. https://fourierflows.github.io/GeophysicalFlowsDocumentation/stable

Buildkite CPU+GPU build status CI Status stable docs latest docs DOI ColPrac: Contributor's Guide on Collaborative Practices for Community Packages DOI badge

This package leverages the FourierFlows.jl framework to provide modules for solving problems in Geophysical Fluid Dynamics on periodic domains using Fourier-based pseudospectral methods.

Installation

To install, use Julia's built-in package manager (accessed by pressing ] in the Julia REPL command prompt) to add the package and also to instantiate/build all the required dependencies

julia julia> ] (v1.10) pkg> add GeophysicalFlows (v1.10) pkg> instantiate

GeophysicalFlows.jl requires Julia v1.6 or later. However, the package has continuous integration testing on Julia v1.10 (the current long-term release) and v1.11. We strongly urge you to use one of these Julia versions.

Examples

See examples/ for example scripts. These examples are best viewed by browsing them within the package's documentation.

Some animations created with GeophysicalFlows.jl are online @ youtube.

Modules

  • TwoDNavierStokes: the two-dimensional vorticity equation.
  • SingleLayerQG: the barotropic or equivalent-barotropic quasi-geostrophic equation, which generalizes TwoDNavierStokes to cases with topography, Coriolis parameters of the form f = f₀ + βy, and finite Rossby radius of deformation.
  • MultiLayerQG: a multi-layer quasi-geostrophic model over topography allowing to impose a zonal flow U_n(y) in each layer.
  • SurfaceQG: a surface quasi-geostrophic model.
  • BarotropicQGQL: the quasi-linear barotropic quasi-geostrophic equation.

Scalability

For now, GeophysicalFlows.jl is restricted to run on either a single CPU or single GPU. These restrictions come from FourierFlows.jl. Multi-threading can enhance performance for the Fourier transforms. By default, FourierFlows.jl will use the maximum number of threads available on your machine. You can set the number of threads used by FourierFlows.jl by setting the environment variable, e.g.,

$ export JULIA_NUM_THREADS=4

For more information on multi-threading users are directed to the Julia Documentation.

If your machine has more than one GPU available, then functionality within CUDA.jl package enables the user to choose the GPU device that FourierFlows.jl should use. The user is referred to the CUDA.jl Documentation; in particular, CUDA.devices and CUDA.CuDevice. The user is also referred to the GPU section in the FourierFlows.jl documentation.

Getting help

Interested in GeophysicalFlows.jl or trying to figure out how to use it? Please feel free to ask us questions and get in touch! Check out the examples and open an issue or start a discussion if you have any questions, comments, suggestions, etc.

Citing

If you use GeophysicalFlows.jl in research, teaching, or other activities, we would be grateful if you could mention GeophysicalFlows.jl and cite our paper in JOSS:

Constantinou et al., (2021). GeophysicalFlows.jl: Solvers for geophysical fluid dynamics problems in periodic domains on CPUs & GPUs. Journal of Open Source Software, 6(60), 3053, doi:10.21105/joss.03053.

The bibtex entry for the paper is:

bibtex @article{GeophysicalFlowsJOSS, doi = {10.21105/joss.03053}, url = {https://doi.org/10.21105/joss.03053}, year = {2021}, publisher = {The Open Journal}, volume = {6}, number = {60}, pages = {3053}, author = {Navid C. Constantinou and Gregory LeClaire Wagner and Lia Siegelman and Brodie C. Pearson and André Palóczy}, title = {{GeophysicalFlows.jl: Solvers for geophysical fluid dynamics problems in periodic domains on CPUs \& GPUs}}, journal = {Journal of Open Source Software} }

Contributing

If you're interested in contributing to the development of GeophysicalFlows.jl we are excited to get your help, no matter how big or small a contribution you make! It's always great to have new people look at the code with fresh eyes: you will see errors that other developers have missed.

Let us know by open an issue or start a discussion if you'd like to work on a new feature or implement a new module, if you're new to open-source and want to find a cool little project or issue to work on that fits your interests! We're more than happy to help along the way.

For more information, check out our contributors' guide.

Owner

  • Name: FourierFlows
  • Login: FourierFlows
  • Kind: organization

An ecosystem for building fast, hackable, pseudospectral partial differential equation solvers on periodic domains

JOSS Publication

GeophysicalFlows.jl: Solvers for geophysical fluid dynamics problems in periodic domains on CPUs & GPUs
Published
April 21, 2021
Volume 6, Issue 60, Page 3053
Authors
Navid C. Constantinou ORCID
Australian National University, ARC Centre of Excellence for Climate Extremes
Gregory LeClaire Wagner ORCID
Massachussetts Institute of Technology
Lia Siegelman ORCID
University of California San Diego
Brodie C. Pearson ORCID
Oregon State University
André Palóczy ORCID
University of Oslo
Editor
Pierre de Buyl ORCID
Tags
geophysical fluid dynamics computational fluid dynamics Fourier methods pseudospectral gpu

Citation (CITATION.cff)

cff-version: 1.2.0
preferred-citation:
  type: article
  authors:
  - family-names: "Constantinou"
    given-names: "Navid C."
    orcid: "https://orcid.org/0000-0002-8149-4094"
  - family-names: "Wagner"
    given-names: "Gregory LeClaire"
    orcid: "https://orcid.org/0000-0001-5317-2445"
  - family-names: "Siegelman"
    given-names: "Lia"
    orcid: "https://orcid.org/0000-0003-3330-082X"
  - family-names: "Pearson"
    given-names: "Brodie C."
    orcid: "https://orcid.org/0000-0002-0202-0481"
  - family-names: "Palóczy"
    given-names: "André"
    orcid: "https://orcid.org/0000-0001-8231-8298"
  title: "GeophysicalFlows.jl: Solvers for geophysical fluid dynamics problems in periodic domains on CPUs & GPUs"
  journal: "Journal of Open Source Software"
  doi: "10.21105/joss.03053"
  volume: 6
  issue: 60
  start: 3053
  year: 2021

GitHub Events

Total
  • Fork event: 1
  • Create event: 18
  • Commit comment event: 6
  • Release event: 3
  • Issues event: 5
  • Watch event: 8
  • Delete event: 14
  • Member event: 1
  • Issue comment event: 58
  • Push event: 53
  • Pull request review comment event: 37
  • Pull request review event: 55
  • Pull request event: 32
Last Year
  • Fork event: 1
  • Create event: 18
  • Commit comment event: 6
  • Release event: 3
  • Issues event: 5
  • Watch event: 8
  • Delete event: 14
  • Member event: 1
  • Issue comment event: 58
  • Push event: 53
  • Pull request review comment event: 37
  • Pull request review event: 55
  • Pull request event: 32

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 1,407
  • Total Committers: 20
  • Avg Commits per committer: 70.35
  • Development Distribution Score (DDS): 0.15
Past Year
  • Commits: 21
  • Committers: 4
  • Avg Commits per committer: 5.25
  • Development Distribution Score (DDS): 0.143
Top Committers
Name Email Commits
Navid Constantinou n****y@g****m 1,196
Gregory Wagner w****g@g****m 74
Lia Siegelman l****n@g****m 52
BrodieP p****o@o****u 33
Brodie Pearson b****n@o****u 22
github-actions[bot] 4****] 8
André Palóczy p****y@g****m 5
Matthew Crowe 8****e 2
jbisits 7****s 2
CompatHelper Julia c****y@j****g 2
liasiegelman l****n@u****u 2
Daniel Karrasch D****h@g****e 1
Julia TagBot 5****t 1
Matt Lobo 1****o 1
Matt Pudig m****8@g****m 1
Steven G. Johnson s****j@m****u 1
Tim Besard t****d@g****m 1
Matt Pudig m****1@l****u 1
Matt Pudig m****1@l****u 1
Zhaoyi Shen p****y@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 38
  • Total pull requests: 136
  • Average time to close issues: 5 months
  • Average time to close pull requests: 13 days
  • Total issue authors: 12
  • Total pull request authors: 11
  • Average comments per issue: 5.45
  • Average comments per pull request: 1.26
  • Merged pull requests: 114
  • Bot issues: 0
  • Bot pull requests: 12
Past Year
  • Issues: 5
  • Pull requests: 31
  • Average time to close issues: 4 months
  • Average time to close pull requests: 23 days
  • Issue authors: 2
  • Pull request authors: 5
  • Average comments per issue: 5.6
  • Average comments per pull request: 1.32
  • Merged pull requests: 25
  • Bot issues: 0
  • Bot pull requests: 3
Top Authors
Issue Authors
  • navidcy (17)
  • mncrowe (5)
  • glwagner (4)
  • apaloczy (2)
  • miniufo (2)
  • liasiegelman (2)
  • repdox-cyfso6-wonzAb (1)
  • chowland (1)
  • mjclobo (1)
  • mpudig (1)
  • szy21 (1)
  • JuliaTagBot (1)
Pull Request Authors
  • navidcy (121)
  • github-actions[bot] (12)
  • mncrowe (3)
  • mpudig (3)
  • mjclobo (3)
  • jbisits (2)
  • glwagner (2)
  • apaloczy (2)
  • BrodiePearson (1)
  • stevengj (1)
  • szy21 (1)
Top Labels
Issue Labels
📔 documentation (8) ❓ question (6) 🎮 gpu (6) optimization 🏎 (5) 🤥 enhancement (5) 🐞 bug (5) science 🔬 (2) 🧹 cleanup (1) 🪤 tests (1) 🐣 good first issue (1) 🚑 help wanted (1)
Pull Request Labels
📔 documentation (43) 🎮 gpu (11) 🤥 enhancement (7) 🪤 tests (5) 📦 package (5) 🐞 bug (5) optimization 🏎 (4) 🧹 cleanup (4) 🚨 DO NOT MERGE 🚨 (3) 🚰 user experience (2) science 🔬 (2)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 4 total
  • Total dependent packages: 1
  • Total dependent repositories: 0
  • Total versions: 53
juliahub.com: GeophysicalFlows

Geophysical fluid dynamics pseudospectral solvers with Julia and FourierFlows.jl.

  • Versions: 53
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 4 Total
Rankings
Stargazers count: 5.3%
Forks count: 5.8%
Dependent repos count: 9.9%
Average: 11.0%
Dependent packages count: 23.0%
Last synced: 4 months ago

Dependencies

.github/workflows/Documenter.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
  • styfle/cancel-workflow-action 0.8.0 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia latest composite