/[MITgcm]/MITgcm/model/src/ini_curvilinear_grid.F
ViewVC logotype

Annotation of /MITgcm/model/src/ini_curvilinear_grid.F

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


Revision 1.42 - (hide annotations) (download)
Tue Apr 28 18:01:14 2009 UTC (15 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint61n, checkpoint61m
Changes since 1.41: +4 -4 lines
change macros (EXCH & GLOBAL_SUM/MAX) sufix _R4/_R8 to _RS/_RL
 when applied to _RS/_RL variable

1 jmc 1.42 C $Header: /u/gcmpack/MITgcm/model/src/ini_curvilinear_grid.F,v 1.41 2009/02/27 00:32:41 jmc Exp $
2 cnh 1.3 C $Name: $
3 adcroft 1.2
4 edhill 1.11 #include "PACKAGES_CONFIG.h"
5 adcroft 1.2 #include "CPP_OPTIONS.h"
6    
7 cnh 1.3 CBOP
8     C !ROUTINE: INI_CURVILINEAR_GRID
9     C !INTERFACE:
10 adcroft 1.2 SUBROUTINE INI_CURVILINEAR_GRID( myThid )
11 cnh 1.3 C !DESCRIPTION: \bv
12     C *==========================================================*
13 jmc 1.28 C | SUBROUTINE INI_CURVILINEAR_GRID
14     C | o Initialise curvilinear coordinate system
15 cnh 1.3 C *==========================================================*
16     C | Curvilinear grid settings are read from a file rather
17     C | than coded in-line as for cartesian and spherical polar.
18     C | This is more general but you have to create the grid
19     C | yourself.
20     C *==========================================================*
21     C \ev
22    
23     C !USES:
24 adcroft 1.2 IMPLICIT NONE
25     C === Global variables ===
26     #include "SIZE.h"
27     #include "EEPARAMS.h"
28     #include "PARAMS.h"
29     #include "GRID.h"
30 adcroft 1.10 #ifdef ALLOW_EXCH2
31 jmc 1.7 #include "W2_EXCH2_TOPOLOGY.h"
32     #include "W2_EXCH2_PARAMS.h"
33     #endif
34 edhill 1.18 #ifdef ALLOW_MNC
35     #include "MNC_PARAMS.h"
36     #endif
37 jmc 1.7
38 cnh 1.3 C !INPUT/OUTPUT PARAMETERS:
39 adcroft 1.2 C == Routine arguments ==
40 jmc 1.21 C myThid - Number of this instance of INI_CURVILINEAR_GRID
41 adcroft 1.2 INTEGER myThid
42    
43 cnh 1.3 C !LOCAL VARIABLES:
44 adcroft 1.2 C == Local variables ==
45 jmc 1.33 INTEGER bi,bj
46 jmc 1.36 INTEGER i,j
47 jmc 1.25 CHARACTER*(MAX_LEN_MBUF) msgBuf
48 jmc 1.27 LOGICAL anglesAreSet
49 edhill 1.18 #ifdef ALLOW_MNC
50     CHARACTER*(80) mncFn
51     #endif
52 jmc 1.25 #ifndef OLD_GRID_IO
53 jmc 1.36 INTEGER fp
54 jmc 1.40 INTEGER iG, jG, iL, iLen
55 jmc 1.25 CHARACTER*(MAX_LEN_FNAM) fName
56     CHARACTER*(MAX_LEN_MBUF) tmpBuf
57 jmc 1.8 INTEGER ILNBLNK
58     EXTERNAL ILNBLNK
59 jmc 1.25 #endif
60 cnh 1.3 CEOP
61 adcroft 1.2
62     C-- Set everything to zero everywhere
63     DO bj = myByLo(myThid), myByHi(myThid)
64     DO bi = myBxLo(myThid), myBxHi(myThid)
65    
66 jmc 1.36 DO j=1-Oly,sNy+Oly
67     DO i=1-Olx,sNx+Olx
68 jmc 1.28 xC(i,j,bi,bj)=0.
69     yC(i,j,bi,bj)=0.
70     xG(i,j,bi,bj)=0.
71     yG(i,j,bi,bj)=0.
72     dxC(i,j,bi,bj)=0.
73     dyC(i,j,bi,bj)=0.
74     dxG(i,j,bi,bj)=0.
75     dyG(i,j,bi,bj)=0.
76     dxF(i,j,bi,bj)=0.
77     dyF(i,j,bi,bj)=0.
78     dxV(i,j,bi,bj)=0.
79     dyU(i,j,bi,bj)=0.
80     rA(i,j,bi,bj)=0.
81     rAz(i,j,bi,bj)=0.
82     rAw(i,j,bi,bj)=0.
83     rAs(i,j,bi,bj)=0.
84 adcroft 1.2 tanPhiAtU(i,j,bi,bj)=0.
85     tanPhiAtV(i,j,bi,bj)=0.
86 jmc 1.20 angleCosC(i,j,bi,bj)=1.
87     angleSinC(i,j,bi,bj)=0.
88 jmc 1.36 cosFacU(j,bi,bj)=1.
89     cosFacV(j,bi,bj)=1.
90     sqCosFacU(j,bi,bj)=1.
91     sqCosFacV(j,bi,bj)=1.
92 adcroft 1.2 ENDDO
93     ENDDO
94    
95 jmc 1.7 ENDDO
96     ENDDO
97 adcroft 1.2
98 jmc 1.29 C-- Everyone must wait for the initialisation to be done
99     _BARRIER
100 edhill 1.18
101 adcroft 1.2 C Here we make no assumptions about grid symmetry and simply
102     C read the raw grid data from files
103    
104 jmc 1.7 #ifdef OLD_GRID_IO
105    
106 adcroft 1.2 C- Cell centered quantities
107 jmc 1.28 CALL MDSREADFIELD('LONC.bin',readBinaryPrec,'RS',1,xC, 1,myThid)
108     CALL MDSREADFIELD('LATC.bin',readBinaryPrec,'RS',1,yC, 1,myThid)
109 jmc 1.42 _EXCH_XY_RS(xC,myThid)
110     _EXCH_XY_RS(yC,myThid)
111 jmc 1.28
112     CALL MDSREADFIELD('DXF.bin',readBinaryPrec,'RS',1,dxF, 1,myThid)
113     CALL MDSREADFIELD('DYF.bin',readBinaryPrec,'RS',1,dyF, 1,myThid)
114 jmc 1.31 CALL EXCH_UV_AGRID_3D_RS( dxF, dyF, .FALSE., 1, myThid )
115 adcroft 1.2
116 jmc 1.28 CALL MDSREADFIELD('RA.bin',readBinaryPrec,'RS',1,rA, 1,myThid)
117 jmc 1.42 _EXCH_XY_RS(rA,myThid )
118 adcroft 1.2
119     C- Corner quantities
120 jmc 1.28 CALL MDSREADFIELD('LONG.bin',readBinaryPrec,'RS',1,xG, 1,myThid)
121     CALL MDSREADFIELD('LATG.bin',readBinaryPrec,'RS',1,yG, 1,myThid)
122 dimitri 1.13 IF (useCubedSphereExchange) THEN
123 adcroft 1.2 cs- this block needed by cubed sphere until we write more useful I/O routines
124     bi=3
125     bj=1
126 jmc 1.28 yG(1,sNy+1,bj,1)=yG(1,1,bi,1)
127 adcroft 1.2 bj=bj+2
128 jmc 1.28 yG(1,sNy+1,bj,1)=yG(1,1,bi,1)
129 adcroft 1.2 bj=bj+2
130 jmc 1.28 yG(1,sNy+1,bj,1)=yG(1,1,bi,1)
131 adcroft 1.2 bi=6
132     bj=2
133 jmc 1.28 yG(sNx+1,1,bj,1)=yG(1,1,bi,1)
134 adcroft 1.2 bj=bj+2
135 jmc 1.28 yG(sNx+1,1,bj,1)=yG(1,1,bi,1)
136 adcroft 1.2 bj=bj+2
137 jmc 1.28 yG(sNx+1,1,bj,1)=yG(1,1,bi,1)
138 adcroft 1.2 cs- end block
139 dimitri 1.13 ENDIF
140 jmc 1.31 CALL EXCH_Z_3D_RS( xG, 1, myThid )
141     CALL EXCH_Z_3D_RS( yG, 1, myThid )
142 adcroft 1.2
143 jmc 1.28 CALL MDSREADFIELD('DXV.bin',readBinaryPrec,'RS',1,dxV, 1,myThid)
144     CALL MDSREADFIELD('DYU.bin',readBinaryPrec,'RS',1,dyU, 1,myThid)
145 jmc 1.35 c CALL EXCH_UV_BGRID_3D_RS( dxV, dyU, .FALSE., 1, myThid)
146 adcroft 1.2 cs- this block needed by cubed sphere until we write more useful I/O routines
147 dimitri 1.13 IF (.NOT.useCubedSphereExchange) THEN
148 jmc 1.31 CALL EXCH_Z_3D_RS( dxV, 1, myThid )
149     CALL EXCH_Z_3D_RS( dyU, 1, myThid )
150 dimitri 1.13 ELSE
151 adcroft 1.2 DO bj = myByLo(myThid), myByHi(myThid)
152     DO bi = myBxLo(myThid), myBxHi(myThid)
153 adcroft 1.5 cs! fix overlaps:
154     DO j=1,sNy
155     DO i=1,Olx
156 jmc 1.28 dxV(1-i,j,bi,bj)=dxV(1+i,j,bi,bj)
157     dxV(sNx+i,j,bi,bj)=dxV(i,j,bi,bj)
158     dyU(1-i,j,bi,bj)=dyU(1+i,j,bi,bj)
159     dyU(sNx+i,j,bi,bj)=dyU(i,j,bi,bj)
160 adcroft 1.5 ENDDO
161     ENDDO
162     DO j=1,Oly
163 jmc 1.6 DO i=1-Olx,sNx+Olx
164 jmc 1.28 dxV(i,1-j,bi,bj)=dxV(i,1+j,bi,bj)
165     dxV(i,sNy+j,bi,bj)=dxV(i,j,bi,bj)
166     dyU(i,1-j,bi,bj)=dyU(i,1+j,bi,bj)
167     dyU(i,sNy+j,bi,bj)=dyU(i,j,bi,bj)
168 adcroft 1.5 ENDDO
169     ENDDO
170 adcroft 1.2 ENDDO
171     ENDDO
172     cs- end block
173 dimitri 1.13 ENDIF
174 adcroft 1.2
175 jmc 1.28 CALL MDSREADFIELD('RAZ.bin',readBinaryPrec,'RS',1,rAz, 1,myThid)
176 dimitri 1.13 IF (useCubedSphereExchange) THEN
177 adcroft 1.2 cs- this block needed by cubed sphere until we write more useful I/O routines
178 jmc 1.31 CALL EXCH_Z_3D_RS( rAz, 1, myThid )
179 adcroft 1.2 DO bj = myByLo(myThid), myByHi(myThid)
180     DO bi = myBxLo(myThid), myBxHi(myThid)
181 jmc 1.28 rAz(sNx+1,1,bi,bj)=rAz(1,1,bi,bj)
182     rAz(1,sNy+1,bi,bj)=rAz(1,1,bi,bj)
183 adcroft 1.2 ENDDO
184     ENDDO
185     cs- end block
186 dimitri 1.13 ENDIF
187 jmc 1.31 CALL EXCH_Z_3D_RS( rAz, 1, myThid )
188 adcroft 1.2
189     C- Staggered (u,v pairs) quantities
190 jmc 1.28 CALL MDSREADFIELD('DXC.bin',readBinaryPrec,'RS',1,dxC, 1,myThid)
191     CALL MDSREADFIELD('DYC.bin',readBinaryPrec,'RS',1,dyC, 1,myThid)
192     CALL EXCH_UV_XY_RS(dxC,dyC,.FALSE.,myThid)
193 adcroft 1.2
194 jmc 1.28 CALL MDSREADFIELD('RAW.bin',readBinaryPrec,'RS',1,rAw, 1,myThid)
195     CALL MDSREADFIELD('RAS.bin',readBinaryPrec,'RS',1,rAs, 1,myThid)
196     CALL EXCH_UV_XY_RS(rAw,rAs,.FALSE.,myThid)
197 adcroft 1.2
198 jmc 1.28 CALL MDSREADFIELD('DXG.bin',readBinaryPrec,'RS',1,dxG, 1,myThid)
199     CALL MDSREADFIELD('DYG.bin',readBinaryPrec,'RS',1,dyG, 1,myThid)
200     CALL EXCH_UV_XY_RS(dyG,dxG,.FALSE.,myThid)
201 jmc 1.31 CALL EXCH_UV_AGRID_3D_RS(angleSinC,angleCosC,.TRUE., 1, myThid)
202 jmc 1.27 anglesAreSet = .FALSE.
203 adcroft 1.2
204 jmc 1.28 c write(10) xC
205     c write(10) yC
206     c write(10) dxF
207     c write(10) dyF
208     c write(10) rA
209     c write(10) xG
210     c write(10) yG
211     c write(10) dxV
212     c write(10) dyU
213     c write(10) rAz
214     c write(10) dxC
215     c write(10) dyC
216     c write(10) rAw
217     c write(10) rAs
218     c write(10) dxG
219     c write(10) dyG
220 jmc 1.7
221 dimitri 1.12 #else /* ifndef OLD_GRID_IO */
222 jmc 1.7
223 jmc 1.8 C-- Only do I/O if I am the master thread
224 jmc 1.7 _BEGIN_MASTER(myThid)
225 jmc 1.8
226 jmc 1.30 #ifdef ALLOW_MNC
227     IF (useMNC .AND. readgrid_mnc) THEN
228     C-- read NetCDF files:
229    
230     DO i = 1,80
231     mncFn(i:i) = ' '
232     ENDDO
233     write(mncFn,'(a)') 'mitgrid'
234     DO i = 1,MAX_LEN_MBUF
235     msgBuf(i:i) = ' '
236     ENDDO
237     WRITE(msgBuf,'(2A)') msgBuf,' ; Reading grid info using MNC'
238     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
239     & SQUEEZE_RIGHT , myThid)
240     CALL MNC_FILE_CLOSE_ALL_MATCHING(mncFn, myThid)
241     CALL MNC_CW_SET_UDIM(mncFn, 1, myThid)
242     CALL MNC_CW_SET_CITER(mncFn, 2, -1, -1, -1, myThid)
243     CALL MNC_CW_SET_UDIM(mncFn, 1, myThid)
244     CALL MNC_CW_RS_R('D',mncFn,0,0,'XC', xC, myThid)
245     CALL MNC_CW_RS_R('D',mncFn,0,0,'XG', xG, myThid)
246     CALL MNC_CW_RS_R('D',mncFn,0,0,'YC', yC, myThid)
247     CALL MNC_CW_RS_R('D',mncFn,0,0,'YG', yG, myThid)
248     CALL MNC_CW_RS_R('D',mncFn,0,0,'dxC',dxC, myThid)
249     CALL MNC_CW_RS_R('D',mncFn,0,0,'dyC',dyC, myThid)
250     CALL MNC_CW_RS_R('D',mncFn,0,0,'dxF',dxF, myThid)
251     CALL MNC_CW_RS_R('D',mncFn,0,0,'dyF',dyF, myThid)
252     CALL MNC_CW_RS_R('D',mncFn,0,0,'dxG',dxG, myThid)
253     CALL MNC_CW_RS_R('D',mncFn,0,0,'dyG',dyG, myThid)
254     CALL MNC_CW_RS_R('D',mncFn,0,0,'dxV',dxV, myThid)
255     CALL MNC_CW_RS_R('D',mncFn,0,0,'dyU',dyU, myThid)
256     CALL MNC_CW_RS_R('D',mncFn,0,0,'rA', rA, myThid)
257     CALL MNC_CW_RS_R('D',mncFn,0,0,'rAz',rAz, myThid)
258     CALL MNC_CW_RS_R('D',mncFn,0,0,'rAw',rAw, myThid)
259     CALL MNC_CW_RS_R('D',mncFn,0,0,'rAs',rAs, myThid)
260     CALL MNC_CW_RS_R('D',mncFn,0,0,'AngleCS',angleCosC,myThid)
261     CALL MNC_CW_RS_R('D',mncFn,0,0,'AngleSN',angleSinC,myThid)
262     anglesAreSet = .TRUE.
263    
264     ELSE
265     C-- read Binary files:
266     #endif /* ALLOW_MNC */
267    
268 jmc 1.36 C-- File Precision: keep 64-bits precision (as it used to be)
269     C but should probably change it to the standard file-prec (= readBinaryPrec)
270     fp = precFloat64
271     c fp = readBinaryPrec
272    
273 jmc 1.8 DO bj = 1,nSy
274     DO bi = 1,nSx
275 jmc 1.40 #ifdef ALLOW_EXCH2
276     C- Use face number:
277     jG = W2_myTileList(bi)
278     iG = exch2_myface(jG)
279     WRITE(tmpBuf,'(A,I4)') 'tile:',jG
280     #else
281     C- Tile Id number = Bi + (Bj-1)*(nSx*nPx) with tile global-indices Bi,Bj
282 jmc 1.36 iG = bi+(myXGlobalLo-1)/sNx
283 jmc 1.40 jG = bj+(myYGlobalLo-1)/sNy
284     WRITE(tmpBuf,'(2(A,I3))') 'tile:',iG,' ,',jG
285     iG = iG + (jG-1)*(nSx*nPx)
286 jmc 1.20 #endif
287 jmc 1.36
288 jmc 1.20 iLen = ILNBLNK(horizGridFile)
289     IF ( iLen .EQ. 0 ) THEN
290     WRITE(fName,'("tile",I3.3,".mitgrid")') iG
291     ELSE
292     WRITE(fName,'(2A,I3.3,A)') horizGridFile(1:iLen),
293     & '.face',iG,'.bin'
294     ENDIF
295     iLen = ILNBLNK(fName)
296     iL = ILNBLNK(tmpBuf)
297     WRITE(msgBuf,'(3A)') tmpBuf(1:iL),
298     & ' ; Read from file ',fName(1:iLen)
299 jmc 1.8 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
300     & SQUEEZE_RIGHT , myThid)
301     WRITE(msgBuf,'(A)') ' =>'
302    
303 jmc 1.36 #ifdef ALLOW_MDSIO
304     CALL MDS_FACEF_READ_RS( fName, fp, 1, xC, bi, bj, myThid )
305 jmc 1.8 iL = ILNBLNK(msgBuf)
306 jmc 1.28 WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'xC'
307 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp, 2, yC, bi, bj, myThid )
308 jmc 1.20 iL = ILNBLNK(tmpBuf)
309 jmc 1.28 WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'yC'
310 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp, 3, dxF, bi, bj, myThid )
311 jmc 1.8 iL = ILNBLNK(msgBuf)
312 jmc 1.28 WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'dxF'
313 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp, 4, dyF, bi, bj, myThid )
314 jmc 1.20 iL = ILNBLNK(tmpBuf)
315 jmc 1.28 WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'dyF'
316 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp, 5, rA, bi, bj, myThid )
317 jmc 1.8 iL = ILNBLNK(msgBuf)
318 jmc 1.28 WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'rA'
319 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp, 6, xG, bi, bj, myThid )
320 jmc 1.20 iL = ILNBLNK(tmpBuf)
321 jmc 1.28 WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'xG'
322 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp, 7, yG, bi, bj, myThid )
323 jmc 1.8 iL = ILNBLNK(msgBuf)
324 jmc 1.28 WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'yG'
325 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp, 8, dxV, bi, bj, myThid )
326 jmc 1.20 iL = ILNBLNK(tmpBuf)
327 jmc 1.28 WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'dxV'
328 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp, 9, dyU, bi, bj, myThid )
329 jmc 1.8 iL = ILNBLNK(msgBuf)
330 jmc 1.28 WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'dyU'
331 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp,10, rAz, bi, bj, myThid )
332 jmc 1.20 iL = ILNBLNK(tmpBuf)
333 jmc 1.28 WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'rAz'
334 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp,11, dxC, bi, bj, myThid )
335 jmc 1.8 iL = ILNBLNK(msgBuf)
336 jmc 1.28 WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'dxC'
337 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp,12, dyC, bi, bj, myThid )
338 jmc 1.20 iL = ILNBLNK(tmpBuf)
339 jmc 1.28 WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'dyC'
340 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp,13, rAw, bi, bj, myThid )
341 jmc 1.8 iL = ILNBLNK(msgBuf)
342 jmc 1.28 WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'rAw'
343 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp,14, rAs, bi, bj, myThid )
344 jmc 1.20 iL = ILNBLNK(tmpBuf)
345 jmc 1.28 WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'rAs'
346 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp,15, dxG, bi, bj, myThid )
347 jmc 1.8 iL = ILNBLNK(msgBuf)
348 jmc 1.28 WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'dxG'
349 jmc 1.36 CALL MDS_FACEF_READ_RS( fName, fp,16, dyG, bi, bj, myThid )
350 jmc 1.20 iL = ILNBLNK(tmpBuf)
351 jmc 1.28 WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'dyG'
352 jmc 1.20
353     iLen = ILNBLNK(horizGridFile)
354     IF ( iLen.GT.0 ) THEN
355 jmc 1.36 CALL MDS_FACEF_READ_RS(fName,fp,17,angleCosC,bi,bj,myThid)
356 jmc 1.20 iL = ILNBLNK(msgBuf)
357     WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'AngleCS'
358 jmc 1.36 CALL MDS_FACEF_READ_RS(fName,fp,18,angleSinC,bi,bj,myThid)
359 jmc 1.20 iL = ILNBLNK(tmpBuf)
360     WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'AngleSN'
361 jmc 1.27 anglesAreSet = .TRUE.
362     ELSE
363     anglesAreSet = .FALSE.
364 jmc 1.20 ENDIF
365 jmc 1.36 #else /* ALLOW_MDSIO */
366     WRITE(msgBuf,'(2A)')
367     & 'INI_CURVILINEAR_GRID: Needs to compile MDSIO pkg'
368     CALL PRINT_ERROR( msgBuf, myThid )
369     STOP 'ABNORMAL END: S/R INI_CURVILINEAR_GRID'
370     #endif /* ALLOW_MDSIO */
371 jmc 1.8
372     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
373     & SQUEEZE_RIGHT , myThid)
374 jmc 1.7
375     ENDDO
376     ENDDO
377 edhill 1.18
378 jmc 1.30 #ifdef ALLOW_MNC
379     ENDIF
380     #endif /* ALLOW_MNC */
381    
382 jmc 1.8 _END_MASTER(myThid)
383 jmc 1.7
384 jmc 1.28 CALL EXCH_XY_RS(xC,myThid)
385     CALL EXCH_XY_RS(yC,myThid)
386 jmc 1.31 CALL EXCH_UV_AGRID_3D_RS( dxF, dyF, .FALSE., 1, myThid )
387 jmc 1.28 CALL EXCH_XY_RS(rA,myThid )
388 jmc 1.31 CALL EXCH_Z_3D_RS( xG, 1, myThid )
389     CALL EXCH_Z_3D_RS( yG, 1, myThid )
390 jmc 1.39 CALL EXCH_UV_BGRID_3D_RS( dxV, dyU, .FALSE., 1, myThid)
391 jmc 1.31 CALL EXCH_Z_3D_RS( rAz, 1, myThid )
392 jmc 1.28 CALL EXCH_UV_XY_RS(dxC,dyC,.FALSE.,myThid)
393     CALL EXCH_UV_XY_RS(rAw,rAs,.FALSE.,myThid)
394     CALL EXCH_UV_XY_RS(dyG,dxG,.FALSE.,myThid)
395 jmc 1.31 CALL EXCH_UV_AGRID_3D_RS(angleSinC,angleCosC,.TRUE., 1, myThid)
396 jmc 1.7
397 dimitri 1.12 #endif /* OLD_GRID_IO */
398 jmc 1.7
399 jmc 1.27 C-- Stop if Angle have not been loaded but are needed :
400     _BEGIN_MASTER(myThid)
401     IF ( .NOT.anglesAreSet .AND. use3dCoriolis ) THEN
402     WRITE(msgBuf,'(2A)')
403     & 'INI_CURVILINEAR_GRID: Angle of CurvilinearGrid not set',
404     & ' but needed for 3-D Coriolis'
405 jmc 1.36 CALL PRINT_ERROR( msgBuf, myThid )
406 jmc 1.27 STOP 'ABNORMAL END: S/R INI_CURVILINEAR_GRID'
407     ENDIF
408     _END_MASTER(myThid)
409    
410 jmc 1.41 c CALL WRITE_FULLARRAY_RL('dxV',dxV,1,0,0,1,0,myThid)
411     c CALL WRITE_FULLARRAY_RL('dyU',dyU,1,0,0,1,0,myThid)
412     c CALL WRITE_FULLARRAY_RL('rAz',rAz,1,0,0,1,0,myThid)
413     c CALL WRITE_FULLARRAY_RL('xG' ,xG ,1,0,0,1,0,myThid)
414     c CALL WRITE_FULLARRAY_RL('yG' ,yG ,1,0,0,1,0,myThid)
415 jmc 1.7
416 dimitri 1.14 C-- Now let's look at all these beasts
417     IF ( debugLevel .GE. debLevB ) THEN
418 jmc 1.32 CALL PLOT_FIELD_XYRS( xC , 'Current xC ', 0, myThid )
419     CALL PLOT_FIELD_XYRS( yC , 'Current yC ', 0, myThid )
420     CALL PLOT_FIELD_XYRS( dxF , 'Current dxF ', 0, myThid )
421     CALL PLOT_FIELD_XYRS( dyF , 'Current dyF ', 0, myThid )
422     CALL PLOT_FIELD_XYRS( rA , 'Current rA ', 0, myThid )
423     CALL PLOT_FIELD_XYRS( xG , 'Current xG ', 0, myThid )
424     CALL PLOT_FIELD_XYRS( yG , 'Current yG ', 0, myThid )
425     CALL PLOT_FIELD_XYRS( dxV , 'Current dxV ', 0, myThid )
426     CALL PLOT_FIELD_XYRS( dyU , 'Current dyU ', 0, myThid )
427     CALL PLOT_FIELD_XYRS( rAz , 'Current rAz ', 0, myThid )
428     CALL PLOT_FIELD_XYRS( dxC , 'Current dxC ', 0, myThid )
429     CALL PLOT_FIELD_XYRS( dyC , 'Current dyC ', 0, myThid )
430     CALL PLOT_FIELD_XYRS( rAw , 'Current rAw ', 0, myThid )
431     CALL PLOT_FIELD_XYRS( rAs , 'Current rAs ', 0, myThid )
432     CALL PLOT_FIELD_XYRS( dxG , 'Current dxG ', 0, myThid )
433     CALL PLOT_FIELD_XYRS( dyG , 'Current dyG ', 0, myThid )
434     CALL PLOT_FIELD_XYRS(angleCosC, 'Current AngleCS ', 0, myThid )
435     CALL PLOT_FIELD_XYRS(angleSinC, 'Current AngleSN ', 0, myThid )
436 dimitri 1.14 ENDIF
437 jmc 1.7
438     RETURN
439     END

  ViewVC Help
Powered by ViewVC 1.1.22