Code and numerics
The model is gridded in both $x$ and $y$, though spectral methods are often used for calculations in the $x$ direction. In the near future I plan to provide the option of making the model completely spectral in the $x$ direction, so that, for example, one could isolate differents scales of zonal wave-mean flow interaction.
Timestepper
RK4 (switching to integrating factor for linear terms is on the short list)
Boundary conditions
We apply no normal flow boundary conditions on the meridional walls. In addition, we apply the no stress condition ($nabla^2 psi = 0$) in order to satisfy the boundary condition for the biharmonic viscosity.
General flow of code
The code follows a standard workflow for a QG model. We time step the QG PV where the right hand side of the time tendency equation is calculated in rhs() function in teh 2LQG_main.jl file. This righthand side includes (in order)
Invert QG PV to get streamfunction
Calculate Jacobian term
Add $-beta v_{k}$ to the time tendency of QG PV
Add hyperviscosity
Add bottom friction
Apply thermal damping
See the rhs() function for more details.