GeophysicalFlows.jl Documentation


GeophysicalFlows.jl is a collection of modules which leverage the FourierFlows.jl framework to provide solvers for problems in Geophysical Fluid Dynamics, on periodic domains using Fourier-based pseudospectral methods.


Examples aim to demonstrate the main functionalities of each module. Have a look at our Examples collection!

Fourier transforms normalization

Fourier-based pseudospectral methods rely on Fourier expansions. Throughout the documentation we denote symbols with hat, e.g., $\hat{u}$, to be the Fourier transform of $u$ like, e.g.,

\[u(x) = \sum_{k_x} \hat{u}(k_x) \, e^{i k_x x} .\]

The convention used in the modules is that the Fourier transform of a variable, e.g., u is denoted with uh (where the trailing h is there to imply "hat"). Note, however, that uh is obtained via a FFT of u and due to different normalization factors that the FFT algorithm uses, uh is not exactly the same as $\hat{u}$ above. Instead,

\[\hat{u}(k_x) = \frac{𝚞𝚑}{n_x e^{- i k_x x_0}} ,\]

where $n_x$ is the total number of grid points in $x$ and $x_0$ is the left-most point of our $x$-grid.

Read more in the FourierFlows.jl Documentation; see Grids section.


Oftentimes unicode symbols are used in modules for certain variables or parameters. For example, ψ is commonly used to denote the streamfunction of the flow, or is used to denote partial differentiation. Unicode symbols can be entered in the Julia REPL by typing, e.g., \psi or \partial followed by the tab key.

Read more about Unicode symbols in the Julia Documentation.


The development of GeophysicalFlows.jl started by Navid C. Constantinou and Gregory L. Wagner during the 21st AOFD Meeting 2017. During the course of time various people have contributed to GeophysicalFlows.jl, including Lia Siegelman, Brodie Pearson, and André Palóczy (see the example in FourierFlows.jl).


The code is citable via zenodo.