/[MITgcm]/MITgcm/pkg/mom_fluxform/mom_calc_rtrans.F
ViewVC logotype

Diff of /MITgcm/pkg/mom_fluxform/mom_calc_rtrans.F

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

revision 1.3 by jmc, Tue Oct 19 02:43:06 2004 UTC revision 1.7 by jmc, Mon Oct 15 15:28:58 2007 UTC
# Line 5  C $Name$ Line 5  C $Name$
5    
6  CBOP  CBOP
7  C     !ROUTINE: MOM_CALC_RTRANS  C     !ROUTINE: MOM_CALC_RTRANS
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE MOM_CALC_RTRANS(        SUBROUTINE MOM_CALC_RTRANS(
10       I                          k, bi, bj,       I                          k, bi, bj,
11       O                          rTransU, rTransV,       O                          rTransU, rTransV,
12       I                          myTime, myIter, myThid)       I                          myTime, myIter, myThid)
13  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
14  C     *==========================================================*  C     *==========================================================*
15  C     | SUBROUTINE MOM_CALC_RTRANS                              C     | SUBROUTINE MOM_CALC_RTRANS
16  C     | o Calculate vertical transports at interface k  C     | o Calculate vertical transports at interface k
17  C     |   above U & V points (West & South face)  C     |   above U & V points (West & South face)
18  C     *==========================================================*  C     *==========================================================*
19  C     | r coordinate (z or p):  C     | r coordinate (z or p):
# Line 32  C     == GLobal variables == Line 32  C     == GLobal variables ==
32  #include "PARAMS.h"  #include "PARAMS.h"
33  #include "GRID.h"  #include "GRID.h"
34  #include "SURFACE.h"  #include "SURFACE.h"
35    #include "MOM_FLUXFORM.h"
36    
37  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
38  C     == Routine arguments ==  C     == Routine arguments ==
# Line 41  C     rTransU :: vertical transport (abo Line 42  C     rTransU :: vertical transport (abo
42  C     rTransV :: vertical transport (above V point)  C     rTransV :: vertical transport (above V point)
43  C     myTime  :: current time  C     myTime  :: current time
44  C     myIter  :: current iteration number  C     myIter  :: current iteration number
45  C     myThid  :: thread number  C     myThid  :: thread number
46  C                
47        INTEGER k, bi, bj, myIter, myThid        INTEGER k, bi, bj, myIter, myThid
48        _RL myTime        _RL myTime
49        _RL rTransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rTransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 54  C     == Local variables in common block Line 55  C     == Local variables in common block
55  C     dWtransC :: vertical transp. difference between r & r* coordinates  C     dWtransC :: vertical transp. difference between r & r* coordinates
56  C     dWtransU :: same but above u.point location (West  face)  C     dWtransU :: same but above u.point location (West  face)
57  C     dWtransV :: same but above v.point location (South face)  C     dWtransV :: same but above v.point location (South face)
58        COMMON /LOCAL_MOM_CALC_RTRANS/  cph need this in a header for the adjoint
59       &       dWtransC, dWtransU, dWtransV  cph      COMMON /LOCAL_MOM_CALC_RTRANS/
60        _RL dWtransC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)    cph     &       dWtransC, dWtransU, dWtransV
61        _RL dWtransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)    cph      _RL dWtransC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
62        _RL dWtransV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)    cph      _RL dWtransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
63    cph      _RL dWtransV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
64  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
65  C     == Local variables ==  C     == Local variables ==
66  C     I, J :: Loop counters  C     I, J :: Loop counters
# Line 68  CEOP Line 70  CEOP
70  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
71        IF ( k.EQ.Nr+1 .AND.        IF ( k.EQ.Nr+1 .AND.
72       &     useRealFreshWaterFlux .AND. usingPCoords ) THEN       &     useRealFreshWaterFlux .AND. usingPCoords ) THEN
73    C note: deep-model not implemented for P-coordinate + realFreshWaterFlux ;
74    C       anelastic: always assumes that rhoFacF(1) = 1
75          DO j=1-OLy+1,sNy+OLy          DO j=1-OLy+1,sNy+OLy
76           DO i=1-OLx+1,sNx+OLx           DO i=1-OLx+1,sNx+OLx
77            rTransU(i,j) = convertEmP2rUnit*            rTransU(i,j) = mass2rUnit*
78       &      0.5 _d 0*( PmEpR( i ,j,bi,bj)*rA( i ,j,bi,bj)       &      0.5 _d 0*( PmEpR( i ,j,bi,bj)*rA( i ,j,bi,bj)
79       &                +PmEpR(i-1,j,bi,bj)*rA(i-1,j,bi,bj) )       &                +PmEpR(i-1,j,bi,bj)*rA(i-1,j,bi,bj) )
80            rTransV(i,j) = convertEmP2rUnit*            rTransV(i,j) = mass2rUnit*
81       &      0.5 _d 0*( PmEpR(i, j ,bi,bj)*rA(i, j ,bi,bj)       &      0.5 _d 0*( PmEpR(i, j ,bi,bj)*rA(i, j ,bi,bj)
82       &                +PmEpR(i,j-1,bi,bj)*rA(i,j-1,bi,bj) )       &                +PmEpR(i,j-1,bi,bj)*rA(i,j-1,bi,bj) )
83           ENDDO           ENDDO
# Line 93  C-    Calculate vertical transports abov Line 97  C-    Calculate vertical transports abov
97          DO j=1-OLy+1,sNy+OLy          DO j=1-OLy+1,sNy+OLy
98           DO i=1-OLx+1,sNx+OLx           DO i=1-OLx+1,sNx+OLx
99            rTransU(i,j) =            rTransU(i,j) =
100       &      0.5 _d 0*( wVel(i-1,j,k,bi,bj)*rA(i-1,j,bi,bj)       &         0.5 _d 0*( wVel(i-1,j,k,bi,bj)*rA(i-1,j,bi,bj)
101       &                +wVel( i ,j,k,bi,bj)*rA( i ,j,bi,bj) )       &                   +wVel( i ,j,k,bi,bj)*rA( i ,j,bi,bj)
102         &                  )*deepFac2F(k)*rhoFacF(k)
103            rTransV(i,j) =            rTransV(i,j) =
104       &      0.5 _d 0*( wVel(i,j-1,k,bi,bj)*rA(i,j-1,bi,bj)       &         0.5 _d 0*( wVel(i,j-1,k,bi,bj)*rA(i,j-1,bi,bj)
105       &                +wVel(i, j ,k,bi,bj)*rA(i, j ,bi,bj) )       &                   +wVel(i, j ,k,bi,bj)*rA(i, j ,bi,bj)
106         &                  )*deepFac2F(k)*rhoFacF(k)
107           ENDDO           ENDDO
108          ENDDO          ENDDO
109        ENDIF                  ENDIF
110    
111  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
112  C---  Modify rTransU & rTransV when using r* coordinate:  C---  Modify rTransU & rTransV when using r* coordinate:
113    C     note: not implemented neither for anelastic nor deep-model.
114        IF ( select_rStar.NE.0 ) THEN        IF ( select_rStar.NE.0 ) THEN
115    # ifndef DISABLE_RSTAR_CODE
116    
117         IF ( k.EQ.1) THEN         IF ( k.EQ.1) THEN
118  C-    Initialise dWtrans :  C-    Initialise dWtrans :
# Line 117  C-    Initialise dWtrans : Line 125  C-    Initialise dWtrans :
125          ENDDO          ENDDO
126          DO j=1-OLy+1,sNy+OLy          DO j=1-OLy+1,sNy+OLy
127           DO i=1-OLx+1,sNx+OLx           DO i=1-OLx+1,sNx+OLx
128            dWtransU(i,j,bi,bj) =            dWtransU(i,j,bi,bj) =
129       &          0.5 _d 0*(dWtransC(i-1,j,bi,bj)+dWtransC(i,j,bi,bj))       &          0.5 _d 0*(dWtransC(i-1,j,bi,bj)+dWtransC(i,j,bi,bj))
130            dWtransV(i,j,bi,bj) =            dWtransV(i,j,bi,bj) =
131       &          0.5 _d 0*(dWtransC(i,j-1,bi,bj)+dWtransC(i,j,bi,bj))       &          0.5 _d 0*(dWtransC(i,j-1,bi,bj)+dWtransC(i,j,bi,bj))
# Line 155  C-    Modify rTransU & rTransV : Line 163  C-    Modify rTransU & rTransV :
163    
164         ENDIF         ENDIF
165    
166    # endif /* DISABLE_RSTAR_CODE */
167        ENDIF        ENDIF
168    
169  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
170    
171        RETURN        RETURN

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.22