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

Contents of /MITgcm/model/src/load_grid_spacing.F

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


Revision 1.3 - (show annotations) (download)
Sat Sep 11 21:24:51 2010 UTC (13 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62k, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62p
Changes since 1.2: +57 -6 lines
first check-in of sigma (and hybrid-sigma) coordinate code

1 C $Header: /u/gcmpack/MITgcm/model/src/load_grid_spacing.F,v 1.2 2006/11/29 04:39:06 jmc Exp $
2 C $Name: $
3
4 c #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
8 CBOP
9 C !ROUTINE: LOAD_GRID_SPACING
10 C !INTERFACE:
11 SUBROUTINE LOAD_GRID_SPACING( myThid )
12
13 C !DESCRIPTION:
14 C load grid-spacing (vector array) delX, delY, delR or delRc from file.
15
16 C !USES:
17 IMPLICIT NONE
18 #include "SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "GRID.h"
22
23 C !INPUT/OUTPUT PARAMETERS:
24 C myThid :: my Thread Id. number
25 INTEGER myThid
26 CEOP
27
28 C !LOCAL VARIABLES:
29 C tmp4delX :: temporary arrays to read in delX
30 C tmp8delX :: temporary arrays to read in delX
31 C tmp4delY :: temporary arrays to read in delY
32 C tmp8delY :: temporary arrays to read in delY
33 C tmp4delR :: temporary arrays to read in delR
34 C tmp8delR :: temporary arrays to read in delR
35 C tmp4delRc :: temporary arrays to read in delRc
36 C tmp8delRc :: temporary arrays to read in delRc
37 C msgBuf :: Informational/error message buffer
38 C iUnit :: Work variable for IO unit number
39 C rcLen1 :: record length of 1 element to read
40 C i, j, k :: Loop counters
41 REAL*4 tmp4delX(Nx), tmp4delY(Ny), tmp4delR(Nr), tmp4delRc(Nr+1)
42 REAL*8 tmp8delX(Nx), tmp8delY(Ny), tmp8delR(Nr), tmp8delRc(Nr+1)
43 CHARACTER*(MAX_LEN_MBUF) msgBuf
44 INTEGER i, j, k, iLen, iUnit, rcLen1
45 INTEGER ILNBLNK
46 EXTERNAL ILNBLNK
47
48 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
49
50 _BEGIN_MASTER( myThid )
51 rcLen1 = WORDLENGTH
52 IF (readBinaryPrec.EQ.precFloat64) rcLen1 = WORDLENGTH*2
53
54 C-- X coordinate
55 IF ( delXFile .NE. ' ' ) THEN
56 CALL MDSFINDUNIT( iUnit, myThid )
57 iLen = ILNBLNK(delXFile)
58 IF (readBinaryPrec.EQ.precFloat32) THEN
59 OPEN(iUnit, FILE=delXFile(1:iLen), STATUS='OLD',
60 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nx)
61 READ(iUnit,rec=1) tmp4delX
62 CLOSE(iUnit)
63 #ifdef _BYTESWAPIO
64 CALL MDS_BYTESWAPR4( Nx, tmp4delX )
65 #endif
66 DO i=1,Nx
67 delX(i) = tmp4delX(i)
68 ENDDO
69 ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
70 OPEN(iUnit, FILE=delXFile(1:iLen), STATUS='OLD',
71 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nx)
72 READ(iUnit,rec=1) tmp8delX
73 CLOSE(iUnit)
74 #ifdef _BYTESWAPIO
75 CALL MDS_BYTESWAPR8( Nx, tmp8delX )
76 #endif
77 DO i=1,Nx
78 delX(i) = tmp8delX(i)
79 ENDDO
80 ENDIF
81 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
82 & ' delX loaded from file: ', delXFile(1:iLen)
83 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
84 & SQUEEZE_RIGHT , myThid )
85 ENDIF
86
87 C-- Y coordinate
88 IF ( delYFile .NE. ' ' ) THEN
89 CALL MDSFINDUNIT( iUnit, myThid )
90 iLen = ILNBLNK(delYFile)
91 IF (readBinaryPrec.EQ.precFloat32) THEN
92 OPEN(iUnit, FILE=delYFile(1:iLen), STATUS='OLD',
93 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Ny)
94 READ(iUnit,rec=1) tmp4delY
95 CLOSE(iUnit)
96 #ifdef _BYTESWAPIO
97 CALL MDS_BYTESWAPR4( Ny, tmp4delY )
98 #endif
99 DO j=1,Ny
100 delY(j) = tmp4delY(j)
101 ENDDO
102 ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
103 OPEN(iUnit, FILE=delYFile(1:iLen), STATUS='OLD',
104 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Ny)
105 READ(iUnit,rec=1) tmp8delY
106 CLOSE(iUnit)
107 #ifdef _BYTESWAPIO
108 CALL MDS_BYTESWAPR8( Ny, tmp8delY )
109 #endif
110 DO j=1,Ny
111 delY(j) = tmp8delY(j)
112 ENDDO
113 ENDIF
114 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
115 & ' delY loaded from file: ', delYFile(1:iLen)
116 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
117 & SQUEEZE_RIGHT , myThid )
118 ENDIF
119
120 C-- vertical coordinate "R"
121 IF ( delRFile .NE. ' ' ) THEN
122 CALL MDSFINDUNIT( iUnit, myThid )
123 iLen = ILNBLNK(delRFile)
124 IF (readBinaryPrec.EQ.precFloat32) THEN
125 OPEN(iUnit, FILE=delRFile(1:iLen), STATUS='OLD',
126 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nr)
127 READ(iUnit,rec=1) tmp4delR
128 CLOSE(iUnit)
129 #ifdef _BYTESWAPIO
130 CALL MDS_BYTESWAPR4( Nr, tmp4delR )
131 #endif
132 DO k=1,Nr
133 delR(k) = tmp4delR(k)
134 ENDDO
135 ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
136 OPEN(iUnit, FILE=delRFile(1:iLen), STATUS='OLD',
137 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nr)
138 READ(iUnit,rec=1) tmp8delR
139 CLOSE(iUnit)
140 #ifdef _BYTESWAPIO
141 CALL MDS_BYTESWAPR8( Nr, tmp8delR )
142 #endif
143 DO k=1,Nr
144 delR(k) = tmp8delR(k)
145 ENDDO
146 ENDIF
147 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
148 & ' delR loaded from file: ', delRFile(1:iLen)
149 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
150 & SQUEEZE_RIGHT , myThid )
151 ENDIF
152
153 IF ( delRcFile .NE. ' ' ) THEN
154 CALL MDSFINDUNIT( iUnit, myThid )
155 iLen = ILNBLNK(delRcFile)
156 IF (readBinaryPrec.EQ.precFloat32) THEN
157 OPEN(iUnit, FILE=delRcFile(1:iLen), STATUS='OLD',
158 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*(Nr+1))
159 READ(iUnit,rec=1) tmp4delRc
160 CLOSE(iUnit)
161 #ifdef _BYTESWAPIO
162 CALL MDS_BYTESWAPR4( Nr+1, tmp4delRc )
163 #endif
164 DO k=1,Nr+1
165 delRc(k) = tmp4delRc(k)
166 ENDDO
167 ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
168 OPEN(iUnit, FILE=delRcFile(1:iLen), STATUS='OLD',
169 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*(Nr+1))
170 READ(iUnit,rec=1) tmp8delRc
171 CLOSE(iUnit)
172 #ifdef _BYTESWAPIO
173 CALL MDS_BYTESWAPR8( Nr+1, tmp8delRc )
174 #endif
175 DO k=1,Nr+1
176 delRc(k) = tmp8delRc(k)
177 ENDDO
178 ENDIF
179 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
180 & ' delRc loaded from file: ', delRcFile(1:iLen)
181 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
182 & SQUEEZE_RIGHT , myThid )
183 ENDIF
184
185 C-- hybrid sigma vertical coordinate coefficient
186 IF ( hybSigmFile .NE. ' ' ) THEN
187 CALL MDSFINDUNIT( iUnit, myThid )
188 iLen = ILNBLNK(hybSigmFile)
189 IF (readBinaryPrec.EQ.precFloat32) THEN
190 OPEN(iUnit, FILE=hybSigmFile(1:iLen), STATUS='OLD',
191 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*(Nr+1))
192 C- loading aHybSigmF :
193 READ(iUnit,rec=1) tmp4delRc
194 #ifdef _BYTESWAPIO
195 CALL MDS_BYTESWAPR4( Nr+1, tmp4delRc )
196 #endif
197 DO k=1,Nr+1
198 aHybSigmF(k) = tmp4delRc(k)
199 ENDDO
200 C- loading bHybSigmF :
201 READ(iUnit,rec=2) tmp4delRc
202 CLOSE(iUnit)
203 #ifdef _BYTESWAPIO
204 CALL MDS_BYTESWAPR4( Nr+1, tmp4delRc )
205 #endif
206 DO k=1,Nr+1
207 bHybSigmF(k) = tmp4delRc(k)
208 ENDDO
209 ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
210 OPEN(iUnit, FILE=hybSigmFile(1:iLen), STATUS='OLD',
211 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*(Nr+1))
212 C- loading aHybSigmF :
213 READ(iUnit,rec=1) tmp8delRc
214 #ifdef _BYTESWAPIO
215 CALL MDS_BYTESWAPR8( Nr+1, tmp8delRc )
216 #endif
217 DO k=1,Nr+1
218 aHybSigmF(k) = tmp8delRc(k)
219 ENDDO
220 C- loading bHybSigmF :
221 READ(iUnit,rec=2) tmp8delRc
222 CLOSE(iUnit)
223 #ifdef _BYTESWAPIO
224 CALL MDS_BYTESWAPR8( Nr+1, tmp8delRc )
225 #endif
226 DO k=1,Nr+1
227 bHybSigmF(k) = tmp8delRc(k)
228 ENDDO
229 ENDIF
230 WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
231 & ' a&b_HybSigmF loaded from file: ', hybSigmFile(1:iLen)
232 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
233 & SQUEEZE_RIGHT , myThid )
234 ENDIF
235
236 _END_MASTER(myThid)
237 C-- Everyone else must wait for the parameters to be loaded
238 _BARRIER
239
240 RETURN
241 END

  ViewVC Help
Powered by ViewVC 1.1.22