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_R(
8f93275e63 Jean*0008      I           bi, bj, k, dTarg,
0af3073e4e Jean*0009      I           rTrans, wFld,
31566b6684 Alis*0010      I           tracer,
                0011      O           wT,
                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"
                0030 #include "GRID.h"
24016b3859 Alis*0031 #include "EEPARAMS.h"
                0032 #include "PARAMS.h"
31566b6684 Alis*0033 
527a84022c Alis*0034 
8f93275e63 Jean*0035 
1b5fb69d21 Ed H*0036 
                0037 
0af3073e4e Jean*0038 
1b5fb69d21 Ed H*0039 
                0040 
8f93275e63 Jean*0041       INTEGER bi, bj, k
24016b3859 Alis*0042       _RL dTarg
31566b6684 Alis*0043       _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0af3073e4e Jean*0044       _RL wFld  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
8a9f54a9ca Jean*0045       _RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
31566b6684 Alis*0046       INTEGER myThid
                0047 
527a84022c Alis*0048 
1b5fb69d21 Ed H*0049 
527a84022c Alis*0050       _RL wT    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0051 
                0052 
8f93275e63 Jean*0053 
1b5fb69d21 Ed H*0054 
                0055 
                0056 
8f93275e63 Jean*0057 
1b5fb69d21 Ed H*0058 
8f93275e63 Jean*0059 
0af3073e4e Jean*0060 
8f93275e63 Jean*0061       INTEGER i, j, kp1, km1, km2
                0062       _RL Cr, Rjm, Rj, Rjp
c6bc48bdb5 Jean*0063       _RL wLoc, wCFL
8f93275e63 Jean*0064       _RL CrMax
                0065       PARAMETER( CrMax = 1.D+6 )
                0066 
527a84022c Alis*0067 
31566b6684 Alis*0068 #include "GAD_FLUX_LIMITER.h"
527a84022c Alis*0069 
31566b6684 Alis*0070 
8f93275e63 Jean*0071       km2 = MAX(1,k-2)
                0072       km1 = MAX(1,k-1)
                0073       kp1 = MIN(Nr,k+1)
31566b6684 Alis*0074 
                0075       IF ( k.GT.Nr) THEN
8f93275e63 Jean*0076        DO j=1-OLy,sNy+OLy
                0077         DO i=1-OLx,sNx+OLx
31566b6684 Alis*0078          wT(i,j) = 0.
                0079         ENDDO
                0080        ENDDO
                0081       ELSE
8f93275e63 Jean*0082        DO j=1-OLy,sNy+OLy
                0083         DO i=1-OLx,sNx+OLx
2b22d4bdc3 Jean*0084 
99c9058df1 Jean*0085          wLoc = wFld(i,j)
c6bc48bdb5 Jean*0086          wCFL = ABS( wLoc*dTarg*recip_drC(k) )
8f93275e63 Jean*0087          Rjp = (tracer(i,j,kp1)-tracer(i,j,k))
                0088      &          *maskC(i,j,kp1,bi,bj)
                0089          Rj  = (tracer(i,j,k)  -tracer(i,j,km1))
                0090          Rjm = (tracer(i,j,km1)-tracer(i,j,km2))
                0091      &          *maskC(i,j,km2,bi,bj)
2b22d4bdc3 Jean*0092 
8f93275e63 Jean*0093          IF ( rTrans(i,j).LT.zeroRL ) THEN
                0094            Cr = Rjm
                0095          ELSE
                0096            Cr = Rjp
                0097          ENDIF
                0098          IF ( ABS(Rj)*CrMax .LE. ABS(Cr) ) THEN
                0099            Cr = SIGN( CrMax, Cr )*SIGN( oneRL, Rj )
31566b6684 Alis*0100          ELSE
8f93275e63 Jean*0101            Cr = Cr/Rj
31566b6684 Alis*0102          ENDIF
8f93275e63 Jean*0103 
                0104 
                0105          Cr = Limiter(Cr)
                0106 
                0107          wT(i,j) = maskC(i,j,km1,bi,bj)*(
                0108      &      rTrans(i,j)*
                0109      &        (tracer(i,j,k)+tracer(i,j,km1))*0.5 _d 0
                0110      &    + ABS(rTrans(i,j))*( (oneRL-Cr) + wCFL*Cr )
                0111      &                      *Rj*0.5 _d 0 )
31566b6684 Alis*0112         ENDDO
                0113        ENDDO
                0114       ENDIF
                0115 
                0116       RETURN
                0117       END