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.
Ticket Comment Diff – NEMO

Changes between Initial Version and Version 1 of Ticket #1180, comment 6


Ignore:
Timestamp:
2018-06-21T18:21:44+02:00 (6 years ago)
Author:
nemo
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #1180, comment 6

    initial v1  
    1010 since the diffusive flux can be expressed as ahm * ( dT/dx - uslope * dT/dz ), the problem arises because dT/dx - uslope * dT/dz < 0 (I am assuming here that all terms are > 0) which translates into the condition: 
    1111 
    12 (dT/dx) / (dT/dz) < uslope <==> slope(T) < slope(rho). The solution is to reduce the term uslope * dT/dz so that it does not exceed dT/dx (same in y-direction). 
     12 (dT/dx) / (dT/dz) < uslope <==> slope(T) < slope(rho). The solution is to reduce the term uslope * dT/dz so that it does not exceed dT/dx (same in y-direction). 
    1313 
    14 This does the job very well. It is just a question to figure if the fix is to be applied to the whole column or just the bottom. 
     14 This does the job very well. It is just a question to figure if the fix is to be applied to the whole column or just the bottom. 
    1515 
    1616 
    17172) limit the density slope in ldfslp.F90 assuming some safety factor that translates density slope to tracer slope. In this case, the constrain is to make sure that the slope is flatter that allowed by local resolution, assuming that diT~dkT: uslope < safety_factor * e3u/e1u, or terms of gradients: 
    1818 
    19 drho/dz < - | drho/dx | e1u / e3u / safety_factor < 0. 
     19 drho/dz < - | drho/dx | e1u / e3u / safety_factor < 0. 
    2020 
    21 I translated that in fortran as: 
     21 I translated that in fortran as: 
    2222 
     23{{{#!f 
    2324zbu = MIN(  zbu, -100._wp* ABS( zau ) , - invalpslp * e1u(ji,jj) / fse3u(ji,jj,jk) * ABS( zau )  ) 
    2425zbv = MIN(  zbv, -100._wp* ABS( zav ) , - invalpslp * e2v(ji,jj) / fse3v(ji,jj,jk) * ABS( zav )  ) 
     26}}} 
    2527 
    26 Hence, the limitation will be even more stringent for thinner grid cells in the vertical, which is the case with partial steps at the bottom. [yes, the overshoot problem is more acute with thinner partial cells] 
     28 Hence, the limitation will be even more stringent for thinner grid cells in the vertical, which is the case with partial steps at the bottom. [yes, the overshoot problem is more acute with thinner partial cells] 
    2729 
    28 This works in my case with safety factor of 0.1 or 0.5, even when the limitation is only applied to the bottom cells. It would be more numerically rigorous to make sure that the slope is lower than any of the tracers, but that would involve a lot more computations and the spirit of the density slope would be lost... 
     30 This works in my case with safety factor of 0.1 or 0.5, even when the limitation is only applied to the bottom cells. It would be more numerically rigorous to make sure that the slope is lower than any of the tracers, but that would involve a lot more computations and the spirit of the density slope would be lost... 
    2931 
    3032 
    31 [Note: I am not sure I get the rationale for the limiter "-7.e+3_wp/fse3u(ji,jj,jk)* ABS( zau )". it seems to be based on some fixed ratio of ah to horizontal resolution, but dt varies also with the resolution, not clear that it is universal... Anyway it does not kick in in my case, so not stringent enough] 
     33 [Note: I am not sure I get the rationale for the limiter "-7.e+3_wp/fse3u(ji,jj,jk)* ABS( zau )". it seems to be based on some fixed ratio of ah to horizontal resolution, but dt varies also with the resolution, not clear that it is universal... Anyway it does not kick in in my case, so not stringent enough] 
    3234 
    3335