81 |
C afr :: 2-D array for vertical advective flux |
C afr :: 2-D array for vertical advective flux |
82 |
C fVerT :: 2 1/2D arrays for vertical advective flux |
C fVerT :: 2 1/2D arrays for vertical advective flux |
83 |
C localTij :: 2-D array, temporary local copy of tracer fld |
C localTij :: 2-D array, temporary local copy of tracer fld |
|
C localTijk :: 3-D array, temporary local copy of tracer fld |
|
84 |
C calc_fluxes_X :: logical to indicate to calculate fluxes in X dir |
C calc_fluxes_X :: logical to indicate to calculate fluxes in X dir |
85 |
C calc_fluxes_Y :: logical to indicate to calculate fluxes in Y dir |
C calc_fluxes_Y :: logical to indicate to calculate fluxes in Y dir |
86 |
C interiorOnly :: only update the interior of myTile, but not the edges |
C interiorOnly :: only update the interior of myTile, but not the edges |
106 |
_RL afy (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL afy (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
107 |
_RL afr (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL afr (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
108 |
ccc _RL localTij(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
ccc _RL localTij(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
|
c _RL localTijk(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
|
109 |
_RL smVol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL smVol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
110 |
_RL smTr0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL smTr0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
111 |
_RL alp (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
_RL alp (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
133 |
_RL fp_yz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
_RL fp_yz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
134 |
_RL fn_yz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
_RL fn_yz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
135 |
_RL smCorners(OLx,OLy,4,-1:nSOM) |
_RL smCorners(OLx,OLy,4,-1:nSOM) |
136 |
_RL localTr |
c _RL localTr |
137 |
LOGICAL calc_fluxes_X, calc_fluxes_Y |
LOGICAL calc_fluxes_X, calc_fluxes_Y |
138 |
LOGICAL interiorOnly, overlapOnly |
LOGICAL interiorOnly, overlapOnly |
139 |
INTEGER limiter |
INTEGER limiter |
436 |
C- explicit advection is done ; store tendency in gTracer: |
C- explicit advection is done ; store tendency in gTracer: |
437 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
438 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
439 |
localTr = smTr0(i,j,k)/smVol(i,j,k) |
C-- without rescaling of tendencies: |
440 |
gTracer(i,j,k,bi,bj) = ( localTr - tracer(i,j,k,bi,bj) ) |
c localTr = smTr0(i,j,k)/smVol(i,j,k) |
441 |
& / dTtracerLev(k) |
c gTracer(i,j,k,bi,bj) = ( localTr - tracer(i,j,k,bi,bj) ) |
442 |
|
c & / dTtracerLev(k) |
443 |
|
C-- consistent with rescaling of tendencies (in FREESURF_RESCALE_G): |
444 |
|
gTracer(i,j,k,bi,bj) = |
445 |
|
& ( smTr0(i,j,k) - tracer(i,j,k,bi,bj)*smVol(i,j,k) ) |
446 |
|
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
447 |
|
& *recip_drF(k)*_recip_hFacC(i,j,k,bi,bj) |
448 |
|
& *recip_rhoFacC(k) |
449 |
|
& /dTtracerLev(k) |
450 |
ENDDO |
ENDDO |
451 |
ENDDO |
ENDDO |
|
ELSE |
|
|
C- horizontal advection done; store intermediate result in 3D array: |
|
|
c DO j=1-OLy,sNy+OLy |
|
|
c DO i=1-OLx,sNx+OLx |
|
|
c localTijk(i,j,k)=localTij(i,j) |
|
|
c ENDDO |
|
|
c ENDDO |
|
452 |
ENDIF |
ENDIF |
453 |
|
|
454 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
615 |
C-- Compute new tracer value and store tracer tendency |
C-- Compute new tracer value and store tracer tendency |
616 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
617 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
618 |
localTr = smTr0(i,j,k) |
C-- without rescaling of tendencies: |
619 |
|
c localTr = smTr0(i,j,k)/smVol(i,j,k) |
620 |
|
c gTracer(i,j,k,bi,bj) = ( localTr - tracer(i,j,k,bi,bj) ) |
621 |
|
c & / dTtracerLev(k) |
622 |
|
C-- consistent with rescaling of tendencies (in FREESURF_RESCALE_G): |
623 |
|
gTracer(i,j,k,bi,bj) = |
624 |
|
& ( smTr0(i,j,k) - tracer(i,j,k,bi,bj)*smVol(i,j,k) ) |
625 |
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
626 |
& *recip_drF(k)*_recip_hFacC(i,j,k,bi,bj) |
& *recip_drF(k)*_recip_hFacC(i,j,k,bi,bj) |
627 |
& *recip_rhoFacC(k) |
& *recip_rhoFacC(k) |
628 |
c localTr = smTr0(i,j,k)/smVol(i,j,k) |
& /dTtracerLev(k) |
|
gTracer(i,j,k,bi,bj) = ( localTr - tracer(i,j,k,bi,bj) ) |
|
|
& / dTtracerLev(k) |
|
629 |
ENDDO |
ENDDO |
630 |
ENDDO |
ENDDO |
631 |
|
|