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
arg
is greater than1.0 + 1.0e-10
. If it is, seteh.fdiags[0]
toarg
and report an error (error code 18). -
Set
arg2
to the minimum value betweenarg
and1.0 - 1.0e-10
. -
Calculate
sinsq
as0.5 * (1.0 - arg2)
. -
Calculate
xisq
as0.25 * (32.0 * zlocal / (zlocal + 1.0) - 1.0)
. -
Initialize
palpha
to1.0
,pold
to1.0
,pterm
to1.0
,palphap
to0.0
, andpoldp
to0.0
. -
Start a loop that iterates up to 10000 times.
-
Check for convergence every 20 iterations:
- If
n > 1
and(n % 20) == 1
, calculateterm1
as1.0e-10 * max(abs(pold), abs(palpha))
andterm2
as1.0e-10 * max(abs(poldp), abs(palphap))
. - If the absolute difference between
pold
andpalpha
is less thanterm1
and the absolute difference betweenpoldp
andpalphap
is less thanterm2
, returnpalpha
andpalphap
.
- If
-
Update
pold
topalpha
andpoldp
topalphap
. -
Calculate
pterm
aspterm * (4.0 * xisq + (2.0 * n - 1.0) ** 2) / (2.0 * n) ** 2 * sinsq
. -
Update
palpha
aspalpha + pterm
. -
Update
palphap
aspalphap - 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). ↩