You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MPDATA is explicit (forward-in-time), sign-preserving, conservative and non-linearly stable.
13
-
Through iterative corrections, it achieves high-order accuracy in time and space even for complex flows and prob-
14
-
lem geometries. The algorithm has been continuously developed over a third of a century resulting in a family of robust numerical schemes with documented applications in computational bio-, geo-, and astro-physics as well as engineering
15
-
(see [Smolarkiewicz, 2006](http://doi.org/10.1002/fld.1071), [Smolarkiewicz et al., 2016](http://doi.org/10.1016/j.jcp.2016.06.048), for an overview and recent references).
12
+
MPDATA is explicit, forward-in-time, sign-preserving, conservative and non-linearly stable.
13
+
Through iterative corrections, it achieves high-order accuracy in time and space even for complex flows and problem geometries.
14
+
The algorithm has been continuously developed over a third of a century
15
+
resulting in a family of robust numerical schemes with documented applications in computational bio-, geo-, and astro-physics as well as engineering
16
+
(see [Smolarkiewicz, 2006](http://doi.org/10.1002/fld.1071), [Smolarkiewicz et al., 2016](http://doi.org/10.1016/j.jcp.2016.06.048),
17
+
for an overview and recent references).
16
18
17
-
In short, libmpdata++ is a new header-only C++ implementation of MPDATA.
18
-
The features of the library along with discussion of several example
19
+
In short, libmpdata++ is a new header-only C++ implementation of MPDATA.
20
+
The features of the library along with discussion of several example
19
21
use cases were published in a user-guide-style journal paper:
20
-
http://www.geosci-model-dev.net/8/1005/2015/
22
+
[Jaruga et al., 2015](http://www.geosci-model-dev.net/8/1005/2015/).
21
23
22
24
Compilation of programs that use libmpdata++ requires:
23
25
- a C++11 compliant compiler (optionally with OpenMP support)
24
26
- Blitz++ and Boost C++ libraries
25
-
- HDF5 and gnuplot-iostream libraries
27
+
- HDF5 and gnuplot-iostream libraries
26
28
(optional, depending on the type of output mechanism chosen)
27
29
28
30
During development of libmpdata++, we are continuously testing
29
31
the code on Linux using GCC and LLVM/Clang as well as on OSX
30
32
using Apple/Clang - these are considered the supported platforms.
31
33
32
-
Compilation and execution of the examples shipped with libmpdata++
34
+
Compilation and execution of the examples shipped with libmpdata++
33
35
is easiest done using CMake, and the following instructions assume
34
36
you're using CMake. Some hints on CMake usage are included at the
35
37
end of this file.
@@ -38,7 +40,7 @@ The .travis.yml file shipped with the library contains a complete
38
40
set of commands needed to build and execute all tests programs
39
41
shipped with libmpdata++ on fresh Ubuntu and OSX installations -
40
42
it may contain useful information on obtaining the dependencies.
41
-
We also provide a Docker image that contains all requirements
43
+
We also provide a Docker image that contains all requirements
42
44
and the libmpdata++ library.
43
45
44
46
## Installing the library and running tests locally
@@ -50,13 +52,13 @@ and the libmpdata++ library.
50
52
$ cd build
51
53
$ cmake ..
52
54
$ cd ../..
53
-
```
55
+
```
54
56
The next two steps are optional test. Running the tests is highly
55
-
recommended to verify if the library works correctly in your
57
+
recommended to verify if the library works correctly in your
56
58
environment. Nevertheless, in principle you can skip to step four
57
59
and install the library right away.
58
-
59
-
### 2. To perform unit tests:
60
+
61
+
### 2. To perform unit tests:
60
62
```
61
63
$ cd tests/unit
62
64
$ mkdir build
@@ -71,17 +73,17 @@ The unit tests should complete in a dozen of seconds.
71
73
### 3. To reproduce all results from the GMD paper:
72
74
```
73
75
$ cd tests/paper_2015_GMD
74
-
$ mkdir build
76
+
$ mkdir build
75
77
$ cd build
76
78
$ cmake ..
77
79
$ make
78
-
$ make test
80
+
$ make test
79
81
$ cd ../../..
80
82
```
81
83
This takes ca. 15 minutes on a quad-core laptop. The "make test"
82
-
command performs simulations, checks the output against reference
83
-
data (tests/paper_2015_GMD/*/refdata/*) and plots all figures
84
-
included in the paper. The subfolders of paper_2015_GMD correspond
84
+
command performs simulations, checks the output against reference
85
+
data (tests/paper_2015_GMD/*/refdata/*) and plots all figures
86
+
included in the paper. The subfolders of paper_2015_GMD correspond
85
87
to consecutive chapters in the GMD paper. Some of the scripts run
86
88
by "make test" require additional packages including Python, Python
87
89
libraries (NumPy, SciPy, matplotlib) and Paraview.
@@ -92,26 +94,26 @@ libraries (NumPy, SciPy, matplotlib) and Paraview.
92
94
$ sudo make install
93
95
```
94
96
This will copy the libmpdata++ headers into the system include path
95
-
(e.g. /usr/include/libmpdata++) and copy the libmpdata++-config.cmake
96
-
file into the system share directory (e.g. /usr/share/libmpdata++)
97
+
(e.g. /usr/include/libmpdata++) and copy the libmpdata++-config.cmake
98
+
file into the system share directory (e.g. /usr/share/libmpdata++)
97
99
what will allow CMake users to do find_package(libmpdata++).
98
100
99
101
### Some CMake hints:
100
102
- to point CMake to a non-default C++ compiler (e.g. clang++):
101
103
```
102
-
$ cmake .. -DCMAKE_CXX_COMPILER=clang++
104
+
$ cmake .. -DCMAKE_CXX_COMPILER=clang++
103
105
```
104
106
- to alter the installation prefix (e.g. /usr/ instead of /usr/local):
105
107
```
106
108
$ cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr
107
109
```
108
-
- to switch between debug and release (default) compilation modes
110
+
- to switch between debug and release (default) compilation modes
109
111
(has to be done after compiler choice):
110
112
```
111
113
$ cmake .. -DCMAKE_BUILD_TYPE=Debug
112
114
$ cmake .. -DCMAKE_BUILD_TYPE=Release
113
-
```
114
-
- two alternative ways of cleaning leftovers from a previous build
115
+
```
116
+
- two alternative ways of cleaning leftovers from a previous build
0 commit comments