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