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

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

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


Revision 1.3 - (hide 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 jmc 1.3 C $Header: /u/gcmpack/MITgcm/model/src/load_grid_spacing.F,v 1.2 2006/11/29 04:39:06 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4 jmc 1.2 c #include "PACKAGES_CONFIG.h"
5 jmc 1.1 #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 jmc 1.2 C load grid-spacing (vector array) delX, delY, delR or delRc from file.
15    
16 jmc 1.1 C !USES:
17     IMPLICIT NONE
18     #include "SIZE.h"
19     #include "EEPARAMS.h"
20     #include "PARAMS.h"
21 jmc 1.3 #include "GRID.h"
22 jmc 1.1
23     C !INPUT/OUTPUT PARAMETERS:
24 jmc 1.2 C myThid :: my Thread Id. number
25 jmc 1.1 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 jmc 1.2 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 jmc 1.3 C msgBuf :: Informational/error message buffer
38 jmc 1.1 C iUnit :: Work variable for IO unit number
39 jmc 1.2 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 jmc 1.1 CHARACTER*(MAX_LEN_MBUF) msgBuf
44 jmc 1.2 INTEGER i, j, k, iLen, iUnit, rcLen1
45 jmc 1.1 INTEGER ILNBLNK
46     EXTERNAL ILNBLNK
47    
48 jmc 1.2 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 jmc 1.3 C-- X coordinate
55 jmc 1.1 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 jmc 1.2 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nx)
61 jmc 1.1 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 jmc 1.2 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nx)
72 jmc 1.1 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 jmc 1.2 & SQUEEZE_RIGHT , myThid )
85 jmc 1.1 ENDIF
86    
87 jmc 1.3 C-- Y coordinate
88 jmc 1.1 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 jmc 1.2 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Ny)
94 jmc 1.1 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 jmc 1.2 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Ny)
105 jmc 1.1 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 jmc 1.2 & SQUEEZE_RIGHT , myThid )
118     ENDIF
119    
120 jmc 1.3 C-- vertical coordinate "R"
121 jmc 1.2 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 jmc 1.1 ENDIF
184    
185 jmc 1.3 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 jmc 1.2 _END_MASTER(myThid)
237 jmc 1.1 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