|
readqinit_geo.f.html |
|
|
Source file: readqinit_geo.f
|
|
Directory: /home/rjl/git/rjleveque/clawpack-4.x/geoclaw/2d/lib
|
|
Converted: Sun May 15 2011 at 19:15:41
using clawcode2html
|
|
This documentation file will
not reflect any later changes in the source file.
|
c=========================================================================
subroutine readqinit(mx,my,dx,dy,xlow,xhi,ylow,yhi,fname)
c=========================================================================
implicit double precision (a-h,o-z)
include "call.i"
include "qinit.i"
character*150 fname
logical foundFile
inquire(file=fname,exist=foundFile)
if (.not. foundFile) then
write(*,*) 'You must provide a file ', fname
stop
endif
write(6,*) ' '
write(6,*) 'Reading qinit data from file ', fname
write(6,*) ' '
write(parmunit,*) ' '
write(parmunit,*) 'Reading qinit data from'
write(parmunit,*) fname
write(parmunit,*) ' '
mpoints=0
mx=0
open(unit=19,
& file=fname,
& status='unknown',form='formatted')
c
c # currently only supports one file type:
c # x,y,z values, one per line in standard order from NW corner to SE
c # z is perturbation from standard depth h,hu,hv set in qinit_geo,
c # if iqinit = 1,2, or 3 respectively.
c # if iqinit = 4, the z column corresponds to the definition of the
c # surface elevation eta. The depth is then set as q(i,j,1)=max(eta-b,0)
read(19,end=20,fmt=*) x0,y0,z0
mpoints=mpoints+1
mx=mx+1
qinitwork(mpoints)=z0
x=x0
do while (.true.)
read(19,end=20,fmt=*) xnew,ynew,znew
mpoints=mpoints+1
qinitwork(mpoints)=znew
if (xnew.gt.x) then
mx=mx + 1
else
mx=1
endif
x=xnew
y=ynew
enddo
20 continue
close(unit=19)
if (mpoints.gt.maxqinitsize) then
write(*,*) 'SETQINIT: not enough workspace'
write(*,*) 'Increase maxqinitsize to', mpoints
write(*,*) 'in qinit.i, then recompile'
Stop
endif
my= mpoints/mx
xf=x
yf=y
dx=(xf-x0)/(mx-1)
dy=-(yf-y0)/(my-1)
c !Changes with new bilinear interp DLG 10/08:
c below changed for new bilinear interpolation of auxiliary data
c values are now noded based, no longer considered cell-centered
c xlow = x0-.5d0*dx
c yhi = y0+.5d0*dy
c xhi = xf+.5d0*dx
c ylow = yf-.5d0*dy
xlow = x0
yhi = y0
xhi = xf
ylow = yf
return
end