2014
DOI: 10.1155/2014/870146
|View full text |Cite
|
Sign up to set email alerts
|

Formula Translation in Blitz++, NumPy and Modern Fortran: A Case Study of the Language Choice Tradeoffs

Abstract: Three object-oriented implementations of a prototype solver of the advection equation are introduced. The presented programs are based on Blitz++ (C++), NumPy (Python) and Fortran's built-in array containers. The solvers constitute implementations of the Multidimensional Positive-Definite Advective Transport Algorithm (MPDATA). The introduced codes serve as examples for how the application of object-oriented programming (OOP) techniques and new language constructs from C++11 and Fortran 2008 allow to reproduce… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3

Citation Types

0
5
0
1

Year Published

2014
2014
2023
2023

Publication Types

Select...
3
3
1

Relationship

2
5

Authors

Journals

citations
Cited by 7 publications
(6 citation statements)
references
References 22 publications
0
5
0
1
Order By: Relevance
“…The Python bindings significantly facilitate the use of the library and add relatively little runtime overhead (particularly in the case of the resource-intensive particle-based scheme). Python has simpler syntax than C++, its philosophy emphasises succinct code (see [3] for a geoscience-relevant case study comparing Python, C++ and Fortran). Moreover, Python is widespread across the atmospheric science community [7].…”
Section: Introductionmentioning
confidence: 99%
“…The Python bindings significantly facilitate the use of the library and add relatively little runtime overhead (particularly in the case of the resource-intensive particle-based scheme). Python has simpler syntax than C++, its philosophy emphasises succinct code (see [3] for a geoscience-relevant case study comparing Python, C++ and Fortran). Moreover, Python is widespread across the atmospheric science community [7].…”
Section: Introductionmentioning
confidence: 99%
“…The adopted design contributes to the readability, maintainability and conciseness of the code. The current development of libmpdata++ is an extension of the research on OOP implementation of the basic MPDATA scheme presented in Arabas et al (2014).…”
Section: Introductionmentioning
confidence: 99%
“…The adopted design contributes to the readability, maintainability and conciseness of the code. The current development of libmpdata++ is an extension of the research on OOP implementation of the basic MPDATA scheme presented in Arabas et al (2014). The goal of this article is twofold: first, to document the library interface by providing usage examples; and second, to validate the correctness of the implementation by verifying the results against published benchmarks.…”
Section: Introductionmentioning
confidence: 99%
“…PyMPDATA is aimed to address several aspects which steepen the learning curve and limit collaborative usage and development of existing C++ (e.g., Jaruga et al, 2015) and Fortran (e.g., Kühnlein et al, 2019) implementations of MPDATA. Performance on par with compiled-language implementations is targeted by employing just-in-time (JIT) compilation using Numba (Lam et al, 2015), which translates Python code into fast machine code using the Low Level Virtual Machine (LLVM, https://llvm.org/) compiler infrastructure (for a discussion of another JIT implementation of MPDATA using PyPy, see Arabas et al, 2014). PyMPDATA is engineered aiming at both performance and usability, the latter encompassing research user's, developer's and maintainer's perspectives.…”
mentioning
confidence: 99%
“…and based on Figure 5 from Arabas et al (2014). As of the current version, PyMPDATA supports homogeneous transport in one (1D), two (2D), and three dimensions (3D) using structured meshes, optionally generalised by coordinate transformation (Smolarkiewicz & Clark, 1986;Smolarkiewicz & Margolin, 1993).…”
mentioning
confidence: 99%