PLUTO
|
Compute the eigenvalues for the relativisitc MHD equations. More...
#include "pluto.h"
Go to the source code of this file.
Functions | |
int | MaxSignalSpeed (double **v, double *a2, double *h, double *cmin, double *cmax, int beg, int end) |
int | Magnetosonic (double *vp, double cs2, double h, double *lambda) |
int | Eigenvalues (double *v, double cs2, double h, double *lambda) |
Compute the eigenvalues for the relativisitc MHD equations.
Definition in file eigenv.c.
int Eigenvalues | ( | double * | v, |
double | cs2, | ||
double | h, | ||
double * | lambda | ||
) |
Compute an approximate expression for the fast magnetosonic speed using the upper-bound estimated outlined by Leismann et al. (A&A 2005, 436, 503), Eq. [27].
Definition at line 277 of file eigenv.c.
int Magnetosonic | ( | double * | vp, |
double | cs2, | ||
double | h, | ||
double * | lambda | ||
) |
Find the four magneto-sonic speeds (fast and slow) for the relativistic MHD equations (RMHD). We follow the notations introduced in Eq. (16) in
Del Zanna, Bucciantini and Londrillo, A&A, 400, 397–413, 2003
and also Eq. (57-58) of Mignone & Bodo, MNRAS, 2006 for the degenerate cases.
The quartic equation is solved analytically and the solver (function 'QuarticSolve') assumes all roots are real (which should be always the case here, since eigenvalues are recovered from primitive variables). The coefficients of the quartic were found through the following MAPLE script:
* ------------------------------------------------ restart; u[0] := gamma; u[x] := gamma*v[x]; b[0] := gamma*vB; b[x] := B[x]/gamma + b[0]*v[x]; wt := w + b^2; ############################################################# "fdZ will be equation (16) of Del Zanna 2003 times w_{tot}"; e2 := c[s]^2 + b^2*(1 - c[s]^2)/wt; fdZ := (1-e2)*(u[0]*lambda - u[x])^4 + (1-lambda^2)* (c[s]^2*(b[0]*lambda - b[x])^2/wt - e2*(u[0]*lambda - u[x])^2); ######################################################## "print the coefficients of the quartic polynomial fdZ"; coeff(fMB,lambda,4); coeff(fMB,lambda,3); coeff(fMB,lambda,2); coeff(fMB,lambda,1); coeff(fMB,lambda,0); fdZ := fdZ*wt; ###################################################### "fMB will be equation (56) of Mignone & Bodo (2006)"; a := gamma*(lambda-v[x]); BB := b[x] - lambda*b[0]; fMB := w*(1-c[s]^2)*a^4 - (1-lambda^2)*((b^2+w*c[s]^2)*a^2-c[s]^2*BB^2); ###################################### "check that fdZ = fMB"; simplify(fdZ - fMB); ######################################################## "print the coefficients of the quartic polynomial fMB"; coeff(fMB,lambda,4); coeff(fMB,lambda,3); coeff(fMB,lambda,2); coeff(fMB,lambda,1); coeff(fMB,lambda,0); ############################################### "Degenerate case 2: Bx = 0, Eq (58) in MB06"; B[x] := 0; a2 := w*(c[s]^2 + gamma^2*(1-c[s]^2)) + Q; a1 := -2*w*gamma^2*v[x]*(1-c[s]^2); a0 := w*(-c[s]^2 + gamma^2*v[x]^2*(1-c[s]^2))-Q; "delc is a good way to evaluate the determinant so that it is > 0"; del := a1^2 - 4*a2*a0; delc := 4*(w*c[s]^2 + Q)*(w*(1-c[s]^2)*gamma^2*(1-v[x]^2) + (w*c[s]^2+Q)); simplify(del-delc); ############################################################################ "check the correctness of the coefficients of Eq. (58) in MB06"; Q := b^2 - c[s]^2*vB^2; divide(fMB, (lambda-v[x])^2,'fMB2'); simplify(a2 - coeff(fMB2,lambda,2)/gamma^2); simplify(a1 - coeff(fMB2,lambda,1)/gamma^2); simplify(a0 - coeff(fMB2,lambda,0)/gamma^2);
Definition at line 34 of file eigenv.c.
int MaxSignalSpeed | ( | double ** | v, |
double * | a2, | ||
double * | h, | ||
double * | cmin, | ||
double * | cmax, | ||
int | beg, | ||
int | end | ||
) |
Return the rightmost (cmax) and leftmost (cmin) wave propagation speed in the Riemann fan
Definition at line 13 of file eigenv.c.