/[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.2 - (show annotations) (download)
Wed Nov 29 04:39:06 2006 UTC (17 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: mitgcm_mapl_00, checkpoint58u_post, checkpoint58w_post, checkpoint60, checkpoint61, checkpoint62, checkpoint58x_post, checkpoint58t_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint58y_post, checkpoint58v_post, checkpoint58s_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.1: +93 -21 lines
setting both delR & delRc => no assumption on vertical grid (center@middle
 or interface@middle) ; + allow to load delR & delRc from (binary) file.

1 C $Header: /u/gcmpack/MITgcm/model/src/load_grid_spacing.F,v 1.1 2005/07/31 22:07:48 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 c #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 meesage 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 _END_MASTER(myThid)
186 C-- Everyone else must wait for the parameters to be loaded
187 _BARRIER
188
189 RETURN
190 END

  ViewVC Help
Powered by ViewVC 1.1.22