domprep.f.html | ![]() |
Source file: domprep.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 domprep(domflags,lbase,ibase,jbase) implicit double precision (a-h, o-z) include "call.i" integer*1 domflags(0:ibase+1,0:jbase+1) c c ::::::::::::::::::::::::::: PREPDOM ::::::::::::::::::::: c c prepare 2 dimensional array of domain for proper nesting c c ::::::::::::::::::::::::::::::::::::::::::::::::::::::: do 10 j = 0, jbase+1 do 10 i = 0, ibase+1 domflags(i,j) = 0 10 continue mptr = lstart(lbase) 15 continue c domain flags appears to be 1 based indexing, so 0 a ghost cell. c should change it to be 0 based, like grids, so border is at -1. do 20 j = node(ndjlo,mptr) + 1, node(ndjhi,mptr) + 1 do 20 i = node(ndilo,mptr) + 1, node(ndihi,mptr) + 1 domflags(i,j) = 1 20 continue mptr = node(levelptr, mptr) if (mptr .ne. 0) go to 15 c c take care of periodic domains or if border of domain touches a c physical boundary then set domain in ghost cell as well c if (xperdom) then do 25 j = 0, jbase+1 domflags(0,j) = domflags(ibase,j) domflags(ibase+1,j) = domflags(1,j) 25 continue else do 65 j = 1, jbase domflags(0,j) = domflags(1,j) domflags(ibase+1,j) = domflags(ibase,j) 65 continue endif if (yperdom) then do 35 i = 0, ibase+1 domflags(i,0) = domflags(i,jbase) domflags(i,jbase+1) = domflags(i,1) 35 continue else if (spheredom) then do 36 i = 0, ibase+1 domflags(i,0) = domflags(ibase+1-i,1) domflags(i,jbase+1) = domflags(ibase+1-i,jbase) 36 continue else do 55 i = 1, ibase domflags(i,0) = domflags(i,1) domflags(i,jbase+1) = domflags(i,jbase) 55 continue endif c c the 4 corners c if (domflags(0,1)+domflags(1,0) .eq. 2) domflags(0,0)=1 if (domflags(ibase,0)+domflags(ibase+1,1) .eq. 2) . domflags(ibase+1,0)=1 if (domflags(ibase,jbase+1)+domflags(ibase+1,jbase) .eq. 2) . domflags(ibase+1,jbase+1)=1 if (domflags(0,jbase)+domflags(1,jbase+1) .eq. 2) . domflags(0,jbase+1)=1 if (dprint) then write(outunit,*)" from domprep: domflags at level ", lbase do 40 jj = 1, jbase j = jbase + 1 - jj write(outunit,100)(domflags(i,j),i=1,ibase) 100 format(80i1) 40 continue endif return end