fluxad.f.html | |
Source file: fluxad.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 fluxad(xfluxm,xfluxp,yfluxm,yfluxp, 1 svdflx,mptr,mitot,mjtot, 2 nvar,lenbc,lratiox,lratioy,ng,dtf,dx,dy) c implicit double precision (a-h,o-z) include "call.i" c :::::::::::::::::::: FLUXAD :::::::::::::::::::::::::::::::::: c save fine grid fluxes at the border of the grid, for fixing c up the adjacent coarse cells. at each edge of the grid, only c save the plus or minus fluxes, as necessary. For ex., on c left edge of fine grid, it is the minus xfluxes that modify the c coarse cell. c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: dimension xfluxm(mitot,mjtot,nvar), yfluxm(mitot,mjtot,nvar) dimension xfluxp(mitot,mjtot,nvar), yfluxp(mitot,mjtot,nvar) dimension svdflx(nvar,lenbc) nx = mitot-2*ng ny = mjtot-2*ng nyc = ny/lratioy nxc = nx/lratiox c ::::: left side saved first lind = 0 do 100 j=1,nyc lind = lind + 1 jfine = (j-1)*lratioy + ng do 110 ivar = 1, nvar do 120 l=1,lratioy svdflx(ivar,lind) = svdflx(ivar,lind) + 1 xfluxm(ng+1,jfine+l,ivar)*dtf*dy c write(dbugunit,900)lind,xfluxm(1,jfine+l,ivar), c . xfluxp(1,jfine+l,ivar) 900 format(' lind ', i4,' m & p ',2e15.7,' svd ',e15.7) 120 continue 110 continue 100 continue c ::::: top side c write(dbugunit,*)" saving top side " do 200 i=1,nxc lind = lind + 1 ifine = (i-1)*lratiox + ng do 210 ivar = 1, nvar do 220 l=1,lratiox svdflx(ivar,lind) = svdflx(ivar,lind) + 1 yfluxp(ifine+l,mjtot-ng+1,ivar)*dtf*dx c write(dbugunit,900)lind,yfluxm(ifine+l,mjtot-ng+1, c . ivar),yfluxp(ifine+l,mjtot-ng+1,ivar), c . svdflx(ivar,lind) 220 continue 210 continue 200 continue c ::::: right side do 300 j=1,nyc lind = lind + 1 jfine = (j-1)*lratioy + ng do 310 ivar = 1, nvar do 320 l=1,lratioy svdflx(ivar,lind) = svdflx(ivar,lind) + 1 xfluxp(mitot-ng+1,jfine+l,ivar)*dtf*dy c write(dbugunit,900)lind,xfluxm(mitot-ng+1,jfine+l, c ivar),xfluxp(mitot-ng+1,jfine+l,ivar) 320 continue 310 continue 300 continue c ::::: bottom side c write(dbugunit,*)" saving bottom side " do 400 i=1,nxc lind = lind + 1 ifine = (i-1)*lratiox + ng do 410 ivar = 1, nvar do 420 l=1,lratiox svdflx(ivar,lind) = svdflx(ivar,lind) + 1 yfluxm(ifine+l,ng+1,ivar)*dtf*dx c write(dbugunit,900)lind,yfluxm(ifine+l,ng+1,ivar), c . yfluxp(ifine+l,ng+1,ivar),svdflx(ivar,lind) 420 continue 410 continue 400 continue return end