Turbulence Topography

January 14, 2019 - Reading time: 2 minutes

Hill-shading ideas can be applied to turbulence too - but what's the point? In geophysical fluid dynamics flows are usually very close to being in geostrophic balance. Geostrophic balance means the pressure gradient force and the Coriolis force perfectly oppose each other. Furthermore, this means that the flow field can be obtained from the sea surface only. That's also the reason why, if you look at a weather map with high and low pressure systems you can say where the wind comes from! On the northern hemisphere: Wind circulates clockwise around high pressure and anti-clockwise around low pressure.

In a similar sense, if you only look at one component of the velocity (say zonal velocity) and map positive (westward) to light-grey/white and negative (eastward) to dark-grey/black your eyes can infer the high/low pressure structure from it! In the ocean the analogy of pressure is the sea surface height. An ocean high pressure system is a whirl, where in the centre the sea surface is slightly higher (a meter or so) than elsewhere. And vice versa for low pressure. 

Instead of plotting simply the sea surface height with hill-shading, which gives our eyes a 3D-impression of the actual surface, we can also enhance the hill-shading structure by including the ageostrophic flows: The colour indicates the sea surface height, but the shading is derived from the zonal velocity, which is slightly different as a turbulent ocean is not in perfect geostrophic balance. Many small scale features are less evident in sea surface height, but involve quite strong flow speeds. Hill-shading the topography therefore based on zonal velocity enhances turbulent structures and our eyes construct a beautiful surface with little hills and valleys.

A little example:


Juls - The first 16bit Atmosphere/Ocean Model

January 5, 2019 - Reading time: 2 minutes

Juls is great. No probably it's not, at least not yet. But, it can simulate geostrophic turbulence typical for either atmospheric or oceanic flow with 16bit numbers. Indeed 16bit. Usually climate models use 64bit numbers. Why? Well, because it's the standard and nobody questioned it since the seventies where the IEEE consortium agreed on having 64bit as standard representation for real numbers on computers. A lot happened since then, computers don't become magically faster anymore, even smartphones have several processors instead of a single very fast one. And then there is machine learning. Google developed TPUs (tensor processing unit) to meet hardware requirements of machine learning algorithms. They realized, they don't need 64bit. So they went down: 32, 16 and probably in the future even 8 or 4 bit.

What about weather and climate models? One problem is, these models have several million lines of code. Going down from 64 to 32bit if you're lucky doesn't cause any problems. Why? The largest representable number with 64bit is ~10^300, which is really really big. The largest representable number with 32bit is ~10^30, still quite big and I guess, if you see such a number popping up as the result of your calculation you would likely assume something went wrong. That means we barely write code that actually requires such big numbers, hence the transition in that case is easy. However, going down to 16bit the biggest number you can represent is 65504.0 If you want to try to represent pressure in pascal (which would be O(10^5)), good luck. It's gonna crash.

And that's where juls comes in. I wrote this model with the focus to be run in 16bit. A bit of non-dimensionalising numbers here, a bit of precompution there, avoiding some redundant calculations that may cause overflow, and here we go: Juls - the first 16bit Atmosphere/Ocean Model. It's far from perfect. Far. Really far. But so far it works on simple test cases. And it has some complicated schemes that I mainly borrowed from state-of-the-art ocean models, such as biharmonic diffusion, time-splitting (RK4 for the "fast modes": pressure gradient, continuity etc. / semi-implicit for diffusive terms), a semi-Lagrangian advection scheme and there is many features planned for the future!

Check it out: It's on github.com/milankl/juls

Oh and it's written in Julia. What a great language. That's probably also where the name comes from, but don't ask me what the s stands for. I should come up with a backronym. Definitely. One day.


Cover Image

A posit of posits: 4 bits better.

January 5, 2019 - Reading time: ~1 minute

Who wins if Bart Simpson, Son Goku and Johnny Bravo fight about decimal precision? And why on Earth is that related to their haircuts??

Posits are a recently proposed alternative to the widely used floating-point numbers. The approach: a mathematically clearer design of computer-representable numbers. The aim: More precision with fewer bits. If we hap a CPU based on posits would there be any benefit for the weather and climate forecasting community?

Yes, and the reason is quite simple: Posits have a higher decimal precision (i.e. the decimal places that you have at least correct after unavoidable rounding errors) around 1 and yet a wide range of representable numbers. Basically, this means you always get a precise answer if you don't pay attention where (on the real axis) you perform calculations. However, if you make sure that you scale your calculation to performed around 1 you win several decimals places of accuracy!

Guess now, what happens in many fluid simulations? ;)

(copyright for the cartoon pictures by somebody else...)


How does a running mean affect correlation?

January 5, 2019 - Reading time: ~1 minute

In many climate science studies a running mean filter is used as a low-pass filter. Authors then usually claim to find some large scale (e.g. decadal) co-variability based on running mean-filtered time series. What's the problem with that?

To illustrate that, I took two time series, that have by construction a certain correlation, i.e. if X is a given random variable, then Y is constructed via

    Yᵢ = cXᵢ + sqrt(1-)*e

where c is the desired correlation, i is the index, usually representing time. e follows a Gaussian Normal distribution with mean 0 and standard deviation 1. As you can see from the figure, it gets interesting once X has some autocorrelation. In that case, the variability, that is not responsible for the correlation of X and Y, is smeared out in the running mean filter and one should expect a large increase of the correlation. E.g. a true correlation of 0.4 can go easily beyond 0.6 once a running mean filter is applied.


Milan Klöwer

Climate scientist
@ University of Oxford

Climate computing, information theory, predictability, climate change, aviation.

#JuliaLang open-source developer, vegan, low CO₂, bicycles and co-op living, no borders, free education.

*354ppm. he|him