|
Titel |
libmpdata++ 1.0: a library of parallel MPDATA solvers for systems of generalised transport equations |
VerfasserIn |
A. Jaruga, S. Arabas, D. Jarecka, H. Pawlowska, P. K. Smolarkiewicz, M. Waruszewski |
Medientyp |
Artikel
|
Sprache |
Englisch
|
ISSN |
1991-959X
|
Digitales Dokument |
URL |
Erschienen |
In: Geoscientific Model Development ; 8, no. 4 ; Nr. 8, no. 4 (2015-04-08), S.1005-1032 |
Datensatznummer |
250116275
|
Publikation (Nr.) |
copernicus.org/gmd-8-1005-2015.pdf |
|
|
|
Zusammenfassung |
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. |
|
|
Teil von |
|
|
|
|
|
|