Blockstructured Adaptive Mesh Refinement in object-oriented C++
c
c
c =========================================================
subroutine src(maxmx,maxmy,meqn,mbc,ibx,iby,mx,my,q,
& aux,maux,t,dt,ibnd)
c =========================================================
implicit double precision(a-h,o-z)
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)
c
c # source terms for cylindrical symmetry in 2d Euler equations
c # about x-axis (so y=radius)
c
dimension qstar(4)
common /param/ gamma,gamma1
c
c # 2-stage Runge-Kutta method
c
dt2 = dt/2.d0
press = 0.d0
ndim = 2
do 10 i=1-ibx*ibnd*mbc,mx+ibx*ibnd*mbc
do 10 j=1-iby*ibnd*mbc,my+iby*ibnd*mbc
y = aux(1,i,j)
rho = q(1,i,j)
u = q(2,i,j)/q(1,i,j)
v = q(3,i,j)/q(1,i,j)
press = gamma1*(q(4,i,j) - 0.5d0*rho*(u**2 + v**2))
if (y.eq.0.d0) write(6,*) 'y = 0 in src'
if (rho.eq.0.d0) write(6,*) 'rho = 0 in q'
qstar(1) = q(1,i,j) - dt2*(ndim-1)/y * q(3,i,j)
qstar(2) = q(2,i,j) - dt2*(ndim-1)/y *
& (rho*u*v)
qstar(3) = q(3,i,j) - dt2*(ndim-1)/y *
& (rho*v**2)
qstar(4) = q(4,i,j) - dt2*(ndim-1)/y *
& v*(q(4,i,j) + press)
c
c # second stage
c
rho = qstar(1)
u = qstar(2)/qstar(1)
v = qstar(3)/qstar(1)
press = gamma1*(qstar(4) - 0.5d0*rho*(u**2 + v**2))
if (rho.eq.0.d0) write(6,*) 'rho = 0 in qstar'
q(1,i,j) = q(1,i,j) - dt*(ndim-1)/y * qstar(3)
q(2,i,j) = q(2,i,j) - dt*(ndim-1)/y *
& (rho*u*v)
q(3,i,j) = q(3,i,j) - dt*(ndim-1)/y *
& (rho*v**2)
q(4,i,j) = q(4,i,j) - dt*(ndim-1)/y *
& v*(qstar(4) + press)
10 continue
return
end
Quickstart Users Guide Programmers Reference Installation Examples Download
AMROC Main Home Contactlast update: 06/01/04