File indexing completed on 2021-04-29 05:11:42 UTC
view on githubraw file Latest commit 8f93275e on 2021-04-22 23:05:26 UTC
31566b6684 Alis*0001 #include "GAD_OPTIONS.h"
0002
527a84022c Alis*0003
0004
0005
0006
0af3073e4e Jean*0007 SUBROUTINE GAD_FLUXLIMIT_ADV_Y(
8f93275e63 Jean*0008 I bi, bj, k, calcCFL, deltaTloc,
0af3073e4e Jean*0009 I vTrans, vFld,
38a970fb5d Jean*0010 I maskLocS, tracer,
31566b6684 Alis*0011 O vT,
0012 I myThid )
0013
527a84022c Alis*0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 IMPLICIT NONE
31566b6684 Alis*0029 #include "SIZE.h"
8f93275e63 Jean*0030 #include "EEPARAMS.h"
31566b6684 Alis*0031 #include "GRID.h"
0032
527a84022c Alis*0033
8f93275e63 Jean*0034
1b5fb69d21 Ed H*0035
692dd30681 Jean*0036
0037
1b5fb69d21 Ed H*0038
692dd30681 Jean*0039
1b5fb69d21 Ed H*0040
0041
8f93275e63 Jean*0042 INTEGER bi, bj, k
692dd30681 Jean*0043 LOGICAL calcCFL
1816bb0a69 Patr*0044 _RL deltaTloc
31566b6684 Alis*0045 _RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0af3073e4e Jean*0046 _RL vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
38a970fb5d Jean*0047 _RS maskLocS(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
31566b6684 Alis*0048 _RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0049 INTEGER myThid
0050
527a84022c Alis*0051
1b5fb69d21 Ed H*0052
527a84022c Alis*0053 _RL vT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0054
0055
8f93275e63 Jean*0056
1b5fb69d21 Ed H*0057
8f93275e63 Jean*0058
31566b6684 Alis*0059 INTEGER i,j
8f93275e63 Jean*0060 _RL Cr, Rjm, Rj, Rjp
692dd30681 Jean*0061 _RL vCFL
8f93275e63 Jean*0062 _RL CrMax
0063 PARAMETER( CrMax = 1.D+6 )
0064
527a84022c Alis*0065
31566b6684 Alis*0066 #include "GAD_FLUX_LIMITER.h"
527a84022c Alis*0067
31566b6684 Alis*0068
8f93275e63 Jean*0069 DO i=1-OLx,sNx+OLx
0070 vT(i,1-OLy) = 0. _d 0
0071 vT(i,2-OLy) = 0. _d 0
0072 vT(i,sNy+OLy) = 0. _d 0
31566b6684 Alis*0073 ENDDO
8f93275e63 Jean*0074 DO j=1-OLy+2,sNy+OLy-1
0075 DO i=1-OLx,sNx+OLx
2b22d4bdc3 Jean*0076
692dd30681 Jean*0077 vCFL = vFld(i,j)
0078 IF ( calcCFL ) vCFL = ABS( vFld(i,j)*deltaTloc
c6bc48bdb5 Jean*0079 & *recip_dyC(i,j,bi,bj)*recip_deepFacC(k) )
8f93275e63 Jean*0080 Rjp = (tracer(i,j+1)-tracer(i, j ))*maskLocS(i,j+1)
0081 Rj = (tracer(i, j )-tracer(i,j-1))*maskLocS(i, j )
0082 Rjm = (tracer(i,j-1)-tracer(i,j-2))*maskLocS(i,j-1)
2b22d4bdc3 Jean*0083
8f93275e63 Jean*0084 IF ( vTrans(i,j).GT.zeroRL ) THEN
0085 Cr = Rjm
0086 ELSE
0087 Cr = Rjp
0088 ENDIF
0089 IF ( ABS(Rj)*CrMax .LE. ABS(Cr) ) THEN
0090 Cr = SIGN( CrMax, Cr )*SIGN( oneRL, Rj )
31566b6684 Alis*0091 ELSE
8f93275e63 Jean*0092 Cr = Cr/Rj
31566b6684 Alis*0093 ENDIF
8f93275e63 Jean*0094
0095
0096 Cr = Limiter(Cr)
0097
0af3073e4e Jean*0098 vT(i,j) =
8f93275e63 Jean*0099 & vTrans(i,j)*(Tracer(i,j)+Tracer(i,j-1))*0.5 _d 0
0100 & - ABS(vTrans(i,j))*( (oneRL-Cr) + vCFL*Cr )
0101 & *Rj*0.5 _d 0
31566b6684 Alis*0102 ENDDO
0103 ENDDO
0104
0105 RETURN
0106 END