|
|
qinit.f.html
| |
|
Source file: qinit.f
|
|
Directory: /var/www/html/clawpack/links/shockvacuum10/shockvacuum
|
|
Converted: Mon Aug 16 2010 at 14:13:31
using clawcode2html
|
|
This documentation file will
not reflect any later changes in the source file.
|
c
c
c =========================================================
subroutine qinit(maxmx,meqn,mbc,mx,xlower,dx,q,maux,aux)
c =========================================================
c
c # Set initial conditions for q as a perturbation of the
c # steady state solution evaluated pointwise
c
c
implicit double precision (a-h,o-z)
dimension q(1-mbc:maxmx+mbc, meqn)
dimension aux(1-mbc:maxmx+mbc, *)
double precision amp, center, width, goverc0, grav
double precision npoly, nstar
common /ceos/ grav, gamma, gamma1, sK, npoly, nstar, Crho, ieos
c
c
c # Parameters for perturbation:
amp = 10.d0
center = -11.d0
width = 0.3d0
write(6,*) '==========='
write(6,*) 'ieos = ',ieos
write(6,*) 'grav = ',grav
write(6,*) 'npoly = ',npoly
write(6,*) 'gamma = ',gamma
write(6,*) 'sK = ',sK
write(6,*) 'nstar = ',nstar
write(6,*) 'Crho = ',Crho
write(6,*) '==========='
do 150 i=mx,1,-1
xc = xlower + (i-0.5d0)*dx
c old version used this:
c q(i,1) = (-grav*xc / (npoly*gamma*sK))**npoly
q(i,1) = Crho*(-xc)**nstar
c # add perturbations, but only where exp doesn't underflow:
qexp = -(xc-center)**2/width**2
if (qexp.gt.-50.d0) then
q(i,1) = q(i,1) + amp*exp(qexp)
endif
q(i,2) = 0.d0
qexp = -(xc-center-1.d0)**2/width**2
if (qexp.gt.-50.d0) then
q(i,2) = q(i,2) + 3.d0*amp*exp(qexp)
endif
c # old version:
c q(i,2) = 3*amp*exp(-(xc-center-1.0)**2/width**2)
c # isentropic (old version used this):
c pressure = sK * q(i,1)**gamma
c # general stratified:
pressure = grav/(nstar+1.d0)*Crho * (-xc)**(nstar+1.d0)
q(i,3) = pressure / gamma1 +
& 0.5d0*q(i,2)**2/q(i,1)
c
150 continue
c
return
end