Multi-layer solver
BG_Flood started the implementration of the Basilisk multilayer solver (Popinet 2020). Despite the name, the implementation was only done for a single layer. multi-layer development is underway.
Motivation
Adopting the Basilisk multilayer solver is driven by two main goals * having a non-hydrostatic solver for Tsunami and swell waves * consider the impact of density driven flow in estuaries
BG_Flood development is very much focus on inuindations drivers and not so much on larger spatial and temporal scale oceanographic processes. While this solver should open the door for simulating some of these processes we will not really focus on these and users may find more user friendly features in ROMS.
Nice side effect
The engine is claimed to be superior to other engine/solvers/ reconstruction already implemented in BG_Flood. Our experience so far shows:
- Much improvement for rain on steep catchment (see below)
- Sharper shock capture with 1 layer but this may be minor
- More prone to instability
Usage
If you want to use this engine, simply specify the engine in your param file like this:
We are still experimenting with conflict with other solver default options and fixes and for now make sure you have the option wetdryfix=false in your param file too.
Test
There is a test for the solver as part of test=1 note this is only tested for the selected engine.
Validation
Below are a series of validation of the solver for rain-on-grid, dam break and tsunami.
Rain on grid validation
Simple mass-conservation test
The simple mass conservation test is great for checking engine flaws when using rain on grid. Here we push it to the extreme by throwing 100 m3/s for 100 s over 1 km2 (equivalent 10 mm of rainfall falling in 100 s which is equivalent to a rate of 360 mm/h for 1.5-ish minutes ). Note that there are a few tricks to There are a few trick to force the Buttinger to conserve mass but we decided not to turn them on for these tests.
When topography is gentle mass conservation is a given but when using steep topography things start to break down. This is the extreme bit. Clearly the Kurganov is better at conserving Mass and the new engine is not bad either.
| Test | Theory | Kurganov Engine | Buttinger Engine | 1-layer MLH Engine |
|---|---|---|---|---|
| No Topo, Wet ground | 10000.0 | -0.00071% | -0.00290% | 0.00351% |
| No Topo Dry ground | 10000.0 | 0.00027% | 0.00023% | 0.00022% |
| Real Topo Dry ground | 10000.0 | 2.24% | -13.03% | 3.10% |
The table above show that the Kurganov (the original) engine conserves mass better but the fighures below show that it actually does that by keeping water up the catchment and not letting it flow down (Bad). Buttinger model looks like it is missing a huge amount of mass (Bad) but in reality it is because it lets the water down (Good) but as a consequence it leaves negative water depth upstream (Bad). Thew new engine as a good mass balance and lets the water flow nicely...
Water depth after 500 s, Kurganov engine. Note the black pixels are negative values.
Water depth after 500 s, Buttinger engine. Note the black pixels are negative values.
Water depth after 500 s, 1-layer MLH Engine. No negative values and the water has accumulated in the rivers instead of upstream of the steep slopes.
Cea et al. test
This is one of my favourite test for Rain on grid even though the lab test has some flaw itself. This shows that the Buttinger and 1-layer MLH engines basically perform the same. and despite over-predicting the peak capture the both raising and falling limb really well.
Rain-on-grid Summary
The new engine is performing very well and looks like is able to dramatically improve results using rain on grid. In the past BG_Flood didn't see much improvement using old engine with no-infiltration, the new engine might require a tighter use of infiltration for rain-on-grid.
Dam Break
Dam break lab experiments are very difficult to replicate but they are widely use for model comparison so this is a great to compare engine and compare with other hydrodynamic packages (we won't be doing that explicitly here...).
The Dam break experiment we are replicating here is the classic dam-break against an isolated obstacle from Soares-Frazão and Zech (2002). This test is used in the Benchmarking of 2D Hydraulic Modelling Packages from the UK Environment Agency.
Experimental setup
As expected the model is doing sorta OK against the lab data. And more importantly both Kurganov solver and the 1-layered MLH are doing pretty similar at all gauges.
BG_Flood results
Gauge 1
The model capture the initial shock OK but then struggles because of the breaking of the shock forms rollers.
Gauge 2
Gauge 6
Velocity field
While the velocity figure above are not too promising the plot below show modelled velocity patterns and amplitude with some canning similarity to the measurements.
Downstream velocity
Cross-stream velocity
Other models
For reference this is how other models did.
Dam Break summary
The new engine perform at least as well as the previous engine and is as satisfactory as a 2D solver can be for dam break problems.
Tsunami Validation
This post is to check the validity and performance of the new engine for tsunami problem
Monai example
One of the hope is that the new engine handles tsunami wave propagation and inundation. The Monai benchmark test is a great test for that.
The new engine (5) process very similar results as the other engine (1).
Kamchatka 2025 earthquake
Here we plug the SIFT inversion of the tsunami for deformation and run the model across the Pacific. We only plot the comparison for a single DART buoys below but we have looked at a bunch and there is only minor difference between the two engine tested. It's actually quite hard to see the difference between the two model. this is actually a good thing that two fairly different engine produces such similar results.
Tsunami summary
The new engine shows better shock capture but that might be only helpful for nearshore processes (this is still very good).