4 subroutine update (level, nvar, naux)
7 implicit double precision (a-h,o-z)
10 integer listgrids(numgrids(level))
19 iadd(ivar,i,j) = loc + ivar-1 + nvar*((j-1)*mitot+i-1)
20 iaddf(ivar,i,j) = locf + ivar-1 + nvar*((j-1)*mi+i-1)
21 iaddfaux(i,j) = locfaux + mcapa-1 + naux*((j-1)*mi + (i-1))
22 iaddcaux(i,j) = loccaux + mcapa-1 + naux*((j-1)*mitot+(i-1))
35 if (uprint)
write(outunit,100) lget
36 100
format(19h updating level ,i5)
59 do ng = 1, numgrids(lget)
61 levst = liststart(lget)
62 mptr = listofgrids(levst + ng - 1)
63 loc = node(store1,mptr)
64 loccaux = node(storeaux,mptr)
65 nx = node(ndihi,mptr) - node(ndilo,mptr) + 1
66 ny = node(ndjhi,mptr) - node(ndjlo,mptr) + 1
69 ilo = node(ndilo,mptr)
70 jlo = node(ndjlo,mptr)
71 ihi = node(ndihi,mptr)
72 jhi = node(ndjhi,mptr)
74 if (node(cfluxptr,mptr) .eq. 0) go to 25
76 call
upbnd(alloc(node(cfluxptr,mptr)),alloc(loc),nvar,
77 1 naux,mitot,mjtot,listsp(lget),mptr)
83 25 mkid = lstart(lget+1)
84 30
if (mkid .eq. 0) go to 80
85 iclo = node(ndilo,mkid)/intratx(lget)
86 jclo = node(ndjlo,mkid)/intraty(lget)
87 ichi = node(ndihi,mkid)/intratx(lget)
88 jchi = node(ndjhi,mkid)/intraty(lget)
90 mi = node(ndihi,mkid)-node(ndilo,mkid) + 1 + 2*nghost
91 mj = node(ndjhi,mkid)-node(ndjlo,mkid) + 1 + 2*nghost
92 locf = node(store1,mkid)
93 locfaux = node(storeaux,mkid)
102 if (iplo .gt. iphi .or. jplo .gt. jphi) go to 75
106 iff = iplo*intratx(lget) - node(ndilo,mkid) + nghost + 1
107 jff = jplo*intraty(lget) - node(ndjlo,mkid) + nghost + 1
108 totrat = intratx(lget) * intraty(lget)
110 do 71 i = iplo-ilo+nghost+1, iphi-ilo+nghost+1
111 do 70 j = jplo-jlo+nghost+1, jphi-jlo+nghost+1
113 write(outunit,101) i,j,mptr,iff,jff,mkid
114 101
format(
' updating pt. ',2i4,
' of grid ',i3,
' using ',2i4,
116 write(outunit,102)(alloc(
iadd(ivar,i,j)),ivar=1,nvar)
117 102
format(
' old vals: ',4e12.4)
124 35 alloc(
iadd(ivar,i,j)) = 0.d0
126 if (mcapa .eq. 0)
then
127 do 50 jco = 1, intraty(lget)
128 do 50 ico = 1, intratx(lget)
130 alloc(
iadd(ivar,i,j))= alloc(
iadd(ivar,i,j)) +
131 1 alloc(iaddf(ivar,iff+ico-1,jff+jco-1))
135 60 alloc(
iadd(ivar,i,j)) = alloc(
iadd(ivar,i,j))/totrat
139 do 51 jco = 1, intraty(lget)
140 do 51 ico = 1, intratx(lget)
141 capa = alloc(iaddfaux(iff+ico-1,jff+jco-1))
143 alloc(
iadd(ivar,i,j))= alloc(
iadd(ivar,i,j)) +
144 1 alloc(iaddf(ivar,iff+ico-1,jff+jco-1))*capa
148 61 alloc(
iadd(ivar,i,j)) = alloc(
iadd(ivar,i,j))/
149 1 (totrat*alloc(iaddcaux(i,j)))
152 if (uprint)
write(outunit,103)(alloc(
iadd(ivar,i,j)),
154 103
format(
' new vals: ',4e12.4)
156 jff = jff + intraty(lget)
158 iff = iff + intratx(lget)
159 jff = jplo*intraty(lget) - node(ndjlo,mkid) + nghost + 1
162 75 mkid = node(levelptr,mkid)
subroutine upbnd(listbc, val, nvar, naux, mitot, mjtot, maxsp, mptr)
integer pure function iadd(ivar, i, j)
subroutine update(level, nvar, naux)