Plasma Geometry | PlasmaGeom
The control of the plasma shaping is done by the PlasmaGeom
class in plasma_geometry.py
The plasma geometric major radius R_0 (rmajor
) and aspect ratio A (aspect
)
define the size of the plasma torus. The plasma minor radius a (rminor
) is
calculated from these values. The inverse aspect ratio is given by, \epsilon (eps
) = 1/A .
The shape of the plasma cross-section is given by the
elongation of the last closed flux surface (LCFS) \kappa (kappa
) and the triangularity of the LCFS
\delta (triang
), which can be scaled automatically with the aspect ratio if
required using certain switch conditions of i_plasma_geometry
:
The setting of the i_plasma_shape
switch determines what type of plasma shaping formula to use.
i_plasma_shape = 0
: Default PROCESS plasma shape is used which models the plasma as 2-intersecting arcs (DEFAULT).i_plasma_shape = 1
: The Sauter geometry is used which includes the squareness (\xi) parameter.
The different parameterisations of the plasma shape can be experimented with in the plot below.
Plasma Geometry Parameters | plasma_geometry()
This subroutine calculates the plasma geometry parameters based on the given input values. The plasma geometry parameters include the shaping terms, plasma aspect ratio, elongation, and triangularity. The function uses various scaling laws and formulas to calculate these parameters based on the specified shape type.
If the classic PROCESS plasma shape is used (i_plasma_shape = 0
) the plasma surface area, cross-sectional area and volume are calculated using
formulations that approximate the LCFS as a revolution of two arcs which
intersect the plasma X-points and the plasma midplane outer and inner
radii. (This is a reasonable assumption for double-null diverted plasmas, but
will be inaccurate for single-null plasmas, i_single_null = 1
)
Elongation & Triangularity
i_plasma_geometry = 0
--kappa
andtriang
must be input. The elongation and triangularity of the 95% flux surface are calculated as follows, based on the 1989 ITER guidelines 1: $$ \kappa_{95} = \kappa / 1.12 $$ $$ \delta_{95} = \delta / 1.5 $$
i_plasma_geometry = 1
--kappa
andtriang
must not be input. They are calculated by the following equations, which estimate the largest elongation and triangularity achievable for low aspect ratio machines based on the STAR code2:
$$ \kappa = 2.05 \, \left(1 + 0.44 \, \epsilon^{2.1}\right) $$
$$ \delta = 0.53 \, \left(1 + 0.77 \, \epsilon^3\right) $$
The lower limit for the edge safety factor q95_min
is also set here
$$
q_{\text{lim}} = 3 \, \left(1 + 2.6 \, \epsilon^{2.8}\right)
$$
The values for the plasma shaping parameters at the 95% flux surface are calculated using a fit
to a family of equilibria calculated using the FIESTA code, equivalent to that used in i_plasma_geometry = 8
.
$$ \kappa_{95} = \frac{(\kappa - 0.39467)}{0.90698} $$
$$ \delta_{95} = \frac{(\delta - 0.048306)}{1.3799} $$
i_plasma_geometry = 2
-- The Zohm ITER scaling 3 is used to calculate the elongation, where input variablefkzohm
= F_{kz} may be used to adjust the scaling, while the input value of the triangularity is used unchanged
$$ \kappa = F_{kz} \, \times \, \mathrm{minimum} \left( 2.0, \, \, 1.5 + \frac{0.5}{A-1} \right) $$
The elongation and triangularity of the 95% flux surface are calculated as follows, based on the 1989 ITER guidelines 1:
$$ \kappa_{95} = \kappa / 1.12 $$ $$ \delta_{95} = \delta / 1.5 $$
i_plasma_geometry = 3
-- The Zohm ITER scaling3 is used to calculate the elongation (as fori_plasma_geometry = 2
above), but the triangularity at the 95% flux surface is input via variabletriang95
, and the LCFS triangularitytriang
is calculated from it, rather than the other way round.
i_plasma_geometry = 4
-- The 95% flux surface valueskappa95
andtriang95
are both used as inputs, and the LCFS values are calculated from them by inverting the equations given above fori_plasma_geometry = 0
.
i_plasma_geometry = 5
-- The 95% flux surface valueskappa95
andtriang95
are both used as inputs and the LCFS values are calculated from a fit to MAST data:
$$ \kappa = 0.913 \, \kappa_{95} + 0.38654 $$
$$ \delta = 0.77394 \, \delta_{95} + 0.18515 $$
i_plasma_geometry = 6
-- The input values forkappa
andtriang
are used directly and the 95% flux surface values are calculated using the MAST scaling fromi_plasma_geometry = 5
.
i_plasma_geometry = 7
-- The 95% flux surface valueskappa95
andtriang95
are both used as inputs and the LCFS values are calculated from a fit to FIESTA runs:
$$ \kappa = 0.90698 \, \kappa_{95} + 0.39467 $$
$$ \delta = 1.3799 \, \delta_{95} + 0.048306 $$
i_plasma_geometry = 8
-- The input values forkappa
andtriang
are used directly and the 95% flux surface values are calculated using the FIESTA fit fromi_plasma_geometry = 7
.
i_plasma_geometry = 9
-- The input values fortriang
andrli
are used,kappa
and the 95% flux surface values are calculated.
$$ \kappa = \left(\left(1.09+\frac{0.26}{l_i}\right)\left(\frac{1.5}{A}\right)^{0.4}\right) $$
Where l_i is the plasma normalised internal inductance.
The elongation and triangularity of the 95% flux surface are calculated as follows, based on the 1989 ITER guidelines 1:
$$ \kappa_{95} = \kappa / 1.12 $$ $$ \delta_{95} = \delta / 1.5 $$
i_plasma_geometry = 10
-- The input values fortriang
are used directly to calculate 95% flux surface values.kappa
is calculated to a fit from CREATE data for a EU-DEMO type machine with aspect ratios of (2.6\le A \le 3.6). Coefficient values are rounded to 2 decimal places
$$ \kappa_{95} = \frac{(18.84 -(0.87 \times A)) - \sqrt{4.84A^2 -28.77 A+52.52+14.74 \times m_{\text{s,limit}}}}{2a} $$ Where m_{\text{s,limit}} is the inputted vertical stablity margin limit (default = 0.3)
If \kappa_{95}>1.77 then its value is adjusted:
The elongation and the triangularity of the 95% flux surface is calculated as follows, based on the 1989 ITER guidelines 1:
-
i_plasma_geometry = 11
-- The elongation is calculated directly dependant on the aspect ratio for spherical tokamak aspect ratios.4\kappa = 0.95 \left(1.9+\frac{1.9}{A^{1.4}}\right)
The elongation and triangularity of the 95% flux surface are calculated as follows, based on the 1989 ITER guidelines 1:
$$ \kappa_{95} = \kappa / 1.12 $$ $$ \delta_{95} = \delta / 1.5 $$
Plasma-Wall Gap
The region directly outside the last closed flux surface of the core plasma is known as the scrape-off layer, and contains no structural material. Plasma entering this region is not confined and is removed by the divertor. PROCESS treats the scrape-off layer merely as a gap.
The plasma and first wall clearance can be calculated or input by setting the i_plasma_wall_gap
switch.
i_plasma_wall_gap
== 0, then the inboard and outboard plasma wall gaps are set to be 10% of the plasma minor radius (a).i_plasma_wall_gap
== 1, then the inboard and outboard plasma wall gaps are set by definingscrapli
andscraplo
respectively.
Geometrical properties | plasma_angles_arcs()
This method calculates the radius and half angle of the arc describing the inboard and outboard plasma surfaces. This calculation is appropriate for plasmas with a separatrix. It requires the plasma minor radius (a, rminor
), elongation (\kappa, kappa
) and triangularity (\delta, triang
).
Input Variable | Description |
---|---|
rminor , a |
Plasma minor radius [\text{m}] |
kappa , \kappa |
Plasma separatrix elongation |
triang , \delta |
Plasma separatrix triangularity |
Output Variable | Description |
---|---|
xi |
Radius of arc describing inboard surface [\text{m}] |
thetai |
Half-angle of arc describing inboard surface |
xo |
Radius of arc describing outboard surface [\text{m}] |
thetao |
Half-angle of arc describing outboard surface |
Similarly for the inboard side:
Surface Area | plasma_surface_area()
This function finds the plasma surface area, using the
revolution of two intersecting arcs around the device centreline.
This calculation is appropriate for plasmas with a separatrix.
It uses the geometrical properties derived in plasma_angles_arcs()
Input Variable | Description |
---|---|
rmajor , R |
Plasma major radius [\text{m}] |
rminor , a |
Plasma minor radius [\text{m}] |
xi |
Radius of arc describing inboard surface [\text{m}] |
thetai |
Half-angle of arc describing inboard surface |
xo |
Radius of arc describing outboard surface [\text{m}] |
thetao |
Half-angle of arc describing outboard surface |
Output Variable | Description |
---|---|
xsi |
Inboard surface area [\text{m}^2] |
xso |
Outboard surface area [\text{m}^2] |
For the outboard side:
Poloidal perimeter | plasma_poloidal_perimeter()
The poloidal plasma perimtere length len_plasma_poloidal
is calculated as follows:
Input Variable | Description |
---|---|
xi |
Radius of arc describing inboard surface [\text{m}] |
thetai |
Half-angle of arc describing inboard surface |
xo |
Radius of arc describing outboard surface [\text{m}] |
thetao |
Half-angle of arc describing outboard surface |
Output Variable | Description |
---|---|
len_plasma_poloidal |
Plasma poloidal perimeter [\text{m}] |
Plasma Volume | plasma_volume()
The plasma volume is calculated using the xvol
method with the inputted R_0 & a along with the outputs of plasma_angles_arcs()
.
The f_vol_plasma
iteration variable can be used to scale this output
Input Variable | Description |
---|---|
rmajor , R |
Plasma major radius [\text{m}] |
rminor , a |
Plasma minor radius [\text{m}] |
xi |
Radius of arc describing inboard surface [\text{m}] |
thetai |
Half-angle of arc describing inboard surface |
xo |
Radius of arc describing outboard surface [\text{m}] |
thetao |
Half-angle of arc describing outboard surface |
Output Variable | Description |
---|---|
xvol |
Plasma volume [\text{m}^3] |
Calculate the volume for the inboard plasma side:
Calculate the volume for the outboard plasma side:
The volume is then the difference between the two volumes
Plasma cross-sectional area | plasma_cross_section()
This function finds the plasma cross-sectional area, using the revolution of two intersecting arcs around the device centreline. This calculation is appropriate for plasmas with a separatrix.
Input Variable | Description |
---|---|
xi |
Radius of arc describing inboard surface [\text{m}] |
thetai |
Half-angle of arc describing inboard surface |
xo |
Radius of arc describing outboard surface [\text{m}] |
thetao |
Half-angle of arc describing outboard surface |
Output Variable | Description |
---|---|
xsecta |
Plasma cross-sectional area [\text{m}^2] |
Sauter geometry | sauter_geometry()
This function calculates the plasma volumes, areas, perimeter and shapes based on the Sauter formulation6.
Input Variable | Description |
---|---|
rminor , a |
Plasma minor radius [\text{m}] |
rmajor , R |
Plasma major radius [\text{m}] |
kappa , \kappa |
Plasma separatrix elongation |
triang , \delta |
Plasma separatrix triangularity |
plasma_square , \xi |
Plasma squareness |
Output Variable | Description |
---|---|
len_plasma_poloidal |
Plasma Poloidal perimeter length [\text{m}] |
a_plasma_surface |
Plasma surface area [\text{m}^2] |
a_plasma_poloidal |
Plasma cross-sectional area [\text{m}^2] |
vol_plasma |
Plasma volume [\text{m}^3] |
Poloidal perimeter (named L_p in Sauter)
Surface area (named A_p in Sauter)
Cross-section area (named S_{\phi} in Sauter)
Volume (named V in Sauter)
Key Constraints
Conducting shell radius
This constraint equation can be activated by stating icc = 23
in the input file.
In principle, the inner surface of the outboard shield could be used as the location of a conducting shell to mitigate the vertical displacement growth rate of plasmas with significant elongation 7.
The maximum permissible distance r_{\text{shell, max}} of this shell from the geometric
centre of the plasma may be set using input parameter f_r_conducting_wall
, such that
r_{\text{shell, max}} = f_r_conducting_wall*rminor
.
The scaling value fcwr
can be varied also.
Legacy claculations
STAR Code plasma surface area | surfa()
This function finds the plasma surface area, using the revolution of two intersecting arcs around the device centreline. This calculation is appropriate for plasmas with a separatrix. It was the original method in PROCESS5.
Input Variable | Description |
---|---|
rminor , a |
Plasma minor radius [\text{m}] |
rmajor , R |
Plasma major radius [\text{m}] |
kappa , \kappa |
Plasma separatrix elongation |
triang , \delta |
Plasma separatrix triangularity |
Output Variable | Description |
---|---|
sa |
Plasma total surface area [\text{m}^2] |
so |
Plasma outboard surface area [\text{m}^2] |
Inboard side
Plasma poloidal perimeter calculation | perim()
This function finds the plasma poloidal perimeter, using the revolution of two intersecting arcs around the device centreline. This calculation is appropriate for plasmas with a separatrix.
Input Variable | Description |
---|---|
rminor , a |
Plasma minor radius [\text{m}] |
kappa , \kappa |
Plasma separatrix elongation |
triang , \delta |
Plasma separatrix triangularity |
Output Variable | Description |
---|---|
perim |
Plasma poloidal perimeter length [\text{m}] |
Inboard arc
Outboard arc
Plasma volume calculation | fvol()
This function finds the plasma volume, using the revolution of two intersecting arcs around the device centreline. This calculation is appropriate for plasmas with a separatrix.
Input Variable | Description |
---|---|
rmajor , R |
Plasma major radius [\text{m}] |
rminor , a |
Plasma minor radius [\text{m}] |
kappa , \kappa |
Plasma separatrix elongation |
triang , \delta |
Plasma separatrix triangularity |
Output Variable | Description |
---|---|
fvol |
Plasma volume [\text{m}^3] |
Plasma cross sectional area calculation | xsecto()
This function finds the plasma cross-sectional area, using the revolution of two intersecting arcs around the device centreline. This calculation is appropriate for plasmas with a separatrix.
Input Variable | Description |
---|---|
rminor , a |
Plasma minor radius [\text{m}] |
kappa , \kappa |
Plasma separatrix elongation |
triang , \delta |
Plasma separatrix triangularity |
Output Variable | Description |
---|---|
xsect0 |
Plasma cross-sectional area [\text{m}^2] |
-
N.A. Uckan and ITER Physics Group, ITER Physics Design Guidelines: 1989, ITER Documentation Series, No. 10, IAEA/ITER/DS/10 (1990) ↩↩↩↩↩
-
J.D. Galambos, 'STAR Code : Spherical Tokamak Analysis and Reactor Code', Unpublished internal Oak Ridge document. ↩
-
H. Zohm et al, 'On the Physics Guidelines for a Tokamak DEMO', FTP/3-3, Proc. IAEA Fusion Energy Conference, October 2012, San Diego ↩↩
-
Menard, J.E. & Brown, T. & El-Guebaly, L. & Boyer, M. & Canik, J. & Colling, Bethany & Raman, Roger & Wang, Z. & Zhai, Yunbo & Buxton, Peter & Covele, B. & D’Angelo, C. & Davis, Andrew & Gerhardt, S. & Gryaznevich, M. & Harb, Moataz & Hender, T.C. & Kaye, S. & Kingham, David & Woolley, R.. (2016). Fusion nuclear science facilities and pilot plants based on the spherical tokamak. Nuclear Fusion. 56. 106023. 10.1088/0029-5515/56/10/106023. ↩
-
J D Galambos, STAR Code : Spherical Tokamak Analysis and Reactor Code, unpublished internal Oak Ridge document ↩
-
O. Sauter, “Geometric formulas for system codes including the effect of negative triangularity,” Fusion Engineering and Design, vol. 112, pp. 633–645, Nov. 2016, doi: https://doi.org/10.1016/j.fusengdes.2016.04.033. ↩
-
Y. Sakamoto, 'Recent progress in vertical stability analysis in JA', Task meeting EU-JA #16, Fusion for Energy, Garching, 24--25 June 2014 ↩