9 |
|
|
10 |
C !INTERFACE: ========================================================== |
C !INTERFACE: ========================================================== |
11 |
SUBROUTINE GAD_ADVECTION( |
SUBROUTINE GAD_ADVECTION( |
12 |
I implicitAdvection, advectionScheme, tracerIdentity, |
I implicitAdvection, advectionScheme, tracerIdentity, |
13 |
I uVel, vVel, wVel, tracer, |
I uVel, vVel, wVel, tracer, |
14 |
O gTracer, |
O gTracer, |
15 |
I bi,bj, myTime,myIter,myThid) |
I bi,bj, myTime,myIter,myThid) |
16 |
|
|
17 |
C !DESCRIPTION: |
C !DESCRIPTION: |
18 |
C Calculates the tendancy of a tracer due to advection. |
C Calculates the tendancy of a tracer due to advection. |
46 |
#endif |
#endif |
47 |
|
|
48 |
C !INPUT PARAMETERS: =================================================== |
C !INPUT PARAMETERS: =================================================== |
49 |
C implicitAdvection :: vertical advection treated implicitly (later on) |
C implicitAdvection :: implicit vertical advection (later on) |
50 |
C advectionScheme :: advection scheme to use |
C advectionScheme :: advection scheme to use |
51 |
C tracerIdentity :: identifier for the tracer (required only for OBCS) |
C tracerIdentity :: tracer identifier (required only for OBCS) |
52 |
C uVel :: velocity, zonal component |
C uVel :: velocity, zonal component |
53 |
C vVel :: velocity, meridional component |
C vVel :: velocity, meridional component |
54 |
C wVel :: velocity, vertical component |
C wVel :: velocity, vertical component |
55 |
C tracer :: tracer field |
C tracer :: tracer field |
56 |
C bi,bj :: tile indices |
C bi,bj :: tile indices |
57 |
C myTime :: current time |
C myTime :: current time |
58 |
C myIter :: iteration number |
C myIter :: iteration number |
59 |
C myThid :: thread number |
C myThid :: thread number |
60 |
LOGICAL implicitAdvection |
LOGICAL implicitAdvection |
61 |
INTEGER advectionScheme |
INTEGER advectionScheme |
62 |
INTEGER tracerIdentity |
INTEGER tracerIdentity |
70 |
INTEGER myThid |
INTEGER myThid |
71 |
|
|
72 |
C !OUTPUT PARAMETERS: ================================================== |
C !OUTPUT PARAMETERS: ================================================== |
73 |
C gTracer :: tendancy array |
C gTracer :: tendancy array |
74 |
_RL gTracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
_RL gTracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
75 |
|
|
76 |
C !LOCAL VARIABLES: ==================================================== |
C !LOCAL VARIABLES: ==================================================== |
77 |
C maskUp :: 2-D array for mask at W points |
C maskUp :: 2-D array for mask at W points |
78 |
C iMin,iMax,jMin,jMax :: loop range for called routines |
C iMin,iMax, :: loop range for called routines |
79 |
C i,j,k :: loop indices |
C jMin,jMax :: loop range for called routines |
80 |
C kup :: index into 2 1/2D array, toggles between 1 and 2 |
C i,j,k :: loop indices |
81 |
C kdown :: index into 2 1/2D array, toggles between 2 and 1 |
C kup :: index into 2 1/2D array, toggles between 1 and 2 |
82 |
C kp1 :: =k+1 for k<Nr, =Nr for k=Nr |
C kdown :: index into 2 1/2D array, toggles between 2 and 1 |
83 |
C xA,yA :: areas of X and Y face of tracer cells |
C kp1 :: =k+1 for k<Nr, =Nr for k=Nr |
84 |
C uTrans,vTrans,rTrans :: 2-D arrays of volume transports at U,V and W points |
C xA,yA :: areas of X and Y face of tracer cells |
85 |
C rTransKp1 :: vertical volume transport at interface k+1 |
C uTrans,vTrans :: 2-D arrays of volume transports at U,V points |
86 |
C af :: 2-D array for horizontal advective flux |
C rTrans :: 2-D arrays of volume transports at W points |
87 |
C fVerT :: 2 1/2D arrays for vertical advective flux |
C rTransKp1 :: vertical volume transport at interface k+1 |
88 |
C localTij :: 2-D array used as temporary local copy of tracer fld |
C af :: 2-D array for horizontal advective flux |
89 |
C localTijk :: 3-D array used as temporary local copy of tracer fld |
C fVerT :: 2 1/2D arrays for vertical advective flux |
90 |
C kp1Msk :: flag (0,1) to act as over-riding mask for W levels |
C localTij :: 2-D array, temporary local copy of tracer fld |
91 |
C calc_fluxes_X :: logical to indicate to calculate fluxes in X dir |
C localTijk :: 3-D array, temporary local copy of tracer fld |
92 |
C calc_fluxes_Y :: logical to indicate to calculate fluxes in Y dir |
C kp1Msk :: flag (0,1) for over-riding mask for W levels |
93 |
C nipass :: number of passes to make in multi-dimensional method |
C calc_fluxes_X :: logical to indicate to calculate fluxes in X dir |
94 |
C ipass :: number of the current pass being made |
C calc_fluxes_Y :: logical to indicate to calculate fluxes in Y dir |
95 |
|
C nipass :: number of passes in multi-dimensional method |
96 |
|
C ipass :: number of the current pass being made |
97 |
_RS maskUp (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RS maskUp (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
98 |
INTEGER iMin,iMax,jMin,jMax |
INTEGER iMin,iMax,jMin,jMax |
99 |
INTEGER i,j,k,kup,kDown |
INTEGER i,j,k,kup,kDown |