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

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

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


Revision 1.3 - (hide annotations) (download)
Fri Apr 16 18:06:00 2010 UTC (14 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62g, checkpoint62f, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x
Changes since 1.2: +14 -3 lines
print out some of exch2 params that are not already in log file.

1 jmc 1.3 C $Header: /u/gcmpack/MITgcm/pkg/exch2/w2_readparms.F,v 1.2 2009/05/16 13:34:16 jmc Exp $
2 jmc 1.1 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 jmc 1.3 C msgBuf :: Informational/error message buffer
34 jmc 1.1 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 jmc 1.2 & W2_printMsg,
61     & W2_useE2ioLayOut
62 jmc 1.1
63     stdUnit = standardMessageUnit
64    
65     C-- Default values for W2_EXCH2
66     W2_printMsg = -1
67     W2_mapIO = -1
68 jmc 1.2 W2_useE2ioLayOut = .TRUE.
69 jmc 1.1 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     nTiles = 0
90     nBlankTiles = 0
91     DO j=1,W2_maxNbFacets
92     facet_dims(2*j-1) = 0
93     facet_dims( 2*j ) = 0
94     DO i=1,4
95     facet_link(i,j) = 0.
96     ENDDO
97     ENDDO
98    
99     C- Check for file "data.ech2":
100     fileExist = .FALSE.
101     INQUIRE( FILE='data.exch2', EXIST=fileExist )
102    
103     IF ( fileExist ) THEN
104     WRITE(msgBuf,'(A)') 'W2_READPARMS: opening data.exch2'
105     CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
106     CALL OPEN_COPY_DATA_FILE(
107     I 'data.exch2', 'W2_READPARMS',
108     O iUnit,
109     I myThid )
110    
111     C Read parameters from open data file
112     READ(UNIT=iUnit,NML=W2_EXCH2_PARM01)
113     WRITE(msgBuf,'(A)')
114     & 'W2_READPARMS: finished reading data.exch2'
115     CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
116     C Close the open data file
117     CLOSE(iUnit)
118     ELSE
119     WRITE(msgBuf,'(A)') 'W2_READPARMS: file data.exch2 not found'
120     CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
121     IF ( preDefTopol.EQ.1 ) THEN
122     WRITE(msgBuf,'(2A,I3)') '=> use W2_EXCH2 default:',
123     & ' Single sub-domain (nFacets=1)'
124     ELSEIF ( preDefTopol .EQ. 3 ) THEN
125     WRITE(msgBuf,'(2A,I3)') '=> use W2_EXCH2 default:',
126     & ' regular 6-facets Cube'
127     ELSE
128     WRITE(msgBuf,'(2A,I3)') '=> use W2_EXCH2 default:',
129     & ' preDefTopol=', preDefTopol
130     ENDIF
131     CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
132     ENDIF
133    
134     C-- copy local arrays dimsFacets & facetEdgeLink to var in common block
135     DO j=1,2*W2_maxNbFacets
136     c write(0,*) j, dimsFacets(j)
137     facet_dims(j) = dimsFacets(j)
138     ENDDO
139     DO j=1,W2_maxNbFacets
140     DO i=1,4
141     facet_link(i,j) = facetEdgeLink(i,j)
142     ENDDO
143     ENDDO
144    
145     C-- Check if too many values are specified in data.exch2:
146     errCnt = 0
147     DO j=W2_maxNbFacets+1,namList_NbFacets
148     errFlag = .FALSE.
149     DO i=1,4
150     IF ( facetEdgeLink(i,j).NE.0. ) errFlag = .TRUE.
151     ENDDO
152     IF ( errFlag ) errCnt = errCnt + 1
153     ENDDO
154     IF ( errCnt.GT.0 ) THEN
155     WRITE(msgBuf,'(2A)') ' W2_READPARMS:',
156     & ' Number of "facetEdgeLink" list in "data.exch2"'
157     CALL PRINT_ERROR( msgBuf, myThid )
158     WRITE(msgBuf,'(A,2(A,I3))') ' W2_READPARMS:',
159     & ' exceeds maxNbFacets(=',W2_maxNbFacets,') by', errCnt
160     CALL PRINT_ERROR( msgBuf, myThid )
161     errFlag = .TRUE.
162     ELSE
163     errFlag = .FALSE.
164     ENDIF
165 jmc 1.3
166 jmc 1.1 errCnt = 0
167     DO j=2*W2_maxNbFacets+1,2*namList_NbFacets
168     IF ( dimsFacets(j).NE.0 ) errCnt = errCnt + 1
169     ENDDO
170     IF ( errCnt.GT.0 ) THEN
171     WRITE(msgBuf,'(2A)') ' W2_READPARMS:',
172     & ' Number of "dimsFacets" in "data.exch2"'
173     CALL PRINT_ERROR( msgBuf, myThid )
174     WRITE(msgBuf,'(A,2(A,I3))') ' W2_READPARMS:',
175     & ' exceeds 2*maxNbFacets(=',W2_maxNbFacets*2,') by', errCnt
176     CALL PRINT_ERROR( msgBuf, myThid )
177     ENDIF
178     IF ( errFlag .OR. errCnt.GT.0 ) THEN
179     STOP 'ABNORMAL END: S/R W2_READPARMS'
180     ENDIF
181    
182 jmc 1.3 C-- Print some Exch2 parameters:
183     WRITE(msgBuf,'(A,L5,A)') 'W2_useE2ioLayOut=', W2_useE2ioLayOut,
184     & ' ;/* T: use Exch2 glob IO map; F: use model default */'
185     CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
186     WRITE(msgBuf,'(A,I4,A)') 'W2_mapIO =', W2_mapIO,
187     & ' ; /* select option for Exch2 global-IO map */'
188     CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
189     WRITE(msgBuf,'(A,I4,A)') 'W2_printMsg =', W2_printMsg,
190     & ' ; /* select option for printing information */'
191     CALL PRINT_MESSAGE( msgBuf, stdUnit, SQUEEZE_RIGHT , myThid )
192    
193 jmc 1.1 RETURN
194     END

  ViewVC Help
Powered by ViewVC 1.1.22