c
c
c =========================================================
       subroutine qinit(maxmx,meqn,mbc,mx,xlower,dx,q,maux,aux)
c =========================================================
c
c     # Set initial conditions for q.
c     # Pulse in pressure, zero velocity
c
c
      implicit double precision (a-h,o-z)
      dimension q(1-mbc:maxmx+mbc, meqn)
      dimension aux(1-mbc:maxmx+mbc, *)
      common /cqinit/ beta,ic
c
c
      do 150 i=1,mx
         xcell = xlower + (i-0.5d0)*dx

         go to (10,20,30) ic


   10    continue
c        # half ellipse:
         if (xcell.gt.-4d0 .and. xcell.lt.-2d0) then
             q(i,1) = dsqrt(1.d0 - (xcell+3.d0)**2)
            else
             q(i,1) = 0.d0
            endif
         q(i,2) = q(i,1)
         go to 150

   20    continue
c        # single discontinuity:
         if (xcell .lt. -2.d0) then
             q(i,1) = 1.d0
            else
             q(i,1) = 0.d0
            endif
         q(i,2) = q(i,1)
         go to 150

   30    continue
c        # Gaussian and square pulse:
         q(i,1) = dexp(-beta*(xcell+2.0d0)**2)  
         if (dabs(q(i,1)) .lt. 1d-30) q(i,1) = 0.d0
         if (xcell.gt.-4.d0 .and. xcell.lt.-3.d0) then
            q(i,1) = q(i,1) + 0.5d0
            endif
         q(i,2) = q(i,1)
         go to 150

  150    continue
c
      return
      end
