File indexing completed on 2018-03-02 18:36:49 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
aa03c27196 Jean*0001 #include "PACKAGES_CONFIG.h"
0002 #include "CPP_OPTIONS.h"
0003
0004
0005
0006
0007 SUBROUTINE INI_GLOBAL_DOMAIN( myThid )
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 IMPLICIT NONE
0023
0024 #include "SIZE.h"
0025 #include "EEPARAMS.h"
0026 #include "PARAMS.h"
0027 #include "GRID.h"
0028 #ifdef ALLOW_EXCH2
0029 # include "W2_EXCH2_SIZE.h"
0030 # include "W2_EXCH2_TOPOLOGY.h"
0031 #endif /* ALLOW_EXCH2 */
0032
0033
0034
0035
0036 INTEGER myThid
0037
0038
0039 _RL tileArea(nSx,nSy), threadArea
0040
0041 COMMON / LOCAL_INI_GLOB_DOMAIN / tileArea
0042
0043
0044
0045
0046
0047 INTEGER bi, bj
0048 INTEGER i, j, nCorners
0049 CHARACTER*(MAX_LEN_MBUF) msgBuf
0050 LOGICAL northWestCorner, northEastCorner,
0051 & southWestCorner, southEastCorner
0052 #ifdef ALLOW_EXCH2
0053 INTEGER myTile
0054 #endif /* ALLOW_EXCH2 */
0055
0056
0057
0058
0059 #ifdef NONLIN_FRSURF
0060
0061
0062
0063
0064
0065
0066 #endif /* NONLIN_FRSURF */
0067
0068
0069
0070
0071
0072
0073 threadArea = 0. _d 0
0074 DO bj = myByLo(myThid), myByHi(myThid)
0075 DO bi = myBxLo(myThid), myBxHi(myThid)
0076
0077 tileArea(bi,bj) = 0. _d 0
0078 DO j=1,sNy
0079 DO i=1,sNx
0080 tileArea(bi,bj) = tileArea(bi,bj)
0081 & + rA(i,j,bi,bj)*maskInC(i,j,bi,bj)
0082 ENDDO
0083 ENDDO
0084
0085 ENDDO
0086 ENDDO
0087
0088
0089
0090
0091 CALL GLOBAL_SUM_TILE_RL( tileArea, threadArea, myThid )
0092
0093 _BEGIN_MASTER( myThid )
0094 globalArea = threadArea
0095
0096 msgBuf(1:1) = ' '
0097 DO bj = 1,nSy
0098 DO bi = 1,nSx
0099 IF ( tileArea(bi,bj).EQ.0. _d 0 ) THEN
0100 #ifdef ALLOW_EXCH2
0101 WRITE(msgBuf,'(A,I6,A,2I4,A)')
0102 & 'Empty tile: #', W2_myTileList(bi,bj), ' (bi,bj=',bi,bj,' )'
0103 #else
0104 WRITE(msgBuf,'(A,I6,I6)') 'Empty tile bi,bj=', bi, bj
0105 #endif
0106 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0107 & SQUEEZE_RIGHT, myThid )
0108 ENDIF
0109 ENDDO
0110 ENDDO
0111 IF ( msgBuf(1:1).NE.' ' ) THEN
0112 WRITE(msgBuf,'(A)') ' '
0113 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0114 & SQUEEZE_RIGHT, myThid )
0115 ENDIF
0116 _END_MASTER( myThid )
0117
0118
0119
0120
0121 IF ( useCubedSphereExchange ) THEN
0122 nCorners = 0
0123 DO bj = myByLo(myThid), myByHi(myThid)
0124 DO bi = myBxLo(myThid), myBxHi(myThid)
0125 #ifdef ALLOW_EXCH2
0126 myTile = W2_myTileList(bi,bj)
0127 southWestCorner = exch2_isWedge(myTile).EQ.1
0128 & .AND. exch2_isSedge(myTile).EQ.1
0129 southEastCorner = exch2_isEedge(myTile).EQ.1
0130 & .AND. exch2_isSedge(myTile).EQ.1
0131 northEastCorner = exch2_isEedge(myTile).EQ.1
0132 & .AND. exch2_isNedge(myTile).EQ.1
0133 northWestCorner = exch2_isWedge(myTile).EQ.1
0134 & .AND. exch2_isNedge(myTile).EQ.1
0135 #else /* ALLOW_EXCH2 */
0136 southWestCorner = .TRUE.
0137 southEastCorner = .TRUE.
0138 northWestCorner = .TRUE.
0139 northEastCorner = .TRUE.
0140 #endif /* ALLOW_EXCH2 */
0141 IF ( southWestCorner .AND. kSurfC( 1 , 1 ,bi,bj).LE.Nr )
0142 & nCorners = nCorners + 1
0143 IF ( southEastCorner .AND. kSurfC(sNx, 1 ,bi,bj).LE.Nr )
0144 & nCorners = nCorners + 1
0145 IF ( northWestCorner .AND. kSurfC( 1 ,sNy,bi,bj).LE.Nr )
0146 & nCorners = nCorners + 1
0147 IF ( northEastCorner .AND. kSurfC(sNx,sNy,bi,bj).LE.Nr )
0148 & nCorners = nCorners + 1
0149 ENDDO
0150 ENDDO
0151 CALL GLOBAL_SUM_INT( nCorners, myThid )
0152 _BEGIN_MASTER( myThid )
0153 IF ( nCorners.GE.1 ) hasWetCSCorners = .TRUE.
0154 WRITE(msgBuf,'(A,I4,A)') 'INI_GLOBAL_DOMAIN: Found',
0155 & nCorners, ' CS-corner Pts in the domain'
0156 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0157 & SQUEEZE_RIGHT, myThid )
0158 _END_MASTER( myThid )
0159 ENDIF
0160
0161
0162 _BARRIER
0163
0164
0165 RETURN
0166 END