c c =================================================================== subroutine fmod1(maxmx,mvar,meqn,maux,mbc,mx,q,ql,qr, & aux,dx,dt,method,cfl,fm,fp,q1,aux1, & amdq,apdq) c =================================================================== c c # This function applies Larrouturou's positivity fix to the fluctuations c # of the two species of ZND-Euler equations. c c # Copyright (C) 2002 Ralf Deiterding c # Brandenburgische Universitaet Cottbus c c # Copyright (C) 2003-2007 California Institute of Technology c # Ralf Deiterding, ralf@cacr.caltech.edu c implicit double precision (a-h,o-z) dimension q(mvar, 1-mbc:maxmx+mbc) dimension ql(mvar, 1-mbc:maxmx+mbc) dimension qr(mvar, 1-mbc:maxmx+mbc) dimension fm(mvar, 1-mbc:maxmx+mbc) dimension fp(mvar, 1-mbc:maxmx+mbc) dimension aux(maux, 1-mbc:maxmx+mbc) dimension q1(1-mbc:maxmx+mbc, meqn) dimension aux1(1-mbc:maxmx+mbc, maux) dimension amdq(1-mbc:maxmx+mbc, meqn) dimension apdq(1-mbc:maxmx+mbc, meqn) dimension method(7) common /rpnflx/ mrpnflx c if (mrpnflx.ne.0) then write(6,*) '*** Riemann solver returns fluxes.' write(6,*) '*** Correction is implemented for fluctuations.' write(6,*) '*** Set method(1)=0.' stop endif c mu = 3 do 100 i=2-mbc,mx+mbc c c # Apply the fix to the Godunov-fluxes of the RECONSTRUCTED values c fmrho = fm(1,i)+fm(2,i)+q(mu,i-1) fprho = fp(1,i)+fp(2,i)+q(mu,i ) rhol = qr(1,i-1)+qr(2,i-1) rhor = ql(1,i )+ql(2,i ) do 110 m=1,2 if (fmrho.gt.0.d0) then Y = qr(m,i-1)/rhol else Y = ql(m,i )/rhor endif fm(m,i) = Y*fmrho fp(m,i) = Y*fprho 110 continue c c # Now subtract flux of the original cell values to obtain the waves c rhol = q(1,i-1)+q(2,i-1) rhor = q(1,i )+q(2,i ) do 120 m=1,2 fm(m,i) = fm(m,i) - q(m,i-1)/rhol*q(mu,i-1) fp(m,i) = fp(m,i) - q(m,i )/rhor*q(mu,i ) 120 continue 100 continue c return end