Formula translation in Blitz++, NumPy and modern Fortran: A case study of the language choice tradeoffs

@article{Arabas2014FormulaTI,
  title={Formula translation in Blitz++, NumPy and modern Fortran: A case study of the language choice tradeoffs},
  author={Sylwester Arabas and Dorota Jarecka and Anna Jaruga and Maciej Fijalkowski},
  journal={Sci. Program.},
  year={2014},
  volume={22},
  pages={201-222}
}
Three object-oriented implementations of a prototype solver of the advection equation are introduced. The presented programs are based on Blitz 

Figures and Tables from this paper

libmpdata++ 0.1: a library of parallel MPDATA solvers for systems of generalised transport equations
TLDR
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.
Parallel coordinate free implementation of local meshless method
  • J. Slak, G. Kosec
  • Computer Science
    2018 41st International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO)
  • 2018
TLDR
It is demonstrated that code written this way has little-to-no performance overhead compared to classical numerical code while being more expressive and readable, which gravely shortens model development and testing phases.
libmpdata++ 1.0: a library of parallel MPDATA solvers for systems of generalised transport equations
TLDR
The paper describes the library programming interface, and serves as a user guide, and 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.
Python bindings for libcloudph++
TLDR
This technical note introduces the Python bindings for libcloudph++, a C++ library of algorithms for representing atmospheric cloud microphysics in numerical models, and includes listings with Python scripts exemplifying the use of selected library components.
Computational Fluid Dynamics Simulations to Understand Mass Transport in Major Vessels of the Heart and Brain
The breaking of gravity waves plays an important role in the dynamics of the atmosphere and ocean, in particular in helping control the large-scale circulation in the middle atmosphere. It is also a
Genuinely third-order advection scheme for atmospheric flows: the Multidimensional Positive Definite Advection Transport Algorithm approach.
Numerical modelling of the atmosphere is crucially important for the state-of-theart weather forecasting and climate prediction. In weather, climate, and chemistrytransport models, advective
High Performance Computing in Satellite SAR Interferometry: A Critical Perspective
TLDR
A perspective on the state-of-the-art of high performance computing methodologies applied to spaceborne SAR interferometry (InSAR) is presented, and the different parallel algorithms for interferometric processing of SAR data are critically discussed at different levels.
Modeling peak interaction forces of soft matter with dynamic AFM in liquid
The atomic force microscope (AFM) is an instrument that has revolutionized the field of nanoscience and nanotechnology by enabling the characterization and manipulation of materials with nanometer

References

SHOWING 1-10 OF 43 REFERENCES
Numerical Recipes: FORTRAN
TLDR
The Diskette v 2.04, 3.5'' (720k) for IBM PC, PS/2 and compatibles [DOS] Reference Record created on 2004-09-07, modified on 2016-08-08.
Will C++ Be Faster than Fortran?
TLDR
This chapter starts by locking at reasons why C++ used to be slower, and then describes techniques which can make it faster than Fortran.
The C++ Programming Language, 4th Edition
TLDR
With this third edition, Stroustrup makes C++ even more accessible to those new to the language while adding information and techniques that even expert C++ programmers will find invaluable.
In: Numerical Recipes in Fortran 90
TLDR
By default, array expressions and assignments are performed for all elements of the same-shaped arrays referenced, but this can be modified, however, by use of a where construction like this.
Where’s the Real Bottleneck in Scientific Computing?
TLDR
A new generation of fast, cheap chips had just ushered in the airrent era of low-cost supercomputers, in which multiple processors work in parallel on a single problem.
Modern Fortran in Practice
TLDR
This tutorial guide shows Fortran programmers how to apply features of the latest standard, Fortran 2008, in twenty-first-century style: modular, concise, object-oriented, and resource-efficient, using multiple processors.
The transition and adoption to modern programming concepts for scientific computing in Fortran
TLDR
Early work in expressing object-oriented concepts based on the new Fortran90 constructs - foreign to most programmers at the time - is reviewed, the experimental work in applying them to various applications, the impact on the WG5/J3 standards committees to consider formalizing object- oriented constructs for later versions of Fortran are reviewed.
Computational Science Demands a New Paradigm
The field has reached a threshold at which better organization becomes crucial. New methods of verifying and validating complex codes are mandatory if computational science is to fulfill its promise
State of the art in object oriented programming with Fortran
TLDR
A survey of tools and techniques that allow Fortran programmers to develop their software in an object oriented way is presented, showing that some key elements of OO design can be used successfully with the right compiler.
...
...