Electron Cyclotron Heating
Electron cyclotron resonance heating is the simplest of the radio frequency heating methods. In contrast to ion cyclotron and lower hybrid heating, there is no evanescent region between the antenna and the plasma,although cut-offs can exist within the plasma. As a result, the antenna can be retracted into a less hostile environment than for the other schemes. Electron cyclotron heating has been made possible by the invention of the gyrotron millimetre wave source. This and related devices have only emerged since the mid-1970s. Gyrotron tubes capable of 0.5-1 MW out- put and with frequencies in the range 100-200 GHz are now under intense development. The frequency required for a reactor would be in the range 100-200 GHz which corresponds to vacuum wavelengths of 1-2 mm. Since \omega_{ce}\le \omega_{pe} only the electrons respond to electron cyclotron waves and only the electrons are heated directly. However, under reactor- like conditions the ions will be heated collisionally by the electrons. As the density is increased, a limit is encountered above which electron cyclotron waves cannot penetrate to the central regions of a tokamak. Propagation is again described below
Normalised current drive efficiency | eccdef()
One of the methods for calculating the normalised current drive efficiency is the eccdef method found below.
| Input | Description |
|---|---|
| \mathtt{tlocal} | Local electron temperature (keV) |
| \mathtt{epsloc} | Local inverse aspect ratio |
| \mathtt{zlocal} | Local plasma effective charge |
| \mathtt{cosang} | Cosine of the poloidal angle at which ECCD takes place (+1 outside, -1 inside) |
| \mathtt{coulog} | Local coulomb logarithm for ion-electron collisions |
This routine calculates the current drive parameters for a electron cyclotron system, based on the AEA FUS 172 model. It works out the ECCD efficiency using the formula due to Cohen quoted in the ITER Physics Design Guidelines : 1989 (but including division by the Coulomb Logarithm omitted from IPDG89).
We have assumed \gamma^2-1 << 1, where gamma is the relativistic factor. The notation follows that in IPDG89. The answer ECGAM is the normalised efficiency n_{\text{e}}IR/P with n_{\text{e}} the local density in [10^{20} / \text{m}^3], I the driven current in [\text{MA}], R the major radius in [\text{m}], and P the absorbed power in [\text{MW}].
\mathtt{fp} is the derivative of \mathtt{f} with respect to gamma, the relativistic factor, taken equal to 1 + \frac{2T_{\text{e}}}{(m_{\text{e}}c^2)}
\mathtt{lam} is IPDG89's lambda. legend calculates the Legendre function of order \alpha and argument lam, palpha, and its derivative, palphap.
Here alpha satisfies \alpha(\alpha+1) = \frac{-8}{(1+z_{\text{local}})}. \alpha is of the form (-1/2 + ix), with x a real number and i = \sqrt{-1}.
\mathtt{hp} is the derivative of IPDG89's \mathtt{h} function with respect to \mathtt{lam}
\mathtt{facm} is IPDG89's momentum conserving factor
We take the negative of the IPDG89 expression to get a positive number
Legendre function and its derivative | legend()
| Input | Description |
|---|---|
| \mathtt{zlocal} | Local plasma effective charge |
| \mathtt{arg} | Argument of Legendre function |
The legend() function is a routine that calculates the Legendre function and its derivative. It takes two input parameters: zlocal (local plasma effective charge) and arg (argument of the Legendre function). The function returns two output values: palpha (value of the Legendre function) and palphap (derivative of the Legendre function).
Here is the explanation of the legend() function:
-
Check if the absolute value of
argis greater than1.0 + 1.0e-10. If it is, seteh.fdiags[0]toargand report an error (error code 18). -
Set
arg2to the minimum value betweenargand1.0 - 1.0e-10. -
Calculate
sinsqas0.5 * (1.0 - arg2). -
Calculate
xisqas0.25 * (32.0 * zlocal / (zlocal + 1.0) - 1.0). -
Initialize
palphato1.0,poldto1.0,ptermto1.0,palphapto0.0, andpoldpto0.0. -
Start a loop that iterates up to 10000 times.
-
Check for convergence every 20 iterations:
- If
n > 1and(n % 20) == 1, calculateterm1as1.0e-10 * max(abs(pold), abs(palpha))andterm2as1.0e-10 * max(abs(poldp), abs(palphap)). - If the absolute difference between
poldandpalphais less thanterm1and the absolute difference betweenpoldpandpalphapis less thanterm2, returnpalphaandpalphap.
- If
-
Update
poldtopalphaandpoldptopalphap. -
Calculate
ptermaspterm * (4.0 * xisq + (2.0 * n - 1.0) ** 2) / (2.0 * n) ** 2 * sinsq. -
Update
palphaaspalpha + pterm. -
Update
palphapaspalphap - n * pterm / (1.0 - arg2). -
If the loop completes without returning, report an error (error code 19).
-
Abramowitz, Milton. "Abramowitz and stegun: Handbook of mathematical functions." US Department of Commerce 10 (1972). ↩