/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_som_advect.F
ViewVC logotype

Diff of /MITgcm/pkg/generic_advdiff/gad_som_advect.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.4 by jmc, Fri May 9 22:32:35 2008 UTC revision 1.5 by jmc, Fri Nov 14 22:04:44 2008 UTC
# Line 81  C  afy           :: 2-D array for horizo Line 81  C  afy           :: 2-D array for horizo
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
# Line 107  C  msgBuf        :: Informational/error Line 106  C  msgBuf        :: Informational/error
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)
# Line 135  c     _RL localTijk(1-OLx:sNx+OLx,1-OLy: Line 133  c     _RL localTijk(1-OLx:sNx+OLx,1-OLy:
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
# Line 438  C--   End of ipass loop Line 436  C--   End of ipass loop
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
# Line 616  C-    Compute vertical advective flux in Line 615  C-    Compute vertical advective flux in
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    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.22