示例#1
0
文件: euler1d.c 项目: jzrake/rabbit
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;
}
示例#2
0
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
}
示例#4
0
RealType HamiltonianPart::getEigenValue(InnerQuantumState state) const // return Eigenvalues(state)
{
    if ( Status < Computed ) throw (exStatusMismatch());
    return Eigenvalues(state);
}