Alfvén waves in one dimension
Fortran code that simulates how nonlinear interaction deforms Alfvén waves in a plasma, with a LaTeX report. I did it on my own in one month, between August and September 2022.
Stack: Fortran (gfortran), Python and Matplotlib, LaTeX.
The problem
Alfvén waves are magnetohydrodynamic waves. In the Elsässer variables, Z+ and Z-, they are two waves travelling in opposite directions: if the equation were linear they would cross without disturbing each other; with the nonlinear terms they deform each other. I wanted to see how, by solving the equations myself.

How it works
- 01
The scheme
Compact finite differences with a Lele filter; the derivatives require solving tridiagonal and pentadiagonal systems. About 525 lines of Fortran in separate modules.
- 02
The report
It derives the equations in the Elsässer variables and discusses the results (title: "Nonlinear effects on Alfvén waves in one dimension").
- 03
Building and plots
Compiled with gfortran and a Makefile; the plots are made in Python with Matplotlib.
2D extension (2026). In 2026 I extended the code to two dimensions with the help of Claude Code. I kept the 1D method: compact derivatives and Lele filter, applied one direction at a time on a periodic grid, with the same fourth-order Runge-Kutta. The variables are the Elsässer vorticities of Z+ and Z-. The only non-compact part is the Poisson solver, which is spectral. 512×512 grid, viscosity 5·10-4. Same code, two initial conditions: Orszag-Tang forms current sheets, a shear layer (weak magnetic field B0 = 0.1 along the flow) gives Kelvin-Helmholtz vortices. At this resolution the spectrum follows roughly k-3/2 only over a short range: it is not a fully developed turbulent cascade.
What I did
Everything: the code, the report and the plots. 21 commits.
Limits
It is study code, not an application. I did not compare the results with other codes.

