| 1 |
C $Header: /u/gcmpack/MITgcm/pkg/streamice/slope_limiter.F,v 1.2 2013/06/21 20:49:50 jmc Exp $ |
| 2 |
C $Name: $ |
| 3 |
|
| 4 |
#include "CPP_OPTIONS.h" |
| 5 |
|
| 6 |
! _RL FUNCTION SLOPE_LIMITER (num, denom) |
| 7 |
|
| 8 |
_RL FUNCTION SLOPE_LIMITER (Cr) |
| 9 |
|
| 10 |
! _RL num, denom |
| 11 |
! _RL SLOPE_LIMITER |
| 12 |
! _RL r |
| 13 |
_RL Cr |
| 14 |
|
| 15 |
! used for flux limiting in advective subroutines |
| 16 |
! Van Leer limiter (source: Wikipedia!) |
| 17 |
|
| 18 |
! if (denom .eq. 0.0) then |
| 19 |
! SLOPE_LIMITER = 0.0 |
| 20 |
! elseif (num*denom .le. 0.0) then |
| 21 |
! SLOPE_LIMITER = 0.0 |
| 22 |
! else |
| 23 |
! r = num/denom |
| 24 |
! SLOPE_LIMITER = (r+abs(r))/(1+abs(r)) |
| 25 |
! endif |
| 26 |
|
| 27 |
SLOPE_LIMITER = max(0.D0,max(min(1.D0,2.D0*Cr), |
| 28 |
& min(2.D0,Cr))) |
| 29 |
|
| 30 |
|
| 31 |
RETURN |
| 32 |
END |