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

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

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

revision 1.5 by jmc, Tue Oct 18 16:03:55 2005 UTC revision 1.6 by jmc, Sat Oct 22 20:12:23 2005 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "GAD_OPTIONS.h"  #include "GAD_OPTIONS.h"
5    
6    CBOP
7    C !ROUTINE: GAD_DST3FL_ADV_R
8    
9    C !INTERFACE: ==========================================================
10        SUBROUTINE GAD_DST3FL_ADV_R(        SUBROUTINE GAD_DST3FL_ADV_R(
11       I           bi_arg,bj_arg,k,dTarg,       I           bi,bj,k,dTarg,
12       I           rTrans, wVel,       I           rTrans, wVel,
13       I           tracer,       I           tracer,
14       O           wT,       O           wT,
15       I           myThid )       I           myThid )
16  C     /==========================================================\  
17  C     | SUBROUTINE GAD_DST3_ADV_R                                |  C !DESCRIPTION:
18  C     | o Compute Vertical advective Flux of Tracer using        |  C  Calculates the area integrated vertical flux due to advection of a tracer
19  C     |   3rd Order DST Sceheme with flux limiting               |  C  using 3rd Order DST Scheme with flux limiting
20  C     |==========================================================|  
21    C !USES: ===============================================================
22        IMPLICIT NONE        IMPLICIT NONE
23    
24  C     == GLobal variables ==  C     == GLobal variables ==
25  #include "SIZE.h"  #include "SIZE.h"
26  #include "GRID.h"  #include "GRID.h"
 #include "EEPARAMS.h"  
 #include "PARAMS.h"  
27  #include "GAD.h"  #include "GAD.h"
28    
29  C     == Routine arguments ==  C     == Routine arguments ==
30        INTEGER bi_arg,bj_arg,k  C !INPUT PARAMETERS: ===================================================
31    C  bi,bj             :: tile indices
32    C  k                 :: vertical level
33    C  deltaTloc         :: local time-step (s)
34    C  rTrans            :: vertical volume transport
35    C  wVel              :: vertical flow
36    C  tracer            :: tracer field
37    C  myThid            :: thread number
38          INTEGER bi,bj,k
39        _RL dTarg        _RL dTarg
40        _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
41        _RL wVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)        _RL wVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
42        _RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)        _RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
       _RL wT    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
43        INTEGER myThid        INTEGER myThid
44    
45    C !OUTPUT PARAMETERS: ==================================================
46    C  wT                :: vertical advective flux
47          _RL wT    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
48    
49  C     == Local variables ==  C     == Local variables ==
50  C     wFld     :: velocity, vertical component  C !LOCAL VARIABLES: ====================================================
51        INTEGER i,j,kp1,km1,km2,bi,bj  C  i,j               :: loop indices
52    C  km1               :: =max( k-1 , 1 )
53    C  wFld              :: velocity, vertical component
54    C  wCFL              :: Courant-Friedrich-Levy number
55          INTEGER i,j,kp1,km1,km2
56        _RL Rjm,Rj,Rjp,cfl,d0,d1        _RL Rjm,Rj,Rjp,cfl,d0,d1
57        _RL psiP,psiM,thetaP,thetaM        _RL psiP,psiM,thetaP,thetaM
58        _RL wFld        _RL wFld
59        _RL thetaMax        _RL thetaMax
60        PARAMETER( thetaMax = 1.D+20 )        PARAMETER( thetaMax = 1.D+20 )
61    
       IF (.NOT. multiDimAdvection) THEN  
 C      If using the standard time-stepping/advection schemes (ie. AB-II)  
 C      then the data-structures are all global arrays  
        bi=bi_arg  
        bj=bj_arg  
       ELSE  
 C      otherwise if using the multi-dimensional advection schemes  
 C      then the data-structures are all local arrays except  
 C      for maskC(...) and wVel(...)  
        bi=1  
        bj=1  
       ENDIF  
   
62        km2=MAX(1,k-2)        km2=MAX(1,k-2)
63        km1=MAX(1,k-1)        km1=MAX(1,k-1)
64        kp1=MIN(Nr,k+1)        kp1=MIN(Nr,k+1)
65    
66        DO j=1-Oly,sNy+Oly        DO j=1-Oly,sNy+Oly
67         DO i=1-Olx,sNx+Olx         DO i=1-Olx,sNx+Olx
68          Rjp=(tracer(i,j,k,bi,bj)-tracer(i,j,kp1,bi,bj))          Rjp=(tracer(i,j,k)-tracer(i,j,kp1))
69       &         *maskC(i,j,kp1,bi_arg,bj_arg)       &         *maskC(i,j,kp1,bi,bj)
70          Rj =(tracer(i,j,km1,bi,bj)-tracer(i,j,k,bi,bj))          Rj =(tracer(i,j,km1)-tracer(i,j,k))
71       &         *maskC(i,j,k,bi_arg,bj_arg)*maskC(i,j,km1,bi_arg,bj_arg)       &         *maskC(i,j,k,bi,bj)*maskC(i,j,km1,bi,bj)
72          Rjm=(tracer(i,j,km2,bi,bj)-tracer(i,j,km1,bi,bj))          Rjm=(tracer(i,j,km2)-tracer(i,j,km1))
73       &         *maskC(i,j,km1,bi_arg,bj_arg)       &         *maskC(i,j,km1,bi,bj)
74    
75  c       wFld = wVel(i,j,k,bi_arg,bj_arg)  c       wFld = wVel(i,j,k,bi,bj)
76          wFld = rTrans(i,j)*recip_rA(i,j,bi_arg,bj_arg)          wFld = rTrans(i,j)*recip_rA(i,j,bi,bj)
77          cfl=abs(wFld*dTarg*recip_drC(k))          cfl=abs(wFld*dTarg*recip_drC(k))
78          d0=(2. _d 0 -cfl)*(1. _d 0 -cfl)*oneSixth          d0=(2. _d 0 -cfl)*(1. _d 0 -cfl)*oneSixth
79          d1=(1. _d 0 -cfl*cfl)*oneSixth          d1=(1. _d 0 -cfl*cfl)*oneSixth
# Line 103  C-      prevent |thetaP,M| to reach too Line 108  C-      prevent |thetaP,M| to reach too
108    
109          wT(i,j)=          wT(i,j)=
110       &   0.5*(rTrans(i,j)+abs(rTrans(i,j)))       &   0.5*(rTrans(i,j)+abs(rTrans(i,j)))
111       &      *( Tracer(i,j, k ,bi,bj) + psiM*Rj )       &      *( tracer(i,j, k ) + psiM*Rj )
112       &  +0.5*(rTrans(i,j)-abs(rTrans(i,j)))       &  +0.5*(rTrans(i,j)-abs(rTrans(i,j)))
113       &      *( Tracer(i,j,km1,bi,bj) - psiP*Rj )       &      *( tracer(i,j,km1) - psiP*Rj )
114    
115         ENDDO         ENDDO
116        ENDDO        ENDDO

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

  ViewVC Help
Powered by ViewVC 1.1.22