/[MITgcm]/MITgcm/model/src/calc_gw.F
ViewVC logotype

Diff of /MITgcm/model/src/calc_gw.F

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

revision 1.34 by jmc, Thu Jul 13 21:32:38 2006 UTC revision 1.35 by jmc, Tue Dec 5 05:25:08 2006 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
 C     !DESCRIPTION: \bv  
2  C $Name$  C $Name$
3    
4  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
# Line 147  C-    note: assume fluid @ smaller k tha Line 146  C-    note: assume fluid @ smaller k tha
146             ENDIF             ENDIF
147  c          IF (momViscosity) THEN  c          IF (momViscosity) THEN
148  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
149             rThickC_C(i,j) =             rThickC_C(i,j) =
150       &          drF(k-1)*MAX( h0FacC(i,j,k-1,bi,bj)-halfRS, zeroRS )       &          drF(k-1)*MAX( h0FacC(i,j,k-1,bi,bj)-halfRS, zeroRS )
151       &        + drF( k )*MIN( h0FacC(i,j,k  ,bi,bj), halfRS )       &        + drF( k )*MIN( h0FacC(i,j,k  ,bi,bj), halfRS )
152  #else  #else
153             rThickC_C(i,j) =             rThickC_C(i,j) =
154       &          drF(k-1)*MAX( _hFacC(i,j,k-1,bi,bj)-halfRS, zeroRS )       &          drF(k-1)*MAX( _hFacC(i,j,k-1,bi,bj)-halfRS, zeroRS )
155       &        + drF( k )*MIN( _hFacC(i,j,k  ,bi,bj), halfRS )       &        + drF( k )*MIN( _hFacC(i,j,k  ,bi,bj), halfRS )
156  #endif  #endif
# Line 163  c          IF (momViscosity) THEN Line 162  c          IF (momViscosity) THEN
162       &        + drF( k )*MIN( _hFacS(i,j, k ,bi,bj), halfRS )       &        + drF( k )*MIN( _hFacS(i,j, k ,bi,bj), halfRS )
163  C     W-Cell Western face area:  C     W-Cell Western face area:
164             xA(i,j) = _dyG(i,j,bi,bj)*rThickC_W(i,j)             xA(i,j) = _dyG(i,j,bi,bj)*rThickC_W(i,j)
165    c    &                              *deepFacF(k)
166  C     W-Cell Southern face area:  C     W-Cell Southern face area:
167             yA(i,j) = _dxG(i,j,bi,bj)*rThickC_S(i,j)             yA(i,j) = _dxG(i,j,bi,bj)*rThickC_S(i,j)
168    c    &                              *deepFacF(k)
169    C deep-model: xA,yA is only used for viscous flux, in terms like: xA/dxC,yA/dyC.
170    C this gives deepFacF*recip_deepFacF => cancel each other (and therefore omitted)
171  c          ENDIF  c          ENDIF
172           ENDDO           ENDDO
173          ENDDO          ENDDO
# Line 180  C     Zonal flux d/dx W Line 183  C     Zonal flux d/dx W
183       &              (wVel(i,j,k,bi,bj)-wVel(i-1,j,k,bi,bj))       &              (wVel(i,j,k,bi,bj)-wVel(i-1,j,k,bi,bj))
184       &              *_recip_dxC(i,j,bi,bj)*xA(i,j)       &              *_recip_dxC(i,j,bi,bj)*xA(i,j)
185  #ifdef COSINEMETH_III  #ifdef COSINEMETH_III
186       &              *sqcosFacU(j,bi,bj)       &              *sqCosFacU(j,bi,bj)
187  #endif  #endif
188             ENDDO             ENDDO
189            ENDDO            ENDDO
# Line 216  C     ... add difference of meridional f Line 219  C     ... add difference of meridional f
219              del2w(i,j) = ( del2w(i,j)              del2w(i,j) = ( del2w(i,j)
220       &                    +(flx_NS(i,j+1)-flx_NS(i,j))       &                    +(flx_NS(i,j+1)-flx_NS(i,j))
221       &                   )*recip_rA(i,j,bi,bj)*recip_rThickC(i,j)       &                   )*recip_rA(i,j,bi,bj)*recip_rThickC(i,j)
222         &                    *recip_deepFac2F(k)
223             ENDDO             ENDDO
224            ENDDO            ENDDO
225  C-- No-slip BCs impose a drag at walls...  C-- No-slip BCs impose a drag at walls...
# Line 290  C     Interpolate vert viscosity to cent Line 294  C     Interpolate vert viscosity to cent
294       &          - viscLoc*( wVel(i,j,kp1,bi,bj)*wOverRide       &          - viscLoc*( wVel(i,j,kp1,bi,bj)*wOverRide
295       &                     -wVel(i,j, k ,bi,bj) )*rkSign       &                     -wVel(i,j, k ,bi,bj) )*rkSign
296       &                   *recip_drF(k)*rA(i,j,bi,bj)       &                   *recip_drF(k)*rA(i,j,bi,bj)
297         &                   *deepFac2C(k)*rhoFacC(k)
298  cOld &                   *recip_drF(k)  cOld &                   *recip_drF(k)
299             ENDDO             ENDDO
300            ENDDO            ENDDO
301  C     Tendency is minus divergence of viscous fluxes:  C     Tendency is minus divergence of viscous fluxes:
302    C     anelastic: vert.visc.flx is scaled by rhoFac but hor.visc.fluxes are not
303            DO j=jMin,jMax            DO j=jMin,jMax
304             DO i=iMin,iMax             DO i=iMin,iMax
305               gwDiss(i,j) =               gwDiss(i,j) =
306       &        -(   ( flx_EW(i+1,j)-flx_EW(i,j) )       &        -(   ( flx_EW(i+1,j)-flx_EW(i,j) )
307       &           + ( flx_NS(i,j+1)-flx_NS(i,j) )       &           + ( flx_NS(i,j+1)-flx_NS(i,j) )
308       &           + ( flx_Dn(i,j)-flxDisUp(i,j) )*rkSign       &           + ( flx_Dn(i,j)-flxDisUp(i,j) )*rkSign
309         &                                          *recip_rhoFacF(k)
310       &         )*recip_rA(i,j,bi,bj)*recip_rThickC(i,j)       &         )*recip_rA(i,j,bi,bj)*recip_rThickC(i,j)
311         &          *recip_deepFac2F(k)
312  cOld         gwDiss(i,j) =  cOld         gwDiss(i,j) =
313  cOld &        -(  cOld &        -(
314  cOld &          +_recip_dxF(i,j,bi,bj)*( flx_EW(i+1,j)-flx_EW(i,j) )  cOld &          +_recip_dxF(i,j,bi,bj)*( flx_EW(i+1,j)-flx_EW(i,j) )
# Line 339  C Advective Flux on Western face Line 347  C Advective Flux on Western face
347  C     transport through Western face area:  C     transport through Western face area:
348               uTrans = (               uTrans = (
349       &          drF(k-1)*_hFacW(i,j,k-1,bi,bj)*uVel(i,j,k-1,bi,bj)       &          drF(k-1)*_hFacW(i,j,k-1,bi,bj)*uVel(i,j,k-1,bi,bj)
350         &                  *rhoFacC(k-1)
351       &        + drF( k )*_hFacW(i,j, k ,bi,bj)*uVel(i,j, k ,bi,bj)       &        + drF( k )*_hFacW(i,j, k ,bi,bj)*uVel(i,j, k ,bi,bj)
352       &                )*halfRL*_dyG(i,j,bi,bj)       &                  *rhoFacC(k)
353         &                )*halfRL*_dyG(i,j,bi,bj)*deepFacF(k)
354  cOld &                )*halfRL  cOld &                )*halfRL
355               flx_EW(i,j)=               flx_EW(i,j)=
356       &         uTrans*(wVel(i,j,k,bi,bj)+wVel(i-1,j,k,bi,bj))*halfRL       &         uTrans*(wVel(i,j,k,bi,bj)+wVel(i-1,j,k,bi,bj))*halfRL
# Line 352  C Advective Flux on Southern face Line 362  C Advective Flux on Southern face
362  C     transport through Southern face area:  C     transport through Southern face area:
363               vTrans = (               vTrans = (
364       &          drF(k-1)*_hFacS(i,j,k-1,bi,bj)*vVel(i,j,k-1,bi,bj)       &          drF(k-1)*_hFacS(i,j,k-1,bi,bj)*vVel(i,j,k-1,bi,bj)
365         &                  *rhoFacC(k-1)
366       &         +drF( k )*_hFacS(i,j, k ,bi,bj)*vVel(i,j, k ,bi,bj)       &         +drF( k )*_hFacS(i,j, k ,bi,bj)*vVel(i,j, k ,bi,bj)
367       &                )*halfRL*_dxG(i,j,bi,bj)       &                  *rhoFacC(k)
368         &                )*halfRL*_dxG(i,j,bi,bj)*deepFacF(k)
369  cOld &                )*halfRL  cOld &                )*halfRL
370               flx_NS(i,j)=               flx_NS(i,j)=
371       &         vTrans*(wVel(i,j,k,bi,bj)+wVel(i,j-1,k,bi,bj))*halfRL       &         vTrans*(wVel(i,j,k,bi,bj)+wVel(i,j-1,k,bi,bj))*halfRL
# Line 365  C Advective Flux on Lower face of W-Cell Line 377  C Advective Flux on Lower face of W-Cell
377               tmp_WbarZ = halfRL*( wVel(i,j, k ,bi,bj)               tmp_WbarZ = halfRL*( wVel(i,j, k ,bi,bj)
378       &                           +wVel(i,j,kp1,bi,bj)*wOverRide )       &                           +wVel(i,j,kp1,bi,bj)*wOverRide )
379  C     transport through Lower face area:  C     transport through Lower face area:
380               rTrans = tmp_WbarZ*rA(i,j,bi,bj)               rTrans = halfRL*
381         &              ( wVel(i,j, k ,bi,bj)*deepFac2F( k )*rhoFacF( k )
382         &               +wVel(i,j,kp1,bi,bj)*deepFac2F(kp1)*rhoFacF(kp1)
383         &                                   *wOverRide
384         &              )*rA(i,j,bi,bj)
385               flx_Dn(i,j) = rTrans*tmp_WbarZ               flx_Dn(i,j) = rTrans*tmp_WbarZ
386  cOld         flx_Dn(i,j) = tmp_WbarZ*tmp_WbarZ  cOld         flx_Dn(i,j) = tmp_WbarZ*tmp_WbarZ
387             ENDDO             ENDDO
388            ENDDO            ENDDO
389  C     Tendency is minus divergence of advective fluxes:  C     Tendency is minus divergence of advective fluxes:
390    C     anelastic: all transports & advect. fluxes are scaled by rhoFac
391            DO j=jMin,jMax            DO j=jMin,jMax
392             DO i=iMin,iMax             DO i=iMin,iMax
393               gW(i,j,k,bi,bj) =               gW(i,j,k,bi,bj) =
# Line 378  C     Tendency is minus divergence of ad Line 395  C     Tendency is minus divergence of ad
395       &           + ( flx_NS(i,j+1)-flx_NS(i,j) )       &           + ( flx_NS(i,j+1)-flx_NS(i,j) )
396       &           + ( flx_Dn(i,j)-flxAdvUp(i,j) )*rkSign       &           + ( flx_Dn(i,j)-flxAdvUp(i,j) )*rkSign
397       &         )*recip_rA(i,j,bi,bj)*recip_rThickC(i,j)       &         )*recip_rA(i,j,bi,bj)*recip_rThickC(i,j)
398         &          *recip_deepFac2F(k)*recip_rhoFacF(k)
399  cOld         gW(i,j,k,bi,bj) =  cOld         gW(i,j,k,bi,bj) =
400  cOld &        -(  cOld &        -(
401  cOld &          +_recip_dxF(i,j,bi,bj)*( flx_EW(i+1,j)-flx_EW(i,j) )  cOld &          +_recip_dxF(i,j,bi,bj)*( flx_EW(i+1,j)-flx_EW(i,j) )

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.35

  ViewVC Help
Powered by ViewVC 1.1.22