|
domup.f.html |
|
|
Source file: domup.f
|
|
Directory: /home/rjl/git/rjleveque/clawpack-4.x/amrclaw/2d/lib
|
|
Converted: Sun May 15 2011 at 19:16:13
using clawcode2html
|
|
This documentation file will
not reflect any later changes in the source file.
|
c
c ----------------------------------------------------
c
subroutine domup(iflags2,iflags,ibase,jbase,isize,jsize,lev)
implicit double precision (a-h, o-z)
include "call.i"
integer*1 iflags2(0:isize+1,0:jsize+1)
integer*1 iflags (0:ibase+1,0:jbase+1)
c
c ::::::::::::::::::::::::::: DOMUP :::::::::::::::::::::
c
c domain flags are in iflags. copy into iflags2, allowing
c for change of level and dimension
c
c :::::::::::::::::::::::::::::::::::::::::::::::::::::::
if (dprint) then
write(outunit,*)" from domup: domflags (before expansion)"
do 5 jj = 1, jbase
j = jbase + 1 - jj
write(outunit,100)(iflags(i,j),i=1,ibase)
5 continue
endif
do 10 j = 0, jsize+1
do 10 i = 0, isize+1
iflags2(i,j) = 0
10 continue
do 20 j = 1, jbase
do 20 i = 1, ibase
ifine = (i-1) * intratx(lev)
jfine = (j-1) * intraty(lev)
do 25 mj = 1, intraty(lev)
do 25 mi = 1, intratx(lev)
iflags2(ifine+mi,jfine+mj) = iflags(i,j)
25 continue
20 continue
c
c take care of periodicity again or if border of domain touches a
c physical boundary then set domain in ghost cell as well
c
if (xperdom) then
do 35 j = 0, jsize+1
iflags2(0,j) = iflags2(isize,j)
iflags2(isize+1,j) = iflags2(1,j)
35 continue
else
do 55 j = 1, jsize
if (iflags2(1,j) .eq. 1) iflags2(0,j) = 1
if (iflags2(isize,j) .eq. 1) iflags2(isize+1,j) = 1
55 continue
endif
if (yperdom) then
do 45 i = 0, isize+1
iflags2(i,0) = iflags2(i,jsize)
iflags2(i,jsize+1) = iflags2(i,1)
45 continue
else if (spheredom) then
do 46 i = 0, isize+1
iflags2(i,0) = iflags2(isize+1-i,1)
iflags2(i,jsize+1) = iflags2(isize+1-i,jsize)
46 continue
else
do 65 i = 1, isize
if (iflags2(i,1) .eq. 1) iflags2(i,0) = 1
if (iflags2(i,jsize) .eq. 1) iflags2(i,jsize+1) = 1
65 continue
endif
c
c the 4 corners
c
if (iflags2(0,1)+iflags2(1,0) .eq. 2) iflags2(0,0)=1
if (iflags2(isize,0)+iflags2(isize+1,1) .eq. 2)
. iflags2(isize+1,0)=1
if (iflags2(isize,jsize+1)+iflags2(isize+1,jsize) .eq. 2)
. iflags2(isize+1,jsize+1)=1
if (iflags2(0,jsize)+iflags2(1,jsize+1) .eq. 2)
. iflags2(0,jsize+1)=1
if (dprint) then
write(outunit,*)" from domup: domflags (after expansion)"
do 70 jj = 1, jsize
j = jsize + 1 - jj
write(outunit,100)(iflags2(i,j),i=1,isize)
100 format(80i1)
70 continue
endif
return
end