Conserved RiemannSolver(const Primitive *Pl, const Primitive *Pr, int dimension) { Conserved Ul = PrimToCons(Pl); Conserved Ur = PrimToCons(Pr); Conserved Fl = FluxFunction(Pl, dimension); Conserved Fr = FluxFunction(Pr, dimension); double lamL[5]={0,0,0,0,0}, lamR[5]={0,0,0,0,0}; Eigenvalues(Pl, dimension, lamL); Eigenvalues(Pr, dimension, lamR); const double am = minval3(lamL[0], lamR[0], 0.0); // left going wave speed const double ap = maxval3(lamL[4], lamR[4], 0.0); // right MaxWavespeed = maxval3(fabs(ap), fabs(am), MaxWavespeed); Conserved F; F.D = (ap*Fl.D - am*Fr.D + ap*am*(Ur.D - Ul.D )) / (ap - am); F.tau = (ap*Fl.tau - am*Fr.tau + ap*am*(Ur.tau - Ul.tau)) / (ap - am); F.Sx = (ap*Fl.Sx - am*Fr.Sx + ap*am*(Ur.Sx - Ul.Sx )) / (ap - am); F.Sy = (ap*Fl.Sy - am*Fr.Sy + ap*am*(Ur.Sy - Ul.Sy )) / (ap - am); F.Sz = (ap*Fl.Sz - am*Fr.Sz + ap*am*(Ur.Sz - Ul.Sz )) / (ap - am); return F; }
int Eigenvectors(Ttensor t, Tvec vecs[]) { tg = &t; double vals[3]; int fnd = Eigenvalues(t, vals); for (int i=0; i<fnd; i++) Gauss(t - ID*vals[i], NULL_COOR, vecs[i]); return fnd; }
//##################################################################### // Function Print_Spectral_Information //##################################################################### template<class T,int bandwidth> void BANDED_SYMMETRIC_MATRIX<T,bandwidth>:: Print_Spectral_Information() const { #ifndef COMPILE_WITHOUT_READ_WRITE_SUPPORT if(!Size()){ LOG::cout<<"eigenvalue range = null, condition = null"<<std::endl; return;} ARRAY<T> D;Eigenvalues(D); T lambda_min=ARRAYS_COMPUTATIONS::Min(D),lambda_max=ARRAYS_COMPUTATIONS::Max(D); T condition=lambda_min*lambda_max>0?Robust_Divide(maxabs(lambda_min,lambda_max),minabs(lambda_min,lambda_max)):0; LOG::cout<<"eigenvalue range = "<<lambda_min<<" "<<lambda_max<<", condition = "<<condition<<std::endl; Sort(D);LOG::cout<<"eigenvalues = "<<D; #endif }
RealType HamiltonianPart::getEigenValue(InnerQuantumState state) const // return Eigenvalues(state) { if ( Status < Computed ) throw (exStatusMismatch()); return Eigenvalues(state); }