Sensors and tutorials

The same case in both codes, read at the same sensors, then OpenFOAM's own tutorials field by field. The experiment is drawn as a reference.

Engineering quantity agreement

brae, 1 GPU ÷ experiment
arrival timefirst impact peakintegral over 6 s
0.20.40.60.81.01.20.20.40.60.81.01.2OpenFOAM, 26 cores ÷ experimentdashed: brae = OpenFOAMband: within ±5%
Each mark is one sensor quantity on one mesh, divided by the experiment's value: OpenFOAM across, brae up. On the dashed line the two codes give the same number. Arrival times and first impact peaks (each the largest value after a 10 ms mean) sit on it; the marks off it are the splash after the impact (H3, P5 to P8) and OpenFOAM's reservoir gauge H4, which is the gauge and not the flow (see the limits).

One gauge, both codes, and the experiment

pressure at P1 (Pa)
brae, 1 GPUOpenFOAM, 26 coresexperiment
02,5005,0007,50010,00012,5000123456time (s)
Pressure at P1, the lowest sensor on the box's front, at 4,894,216 cells, with the experiment's curve as reference. Every row from 0.3 to 0.7 s, every tenth elsewhere.The two curves here are run at the case's own tolerance and differ at the impact; see Agreement with OpenFOAM.

Arrival of the front

The front reaches gauge H1 at the same instant in both codes on every mesh: 0.2420, 0.2440 and 0.2450 s.

The two codes move together with the time step

Halving the Courant limit twice at 398,720 cells raises the P1 first impact peak in both codes. They stay within 0.2% of each other at every limit, where the difference of a quantity QQ between the codes is

εQ=∣Qbrae−QOF∣∣QOF∣\varepsilon_Q = \frac{\lvert Q_{\mathrm{brae}}-Q_{\mathrm{OF}}\rvert}{\lvert Q_{\mathrm{OF}}\rvert}
(1)
Courant limitbraeOpenFOAM
0.75 (as shipped)9,297 Pa9,290 Pa
0.37510,368 Pa10,385 Pa
0.187510,972 Pa10,976 Pa

These three pairs are the largest value after a 10 ms mean; the raw step values of these runs were not recorded. The peak moves with the time step by more than the codes differ.

Same algorithm, same answer: OpenFOAM's 42 interFoam tutorials

brae running each case's own linear solvers, against serial OpenFOAM, 30 time steps as shipped. For a field qq (alpha, p_rgh or U) over the cells of the mesh, the relative L2L_2 difference is

∥qbrae−qOF∥2∥qOF∥2=∑i∣qbrae,i−qOF,i∣2∑i∣qOF,i∣2\frac{\lVert q_{\mathrm{brae}}-q_{\mathrm{OF}}\rVert_2}{\lVert q_{\mathrm{OF}}\rVert_2} = \sqrt{\frac{\sum_i \lvert q_{\mathrm{brae},i}-q_{\mathrm{OF},i}\rvert^{2}}{\sum_i \lvert q_{\mathrm{OF},i}\rvert^{2}}}
(2)

and its median over the 42 tutorials is:

alpha
2.7e-12
p_rgh
1.1e-11
U
1.1e-08

In brae's test suite 39 tutorials are held to bounds between 4e-13 and 4e-06 at pinned tolerances. This is not what a user gets by default: by default brae replaces the case's pressure solver with its own, and that path is a different measurement, given under the limits.

Source of the experiment

K.M.T. Kleefsman, G. Fekken, A.E.P. Veldman, B. Iwanowski, B. Buchner, “A Volume-of-Fluid based simulation method for wave impact problems”, Journal of Computational Physics 206 (2005) 363–393. doi:10.1016/j.jcp.2004.12.007

Experiment carried out at MARIN; measurements from the SPHERIC benchmark archive, test 2 (test_case_2_exp_data.xls; test description by Issa and Violeau, release 1.1, 2006). spheric-sph.org/tests/test-02