subroutine sweepbc(nleft,nright) C C Impose boundary conditions on ends of 1D sweep arrays C C----------------------------------------------------------------------- C C GLOBALS C include 'global.h' include 'sweep.h' C C LOCALS C integer nleft, nright C C----------------------------------------------------------------------- C C Boundary condition flags : nleft, nright C = 0 : reflecting C = 1 : outflow (zero gradients) C = 2 : fixed inflow (eg, uinflo,pinflo,...) C = 3 : periodic (eg, u(nmin-1) = u(nmax)) C = 5 : your own recipe C if ( nleft .eq. 0 ) then dx (nmin-1) = dx (nmin) dx (nmin-2) = dx (nmin+1) xa (nmin-1) = xa (nmin) - dx(nmin-1) xa (nmin-2) = xa (nmin-1) - dx(nmin-2) rho(nmin-1) = rho(nmin) rho(nmin-2) = rho(nmin+1) u (nmin-1) = -u (nmin) u (nmin-2) = -u (nmin+1) v (nmin-1) = v (nmin) v (nmin-2) = v (nmin+1) w (nmin-1) = w (nmin) w (nmin-2) = w (nmin+1) p (nmin-1) = p (nmin) p (nmin-2) = p (nmin+1) else if ( nleft .eq. 1 ) then dx (nmin-1) = dx (nmin) dx (nmin-2) = dx (nmin) xa (nmin-1) = xa (nmin) - dx(nmin-1) xa (nmin-2) = xa (nmin-1) - dx(nmin-2) rho(nmin-1) = rho(nmin) rho(nmin-2) = rho(nmin) u (nmin-1) = u (nmin) u (nmin-2) = u (nmin) v (nmin-1) = v (nmin) v (nmin-2) = v (nmin) w (nmin-1) = w (nmin) w (nmin-2) = w (nmin) p (nmin-1) = p (nmin) p (nmin-2) = p (nmin) else if ( nleft .eq. 2 ) then dx (nmin-1) = dx (nmin) dx (nmin-2) = dx (nmin) xa (nmin-1) = xa (nmin) - dx(nmin-1) xa (nmin-2) = xa (nmin-1) - dx(nmin-2) rho(nmin-1) = dinflo rho(nmin-2) = dinflo u (nmin-1) = uinflo u (nmin-2) = uinflo v (nmin-1) = vinflo v (nmin-2) = vinflo w (nmin-1) = winflo w (nmin-2) = winflo p (nmin-1) = pinflo p (nmin-2) = pinflo else if ( nleft .eq. 3 ) then dx (nmin-1) = dx (nmax) dx (nmin-2) = dx (nmax-1) xa (nmin-1) = xa (nmin) - dx(nmin-1) xa (nmin-2) = xa (nmin-1) - dx(nmin-2) rho(nmin-1) = rho(nmax) rho(nmin-2) = rho(nmax-1) u (nmin-1) = u (nmax) u (nmin-2) = u (nmax-1) v (nmin-1) = v (nmax) v (nmin-2) = v (nmax-1) w (nmin-1) = w (nmax) w (nmin-2) = w (nmax-1) p (nmin-1) = p (nmax) p (nmin-2) = p (nmax-1) else if ( nleft .eq. 5 ) then dx (nmin-1) = dx (nmin) dx (nmin-2) = dx (nmin) xa (nmin-1) = xa (nmin) - dx(nmin-1) xa (nmin-2) = xa (nmin-1) - dx(nmin-2) rho(nmin-1) = dinflo rho(nmin-2) = dinflo u (nmin-1) = vinflo u (nmin-2) = vinflo v (nmin-1) = winflo v (nmin-2) = winflo w (nmin-1) = uinflo w (nmin-2) = uinflo p (nmin-1) = pinflo p (nmin-2) = pinflo endif C if ( nright .eq. 0 ) then dx (nmax+1) = dx (nmax) dx (nmax+2) = dx (nmax-1) xa (nmax+2) = xa (nmax+1) + dx(nmax+1) rho(nmax+1) = rho(nmax) rho(nmax+2) = rho(nmax-1) u (nmax+1) = -u (nmax) u (nmax+2) = -u (nmax-1) v (nmax+1) = v (nmax) v (nmax+2) = v (nmax-1) w (nmax+1) = w (nmax) w (nmax+2) = w (nmax-1) p (nmax+1) = p (nmax) p (nmax+2) = p (nmax-1) else if ( nright .eq. 1 ) then dx (nmax+1) = dx (nmax) dx (nmax+2) = dx (nmax) xa (nmax+2) = xa (nmax+1) + dx(nmax+1) rho(nmax+1) = rho(nmax) rho(nmax+2) = rho(nmax) u (nmax+1) = u (nmax) u (nmax+2) = u (nmax) v (nmax+1) = v (nmax) v (nmax+2) = v (nmax) w (nmax+1) = w (nmax) w (nmax+2) = w (nmax) p (nmax+1) = p (nmax) p (nmax+2) = p (nmax) else if ( nright .eq. 2 ) then dx (nmax+1) = dx (nmax) dx (nmax+2) = dx (nmax) xa (nmax+2) = xa (nmax+1) + dx(nmax+1) rho(nmax+1) = dinflo rho(nmax+2) = dinflo u (nmax+1) = uinflo u (nmax+2) = uinflo v (nmax+1) = vinflo v (nmax+2) = vinflo w (nmax+1) = winflo w (nmax+2) = winflo p (nmax+1) = pinflo p (nmax+2) = pinflo else if ( nright .eq. 3 ) then dx (nmax+1) = dx (nmin) dx (nmax+2) = dx (nmin+1) xa (nmax+2) = xa (nmax+1) + dx(nmax+1) rho(nmax+1) = rho(nmin) rho(nmax+2) = rho(nmin+1) u (nmax+1) = u (nmin) u (nmax+2) = u (nmin+1) v (nmax+1) = v (nmin) v (nmax+2) = v (nmin+1) w (nmax+1) = w (nmin) w (nmax+2) = w (nmin+1) p (nmax+1) = p (nmin) p (nmax+2) = p (nmin+1) else if ( nright .eq. 5 ) then dx (nmax+1) = dx (nmax) dx (nmax+2) = dx (nmax) xa (nmax+2) = xa (nmax+1) + dx(nmax+1) rho(nmax+1) = dinflo rho(nmax+2) = dinflo u (nmax+1) = vinflo u (nmax+2) = vinflo v (nmax+1) = winflo v (nmax+2) = winflo w (nmax+1) = uinflo w (nmax+2) = uinflo p (nmax+1) = pinflo p (nmax+2) = pinflo endif C return end