/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_set_calc.F
ViewVC logotype

Diff of /MITgcm/pkg/diagnostics/diagnostics_set_calc.F

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

revision 1.2 by jmc, Wed Jul 6 15:28:24 2011 UTC revision 1.3 by jmc, Wed Nov 26 20:48:32 2014 UTC
# Line 21  C     *================================= Line 21  C     *=================================
21  C     !USES:  C     !USES:
22        IMPLICIT NONE        IMPLICIT NONE
23  #include "EEPARAMS.h"  #include "EEPARAMS.h"
 c#include "PARAMS.h"  
24  #include "SIZE.h"  #include "SIZE.h"
25    #include "PARAMS.h"
26  #include "GRID.h"  #include "GRID.h"
27  #include "DIAGNOSTICS_CALC.h"  #include "DIAGNOSTICS_CALC.h"
28    #ifdef ALLOW_OBCS
29    # include "OBCS_GRID.h"
30    #endif /* ALLOW_OBCS */
31    
32  C     !INPUT PARAMETERS:  C     !INPUT PARAMETERS:
33  C     myThid     ::  my thread Id number  C     myThid     ::  my thread Id number
# Line 38  C     !LOCAL VARIABLES: Line 41  C     !LOCAL VARIABLES:
41        _RL     dxLoc, dyLoc, d2Loc, d2Min        _RL     dxLoc, dyLoc, d2Loc, d2Min
42        _RL     xLine, xy0, xyLoc, xyMin        _RL     xLine, xy0, xyLoc, xyMin
43        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
44    #ifdef ALLOW_OBCS
45          LOGICAL kPsi(1:sNx+1,1:sNy+1,nSx,nSy)
46    #endif /* ALLOW_OBCS */
47    
48  C--   Set indices of grid-point location where Psi == 0  C--   Set indices of grid-point location where Psi == 0
49        IF ( xPsi0.EQ.UNSET_RS .OR. yPsi0.EQ.UNSET_RS ) THEN        IF ( xPsi0.EQ.UNSET_RS .OR. yPsi0.EQ.UNSET_RS ) THEN
# Line 49  C-    Set indices to (-1,0) = disabled v Line 55  C-    Set indices to (-1,0) = disabled v
55           ENDDO           ENDDO
56          ENDDO          ENDDO
57        ELSE        ELSE
58    #ifdef ALLOW_OBCS
59    C-     set flag where Psi is computed
60            DO bj=myByLo(myThid),myByHi(myThid)
61             DO bi=myBxLo(myThid),myBxHi(myThid)
62              DO j = 1,sNy+1
63               DO i = 1,sNx+1
64                 kPsi(i,j,bi,bj) = .TRUE.
65               ENDDO
66              ENDDO
67              IF ( useOBCS ) THEN
68               DO j = 1,sNy+1
69                DO i = 1,sNx+1
70                 kPsi(i,j,bi,bj) = OBCS_insideMask( i , j ,bi,bj).EQ.oneRS
71         &                    .OR. OBCS_insideMask(i-1, j ,bi,bj).EQ.oneRS
72         &                    .OR. OBCS_insideMask( i ,j-1,bi,bj).EQ.oneRS
73         &                    .OR. OBCS_insideMask(i-1,j-1,bi,bj).EQ.oneRS
74                ENDDO
75               ENDDO
76              ENDIF
77             ENDDO
78            ENDDO
79    #endif /* ALLOW_OBCS */
80  C-      find minimum distance:  C-      find minimum distance:
81          d2Min = -1. _d 0          d2Min = -1. _d 0
82          DO bj=myByLo(myThid),myByHi(myThid)          DO bj=myByLo(myThid),myByHi(myThid)
# Line 58  C-      find minimum distance: Line 86  C-      find minimum distance:
86               dxLoc = xG(i,j,bi,bj)-xPsi0               dxLoc = xG(i,j,bi,bj)-xPsi0
87               dyLoc = yG(i,j,bi,bj)-yPsi0               dyLoc = yG(i,j,bi,bj)-yPsi0
88               d2Loc = dxLoc*dxLoc + dyLoc*dyLoc               d2Loc = dxLoc*dxLoc + dyLoc*dyLoc
89    #ifdef ALLOW_OBCS
90                 IF ((d2Loc.LT.d2Min .OR. d2Min.EQ.-1. _d 0)
91         &                            .AND. kPsi(i,j,bi,bj) ) d2Min = d2Loc
92    #else
93               IF ( d2Loc.LT.d2Min .OR. d2Min.EQ.-1. _d 0 ) d2Min = d2Loc               IF ( d2Loc.LT.d2Min .OR. d2Min.EQ.-1. _d 0 ) d2Min = d2Loc
94    #endif
95             ENDDO             ENDDO
96            ENDDO            ENDDO
97           ENDDO           ENDDO
# Line 81  C-      find list of grid-points at mini Line 114  C-      find list of grid-points at mini
114               dxLoc = xG(i,j,bi,bj)-xPsi0               dxLoc = xG(i,j,bi,bj)-xPsi0
115               dyLoc = yG(i,j,bi,bj)-yPsi0               dyLoc = yG(i,j,bi,bj)-yPsi0
116               d2Loc = dxLoc*dxLoc + dyLoc*dyLoc               d2Loc = dxLoc*dxLoc + dyLoc*dyLoc
117    #ifdef ALLOW_OBCS
118                 IF ( d2Loc.EQ.d2Min .AND. kPsi(i,j,bi,bj) ) THEN
119    #else
120               IF ( d2Loc.EQ.d2Min ) THEN               IF ( d2Loc.EQ.d2Min ) THEN
121    #endif
122                 xyLoc = xy0 + i + (j-1)*xLine                 xyLoc = xy0 + i + (j-1)*xLine
123                 IF ( xyMin.EQ.0. _d 0 ) THEN                 IF ( xyMin.EQ.0. _d 0 ) THEN
124                   xyMin = xyLoc                   xyMin = xyLoc
# Line 147  C-      select only one (based on minimu Line 184  C-      select only one (based on minimu
184       &                             SQUEEZE_RIGHT, myThid )       &                             SQUEEZE_RIGHT, myThid )
185                ENDIF                ENDIF
186               ENDIF               ENDIF
187    c            WRITE(standardMessageUnit,'(2(A,2I5))')
188    c    &        ' bi,bj=',bi,bj,' i,jPsi0=', iPsi0(bi,bj),jPsi0(bi,bj)
189             ENDDO             ENDDO
190            ENDDO            ENDDO
191          ENDIF          ENDIF

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

  ViewVC Help
Powered by ViewVC 1.1.22