c
c Copyright (C) 2003-2007 California Institute of Technology
c Ralf Deiterding, ralf@cacr.caltech.edu
c
c # The water shock tube + plate
c =====================================================
subroutine ls(maxmx,maxmy,maxmz,mbc,mx,my,mz,x,y,z,
& dx,dy,dz,phi,t)
c =====================================================
implicit double precision (a-h,o-z)
c
include "cuser.i"
c
dimension phi(1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+mbc)
dimension x(1-mbc:maxmx+mbc),y(1-mbc:maxmy+mbc),
& z(1-mbc:maxmz+mbc)
c
do 60 k = 1-mbc, mz+mbc
do 60 j = 1-mbc, my+mbc
do 60 i = 1-mbc, mx+mbc
r = dsqrt(y(j)**2+z(k)**2)
if (r.gt.rd) then
if (x(i).ge.0.0d0) then
phi(i,j,k) = rd-r
else
phi(i,j,k) = -dsqrt(x(i)**2+(rd-r)**2)
endif
else
if (x(i).ge.0.0d0.or.phi(i,j,k).ge.0.d0) then
if (dabs(rd-r).lt.dabs(phi(i,j,k)))
& phi(i,j,k) = rd-r
else
if (phi(i,j,k).lt.-1.d3) phi(i,j,k) = x(i)
endif
endif
60 continue
c
return
end
c
c
c # The piston
c =====================================================
subroutine lspiston(maxmx,maxmy,maxmz,mbc,mx,my,mz,x,y,z,
& dx,dy,dz,phi,t)
c =====================================================
implicit double precision (a-h,o-z)
c
include "cuser.i"
c
dimension phi(1-mbc:maxmx+mbc, 1-mbc:maxmy+mbc,
& 1-mbc:maxmz+mbc)
dimension x(1-mbc:maxmx+mbc),y(1-mbc:maxmy+mbc),
& z(1-mbc:maxmz+mbc)
c
do 60 k = 1-mbc, mz+mbc
do 60 j = 1-mbc, my+mbc
do 60 i = 1-mbc, mx+mbc
phi(i,j,k) = xm-x(i)
60 continue
c
return
end
c
c
c Return piston velocities
c =====================================================
subroutine ipvelpiston(meqn,nc,qex,xc,phi,vn,maux,
& auex,dx,time)
c =====================================================
c
implicit none
c
integer mx, my, meqn, maux, nc
double precision qex(meqn,nc), xc(3,nc), phi(nc), vn(3,nc),
& auex(maux,nc), dx(3), time, vnx, vny
c
include "cuser.i"
c
c Local variables
c
integer n
c
do 100 n = 1, nc
auex(1,n) = vm
auex(2,n) = 0.d0
auex(3,n) = 0.d0
100 continue
c
return
end
c