module characteristics use common_module implicit none contains subroutine characteristic_eigenmatrix(V8,evL,evR,axis) ! calculate the characteristics values with eigenmatrix ! cf. Powell et al. 1999 JCoPh implicit none real(DP), intent(IN) :: V8(8) ! primitive variables real(DP), dimension(8,8),intent(OUT) :: evL,evR integer,intent(IN) :: axis real(DP) :: rho,rhoi,pre,v3(3),b3(3) real(DP) :: a,cf,cs,a2,ca2,cb2,cf2,cs2,alpf,alps,bet2,bet3,cf2_cs2 real(DP) :: case1,case2,case3,sgnB,vn2,Bn2,Bt2 real(DP) :: rt2,rt2i,rtrho,rtrhoi integer :: axis2,axis3,axv(3),axb(3),rw,cl,kdlt(3),kdlt2(3),kdlt3(3) axis2=mod(axis,3)+1 ; axis3=mod(axis2,3)+1 kdlt=0**abs(axis-(/1,2,3/)) ; kdlt2=0**abs(axis2-(/1,2,3/)) kdlt3=(/1,1,1/)-kdlt-kdlt2 axv=(/Vax(axis),Vax(axis2),Vax(axis3)/) axb=(/Bax(axis),Bax(axis2),Bax(axis3)/) rt2=sqrt(2._DP); rt2i=1._DP/rt2 rho=V8(Sax(1)); rhoi=1._DP/rho; rtrho=sqrt(rho); rtrhoi=1._DP/rtrho v3=(/V8(axv(1)),V8(axv(2)),V8(axv(3))/) b3=(/V8(axb(1)),V8(axb(2)),V8(axb(3))/) vn2=sum(v3*v3); Bn2=sum(b3*b3); Bt2=b3(2)*b3(2)+b3(3)*b3(3) pre=V8(Sax(2)); pre=max(pre,pressure_inf) a2=gamma*pre/rho ; ca2=b3(1)*b3(1)/rho ; cb2=Bn2/rho case1=1._DP-eq0(Bt2)! Bt2=0 (<--> by=bz=0) case2=ge0(a2-cb2)! a>=cb case3=lt0(a2-cb2)! a by=bz=0) case2=ge0(a2-cb2)! a>=cb case3=lt0(a2-cb2)! a