CyprienBosserelle / BG_Flood

Numerical model for simulating shallow water hydrodynamics on the GPU using an Adaptive Mesh Refinment type grid. The model was designed with the goal of simulating inundation (River, Storm surge or tsunami). The model uses a Block Uniform Quadtree approach that runs on the GPU but the adaptive/multi-resolution/AMR is being implemented and not yet operational. The core SWE engine and adaptivity has been inspired and taken from St Venant solver from Basilisk and the CUDA GPU memory model has been inspired by the work from Vacondio _et al._2017)
GNU General Public License v3.0
34 stars 15 forks source link

New Engine (Buttinger et al.) and fix adaptive simulation #48

Closed CyprienBosserelle closed 3 years ago

CyprienBosserelle commented 3 years ago

Fix flow bug in adaptive case

New refine linear scheme

The previous iteration of the refine linear scheme was wrong. this new one is now, more in line with Basilisk.

New Fill-Halo for fluxes

This new fill halo for fluxes is bug fix from the previous iteration. This scheme now conserves mass.

New Engine

Implement the Buttinger et al. 2019 Scheme as a replacement for the kurganov scheme. The new scheme is identical to the basilisk implementation in BFlood but fixes a Lake at rest issue.

More stable==Faster

This new scheme handles the flow over steep topography very well, removing some spurious velocity that plagued the model time step. Early real world test in Waikanae suggest a 40% speed gain!

Two new tests

I also added 2 test to verify some of the validity f the new scheme:

New stability check

An additional limiter applied at advection step prevents negative depth. This seem to help on some instability at partially wet cell or cells drying out rapidely

CyprienBosserelle commented 3 years ago

Alice, I think I fixed all the conflicts but I had to try 3-4 time before I got it right.

The files I had trouble with were ReadInput.cu, Param.h and write_netcdf.cu

Please check nothing looks funny in these files