• VTF
  • FSI
  • AMROC
  • SFC
  • Motion
  • STLIB
  • Main Page
  • Related Pages
    • combl.f
    • cuser.i
    • init3.f
    • lset3.f
    • Makefile.am
    • physbd3.f
    • saux3.f
    • src3cjburn.f
    • Problem.h
    • ip3euzndrfl.f
    • chk3euznd.f
    • rpn3euzndvlg.f
    • rpt3euznd.f
    • flgout3euznd.f
    • rec3euznd.f
    • flx3euznd.f
    • amr_main.C

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

    c
    c     =====================================================
           subroutine ic(maxmx,maxmy,maxmz,meqn,mbc,mx,my,mz,
         &     x,y,z,dx,dy,dz,q)
    c     =====================================================
    c
    c      Copyright (C) 2003-2007 California Institute of Technology
    c      Ralf Deiterding, ralf@cacr.caltech.edu
    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