411 |
IF ( S_edge ) THEN |
IF ( S_edge ) THEN |
412 |
DO j=1-Oly,0 |
DO j=1-Oly,0 |
413 |
DO i=iMinUpd,iMaxUpd |
DO i=iMinUpd,iMaxUpd |
414 |
localTij(i,j)=localTij(i,j)-dTtracerLev(k)* |
localTij(i,j) = localTij(i,j) |
415 |
& _recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& -dTtracerLev(k)*recip_rhoFacC(k) |
416 |
& *recip_rA(i,j,bi,bj) |
& *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
417 |
|
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
418 |
& *( af(i+1,j)-af(i,j) |
& *( af(i+1,j)-af(i,j) |
419 |
& -tracer(i,j,k,bi,bj)*(uTrans(i+1,j)-uTrans(i,j)) |
& -tracer(i,j,k,bi,bj)*(uTrans(i+1,j)-uTrans(i,j)) |
420 |
& ) |
& ) |
424 |
IF ( N_edge ) THEN |
IF ( N_edge ) THEN |
425 |
DO j=sNy+1,sNy+Oly |
DO j=sNy+1,sNy+Oly |
426 |
DO i=iMinUpd,iMaxUpd |
DO i=iMinUpd,iMaxUpd |
427 |
localTij(i,j)=localTij(i,j)-dTtracerLev(k)* |
localTij(i,j) = localTij(i,j) |
428 |
& _recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& -dTtracerLev(k)*recip_rhoFacC(k) |
429 |
& *recip_rA(i,j,bi,bj) |
& *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
430 |
|
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
431 |
& *( af(i+1,j)-af(i,j) |
& *( af(i+1,j)-af(i,j) |
432 |
& -tracer(i,j,k,bi,bj)*(uTrans(i+1,j)-uTrans(i,j)) |
& -tracer(i,j,k,bi,bj)*(uTrans(i+1,j)-uTrans(i,j)) |
433 |
& ) |
& ) |
443 |
IF ( interiorOnly .AND. N_edge ) jMaxUpd = sNy |
IF ( interiorOnly .AND. N_edge ) jMaxUpd = sNy |
444 |
DO j=jMinUpd,jMaxUpd |
DO j=jMinUpd,jMaxUpd |
445 |
DO i=1-Olx+1,sNx+Olx-1 |
DO i=1-Olx+1,sNx+Olx-1 |
446 |
localTij(i,j)=localTij(i,j)-dTtracerLev(k)* |
localTij(i,j) = localTij(i,j) |
447 |
& _recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& -dTtracerLev(k)*recip_rhoFacC(k) |
448 |
& *recip_rA(i,j,bi,bj) |
& *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
449 |
|
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
450 |
& *( af(i+1,j)-af(i,j) |
& *( af(i+1,j)-af(i,j) |
451 |
& -tracer(i,j,k,bi,bj)*(uTrans(i+1,j)-uTrans(i,j)) |
& -tracer(i,j,k,bi,bj)*(uTrans(i+1,j)-uTrans(i,j)) |
452 |
& ) |
& ) |
578 |
IF ( W_edge ) THEN |
IF ( W_edge ) THEN |
579 |
DO j=jMinUpd,jMaxUpd |
DO j=jMinUpd,jMaxUpd |
580 |
DO i=1-Olx,0 |
DO i=1-Olx,0 |
581 |
localTij(i,j)=localTij(i,j)-dTtracerLev(k)* |
localTij(i,j) = localTij(i,j) |
582 |
& _recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& -dTtracerLev(k)*recip_rhoFacC(k) |
583 |
& *recip_rA(i,j,bi,bj) |
& *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
584 |
|
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
585 |
& *( af(i,j+1)-af(i,j) |
& *( af(i,j+1)-af(i,j) |
586 |
& -tracer(i,j,k,bi,bj)*(vTrans(i,j+1)-vTrans(i,j)) |
& -tracer(i,j,k,bi,bj)*(vTrans(i,j+1)-vTrans(i,j)) |
587 |
& ) |
& ) |
591 |
IF ( E_edge ) THEN |
IF ( E_edge ) THEN |
592 |
DO j=jMinUpd,jMaxUpd |
DO j=jMinUpd,jMaxUpd |
593 |
DO i=sNx+1,sNx+Olx |
DO i=sNx+1,sNx+Olx |
594 |
localTij(i,j)=localTij(i,j)-dTtracerLev(k)* |
localTij(i,j) = localTij(i,j) |
595 |
& _recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& -dTtracerLev(k)*recip_rhoFacC(k) |
596 |
& *recip_rA(i,j,bi,bj) |
& *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
597 |
|
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
598 |
& *( af(i,j+1)-af(i,j) |
& *( af(i,j+1)-af(i,j) |
599 |
& -tracer(i,j,k,bi,bj)*(vTrans(i,j+1)-vTrans(i,j)) |
& -tracer(i,j,k,bi,bj)*(vTrans(i,j+1)-vTrans(i,j)) |
600 |
& ) |
& ) |
610 |
IF ( interiorOnly .AND. E_edge ) iMaxUpd = sNx |
IF ( interiorOnly .AND. E_edge ) iMaxUpd = sNx |
611 |
DO j=1-Oly+1,sNy+Oly-1 |
DO j=1-Oly+1,sNy+Oly-1 |
612 |
DO i=iMinUpd,iMaxUpd |
DO i=iMinUpd,iMaxUpd |
613 |
localTij(i,j)=localTij(i,j)-dTtracerLev(k)* |
localTij(i,j) = localTij(i,j) |
614 |
& _recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& -dTtracerLev(k)*recip_rhoFacC(k) |
615 |
& *recip_rA(i,j,bi,bj) |
& *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
616 |
|
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
617 |
& *( af(i,j+1)-af(i,j) |
& *( af(i,j+1)-af(i,j) |
618 |
& -tracer(i,j,k,bi,bj)*(vTrans(i,j+1)-vTrans(i,j)) |
& -tracer(i,j,k,bi,bj)*(vTrans(i,j+1)-vTrans(i,j)) |
619 |
& ) |
& ) |
661 |
ENDDO |
ENDDO |
662 |
ELSE |
ELSE |
663 |
C- horizontal advection done; store intermediate result in 3D array: |
C- horizontal advection done; store intermediate result in 3D array: |
664 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
665 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
666 |
localTijk(i,j,k)=localTij(i,j) |
localTijk(i,j,k)=localTij(i,j) |
667 |
|
ENDDO |
668 |
ENDDO |
ENDDO |
|
ENDDO |
|
669 |
ENDIF |
ENDIF |
670 |
|
|
671 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
749 |
rTransKp1(i,j) = kp1Msk*rTrans(i,j) |
rTransKp1(i,j) = kp1Msk*rTrans(i,j) |
750 |
wFld(i,j) = wVel(i,j,k,bi,bj) |
wFld(i,j) = wVel(i,j,k,bi,bj) |
751 |
rTrans(i,j) = wVel(i,j,k,bi,bj)*rA(i,j,bi,bj) |
rTrans(i,j) = wVel(i,j,k,bi,bj)*rA(i,j,bi,bj) |
752 |
|
& *deepFac2F(k)*rhoFacF(k) |
753 |
& *maskC(i,j,k-1,bi,bj) |
& *maskC(i,j,k-1,bi,bj) |
754 |
fVerT(i,j,kUp) = 0. |
fVerT(i,j,kUp) = 0. |
755 |
ENDDO |
ENDDO |
805 |
C-- Divergence of vertical fluxes |
C-- Divergence of vertical fluxes |
806 |
DO j=1-Oly,sNy+Oly |
DO j=1-Oly,sNy+Oly |
807 |
DO i=1-Olx,sNx+Olx |
DO i=1-Olx,sNx+Olx |
808 |
localTij(i,j)=localTijk(i,j,k)-dTtracerLev(k)* |
localTij(i,j) = localTijk(i,j,k) |
809 |
& _recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& -dTtracerLev(k)*recip_rhoFacC(k) |
810 |
& *recip_rA(i,j,bi,bj) |
& *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
811 |
& *( fVerT(i,j,kDown)-fVerT(i,j,kUp) |
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k) |
812 |
& -tracer(i,j,k,bi,bj)*(rTransKp1(i,j)-rTrans(i,j)) |
& *( fVerT(i,j,kDown)-fVerT(i,j,kUp) |
813 |
& )*rkSign |
& -tracer(i,j,k,bi,bj)*(rTransKp1(i,j)-rTrans(i,j)) |
814 |
|
& )*rkSign |
815 |
gTracer(i,j,k,bi,bj)= |
gTracer(i,j,k,bi,bj)= |
816 |
& (localTij(i,j)-tracer(i,j,k,bi,bj))/dTtracerLev(k) |
& (localTij(i,j)-tracer(i,j,k,bi,bj))/dTtracerLev(k) |
817 |
ENDDO |
ENDDO |