31 |
|
|
32 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
33 |
C == Routine Arguments == |
C == Routine Arguments == |
34 |
|
C implicitAdvection :: if True, treat vertical advection implicitly |
35 |
|
C advectionScheme :: advection scheme to use |
36 |
|
C tracerIdentity :: Identifier for the tracer |
37 |
|
C kappaRX :: 3-D array for vertical diffusion coefficient |
38 |
|
C wVel :: vertical component of the velcity field |
39 |
|
C tracer :: tracer field at current time step |
40 |
|
C gTracer :: future tracer field |
41 |
|
C bi,bj :: tile indices |
42 |
|
C myTime :: current time |
43 |
|
C myIter :: current iteration number |
44 |
|
C myThid :: thread number |
45 |
LOGICAL implicitAdvection |
LOGICAL implicitAdvection |
46 |
INTEGER advectionScheme |
INTEGER advectionScheme |
47 |
INTEGER tracerIdentity |
INTEGER tracerIdentity |
55 |
|
|
56 |
C !LOCAL VARIABLES: |
C !LOCAL VARIABLES: |
57 |
C == Local variables == |
C == Local variables == |
58 |
|
C iMin,iMax,jMin,jMax :: computational domain |
59 |
|
C i,j,k :: loop indices |
60 |
|
C a5d :: 2nd lower diagonal of the pentadiagonal matrix |
61 |
|
C b5d :: 1rst lower diagonal of the pentadiagonal matrix |
62 |
|
C c5d :: main diagonal of the pentadiagonal matrix |
63 |
|
C d5d :: 1rst upper diagonal of the pentadiagonal matrix |
64 |
|
C e5d :: 2nd upper diagonal of the pentadiagonal matrix |
65 |
|
C rTrans :: vertical volume transport at inteface k |
66 |
|
C rTransKp1 :: vertical volume transport at inteface k+1 |
67 |
|
C localTijk :: local copy of the tracer field (for Non-Lin Adv.Scheme) |
68 |
|
C diagonalNumber :: number of non-zero diagonals in the matrix |
69 |
|
C errCode :: > 0 if singular matrix |
70 |
INTEGER iMin,iMax,jMin,jMax |
INTEGER iMin,iMax,jMin,jMax |
71 |
INTEGER i,j,k |
INTEGER i,j,k |
72 |
INTEGER diagonalNumber, errCode |
INTEGER diagonalNumber, errCode |
78 |
_RL rTrans(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
_RL rTrans(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
79 |
_RL rTransKp1(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
_RL rTransKp1(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
80 |
_RL localTijk(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
_RL localTijk(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
|
_RL limitDf (1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
|
|
_RL rFlx |
|
81 |
CEOP |
CEOP |
82 |
|
|
83 |
IF (Nr.LE.1) RETURN |
IF (Nr.LE.1) RETURN |