rpt2acvq.f.html | ![]() |
Source file: rpt2acvq.f | |
Directory: /home/rjl/git/rjleveque/clawpack-4.x/book/chap23/acoustics | |
Converted: Tue Jul 26 2011 at 12:58:58 using clawcode2html | |
This documentation file will not reflect any later changes in the source file. |
c c c ===================================================== subroutine rpt2(ixy,maxm,meqn,mwaves,mbc,mx,ql,qr, & aux1,aux2,aux3,imp,asdq,bmasdq,bpasdq) c ===================================================== implicit double precision (a-h,o-z) c c # Riemann solver in the transverse direction for the 2d acoustics c # equations on a quadrilateral grid. c c # Split asdq (= A^* \Delta q, where * = + or -) c # into down-going flux difference bmasdqb (= B^- A^* \Delta q) c # and up-going flux difference bpasdq (= B^+ A^* \Delta q) c c dimension ql(1-mbc:maxm+mbc, meqn) dimension qr(1-mbc:maxm+mbc, meqn) dimension asdq(1-mbc:maxm+mbc, meqn) dimension bmasdq(1-mbc:maxm+mbc, meqn) dimension bpasdq(1-mbc:maxm+mbc, meqn) dimension aux1(1-mbc:maxm+mbc, 9) dimension aux2(1-mbc:maxm+mbc, 9) dimension aux3(1-mbc:maxm+mbc, 9) c c if (ixy.eq.1) then ilenrat = 3 ixtran = 4 iytran = 5 else ilenrat = 6 ixtran = 1 iytran = 2 endif c c do 20 i=2-mbc,mx+mbc c # impedance and sound speed in adjacent cells: zim = aux1(i,8) zi = aux2(i,8) zip = aux3(i,8) cim = aux1(i,9) ci = aux2(i,9) cip = aux3(i,9) c c # pressure component of asdq: c asdqp = asdq(i,1) c c c # up-going: c ----------- c xtran = aux3(i,ixtran) ytran = aux3(i,iytran) c c # transverse velocity component of asdq: asdqt = xtran*asdq(i,2) + ytran*asdq(i,3) b2 = (asdqp + zi*asdqt) / (zi+zip) bpasdqp = b2*zip bpasdqt = b2 c bpasdq(i,1) = cip * bpasdqp bpasdq(i,2) = cip * xtran*bpasdqt bpasdq(i,3) = cip * ytran*bpasdqt c c c # down-going: c ------------- c xtran = aux2(i,ixtran) ytran = aux2(i,iytran) c c # transverse velocity component of asdq: asdqt = xtran*asdq(i,2) + ytran*asdq(i,3) b1 = (-asdqp + zi*asdqt) / (zim+zi) bmasdqp = -b1*zim bmasdqt = b1 c bmasdq(i,1) = -cim * bmasdqp bmasdq(i,2) = -cim * xtran*bmasdqt bmasdq(i,3) = -cim * ytran*bmasdqt c c # multiply by ratio of lengths: do m=1,3 bmasdq(i,m) = bmasdq(i,m)*aux2(i,9-ilenrat) bpasdq(i,m) = bpasdq(i,m)*aux3(i,9-ilenrat) enddo 20 continue return end