Experimenting with MITgcm

In our OceanDSL research project, we aim to produce Domain-Specific Languages (DSLs) for scientists and technicians to support and ease their work. We learned that through a set of interviews with them that every model uses special self-made tools and methods to configure, build and run models. This makes our effort complicated. Therefore, we need a model which is fairly simple to setup, but covers all typical steps in model setup. We choose MITgcm based on a recommendation of a collaborating scientist.

MITgcm is an earth model including ocean and atmosphere. Before we can use it as a case study in our model user and model developer scenarios, we need to make us familiar with the model.

As a first step, we aimed to play with the examples of the model. Therefore, we created a setup which can run directly on a Linux machine and one to be run in a docker container. We tested both setup with the tutorial examples of MITgcm. Based on the Barotropic Ocean Gyre we created an image of the result of the model run and a video showing intermediate results of the model in an animation.

The single images where generated using Octave (as a free Matlab replacement) and transformed into a video with Mencoder.

Barotropic tutorial model result for an rectangular ocean.
# Adjust the following path
addpath ADD-HERE-FULL-PATH-TO-THE-MITGCM-MATLAB-SCRIPTS

XC=rdmds('XC'); YC=rdmds('YC');
# Select a proper value. The start value is 0
Eta=rdmds('Eta',0);

contourf(XC/1000,YC/1000,Eta,[-.04:.01:.04]);
colorbar;
colormap((flipud(hot)));
set(gca,'XLim',[0 1200]);
set(gca,'YLim',[0 1200])

The script for the animation looks like this:

# Adjust the following path
addpath ADD-HERE-FULL-PATH-TO-THE-MITGCM-MATLAB-SCRIPTS
XC=rdmds('XC'); YC=rdmds('YC');

# The number of frames depend on your setup
for m = 0:60
  out=["out" num2str(m, "%04d") ".png"];
  # The multiplier depends on your setup
  Eta=rdmds('Eta',1296*m);

  hf = figure ("visible", "off");
  contourf(XC/1000,YC/1000,Eta,[-.04:.01:.04]);
  colorbar;
  colormap((flipud(hot)));
  set(gca,'XLim',[0 1200]);
  set(gca,'YLim',[0 1200]);
  print(hf, out, "-dpng "); 
endfor

Finally, the mencoder call looks like this:

mencoder mf://out????.png -mf fps=2:type=png -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi
Animation of the example model.

The setup is available at https://git.se.informatik.uni-kiel.de/oceandsl/case-study-mitgcm

OceanDSL Starts in October 2019

Ocean and climate scientists use various computer-based simulation to model the ocean and be able to forecast the development of the largest habitat of the Earth. Goal of these models is, for example, to understand the climate system, ocean currents or the effect of carbon emissions on ocean or atmosphere. Furthermore, scientists use data from the past and current events to provide substantial predictions of future developments. Key requirements for these models are huge computing capacities and specific programming languages and software solutions to effectively and efficiently create models for complex physical, chemical and bilogical processes. However, today domain-specific languages (DSLs) and modeling tools are rarely used in by scientists.

We will aim to circumvent this predicament with our project OceanDSL – Domain-Specific Languages for Ocean Modeling and Simulation. The project is funded by the German Research Foundation (DFG) with 580 000 €. Over three years we will develop specific languages for ocean scientists in conjunction with our stakeholders. We will evaluate every language and every revision in order to ensure our goals to make model implementation and execution easier, more traceable, reproducible, reduce potential sources for technical errors, and automate tedious tasks.

Cooperation partner of the project is the GEOMAR Helmholtz-Zentrum for Ocean Research Kiel. OceanDSL will start in October 2019 within the research focus of Kiel Marine Science (KMS).