vtf-logo

clawpack/applications/euler_znd/2d/Carbuncle/src/setaux3.f

c
c     Copyright (C) 2002 Ralf Deiterding
c     Brandenburgische Universitaet Cottbus
c
c     =====================================================
      subroutine setaux(maxmx,maxmy,meqn,mbc,ibx,iby,mx,my,q,
     &     aux,maux,xc,yc,dx,dy,t,dt)
c     =====================================================
c
      implicit double precision (a-h, o-z)
      include  "cuser.i"
c      
      dimension q(meqn, 1-ibx*mbc:maxmx+ibx*mbc, 
     &     1-iby*mbc:maxmy+iby*mbc)
      dimension aux(maux, 1-ibx*mbc:maxmx+ibx*mbc, 
     &     1-iby*mbc:maxmy+iby*mbc)
      dimension u(3), ul(3)
c
      do 10 j = 1-iby*mbc, my+iby*mbc
         do 10 i = 1-ibx*mbc, mx+ibx*mbc
            call eigenval(meqn,q(1,i,j),u)
c     
            if (i.gt.1-ibx*mbc) then
               call eigenval(meqn,q(1,i-1,j),ul)
               aux(3,i,j) = dmax1(dmax1(dabs(u(2)-u(1)-(ul(2)-ul(1))),
     &                                  dabs(u(2)-ul(2))),
     &                                  dabs(u(2)+u(1)-(ul(2)+ul(1))))
            endif
c
            if (j.gt.1-iby*mbc) then
               call eigenval(meqn,q(1,i,j-1),ul)
               aux(4,i,j) = dmax1(dmax1(dabs(u(3)-u(1)-(ul(3)-ul(1))),
     &                                  dabs(u(3)-ul(3))),
     &                                  dabs(u(3)+u(1)-(ul(3)+ul(1))))
            endif
 10   continue
c
      do 20 j = 2-iby*mbc, my+iby*mbc
         do 20 i = 2-ibx*mbc, mx+ibx*mbc
            aux(1,i,j) = dmax1(dmax1(aux(3,i,j),aux(4,i  ,j  )),
     &                                          aux(4,i-1,j  ))
            if (j.lt.my+iby*mbc) 
     &           aux(1,i,j) = dmax1(dmax1(aux(1,i,j),aux(4,i  ,j+1)),
     &                                               aux(4,i-1,j+1))
c
            aux(2,i,j) = dmax1(dmax1(aux(4,i,j),aux(3,i  ,j  )),
     &                                          aux(3,i  ,j-1))
            if (i.lt.mx+ibx*mbc) 
     &           aux(2,i,j) = dmax1(dmax1(aux(2,i,j),aux(3,i+1,j  )),
     &                                               aux(3,i+1,j-1))
            write (6,*) i,j,aux(1,i,j),aux(2,i,j)
 20   continue
c
      return
      end
c
c     =====================================================
      subroutine eigenval(meqn,q,ul)
c     =====================================================
c
      implicit double precision (a-h, o-z)
      include  "cuser.i"
c      
      dimension q(meqn), ul(3)
c
      p = gamma1*(q(4) - 0.5d0*(q(2)**2 + q(3)**2)/q(1))
      ul(1) = dsqrt(gamma*p/q(1))
      ul(2) = q(2)/q(1)
      ul(3) = q(3)/q(1)
c
      return
      end
c