PLUTO  4.0
 All Data Structures Files Functions Variables Enumerations Macros Pages
Macros | Functions | Variables
glm.h File Reference

Header file for GLM Divergence Cleaning. More...

Go to the source code of this file.

Macros

#define EGLM   NO
 

Functions

void GLM_Solve (const State_1D *, double **, double **, int, int, Grid *)
 
void GLM_Init (const Data *, const Time_Step *, Grid *)
 
void GLM_Source (const Data_Arr, double, Grid *)
 
void EGLM_Source (const State_1D *, double, int, int, Grid *)
 

Variables

double glm_ch
 

Detailed Description

Contains function prototypes and global variable declaration for the GLM formulation to control the divergence-free condition of magnetic field.

References

Authors
A. Mignone (migno.nosp@m.ne@p.nosp@m.h.uni.nosp@m.to.i.nosp@m.t)
P. Tzeferacos (petro.nosp@m.s.tz.nosp@m.efera.nosp@m.cos@.nosp@m.ph.un.nosp@m.ito..nosp@m.it)
Date
Sep 28, 2012

Macro Definition Documentation

#define EGLM   NO

The EGLM macro may be turned to YES to enable the extended GLM formalism. Although it breaks conservation of momentum and energy, it has proven to be more robust in treating low-beta plasma.

Function Documentation

void EGLM_Source ( const State_1D state,
double  dt,
int  beg,
int  end,
Grid grid 
)

Add source terms to the right hand side of the conservative equations, momentum and energy equations only. This yields the extended GLM (EGLM) given by Eq. (24a)–(24c) in

"Hyperbolic Divergence cleaning for the MHD Equations" Dedner et al. (2002), JcP, 175, 645

void GLM_Init ( const Data d,
const Time_Step Dts,
Grid grid 
)

Initialize the maximum propagation speed glm_ch.

void GLM_Solve ( const State_1D state,
double **  VL,
double **  VR,
int  beg,
int  end,
Grid grid 
)

Solve the 2x2 linear hyperbolic GLM-MHD system given by the divergence cleaning approach. Build new states VL and VR for Riemann problem. We use Eq. (42) of

Dedner et al. "Hyperbolic Divergence Cleaning for the MHD equations", JCP 175, 645 (2002)

Parameters
[in,out]statepointer to a State_1D structure
[out]VLleft-interface state to be passed to the Riemann solver
[out]VRright-interface state to be passed to the Riemann solver
[in]begstarting index of computation
[in]endfinal index of computation
[in]gridpointer to array of Grid structures

The purpose of this function is two-fold:

  1. assign a unique value to the normal component of magnetic field and to te scalar psi before the actual Riemann solver is called.
  2. compute GLM fluxes in Bn and psi.

The following MAPLE script has been used

restart;
with(linalg);
A := matrix(2,2,[ 0, 1, c^2, 0]);
R := matrix(2,2,[ 1, 1, c, -c]);
L := inverse(R);
E := matrix(2,2,[c,0,0,-c]);
multiply(R,multiply(E,L));
void GLM_Source ( const Data_Arr  Q,
double  dt,
Grid grid 
)

Include the parabolic source term of the Lagrangian multiplier equation in a split fashion for the mixed GLM formulation. Ref. Mignone & Tzeferacos, JCP (2010) 229, 2117, Equation (27).

Variable Documentation

double glm_ch

The propagation speed of divergence error.