Journal cover Journal topic
Geoscientific Model Development An interactive open-access journal of the European Geosciences Union
Journal topic

Journal metrics

Journal metrics

  • IF value: 4.252 IF 4.252
  • IF 5-year value: 4.890 IF 5-year 4.890
  • CiteScore value: 4.49 CiteScore 4.49
  • SNIP value: 1.539 SNIP 1.539
  • SJR value: 2.404 SJR 2.404
  • IPP value: 4.28 IPP 4.28
  • h5-index value: 40 h5-index 40
  • Scimago H index value: 51 Scimago H index 51
Volume 8, issue 4 | Copyright
Geosci. Model Dev., 8, 1005-1032, 2015
https://doi.org/10.5194/gmd-8-1005-2015
© Author(s) 2015. This work is distributed under
the Creative Commons Attribution 3.0 License.

Model description paper 08 Apr 2015

Model description paper | 08 Apr 2015

libmpdata++ 1.0: a library of parallel MPDATA solvers for systems of generalised transport equations

A. Jaruga1, S. Arabas1, D. Jarecka2,1, H. Pawlowska1, P. K. Smolarkiewicz3, and M. Waruszewski1 A. Jaruga et al.
  • 1Institute of Geophysics, Faculty of Physics, University of Warsaw, Warsaw, Poland
  • 2National Center for Atmospheric Research, Boulder, CO, USA
  • 3European Centre for Medium-Range Weather Forecasts, Reading, UK

Abstract. This paper accompanies the first release of libmpdata++, a C++ library implementing the multi-dimensional positive-definite advection transport algorithm (MPDATA) on regular structured grid. The library offers basic numerical solvers for systems of generalised transport equations. The solvers are forward-in-time, conservative and non-linearly stable. The libmpdata++ library covers the basic second-order-accurate formulation of MPDATA, its third-order variant, the infinite-gauge option for variable-sign fields and a flux-corrected transport extension to guarantee non-oscillatory solutions. The library is equipped with a non-symmetric variational elliptic solver for implicit evaluation of pressure gradient terms. All solvers offer parallelisation through domain decomposition using shared-memory parallelisation.

The paper describes the library programming interface, and serves as a user guide. Supported options are illustrated with benchmarks discussed in the MPDATA literature. Benchmark descriptions include code snippets as well as quantitative representations of simulation results. Examples of applications include homogeneous transport in one, two and three dimensions in Cartesian and spherical domains; a shallow-water system compared with analytical solution (originally derived for a 2-D case); and a buoyant convection problem in an incompressible Boussinesq fluid with interfacial instability. All the examples are implemented out of the library tree. Regardless of the differences in the problem dimensionality, right-hand-side terms, boundary conditions and parallelisation approach, all the examples use the same unmodified library, which is a key goal of libmpdata++ design. The design, based on the principle of separation of concerns, prioritises the user and developer productivity. The libmpdata++ library is implemented in C++, making use of the Blitz++ multi-dimensional array containers, and is released as free/libre and open-source software.

Publications Copernicus
Download
Short summary
This paper accompanies the first release of libmpdata++, a C++ library implementing the multidimensional positive-definite advection transport algorithm (MPDATA) on a regular structured grid. The library offers basic numerical solvers for systems of generalised transport equations. All solvers offer parallelisation through domain decomposition using shared-memory parallelisation. The paper describes the library programming interface, and serves as a user guide.
This paper accompanies the first release of libmpdata++, a C++ library implementing the...
Citation
Share