|
ginit.f.html |
|
|
Source file: ginit.f
|
|
Directory: /home/rjl/git/rjleveque/clawpack-4.x/amrclaw/2d/lib
|
|
Converted: Sun May 15 2011 at 19:16:14
using clawcode2html
|
|
This documentation file will
not reflect any later changes in the source file.
|
c
c -------------------------------------------------------------
c
subroutine ginit(msave, first, nvar, naux, t0)
c
implicit double precision (a-h,o-z)
logical first
include "call.i"
c ::::::::::::::::::::::::::::: GINIT ::::::::::::::::::::::::
c
c initializes soln on all grids at 'level' by calling qinit
c if first = true, (first call to init), then allocate the
c soln storage area too, else was already allocated.
c
c :::::::::::::::::::::::::::::::::::::::;::::::::::::::::::::
if (msave .eq. 0) go to 99
level = node(nestlevel,msave)
hx = hxposs(level)
hy = hyposs(level)
mptr = msave
10 nx = node(ndihi,mptr) - node(ndilo,mptr) + 1
ny = node(ndjhi,mptr) - node(ndjlo,mptr) + 1
mitot = nx + 2*nghost
mjtot = ny + 2*nghost
corn1 = rnode(cornxlo,mptr)
corn2 = rnode(cornylo,mptr)
if(.not. (first)) go to 20
loc = igetsp(mitot*mjtot*nvar)
node(store1,mptr) = loc
if (naux .gt. 0) then
locaux = igetsp(mitot*mjtot*naux)
maxmx = mitot - 2*nghost
mx = maxmx
maxmy = mjtot - 2*nghost
my = maxmy
call setaux(maxmx,maxmy,nghost,mx,my,corn1,corn2,hx,hy,
& naux,alloc(locaux))
else
locaux = 1
endif
node(storeaux,mptr) = locaux
if (level .lt. mxnest) then
loc2 = igetsp(mitot*mjtot*nvar)
node(store2,mptr) = loc2
endif
rnode(timemult, mptr) = t0
go to 30
20 continue
c
c if 2nd time through, put initial values in store2 so finer grids
c can be advanced with interpolation of their boundary values.
c new time soln should still be in location store1.
c
loc = node(store2,mptr)
locaux = node(storeaux,mptr)
c
30 continue
maxmx = mitot - 2*nghost
mx = maxmx
maxmy = mjtot - 2*nghost
my = maxmy
call qinit(maxmx,maxmy,nvar,nghost,mx,my,corn1,corn2,hx,hy,
& alloc(loc),naux,alloc(locaux))
c call qinit(alloc(loc),nvar,mitot,mjtot,
c 1 corn1-nghost*hx,corn2-nghost*hy,hx,hy,
c 2 alloc(locaux),naux)
c
mptr = node(levelptr, mptr)
if (mptr .ne. 0) go to 10
c
c
99 return
end