/[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.39 - (hide annotations) (download)
Sat Feb 14 23:33:35 2009 UTC (15 years, 4 months ago) by jmc
Branch: MAIN
Changes since 1.38: +2 -6 lines
switch from EXCH2 to EXCH-1 for dxV,dyU exchange

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

  ViewVC Help
Powered by ViewVC 1.1.22