4 subroutine restrt(nsteps,time,nvar)
7 implicit double precision (a-h,o-z)
12 dimension intrtx(maxlv),intrty(maxlv),intrtt(maxlv)
21 dimension iqout(15), qout(4)
25 integer sfstart, sfend
26 external sfstart, sfend
30 integer dfacc_read, dfacc_write, dfacc_create
31 parameter(dfacc_read = 1, dfacc_write = 2, dfacc_create = 4)
34 parameter(succeed = 0, fail = -1)
45 chkname =
'restart.data.hdf'
49 sd_id = sfstart(chkname,dfacc_read)
50 if (sd_id.eq.fail)
THEN
51 WRITE(*,*)
'Failed to open HDF file',
52 &
' (call to sfstart in restrt_hdf.f)'
72 ndfree_bnd = iqout(15)
123 if (istat.eq.fail)
then
124 WRITE(*,*)
'Failed to close SDS',
125 &
' (call to sfend in restrt_hdf.f)'
129 write(outunit,100) nsteps,time
130 write(6,100) nsteps,time
131 100
format(/,
' RESTARTING the calculation after ',i5,
' steps',
132 1 /,
' (time = ',e15.7,
')')
135 if ( (intratx(i) .ne. intrtx(i)) .or.
136 . (intraty(i) .ne. intrty(i)) .or.
137 . (kratio(i) .ne. intrtt(i)) )
then
139 .
" not allowed to change existing refinement ratios on Restart"
141 .
" not allowed to change existing refinement ratios on Restart"
142 write(outunit,*)
" Old ratios:"
143 write(*,*)
" Old ratios:"
144 write(outunit,903)(intrtx(j),j=1,mxnold-1)
145 write(*,903) (intrtx(j),j=1,mxnold-1)
146 write(outunit,903)(intrty(j),j=1,mxnold-1)
147 write(*,903) (intrty(j),j=1,mxnold-1)
148 write(outunit,903)(intrtt(j),j=1,mxnold-1)
149 write(*,903) (intrtt(j),j=1,mxnold-1)
157 idif = memsize - isize
158 if (idif .gt. 0)
then
159 lfree(lenf,1) = isize + 2
161 else if (idif .lt. 0)
then
162 write(outunit,900) isize, memsize
163 write(*,900) isize, memsize
164 900
format(
' size of alloc not allowed to shrink with restart ',/,
165 .
' old size ',i7,
' current size ',i7)
172 if (mxnest .eq. mxnold) go to 99
174 if (mxnest .lt. mxnold)
then
175 if (lfine .lt. mxnest)
then
178 write(outunit,901) mxnold, mxnest
179 write(*, 901) mxnold, mxnest
180 901
format(
' only allow mxnest to increase: ',/,
181 &
' old mxnest ',i4,
' new mxnest ',i4)
188 do 10 level = 1, mxnold
189 if (icheck(level) .ge. kcheck)
then
191 kmust = icheck(level)
195 write(outunit,902) mxnold, mxnest, kmust
196 write(* ,902) mxnold, mxnest, kmust
197 902
format(/,
' only allow changes in mxnest (from ',
198 & i4,
' to ',i4,
')',/,
199 &
' when not time to error estimate: ',/,
200 &
' please run a few more steps before changing ',/,
201 &
' so that # of steps not greater then kcheck',/,
202 &
' or make kcheck > ',i4 )
206 mptr = lstart(mxnold)
207 15
if (mptr .eq. 0) go to 25
208 mitot = node(ndihi,mptr)-node(ndilo,mptr)+1+2*nghost
209 mjtot = node(ndjhi,mptr)-node(ndjlo,mptr)+1+2*nghost
210 node(store2,mptr) =
igetsp(mitot*mjtot*nvar)
211 mptr = node(levelptr,mptr)
218 35
if (level .gt. mxnest) go to 45
219 hxposs(level) = hxposs(level-1) / dble(intratx(level-1))
220 hyposs(level) = hyposs(level-1) / dble(intraty(level-1))
221 possk(level) = possk(level-1) / dble(kratio(level-1))
222 iregsz(level) = iregsz(level-1) * dble(intratx(level-1))
223 jregsz(level) = jregsz(level-1) * dble(intraty(level-1))
240 implicit double precision (a-h,o-z)
245 integer sd_id, sds_id
246 dimension iout(idims), istart(1), istride(1), iedges(1)
250 integer sfcreate, sfrdata, sfselect, sfendacc
251 external sfcreate, sfrdata, sfselect, sfendacc
255 integer succeed, fail
256 parameter(succeed = 0, fail = -1)
260 sds_id = sfselect(sd_id,index)
261 if (sds_id.eq.fail)
THEN
262 WRITE(*,*)
'Failed to select data set for variable ', qname,
263 &
' in restart HDF file'
264 WRITE(*,*)
'(call to sfselect in restrt_hdf.f)'
276 istat = sfrdata(sds_id,istart,istride,iedges,iout)
277 if (istat.eq.fail)
THEN
278 WRITE(*,*)
'Failed to read variable ', qname,
279 &
' from restart HDF file'
280 WRITE(*,*)
'(call to sfrdata in restrt_hdf.f)'
286 istat = sfendacc(sds_id)
287 if (istat.eq.fail)
THEN
288 WRITE(*,*)
'Failed to end access to variable ', qname,
289 &
' in restart HDF file'
290 WRITE(*,*)
'(call to sfendacc in restrt_hdf.f)'
299 implicit double precision (a-h,o-z)
304 integer sd_id, sds_id
305 dimension istart(2), istride(2), iedges(2)
306 dimension iout(idim1,idim2)
310 integer sfcreate, sfrdata, sfselect, sfendacc
311 external sfcreate, sfrdata, sfselect, sfendacc
315 integer succeed, fail
316 parameter(succeed = 0, fail = -1)
320 sds_id = sfselect(sd_id,index)
321 if (sds_id.eq.fail)
THEN
322 WRITE(*,*)
'Failed to select data set for variable ', qname,
323 &
' in restart HDF file'
324 WRITE(*,*)
'(call to sfselect in restrt_hdf.f)'
339 istat = sfrdata(sds_id,istart,istride,iedges,iout)
340 if (istat.eq.fail)
THEN
341 WRITE(*,*)
'Failed to read variable ', qname,
342 &
' from restart HDF file'
343 WRITE(*,*)
'(call to sfrdata in restrt_hdf.f)'
349 istat = sfendacc(sds_id)
350 if (istat.eq.fail)
THEN
351 WRITE(*,*)
'Failed to end access to variable ', qname,
352 &
' in restart HDF file'
353 WRITE(*,*)
'(call to sfendacc in restrt_hdf.f)'
362 implicit double precision (a-h,o-z)
367 integer sd_id, sds_id
368 dimension iout(idims), istart(1), istride(1), iedges(1), idim(1)
372 integer sfcreate, sfwdata, sfscompress, sfendacc
373 external sfcreate, sfwdata, sfscompress, sfendacc
377 integer dfnt_float64, dfnt_int32
378 parameter(dfnt_float64 = 6, dfnt_int32 = 24)
380 integer succeed, fail
381 parameter(succeed = 0, fail = -1)
385 integer comp_code_deflate, deflate_level
386 parameter(comp_code_deflate = 4, deflate_level = 6)
393 sds_id = sfcreate(sd_id,qname,dfnt_int32,irank,idim)
394 if (sds_id.eq.fail)
THEN
395 WRITE(*,*)
'Failed to create variable ', qname,
396 &
' in restart HDF file'
397 WRITE(*,*)
'(call to sfcreate in check_hdf.f)'
409 istat=sfscompress(sds_id,comp_code_deflate,deflate_level)
410 istat = sfwdata(sds_id,istart,istride,iedges,iout)
411 if (istat.eq.fail)
THEN
412 WRITE(*,*)
'Failed to write variable ', qname,
413 &
' in restart HDF file'
414 WRITE(*,*)
'(call to sfwdata in check_hdf.f)'
420 istat = sfendacc(sds_id)
421 if (istat.eq.fail)
THEN
422 WRITE(*,*)
'Failed to end access to variable ', qname,
423 &
' in restart HDF file'
424 WRITE(*,*)
'(call to sfendacc in check_hdf.f)'
433 implicit double precision (a-h,o-z)
438 integer sd_id, sds_id
439 dimension idims(2), istart(2), istride(2), iedges(2)
440 dimension iout(idim1,idim2)
444 integer sfcreate, sfwdata, sfscompress, sfendacc
445 external sfcreate, sfwdata, sfscompress, sfendacc
449 integer dfnt_float64, dfnt_int32
450 parameter(dfnt_float64 = 6, dfnt_int32 = 24)
452 integer succeed, fail
453 parameter(succeed = 0, fail = -1)
457 integer comp_code_deflate, deflate_level
458 parameter(comp_code_deflate = 4, deflate_level = 6)
466 sds_id = sfcreate(sd_id,qname,dfnt_int32,irank,idims)
467 if (sds_id.eq.fail)
THEN
468 WRITE(*,*)
'Failed to create variable ', qname,
469 &
' in restart HDF file'
470 WRITE(*,*)
'(call to sfcreate in check_hdf.f)'
485 istat=sfscompress(sds_id,comp_code_deflate,deflate_level)
486 istat = sfwdata(sds_id,istart,istride,iedges,iout)
487 if (istat.eq.fail)
THEN
488 WRITE(*,*)
'Failed to write variable ', qname,
489 &
' in restart HDF file'
490 WRITE(*,*)
'(call to sfwdata in check_hdf.f)'
496 istat = sfendacc(sds_id)
497 if (istat.eq.fail)
THEN
498 WRITE(*,*)
'Failed to end access to variable ', qname,
499 &
' in restart HDF file'
500 WRITE(*,*)
'(call to sfendacc in check_hdf.f)'
subroutine read_double_array(sd_id, idim1, idim2, index, qname, out)
subroutine restrt(nsteps, time, nvar, naux)
subroutine reclam(index, nwords)
subroutine dump_integer_array(sd_id, idim1, idim2, qname, iout)
subroutine read_integer_vector(sd_id, idims, index, qname, iout)
subroutine read_double_vector(sd_id, idims, index, qname, out)
subroutine read_integer_array(sd_id, idim1, idim2, index, qname, iout)
subroutine dump_integer_vector(sd_id, idims, qname, iout)