4 subroutine upbnd(listbc,val,nvar,naux,mitot,mjtot,
9 implicit double precision (a-h,o-z)
12 dimension val(nvar,mitot,mjtot),listbc(5,maxsp),
19 iaddaux(i,j) = locaux + mcapa-1 + naux*(i-1)
41 locaux = node(storeaux,mptr)
42 levc = node(nestlevel,mptr)
43 area = hxposs(levc)*hyposs(levc)
46 if (uprint)
write(outunit,*)
" upbnding grid ",mptr
49 icrse = listbc(1,ispot)
50 if (icrse.eq.0) go to 99
52 jcrse = listbc(2,ispot)
53 iside = listbc(3,ispot)
57 if (iside .lt. 5)
then
59 elseif (iside .eq. 5)
then
65 iflag =iused(icrse,jcrse)/norm
66 if (mod(iflag,2).eq.1)
then
67 write(6,*)
" *** double flux update CAN happen in upbnd ***"
70 mkid = listbc(4,ispot)
71 kidlst = node(ffluxptr,mkid)
72 lkid = listbc(5,ispot)
75 if (iside .eq. 2 .or. iside .eq. 3 .or. iside .eq. 6)
then
85 write(outunit,101) icrse,jcrse,
86 . (val(ivar,icrse,jcrse),ivar=1,nvar)
87 101
format(
" old ",1x,2i4,4e15.7)
90 if (mcapa .gt. 0)
then
94 sgnm = sgnm / alloc(iaddaux(icrse,jcrse))
98 val(ivar,icrse,jcrse) = val(ivar,icrse,jcrse) +
99 1 sgnm*alloc(kidlst+nvar*(lkid-1)+ivar-1)/area
101 iused(icrse,jcrse) = iused(icrse,jcrse) + norm
105 write(outunit,102) mkid,
106 . (val(ivar,icrse,jcrse),ivar=1,nvar)
107 102
format(
" new ",
"(grid",i3,
")",4e15.7)
subroutine upbnd(listbc, val, nvar, naux, mitot, mjtot, maxsp, mptr)