PLUTO
|
Wave-speeds and characteristic decomposition for the MHD equations. More...
#include "pluto.h"
Go to the source code of this file.
Macros | |
#define | sqrt_1_2 (0.70710678118654752440) |
Functions | |
void | MaxSignalSpeed (double **v, double *cs2, double *cmin, double *cmax, double **bgf, int beg, int end) |
void | Eigenvalues (double **v, double *csound2, double **lambda, int beg, int end) |
void | PrimEigenvectors (double *q, double a2, double h, double *lambda, double **LL, double **RR) |
void | ConsEigenvectors (double *u, double *v, double a2, double **Lc, double **Rc, double *lambda) |
void | PrimToChar (double **Lp, double *v, double *w) |
Wave-speeds and characteristic decomposition for the MHD equations.
This file contains various functions containing Jacobian-related information such as characteristic signal speeds, eigenvalues and eigenvector decomposition for the MHD module.
The function MaxSignalSpeed() computes the maximum and minimum characteristic signal velocity for the MHD equations.
The function Eigenvalues() computes the 7 characteristic waves.
The function PrimEigenvectors() calculates left and right eigenvectors and the corresponding eigenvalues for the primitive form the the MHD equations with an adiabatic or isothermal EoS.
The function ConsEigenvectors() provides the characteristic decomposition of the convervative MHD 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
Definition in file eigenv.c.
#define sqrt_1_2 (0.70710678118654752440) |
void ConsEigenvectors | ( | double * | u, |
double * | v, | ||
double | a2, | ||
double ** | Lc, | ||
double ** | Rc, | ||
double * | lambda | ||
) |
Provide conservative eigenvectors for MHD equations.
[in] | u | array of conservative variables |
[in] | v | array of primitive variables |
[in] | a2 | square of sound speed |
[out] | Lc | left conservative eigenvectors |
[out] | Rc | right conservative eigenvectors |
[out] | lambda | eigenvalues |
Reference
With the following corrections:
The components (By, Bz) of L_{1,7} page 571 should be +{rho}a instead of -. Also, since Bx is not considered as a parameter, one must also add a component in the fast and slow waves. This can be seen by forming the conservative eigenvectors from the primitive ones, see the paper from Powell, Roe Linde.
The Lc_{1,3,5,7}[Bx] components, according to Serna 09 are -(1-g_gamma)*a_{f,s}*Bx and not (1-g_gamma)*a_{f,s}*Bx. Both are orthonormal though. She is WRONG! -Petros-
Definition at line 669 of file eigenv.c.
void Eigenvalues | ( | double ** | v, |
double * | csound2, | ||
double ** | lambda, | ||
int | beg, | ||
int | end | ||
) |
Compute eigenvalues for the MHD equations
[in] | v | 1-D array of primitive variables |
[out] | csound2 | 1-D array containing the square of sound speed |
[out] | lambda | 1-D array [i][nv] containing the eigenvalues |
[in] | beg | starting index of computation |
[in] | end | final index of computation |
Definition at line 96 of file eigenv.c.
void MaxSignalSpeed | ( | double ** | v, |
double * | cs2, | ||
double * | cmin, | ||
double * | cmax, | ||
double ** | bgf, | ||
int | beg, | ||
int | end | ||
) |
Compute the maximum and minimum characteristic velocities for the MHD equation, cmin= v - cf, cmax = v + cf
[in] | v | 1-D array of primitive variables |
[in] | cs2 | 1-D array containing the square of the sound speed |
[out] | cmin | 1-D array containing the leftmost characteristic |
[out] | cmin | 1-D array containing the rightmost characteristic |
[in] | bgf | 1-D array containing the background magnetic field |
[in] | beg | starting index of computation |
[in] | end | final index of computation |
Definition at line 35 of file eigenv.c.
void PrimEigenvectors | ( | double * | q, |
double | a2, | ||
double | h, | ||
double * | lambda, | ||
double ** | LL, | ||
double ** | RR | ||
) |
Provide left and right eigenvectors and corresponding eigenvalues for the PRIMITIVE form of the MHD equations (adiabatic & isothermal cases).
[in] | q | vector of primitive variables |
[in] | a2 | sound speed squared |
[in] | h | enthalpy |
[out] | lambda | eigenvalues |
[out] | LL | left primitive eigenvectors |
[out] | RR | right primitive eigenvectors |
Wave names and their order are defined as enumeration constants in mod_defs.h. Notice that, the characteristic decomposition may differ depending on the way div.B is treated.
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:
The derivation of the isothermal eigenvectors follows the consideration given in roe.c
Definition at line 179 of file eigenv.c.
void PrimToChar | ( | double ** | Lp, |
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.
[in] | Lp | Left eigenvectors |
[in] | v | (difference of) primitive variables |
[out] | w | (difference of) characteristic variables |
Definition at line 1290 of file eigenv.c.