vtf-logo

fsi/sfc-amroc/WaterBlastPlastic/src/init3.f

c
c     Copyright (C) 2003-2007 California Institute of Technology
c     Ralf Deiterding, ralf@amroc.net
c
c     =====================================================
       subroutine ic(maxmx,maxmy,maxmz,meqn,mbc,mx,my,mz,
     &     x,y,z,dx,dy,dz,q)
c     =====================================================
c
       implicit double precision (a-h,o-z)
c
       include  "cuser.i"
c
       dimension q(meqn, 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, mz
          do 60 j = 1, my
             do 60 i = 1, mx 
                f = 0.5d0*(dtanh(500.d0*(x(i)-as))+1.d0)
                rho = (1.d0-f)*rhoo+f*rhoi
                u   = (1.d0-f)*uo+f*ui
                p   = (1.d0-f)*po+f*pi
                gam = (1.d0-f)*g(2)+f*g(1)
                pin = (1.d0-f)*pinf(2)+f*pinf(1)

                q(1,i,j,k) = rho
                q(2,i,j,k) = u*rho
                q(3,i,j,k) = 0.d0
                q(4,i,j,k) = 0.d0
                q(6,i,j,k) = 1.d0/(gam-1.d0)
                q(7,i,j,k) = gam*pin/(gam-1.d0)
                q(5,i,j,k) = p*q(6,i,j,k)+q(7,i,j,k)+ 
     &               0.5d0*q(2,i,j,k)**2/q(1,i,j,k)
                call tintp(x(i),q(1,i,j,k),meqn)
 60    continue
c         
       return
       end
c
c  **************************************************************
c
      subroutine tintp(x,q,meqn)
      implicit double precision(a-h,o-z)
c
      include  "cuser.i"
      dimension q(meqn)
c
      do i = 1, Nread-1
         if (x.ge.xtab(i).and.x.le.xtab(i+1)) then
            alpha = (x-xtab(i))/(xtab(i+1)-xtab(i))
            rho = (1.d0-alpha)*qtab(1,i) + alpha*qtab(1,i+1)
            u = (1.d0-alpha)*qtab(2,i) + alpha*qtab(2,i+1)
            p = (1.d0-alpha)*qtab(3,i) + alpha*qtab(3,i+1)
            q(1) = rho
            q(2) = u*rho
            q(5) = p*q(6) + q(7) + 0.5d0*rho*u**2 
         endif
      enddo
c
      return
      end