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

Contents of /MITgcm/pkg/exch2/w2_readparms.F

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


Revision 1.4 - (show annotations) (download)
Sat Jul 9 21:53:35 2011 UTC (12 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint63
Changes since 1.3: +1 -2 lines
rename + move: nTiles in W2_EXCH2_PARAMS.h --> exch2_nTiles in W2_EXCH2_TOPOLOGY.h

1 C $Header: /u/gcmpack/MITgcm/pkg/exch2/w2_readparms.F,v 1.3 2010/04/16 18:06:00 jmc Exp $
2 C $Name: $
3
4 #include "CPP_EEOPTIONS.h"
5 #include "W2_OPTIONS.h"
6
7 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8 CBOP 0
9 C !ROUTINE: W2_READPARMS
10
11 C !INTERFACE:
12 SUBROUTINE W2_READPARMS( myThid )
13
14 C !DESCRIPTION:
15 C Initialize W2_EXCH2 variables and constants.
16
17 C !USES:
18 IMPLICIT NONE
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "W2_EXCH2_SIZE.h"
22 #include "W2_EXCH2_TOPOLOGY.h"
23 #include "W2_EXCH2_PARAMS.h"
24
25 C !INPUT PARAMETERS:
26 C myThid :: my Thread Id number
27 C (Note: not relevant since threading has not yet started)
28 INTEGER myThid
29 CEOP
30
31 C !LOCAL VARIABLES:
32 C === Local variables ===
33 C msgBuf :: Informational/error message buffer
34 C iUnit :: Work variable for IO unit number
35 CHARACTER*(MAX_LEN_MBUF) msgBuf
36 LOGICAL fileExist, errFlag
37 INTEGER i, j, iUnit, stdUnit, errCnt
38 C-- Note: To avoid error in reading the namelist,
39 C use larger local array to read-in lists dimsFacets & facetEdgeLink,
40 C store only W2_maxNbFacets values, and stop if more values are found.
41 INTEGER namList_NbFacets
42 PARAMETER ( namList_NbFacets = W2_maxNbFacets*2 )
43 INTEGER dimsFacets( 2*namList_NbFacets )
44 Real*4 facetEdgeLink( 4, namList_NbFacets )
45
46 C-- topology defined from processing "data.exch2" (selectTopol=0):
47 C dimsFacets :: facet pair of dimensions (n1x,n1y,n2x,n2y ...)
48 C facetEdgeLink :: Face-Edge connectivity map:
49 C facetEdgeLink(i,j)=XX.1 : face(j)-edge(i) (i=1,2,3,4 <==> N,S,E,W)
50 C is connected to Northern edge of face "XX" ; similarly,
51 C = XX.2 : to Southern.E, XX.3 = Eastern.E, XX.4 = Western.E of face "XX".
52 C--
53 C edges order: N,S,E,W <==> 1,2,3,4
54
55 NAMELIST /W2_EXCH2_PARM01/
56 & preDefTopol,
57 & dimsFacets, facetEdgeLink,
58 & blankList,
59 & W2_mapIO,
60 & W2_printMsg,
61 & W2_useE2ioLayOut
62
63 stdUnit = standardMessageUnit
64
65 C-- Default values for W2_EXCH2
66 W2_printMsg = -1
67 W2_mapIO = -1
68 W2_useE2ioLayOut = .TRUE.
69 IF ( useCubedSphereExchange ) THEN
70 preDefTopol = 3
71 ELSE
72 preDefTopol = 1
73 ENDIF
74 DO i=1,W2_maxNbTiles
75 blankList(i) = 0
76 ENDDO
77
78 C-- Initialise other params in namelist
79 DO j=1,W2_maxNbFacets*2
80 dimsFacets(2*j-1) = 0
81 dimsFacets( 2*j ) = 0
82 DO i=1,4
83 facetEdgeLink(i,j) = 0.
84 ENDDO
85 ENDDO
86
87 C- Initialise other parameters:
88 nFacets = 0
89 nBlankTiles = 0
90 DO j=1,W2_maxNbFacets
91 facet_dims(2*j-1) = 0
92 facet_dims( 2*j ) = 0
93 DO i=1,4
94 facet_link(i,j) = 0.
95 ENDDO
96 ENDDO
97
98 C- Check for file "data.ech2":
99 fileExist = .FALSE.
100 INQUIRE( FILE='data.exch2', EXIST=fileExist )
101
102 IF ( fileExist ) THEN
103 WRITE(msgBuf,'(A)') 'W2_READPARMS: opening data.exch2'
104 CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
105 CALL OPEN_COPY_DATA_FILE(
106 I 'data.exch2', 'W2_READPARMS',
107 O iUnit,
108 I myThid )
109
110 C Read parameters from open data file
111 READ(UNIT=iUnit,NML=W2_EXCH2_PARM01)
112 WRITE(msgBuf,'(A)')
113 & 'W2_READPARMS: finished reading data.exch2'
114 CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
115 C Close the open data file
116 CLOSE(iUnit)
117 ELSE
118 WRITE(msgBuf,'(A)') 'W2_READPARMS: file data.exch2 not found'
119 CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
120 IF ( preDefTopol.EQ.1 ) THEN
121 WRITE(msgBuf,'(2A,I3)') '=> use W2_EXCH2 default:',
122 & ' Single sub-domain (nFacets=1)'
123 ELSEIF ( preDefTopol .EQ. 3 ) THEN
124 WRITE(msgBuf,'(2A,I3)') '=> use W2_EXCH2 default:',
125 & ' regular 6-facets Cube'
126 ELSE
127 WRITE(msgBuf,'(2A,I3)') '=> use W2_EXCH2 default:',
128 & ' preDefTopol=', preDefTopol
129 ENDIF
130 CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
131 ENDIF
132
133 C-- copy local arrays dimsFacets & facetEdgeLink to var in common block
134 DO j=1,2*W2_maxNbFacets
135 c write(0,*) j, dimsFacets(j)
136 facet_dims(j) = dimsFacets(j)
137 ENDDO
138 DO j=1,W2_maxNbFacets
139 DO i=1,4
140 facet_link(i,j) = facetEdgeLink(i,j)
141 ENDDO
142 ENDDO
143
144 C-- Check if too many values are specified in data.exch2:
145 errCnt = 0
146 DO j=W2_maxNbFacets+1,namList_NbFacets
147 errFlag = .FALSE.
148 DO i=1,4
149 IF ( facetEdgeLink(i,j).NE.0. ) errFlag = .TRUE.
150 ENDDO
151 IF ( errFlag ) errCnt = errCnt + 1
152 ENDDO
153 IF ( errCnt.GT.0 ) THEN
154 WRITE(msgBuf,'(2A)') ' W2_READPARMS:',
155 & ' Number of "facetEdgeLink" list in "data.exch2"'
156 CALL PRINT_ERROR( msgBuf, myThid )
157 WRITE(msgBuf,'(A,2(A,I3))') ' W2_READPARMS:',
158 & ' exceeds maxNbFacets(=',W2_maxNbFacets,') by', errCnt
159 CALL PRINT_ERROR( msgBuf, myThid )
160 errFlag = .TRUE.
161 ELSE
162 errFlag = .FALSE.
163 ENDIF
164
165 errCnt = 0
166 DO j=2*W2_maxNbFacets+1,2*namList_NbFacets
167 IF ( dimsFacets(j).NE.0 ) errCnt = errCnt + 1
168 ENDDO
169 IF ( errCnt.GT.0 ) THEN
170 WRITE(msgBuf,'(2A)') ' W2_READPARMS:',
171 & ' Number of "dimsFacets" in "data.exch2"'
172 CALL PRINT_ERROR( msgBuf, myThid )
173 WRITE(msgBuf,'(A,2(A,I3))') ' W2_READPARMS:',
174 & ' exceeds 2*maxNbFacets(=',W2_maxNbFacets*2,') by', errCnt
175 CALL PRINT_ERROR( msgBuf, myThid )
176 ENDIF
177 IF ( errFlag .OR. errCnt.GT.0 ) THEN
178 STOP 'ABNORMAL END: S/R W2_READPARMS'
179 ENDIF
180
181 C-- Print some Exch2 parameters:
182 WRITE(msgBuf,'(A,L5,A)') 'W2_useE2ioLayOut=', W2_useE2ioLayOut,
183 & ' ;/* T: use Exch2 glob IO map; F: use model default */'
184 CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
185 WRITE(msgBuf,'(A,I4,A)') 'W2_mapIO =', W2_mapIO,
186 & ' ; /* select option for Exch2 global-IO map */'
187 CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
188 WRITE(msgBuf,'(A,I4,A)') 'W2_printMsg =', W2_printMsg,
189 & ' ; /* select option for printing information */'
190 CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
191
192 RETURN
193 END

  ViewVC Help
Powered by ViewVC 1.1.22