238 |
I uTrans, uFld, maskW(1-Olx,1-Oly,k,bi,bj), locABT, |
I uTrans, uFld, maskW(1-Olx,1-Oly,k,bi,bj), locABT, |
239 |
O af, myThid ) |
O af, myThid ) |
240 |
ENDIF |
ENDIF |
241 |
|
#ifndef ALLOW_AUTODIFF_TAMC |
242 |
|
ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN |
243 |
|
CALL GAD_OS7MP_ADV_X( bi,bj,k, dTtracerLev(k), |
244 |
|
I uTrans, uFld, maskW(1-Olx,1-Oly,k,bi,bj), locABT, |
245 |
|
O af, myThid ) |
246 |
|
#endif |
247 |
ELSE |
ELSE |
248 |
STOP 'GAD_CALC_RHS: Bad advectionScheme (X)' |
STOP 'GAD_CALC_RHS: Bad advectionScheme (X)' |
249 |
ENDIF |
ENDIF |
295 |
ENDIF |
ENDIF |
296 |
ENDIF |
ENDIF |
297 |
#endif |
#endif |
298 |
|
C anelastic: advect.fluxes are scaled by rhoFac but hor.diff. flx are not |
299 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
300 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
301 |
fZon(i,j) = fZon(i,j) + df(i,j) |
fZon(i,j) = fZon(i,j) + df(i,j)*rhoFacC(k) |
302 |
ENDDO |
ENDDO |
303 |
ENDDO |
ENDDO |
304 |
|
|
353 |
I vTrans, vFld, maskS(1-Olx,1-Oly,k,bi,bj), locABT, |
I vTrans, vFld, maskS(1-Olx,1-Oly,k,bi,bj), locABT, |
354 |
O af, myThid ) |
O af, myThid ) |
355 |
ENDIF |
ENDIF |
356 |
|
#ifndef ALLOW_AUTODIFF_TAMC |
357 |
|
ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN |
358 |
|
CALL GAD_OS7MP_ADV_Y( bi,bj,k, dTtracerLev(k), |
359 |
|
I vTrans, vFld, maskS(1-Olx,1-Oly,k,bi,bj), locABT, |
360 |
|
O af, myThid ) |
361 |
|
#endif |
362 |
ELSE |
ELSE |
363 |
STOP 'GAD_CALC_RHS: Bad advectionScheme (Y)' |
STOP 'GAD_CALC_RHS: Bad advectionScheme (Y)' |
364 |
ENDIF |
ENDIF |
410 |
ENDIF |
ENDIF |
411 |
ENDIF |
ENDIF |
412 |
#endif |
#endif |
413 |
|
C anelastic: advect.fluxes are scaled by rhoFac but hor.diff. flx are not |
414 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
415 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
416 |
fMer(i,j) = fMer(i,j) + df(i,j) |
fMer(i,j) = fMer(i,j) + df(i,j)*rhoFacC(k) |
417 |
ENDDO |
ENDDO |
418 |
ENDDO |
ENDDO |
419 |
|
|
470 |
I dTtracerLev(k),rTrans,wFld,TracAB(1-Olx,1-Oly,1,bi,bj), |
I dTtracerLev(k),rTrans,wFld,TracAB(1-Olx,1-Oly,1,bi,bj), |
471 |
O af, myThid ) |
O af, myThid ) |
472 |
ENDIF |
ENDIF |
473 |
|
#ifndef ALLOW_AUTODIFF_TAMC |
474 |
|
ELSEIF (vertAdvecScheme.EQ.ENUM_OS7MP ) THEN |
475 |
|
CALL GAD_OS7MP_ADV_R( bi,bj,k, |
476 |
|
I dTtracerLev(k),rTrans,wFld,TracAB(1-Olx,1-Oly,1,bi,bj), |
477 |
|
O af, myThid ) |
478 |
|
#endif |
479 |
ELSE |
ELSE |
480 |
STOP 'GAD_CALC_RHS: Bad vertAdvecScheme (R)' |
STOP 'GAD_CALC_RHS: Bad vertAdvecScheme (R)' |
481 |
ENDIF |
ENDIF |
578 |
ENDIF |
ENDIF |
579 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
580 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
581 |
fVerT(i,j,kUp) = fVerT(i,j,kUp) + df(i,j)*maskUp(i,j) |
fVerT(i,j,kUp) = fVerT(i,j,kUp) |
582 |
|
& + df(i,j)*maskUp(i,j)*rhoFacF(k) |
583 |
ENDDO |
ENDDO |
584 |
ENDDO |
ENDDO |
585 |
ENDIF |
ENDIF |
586 |
#endif |
#endif |
587 |
|
|
588 |
C-- Divergence of fluxes |
C-- Divergence of fluxes |
589 |
|
C Anelastic: scale vertical fluxes by rhoFac and leave Horizontal fluxes unchanged |
590 |
DO j=1-Oly,sNy+Oly-1 |
DO j=1-Oly,sNy+Oly-1 |
591 |
DO i=1-Olx,sNx+Olx-1 |
DO i=1-Olx,sNx+Olx-1 |
592 |
gTracer(i,j,k,bi,bj)=gTracer(i,j,k,bi,bj) |
gTracer(i,j,k,bi,bj)=gTracer(i,j,k,bi,bj) |
593 |
& -_recip_hFacC(i,j,k,bi,bj)*recip_drF(k)*recip_rA(i,j,bi,bj) |
& -_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
594 |
|
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)*recip_rhoFacC(k) |
595 |
& *( (fZon(i+1,j)-fZon(i,j)) |
& *( (fZon(i+1,j)-fZon(i,j)) |
596 |
& +(fMer(i,j+1)-fMer(i,j)) |
& +(fMer(i,j+1)-fMer(i,j)) |
597 |
& +(fVerT(i,j,kDown)-fVerT(i,j,kUp))*rkSign |
& +(fVerT(i,j,kDown)-fVerT(i,j,kUp))*rkSign |