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

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

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

revision 1.29 by jmc, Sun Feb 10 00:39:22 2002 UTC revision 1.37 by mlosch, Tue May 13 13:30:05 2003 UTC
# Line 35  C     == Global variables Line 35  C     == Global variables
35  #endif  #endif
36  #include "SOLVE_FOR_PRESSURE.h"  #include "SOLVE_FOR_PRESSURE.h"
37    
38    C     === Functions ====
39          LOGICAL  DIFFERENT_MULTIPLE
40          EXTERNAL DIFFERENT_MULTIPLE
41    
42  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
43  C     == Routine arguments ==  C     == Routine arguments ==
44  C     myTime - Current time in simulation  C     myTime - Current time in simulation
# Line 68  C--   Save previous solution & Initialis Line 72  C--   Save previous solution & Initialis
72           ENDDO           ENDDO
73          ENDDO          ENDDO
74          IF (useRealFreshWaterFlux) THEN          IF (useRealFreshWaterFlux) THEN
75           tmpFac = freeSurfFac           tmpFac = freeSurfFac*convertEmP2rUnit
76           IF (exactConserv) tmpFac = freeSurfFac*implicDiv2DFlow           IF (exactConserv)
77         &        tmpFac = freeSurfFac*convertEmP2rUnit*implicDiv2DFlow
78           DO j=1,sNy           DO j=1,sNy
79            DO i=1,sNx            DO i=1,sNx
80             cg2d_b(i,j,bi,bj) =             cg2d_b(i,j,bi,bj) =
# Line 108  C--   Add source term arising from w=d/d Line 113  C--   Add source term arising from w=d/d
113           DO j=1,sNy           DO j=1,sNy
114            DO i=1,sNx            DO i=1,sNx
115             cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj)             cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj)
116       &       -freeSurfFac*_rA(i,j,bi,bj)/deltaTMom/deltaTMom       &       -freeSurfFac*_rA(i,j,bi,bj)/deltaTMom/deltaTfreesurf
117       &         *( etaN(i,j,bi,bj)       &         *( etaN(i,j,bi,bj)
118       &           +phi_nh(i,j,1,bi,bj)*horiVertRatio/gravity )       &           +phi_nh(i,j,1,bi,bj)*horiVertRatio/gravity )
119             cg3d_b(i,j,1,bi,bj) = cg3d_b(i,j,1,bi,bj)             cg3d_b(i,j,1,bi,bj) = cg3d_b(i,j,1,bi,bj)
120       &       -freeSurfFac*_rA(i,j,bi,bj)/deltaTMom/deltaTMom       &       -freeSurfFac*_rA(i,j,bi,bj)/deltaTMom/deltaTfreesurf
121       &         *( etaN(i,j,bi,bj)       &         *( etaN(i,j,bi,bj)
122       &           +phi_nh(i,j,1,bi,bj)*horiVertRatio/gravity )       &           +phi_nh(i,j,1,bi,bj)*horiVertRatio/gravity )
123            ENDDO            ENDDO
# Line 124  C--   Add source term arising from w=d/d Line 129  C--   Add source term arising from w=d/d
129           DO j=1,sNy           DO j=1,sNy
130            DO i=1,sNx            DO i=1,sNx
131             cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj)             cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj)
132       &       -freeSurfFac*_rA(i,j,bi,bj)/deltaTMom/deltaTMom       &       -freeSurfFac*_rA(i,j,bi,bj)/deltaTMom/deltaTfreesurf
133       &         * etaH(i,j,bi,bj)       &         * etaH(i,j,bi,bj)
134            ENDDO            ENDDO
135           ENDDO           ENDDO
# Line 132  C--   Add source term arising from w=d/d Line 137  C--   Add source term arising from w=d/d
137           DO j=1,sNy           DO j=1,sNy
138            DO i=1,sNx            DO i=1,sNx
139             cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj)             cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj)
140       &       -freeSurfFac*_rA(i,j,bi,bj)/deltaTMom/deltaTMom       &       -freeSurfFac*_rA(i,j,bi,bj)/deltaTMom/deltaTfreesurf
141       &         * etaN(i,j,bi,bj)       &         * etaN(i,j,bi,bj)
142            ENDDO            ENDDO
143           ENDDO           ENDDO
# Line 144  C--   Add source term arising from w=d/d Line 149  C--   Add source term arising from w=d/d
149  C Northern boundary  C Northern boundary
150            IF (OB_Jn(I,bi,bj).NE.0) THEN            IF (OB_Jn(I,bi,bj).NE.0) THEN
151             cg2d_b(I,OB_Jn(I,bi,bj),bi,bj)=0.             cg2d_b(I,OB_Jn(I,bi,bj),bi,bj)=0.
152               cg2d_x(I,OB_Jn(I,bi,bj),bi,bj)=0.
153            ENDIF            ENDIF
154  C Southern boundary  C Southern boundary
155            IF (OB_Js(I,bi,bj).NE.0) THEN            IF (OB_Js(I,bi,bj).NE.0) THEN
156             cg2d_b(I,OB_Js(I,bi,bj),bi,bj)=0.             cg2d_b(I,OB_Js(I,bi,bj),bi,bj)=0.
157               cg2d_x(I,OB_Js(I,bi,bj),bi,bj)=0.
158            ENDIF            ENDIF
159           ENDDO           ENDDO
160           DO j=1,sNy           DO j=1,sNy
161  C Eastern boundary  C Eastern boundary
162            IF (OB_Ie(J,bi,bj).NE.0) THEN            IF (OB_Ie(J,bi,bj).NE.0) THEN
163             cg2d_b(OB_Ie(J,bi,bj),J,bi,bj)=0.             cg2d_b(OB_Ie(J,bi,bj),J,bi,bj)=0.
164               cg2d_x(OB_Ie(J,bi,bj),J,bi,bj)=0.
165            ENDIF            ENDIF
166  C Western boundary  C Western boundary
167            IF (OB_Iw(J,bi,bj).NE.0) THEN            IF (OB_Iw(J,bi,bj).NE.0) THEN
168             cg2d_b(OB_Iw(J,bi,bj),J,bi,bj)=0.             cg2d_b(OB_Iw(J,bi,bj),J,bi,bj)=0.
169               cg2d_x(OB_Iw(J,bi,bj),J,bi,bj)=0.
170            ENDIF            ENDIF
171           ENDDO           ENDDO
172          ENDIF          ENDIF
# Line 165  C Western boundary Line 174  C Western boundary
174         ENDDO         ENDDO
175        ENDDO        ENDDO
176    
177  #ifndef EXCLUDE_DEBUGMODE  #ifndef DISABLE_DEBUGMODE
178        IF (debugMode) THEN        IF (debugMode) THEN
179         CALL DEBUG_STATS_RL(1,cg2d_b,'cg2d_b (SOLVE_FOR_PRESSURE)',         CALL DEBUG_STATS_RL(1,cg2d_b,'cg2d_b (SOLVE_FOR_PRESSURE)',
180       &                        myThid)       &                        myThid)
# Line 187  C     see CG2D.h for the interface to th Line 196  C     see CG2D.h for the interface to th
196       I           myThid )       I           myThid )
197        _EXCH_XY_R8(cg2d_x, myThid )        _EXCH_XY_R8(cg2d_x, myThid )
198    
199  #ifndef EXCLUDE_DEBUGMODE  #ifndef DISABLE_DEBUGMODE
200        IF (debugMode) THEN        IF (debugMode) THEN
201         CALL DEBUG_STATS_RL(1,cg2d_x,'cg2d_x (SOLVE_FOR_PRESSURE)',         CALL DEBUG_STATS_RL(1,cg2d_x,'cg2d_x (SOLVE_FOR_PRESSURE)',
202       &                        myThid)       &                        myThid)
203        ENDIF        ENDIF
204  #endif  #endif
205    
206        _BEGIN_MASTER( myThid )  C- dump CG2D output at monitorFreq (to reduce size of STD-OUTPUT files) :
207        WRITE(msgBuf,'(A34,1PE24.14)') 'cg2d_init_res =',firstResidual        IF ( DIFFERENT_MULTIPLE(monitorFreq,myTime,
208        CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)       &                                    myTime-deltaTClock) ) THEN
209        WRITE(msgBuf,'(A34,I6)') 'cg2d_iters =',numIters         _BEGIN_MASTER( myThid )
210        CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)         WRITE(msgBuf,'(A34,1PE24.14)') 'cg2d_init_res =',firstResidual
211        WRITE(msgBuf,'(A34,1PE24.14)') 'cg2d_res =',lastResidual         CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
212        CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)         WRITE(msgBuf,'(A34,I6)') 'cg2d_iters =',numIters
213        _END_MASTER( )         CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
214           WRITE(msgBuf,'(A34,1PE24.14)') 'cg2d_res =',lastResidual
215           CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
216           _END_MASTER( )
217          ENDIF
218    
219  C--   Transfert the 2D-solution to "etaN" :  C--   Transfert the 2D-solution to "etaN" :
220        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
# Line 339  C Western boundary Line 352  C Western boundary
352       I           myThid )       I           myThid )
353        _EXCH_XYZ_R8(phi_nh, myThid )        _EXCH_XYZ_R8(phi_nh, myThid )
354    
355        _BEGIN_MASTER( myThid )        IF ( DIFFERENT_MULTIPLE(monitorFreq,myTime,
356        WRITE(msgBuf,'(A34,1PE24.14)') 'cg3d_init_res =',firstResidual       &                                    myTime-deltaTClock) ) THEN
357        CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)         _BEGIN_MASTER( myThid )
358        WRITE(msgBuf,'(A34,I6)') 'cg3d_iters =',numIters         WRITE(msgBuf,'(A34,1PE24.14)') 'cg3d_init_res =',firstResidual
359        CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)         CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
360        WRITE(msgBuf,'(A34,1PE24.14)') 'cg3d_res =',lastResidual         WRITE(msgBuf,'(A34,I6)') 'cg3d_iters =',numIters
361        CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)         CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
362        _END_MASTER( )         WRITE(msgBuf,'(A34,1PE24.14)') 'cg3d_res =',lastResidual
363           CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
364           _END_MASTER( )
365          ENDIF
366    
367        ENDIF        ENDIF
368  #endif  #endif

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.37

  ViewVC Help
Powered by ViewVC 1.1.22