Characteristics of the fluid equations

(* matrix A of partial derivatives of fluxes {ρ v, ρ (v^2) + p, ρ ε v + p v} with respect to variables {ρ, w ≡ ρ v, e ≡ ρ ε} *)
Clear[A];
A=FullSimplify[((∂_({{ρ,w,e}}))({ρ v,ρ (v^2)+p,ρ ε v+p v}//.{v->(w/ρ),ε->(e/ρ),p->(γ-1)ρ(ε-(1/2) (v^2))}))//.{w->ρ v,e->ρ ε,ε->(1/2)(v^2)+(1/(γ(γ-1)))(c^2)}];
A//MatrixForm

(* diagonal matrix Λ of eigenvalues of A *)
Λ=DiagonalMatrix[Eigenvalues[A]];
Λ//MatrixForm

(* matrix P eigenvectors of A, scaled to our preference; taking the transpose means that the eigenvectors are the columns, not rows, of P *)
P=Simplify[((({(1/2)(v^2),(1/2)(v^2)+(1/(γ-1))(c^2)-c v,(1/2)(v^2)+(1/(γ-1))(c^2)+c v}Eigenvectors[A]))^\[Transpose])];
(* eigenvectors expressed in terms of enthalpy h ≡ ε + (p/ρ) *)
P/.(1/2)(v^2)+(1/(γ-1))(c^2)->h//MatrixForm

(* check that A = ((PΛP)^(-1)) *)
Simplify[A-P.Λ.Inverse[P]]//MatrixForm

(* (P^(-1))(d/dt)(({{ρ}, {ρ v}, {ρ ε}})) along characteristics *)
Simplify[((Inverse[P].((∂_t)((({{ρ}, {ρ v}, {ρ ε}}))/.{ρ->ρ[t],v->v[t],ε->(1/2)((v[t])^2)+(1/(γ(γ-1)))((c[t])^2)})))-(ρ/(2c))((∂_t)((({{0}, {-v+(2/(γ-1))c}, {v+(2/(γ-1))c}}))/.{v->v[t],c->c[t]})-c(({{2((γ-1)/γ)}, {(1/γ)}, {(1/γ)}}))(∂_t)(s/.{s->Log[(((c[t])^(2/(γ-1)))/(ρ[t]))]})))/.{ρ[t]->ρ,v[t]->v,c[t]->c}]//MatrixForm

Transform 2nd order linear PDE from t, x to τ, ξ

Collect[(a(∂_(t,t))u[τ[t,x],ξ[t,x]]+2b(∂_(t,x))u[τ[t,x],ξ[t,x]]+c(∂_(x,x))u[τ[t,x],ξ[t,x]]==f),{Derivative[2,0][u][τ[t,x],ξ[t,x]],Derivative[1,1][u][τ[t,x],ξ[t,x]],Derivative[0,2][u][τ[t,x],ξ[t,x]],Derivative[1,0][u][τ[t,x],ξ[t,x]],Derivative[0,1][u][τ[t,x],ξ[t,x]]}]/.func__[t,x]->func/.func__[τ,ξ]->func