/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_fluxlimit_adv_r.F
ViewVC logotype

Diff of /MITgcm/pkg/generic_advdiff/gad_fluxlimit_adv_r.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.5 by adcroft, Fri Sep 21 13:11:43 2001 UTC revision 1.8 by edhill, Mon Mar 29 03:33:51 2004 UTC
# Line 35  C !USES: =============================== Line 35  C !USES: ===============================
35  #include "PARAMS.h"  #include "PARAMS.h"
36    
37  C !INPUT PARAMETERS: ===================================================  C !INPUT PARAMETERS: ===================================================
38  C  bi_arg,bj_arg        :: tile indices  C  bi_arg,bj_arg      :: tile indices
39  C  k                    :: vertical level  C  k                  :: vertical level
40  C  rTrans               :: vertical volume transport  C  rTrans             :: vertical volume transport
41  C  wVel                 :: vertical flow  C  wVel               :: vertical flow
42  C  tracer               :: tracer field  C  tracer             :: tracer field
43  C  myThid               :: thread number  C  myThid             :: thread number
44        INTEGER bi_arg,bj_arg,k        INTEGER bi_arg,bj_arg,k
45        _RL dTarg        _RL dTarg
46        _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 49  C  myThid               :: thread number Line 49  C  myThid               :: thread number
49        INTEGER myThid        INTEGER myThid
50    
51  C !OUTPUT PARAMETERS: ==================================================  C !OUTPUT PARAMETERS: ==================================================
52  C  wT                   :: vertical advective flux  C  wT                 :: vertical advective flux
53        _RL wT    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL wT    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
54    
55  C !LOCAL VARIABLES: ====================================================  C !LOCAL VARIABLES: ====================================================
56  C  i,j                  :: loop indices  C  i,j                :: loop indices
57  C  kp1                  :: =min( k+1 , Nr )  C  kp1                :: =min( k+1 , Nr )
58  C  km1                  :: =max( k-1 , 1 )  C  km1                :: =max( k-1 , 1 )
59  C  km2                  :: =max( k-2 , 1 )  C  km2                :: =max( k-2 , 1 )
60  C  bi,bj                :: tile indices or (1,1) depending on use  C  bi,bj              :: tile indices or (1,1) depending on use
61  C  Cr                   :: slope ratio  C  Cr                 :: slope ratio
62  C  Rjm,Rj,Rjp           :: differences at i-1,i,i+1  C  Rjm,Rj,Rjp         :: differences at i-1,i,i+1
63    C  wFld               :: velocity, vertical component
64        INTEGER i,j,kp1,km1,km2,bi,bj        INTEGER i,j,kp1,km1,km2,bi,bj
65        _RL Cr,Rjm,Rj,Rjp        _RL Cr,Rjm,Rj,Rjp
66          _RL wFld
67  C Statement function provides Limiter(Cr)  C Statement function provides Limiter(Cr)
68  #include "GAD_FLUX_LIMITER.h"  #include "GAD_FLUX_LIMITER.h"
69  CEOP  CEOP
# Line 92  C      for maskC(...) and wVel(...) Line 94  C      for maskC(...) and wVel(...)
94        ELSE        ELSE
95         DO j=1-Oly,sNy+Oly         DO j=1-Oly,sNy+Oly
96          DO i=1-Olx,sNx+Olx          DO i=1-Olx,sNx+Olx
97    
98    c        wFld = wVel(i,j,k,bi_arg,bj_arg)
99             wFld = rTrans(i,j)*recip_rA(i,j,bi_arg,bj_arg)
100           Rjp=(tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj))           Rjp=(tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj))
101       &        *maskC(i,j,kp1,bi,bj)       &        *maskC(i,j,kp1,bi_arg,bj_arg)
102           Rj=(tracer(i,j,k,bi,bj)-tracer(i,j,kM1,bi,bj))           Rj=(tracer(i,j,k,bi,bj)-tracer(i,j,kM1,bi,bj))
103           Rjm=(tracer(i,j,km1,bi,bj)-tracer(i,j,kM2,bi,bj))           Rjm=(tracer(i,j,km1,bi,bj)-tracer(i,j,kM2,bi,bj))
104       &        *maskC(i,j,km2,bi,bj)       &        *maskC(i,j,km2,bi_arg,bj_arg)
105    
106           IF (Rj.NE.0.) THEN           IF (Rj.NE.0.) THEN
107            IF (rTrans(i,j).LT.0.) THEN            IF (rTrans(i,j).LT.0.) THEN
108              Cr=Rjm/Rj              Cr=Rjm/Rj
# Line 115  C      for maskC(...) and wVel(...) Line 121  C      for maskC(...) and wVel(...)
121       &     rTrans(i,j)*       &     rTrans(i,j)*
122       &        (Tracer(i,j,k,bi,bj)+Tracer(i,j,kM1,bi,bj))*0.5 _d 0       &        (Tracer(i,j,k,bi,bj)+Tracer(i,j,kM1,bi,bj))*0.5 _d 0
123       &    +(ABS(rTrans(i,j))*(1-Cr)       &    +(ABS(rTrans(i,j))*(1-Cr)
124       &      +rTrans(i,j)*wVel(i,j,k,bi_arg,bj_arg)*dTarg*recip_drC(k)       &      +rTrans(i,j)*wFld*dTarg*recip_drC(k)
125       &                  *Cr       &                  *Cr
126       &     )*Rj*0.5 _d 0                )       &     )*Rj*0.5 _d 0                )
127          ENDDO          ENDDO

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22