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

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

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

revision 1.4 by jmc, Wed Feb 26 03:16:54 2003 UTC revision 1.5 by jmc, Fri Aug 1 04:03:54 2003 UTC
# Line 60  C     i,j :: Loop counters Line 60  C     i,j :: Loop counters
60        INTEGER i,j        INTEGER i,j
61        _RL varLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)        _RL varLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
62        _RL factorZ, factorP, conv_theta2T        _RL factorZ, factorP, conv_theta2T
63          _RL factPI
64          CHARACTER*(MAX_LEN_MBUF) msgBuf
65  CEOP  CEOP
66    
67  #ifdef NONLIN_FRSURF  #ifdef NONLIN_FRSURF
68        IF (select_rStar.GE.1 .AND. nonlinFreeSurf.GE.4 ) THEN        IF (select_rStar.GE.2 .AND. nonlinFreeSurf.GE.4 ) THEN
69         DO j=jMin-1,jMax  C-    Integral of b.dr = rStarFac * Integral of b.dr* :
70          DO i=iMin-1,iMax  C      and will add later (select_rStar=2) the contribution of
71           varLoc(i,j) = phiHydC(i,j)*rStarFacC(i,j,bi,bj)  C      the slope of the r* coordinate.
72       &               + phi0surf(i,j,bi,bj)         IF ( buoyancyRelation .EQ. 'ATMOSPHERIC' ) THEN
73    C-     Consistent with Phi'= Integr[ theta'.dPi ] :
74            DO j=jMin-1,jMax
75             DO i=iMin-1,iMax
76              varLoc(i,j) = phiHydC(i,j)*rStarFacC(i,j,bi,bj)**atm_kappa
77         &                + phi0surf(i,j,bi,bj)
78             ENDDO
79          ENDDO          ENDDO
80         ENDDO         ELSE
81            DO j=jMin-1,jMax
82             DO i=iMin-1,iMax
83              varLoc(i,j) = phiHydC(i,j)*rStarFacC(i,j,bi,bj)
84         &                + phi0surf(i,j,bi,bj)
85             ENDDO
86            ENDDO
87           ENDIF
88          ELSEIF (select_rStar.GE.1 .AND. nonlinFreeSurf.GE.4 ) THEN
89    C-    Integral of b.dr but scaled to correspond to a fixed r-level (=r*)
90    C      no contribution of the slope of the r* coordinate (select_rStar=1)
91           IF ( buoyancyRelation .EQ. 'ATMOSPHERIC' ) THEN
92    C-     Consistent with Phi'= Integr[ theta'.dPi ] :
93            DO j=jMin-1,jMax
94             DO i=iMin-1,iMax
95              IF (Ro_surf(i,j,bi,bj).EQ.rC(k)) THEN
96               factPI=atm_Cp*( ((etaH(i,j,bi,bj)+rC(k))/atm_Po)**atm_kappa  
97         &                    -(                 rC(k) /atm_Po)**atm_kappa
98         &                  )
99               varLoc(i,j) = factPI*alphRho(i,j)
100              ELSEIF (Ro_surf(i,j,bi,bj).NE.0. _d 0) THEN
101               factPI = (rC(k)/Ro_surf(i,j,bi,bj))**atm_kappa
102               varLoc(i,j) = phiHydC(i,j)
103         &                  *(rStarFacC(i,j,bi,bj)**atm_kappa - factPI)
104         &                  /(1. _d 0 -factPI)
105         &                 + phi0surf(i,j,bi,bj)
106              ENDIF
107             ENDDO
108            ENDDO
109           ELSE
110            DO j=jMin-1,jMax
111             DO i=iMin-1,iMax
112              IF (Ro_surf(i,j,bi,bj).EQ.rC(k)) THEN
113               WRITE(msgBuf,'(2A)') 'CALC_GRAD_PHI_HYD: ',
114         &      'Problem when Ro_surf=rC with select_rStar,integr_GeoPot=1,4'
115               CALL PRINT_ERROR( msgBuf , myThid)
116               STOP 'CALC_GRAD_PHI_HYD: Pb in r* options implementation'
117              ELSE
118               varLoc(i,j) = phiHydC(i,j)
119         &                  *(etaH(i,j,bi,bj)+Ro_surf(i,j,bi,bj)-rC(k))
120         &                  /                (Ro_surf(i,j,bi,bj)-rC(k))
121         &                 + phi0surf(i,j,bi,bj)
122              ENDIF
123             ENDDO
124            ENDDO
125           ENDIF
126        ELSE        ELSE
127  #else /* NONLIN_FRSURF */  #else /* NONLIN_FRSURF */
128        IF (.TRUE.) THEN        IF (.TRUE.) THEN
# Line 136  C--    p* coordinate slope term: alpha' Line 189  C--    p* coordinate slope term: alpha'
189          DO j=jMin,jMax          DO j=jMin,jMax
190           DO i=iMin,iMax           DO i=iMin,iMax
191            dPhiHydX(i,j) = dPhiHydX(i,j)            dPhiHydX(i,j) = dPhiHydX(i,j)
192       &     +factorP*(tFld(i-1,j,k,bi,bj)+tFld(i,j,k,bi,bj)-2.*tRef(k))       &     +factorP*(alphRho(i-1,j)+alphRho(i,j))
193       &             *(rStarFacC(i,j,bi,bj)-rStarFacC(i-1,j,bi,bj))       &             *(rStarFacC(i,j,bi,bj)-rStarFacC(i-1,j,bi,bj))
194       &             *rC(k)*recip_dxC(i,j,bi,bj)         &             *rC(k)*recip_dxC(i,j,bi,bj)  
195            dPhiHydY(i,j) = dPhiHydY(i,j)            dPhiHydY(i,j) = dPhiHydY(i,j)
196       &     +factorP*(tFld(i,j-1,k,bi,bj)+tFld(i,j,k,bi,bj)-2.*tRef(k))       &     +factorP*(alphRho(i,j-1)+alphRho(i,j))
197       &             *(rStarFacC(i,j,bi,bj)-rStarFacC(i,j-1,bi,bj))       &             *(rStarFacC(i,j,bi,bj)-rStarFacC(i,j-1,bi,bj))
198       &             *rC(k)*recip_dyC(i,j,bi,bj)         &             *rC(k)*recip_dyC(i,j,bi,bj)  
199           ENDDO           ENDDO

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

  ViewVC Help
Powered by ViewVC 1.1.22