# ELITE¶

Contacts: Orso Meneghini, Phil Snyder

## Short Description¶

Run the ELITE ideal MHD stability code

## Long Description¶

ELITE is an MHD stability (eigenvalue) code. It is designed to efficiently evaluate the stability of the edge (or “pedestal”) region of tokamak plasmas, for intermediate to high toroidal mode number instabilities (n~4-50). These instabilities, driven by edge pressure and current gradients, cause Edge Localized Modes (ELMs) and constrain the pressure (or “height”) of the pedestal. The ELITE formalism is derived via an expansion in 1/n to high order, enabling a very efficient and accurate treatment of n>4 instabilities. It is a key component of the EPED model, which is used to predict the pedestal height and width in existing and future tokamaks. ELITE can include compression and toroidal rotation, but is most frequently run without these effects. It is a single fluid code (which typically includes diamagnetic stabilization via analytic models or fits to two fluid calculations). The present version of ELITE (5.9) requires n>~4, but a version for low n is in progress.

The input to ELITE is a 2D Grad-Shafranov equilibrium solution which can be generated by one of several equilibrium codes. Most often equilibria come from EFIT (experimental cases) or toq/corsica/helena (model equilibria). Equilibria must be sufficiently high resolution (minimum 129x129 for EFIT), be highly converged Grad-Shafranov solutions (error <~1e-5), and have well resolved pedestal region profiles (including current, usually evaluated with bootstrap models or NEO) in order to be useful to ELITE. ELITE can be used on sets of equilibria (known as “VARYPEDS” as they vary key pedestal parameters). ELITE is used as part of the EPED model to determine the peeling-ballooning constraint (one of two constraints in EPED).

ELITE is a set of three executables (eliteeq, elitevac, elite) that are typically run in sequence. These are f90 codes that typically runs in a few seconds to a minute on modern CPUs. Efficiency is much higher for updown symmetric equilibria and when only a yes/no on stability is required (rather than a growth rate). In most applications (construction of a peeling-ballooning diagram, EPED model) ELITE is run 100s to 1000s of times, and this can be done in parallel on large numbers of cores.

## Typical workflows¶

Run (parallel) ELITE scan for different modes

Batch scripts allow multiple (parallel) ELITE runs for multiple modes and different equilibrium variations generated with VARYPED module

Plotting of s-alpha stability diagrams (interactive, click to see eigenfunction of most unstable mode)

Parsing and plotting of eigenfunction

## Supported devices¶

Device independent

## Tutorials¶

Tutorial for DIII-D (Google docs)

Plotting example (Youtube video)

## External resources¶

Official webpage: https://fusion.gat.com/THEORY/elite/

Practical guide: https://www.dropbox.com/s/e3d4t605d5rvtyr/ELITE_doc_rev4.pdf?dl=0

## Technical info¶

- cent_gam/w_A
is basically the same as gamma/omega_A. It is the growth rate normalized to the Alfven frequency. Note however that gamma/omega_A contains R/B and one must be sure to use the same value of R/B to compare growth rates across different codes.

- gam/(omegspi_max/r)
is the growth rate normalized to half the ion diamagnetic drift frequncy (where the half_max value in the pedestal is used as a typical value). This is the most important number - the one that is plotted in the stability contour plots. When its value exceeds 1. the plasma is unstable (in the presence of a simple model of diamagnetic stabilization).

- gamsq
is an input to ELITE. outputting this is useful if you want to use it as an input to start a similar run.

- del
is the edge resonance parameter set by setdel and delfix.

- gamr
is the value that is iterated to zero to calculate the growth rate. Its value should be very small or the run has not converged.

- gamr2
is like gamr, but calculated in a different way (without forcing a matrix that is supposed to be Hermitian to actually be Hermitian). It should be small (but not as small as gamr). If it is not small while gamr is small then there is likely a problem with the equilibrium files (eg not high enough resolution efit, or not well enough converged).

- tmatasym
is a measure of the non-Hermiticity of a matrix that is supposed to be Hermitian (if the equilibrium were a perfect Grad-Shafranov solution). Again, it should be fairly small or there are problems with the equilibrium.

On successful completion, provided igam>1 and the growth rate is converged, ELITE will output a number of definitions of growth rate, as follows:

- (gamma/omega_A)**2
The square of the growth rate normalised to the Alfven frequency at the plasma edge, A=B/(R(0a)1/2). For R we take the average of the innermost and outermost R values on the outer surface. The value of B used is then calculated by dividing f=RBtor on the outer surface by that value of R. (note that this numerical value of R/B is also output for easy conversion)

- (gamma/omega_A)
The square root of the value above

- (R/B)
The ratio of the definitions of R and B as defined above

- Growth rate for rho=1kgm**3
The actual growth rate, assuming an edge mass density of 1kgm3. Note that constant density is assumed when no density information is input.

- Growth rate
The true growth rate in s1, output only if density information is available (dens=.t.).

## Contributors¶

List of contributors sorted by number of lines authored:

```
592 Orso Meneghini
264 Samuli Saarelma
191 Joseph McClenaghan
87 Fusion Bot
14 Gustavo Canal
4 Theresa Wilks
2 chabanr
```

## Submodules¶

None

## Users¶

List of usernames sorted by number of module imports: **wangy**, **knolkerm**, **orlov**, **wilkstm**, **nelsonand**, **ashourvana**, **lizeyu**, **meneghini**, **wilcoxr**, **wanghuiqian**, **pankin**, **chenji**, **likai**, **mcclenaghanj**, **saarelma**, **huqiming**, **chenxi**, **lig**, **solomon**, **kongd**, **grierson**, **jianx**, **soukhan**, **wangqi**, **chenj**, **lyonsbc**, **marinoni**, **kleinera**, **paz-soldan**, **victorb**, **aashourv**, **haskeysr**, **inyong**, **wuyifan**, **cotet**, **guowf**, **halfmoonm**, **izacardo**, **saarelmas**, **sungc**, **wangzw**, **chenjia**, **churchillr**, **evans**, **halpernf**, **shaskey**, **smithsp**, **sunap**, **thomek**, **turnbull**, **weisbergd**, **wingen**, **abramst**, **baradakk**, **canalg**, **cuil**, **duttas**, **halfmoon**, **hengl**, **laggnerf**, **luoyiming**, **nazikian**, **psinha**, **renq**, **vailp**, **yfwang**, **zhuyiren**