vtf-logo

fsi/sfc-amroc/WaterBlastFracture/src/lset3.f

c
c     Copyright (C) 2003-2007 California Institute of Technology
c     Ralf Deiterding, ralf@amroc.net
c
c     # The water shock tube
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)*y(j)+z(k)*z(k))
               phi(i,j,k) = rd-r
 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