/[MITgcm]/MITgcm/pkg/exch2/w2_set_map_tiles.F
ViewVC logotype

Diff of /MITgcm/pkg/exch2/w2_set_map_tiles.F

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

revision 1.2 by jmc, Thu Jun 18 22:37:58 2009 UTC revision 1.3 by jmc, Fri Apr 23 20:21:06 2010 UTC
# Line 4  C $Name$ Line 4  C $Name$
4  #include "CPP_EEOPTIONS.h"  #include "CPP_EEOPTIONS.h"
5  #include "W2_OPTIONS.h"  #include "W2_OPTIONS.h"
6    
7    C--  File w2_set_map_tiles.F:
8    C--   Contents
9    C--   o W2_SET_MAP_TILES :: Set tiles and IO mapping
10    C--   o FIND_GCD_N       :: Returns the Greatest Common Divisor
11    
12  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
13  CBOP 0  CBOP 0
14  C !ROUTINE: W2_SET_MAP_TILES  C !ROUTINE: W2_SET_MAP_TILES
# Line 17  C     Set-up tiles mapping and IO global Line 22  C     Set-up tiles mapping and IO global
22  C     !USES:  C     !USES:
23        IMPLICIT NONE        IMPLICIT NONE
24    
25  C      Tile toplogy settings data structures  C      Tile topology settings data structures
26  #include "SIZE.h"  #include "SIZE.h"
27  #include "EEPARAMS.h"  #include "EEPARAMS.h"
28  #include "W2_EXCH2_SIZE.h"  #include "W2_EXCH2_SIZE.h"
# Line 35  C     !FUNCTIONS: Line 40  C     !FUNCTIONS:
40    
41  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
42  C     === Local variables ===  C     === Local variables ===
43  C     msgBuf     :: Informational/error meesage buffer  C     msgBuf     :: Informational/error message buffer
44        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
45        INTEGER tNx, tNy, fNx, fNy, nbPts, fBaseX        INTEGER tNx, tNy, fNx, fNy, nbPts, fBaseX
46        INTEGER nbTx, nbTy        INTEGER nbTx, nbTy
47        INTEGER j, ii, k, tId, tx, ty        INTEGER j, ii, k, tId, tx, ty
48        INTEGER divise, nnx(W2_maxNbFacets)        INTEGER divide, nnx(W2_maxNbFacets)
49        INTEGER errCnt, tCnt        INTEGER errCnt, tCnt
50        LOGICAL tileIsActive, prtFlag        LOGICAL tileIsActive, prtFlag
51  CEOP  CEOP
# Line 54  C     Set-up tiles mapping and IO global Line 59  C     Set-up tiles mapping and IO global
59    
60        tNx = sNx        tNx = sNx
61        tNy = sNy        tNy = sNy
62  C--   Check that tile dims divise facet dims  C--   Check that tile dims divide facet dims
63        errCnt = 0        errCnt = 0
64        tCnt = 0        tCnt = 0
65        nbPts = 0        nbPts = 0
# Line 103  C     of all x-size (faster to apply GCD Line 108  C     of all x-size (faster to apply GCD
108          DO j=1,nFacets          DO j=1,nFacets
109            nnx(j) = facet_dims(2*j-1)/tNx            nnx(j) = facet_dims(2*j-1)/tNx
110          ENDDO          ENDDO
111          divise = FIND_GCD_N( nnx, nFacets)          divide = FIND_GCD_N( nnx, nFacets)
112          W2_mapIO = divise*tNx          W2_mapIO = divide*tNx
113          WRITE(msgBuf,'(A,2(I5,A))') ' W2_mapIO =', W2_mapIO,          WRITE(msgBuf,'(A,2(I5,A))') ' W2_mapIO =', W2_mapIO,
114       &                              ' (=', divise, '*sNx)'       &                              ' (=', divide, '*sNx)'
115          CALL PRINT_MESSAGE( msgBuf, W2_oUnit, SQUEEZE_RIGHT, myThid )          CALL PRINT_MESSAGE( msgBuf, W2_oUnit, SQUEEZE_RIGHT, myThid )
116        ENDIF        ENDIF
117    
# Line 191  C         Compact format: piled in the Y Line 196  C         Compact format: piled in the Y
196        END        END
197    
198  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
   
199  CBOP  CBOP
200  C     !ROUTINE: FIND_GCD_N  C     !ROUTINE: FIND_GCD_N
201    
# Line 214  C     nFLd    :: length of the input int Line 218  C     nFLd    :: length of the input int
218        INTEGER fldList(nFld)        INTEGER fldList(nFld)
219    
220  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
221        INTEGER mnFld, divise        INTEGER mnFld, divide
222        INTEGER j, ii        INTEGER j, ii
223        LOGICAL flag        LOGICAL flag
224        LOGICAL localDBg        LOGICAL localDBg
# Line 229  c     PARAMETER ( localDBg = .TRUE. ) Line 233  c     PARAMETER ( localDBg = .TRUE. )
233        IF (localDBg) WRITE(0,'(A,I8)') 'FIND_GCD_N: mnFld=',mnFld        IF (localDBg) WRITE(0,'(A,I8)') 'FIND_GCD_N: mnFld=',mnFld
234    
235        IF (mnFld.GT.1 ) THEN        IF (mnFld.GT.1 ) THEN
236          divise = 1          divide = 1
237          ii = 2          ii = 2
238          DO WHILE ( ii.LE.mnFld )          DO WHILE ( ii.LE.mnFld )
239            IF (localDBg) WRITE(0,'(A,I8)') '     GCD  : try',ii            IF (localDBg) WRITE(0,'(A,I8)') '     GCD  : try',ii
# Line 238  c     PARAMETER ( localDBg = .TRUE. ) Line 242  c     PARAMETER ( localDBg = .TRUE. )
242              flag = flag.AND.(MOD(fldList(j),ii).EQ.0 )              flag = flag.AND.(MOD(fldList(j),ii).EQ.0 )
243            ENDDO            ENDDO
244            IF ( flag ) THEN            IF ( flag ) THEN
245              divise = divise*ii              divide = divide*ii
246              DO j=1,nFld              DO j=1,nFld
247                fldList(j) = fldList(j)/ii                fldList(j) = fldList(j)/ii
248              ENDDO              ENDDO
# Line 250  c     PARAMETER ( localDBg = .TRUE. ) Line 254  c     PARAMETER ( localDBg = .TRUE. )
254              IF (ii.EQ.4) ii=3              IF (ii.EQ.4) ii=3
255            ENDIF            ENDIF
256          ENDDO          ENDDO
257  C-    Put back the origninal Nb:  C-    Put back the original Nb:
258          IF (localDBg) WRITE(0,'(10I8)') (fldList(j),j=1,nFld)          IF (localDBg) WRITE(0,'(10I8)') (fldList(j),j=1,nFld)
259          DO j=1,nFld          DO j=1,nFld
260            fldList(j) = fldList(j)*divise            fldList(j) = fldList(j)*divide
261          ENDDO          ENDDO
262        ELSE        ELSE
263          divise = MAX( 0, mnFld )          divide = MAX( 0, mnFld )
264        ENDIF        ENDIF
265    
266        FIND_GCD_N = divise        FIND_GCD_N = divide
267    
268        RETURN        RETURN
269        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22