4 |
CBOI |
CBOI |
5 |
C !TITLE: pkg/generic\_advdiff |
C !TITLE: pkg/generic\_advdiff |
6 |
C !AUTHORS: adcroft@mit.edu |
C !AUTHORS: adcroft@mit.edu |
7 |
C !INTRODUCTION: |
C !INTRODUCTION: Generic Advection Diffusion Package |
|
C \section{Generica Advection Diffusion Package} |
|
8 |
C |
C |
9 |
C Package "generic\_advdiff" provides a common set of routines for calculating |
C Package "generic\_advdiff" provides a common set of routines for calculating |
10 |
C advective/diffusive fluxes for tracers (cell centered quantities on a C-grid). |
C advective/diffusive fluxes for tracers (cell centered quantities on a C-grid). |
81 |
INTEGER bi,bj |
INTEGER bi,bj |
82 |
INTEGER advectionScheme |
INTEGER advectionScheme |
83 |
INTEGER tracerIdentity |
INTEGER tracerIdentity |
84 |
_RL Gtracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
_RL Tracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
85 |
_RL myTime |
_RL myTime |
86 |
INTEGER myIter |
INTEGER myIter |
87 |
INTEGER myThid |
INTEGER myThid |
88 |
|
|
89 |
C !OUTPUT PARAMETERS: ================================================== |
C !OUTPUT PARAMETERS: ================================================== |
90 |
C gTracer :: tendancy array |
C gTracer :: tendancy array |
91 |
_RL Tracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
_RL gTracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy) |
92 |
|
|
93 |
C !LOCAL VARIABLES: ==================================================== |
C !LOCAL VARIABLES: ==================================================== |
94 |
C maskUp :: 2-D array for mask at W points |
C maskUp :: 2-D array for mask at W points |
241 |
ENDDO |
ENDDO |
242 |
|
|
243 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
244 |
#ifdef ALLOW_MULTIDIM_ADVECTION |
#ifndef DISABLE_MULTIDIM_ADVECTION |
245 |
CADJ STORE localTij(:,:) = comlev1_bibj_pass, key=passkey, byte=isbyte |
CADJ STORE localTij(:,:) = comlev1_bibj_pass, key=passkey, byte=isbyte |
246 |
#endif |
#endif |
247 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
256 |
CALL GAD_DST3FL_ADV_X( |
CALL GAD_DST3FL_ADV_X( |
257 |
& bi,bj,k,deltaTtracer,uTrans,uVel,localTij,af,myThid) |
& bi,bj,k,deltaTtracer,uTrans,uVel,localTij,af,myThid) |
258 |
ELSE |
ELSE |
259 |
STOP 'GAD_ADVECTION: adv. scheme incompatibale with mutli-dim' |
write(0,*) advectionScheme |
260 |
|
STOP 'GAD_ADVECTION: adv. scheme incompatibale with multi-dim' |
261 |
ENDIF |
ENDIF |
262 |
|
|
263 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
308 |
ENDDO |
ENDDO |
309 |
|
|
310 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
311 |
#ifdef ALLOW_MULTIDIM_ADVECTION |
#ifndef DISABLE_MULTIDIM_ADVECTION |
312 |
CADJ STORE localTij(:,:) = comlev1_bibj_pass, key=passkey, byte=isbyte |
CADJ STORE localTij(:,:) = comlev1_bibj_pass, key=passkey, byte=isbyte |
313 |
#endif |
#endif |
314 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
412 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
413 |
af(i,j) = af(i,j) |
af(i,j) = af(i,j) |
414 |
& + (maskC(i,j,k,bi,bj)-maskC(i,j,k-1,bi,bj))* |
& + (maskC(i,j,k,bi,bj)-maskC(i,j,k-1,bi,bj))* |
415 |
& rTrans(i,j)*localTijk(i,j,k) |
& rTrans(i,j)*tracer(i,j,k,bi,bj) |
416 |
|
c & rTrans(i,j)*localTijk(i,j,k) |
417 |
ENDDO |
ENDDO |
418 |
ENDDO |
ENDDO |
419 |
ELSE |
ELSE |
420 |
C- Surface "correction" term at k=1 : |
C- Surface "correction" term at k=1 : |
421 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
422 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
423 |
af(i,j) = rTrans(i,j)*localTijk(i,j,k) |
af(i,j) = rTrans(i,j)*tracer(i,j,k,bi,bj) |
424 |
|
c af(i,j) = rTrans(i,j)*localTijk(i,j,k) |
425 |
ENDDO |
ENDDO |
426 |
ENDDO |
ENDDO |
427 |
ENDIF |
ENDIF |