vtf-logo

fsi/sfc-amroc/TubeCJBurnFlaps/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
               q(3,i,j,k) = 0.d0
               q(4,i,j,k) = 0.d0
               rd = dsqrt(x(i)**2+y(j)**2)
               if (z(k) .lt. sloc) then
                  q(1,i,j,k) = (1.d0-Yl)*rhol
                  q(2,i,j,k) = Yl*rhol
                  q(5,i,j,k) = ul*rhol
                  q(6,i,J,k) = pl/gamma1 + Yl*rhol*q0 + 
     &                 0.5d0*rhol*ul**2
               else 
                  q(1,i,j,k) = (1.d0-Yr)*rhor
                  q(2,i,j,k) = Yr*rhor
                  q(5,i,j,k) = ur*rhor
                  q(6,i,j,k) = pr/gamma1 + Yr*rhor*q0 + 
     &                 0.5d0*rhor*ur**2            
               endif
               if (rd.gt.rf) then
                  q(1,i,j,k) = (1.d0-Yo)*rhoo
                  q(2,i,j,k) = Yo*rhoo
                  q(5,i,j,k) = uo*rhoo
                  q(6,i,J,k) = po/gamma1 + 0.5d0*rhoo*uo**2
               else
                  call tintp(z(k),q(1,i,j,k),meqn)
               endif
 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)
            Y = (1.d0-alpha)*qtab(4,i) + alpha*qtab(4,i+1)
            q(1) = (1.d0-Y)*rho
            q(2) = Y*rho
            q(5) = u*rho
            q(6) = p/gamma1 + Y*rho*q0 + 0.5d0*rho*u**2 
         endif
      enddo
c
 100  return
      end