80 |
real*4 cbuff( sNx*nSx*nPx*sNy*nSy*nPy ) |
real*4 cbuff( sNx*nSx*nPx*sNy*nSy*nPy ) |
81 |
|
|
82 |
character*(128) fname |
character*(128) fname |
83 |
|
character*(17) prefix |
84 |
|
parameter ( prefix = " OPTIM_READDATA: " ) |
85 |
|
|
86 |
c integer filei |
c integer filei |
87 |
c integer filej |
c integer filej |
101 |
|
|
102 |
c == end of interface == |
c == end of interface == |
103 |
|
|
|
print *, 'pathei-lsopt in optim_readdata' |
|
|
|
|
104 |
c-- The reference i/o unit. |
c-- The reference i/o unit. |
105 |
funit = 20 |
funit = 20 |
106 |
|
|
108 |
nopt = optimcycle |
nopt = optimcycle |
109 |
|
|
110 |
if ( dfile .eq. ctrlname ) then |
if ( dfile .eq. ctrlname ) then |
111 |
print* |
print* |
112 |
print*,' OPTIM_READDATA: Reading control vector' |
print*,' OPTIM_READDATA: Reading control vector' |
113 |
print*,' for optimization cycle: ',nopt |
print*,' for optimization cycle: ',nopt |
114 |
print* |
print* |
115 |
else if ( dfile .eq. costname ) then |
else if ( dfile .eq. costname ) then |
116 |
print* |
print* |
117 |
print*,' OPTIM_READDATA: Reading cost function and' |
print*,' OPTIM_READDATA: Reading cost function and'// |
118 |
print*,' gradient of cost function' |
& ' gradient of cost function' |
119 |
print*,' for optimization cycle: ',nopt |
print*,' for optimization cycle: ',nopt |
120 |
print* |
print* |
121 |
else |
else |
122 |
print* |
print* |
123 |
print*,' OPTIM_READDATA: subroutine called by a false *dfile*' |
print*,' OPTIM_READDATA: subroutine called by a false *dfile*' |
124 |
print*,' argument. *dfile* = ',dfile |
print*,' argument. *dfile* = ',dfile |
125 |
print* |
print* |
126 |
stop ' ... stopped in OPTIM_READDATA.' |
stop ' ... stopped in OPTIM_READDATA.' |
127 |
endif |
endif |
128 |
|
|
129 |
c-- Read the data. |
c-- Read the data. |
138 |
& status = 'old', |
& status = 'old', |
139 |
& form = 'unformatted', |
& form = 'unformatted', |
140 |
& access = 'sequential' ) |
& access = 'sequential' ) |
141 |
print*, 'opened file ', fname |
print*, prefix, 'opened file ', fname |
142 |
|
|
143 |
c-- Read the header. |
c-- Read the header. |
144 |
read( funit ) nvartype |
read( funit ) nvartype |
184 |
read( funit ) (ncvargrd(i), i=1,maxcvars) |
read( funit ) (ncvargrd(i), i=1,maxcvars) |
185 |
read( funit ) |
read( funit ) |
186 |
|
|
187 |
cph( |
print *, prefix, 'nvartype ', nvartype |
188 |
cph if (lheaderonly) then |
print *, prefix, 'nvarlength ', nvarlength |
189 |
print *, 'pathei: nvartype ', nvartype |
print *, prefix, 'yctrlid ', yctrlid |
190 |
print *, 'pathei: nvarlength ', nvarlength |
print *, prefix, 'filenopt ', filenopt |
191 |
print *, 'pathei: yctrlid ', yctrlid |
print *, prefix, 'fileff ', fileff |
192 |
print *, 'pathei: filenopt ', filenopt |
print *, prefix, 'fileiG ', fileiG |
193 |
print *, 'pathei: fileff ', fileff |
print *, prefix, 'filejG ', filejG |
194 |
print *, 'pathei: fileiG ', fileiG |
print *, prefix, 'filensx ', filensx |
195 |
print *, 'pathei: filejG ', filejG |
print *, prefix, 'filensy ', filensy |
|
print *, 'pathei: filensx ', filensx |
|
|
print *, 'pathei: filensy ', filensy |
|
196 |
|
|
197 |
print *, 'pathei: nWetcGlobal ', |
if (lheaderonly) then |
198 |
& (nWetcGlobal(k), k=1,nr) |
print *, prefix, 'nWetcGlobal ', (nWetcGlobal(k), k=1,nr) |
199 |
print *, 'pathei: nWetsGlobal ', |
print *, prefix, 'nWetsGlobal ', (nWetsGlobal(k), k=1,nr) |
200 |
& (nWetsGlobal(k), k=1,nr) |
print *, prefix, 'nWetwGlobal ', (nWetwGlobal(k), k=1,nr) |
201 |
print *, 'pathei: nWetwGlobal ', |
print *, prefix, 'nWetvGlobal ', (nWetvGlobal(k), k=1,nr) |
|
& (nWetwGlobal(k), k=1,nr) |
|
|
print *, 'pathei: nWetvGlobal ', |
|
|
& (nWetvGlobal(k), k=1,nr) |
|
202 |
#ifdef ALLOW_SHIFWFLX_CONTROL |
#ifdef ALLOW_SHIFWFLX_CONTROL |
203 |
print *, 'pathei: nWetiGlobal ', |
print *, prefix, 'nWetiGlobal ', (nWetiGlobal(k), k=1,nr) |
|
& (nWetiGlobal(k), k=1,nr) |
|
204 |
#endif |
#endif |
205 |
#ifdef ALLOW_OBCSN_CONTROL |
#ifdef ALLOW_OBCSN_CONTROL |
206 |
do iobcs=1,nobcs |
do iobcs=1,nobcs |
207 |
print *, 'pathei: nWetobcsnGlo (iobcs=', iobcs,')', |
print *, prefix, 'nWetobcsnGlo (iobcs=', iobcs,')', |
208 |
& (nWetobcsnGlo(k,iobcs), k=1,nr) |
& (nWetobcsnGlo(k,iobcs), k=1,nr) |
209 |
enddo |
enddo |
210 |
#endif |
#endif |
211 |
#ifdef ALLOW_OBCSS_CONTROL |
#ifdef ALLOW_OBCSS_CONTROL |
212 |
do iobcs=1,nobcs |
do iobcs=1,nobcs |
213 |
print *, 'pathei: nWetobcssGlo (iobcs=', iobcs,')', |
print *, prefix, 'nWetobcssGlo (iobcs=', iobcs,')', |
214 |
& (nWetobcssGlo(k,iobcs), k=1,nr) |
& (nWetobcssGlo(k,iobcs), k=1,nr) |
215 |
enddo |
enddo |
216 |
#endif |
#endif |
217 |
#ifdef ALLOW_OBCSW_CONTROL |
#ifdef ALLOW_OBCSW_CONTROL |
218 |
do iobcs=1,nobcs |
do iobcs=1,nobcs |
219 |
print *, 'pathei: nWetobcswGlo (iobcs=', iobcs,')', |
print *, prefix, 'nWetobcswGlo (iobcs=', iobcs,')', |
220 |
& (nWetobcswGlo(k,iobcs), k=1,nr) |
& (nWetobcswGlo(k,iobcs), k=1,nr) |
221 |
enddo |
enddo |
222 |
#endif |
#endif |
223 |
#ifdef ALLOW_OBCSE_CONTROL |
#ifdef ALLOW_OBCSE_CONTROL |
224 |
do iobcs=1,nobcs |
do iobcs=1,nobcs |
225 |
print *, 'pathei: nWetobcseGlo (iobcs=', iobcs,')', |
print *, prefix, 'nWetobcseGlo (iobcs=', iobcs,')', |
226 |
& (nWetobcseGlo(k,iobcs), k=1,nr) |
& (nWetobcseGlo(k,iobcs), k=1,nr) |
227 |
enddo |
enddo |
228 |
#endif |
#endif |
229 |
print *, 'pathei: ncvarindex ', |
print *, prefix, 'ncvarindex ', (ncvarindex(i), i=1,maxcvars) |
230 |
& (ncvarindex(i), i=1,maxcvars) |
print *, prefix, 'ncvarrecs ', (ncvarrecs(i), i=1,maxcvars) |
231 |
print *, 'pathei: ncvarrecs ', |
print *, prefix, 'ncvarxmax ', (ncvarxmax(i), i=1,maxcvars) |
232 |
& (ncvarrecs(i), i=1,maxcvars) |
print *, prefix, 'ncvarymax ', (ncvarymax(i), i=1,maxcvars) |
233 |
print *, 'pathei: ncvarxmax ', |
print *, prefix, 'ncvarnrmax ', (ncvarnrmax(i), i=1,maxcvars) |
234 |
& (ncvarxmax(i), i=1,maxcvars) |
print *, prefix, 'ncvargrd ', (ncvargrd(i), i=1,maxcvars) |
235 |
print *, 'pathei: ncvarymax ', |
end if |
|
& (ncvarymax(i), i=1,maxcvars) |
|
|
print *, 'pathei: ncvarnrmax ', |
|
|
& (ncvarnrmax(i), i=1,maxcvars) |
|
|
print *, 'pathei: ncvargrd ', |
|
|
& (ncvargrd(i), i=1,maxcvars) |
|
|
cph end if |
|
|
cph) |
|
236 |
c-- Check the header information for consistency. |
c-- Check the header information for consistency. |
237 |
|
|
238 |
cph if ( filenopt .ne. nopt ) then |
cph if ( filenopt .ne. nopt ) then |
239 |
cph print* |
cph print* |
240 |
cph print*,' READ_HEADER: Input data belong to the wrong' |
cph print*,' READ_HEADER: Input data belong to the wrong' |
241 |
cph print*,' optimization cycle.' |
cph print*,' optimization cycle.' |
242 |
cph print*,' optimization cycle = ',nopt |
cph print*,' optimization cycle = ',nopt |
243 |
cph print*,' input optim cycle = ',filenopt |
cph print*,' input optim cycle = ',filenopt |
244 |
cph print* |
cph print* |
245 |
cph stop ' ... stopped in READ_HEADER.' |
cph stop ' ... stopped in READ_HEADER.' |
246 |
cph endif |
cph endif |
247 |
|
|
248 |
if ( (fileiG .ne. biG) .or. (filejG .ne. bjG) ) then |
if ( (fileiG .ne. biG) .or. (filejG .ne. bjG) ) then |
249 |
print* |
print* |
250 |
print*,' READ_HEADER: Tile indices of loop and data ' |
print*, prefix, 'Tile indices of loop and data do not match.' |
251 |
print*,' do not match.' |
print*,' loop x/y component = ', |
252 |
print*,' loop x/y component = ', |
& biG,bjG |
253 |
& biG,bjG |
print*,' data x/y component = ', |
254 |
print*,' data x/y component = ', |
& fileiG,filejG |
255 |
& fileiG,filejG |
print* |
256 |
print* |
stop ' ... stopped in OPTIM_READDATA.' |
|
stop ' ... stopped in READ_HEADER.' |
|
257 |
endif |
endif |
258 |
|
|
259 |
if ( (filensx .ne. nsx) .or. (filensy .ne. nsy) ) then |
if ( (filensx .ne. nsx) .or. (filensy .ne. nsy) ) then |
260 |
print* |
print* |
261 |
print*,' READ_HEADER: Numbers of tiles do not match.' |
print*, prefix, ' Numbers of tiles do not match.' |
262 |
print*,' parameter x/y no. of tiles = ', |
print*,' parameter x/y no. of tiles = ', |
263 |
& bi,bj |
& bi,bj |
264 |
print*,' data x/y no. of tiles = ', |
print*,' data x/y no. of tiles = ', |
265 |
& filensx,filensy |
& filensx,filensy |
266 |
print* |
print* |
267 |
stop ' ... stopped in READ_HEADER.' |
stop ' ... stopped in OPTIM_READDATA.' |
268 |
endif |
endif |
269 |
|
|
270 |
ce Add some more checks. ... |
ce Add some more checks. ... |
301 |
igg = int(gg) |
igg = int(gg) |
302 |
iobcs= icvrec - igg*nobcs |
iobcs= icvrec - igg*nobcs |
303 |
#ifdef ALLOW_OBCSN_CONTROL |
#ifdef ALLOW_OBCSN_CONTROL |
304 |
if (icvar .eq. 11) then |
if (icvar .eq. 11) cbuffindex = nWetobcsnGlo(k,iobcs) |
|
cbuffindex = nWetobcsnGlo(k,iobcs) |
|
|
endif |
|
305 |
#endif |
#endif |
306 |
#ifdef ALLOW_OBCSS_CONTROL |
#ifdef ALLOW_OBCSS_CONTROL |
307 |
if (icvar .eq. 12) then |
if (icvar .eq. 12) cbuffindex = nWetobcssGlo(k,iobcs) |
|
cbuffindex = nWetobcssGlo(k,iobcs) |
|
|
endif |
|
308 |
#endif |
#endif |
309 |
#ifdef ALLOW_OBCSW_CONTROL |
#ifdef ALLOW_OBCSW_CONTROL |
310 |
if (icvar .eq. 13) then |
if (icvar .eq. 13) cbuffindex = nWetobcswGlo(k,iobcs) |
|
cbuffindex = nWetobcswGlo(k,iobcs) |
|
|
endif |
|
311 |
#endif |
#endif |
312 |
#ifdef ALLOW_OBCSE_CONTROL |
#ifdef ALLOW_OBCSE_CONTROL |
313 |
if (icvar .eq. 14) then |
if (icvar .eq. 14) cbuffindex = nWetobcseGlo(k,iobcs) |
|
cbuffindex = nWetobcseGlo(k,iobcs) |
|
|
endif |
|
314 |
#endif |
#endif |
315 |
cgg) |
cgg) |
316 |
endif |
endif |
367 |
c-- Always return the cost function value if lheaderonly |
c-- Always return the cost function value if lheaderonly |
368 |
if ( lheaderonly) ff = fileff |
if ( lheaderonly) ff = fileff |
369 |
|
|
370 |
|
print *, prefix, 'end of optim_readdata' |
371 |
|
print *, ' ' |
372 |
|
|
373 |
return |
return |
374 |
end |
end |