Simulating wetting and drying with SELFE

From ccrmwiki
Revision as of 11:50, 24 November 2012 by Yjzhang (talk | contribs) (Bottom friction in shallow areas)
Jump to: navigation, search

SELFE's wetting and drying capability has been carefully benchmarked and verified. There are 2 options: inunfl=0 as a 'light-weight' inundation scheme (you'd always start with this option), and a 'fine-scale' inundation scheme (inunfl=1), which requires some care. In particular, since extrapolation is used with inunfl=1, you'd make sure that the grid is reasonably resolved in the wetting and drying regions. This scheme may also require a smaller time step to very accurately capture the inundation process.

The wetting and drying process is inherently nonlinear and challenging, and below are some tips.

Bottom friction in shallow areas

A critical parameter in shallow area is the bottom friction. Note that the bottom friction parameterizations are very different between 2D and 3D model, and so you cannot use same input. For details please read this article.

From a physical point of view, the 2D and 3D models behave very differently. Consider a straight channel with variable depths, with flow coming from deeper part and going into shallower part. Fig. 1 shows the side views of 2D and 3D velocities.

Fig. 1 Side view of channel flow for (a) 2D and (b) 3D cases. Volume conservation dictates larger velocities in shallow areas. Note that strong shear is possible in 3D model.

In 2D model, the velocity is depth-averaged and vertical shear is not represented. Strong friction merely translates into reduced velocity. In 3D model however, a large friction will lead to strong shear. This problem is exacerbated by the use of terrain-following coordinates. This is because the log-drag formula, when bfric=1 is used, is:

Cd=[log(dz_b/z_0)/k]^-2

where z_0 is bottom roughness and dz_b is the bottom cell thickness. In shallow areas, dz_b~z_0 which leads to unrealistically large Cd. Note that Z-layer models do not have this problem as dz_b is not small here. A classical pathological velocity field obtained with SELFE is seen in Fig. 2. This problem is especially obvious when a large dt is used, as in the case of Fig. 2.

Fig. 2 Noisy velocity field in shallow areas in SELFE 3D

From a grid generation point of view, you'd make sure that channels are not 'blocked', i.e., with at least 2 always-wet nodes.

Numerically, there is a quick fix to this problem by reducing Cd used in SELFE 3D. When using bfric=1, set a reasonable Cdmax=0.006, and in some tricky regions (e.g. with large acceleration or rapid bathymetric variations), you may need to further reduce Cd locally. If you used bfric=1, you can do so by simply setting the depths to a negative value (i.e. telling the code the value is not roughness but Cd!); we found -0.0025 to -0.001 usually works well.