PLUTO  4.0
 All Data Structures Files Functions Variables Enumerations Macros Pages
Functions
eigenv.c File Reference

Wave-speeds and characteristic decomposition for the HD equations. More...

#include "pluto.h"

Functions

void MaxSignalSpeed (double **v, double *cs2, double *cmin, double *cmax, int beg, int end)
 
void Eigenvalues (double **v, double *csound2, double **lambda, int beg, int end)
 
void PrimEigenvectors (double *q, double cs2, double h, double *lambda, double **LL, double **RR)
 
void ConsEigenvectors (double *u, double *v, double a2, double **LL, double **RR, double *lambda)
 
void PrimToChar (double **L, double *v, double *w)
 

Detailed Description

This file contains various functions containing Jacobian-related information such as characteristic signal speeds, eigenvalues and eigenvector decomposition for the HD module.

The function MaxSignalSpeed() computes the maximum and minimum characteristic signal velocity for the HD equations.

The function Eigenvalues() computes the 3 characteristic waves.

The function PrimEigenvectors() calculates left and right eigenvectors and the corresponding eigenvalues for the primitive form the the HD equations with an adiabatic or isothermal EoS.

The function ConsEigenvectors() provides the characteristic decomposition of the convervative HD equations.

The function PrimToChar() compute the matrix-vector multiplcation between the L matrix (containing primitive left eigenvectors) and the vector v. The result containing the characteristic variables is stored in the vector w = L.v

Author
A. Mignone (migno.nosp@m.ne@p.nosp@m.h.uni.nosp@m.to.i.nosp@m.t)
Date
Oct 30, 2012

Function Documentation

void ConsEigenvectors ( double *  u,
double *  v,
double  a2,
double **  LL,
double **  RR,
double *  lambda 
)

Provide conservative eigenvectors for HD equations.

Parameters
[in]uarray of conservative variables
[in]varray of primitive variables
[in]a2square of sound speed
[out]LLleft conservative eigenvectors
[out]RRright conservative eigenvectors
[out]lambdaeigenvalues

References:

  • "Riemann Solvers and Numerical Methods for Fluid Dynamics",
    Toro, 1997 Springer-Verlag (Page 107)
void Eigenvalues ( double **  v,
double *  csound2,
double **  lambda,
int  beg,
int  end 
)

Compute eigenvalues for the HD equations

Parameters
[in]v1-D array of primitive variables
[out]csound21-D array containing the square of sound speed
[out]lambda1-D array [i][nv] containing the eigenvalues
[in]begstarting index of computation
[in]endfinal index of computation
void MaxSignalSpeed ( double **  v,
double *  cs2,
double *  cmin,
double *  cmax,
int  beg,
int  end 
)

Compute the maximum and minimum characteristic velocities for the HD equation, cmin= v - cs, cmax = v + cs

Parameters
[in]v1-D array of primitive variables
[out]cs21-D array containing the square of the sound speed
[out]cmin1-D array containing the leftmost characteristic
[out]cmin1-D array containing the rightmost characteristic
[in]begstarting index of computation
[in]endfinal index of computation
void PrimEigenvectors ( double *  q,
double  cs2,
double  h,
double *  lambda,
double **  LL,
double **  RR 
)

Provide left and right eigenvectors and corresponding eigenvalues for the PRIMITIVE form of the HD equations (adiabatic & isothermal cases).

Parameters
[in]qvector of primitive variables
[in]a2sound speed squared
[in]henthalpy
[out]lambdaeigenvalues
[out]LLleft primitive eigenvectors
[out]RRright primitive eigenvectors
Note
It is highly recommended that LL and RR be initialized to zero BEFORE since only non-zero entries are treated here.

Wave names and their order are defined as enumeration constants in mod_defs.h.

Advection modes associated with passive scalars are simple cases for which lambda = u (entropy mode) and l = r = (0, ... , 1, 0, ...). For this reason they are NOT defined here and must be treated seperately.

References:

  • "Riemann Solvers and Numerical Methods for Fluid Dynamics",
    Toro, 1997 Springer-Verlag
void PrimToChar ( double **  L,
double *  v,
double *  w 
)

Compute the matrix-vector multiplcation between the the L matrix (containing primitive left eigenvectors) and the vector v. The result containing the characteristic variables is stored in the vector w = L.v

For efficiency purpose, multiplication is done explicitly, so that only nonzero entries of the left primitive eigenvectors are considered.

Parameters
[in]LLeft eigenvectors
[in]v(difference of) primitive variables
[out]w(difference of) characteristic variables