Blowing in the wind
I'm Peter Kalverla, a meteorologist with a keen interest in programming, currently persuing a PhD in the field of energy meteorology. I created this website as a public platform to share my ongoing research with a broad audience. Checkout these cards to find out more about the project, relevant theory and interesing code snippets.


Introduction to EUROS

The EUROS project is a cooperation between different universities and research institutes in the Netherlands. Its overall objective is to reduce uncertainties in offshore wind projects. These uncertainties currently lead to high costs, over-design and perceived investment risk. There are three workpackages. WP1 focuses on external conditions, WP2 involves … and WP3 … My project, WP1.1 aims to reach a more accurate description of wind variability on relatively short time scales in the order of a few minutes to several days.


The Weibull distribution

Consider a long record of wind speed observations, visualized in the form of a histogram. Fitting a probability density function to the data means looking for a (simple) function that reproduces as accurately as possible the shape of this histogram. This function can in turn be used to estimate for each given wind speed the probability (or frequency) of occurrence. There are many candidate functions, but the Weibull distribution is used most often as it is simple generally provides a good fit.


Installing Jekyll

Pff, that was harder than I think it should be. Here are the steps I needed:

According to this answer, we need to make a file called .curlrc in the home directory, and add the following lines:


From this link, install RVM via PPA:

sudo apt-add-repository ppa:rael-gc/rvm
sudo apt-get update
sudo apt-get install rvm

The terminal output tells you to add the following to .bashrc (in home directory):

source /etc/profile.d/

Now install the desired version of Ruby:

rvm install 2.3.1

Finally, all is set to follow the steps on the Jekyll site

gem install jekyll

WRF analysis in Python

I wrote a quick-start guide for WRF output analysis in Python. First, the netcdf-files are opened and the variables inspected. Subsequently, example variables are loaded and visualized as time-series (tables), time-series plots, 2d height-time countours and surface maps. Time is converted to date-time format and the document features a function to find the grid-point corresponding to given coordinates. The code is intended to be used interactively, and therefore kept as simple and low-level as possible.

Interactive weather maps

Just a simple piece of code that I wrote because I view weathermaps on a regular basis, but the KNMI website is quite cumbersome. At the same time, it is a simple illustration of the use of interactive widgets in Jupyter notebooks. Unfortunately, these don’t show in the rendered version.

Some power calculations

It is quite easy to compute the amount of energy produced by wind turbines. However, it becomes more complex if vertical variations in the wind speed profile are taken into account. This notebook illustrates different approaches.

Drawing turbines with MPL

I was playing around with animating plots in Matplotlib, and came up with the idea to draw a very simple animated wind turbine. I used object-oriented programming, which is maybe not the best showcase but I was just trying to learn :-). Here’s the notebook.


Plotgrids is an NCL-script that comes with the WRF model and is used to visualize the domain configuration. It reads the namelist.wps and draws the domain boundaries on a map. This is my own version, written in Python :-)

WRF plotting with Bokeh

Bokeh is a plotting library focused on interactive visualizations in the browser. However, its documentation and compatibility with geographical data is still quite poor. Therefore, I decided to upload an example of how I visualized some of my WRF output. This is just getting started…


MSc diploma

Wageningen University

Earth & Environment - Meteorology

September 2013 – August 2015

Wageningen, the Netherlands

MSc thesis (France): Evaluation of the Weather Research and Forecasting model for contrasting diurnal cycles in the Durance Valley complex terrain during the KASCADE field campaign. Published in journal of applied meteorology and climatology, doi

Internship (KNMI): A maximum entropy approach to the parametrization of subgrid processes in two-dimensional flows. Published in Quarterly Journal of the Royal Meteorological Society, doi