New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
2016WP/NocWad (diff) – NEMO

Changes between Version 3 and Version 4 of 2016WP/NocWad


Ignore:
Timestamp:
2016-04-07T13:16:39+02:00 (8 years ago)
Author:
acc
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2016WP/NocWad

    v3 v4  
    6464[[Image(fig04.png)]] 
    6565 
    66  
     66flux limiter is needed if: 
     67 
     68[[Image(fig05.png)]] 
     69 
     70So: 
     71 
     72[[Image(fig06.png)]] 
     73 
     74[[Image(fig07.png)]] is the time step, U is the vertical integrated velocity, q is the source rate from 
     75precipitation, evaporation, and river inflow, Fi is water flux rate across each boundary 
     76of the control volume, which is positive for outflow and negative for inflow. The 
     77subscript i identifies each boundary  in the west, east, north, and south directions. 
     78Dmin is the minimal water depth to be kept in a dry grid cell while D is the total depth 
     79of the grid cell. [[Image(fig08.png)]] is the horizontal area of the water column. sign() is 
     80the sign function. Obviously,  [[Image(fig09.png)]] should have the following property: 
     81 
     82 
     83 [[Image(fig10.png)]] 
     84 
     85 
     86In other words, the strength of limiter varies from 0 to 1 which corresponding to the fully shutting down the outflow and no limiter on outflow respectively. 
     87 
     88One case needs to be paid attention here is the above equations can produce a negative 
     89value of [[Image(fig11.png)]] , This is corresponding to a large evaporation rate. In that case, we need to 
     90turn off the evaporation on that grid cell during that time step. 
     91 
     92The limited flux (only in the horizontal directions) has the following form: 
     93 
     94 [[Image(fig12.png)]] 
     95 
     96The above equation is applied to all the continuity equation and tracer equations. The 
     97resultant water column on each grid cell will have its depth greater than or equals to the 
     98predefined minimal depth Dmin. 
     99 
     100==== Continuity Equation and Tracer Equations. ==== 
     101 
     102We need to be careful with the explicit time splitting method when the flux limiter is 
     103applied to the continuityequation.Therearemanyexternaltimestepswithineach 
     104internaltimestep.Themulti- barotropic stepping updates the sea surface height and vertical 
     105integrated horizontal velocity. It is tedious to keep the consistency between these two 
     106modes on the W/D grid cells. The reason to do the explicit time splitting is because of 
     107the big ratio of gravity wave speed to the baroclinic velocity. We argue here that this 
     108ratio must be a small value (less than or equals to 1) in the W/D area because of the 
     109relatively small water depth. So, we simplify this case by turning off the time splitting 
     110procedure on the W/D grid cells. 
     111 
     112A few iterations may be needed to take into account of the interactions between the two 
     113neighbouring cells when the limiter coefficient is calculated. As this flux limiter only 
     114effects around the W/D front, the iteration should converge very quickly. Also, the 
     115iteration is only needed for the continuity equation and should not be a very much extra 
     116burden to the whole computation. 
     117 
     118For the tracer Equation, it can simply be implemented by applying the flux limiter 
     119coefficient to the horizontal velocities. In such way, we don’t need change anything in 
     120the original source code except update the velocities. 
     121 
     122==== Momentum equations ==== 
     123 
     124For the momentum equations, the grid cell water depth is just the weight averaged depth of 
     125the two neighboring water depths, hence it always keeps positive as long as the water 
     126depth on the tracer grid cells is positive. So, we don’t need to apply any momentum flux 
     127limiter. 
     128 
     129The critical issue is how to maintain the model stability. The velocity nodes can be 
     130categorized into ocean nodes, land nodes, and W/D nodes based on whether wetting/drying 
     131happens or not on it. For the ocean nodes, which never got dried out, we don’t need to 
     132implement any W/D work there. For the land nodes, which never got flooded with water, we 
     133can just set the velocity to zero and don’t need to solve any equations. For the W/D 
     134nodes, some specific improvements need to be implemented to keep model stable. These 
     135improvements include filtering out the unrealistic hydrostatic pressure gradient and other 
     136nonlinear and the Coriolis forcing term.  
     137 
     138A momentum grid cell which is between a wet grid cell and a dry grid cell, will have modified 
     139barotropic pressure gradients as demonstrated in the following two equations: 
     140 
     141[[Image(fig13.png)]] 
     142 
     143[[Image(fig14.png)]] 
     144 
     145where: 
     146 
     147[[Image(fig15.png)]] 
     148 
     149[[Image(fig16.png)]] 
     150 
     151Where, sign() is the Fortran sign function. D is total depth, [[Image(fig17.png)]] is the sea surface height. g is gravity acceleration. P is the barotropic pressure gradient. 
     152 
     153The bottom friction on DDW will automatically increase when the “log layer” configuration 
     154is used. The vertical viscous/diffusive coefficient on DDW will be increased manually to 
     155keep the model stable. 
     156 
     157The surface wind stress and surface heating/cooling will be neglected at DDW cells. The 
     158justification is that these cells are thought fully or nearly dried. 
     159 
     160==== Code implementation: ==== 
     161 
     162One problem with to implement the current method is the sigma coordinate redistribution 
     163with time. The existing NEMO code uses coefficient “mut(uvf)(:,:,:)” which is based on the 
     164physical initial vertical length scale factors. In wetting/drying case, people might 
     165encounter zero depth in some grid cells at the initiation stage. So, it is modified to use 
     166the initial sigma coordinate vertical scale to do the redistribution. 
     167 
     168The current method tries to be independent of the existing code as much as possible, that 
     169is to say, to minimise the interferences from the wetting/drying module to the existing 
     170code. CPP method seems to be the most ideal one. But we were reminded that NEMO 
     171development policy is trying to reduce the use of CPP. So, the code is implemented with 
     172some extra coefficients which have value of 1 or zero when applied to the 
     173non-wetting/drying case.In some other parts, the wetting/drying code was added in some IF 
     174or CASE blocks. We are currently working on the implementation of this method onto NEMO 
     175v3.6 r:6397. Will provide a detailed list of the code modifications when the 
     176implementation is finished. 
    67177 
    68178This section should be completed before starting to develop the code, in order to find agreement on the method beforehand.