diff --git a/documentation/proc-pages/fusion-devices/stellarator.md b/documentation/proc-pages/fusion-devices/stellarator.md index 2365cced61..b2bc51e616 100644 --- a/documentation/proc-pages/fusion-devices/stellarator.md +++ b/documentation/proc-pages/fusion-devices/stellarator.md @@ -74,7 +74,7 @@ ixc = 10 * "ISS04 Renormalization Factor" (can also be fixed) ixc = 50 * Coil current density, aka winding pack thickness (required!) ixc = 59 * Winding Pack copper fraction ixc = 56 * Exponential Quench Dumping Time -ixc = 109 * Thermal alpha particle pressure (iterated to consistency, use together with `taulimit`) +ixc = 109 * Thermal alpha particle pressure (iterated to consistency, use together with `f_alpha_energy_confinement_min`) ixc = 169 * Achievable Temperature of the ECRH at the ignition point ``` @@ -142,13 +142,13 @@ The constraint equation `icc=91` together with `ixc = 169` enforces that the fou ### $\tau_E$ scaling laws -Five confinement time scaling laws relevant to stellarators are present within `PROCESS`. The value of switch isc` determines which of these in the plasma energy balance calculation. +Five confinement time scaling laws relevant to stellarators are present within `PROCESS`. The value of switch i_confinement_time` determines which of these in the plasma energy balance calculation. -$\tau_E$ (Large Helical Device[^8]: `isc=21`) = $0.17 \, R^{0.75}_0 \, a^2_p \, \bar{n}^{0.69}_{20} \, B^{0.84}_0 \, P^{-0.58}$ -$\tau_E$ (Gyro-reduced Bohm[^9]: `isc=22`) = $0.25 \, R^{0.6}_0 \, a^{2.4}_p \, \bar{n}^{0.6}_{20} \, B^{0.8}_0 \, P^{-0.6}$ -$\tau_E$ (Lackner-Gottardi[^10]: `isc=23`) = $0.17 \, R_0 \, a^2_p \, \bar{n}^{0.6}_{20} \, B^{0.8}_0 \, P^{-0.6} \, \iota^{0.4}$ -$\tau_E$ (ISS95[^11]: `isc=37`) = $0.079 \, R^{0.65}_0 \, a^{2.21}_p \, \bar{n}^{0.51}_{20} \, B^{0.83}_0 \, P^{-0.59} \, \bar{\iota}^{0.4}$ -$\tau_E$ (ISS04[^12]: `isc=38`) = $0.134 \, R^{0.64}_0 \, a^{2.28}_p \, \bar{n}^{0.54}_{20} \, B^{0.84}_0 \, P^{-0.61} \, \bar{\iota}^{0.41}$ +$\tau_E$ (Large Helical Device[^8]: `i_confinement_time=21`) = $0.17 \, R^{0.75}_0 \, a^2_p \, \bar{n}^{0.69}_{20} \, B^{0.84}_0 \, P^{-0.58}$ +$\tau_E$ (Gyro-reduced Bohm[^9]: `i_confinement_time=22`) = $0.25 \, R^{0.6}_0 \, a^{2.4}_p \, \bar{n}^{0.6}_{20} \, B^{0.8}_0 \, P^{-0.6}$ +$\tau_E$ (Lackner-Gottardi[^10]: `i_confinement_time=23`) = $0.17 \, R_0 \, a^2_p \, \bar{n}^{0.6}_{20} \, B^{0.8}_0 \, P^{-0.6} \, \iota^{0.4}$ +$\tau_E$ (ISS95[^11]: `i_confinement_time=37`) = $0.079 \, R^{0.65}_0 \, a^{2.21}_p \, \bar{n}^{0.51}_{20} \, B^{0.83}_0 \, P^{-0.59} \, \bar{\iota}^{0.4}$ +$\tau_E$ (ISS04[^12]: `i_confinement_time=38`) = $0.134 \, R^{0.64}_0 \, a^{2.28}_p \, \bar{n}^{0.54}_{20} \, B^{0.84}_0 \, P^{-0.61} \, \bar{\iota}^{0.41}$ Here $\bar{\iota}$ is the rotational transform, which is equivalent to the reciprocal of the tokamak safety factor $q$. diff --git a/documentation/proc-pages/physics-models/error.txt b/documentation/proc-pages/physics-models/error.txt index f78e58a533..dd2b71e11b 100644 --- a/documentation/proc-pages/physics-models/error.txt +++ b/documentation/proc-pages/physics-models/error.txt @@ -596,7 +596,7 @@ energy confinement times \(\tau_E\) are equal. Many energy confinement time scaling laws are present within PROCESS, for tokamaks, RFPs or stellarators. These are calculated in routine -\texttt{pcond}. The value of \texttt{isc} determines which of the +\texttt{pcond}. The value of \texttt{i_confinement_time} determines which of the scalings is used in the plasma energy balance calculation. The table below summarises the available scaling laws. The most commonly used is the so-called IPB98(y,2) scaling. @@ -604,7 +604,7 @@ the so-called IPB98(y,2) scaling. \begin{longtable}[]{@{}cll@{}} \toprule \begin{minipage}[b]{0.05\columnwidth}\centering\strut -\texttt{isc}\strut +\texttt{i_confinement_time}\strut \end{minipage} & \begin{minipage}[b]{0.03\columnwidth}\raggedright\strut scaling law\strut \end{minipage} & \begin{minipage}[b]{0.03\columnwidth}\raggedright\strut @@ -967,7 +967,7 @@ J. Menard 2019, Phil. Trans. R. Soc. A 377:201704401\strut \begin{minipage}[t]{0.05\columnwidth}\centering\strut 48\strut \end{minipage} & \begin{minipage}[t]{0.03\columnwidth}\raggedright\strut -Use input \texttt{tauee\_in}\strut +Use input \texttt{t_electron_energy_confinement\_in}\strut \end{minipage} & \begin{minipage}[t]{0.03\columnwidth}\raggedright\strut \strut \end{minipage}\tabularnewline @@ -987,21 +987,21 @@ additional radiation causes an almost equal drop in power transported by ions and electrons, leaving the confinement nearly unchanged. To allow for these uncertainties, three options are available, using the -switch \texttt{iradloss}. In each case, the particle transport loss +switch \texttt{i_rad_loss}. In each case, the particle transport loss power \(P_{\mbox{loss}}\), referred to in the code as \texttt{pscaling}, is derived directly from the energy confinement scaling law. -\texttt{iradloss\ =\ 0} -- Total power lost is scaling power plus +\texttt{i_rad_loss\ =\ 0} -- Total power lost is scaling power plus radiation \texttt{pscaling\ +\ pden_plasma_rad_mw\ =\ f_alpha_plasma*alpha_power_density\ +\ charged_power_density\ +\ pden_plasma_ohmic_mw\ +\ pinjmw/vol_plasma} -\texttt{iradloss\ =\ 1} -- Total power lost is scaling power plus core +\texttt{i_rad_loss\ =\ 1} -- Total power lost is scaling power plus core radiation only \texttt{pscaling\ +\ pcoreradpv\ =\ f_alpha_plasma*alpha_power_density\ +\ charged_power_density\ +\ pden_plasma_ohmic_mw\ +\ pinjmw/vol_plasma} -\texttt{iradloss\ =\ 2} -- Total power lost is scaling power only, with +\texttt{i_rad_loss\ =\ 2} -- Total power lost is scaling power only, with no additional allowance for radiation. This is not recommended for power plant models. @@ -1376,9 +1376,9 @@ too high. Laws}{Inverse Quadrature in \textbackslash{}tau\_E Scaling Laws}}\label{inverse-quadrature-in-tau_e-scaling-laws} Switch \texttt{iinvqd} determines whether the energy confinement time -scaling laws due to Kaye-Goldston (\texttt{isc\ =\ 5}) and Goldston -(\texttt{isc\ =\ 9}) should include an inverse quadrature scaling with -the Neo-Alcator result (\texttt{isc\ =\ 1}). A value +scaling laws due to Kaye-Goldston (\texttt{i_confinement_time\ =\ 5}) and Goldston +(\texttt{i_confinement_time\ =\ 9}) should include an inverse quadrature scaling with +the Neo-Alcator result (\texttt{i_confinement_time\ =\ 1}). A value \texttt{iinvqd\ =\ 1}includes this scaling. \subsubsection{Plasma / First Wall Gap}\label{plasma-first-wall-gap} diff --git a/documentation/proc-pages/physics-models/plasma_confinement.md b/documentation/proc-pages/physics-models/plasma_confinement.md index e618aae029..0c57713d64 100644 --- a/documentation/proc-pages/physics-models/plasma_confinement.md +++ b/documentation/proc-pages/physics-models/plasma_confinement.md @@ -1,155 +1,738 @@ -# Confinement Time Scaling Laws +# Plasma confinement time + +## Overview + +Confinement time scalings are empirical relationships derived from experimental data across various fusion machines. These scalings help predict how changes in tokamak parameters (like size, magnetic field strength, and plasma density) will affect the confinement time and overall performance. The energy confinement time $\tau_E$ is calculated using one of a choice of empirical scalings. ($\tau_E$ is defined below.) -Many energy confinement time scaling laws are available within PROCESS, for -tokamaks, RFPs and stellarators. These are calculated in routine `pcond`. The -value of `isc` determines which of the scalings is used in the plasma energy -balance calculation. The table below summarises the available scaling laws. The -most commonly used is the so-called IPB98(y,2) scaling. - -| `isc` | scaling law | reference | -| :-: | - | - | -| 1 | Neo-Alcator (ohmic) | [^1] | -| 2 | Mirnov (H-mode) | [^1] | -| 3 | Merezhkin-Muhkovatov (L-mode) | [^1] | -| 4 | Shimomura (H-mode) | JAERI-M 87-080 (1987) | -| 5 | Kaye-Goldston (L-mode) | Nuclear Fusion **25** (1985) p.65 | -| 6 | ITER 89-P (L-mode) | Nuclear Fusion **30** (1990) p.1999 | -| 7 | ITER 89-O (L-mode) | [^2] | -| 8 | Rebut-Lallia (L-mode) | Plasma Physics and Controlled Nuclear Fusion Research **2** (1987) p. 187 | -| 9 | Goldston (L-mode)| Plas.\ Phys.\ Controlled Fusion **26** (1984) p.87 | -| 10 | T10 (L-mode) | [^2] | -| 11 | JAERI-88 (L-mode) | JAERI-M 88-068 (1988) | -| 12 | Kaye-Big Complex (L-mode) | Phys.\ Fluids B **2** (1990) p.2926 | -| 13 | ITER H90-P (H-mode) | | -| 14 | ITER Mix (minimum of 6 and 7) | | -| 15 | Riedel (L-mode) | | -| 16 | Christiansen et al. (L-mode) | JET Report JET-P (1991) 03 | -| 17 | Lackner-Gottardi (L-mode) | Nuclear Fusion **30** (1990) p.767 | -| 18 | Neo-Kaye (L-mode) | [^2] | -| 19 | Riedel (H-mode) | | -| 20 | ITER H90-P (amended) | Nuclear Fusion **32** (1992) p.318 | -| 21 | Large Helical Device (stellarator) | Nuclear Fusion **30** (1990) | -| 22 | Gyro-reduced Bohm (stellarator) | Bull. Am. Phys. Society, **34** (1989) p.1964 | -| 23 | Lackner-Gottardi (stellarator) | Nuclear Fusion **30** (1990) p.767 | -| 24 | ITER-93H (H-mode) | PPCF, Proc. 15th Int. Conf.Seville, 1994 IAEA-CN-60/E-P-3 | -| 25 | TITAN (RFP) | TITAN RFP Fusion Reactor Study, Scoping Phase Report, UCLA-PPG-1100, page 5--9, Jan 1987 | -| 26 | ITER H-97P ELM-free (H-mode) | J. G. Cordey et al., EPS Berchtesgaden, 1997 | -| 27 | ITER H-97P ELMy (H-mode) | J. G. Cordey et al., EPS Berchtesgaden, 1997 | -| 28 | ITER-96P (= ITER97-L) (L-mode) | Nuclear Fusion **37** (1997) p.1303 | -| 29 | Valovic modified ELMy (H-mode) | | -| 30 | Kaye PPPL April 98 (L-mode) | | -| 31 | ITERH-PB98P(y) (H-mode) | | -| 32 | IPB98(y) (H-mode) | Nuclear Fusion **39** (1999) p.2175, Table 5, | -| 33 | IPB98(y,1) (H-mode) | Nuclear Fusion **39** (1999) p.2175, Table 5, full data | -| 34 | IPB98(y,2) (H-mode) | Nuclear Fusion **39** (1999) p.2175, Table 5, NBI only | -| 35 | IPB98(y,3) (H-mode) | Nuclear Fusion **39** (1999) p.2175, Table 5, NBI only, no C-Mod | -| 36 | IPB98(y,4) (H-mode) | Nuclear Fusion **39** (1999) p.2175, Table 5, NBI only ITER like | -| 37 | ISS95 (stellarator) | Nuclear Fusion **36** (1996) p.1063 | -| 38 | ISS04 (stellarator) | Nuclear Fusion **45** (2005) p.1684 | -| 39 | DS03 (H-mode) | Plasma Phys. Control. Fusion **50** (2008) 043001, equation 4.13 | -| 40 | Non-power law (H-mode) | A. Murari et al 2015 Nucl. Fusion 55 073009, Table 4. | -| 41 | Petty 2008 (H-mode) | C.C. Petty 2008 Phys. Plasmas **15** 080501, equation 36 | -| 42 | Lang 2012 (H-mode) | P.T. Lang et al. 2012 IAEA conference proceeding EX/P4-01 | -| 43 | Hubbard 2017 -- nominal (I-mode) | A.E. Hubbard et al. 2017, Nuclear Fusion **57** 126039 | -| 44 | Hubbard 2017 -- lower (I-mode) | A.E. Hubbard et al. 2017, Nuclear Fusion **57** 126039 | -| 45 | Hubbard 2017 -- upper (I-mode) | A.E. Hubbard et al. 2017, Nuclear Fusion **57** 126039 | -| 46 | NSTX (H-mode; spherical tokamak) | J. Menard 2019, Phil. Trans. R. Soc. A 377:201704401 | -| 47 | NSTX-Petty08 Hybrid (H-mode) | J. Menard 2019, Phil. Trans. R. Soc. A 377:201704401 | -| 48 | NSTX gyro-Bohm (Buxton) (H-mode; spherical tokamak) | P. Buxton et al. 2019 Plasma Phys. Control. Fusion 61 035006 | -| 49 | Use input `tauee_in` | | -| 50 | ITPA20 (H-mode) | G. Verdoolaege et al 2021 Nucl. Fusion 61 076006 | +Normally most confinement scalings will be of the form: + +$$ +\tau_{\text{E}} = C I_{\text{p}}^{\alpha_{I}} B_{\text{T}}^{\alpha_{B}} \overline{n}_e^{\alpha_{n}} P_{\text{L}}^{\alpha_{P}} R^{\alpha_{R}} \kappa^{\alpha_{\kappa}} \epsilon^{\alpha_{\epsilon}} M^{\alpha_{M}} +$$ + +Where $\tau_{\text{E}}$ is the confinement time in seconds, $C$ is a coefficient , $I_{\text{p}}$ [MA] is the plasma current, $B_{\text{T}}$ [T] is the toroidal magnetic field, $\overline{n}_e$ [$10^{19} \text{m}^{-3}$] is the electron central line averaged density, $P_{\text{L}}$ [MW] is the loss power, $R$ [m] is the major radius, $\kappa$ is the plasma elongation, +$\epsilon$ is the inverse aspect ratio and $M$ is the average atomic mass of the plasma. + +Classically the loss power, $P_{\text{L}}$ is defined as: + +$$ +P_{\text{L}} = \frac{W}{\tau_{\text{E}}} +$$ + +where $W$ is the total thermal energy of the plasma. We can look at it mainly as the difference in heating and loss powers in the plasma, as such we interpret it as power transported out from the +“core” by charged particles. This leads to the classic definition of loss power for the scaling: + +$$ +P_{\text{L}} = \underbrace{f_{\alpha}P_{\alpha} + P_{\text{c}} + P_{\text{OH}} + P_{\text{HCD}}}_{\text{Plasma heating}} +$$ + +where $f_{\alpha}$ is the [fraction of alpha power that is coupled to the plasma](../physics-models/fusion_reactions/plasma_reactions.md#coupled-alpha-particle-power), $P_{\alpha}$ is the alpha power, $P_{\text{c}}$ is the charged particle power, $P_{\text{OH}}$ is the ohmic heating power, $P_{\text{HCD}}$ is the plasma heating done by the external heating & current drive systems. + +---------- + +## Calculating plasma confinement time | `calculate_confinement_time()` + +The correspoding plasma confinement time is calculated by the `calculate_confinement_time()` function in `physics.py` with scalings taken from `confinement_time.py`. + +A key definition of elongation is defined here and is used mainly in the ITER physics basis scalings [^12]: + +$$ +\kappa_{\text{IPB}} = \frac{V_{\text{p}}}{2\pi R}\frac{1}{\pi a^2} +$$ + +where $V_{\text{p}}$ is the plasma volume, $R$ is the plasma major radius and $a$ is the plasma minor radius. + +The loss power $P_{\text{L}}$ [$\mathtt{p\_plasma\_loss\_mw}$] is calculated from above but may have a separate radiation term depending on the condition of `i_rad_loss` switch below. + + +------------- ### Effect of radiation on energy confinement Published confinement scalings are all based on low radiation pulses. A power -plant will certainly be a high radiation machine --- both in the core, due to +plant will certainly be a high radiation machine, both in the core, due to bremsstrahlung and synchrotron radiation, and in the edge due to impurity -seeding. The scaling data do not predict this radiation --- that needs to be +seeding. The scaling data does not predict this radiation [^24] [^25], that needs to be done by the radiation model. However, if the transport is very "stiff", as predicted by some models, then the additional radiation causes an almost equal drop in power transported by ions and electrons, leaving the confinement nearly unchanged. To allow for these uncertainties, three options are available, using the switch -`iradloss`. In each case, the particle transport loss power `pscaling` is -derived directly from the energy confinement scaling law. - -`iradloss = 0` -- Total power lost is scaling power plus radiation: - -`pscaling + pden_plasma_rad_mw = f_alpha_plasma*alpha_power_density_total + charged_power_density + pden_plasma_ohmic_mw + pinjmw/vol_plasma` - - -`iradloss = 1` -- Total power lost is scaling power plus radiation from a region defined as the "core": - -`pscaling + pcoreradpv = f_alpha_plasma*alpha_power_density_total + charged_power_density + pden_plasma_ohmic_mw + pinjmw/vol_plasma` - -`iradloss = 2` -- Total power lost is scaling power only, with no additional -allowance for radiation. This is not recommended for power plant models. - -`pscaling = f_alpha_plasma*alpha_power_density_total + charged_power_density + pden_plasma_ohmic_mw + pinjmw/vol_plasma` - -## L-H Power Threshold Scalings - -Transitions from a standard confinement mode (L-mode) to an improved -confinement regime (H-mode), called L-H transitions, are observed in most -tokamaks. A range of scaling laws are available that provide estimates of the -heating power required to initiate these transitions, via extrapolations -from present-day devices. PROCESS calculates these power threshold values -for the scaling laws listed in the table below, in routine `pthresh`. - -For an H-mode plasma, use input parameter `ilhthresh` to -select the scaling to use, and turn on constraint equation no. 15 with -iteration variable no. 103 (`flhthresh`). By default, this will ensure -that the power reaching the divertor is at least equal to the threshold power -calculated for the chosen scaling, which is a necessary condition for -H-mode. - -For an L-mode plasma, use input parameter `ilhthresh` to -select the scaling to use, and turn on constraint equation no. 15 with -iteration variable no. 103 (`flhthresh`). Set lower and upper bounds for -the f-value `boundl(103) = 0.001` and `boundu(103) = 1.0` -to ensure that the power does not exceed the calculated threshold, -and therefore the machine remains in L-mode. - - -| `ilhthresh` | Name | Reference | -| :-: | - | - | -| 1 | ITER 1996 nominal | ITER Physics Design Description Document | -| 2 | ITER 1996 upper bound | D. Boucher, p.2-2 | -| 3 | ITER 1996 lower bound | -| 4 | ITER 1997 excluding elongation | J. A. Snipes, ITER H-mode Threshold Database | -| 5 | ITER 1997 including elongation | Working Group, Controlled Fusion and Plasma Physics, 24th EPS conference, Berchtesgaden, June 1997, vol.21A, part III, p.961 | -| 6 | Martin 2008 nominal | Martin et al, 11th IAEA Tech. Meeting | -| 7 | Martin 2008 95% upper bound | H-mode Physics and Transport Barriers, Journal | -| 8 | Martin 2008 95% lower bound | of Physics: Conference Series **123**, 2008 | -| 9 | Snipes 2000 nominal | J. A. Snipes and the International H-mode | -| 10| Snipes 2000 upper bound | Threshold Database Working Group | -| 11| Snipes 2000 lower bound | 2000, Plasma Phys. Control. Fusion, 42, A299 | -| 12| Snipes 2000 (closed divertor): nominal | -| 13| Snipes 2000 (closed divertor): upper bound | -| 14| Snipes 2000 (closed divertor): lower bound | -| 15| Hubbard 2012 L-I threshold scaling: nominal | [Hubbard et al. (2012; Nucl. Fusion 52 114009)](https://iopscience.iop.org/article/10.1088/0029-5515/52/11/114009) | -| 16| Hubbard 2012 L-I threshold scaling: lower bound | [Hubbard et al. (2012; Nucl. Fusion 52 114009)](https://iopscience.iop.org/article/10.1088/0029-5515/52/11/114009 | -| 17| Hubbard 2012 L-I threshold scaling: upper bound | [Hubbard et al. (2012; Nucl. Fusion 52 114009)](https://iopscience.iop.org/article/10.1088/0029-5515/52/11/114009 | -| 18| Hubbard 2017 L-I threshold scaling | [Hubbard et al. (2017; Nucl. Fusion 57 126039)](https://iopscience.iop.org/article/10.1088/1741-4326/aa8570) | -| 19 | Martin 2008 aspect ratio corrected nominal | Martin et al (2008; J Phys Conf, 123, 012033) | -| 20 | Martin 2008 aspect ratio corrected 95% upper bound | [Takizuka et al. (2004; Plasma Phys. Contol. Fusion, 46, A227)](https://iopscience.iop.org/article/10.1088/0741-3335/46/5A/024) | -| 21 | Martin 2008 aspect ratio corrected 95% lower bound | - -## Ignition +`i_rad_loss`. + +- For `i_rad_loss = 0` the total plasma radiation is taken from the loss power. + +$$ +P_{\text{L}} = \underbrace{f_{\alpha}P_{\alpha} + P_{\text{c}} + P_{\text{OH}} + P_{\text{HCD}}}_{\text{Plasma heating}} - P_{\text{rad}} +$$ + +- For `i_rad_loss = 1` the plasma radiation only from the "core" region is taken from the loss power. + +$$ +P_{\text{L}} = \underbrace{f_{\alpha}P_{\alpha} + P_{\text{c}} + P_{\text{OH}} + P_{\text{HCD}}}_{\text{Plasma heating}} - P_{\text{rad,core}} +$$ + +- For `i_rad_loss = 2` the plasma radiation is not taken from the loss power + +$$ +P_{\text{L}} = \underbrace{f_{\alpha}P_{\alpha} + P_{\text{c}} + P_{\text{OH}} + P_{\text{HCD}}}_{\text{Plasma heating}} +$$ + +---------- + +### Ignition Switch `ignite` can be used to denote whether the plasma is ignited, i.e. fully self-sustaining -without the need for any injected auxiliary power during the burn. If `ignite` = 1, the calculated -injected power does not contribute to the plasma power balance, although the cost of the auxiliary -power system is taken into account (the system is then assumed to be required to provide heating -and/or current drive during the plasma start-up phase only). If `ignite` = 0, the plasma is not -ignited, and the auxiliary power is taken into account in the plasma power balance during the burn -phase. An ignited plasma will be difficult to control and is unlikely to be practical. This +without the need for any injected auxiliary power during the burn. If `ignite = 1`, the heating and current drive power $P_{\text{HCD}}$, does not contribute to the loss power term. + +If `ignite = 0`, the plasma is not ignited, and the heating and current drive power $P_{\text{HCD}}$, does contribute to the loss power term. +phase. An ignited plasma will be difficult to control and is unlikely to be practical. This option is not recommended. -[^1]: T. C. Hender et al., 'Physics Assessment for the European Reactor Study', -AEA Fusion Report AEA FUS 172 (1992) -[^2]: N.A. Uckan and ITER Physics Group, 'ITER Physics Design Guidelines: 1989', -ITER Documentation Series, No. 10, IAEA/ITER/DS/10 (1990) \ No newline at end of file +---------- + +### Available confinement time scalings + +Many energy confinement time scaling laws are available within PROCESS, for conventional aspect ratio tokamaks, spherical tokamaks, and stellarators. +The value of `i_confinement_time` determines which of the scalings is used in the plasma energy balance calculation. + +The scaling chosen with `i_confinement_time` is then calculated and multiplied with the $H$-factor [$\mathtt{hfact}$]. $\mathtt{hfact}$ can be set as an interation variable by setting `ixc = 10` in the `IN.DAT` input file. + +--------------- + +#### 0: User input confinement time + +Is selected with `i_confinement_time = 0` + +$$ +\tau_{\text{E}} = \mathtt{t\_electron\_confinement\_in} +$$ + +------------ + +#### 1: Nec-Alcator scaling (Ohmic) + +Is selected with `i_confinement_time = 1`[^1] + +$$ +\tau_{\text{E}} = 0.07 n_{20}aRq_{\text{cyl}} +$$ + +------------ + +#### 2: Mirnov scaling (H-mode) + +Is selected with `i_confinement_time = 2`[^1] + +$$ +\tau_{\text{E}} = 0.2 a \sqrt{\kappa_{95}}I_{\text{p}} +$$ + +------------ + +#### 3: Merezhkin-Mukhovatov scaling (Ohmic / L-mode) + +Is selected with `i_confinement_time = 3`[^1] + +$$ +\tau_{\text{E}} = 0.0035 \overline{n}_{20}a^{0.25}R^{2.75}q_{\text{cyl}}\kappa_{95}^{0.125}M_i^{0.5}T_{10}^{0.5} +$$ + + +--------------- + +#### 4: Shimomura scaling (H-mode) + +Is selected with `i_confinement_time = 4`[^1] + +$$ +\tau_{\text{E}} = 0.045 Ra B_{\text{T}}\sqrt{\kappa_{95}}\sqrt{M_{\text{i}}} +$$ + +---------------- + +#### 5: Kaye-Goldston scaling (L-mode) + +Is selected with `i_confinement_time = 5`[^1] + +$$ +\tau_{\text{E}} = 0.055 I_{\text{p}}^{1.24}P_{\text{L}}^{-0.58}R^{1.65}a^{-0.49}\kappa_{95}^{0.28}n_{20}^{0.26}B_{\text{T}}^{-0.09}\left(\frac{M_{\text{i}}}{1.5}\right)^{0.5} +$$ + +---------------- + +#### 6: ITER 89-P scaling (L-mode) + +Is selected with `i_confinement_time = 6`[^1] [^2] + +$$ +\tau_{\text{E}} = 0.048 I_{\text{p}}^{0.85}R^{1.2}a^{0.3}\kappa^{0.5}\overline{n}_{20}^{0.1}B_{\text{T}}^{0.2}M_{\text{i}}^{0.5} P_{\text{L}}^{-0.5} +$$ + +---------------- + +#### 7: ITER 89-0 scaling (L-mode) + +Is selected with `i_confinement_time = 7` [^2] + +$$ +\begin{aligned} +\tau_E= & 0.04 I_{\text{p}}^{0.5} R^{0.3} a^{0.8} \kappa^{0.6} M_i^{0.5} \\ +& +0.064 I_{\text{p}}^{0.8} R^{1.6} a^{0.6} \kappa^{0.2} \bar{n}_{20}^{0.6} B_0^{0.35} M_i^{0.2} / P_{\text{L}} +\end{aligned} +$$ + +---------------- + +#### 8: Rebut-Lallia scaling (L-mode) + +Is selected with `i_confinement_time = 8` [^2] + +$$ +\begin{aligned} +\tau_E= & 1.65\left[1.2 \times 10^{-5} I_{\text{p}} \ell^{1.5} Z_{e f f}^{-0.5}\right. \\ +& \left.+0.146 \bar{n}_{20}^{0.75} I_{\text{p}}^{0.5} B_0^{0.5} \ell^{2.75} Z_{e f f}^{0.25} / P_{\text{L}}\right]\left(A_i / 2\right)^{0.5} +\end{aligned} +$$ + +where $\ell = \left(a^2R\kappa\right)^{\frac{1}{3}}$ + +---------------- + +#### 9: Goldston scaling (L-mode) + +Is selected with `i_confinement_time = 9` [^1] + +$$ +\tau_{\text{E}} = 0.037 I_{\text{p}} P_{\text{L}}^{-0.5} R^{1.75}a^{-0.37}\kappa_{95}^{0.5} \left(\frac{M_i}{1.5}\right)^{0.5} +$$ + +---------------- + +#### 10: T-10 scaling (L-mode) + +Is selected with `i_confinement_time = 10` [^1] + + +$$ +\tau_{\text{E}} = 0.095 a R B_{\text{T}} \kappa_{95}^{0.5} \frac{\overline{n}_{20}}{\overline{n}_{20*}}P_{\text{L}}^{-0.4} \left[\frac{Z_{\text{eff}}^2 I_{\text{p}}^4}{aRq_{\text{cyl}}^3\kappa_{95}^{1.5}} \right]^{0.08} +$$ + +where $\overline{n}_{20*} = 1.3\left(\frac{B_{\text{T}}}{Rq_{\text{cyl}}}\right)$ and $\frac{\overline{n}_{20}}{\overline{n}_{20*}} \le 1$ + +---------------- + +#### 11: JAERI / Odajima-Shimomura scaling (L-mode) + +Is selected with `i_confinement_time = 11` [^1] + + +$$ +\tau_{\text{E}} = \left[\frac{0.085\kappa_{95}a^2+0.069In_{20}^{0.6}B_{\text{T}}^{0.2}R^{1.6} a^{0.4} \kappa_{95}^{0.2} G\left(q_{\text{cyl}},Z_{\text{eff}}\right)}{P_{\text{L}}}\right]M_{\text{i}}^{0.5} +$$ + +where $G\left(q_{\text{cyl}},Z_{\text{eff}}\right) = Z_{\text{eff}}^{0.4}\left[\frac{\left(15 - Z_{\text{eff}}\right)}{20}\right]^{0.6}\left[3q_{\text{cyl}}\frac{q_{\text{cyl}}+5}{(q_{\text{cyl}}+2)(q_{\text{cyl}}+7)}\right]^{0.6}$ + + +---------------- + +#### 12: Kaye "big" scaling (L-mode) + +Is selected with `i_confinement_time = 12` [^1] + +$$ +\tau_{\text{E}} = 0.1051 I_{\text{p}}^{0.85} P_{\text{L}}^{-0.5} R^{0.5} a^{0.3} \kappa^{0.25} n_{20}^{0.1}B_{\text{T}}^{0.3}M_{\text{i}}^{0.5} +$$ + +------------------------- + +#### 13: ITER H90-P scaling (H-mode) + +Is selected with `i_confinement_time = 13` [^2] + +$$ +\tau_{\text{E}} = 0.064 I_{\text{p}}^{0.87} R^{1.82} a^{-0.12} \kappa_{95}^{0.35} \overline{n}_{20}^{0.09} B_{\text{T}}^{0.15} M_{\text{i}}^{0.5} P_{\text{L}}^{-0.5} +$$ + +------------------------- + +#### 14: Minimum of ITER 89-P and ITER 89-O + +Is selected with `i_confinement_time = 14` [^1] [^2] + +Will return the value of [ITER 89-P](#6-iter-89-p-l-mode-scaling) or [ITER 89-O](#7-iter-89-0-l-mode-scaling), whichever is smaller. + +------------------------- + +#### 15: Riedel scaling (L-mode) + +Is selected with `i_confinement_time = 15` [^2] + +$$ +\tau_{\text{E}} = 0.044 I_{\text{p}}^{0.93} R^{1.37} a^{-0.049} \kappa_{95}^{0.588} \overline{n}_{20}^{0.078} B_{\text{T}}^{0.152} P_{\text{L}}^{-0.537} +$$ + +------------------------- + +#### 16: Christiansen scaling (L-mode) + +Is selected with `i_confinement_time = 16` [^2] + +$$ +\tau_{\text{E}} = 0.24 I_{\text{p}}^{0.79} R^{0.56} a^{1.46} \kappa_{95}^{0.73} \overline{n}_{20}^{0.41} B_{\text{T}}^{0.29} P_{\text{L}}^{-0.79} M_{\text{i}}^{-0.02} +$$ + +------------------------- + +#### 17: Lackner-Gottardi scaling (L-mode) + +Is selected with `i_confinement_time = 17` [^2] + +$$ +\tau_{\text{E}} = 0.12 I_{\text{p}}^{0.8} R^{1.8} a^{0.4} \left(\frac{\kappa_{95}}{\left(1+\kappa_{95}\right)^{0.8}}\right) \overline{n}_{20}^{0.6} \hat{q}^{0.4} P_{\text{L}}^{-0.6} +$$ + +where $\hat{q} = \frac{(1+\kappa_{95}a^2B_{\text{T}})}{0.4 I_{\text{p}} R}$ + +------------------------- + +#### 18: Neo-Kaye scaling (L-mode) + +Is selected with `i_confinement_time = 18` [^2] + +$$ +\tau_{\text{E}} = 0.063 I_{\text{p}}^{1.12} R^{1.3} a^{-0.04} \kappa_{95}^{0.28} \overline{n}_{20}^{0.14} B_{\text{T}}^{0.04} P_{\text{L}}^{-0.59} +$$ + +------------------------- + +#### 19: Riedel scaling (H-mode) + +Is selected with `i_confinement_time = 19` [^2] + +$$ +\tau_{\text{E}} = 0.1 M_{\text{i}}^{0.5} I_{\text{p}}^{0.884} R^{1.24} a^{-0.23} \kappa_{95}^{0.317} \overline{n}_{20}^{0.105} B_{\text{T}}^{0.207} P_{\text{L}}^{-0.486} +$$ + +------------------------- + +#### 20: Amended ITER H90-P scaling (H-mode) + +Is selected with `i_confinement_time = 20` [^3] + +$$ +\tau_{\text{E}} = 0.082 M_{\text{i}}^{0.5} I_{\text{p}}^{1.02} R^{1.6} \kappa_{95}^{-0.19} B_{\text{T}}^{0.15} P_{\text{L}}^{-0.47} +$$ + +------------------------- + +#### 21: Sudo et al. scaling (Stellarator) + +Is selected with `i_confinement_time = 21` [^4] + +$$ +\tau_{\text{E}} = 0.17 P_{\text{L}}^{-0.58} \overline{n}_{20}^{0.69} B^{0.84} a^{2.0} R^{0.75} +$$ + +------------------------- + +#### 22: Gyro reduced Bohm scaling (Stellarator) + +Is selected with `i_confinement_time = 22` [^5] + +$$ +\tau_{\text{E}} = 0.25 P_{\text{L}}^{-0.6} \overline{n}_{20}^{0.6} B_{\text{T}}^{0.8} a^{2.4} R^{0.6} +$$ + +------------------------- + +#### 23: Lackner-Gottardi scaling (Stellarator) + +Is selected with `i_confinement_time = 23` [^6] + +$$ +\tau_{\text{E}} = 0.17 P_{\text{L}}^{-0.6} \overline{n}_{20}^{0.6} B_{\text{T}}^{0.8} a^{2.0} R q_{95}^{0.4} +$$ + +------------------------- + +#### 24: ITER H93 ELM-free scaling (H-mode) + +Is selected with `i_confinement_time = 24` [^7] + +$$ +\tau_{\text{E}} = 0.036 I_{\text{p}}^{1.06} B_{\text{T}}^{0.32} P_{\text{L}}^{-0.67} R^{1.79} \epsilon^{-0.11} \kappa^{0.66} \overline{n}_{20}^{0.17} M_{\text{i}}^{0.41} +$$ + +------------------------- + +#### 25: TITAN Reversed-Field_Pinch scaling + +Is selected with `i_confinement_time = 25` + +!!! warning + This scaling has been removed + +------------------------- + +#### 26: ITER H-97P ELM-free scaling (H-mode) + +Is selected with `i_confinement_time = 26` [^8] + +$$ +\tau_{\text{E}} = 0.031 M_{\text{i}}^{0.42} I_{\text{p}}^{0.95} R^{1.92} \epsilon^{0.08} \kappa_{95}^{0.63} \overline{n}_{19}^{0.35} B_{\text{T}}^{0.25} P_{\text{L}}^{-0.67} +$$ + +------------------------- + +#### 27: ITER H-97P ELMy scaling (H-mode) + +Is selected with `i_confinement_time = 27` [^8] [^9] + +$$ +\tau_{\text{E}} = 0.029 M_{\text{i}}^{0.2} I_{\text{p}}^{0.9} R^{2.03} \epsilon^{-0.19} \kappa_{95}^{0.92} \overline{n}_{19}^{0.4} B_{\text{T}}^{0.20} P_{\text{L}}^{-0.66} +$$ + +------------------------- + +#### 28: ITER-96P (ITER-97L) scaling (L-mode) + +Is selected with `i_confinement_time = 28` [^10] + +$$ +\tau_{\text{E}} = 0.023 M_{\text{i}}^{0.2} I_{\text{p}}^{0.96} R^{1.83} \epsilon^{-0.06} \kappa_{95}^{0.64} \overline{n}_{19}^{0.4} B_{\text{T}}^{0.03} P_{\text{L}}^{-0.73} +$$ + +------------------------- + +#### 29: Valovic modified ELMy scaling (H-mode) + +Is selected with `i_confinement_time = 29` + +$$ +\tau_{\text{E}} = 0.067 M_{\text{i}}^{0.05} I_{\text{p}}^{0.9} R^{1.31} \kappa^{0.56} \overline{n}_{19}^{0.45} B_{\text{T}}^{0.17} P_{\text{L}}^{-0.68} a^{0.79} +$$ + +!!! warning + The origin, name and values of this scaling cannot be confirmed. + +------------------------- + +#### 30: Kaye 98 modified scaling (L-mode) + +Is selected with `i_confinement_time = 30` + +$$ +\tau_{\text{E}} = 0.021 M_{\text{i}}^{0.25} I_{\text{p}}^{0.81} R^{2.01} \kappa^{0.7} \overline{n}_{19}^{0.47} B_{\text{T}}^{0.14} P_{\text{L}}^{-0.73} \epsilon^{0.18} +$$ + +!!! warning + The origin, name and values of this scaling cannot be confirmed. + +------------------------- + +#### 31: ITERH-PB98P(y) scaling (H-mode) + +Is selected with `i_confinement_time = 31` + +$$ +\tau_{\text{E}} = 0.0615 M^{0.2} I_{\text{p}}^{0.9} R^{2.0} \kappa_{\text{IPB}}^{0.75} \overline{n}_{19}^{0.4} B_{\text{T}}^{0.1} P_{\text{L}}^{-0.66} \epsilon^{0.66} +$$ + +!!! warning + The origin, name and values of this scaling cannot be confirmed. + +------------------------- + +#### 32: IPB98(y) ELMy scaling (H-mode) + +Is selected with `i_confinement_time = 32` [^11] [^12] + +$$ +\tau_{\text{E}} = 0.0365 I_{\text{p}}^{0.97} B_{\text{T}}^{0.08} \overline{n}_{19}^{0.41} P_{\text{L}}^{-0.63} R^{1.93} \kappa^{0.67} \epsilon^{0.23} M^{0.2} +$$ + +------------------------- + +#### 33: IPB98(y,1) ELMy scaling (H-mode) + +Is selected with `i_confinement_time = 33` [^11] [^12] + +$$ +\tau_{\text{E}} = 0.0503 I_{\text{p}}^{0.91} B_{\text{T}}^{0.15} \overline{n}_{19}^{0.44} P_{\text{L}}^{-0.65} R^{2.05} \kappa_{\text{IPB}}^{0.72} \epsilon^{0.57} M^{0.13} +$$ + +------------------------- + +#### 34: IPB98(y,2) ELMy scaling (H-mode) + +Is selected with `i_confinement_time = 34` [^11] [^12] + +$$ +\tau_{\text{E}} = 0.0562 I_{\text{p}}^{0.93} B_{\text{T}}^{0.15} \overline{n}_{19}^{0.41} P_{\text{L}}^{-0.69} R^{1.97} \kappa_{\text{IPB}}^{0.78} \epsilon^{0.58} M^{0.19} +$$ + +------------------------- + +#### 35: IPB98(y,3) ELMy scaling (H-mode) + +Is selected with `i_confinement_time = 35` [^11] [^12] + +$$ +\tau_{\text{E}} = 0.0564 I_{\text{p}}^{0.88} B_{\text{T}}^{0.07} \overline{n}_{19}^{0.4} P_{\text{L}}^{-0.69} R^{2.15} \kappa_{\text{IPB}}^{0.78} \epsilon^{0.64} M^{0.2} +$$ + +------------------------- + +#### 36: IPB98(y,4) ELMy scaling (H-mode) + +Is selected with `i_confinement_time = 36` [^11] [^12] + +$$ +\tau_{\text{E}} = 0.0587 I_{\text{p}}^{0.85} B_{\text{T}}^{0.29} \overline{n}_{19}^{0.39} P_{\text{L}}^{-0.7} R^{2.08} \kappa_{\text{IPB}}^{0.76} \epsilon^{0.69} M^{0.17} +$$ + +------------------------- + + +#### 37: ISS95 scaling (Stellarator) + +Is selected with `i_confinement_time = 37` [^13] + +$$ +\tau_{\text{E}} = 0.079 a^{2.21} R^{0.65} P_{\text{L}}^{-0.59} \overline{n}_{19}^{0.51} B_{\text{T}}^{0.83} \iota_{2/3}^{0.4} +$$ + +------------------------- + + +#### 38: ISS04 scaling (Stellarator) + +Is selected with `i_confinement_time = 38` [^14] + +$$ +\tau_{\text{E}} = 0.134 a^{2.28} R^{0.64} P_{\text{L}}^{-0.61} \overline{n}_{19}^{0.54} B_{\text{T}}^{0.84} \iota_{2/3}^{0.41} +$$ + +------------------------- + +#### 39: DS03 beta-independent scaling (H-mode) + +Is selected with `i_confinement_time = 39` [^15] + +$$ +\tau_{\text{E}} = 0.028 I_{\text{p}}^{0.83} B_{\text{T}}^{0.07} \overline{n}_{19}^{0.49} P_{\text{L}}^{-0.55} R^{2.11} \kappa_{95}^{0.75} \epsilon^{0.3} M^{0.14} +$$ + +------------------------- + +#### 40: Murari "Non-power law" scaling (H-mode) + +Is selected with `i_confinement_time = 40` [^16] + +$$ +\tau_{\text{E}} = 0.0367 I_{\text{p}}^{1.006} R^{1.731} \kappa_{\text{IPB}}^{1.45} P_{\text{L}}^{-0.735} \\ +\times \frac{\overline{n}_{19}^{0.49}}{1+e^\left({-9.403\left(\frac{\overline{n}_{19}^{0.49}}{B_{\text{T}}}\right)^{-1.365}}\right)} +$$ + +------------------------- + +#### 41: Petty08 scaling (H-mode) + +Is selected with `i_confinement_time = 41` [^17] + +$$ +\tau_{\text{E}} = 0.052 I_{\text{p}}^{0.75} B_{\text{T}}^{0.3} \overline{n}_{19}^{0.32} P_{\text{L}}^{-0.47} R^{2.09} \kappa_{\text{IPB}}^{0.88} \epsilon^{0.84} +$$ + +------------------------- + +#### 42: Lang high density scaling (H-mode) + +Is selected with `i_confinement_time = 42` [^18] + +$$ +\tau_{\text{E}} = 6.94\times 10^{-7} M^{0.2} \kappa_{\text{IPB}}^{0.37} \left(\frac{q_{95}}{q_{\text{cyl}}}\right)^{0.77} \\ +\times A^{2.48205} \frac{I_{\text{p}}^{1.3678} B_{\text{T}}^{0.12} R^{1.2345} \overline{n}^{0.032236}}{A^{0.9\ln{A}}P_{\text{L}}^{0.74}} \left(\frac{\overline{n}_{e}}{n_{\text{GW}}}\right)^{-0.22 \ln{\left(\frac{\overline{n}_e}{n_{\text{GW}}}\right)}} +$$ + +------------------------- + +#### 43: Hubbard nominal scaling (I-mode) + +Is selected with `i_confinement_time = 43` [^19] + +$$ +\tau_{\text{E}} = 0.014 I_{\text{p}}^{0.68} B_{\text{T}}^{0.77} \overline{n}_{20}^{0.02} P_{\text{L}}^{-0.29} +$$ + +------------------------- + +#### 44: Hubbard lower scaling (I-mode) + +Is selected with `i_confinement_time = 44` [^19] + +$$ +\tau_{\text{E}} = 0.014 I_{\text{p}}^{0.6} B_{\text{T}}^{0.7} \overline{n}_{20}^{-0.03} P_{\text{L}}^{-0.33} +$$ + +------------------------- + +#### 45: Hubbard upper scaling (I-mode) + +Is selected with `i_confinement_time = 45` [^19] + +$$ +\tau_{\text{E}} = 0.014 I_{\text{p}}^{0.76} B_{\text{T}}^{0.84} \overline{n}_{20}^{-0.07} P_{\text{L}}^{-0.25} +$$ + +------------------------- + + +#### 46: Menard NSTX scaling (H-mode) + +Is selected with `i_confinement_time = 46` [^20] + +$$ +\tau_{\text{E}} = 0.095 I_{\text{p}}^{0.75} B_{\text{T}}^{1.08} \overline{n}_{19}^{0.44} P_{\text{L}}^{-0.73} R^{1.97} \kappa_{\text{IPB}}^{0.78} \epsilon^{0.58} M^{0.19} +$$ + +------------------------- + +#### 47: Menard NSTX-Petty08 hybrid scaling + +Is selected with `i_confinement_time = 47` [^20] + +- If $\epsilon \le 0.4 \ (A \ge 2.5)$ apply the [Petty08 scaling](#41-petty-h-mode-scaling) +- If $\epsilon \ge 0.6 \ (A \le 1.7)$ apply the [Menard NSTX scaling](#46-menard-nstx-h-mode-scaling) + +Otherwise: + +$$ +\tau_{\text{E}} = \frac{\epsilon - 0.4}{0.2}\tau_{\text{E,NSTX}}+ \frac{0.6-\epsilon}{0.2}\tau_{\text{E,Petty08}} +$$ + +------------------------- + +#### 48: Buxton NSTX Gyro-Bohm scaling (H-mode) + +Is selected with `i_confinement_time = 48` [^21] + +$$ +\tau_{\text{E}} = 0.21 I_{\text{p}}^{0.54} B_{\text{T}}^{0.91} \overline{n}_{20}^{-0.05} P_{\text{L}}^{-0.38} R^{2.14} +$$ + +------------------------- + +#### 49: ITPA20 scaling (H-mode) + +Is selected with `i_confinement_time = 49` [^22] + +$$ +\tau_{\text{E}} = 0.053 I_{\text{p}}^{0.98} B_{\text{T}}^{0.22} \overline{n}_{19}^{0.24} P_{\text{L}}^{-0.669} R^{1.71} \left(1+\delta \right)^{0.36} \kappa_{\text{IPB}}^{0.8} \epsilon^{0.35} M^{0.2} +$$ + +------------------------- + +#### 50: ITPA20-IL scaling (H-mode) + +Is selected with `i_confinement_time = 50` [^23] + +$$ +\tau_{\text{E}} = 0.067 I_{\text{p}}^{1.29} B_{\text{T}}^{-0.13} P_{\text{L}}^{-0.644} \overline{n}_{19}^{0.15} M^{0.3} R^{1.19} \left(1+\delta \right)^{0.56} \kappa_{\text{IPB}}^{0.67} +$$ + +------------------------- + +### Transport Powers + +After the confinement time scaling with $H$-factor correction has been calculated, the ion and electron transport power densities are found. `PROCESS` assumes the scaling confinement time to be equal to the ion and electron energy confinement time. + +This is simply the volume averaged thermal energy of the electron and ions divided by the $H$-factor corrected confinement time from the chosen scaling. + +$$ +\mathtt{pden\_ion\_transport\_loss\_mw} = \frac{3}{2}\frac{n_{\text{i}} \langle T_{\text{i}} \rangle_{\text{n}}}{\tau_{\text{E}}} +$$ + +$$ +\mathtt{pden\_electron\_transport\_loss\_mw} = \frac{3}{2}\frac{n_{\text{e}} \langle T_{\text{e}} \rangle_{\text{n}}}{\tau_{\text{E}}} +$$ + +Here $\langle T_{\text{i}} \rangle$ and $\langle T_{\text{e}} \rangle$ are the ion and electron density weighted temperatures respectively. + +Calculate the density and density weighted ratio: + +$$ +\frac{n_{\text{i}}}{n_{\text{e}}}\frac{\langle T_{\text{i}} \rangle_{\text{n}}}{\langle T_{\text{e}} \rangle_{\text{n}}} +$$ + +The density weighted global energy confinement time is then found in terms of this ratio: + +$$ +\tau_{\text{E}} = \frac{\frac{n_{\text{i}}}{n_{\text{e}}}\frac{\langle T_{\text{i}} \rangle_{\text{n}}}{\langle T_{\text{e}} \rangle_{\text{n}}} + 1}{\left(\frac{\frac{n_{\text{i}}}{n_{\text{e}}}\frac{\langle T_{\text{i}} \rangle_{\text{n}}}{\langle T_{\text{e}} \rangle_{\text{n}}}}{\tau_{\text{i}}}+\frac{1}{\tau_{\text{e}}}\right)} +$$ + +---------- + +## Key Constraints + +### Global plasma power balance + +This constraint can be activated by stating `icc = 2` in the input file. + +This constraint ensures self consistency between the the transport loss power used for the confinement scalings and the calculated confinement time in relation to the plasmas total thermal energy: + +$$ +P_{\text{L}} = \frac{W}{\tau_{\text{E}}} +$$ + +$$ +\underbrace{\frac{3}{2}\frac{n_{\text{i}} \langle T_{\text{i}} \rangle_{\text{n}}}{\tau_{\text{E}}} + \frac{3}{2}\frac{n_{\text{e}} \langle T_{\text{e}} \rangle_{\text{n}}}{\tau_{\text{E}}}}_{\frac{W}{\tau_{\text{E}}}} = \underbrace{\frac{f_{\alpha}P_{\alpha} + P_{\text{c}} + P_{\text{OH}} + P_{\text{HCD}}}{V_{\text{P}}} - \frac{P_{\text{rad}}}{V_{\text{p}}}}_{P_{\text{L}}} +$$ + +The $\frac{3}{2}n_{\text{i}} \langle T_{\text{i}} \rangle_{\text{n}}$ value is simply the volume averaged ion thermal energy density where $\langle T_{\text{i}} \rangle_{\text{n}}$ is the density weighted temperature. The same goes for the $\frac{3}{2}n_{\text{e}} \langle T_{\text{e}} \rangle_{\text{e}}$ electron thermal energy density term. $\tau_{\text{E}}$ is the confinement time calculated from the chosen confinement scaling via `i_confinement_time`. + +The constraint uses the loss power and thermal densities hence the inclusion of the $V_{\text{p}}$ plasma volume term. The constraint is adapted depending on the condition of `i_rad_loss` which governs the radiation contribution to the loss power definition, see the [radiation and energy confinement section](#effect-of-radiation-on-energy-confinement) for more info. The injected heating and current drive contribution $P_{\text{HCD}}$ is also included or excluded depending if the plasma is deemed to be ignited with the `ignite` switch. + +**It is highly recommended to always have this constraint on as it is a global consistency checker** + +---------- + +### Lower limit on alpha particle confinement time ratio + +This constraint can be activated by stating `icc = 62` in the input file. + +The value of `f_alpha_energy_confinement_min` can be set to the desired minimum total ratio between the alpha confinement and energy confinement times. + + The scaling value `falpha_energy_confinement` can be varied also. + + +[^1]: N. A. Uckan, International Atomic Energy Agency, Vienna (Austria) and ITER Physics Group, "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. +[^2]: T.C. Hender et al., 'Physics Assessment of the European Reactor Study', AEA FUS 172, 1992. +[^3]: J. P. Christiansen et al., “Global energy confinement H-mode database for ITER,” Nuclear Fusion, vol. 32, no. 2, pp. 291-338, Feb. 1992, doi: https://doi.org/10.1088/0029-5515/32/2/i11. +[^4]: S. Sudo et al., “Scalings of energy confinement and density limit in stellarator/heliotron devices,” Nuclear Fusion, vol. 30, no. 1, pp. 11-21, Jan. 1990, doi: https://doi.org/10.1088/0029-5515/30/1/002. +[^5]: Goldston, R. J., H. Biglari, and G. W. Hammett. "E x B/B² vs. µ B/B as the Cause of Transport in Tokamaks." Bull. Am. Phys. Soc 34 (1989): 1964. +[^6]: K. Lackner and N. A. O. Gottardi, “Tokamak confinement in relation to plateau scaling,” Nuclear Fusion, vol. 30, no. 4, pp. 767-770, Apr. 1990, doi: https://doi.org/10.1088/0029-5515/30/4/018. +[^7]: K. Thomsen et al., “ITER H mode confinement database update,” vol. 34, no. 1, pp. 131-167, Jan. 1994, doi: https://doi.org/10.1088/0029-5515/34/1/i10. +[^8]: I. C. Database and M. W. G. (presented Cordey), “Energy confinement scaling and the extrapolation to ITER,” Plasma Physics and Controlled Fusion, vol. 39, no. 12B, pp. B115-B127, Dec. 1997, doi: https://doi.org/10.1088/0741-3335/39/12b/009. +[^9]: International Atomic Energy Agency, Vienna (Austria), "Technical basis for the ITER final design report, cost review and safety analysis (FDR)", no. 16. Dec. 1998. +[^10]: S. B. Kaye et al., “ITER L mode confinement database,” Nuclear Fusion, vol. 37, no. 9, pp. 1303-1328, Sep. 1997, doi: https://doi.org/10.1088/0029-5515/37/9/i10. +[^11]: I. P. E. G. on C. Transport, I. P. E. G. on C. Database, and I. P. B. Editors, “Chapter 2: Plasma confinement and transport,” Nuclear Fusion, vol. 39, no. 12, pp. 2175-2249, Dec. 1999, doi: https://doi.org/10.1088/0029-5515/39/12/302. +[^12]: O. Kardaun, N. K. Thomsen, and A. Chudnovskiy, “Corrections to a sequence of papers in Nuclear Fusion,” Nuclear Fusion, vol. 48, no. 9, pp. 099801-099801, Aug. 2008, doi: https://doi.org/10.1088/0029-5515/48/9/099801. +[^13]: U. Stroth et al., “Energy confinement scaling from the international stellarator database,” vol. 36, no. 8, pp. 1063-1077, Aug. 1996, doi: https://doi.org/10.1088/0029-5515/36/8/i11. +[^14]: H. Yamada et al., “Characterization of energy confinement in net-current free plasmas using the extended International Stellarator Database,” vol. 45, no. 12, pp. 1684-1693, Nov. 2005, doi: https://doi.org/10.1088/0029-5515/45/12/024. +[^15]: T. C. Luce, C. C. Petty, and J. G. Cordey, “Application of dimensionless parameter scaling techniques to the design and interpretation of magnetic fusion experiments,” Plasma Physics and Controlled Fusion, vol. 50, no. 4, p. 043001, Mar. 2008, doi: https://doi.org/10.1088/0741-3335/50/4/043001. +[^16]: A. Murari, E. Peluso, M. Gelfusa, I. Lupelli, and P. Gaudio, “A new approach to the formulation and validation of scaling expressions for plasma confinement in tokamaks,” Nuclear Fusion, vol. 55, no. 7, pp. 073009-073009, Jun. 2015, doi: https://doi.org/10.1088/0029-5515/55/7/073009. +[^17]: C. C. Petty, “Sizing up plasmas using dimensionless parameters,” Physics of Plasmas, vol. 15, no. 8, Aug. 2008, doi: https://doi.org/10.1063/1.2961043. +[^18]: P. T. Lang, C. Angioni, R. M. M. Dermott, R. Fischer, and H. Zohm, “Pellet Induced High Density Phases during ELM Suppression in ASDEX Upgrade,” 24th IAEA Conference Fusion Energy, 2012, Oct. 2012, Available: https://www.researchgate.net/publication/274456104_Pellet_Induced_High_Density_Phases_during_ELM_Suppression_in_ASDEX_Upgrade. +[^19]: A. E. Hubbard et al., “Physics and performance of the I-mode regime over an expanded operating space on Alcator C-Mod,” Nuclear Fusion, vol. 57, no. 12, p. 126039, Oct. 2017, doi: https://doi.org/10.1088/1741-4326/aa8570. +[^20]: J. E. Menard, “Compact steady-state tokamak performance dependence on magnet and core physics limits,” Philosophical Transactions of the Royal Society A, vol. 377, no. 2141, pp. 20170440-20170440, Feb. 2019, doi: https://doi.org/10.1098/rsta.2017.0440. +[^21]: P. F. Buxton, L. Connor, A. E. Costley, M. Gryaznevich, and S. McNamara, “On the energy confinement time in spherical tokamaks: implications for the design of pilot plants and fusion reactors,” vol. 61, no. 3, pp. 035006-035006, Jan. 2019, doi: https://doi.org/10.1088/1361-6587/aaf7e5. +[^22]: G. Verdoolaege et al., “The updated ITPA global H-mode confinement database: description and analysis,” Nuclear Fusion, vol. 61, no. 7, pp. 076006-076006, Jan. 2021, doi: https://doi.org/10.1088/1741-4326/abdb91. +[^23]: T. Luda et al., “Validation of a full-plasma integrated modeling approach on ASDEX Upgrade,” Nuclear Fusion, vol. 61, no. 12, pp. 126048-126048, Nov. 2021, doi: https://doi.org/10.1088/1741-4326/ac3293. +[^24]: H. Lux, R. Kemp, E. Fable, and R. Wenninger, “Radiation and confinement in 0D fusion systems codes,” Plasma Physics and Controlled Fusion, vol. 58, no. 7, pp. 075001–075001, May 2016, doi: https://doi.org/10.1088/0741-3335/58/7/075001. +[^25]: H. Lux, R. Kemp, D. J. Ward, and M. Sertoli, “Impurity radiation in DEMO systems modelling,” Fusion Engineering and Design, vol. 101, pp. 42–51, Dec. 2015, doi: https://doi.org/10.1016/j.fusengdes.2015.10.002. +‌ \ No newline at end of file diff --git a/documentation/proc-pages/physics-models/plasma_h_mode.md b/documentation/proc-pages/physics-models/plasma_h_mode.md new file mode 100644 index 0000000000..6d4e3257d5 --- /dev/null +++ b/documentation/proc-pages/physics-models/plasma_h_mode.md @@ -0,0 +1,47 @@ +## L-H Power Threshold Scalings + +Transitions from a standard confinement mode (L-mode) to an improved +confinement regime (H-mode), called L-H transitions, are observed in most +tokamaks. A range of scaling laws are available that provide estimates of the +heating power required to initiate these transitions, via extrapolations +from present-day devices. PROCESS calculates these power threshold values +for the scaling laws listed in the table below, in routine `pthresh`. + +For an H-mode plasma, use input parameter `ilhthresh` to +select the scaling to use, and turn on constraint equation no. 15 with +iteration variable no. 103 (`flhthresh`). By default, this will ensure +that the power reaching the divertor is at least equal to the threshold power +calculated for the chosen scaling, which is a necessary condition for +H-mode. + +For an L-mode plasma, use input parameter `ilhthresh` to +select the scaling to use, and turn on constraint equation no. 15 with +iteration variable no. 103 (`flhthresh`). Set lower and upper bounds for +the f-value `boundl(103) = 0.001` and `boundu(103) = 1.0` +to ensure that the power does not exceed the calculated threshold, +and therefore the machine remains in L-mode. + + +| `ilhthresh` | Name | Reference | +| :-: | - | - | +| 1 | ITER 1996 nominal | ITER Physics Design Description Document | +| 2 | ITER 1996 upper bound | D. Boucher, p.2-2 | +| 3 | ITER 1996 lower bound | +| 4 | ITER 1997 excluding elongation | J. A. Snipes, ITER H-mode Threshold Database | +| 5 | ITER 1997 including elongation | Working Group, Controlled Fusion and Plasma Physics, 24th EPS conference, Berchtesgaden, June 1997, vol.21A, part III, p.961 | +| 6 | Martin 2008 nominal | Martin et al, 11th IAEA Tech. Meeting | +| 7 | Martin 2008 95% upper bound | H-mode Physics and Transport Barriers, Journal | +| 8 | Martin 2008 95% lower bound | of Physics: Conference Series **123**, 2008 | +| 9 | Snipes 2000 nominal | J. A. Snipes and the International H-mode | +| 10| Snipes 2000 upper bound | Threshold Database Working Group | +| 11| Snipes 2000 lower bound | 2000, Plasma Phys. Control. Fusion, 42, A299 | +| 12| Snipes 2000 (closed divertor): nominal | +| 13| Snipes 2000 (closed divertor): upper bound | +| 14| Snipes 2000 (closed divertor): lower bound | +| 15| Hubbard 2012 L-I threshold scaling: nominal | [Hubbard et al. (2012; Nucl. Fusion 52 114009)](https://iopscience.iop.org/article/10.1088/0029-5515/52/11/114009) | +| 16| Hubbard 2012 L-I threshold scaling: lower bound | [Hubbard et al. (2012; Nucl. Fusion 52 114009)](https://iopscience.iop.org/article/10.1088/0029-5515/52/11/114009 | +| 17| Hubbard 2012 L-I threshold scaling: upper bound | [Hubbard et al. (2012; Nucl. Fusion 52 114009)](https://iopscience.iop.org/article/10.1088/0029-5515/52/11/114009 | +| 18| Hubbard 2017 L-I threshold scaling | [Hubbard et al. (2017; Nucl. Fusion 57 126039)](https://iopscience.iop.org/article/10.1088/1741-4326/aa8570) | +| 19 | Martin 2008 aspect ratio corrected nominal | Martin et al (2008; J Phys Conf, 123, 012033) | +| 20 | Martin 2008 aspect ratio corrected 95% upper bound | [Takizuka et al. (2004; Plasma Phys. Contol. Fusion, 46, A227)](https://iopscience.iop.org/article/10.1088/0741-3335/46/5A/024) | +| 21 | Martin 2008 aspect ratio corrected 95% lower bound | \ No newline at end of file diff --git a/documentation/proc-pages/physics-models/plasma_overview.md b/documentation/proc-pages/physics-models/plasma_overview.md index af1c6a9c1e..44f11bc531 100644 --- a/documentation/proc-pages/physics-models/plasma_overview.md +++ b/documentation/proc-pages/physics-models/plasma_overview.md @@ -16,23 +16,5 @@ domain. More detail is given in [^1], but this webpage is more up to date. -## Other Plasma Physics Options - -### Neo-Classical Correction Effects - -Neo-classical trapped particle effects are -included in the calculation of the plasma resistance and ohmic heating power in -subroutine `plasma_ohmic_heating()`, which is called by routine `physics`. The scaling used is only valid for aspect -ratios between 2.5 and 4, and it is possible for the plasma resistance to be -incorrect or even negative if the aspect ratio is outside this range. An error is reported if the -calculated plasma resistance is negative. - -### Inverse Quadrature in $\tau_E$ Scaling Laws - -Switch `iinvqd` determines whether the energy confinement time scaling -laws due to Kaye-Goldston (`isc = 5`) and Goldston (`isc = 9`) should include -an inverse quadrature scaling with the Neo-Alcator result (`isc = 1`). A value -`iinvqd = 1`includes this scaling. - [^1]: M. Kovari, R. Kemp, H. Lux, P. Knight, J. Morris, D.J. Ward, '“PROCESS”: A systems code for fusion power plants—Part 1: Physics' Fusion Engineering and Design 89 (2014) 3054–3069 diff --git a/examples/data/csv_output_large_tokamak_MFILE.DAT b/examples/data/csv_output_large_tokamak_MFILE.DAT index cf88a76fb9..9f75e96088 100644 --- a/examples/data/csv_output_large_tokamak_MFILE.DAT +++ b/examples/data/csv_output_large_tokamak_MFILE.DAT @@ -82,9 +82,9 @@ ftmargoh________________________________________________________________ (itvar020)____________________ 1.0000E+00 ftmargoh_(final_value/initial_value)____________________________________ (xcm020)______________________ 1.0000E+00 ftmargoh_(range_normalised)_____________________________________________ (nitvar020)___________________ 1.0000E+00 - ftaulimit_______________________________________________________________ (itvar021)____________________ 7.2549E-01 - ftaulimit_(final_value/initial_value)___________________________________ (xcm021)______________________ 7.2549E-01 - ftaulimit_(range_normalised)____________________________________________ (nitvar021)___________________ 7.2521E-01 + falpha_energy_confinement_______________________________________________________________ (itvar021)____________________ 7.2549E-01 + falpha_energy_confinement_(final_value/initial_value)___________________________________ (xcm021)______________________ 7.2549E-01 + falpha_energy_confinement_(range_normalised)____________________________________________ (nitvar021)___________________ 7.2521E-01 ftaucq__________________________________________________________________ (itvar022)____________________ 9.1920E-01 ftaucq_(final_value/initial_value)______________________________________ (xcm022)______________________ 1.0213E+00 ftaucq_(range_normalised)_______________________________________________ (nitvar022)___________________ 9.1912E-01 @@ -176,7 +176,7 @@ J_winding_pack/J_protection_limit_normalised_residue____________________ (normres017)__________________ 2.0761E-13 TF_coil_temp._margin_lower_limit__normalised_residue____________________ (normres018)__________________ -1.2975E-12 CS_temperature_margin_lower_limit_normalised_residue____________________ (normres019)__________________ -0.0000E+00 - taup/taueff_______________________normalised_residue____________________ (normres020)__________________ -4.7055E-09 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres020)__________________ -4.7055E-09 Dump_time_set_by_VV_stress________normalised_residue____________________ (normres021)__________________ 3.0487E-13 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ -4.9472E-13 ne0_>_neped_______________________normalised_residue____________________ (normres023)__________________ 1.2901E-13 @@ -456,8 +456,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.2139E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.7861E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.3659E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.5338E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.3659E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.5338E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 7.5213E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -489,22 +489,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 9.4410E+01 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1808E+00 ITV - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.2379E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.2379E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.2379E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.6225E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.2095E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 2.8997E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.2379E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.2379E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.2379E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.6225E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.2095E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 2.8997E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 8.9376E+01 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 2.2315E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 6.8919E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 2.8266E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 2.2315E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 6.8919E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 2.8266E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.7123E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 2.0262E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7167E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6815E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6815E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.6973E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.3365E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -1346,11 +1346,11 @@ icc = 60 ixc = 106 * ftmargoh tmargmin_cs = 1.5 -* Lower limit on taup/taueff (ratio alpha particle/energy confinement times) * +* Lower limit on f_alpha_energy_confinement (ratio alpha particle/energy confinement times) * *-------------------------------------------------------------------------------* icc = 62 -ixc = 110 * ftaulimit -taulimit = 5.0 +ixc = 110 * falpha_energy_confinement +f_alpha_energy_confinement_min = 5.0 * dump time constraint for VV stresses * *--------------------------------------* @@ -1582,9 +1582,6 @@ i_density_limit = 7 * Switch for fast alpha pressure calculation i_beta_fast_alpha = 1 -* Switch for inverse quadrature in l-mode scaling laws 5 and 9 -iinvqd = 1 - * Switch for pedestal profiles ipedestal = 1 @@ -1616,7 +1613,7 @@ tesep = 0.1 iprofile = 1 * Switch for energy confinement time scaling law -isc = 34 +i_confinement_time = 34 * Safety factor on axis q0 = 1.0 diff --git a/examples/data/large_tokamak_1_MFILE.DAT b/examples/data/large_tokamak_1_MFILE.DAT index 08cd3a26af..40b059ade4 100644 --- a/examples/data/large_tokamak_1_MFILE.DAT +++ b/examples/data/large_tokamak_1_MFILE.DAT @@ -177,7 +177,7 @@ J_winding_pack/J_protection_limit_normalised_residue____________________ (normres017)__________________ -2.9894E-07 TF_coil_temp._margin_lower_limit__normalised_residue____________________ (normres018)__________________ -1.0631E-06 CS_temperature_margin_lower_limit_normalised_residue____________________ (normres019)__________________ 8.0251E-08 - taup/taueff_______________________normalised_residue____________________ (normres020)__________________ -1.8772E-08 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres020)__________________ -1.8772E-08 Dump_time_set_by_VV_stress________normalised_residue____________________ (normres021)__________________ -1.0026E-07 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ -1.6044E-07 ne0_>_neped_______________________normalised_residue____________________ (normres023)__________________ -1.9637E-08 @@ -453,8 +453,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1828E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8172E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.4013E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.5772E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.4013E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.5772E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 8.0143E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -485,22 +485,22 @@ L-H_threshold_power_(enforced)_(MW)_____________________________________ (boundl(103)*plhthresh)_______ 9.7416E+01 OP L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 9.7416E+01 OP Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1886E+00 ITV - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.2037E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.2037E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.2037E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5843E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.2275E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 2.9785E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.2037E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.2037E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.2037E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5843E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.2275E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 2.9785E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 9.1650E+01 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 2.2270E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 6.9512E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 2.8018E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 2.2270E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 6.9512E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 2.8018E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.4553E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.9603E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7266E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6815E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6815E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.5616E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.3585E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -1341,11 +1341,11 @@ icc = 60 ixc = 106 * ftmargoh tmargmin_cs = 1.5 -* Lower limit on taup/taueff (ratio alpha particle/energy confinement times) * +* Lower limit on f_alpha_energy_confinement (ratio alpha particle/energy confinement times) * *-------------------------------------------------------------------------------* icc = 62 -ixc = 110 * ftaulimit -taulimit = 5.0 +ixc = 110 * falpha_energy_confinement +f_alpha_energy_confinement_min = 5.0 * dump time constraint for VV stresses * *--------------------------------------* @@ -1576,9 +1576,6 @@ i_density_limit = 7 * Switch for fast alpha pressure calculation i_beta_fast_alpha = 1 -* Switch for inverse quadrature in l-mode scaling laws 5 and 9 -iinvqd = 1 - * Switch for pedestal profiles ipedestal = 1 @@ -1610,7 +1607,7 @@ tesep = 0.1 iprofile = 1 * Switch for energy confinement time scaling law -isc = 34 +i_confinement_time = 34 * Safety factor on axis q0 = 1.0 diff --git a/examples/data/large_tokamak_2_MFILE.DAT b/examples/data/large_tokamak_2_MFILE.DAT index 996702e0a9..60fac31f8a 100644 --- a/examples/data/large_tokamak_2_MFILE.DAT +++ b/examples/data/large_tokamak_2_MFILE.DAT @@ -177,7 +177,7 @@ J_winding_pack/J_protection_limit_normalised_residue____________________ (normres017)__________________ -2.9894E-07 TF_coil_temp._margin_lower_limit__normalised_residue____________________ (normres018)__________________ -1.0631E-06 CS_temperature_margin_lower_limit_normalised_residue____________________ (normres019)__________________ 8.0251E-08 - taup/taueff_______________________normalised_residue____________________ (normres020)__________________ -1.8772E-08 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres020)__________________ -1.8772E-08 Dump_time_set_by_VV_stress________normalised_residue____________________ (normres021)__________________ -1.0026E-07 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ -1.6044E-07 ne0_>_neped_______________________normalised_residue____________________ (normres023)__________________ -1.9637E-08 @@ -453,8 +453,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1828E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8172E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.4013E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.5772E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.4013E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.5772E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 8.0143E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -485,22 +485,22 @@ L-H_threshold_power_(enforced)_(MW)_____________________________________ (boundl(103)*plhthresh)_______ 9.7416E+01 OP L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 9.7416E+01 OP Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1886E+00 ITV - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.2037E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.2037E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.2037E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5843E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.2275E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 2.9785E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.2037E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.2037E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.2037E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5843E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.2275E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 2.9785E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 9.1650E+01 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 2.2270E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 6.9512E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 2.8018E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 2.2270E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 6.9512E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 2.8018E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.4553E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.9603E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7266E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6815E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6815E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.5616E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.3585E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -1341,11 +1341,11 @@ icc = 60 ixc = 106 * ftmargoh tmargmin_cs = 1.5 -* Lower limit on taup/taueff (ratio alpha particle/energy confinement times) * +* Lower limit on f_alpha_energy_confinement (ratio alpha particle/energy confinement times) * *-------------------------------------------------------------------------------* icc = 62 -ixc = 110 * ftaulimit -taulimit = 5.0 +ixc = 110 * falpha_energy_confinement +f_alpha_energy_confinement_min = 5.0 * dump time constraint for VV stresses * *--------------------------------------* @@ -1576,9 +1576,6 @@ i_density_limit = 7 * Switch for fast alpha pressure calculation i_beta_fast_alpha = 1 -* Switch for inverse quadrature in l-mode scaling laws 5 and 9 -iinvqd = 1 - * Switch for pedestal profiles ipedestal = 1 @@ -1610,7 +1607,7 @@ tesep = 0.1 iprofile = 1 * Switch for energy confinement time scaling law -isc = 34 +i_confinement_time = 34 * Safety factor on axis q0 = 1.0 diff --git a/examples/data/large_tokamak_3_MFILE.DAT b/examples/data/large_tokamak_3_MFILE.DAT index 14466747cd..3d9ad7a0ca 100644 --- a/examples/data/large_tokamak_3_MFILE.DAT +++ b/examples/data/large_tokamak_3_MFILE.DAT @@ -177,7 +177,7 @@ J_winding_pack/J_protection_limit_normalised_residue____________________ (normres017)__________________ -2.9894E-07 TF_coil_temp._margin_lower_limit__normalised_residue____________________ (normres018)__________________ -1.0631E-06 CS_temperature_margin_lower_limit_normalised_residue____________________ (normres019)__________________ 8.0251E-08 - taup/taueff_______________________normalised_residue____________________ (normres020)__________________ -1.8772E-08 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres020)__________________ -1.8772E-08 Dump_time_set_by_VV_stress________normalised_residue____________________ (normres021)__________________ -1.0026E-07 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ -1.6044E-07 ne0_>_neped_______________________normalised_residue____________________ (normres023)__________________ -1.9637E-08 @@ -453,8 +453,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1828E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8172E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.4013E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.5772E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.4013E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.5772E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 8.0143E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -485,22 +485,22 @@ L-H_threshold_power_(enforced)_(MW)_____________________________________ (boundl(103)*plhthresh)_______ 9.7416E+01 OP L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 9.7416E+01 OP Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1886E+00 ITV - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.2037E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.2037E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.2037E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5843E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.2275E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 2.9785E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.2037E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.2037E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.2037E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5843E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.2275E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 2.9785E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 9.1650E+01 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 2.2270E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 6.9512E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 2.8018E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 2.2270E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 6.9512E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 2.8018E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.4553E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.9603E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7266E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6815E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6815E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.5616E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.3585E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -1341,11 +1341,11 @@ icc = 60 ixc = 106 * ftmargoh tmargmin_cs = 1.5 -* Lower limit on taup/taueff (ratio alpha particle/energy confinement times) * +* Lower limit on f_alpha_energy_confinement (ratio alpha particle/energy confinement times) * *-------------------------------------------------------------------------------* icc = 62 -ixc = 110 * ftaulimit -taulimit = 5.0 +ixc = 110 * falpha_energy_confinement +f_alpha_energy_confinement_min = 5.0 * dump time constraint for VV stresses * *--------------------------------------* @@ -1576,8 +1576,6 @@ i_density_limit = 7 * Switch for fast alpha pressure calculation i_beta_fast_alpha = 1 -* Switch for inverse quadrature in l-mode scaling laws 5 and 9 -iinvqd = 1 * Switch for pedestal profiles ipedestal = 1 @@ -1610,7 +1608,7 @@ tesep = 0.1 iprofile = 1 * Switch for energy confinement time scaling law -isc = 34 +i_confinement_time = 34 * Safety factor on axis q0 = 1.0 diff --git a/examples/data/large_tokamak_4_MFILE.DAT b/examples/data/large_tokamak_4_MFILE.DAT index cce76ccd92..e8e1b49ddc 100644 --- a/examples/data/large_tokamak_4_MFILE.DAT +++ b/examples/data/large_tokamak_4_MFILE.DAT @@ -177,7 +177,7 @@ J_winding_pack/J_protection_limit_normalised_residue____________________ (normres017)__________________ -2.9894E-07 TF_coil_temp._margin_lower_limit__normalised_residue____________________ (normres018)__________________ -1.0631E-06 CS_temperature_margin_lower_limit_normalised_residue____________________ (normres019)__________________ 8.0251E-08 - taup/taueff_______________________normalised_residue____________________ (normres020)__________________ -1.8772E-08 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres020)__________________ -1.8772E-08 Dump_time_set_by_VV_stress________normalised_residue____________________ (normres021)__________________ -1.0026E-07 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ -1.6044E-07 ne0_>_neped_______________________normalised_residue____________________ (normres023)__________________ -1.9637E-08 @@ -453,8 +453,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1828E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8172E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.4013E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.5772E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.4013E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.5772E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 8.0143E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -485,22 +485,22 @@ L-H_threshold_power_(enforced)_(MW)_____________________________________ (boundl(103)*plhthresh)_______ 9.7416E+01 OP L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 9.7416E+01 OP Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1886E+00 ITV - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.2037E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.2037E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.2037E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5843E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.2275E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 2.9785E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.2037E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.2037E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.2037E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5843E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.2275E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 2.9785E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 9.1650E+01 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 2.2270E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 6.9512E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 2.8018E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 2.2270E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 6.9512E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 2.8018E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.4553E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.9603E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7266E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6815E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6815E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.5616E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.3585E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -1341,11 +1341,11 @@ icc = 60 ixc = 106 * ftmargoh tmargmin_cs = 1.5 -* Lower limit on taup/taueff (ratio alpha particle/energy confinement times) * +* Lower limit on f_alpha_energy_confinement (ratio alpha particle/energy confinement times) * *-------------------------------------------------------------------------------* icc = 62 -ixc = 110 * ftaulimit -taulimit = 5.0 +ixc = 110 * falpha_energy_confinement +f_alpha_energy_confinement_min = 5.0 * dump time constraint for VV stresses * *--------------------------------------* @@ -1576,8 +1576,6 @@ i_density_limit = 7 * Switch for fast alpha pressure calculation i_beta_fast_alpha = 1 -* Switch for inverse quadrature in l-mode scaling laws 5 and 9 -iinvqd = 1 * Switch for pedestal profiles ipedestal = 1 @@ -1610,7 +1608,7 @@ tesep = 0.1 iprofile = 1 * Switch for energy confinement time scaling law -isc = 34 +i_confinement_time = 34 * Safety factor on axis q0 = 1.0 diff --git a/examples/data/large_tokamak_IN.DAT b/examples/data/large_tokamak_IN.DAT index fabb66df82..954c779ae8 100644 --- a/examples/data/large_tokamak_IN.DAT +++ b/examples/data/large_tokamak_IN.DAT @@ -151,11 +151,11 @@ icc = 60 ixc = 106 * ftmargoh tmargmin_cs = 1.5 -* Lower limit on taup/taueff (ratio alpha particle/energy confinement times) * +* Lower limit on f_alpha_energy_confinement (ratio alpha particle/energy confinement times) * *-------------------------------------------------------------------------------* icc = 62 -ixc = 110 * ftaulimit -taulimit = 5.0 +ixc = 110 * falpha_energy_confinement +f_alpha_energy_confinement_min = 5.0 * dump time constraint for VV stresses * *--------------------------------------* @@ -386,8 +386,6 @@ i_density_limit = 7 * Switch for fast alpha pressure calculation i_beta_fast_alpha = 1 -* Switch for inverse quadrature in l-mode scaling laws 5 and 9 -iinvqd = 1 * Switch for pedestal profiles ipedestal = 1 @@ -420,7 +418,7 @@ tesep = 0.1 iprofile = 1 * Switch for energy confinement time scaling law -isc = 34 +i_confinement_time = 34 * Safety factor on axis q0 = 1.0 diff --git a/examples/data/scan_MFILE.DAT b/examples/data/scan_MFILE.DAT index 03be68e9fc..7f888ab8d3 100644 --- a/examples/data/scan_MFILE.DAT +++ b/examples/data/scan_MFILE.DAT @@ -163,7 +163,7 @@ CS_temperature_margin_lower_limit_normalised_residue____________________ (normres021)__________________ 2.1072E-13 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ 9.0616E-13 Peak_toroidal_field_upper_limit___normalised_residue____________________ (normres023)__________________ -9.2149E-15 - taup/taueff_______________________normalised_residue____________________ (normres024)__________________ 7.0988E-13 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres024)__________________ 7.0988E-13 # Final Feasible Point # # Plant Availability # Allowable_blanket_neutron_fluence_(MW-yr/m2)____________________________ (abktflnc)____________________ 1.5000E+01 @@ -309,8 +309,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1857E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8143E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.5736E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.7258E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.5736E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.7258E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 5.1000E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -342,22 +342,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 1.1353E+02 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1000E+00 - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.6434E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.6434E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.6434E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5918E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.1834E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 3.2994E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.6434E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.6434E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.6434E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5918E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.1834E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 3.2994E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 1.0500E+02 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 1.8217E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 5.0000E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 3.1997E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 1.8217E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 5.0000E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 3.1997E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.1498E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.7778E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7276E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6812E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6812E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.9243E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.9934E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -1158,7 +1158,7 @@ CS_temperature_margin_lower_limit_normalised_residue____________________ (normres021)__________________ 6.4393E-15 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ 1.3700E-13 Peak_toroidal_field_upper_limit___normalised_residue____________________ (normres023)__________________ -4.4409E-16 - taup/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.7518E-14 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.7518E-14 # Final Feasible Point # # Plant Availability # Allowable_blanket_neutron_fluence_(MW-yr/m2)____________________________ (abktflnc)____________________ 1.5000E+01 @@ -1304,8 +1304,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1857E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8143E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.5736E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.7258E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.5736E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.7258E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 5.1000E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -1337,22 +1337,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 1.1353E+02 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1000E+00 - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.6434E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.6434E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.6434E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5918E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.1834E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 3.2994E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.6434E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.6434E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.6434E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5918E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.1834E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 3.2994E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 1.0500E+02 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 1.8217E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 5.0000E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 3.1997E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 1.8217E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 5.0000E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 3.1997E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.1498E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.7778E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7276E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6812E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6812E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.9243E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.9934E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -2153,7 +2153,7 @@ CS_temperature_margin_lower_limit_normalised_residue____________________ (normres021)__________________ 3.7748E-15 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ 1.2701E-13 Peak_toroidal_field_upper_limit___normalised_residue____________________ (normres023)__________________ -7.7716E-16 - taup/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.7296E-14 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.7296E-14 # Final Feasible Point # # Plant Availability # Allowable_blanket_neutron_fluence_(MW-yr/m2)____________________________ (abktflnc)____________________ 1.5000E+01 @@ -2299,8 +2299,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1857E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8143E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.5736E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.7258E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.5736E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.7258E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 5.1000E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -2332,22 +2332,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 1.1353E+02 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1000E+00 - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.6434E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.6434E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.6434E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5918E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.1834E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 3.2994E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.6434E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.6434E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.6434E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5918E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.1834E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 3.2994E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 1.0500E+02 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 1.8217E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 5.0000E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 3.1997E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 1.8217E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 5.0000E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 3.1997E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.1498E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.7778E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7276E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6812E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6812E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.9243E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.9934E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -3148,7 +3148,7 @@ CS_temperature_margin_lower_limit_normalised_residue____________________ (normres021)__________________ 2.2204E-15 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ 1.1480E-13 Peak_toroidal_field_upper_limit___normalised_residue____________________ (normres023)__________________ -3.3307E-16 - taup/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.5963E-14 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.5963E-14 # Final Feasible Point # # Plant Availability # Allowable_blanket_neutron_fluence_(MW-yr/m2)____________________________ (abktflnc)____________________ 1.5000E+01 @@ -3294,8 +3294,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1857E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8143E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.5736E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.7258E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.5736E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.7258E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 5.1000E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -3327,22 +3327,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 1.1353E+02 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1000E+00 - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.6434E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.6434E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.6434E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5918E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.1834E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 3.2994E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.6434E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.6434E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.6434E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5918E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.1834E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 3.2994E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 1.0500E+02 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 1.8217E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 5.0000E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 3.1997E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 1.8217E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 5.0000E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 3.1997E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.1498E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.7778E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7276E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6812E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6812E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.9243E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.9934E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -4143,7 +4143,7 @@ CS_temperature_margin_lower_limit_normalised_residue____________________ (normres021)__________________ 5.7732E-15 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ 1.0392E-13 Peak_toroidal_field_upper_limit___normalised_residue____________________ (normres023)__________________ -9.9920E-16 - taup/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.8406E-14 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.8406E-14 # Final Feasible Point # # Plant Availability # Allowable_blanket_neutron_fluence_(MW-yr/m2)____________________________ (abktflnc)____________________ 1.5000E+01 @@ -4289,8 +4289,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1857E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8143E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.5736E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.7258E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.5736E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.7258E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 5.1000E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -4322,22 +4322,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 1.1353E+02 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1000E+00 - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.6434E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.6434E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.6434E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5918E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.1834E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 3.2994E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.6434E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.6434E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.6434E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5918E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.1834E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 3.2994E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 1.0500E+02 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 1.8217E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 5.0000E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 3.1997E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 1.8217E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 5.0000E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 3.1997E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.1498E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.7778E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7276E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6812E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6812E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.9243E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.9934E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -5138,7 +5138,7 @@ CS_temperature_margin_lower_limit_normalised_residue____________________ (normres021)__________________ 6.8834E-15 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ 9.5257E-14 Peak_toroidal_field_upper_limit___normalised_residue____________________ (normres023)__________________ -1.2212E-15 - taup/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.9738E-14 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.9738E-14 # Final Feasible Point # # Plant Availability # Allowable_blanket_neutron_fluence_(MW-yr/m2)____________________________ (abktflnc)____________________ 1.5000E+01 @@ -5284,8 +5284,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1857E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8143E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.5736E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.7258E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.5736E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.7258E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 5.1000E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -5317,22 +5317,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 1.1353E+02 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1000E+00 - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.6434E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.6434E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.6434E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5918E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.1834E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 3.2994E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.6434E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.6434E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.6434E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5918E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.1834E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 3.2994E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 1.0500E+02 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 1.8217E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 5.0000E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 3.1997E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 1.8217E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 5.0000E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 3.1997E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.1498E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.7778E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7276E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6812E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6812E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.9243E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.9934E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -6133,7 +6133,7 @@ CS_temperature_margin_lower_limit_normalised_residue____________________ (normres021)__________________ 1.9984E-15 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ 8.0380E-14 Peak_toroidal_field_upper_limit___normalised_residue____________________ (normres023)__________________ -1.2212E-15 - taup/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.9516E-14 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres024)__________________ 4.9516E-14 # Final Feasible Point # # Plant Availability # Allowable_blanket_neutron_fluence_(MW-yr/m2)____________________________ (abktflnc)____________________ 1.5000E+01 @@ -6279,8 +6279,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1857E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8143E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.5736E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.7258E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.5736E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.7258E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 5.1000E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -6312,22 +6312,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 1.1353E+02 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1000E+00 - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.6434E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.6434E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.6434E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5918E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.1834E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 3.2994E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.6434E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.6434E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.6434E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5918E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.1834E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 3.2994E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 1.0500E+02 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 1.8217E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 5.0000E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 3.1997E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 1.8217E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 5.0000E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 3.1997E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.1498E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.7778E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7276E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6812E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6812E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.9243E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.9934E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -7128,7 +7128,7 @@ CS_temperature_margin_lower_limit_normalised_residue____________________ (normres021)__________________ 1.1102E-15 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ 7.8382E-14 Peak_toroidal_field_upper_limit___normalised_residue____________________ (normres023)__________________ -7.7716E-16 - taup/taueff_______________________normalised_residue____________________ (normres024)__________________ 5.2847E-14 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres024)__________________ 5.2847E-14 # Final Feasible Point # # Plant Availability # Allowable_blanket_neutron_fluence_(MW-yr/m2)____________________________ (abktflnc)____________________ 1.5000E+01 @@ -7274,8 +7274,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1857E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8143E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.5736E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.7258E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.5736E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.7258E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 5.1000E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -7307,22 +7307,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 1.1353E+02 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1000E+00 - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.6434E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.6434E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.6434E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5918E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.1834E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 3.2994E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.6434E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.6434E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.6434E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5918E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.1834E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 3.2994E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 1.0500E+02 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 1.8217E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 5.0000E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 3.1997E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 1.8217E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 5.0000E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 3.1997E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.1498E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.7778E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7276E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6812E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6812E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.9243E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.9934E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -8123,7 +8123,7 @@ CS_temperature_margin_lower_limit_normalised_residue____________________ (normres021)__________________ 4.2188E-15 CS_Tresca_yield_criterion_________normalised_residue____________________ (normres022)__________________ 6.8168E-14 Peak_toroidal_field_upper_limit___normalised_residue____________________ (normres023)__________________ -1.2212E-15 - taup/taueff_______________________normalised_residue____________________ (normres024)__________________ 5.6399E-14 + t_alpha_confinement/taueff_______________________normalised_residue____________________ (normres024)__________________ 5.6399E-14 # Final Feasible Point # # Plant Availability # Allowable_blanket_neutron_fluence_(MW-yr/m2)____________________________ (abktflnc)____________________ 1.5000E+01 @@ -8269,8 +8269,8 @@ Fraction_of_alpha_power_deposited_in_plasma_____________________________ (falpha)______________________ 9.5000E-01 Fraction_of_alpha_power_to_electrons____________________________________ (falpe)_______________________ 7.1857E-01 Fraction_of_alpha_power_to_ions_________________________________________ (falpi)_______________________ 2.8143E-01 - Ion_transport_(MW)______________________________________________________ (ptrimw)______________________ 1.5736E+02 OP - Electron_transport_(MW)_________________________________________________ (ptremw)______________________ 1.7258E+02 OP + Ion_transport_(MW)______________________________________________________ (p_ion_transport_loss_mw)______________________ 1.5736E+02 OP + Electron_transport_(MW)_________________________________________________ (p_electron_transport_loss_mw)______________________ 1.7258E+02 OP Injection_power_to_ions_(MW)____________________________________________ (pinjimw)_____________________ 0.0000E+00 OP Injection_power_to_electrons_(MW)_______________________________________ (pinjemw)_____________________ 5.1000E+01 OP Ignited_plasma_switch_(0=not_ignited,_1=ignited)________________________ (ignite)______________________ 0 @@ -8302,22 +8302,22 @@ L-H_threshold_power_(MW)________________________________________________ (plhthresh)___________________ 1.1353E+02 OP Confinement_scaling_law_________________________________________________ (tauelaw)_____________________ "IPB98(y,2)" Confinement_H_factor____________________________________________________ (hfact)_______________________ 1.1000E+00 - Global_thermal_energy_confinement_time_(s)______________________________ (taueff)______________________ 3.6434E+00 - Ion_energy_confinement_time_(s)_________________________________________ (tauei)_______________________ 3.6434E+00 - Electron_energy_confinement_time_(s)____________________________________ (tauee)_______________________ 3.6434E+00 - n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (dntau)_______________________ 2.5918E+20 OP - Triple_product__(keV_s/m3)______________________________________________ (dntau*te)____________________ 3.1834E+21 OP - Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (powerht)_____________________ 3.2994E+02 OP - Switch_for_radiation_loss_term_usage_in_power_balance___________________ (iradloss)____________________ 1 + Global_thermal_energy_confinement_time_(s)______________________________ (t_energy_confinement)______________________ 3.6434E+00 + Ion_energy_confinement_time_(s)_________________________________________ (t_ion_energy_confinement)_______________________ 3.6434E+00 + Electron_energy_confinement_time_(s)____________________________________ (t_electron_energy_confinement)_______________________ 3.6434E+00 + n.tau_=_Volume-average_electron_density_x_Energy_confinement_time_(s/m3) (ntau)_______________________ 2.5918E+20 OP + Triple_product__(keV_s/m3)______________________________________________ (nTtau)____________________ 3.1834E+21 OP + Transport_loss_power_assumed_in_scaling_law_(MW)________________________ (p_plasma_loss_mw)_____________________ 3.2994E+02 OP + Switch_for_radiation_loss_term_usage_in_power_balance___________________ (i_rad_loss)____________________ 1 Radiation_power_subtracted_from_plasma_power_balance_(MW)_______________ ______________________________ 1.0500E+02 OP - Alpha_particle_confinement_time_(s)_____________________________________ (taup)________________________ 1.8217E+01 - Alpha_particle/energy_confinement_time_ratio____________________________ (taup/taueff)_________________ 5.0000E+00 - Lower_limit_on_taup/taueff______________________________________________ (taulimit)____________________ 5.0000E+00 - Total_energy_confinement_time_including_radiation_loss_(s)______________ (total_energy_conf_time)______ 3.1997E+00 + Alpha_particle_confinement_time_(s)_____________________________________ (t_alpha_confinement)________________________ 1.8217E+01 + Alpha_particle/energy_confinement_time_ratio____________________________ (f_alpha_energy_confinement)_________________ 5.0000E+00 + Lower_limit_on_taup/taueff______________________________________________ (f_alpha_energy_confinement_min)____________________ 5.0000E+00 + Total_energy_confinement_time_including_radiation_loss_(s)______________ (t_energy_confinement_beta)______ 3.1997E+00 Normalized_plasma_pressure_beta_as_defined_by_McDonald_et_al____________ (beta_mcdonald)_______________ 3.1498E-02 OP Normalized_ion_Larmor_radius____________________________________________ (rho_star)____________________ 1.7778E-03 OP Normalized_collisionality_______________________________________________ (nu_star)_____________________ 3.7276E-03 OP - Volume_measure_of_elongation____________________________________________ (kappaa_IPB)__________________ 1.6812E+00 OP + Volume_measure_of_elongation____________________________________________ (kappa_ipb)__________________ 1.6812E+00 OP Total_volt-second_requirement_(Wb)______________________________________ (vsstt)_______________________ 5.9243E+02 OP Inductive_volt-seconds_(Wb)_____________________________________________ (vsind)_______________________ 2.9934E+02 OP Ejima_coefficient_______________________________________________________ (gamma)_______________________ 3.0000E-01 @@ -9000,7 +9000,7 @@ icc = 65 * dumpt time by VV stresses icc = 60 * OH coil temp margin icc = 72 * OH stress limit icc = 25 * Max TF field -icc = 62 * taulimit +icc = 62 * f_alpha_energy_confinement_min *---------------Iteration Variables----------------* @@ -9069,7 +9069,7 @@ ixc = 106 * ftmargoh ixc = 122 * oh_steel_frac ixc = 123 * foh_stress ixc = 109 * f_nd_alpha_electron -ixc = 110 * ftaulimit +ixc = 110 * falpha_energy_confinement isweep = 9 nsweep = 60 @@ -9244,7 +9244,6 @@ i_plasma_current = 4 * Switch for plasma current scaling to use; i_density_limit = 7 * Switch for density limit to enforce (constraint equation 5); i_beta_fast_alpha = 1 * Switch for fast alpha pressure calculation; ifispact = 0 * Switch for neutronics calculations; -iinvqd = 1 * Switch for inverse quadrature in l-mode scaling laws 5 and 9; ipedestal = 1 * Switch for pedestal profiles; fgwped = 0.85 * fraction of Greenwald density to set as pedestal-top density neped = 0.678e20 * Electron density of pedestal (/m3) (ipedestal=1) INITIAL VALUE @@ -9255,7 +9254,7 @@ tbeta = 2.0 * Temperature profile index beta (ipedestal=1) teped = 5.5 * Electron temperature of pedestal (kev) (ipedestal=1) tesep = 0.1 * Electron temperature at separatrix (kev) (ipedestal=1) iprofile = 1 * Switch for current profile consistency; -isc = 34 * Switch for energy confinement time scaling law +i_confinement_time = 34 * Switch for energy confinement time scaling law i_plasma_geometry = 0 * Switch for plasma cross-sectional shape calculation: use input kappa & triang *kappa = 1.7808 kappa = 1.848 @@ -9353,4 +9352,4 @@ t_burn = 1.0d4 * Burn time (s) (calculated if lpulse=1) oh_steel_frac = 5.7875E-01 foh_stress = 1.0000E+00 f_nd_alpha_electron = 6.8940E-02 - ftaulimit = 1.0000E+00 \ No newline at end of file + falpha_energy_confinement = 1.0000E+00 \ No newline at end of file diff --git a/examples/data/scan_example_file_IN.DAT b/examples/data/scan_example_file_IN.DAT index 25a6c7c19e..c79826c230 100644 --- a/examples/data/scan_example_file_IN.DAT +++ b/examples/data/scan_example_file_IN.DAT @@ -151,11 +151,11 @@ icc = 60 ixc = 106 * ftmargoh tmargmin_cs = 1.5 -* Lower limit on taup/taueff (ratio alpha particle/energy confinement times) * +* Lower limit on f_alpha_energy_confinement (ratio alpha particle/energy confinement times) * *-------------------------------------------------------------------------------* icc = 62 -ixc = 110 * ftaulimit -taulimit = 5.0 +ixc = 110 * falpha_energy_confinement +f_alpha_energy_confinement_min = 5.0 * dump time constraint for VV stresses * *--------------------------------------* @@ -386,8 +386,6 @@ i_density_limit = 7 * Switch for fast alpha pressure calculation i_beta_fast_alpha = 1 -* Switch for inverse quadrature in l-mode scaling laws 5 and 9 -iinvqd = 1 * Switch for pedestal profiles ipedestal = 1 @@ -420,7 +418,7 @@ tesep = 0.1 iprofile = 1 * Switch for energy confinement time scaling law -isc = 34 +i_confinement_time = 34 * Safety factor on axis q0 = 1.0 diff --git a/mkdocs.yml b/mkdocs.yml index b0228303f0..36a7f10dde 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -67,6 +67,7 @@ nav: - Inductive Current: physics-models/plasma_current/inductive_plasma_current.md - Plasma Resistive Heating: physics-models/plasma_current/plasma_resistive_heating.md - Confinement time: physics-models/plasma_confinement.md + - H-mode: physics-models/plasma_h_mode.md - Plasma Core Power Balance: physics-models/plasma_power_balance.md - Pulsed Plant Operation: physics-models/pulsed-plant.md - Engineering Models: diff --git a/process/confinement_time.py b/process/confinement_time.py new file mode 100644 index 0000000000..7654eb7764 --- /dev/null +++ b/process/confinement_time.py @@ -0,0 +1,2131 @@ +import numpy as np + + +def neo_alcator_confinement_time( + dene20: float, rminor: float, rmajor: float, qstar: float +) -> float: + """ + Calculate the Nec-Alcator(NA) OH scaling confinement time + + Parameters: + dene20 (float): Volume averaged electron density in units of 10**20 m**-3 + rminor (float): Plasma minor radius [m] + rmajor (float): Plasma major radius [m] + qstar (float): Equivalent cylindrical edge safety factor + + Returns: + float: Neo-Alcator confinement time [s] + + Notes: + + References: + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + + """ + return 0.07e0 * dene20 * rminor * rmajor * rmajor * qstar + + +def mirnov_confinement_time(rminor: float, kappa95: float, pcur: float) -> float: + """ + Calculate the Mirnov scaling (H-mode) confinement time + + Parameters: + hfact (float): H-factor + rminor (float): Plasma minor radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + pcur (float): Plasma current [MA] + + Returns: + float: Mirnov scaling confinement time [s] + + Notes: + + References: + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + """ + return 0.2e0 * rminor * np.sqrt(kappa95) * pcur + + +def merezhkin_muhkovatov_confinement_time( + rmajor: float, + rminor: float, + kappa95: float, + qstar: float, + dnla20: float, + afuel: float, + ten: float, +) -> float: + """ + Calculate the Merezhkin-Mukhovatov (MM) OH/L-mode scaling confinement time + + Parameters: + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + qstar (float): Equivalent cylindrical edge safety factor + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + afuel (float): Fuel atomic mass number + ten (float): Electron temperature [keV] + + Returns: + float: Merezhkin-Mukhovatov confinement time [s] + + Notes: + + References: + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + """ + return ( + 3.5e-3 + * rmajor**2.75e0 + * rminor**0.25e0 + * kappa95**0.125e0 + * qstar + * dnla20 + * np.sqrt(afuel) + / np.sqrt(ten / 10.0e0) + ) + + +def shimomura_confinement_time( + rmajor: float, rminor: float, bt: float, kappa95: float, afuel: float +) -> float: + """ + Calculate the Shimomura (S) optimized H-mode scaling confinement time + + Parameters: + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + bt (float): Toroidal magnetic field [T] + kappa95 (float): Plasma elongation at 95% flux surface + afuel (float): Fuel atomic mass number + + Returns: + float: Shimomura confinement time [s] + + Notes: + + References: + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + """ + return 0.045e0 * rmajor * rminor * bt * np.sqrt(kappa95) * np.sqrt(afuel) + + +def kaye_goldston_confinement_time( + kappa95: float, + pcur: float, + n20: float, + rmajor: float, + afuel: float, + bt: float, + rminor: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Kaye-Goldston (KG) L-mode scaling confinement time + + Parameters: + hfact (float): H-factor + kappa95 (float): Plasma elongation at 95% flux surface + pcur (float): Plasma current [MA] + n20 (float): Line averaged electron density in units of 10**20 m**-3 + rmajor (float): Plasma major radius [m] + afuel (float): Fuel atomic mass number + bt (float): Toroidal magnetic field [T] + rminor (float): Plasma minor radius [m] + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Kaye-Goldston confinement time [s] + + Notes: + - An isotope correction factor (M_i/1.5)^0.5 is added to the original scaling to reflect the fact + that the empirical fits to the data were from experiments with H and D mixture, M_i = 1.5 + + References: + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + """ + return ( + 0.055e0 + * kappa95**0.28e0 + * pcur**1.24e0 + * n20**0.26e0 + * rmajor**1.65e0 + * np.sqrt(afuel / 1.5e0) + / (bt**0.09e0 * rminor**0.49e0 * p_plasma_loss_mw**0.58e0) + ) + + +def iter_89p_confinement_time( + pcur: float, + rmajor: float, + rminor: float, + kappa: float, + dnla20: float, + bt: float, + afuel: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the ITER Power scaling - ITER 89-P (L-mode) confinement time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa (float): Plasma elongation + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + afuel (float): Fuel atomic mass number + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: ITER 89-P confinement time [s] + + Notes: + + References: + - T.C.Hender et.al., 'Physics Assesment of the European Reactor Study', AEA FUS 172, 1992 + + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + """ + return ( + 0.048e0 + * pcur**0.85e0 + * rmajor**1.2e0 + * rminor**0.3e0 + * np.sqrt(kappa) + * dnla20**0.1e0 + * bt**0.2e0 + * np.sqrt(afuel) + / np.sqrt(p_plasma_loss_mw) + ) + + +def iter_89_0_confinement_time( + pcur: float, + rmajor: float, + rminor: float, + kappa: float, + dnla20: float, + bt: float, + afuel: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the ITER Offset linear scaling - ITER 89-O (L-mode) confinement time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa (float): Plasma elongation + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + afuel (float): Fuel atomic mass number + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: ITER 89-O confinement time [s] + + Notes: + + References: + - T.C.Hender et.al., 'Physics Assesment of the European Reactor Study', AEA FUS 172, 1992 + + """ + term1 = ( + 0.04e0 + * pcur**0.5e0 + * rmajor**0.3e0 + * rminor**0.8e0 + * kappa**0.6e0 + * afuel**0.5e0 + ) + term2 = ( + 0.064e0 + * pcur**0.8e0 + * rmajor**1.6e0 + * rminor**0.6e0 + * kappa**0.5e0 + * dnla20**0.6e0 + * bt**0.35e0 + * afuel**0.2e0 + / p_plasma_loss_mw + ) + return term1 + term2 + + +def rebut_lallia_confinement_time( + rminor: float, + rmajor: float, + kappa: float, + afuel: float, + pcur: float, + zeff: float, + dnla20: float, + bt: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Rebut-Lallia offset linear scaling (L-mode) confinement time + + Parameters: + rminor (float): Plasma minor radius [m] + rmajor (float): Plasma major radius [m] + kappa (float): Plasma elongation at 95% flux surface + afuel (float): Fuel atomic mass number + pcur (float): Plasma current [MA] + zeff (float): Effective charge + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Rebut-Lallia confinement time [s] + + Notes: + + References: + - T.C.Hender et.al., 'Physics Assesment of the European Reactor Study', AEA FUS 172, 1992 + """ + rll = (rminor**2 * rmajor * kappa) ** (1.0e0 / 3.0e0) + term1 = 1.2e-2 * pcur * rll**1.5e0 / np.sqrt(zeff) + term2 = ( + 0.146e0 + * dnla20**0.75e0 + * np.sqrt(pcur) + * np.sqrt(bt) + * rll**2.75e0 + * zeff**0.25e0 + / p_plasma_loss_mw + ) + return 1.65e0 * np.sqrt(afuel / 2.0e0) * (term1 + term2) + + +def goldston_confinement_time( + pcur: float, + rmajor: float, + rminor: float, + kappa95: float, + afuel: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Goldston scaling (L-mode) confinement time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + afuel (float): Fuel atomic mass number + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Goldston confinement time [s] + + Notes: + + References: + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + + """ + return ( + 0.037e0 + * pcur + * rmajor**1.75e0 + * rminor ** (-0.37e0) + * np.sqrt(kappa95) + * np.sqrt(afuel / 1.5e0) + / np.sqrt(p_plasma_loss_mw) + ) + + +def t10_confinement_time( + dnla20: float, + rmajor: float, + qstar: float, + bt: float, + rminor: float, + kappa95: float, + p_plasma_loss_mw: float, + zeff: float, + pcur: float, +) -> float: + """ + Calculate the T-10 scaling confinement time + + Parameters: + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + rmajor (float): Plasma major radius [m] + qstar (float): Equivalent cylindrical edge safety factor + bt (float): Toroidal magnetic field [T] + rminor (float): Plasma minor radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + p_plasma_loss_mw (float): Net Heating power [MW] + zeff (float): Effective charge + pcur (float): Plasma current [MA] + + Returns: + float: T-10 confinement time [s] + + Notes: + + References: + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + """ + denfac = dnla20 * rmajor * qstar / (1.3e0 * bt) + denfac = min(1.0e0, denfac) + return ( + 0.095e0 + * rmajor + * rminor + * bt + * np.sqrt(kappa95) + * denfac + / p_plasma_loss_mw**0.4e0 + * (zeff**2 * pcur**4 / (rmajor * rminor * qstar**3 * kappa95**1.5e0)) ** 0.08e0 + ) + + +def jaeri_confinement_time( + kappa95: float, + rminor: float, + afuel: float, + n20: float, + pcur: float, + bt: float, + rmajor: float, + qstar: float, + zeff: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the JAERI / Odajima-Shimomura L-mode scaling confinement time + + Parameters: + kappa95 (float): Plasma elongation at 95% flux surface + rminor (float): Plasma minor radius [m] + afuel (float): Fuel atomic mass number + n20 (float): Line averaged electron density in units of 10**20 m**-3 + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + rmajor (float): Plasma major radius [m] + qstar (float): Equivalent cylindrical edge safety factor + zeff (float): Effective charge + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: JAERI confinement time [s] + + Notes: + + References: + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + """ + gjaeri = ( + zeff**0.4e0 + * ((15.0e0 - zeff) / 20.0e0) ** 0.6e0 + * (3.0e0 * qstar * (qstar + 5.0e0) / ((qstar + 2.0e0) * (qstar + 7.0e0))) + ** 0.6e0 + ) + return ( + 0.085e0 * kappa95 * rminor**2 * np.sqrt(afuel) + + 0.069e0 + * n20**0.6e0 + * pcur + * bt**0.2e0 + * rminor**0.4e0 + * rmajor**1.6e0 + * np.sqrt(afuel) + * gjaeri + * kappa95**0.2e0 + / p_plasma_loss_mw + ) + + +def kaye_big_confinement_time( + rmajor: float, + rminor: float, + bt: float, + kappa95: float, + pcur: float, + n20: float, + afuel: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Kaye-Big scaling confinement time + + Parameters: + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + bt (float): Toroidal magnetic field [T] + kappa95 (float): Plasma elongation at 95% flux surface + pcur (float): Plasma current [MA] + n20 (float): Line averaged electron density in units of 10**20 m**-3 + afuel (float): Fuel atomic mass number + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Kaye-Big confinement time [s] + + Notes: + + References: + - N. A. Uckan, International Atomic Energy Agency, Vienna (Austria)and ITER Physics Group, + "ITER physics design guidelines: 1989", no. No. 10. Feb. 1990. + """ + return ( + 0.105e0 + * np.sqrt(rmajor) + * rminor**0.8e0 + * bt**0.3e0 + * kappa95**0.25e0 + * pcur**0.85e0 + * n20**0.1e0 + * np.sqrt(afuel) + / np.sqrt(p_plasma_loss_mw) + ) + + +def iter_h90_p_confinement_time( + pcur: float, + rmajor: float, + rminor: float, + kappa: float, + dnla20: float, + bt: float, + afuel: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the ITER H-mode scaling - ITER H90-P confinement time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa (float): Plasma elongation + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + afuel (float): Fuel atomic mass number + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: ITER H90-P confinement time [s] + + Notes: + + References: + - T.C.Hender et.al., 'Physics Assesment of the European Reactor Study', AEA FUS 172, 1992 + """ + return ( + 0.064e0 + * pcur**0.87e0 + * rmajor**1.82e0 + * rminor ** (-0.12e0) + * kappa**0.35e0 + * dnla20**0.09e0 + * bt**0.15e0 + * np.sqrt(afuel) + / np.sqrt(p_plasma_loss_mw) + ) + + +def riedel_l_confinement_time( + pcur: float, + rmajor: float, + rminor: float, + kappa95: float, + dnla20: float, + bt: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Riedel scaling (L-mode) confinement time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Riedel confinement time [s] + + Notes: + + References: + - T.C.Hender et.al., 'Physics Assesment of the European Reactor Study', AEA FUS 172, 1992 + """ + return ( + 0.044e0 + * pcur**0.93e0 + * rmajor**1.37e0 + * rminor ** (-0.049e0) + * kappa95**0.588e0 + * dnla20**0.078e0 + * bt**0.152e0 + / p_plasma_loss_mw**0.537e0 + ) + + +def christiansen_confinement_time( + pcur: float, + rmajor: float, + rminor: float, + kappa95: float, + dnla20: float, + bt: float, + p_plasma_loss_mw: float, + afuel: float, +) -> float: + """ + Calculate the Christiansen et al scaling (L-mode) confinement time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + afuel (float): Fuel atomic mass number + + Returns: + float: Christiansen confinement time [s] + + Notes: + + References: + - T.C.Hender et.al., 'Physics Assesment of the European Reactor Study', AEA FUS 172, 1992 + """ + return ( + 0.24e0 + * pcur**0.79e0 + * rmajor**0.56e0 + * rminor**1.46e0 + * kappa95**0.73e0 + * dnla20**0.41e0 + * bt**0.29e0 + / (p_plasma_loss_mw**0.79e0 * afuel**0.02e0) + ) + + +def lackner_gottardi_confinement_time( + pcur: float, + rmajor: float, + rminor: float, + kappa95: float, + dnla20: float, + bt: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Lackner-Gottardi scaling (L-mode) confinement time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Lackner-Gottardi confinement time [s] + + Notes: + + References: + - T.C.Hender et.al., 'Physics Assesment of the European Reactor Study', AEA FUS 172, 1992 + + """ + qhat = (1.0e0 + kappa95**2) * rminor**2 * bt / (0.4e0 * pcur * rmajor) + return ( + 0.12e0 + * pcur**0.8e0 + * rmajor**1.8e0 + * rminor**0.4e0 + * kappa95 + * (1.0e0 + kappa95) ** (-0.8e0) + * dnla20**0.6e0 + * qhat**0.4e0 + / p_plasma_loss_mw**0.6e0 + ) + + +def neo_kaye_confinement_time( + pcur: float, + rmajor: float, + rminor: float, + kappa95: float, + dnla20: float, + bt: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Neo-Kaye scaling (L-mode) confinement time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Neo-Kaye confinement time [s] + + Notes: + + References: + - T.C.Hender et.al., 'Physics Assesment of the European Reactor Study', AEA FUS 172, 1992 + """ + return ( + 0.063e0 + * pcur**1.12e0 + * rmajor**1.3e0 + * rminor ** (-0.04e0) + * kappa95**0.28e0 + * dnla20**0.14e0 + * bt**0.04e0 + / p_plasma_loss_mw**0.59e0 + ) + + +def riedel_h_confinement_time( + pcur: float, + rmajor: float, + rminor: float, + kappa95: float, + dnla20: float, + bt: float, + afuel: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Riedel scaling (H-mode) confinement time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + afuel (float): Fuel atomic mass number + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Riedel H-mode confinement time [s] + + Notes: + + References: + - T.C.Hender et.al., 'Physics Assesment of the European Reactor Study', AEA FUS 172, 1992 + """ + return ( + 0.1e0 + * np.sqrt(afuel) + * pcur**0.884e0 + * rmajor**1.24e0 + * rminor ** (-0.23e0) + * kappa95**0.317e0 + * bt**0.207e0 + * dnla20**0.105e0 + / p_plasma_loss_mw**0.486e0 + ) + + +def iter_h90_p_amended_confinement_time( + pcur: float, + bt: float, + afuel: float, + rmajor: float, + p_plasma_loss_mw: float, + kappa: float, +) -> float: + """ + Calculate the amended ITER H90-P confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + afuel (float): Fuel atomic mass number + rmajor (float): Plasma major radius [m] + p_plasma_loss_mw (float): Net Heating power [MW] + kappa (float): Plasma elongation + + Returns: + float: Amended ITER H90-P confinement time [s] + + Notes: + + References: + - J. P. Christiansen et al., “Global energy confinement H-mode database for ITER,” + Nuclear Fusion, vol. 32, no. 2, pp. 291-338, Feb. 1992, + doi: https://doi.org/10.1088/0029-5515/32/2/i11. + ‌ + """ + return ( + 0.082e0 + * pcur**1.02e0 + * bt**0.15e0 + * np.sqrt(afuel) + * rmajor**1.60e0 + / (p_plasma_loss_mw**0.47e0 * kappa**0.19e0) + ) + + +def sudo_et_al_confinement_time( + rmajor: float, + rminor: float, + dnla20: float, + bt: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Sudo et al. scaling confinement time + + Parameters: + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Sudo et al. confinement time [s] + + Notes: + + References: + - S. Sudo et al., “Scalings of energy confinement and density limit in stellarator/heliotron devices,” + Nuclear Fusion, vol. 30, no. 1, pp. 11-21, Jan. 1990, + doi: https://doi.org/10.1088/0029-5515/30/1/002. + ‌""" + + return ( + 0.17e0 + * rmajor**0.75e0 + * rminor**2 + * dnla20**0.69e0 + * bt**0.84e0 + * p_plasma_loss_mw ** (-0.58e0) + ) + + +def gyro_reduced_bohm_confinement_time( + bt: float, + dnla20: float, + p_plasma_loss_mw: float, + rminor: float, + rmajor: float, +) -> float: + """ + Calculate the Gyro-reduced Bohm scaling confinement time + + Parameters: + bt (float): Toroidal magnetic field [T] + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rminor (float): Plasma minor radius [m] + rmajor (float): Plasma major radius [m] + + Returns: + float: Gyro-reduced Bohm confinement time [s] + + Notes: + + References: + - Goldston, R. J., H. Biglari, and G. W. Hammett. "E x B/B 2 vs. µ B/B as the Cause of Transport in Tokamaks." + Bull. Am. Phys. Soc 34 (1989): 1964. + """ + return ( + 0.25e0 + * bt**0.8e0 + * dnla20**0.6e0 + * p_plasma_loss_mw ** (-0.6e0) + * rminor**2.4e0 + * rmajor**0.6e0 + ) + + +def lackner_gottardi_stellarator_confinement_time( + rmajor: float, + rminor: float, + dnla20: float, + bt: float, + p_plasma_loss_mw: float, + q: float, +) -> float: + """ + Calculate the Lackner-Gottardi stellarator scaling confinement time + + Parameters: + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + q (float): Edge safety factor + + Returns: + float: Lackner-Gottardi stellarator confinement time [s] + + Notes: + + References: + - K. Lackner and N. A. O. Gottardi, “Tokamak confinement in relation to plateau scaling,” + Nuclear Fusion, vol. 30, no. 4, pp. 767-770, Apr. 1990, + doi: https://doi.org/10.1088/0029-5515/30/4/018. + ‌ + """ + return ( + 0.17e0 + * rmajor + * rminor**2 + * dnla20**0.6e0 + * bt**0.8e0 + * p_plasma_loss_mw ** (-0.6e0) + * q**0.4e0 + ) + + +def iter_93h_confinement_time( + pcur: float, + bt: float, + p_plasma_loss_mw: float, + afuel: float, + rmajor: float, + dnla20: float, + aspect: float, + kappa: float, +) -> float: + """ + Calculate the ITER-93H scaling ELM-free confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + afuel (float): Fuel atomic mass number + rmajor (float): Plasma major radius [m] + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + aspect (float): Aspect ratio + kappa (float): Plasma elongation + + Returns: + float: ITER-93H confinement time [s] + + Notes: + + References: + - K. Thomsen et al., “ITER H mode confinement database update,” + vol. 34, no. 1, pp. 131-167, Jan. 1994, doi: https://doi.org/10.1088/0029-5515/34/1/i10. + + """ + return ( + 0.036e0 + * pcur**1.06e0 + * bt**0.32e0 + * p_plasma_loss_mw ** (-0.67e0) + * afuel**0.41e0 + * rmajor**1.79e0 + * dnla20**0.17e0 + * aspect**0.11e0 + * kappa**0.66e0 + ) + + +def iter_h97p_confinement_time( + pcur: float, + bt: float, + p_plasma_loss_mw: float, + dnla19: float, + rmajor: float, + aspect: float, + kappa: float, + afuel: float, +) -> float: + """ + Calculate the ELM-free ITER H-mode scaling - ITER H97-P confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + rmajor (float): Plasma major radius [m] + aspect (float): Aspect ratio + kappa (float): Plasma elongation + afuel (float): Fuel atomic mass number + + Returns: + float: ITER H97-P confinement time [s] + + Notes: + + References: + - I. C. Database and M. W. G. (presented Cordey), “Energy confinement scaling and the extrapolation to ITER,” + Plasma Physics and Controlled Fusion, vol. 39, no. 12B, pp. B115-B127, Dec. 1997, + doi: https://doi.org/10.1088/0741-3335/39/12b/009. + ‌ + """ + return ( + 0.031e0 + * pcur**0.95e0 + * bt**0.25e0 + * p_plasma_loss_mw ** (-0.67e0) + * dnla19**0.35e0 + * rmajor**1.92e0 + * aspect ** (-0.08e0) + * kappa**0.63e0 + * afuel**0.42e0 + ) + + +def iter_h97p_elmy_confinement_time( + pcur: float, + bt: float, + p_plasma_loss_mw: float, + dnla19: float, + rmajor: float, + aspect: float, + kappa: float, + afuel: float, +) -> float: + """ + Calculate the ELMy ITER H-mode scaling - ITER H97-P(y) confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + rmajor (float): Plasma major radius [m] + aspect (float): Aspect ratio + kappa (float): Plasma elongation + afuel (float): Fuel atomic mass number + + Returns: + float: ITER H97-P(y) confinement time [s] + + Notes: + + References: + - I. C. Database and M. W. G. (presented Cordey), “Energy confinement scaling and the extrapolation to ITER,” + Plasma Physics and Controlled Fusion, vol. 39, no. 12B, pp. B115-B127, Dec. 1997, + doi: https://doi.org/10.1088/0741-3335/39/12b/009. + + - International Atomic Energy Agency, Vienna (Austria), "Technical basis for the ITER final design report, cost review and safety analysis (FDR)", + no.16. Dec. 1998. + """ + return ( + 0.029e0 + * pcur**0.90e0 + * bt**0.20e0 + * p_plasma_loss_mw ** (-0.66e0) + * dnla19**0.40e0 + * rmajor**2.03e0 + * aspect ** (-0.19e0) + * kappa**0.92e0 + * afuel**0.2e0 + ) + + +def iter_96p_confinement_time( + pcur: float, + bt: float, + kappa95: float, + rmajor: float, + aspect: float, + dnla19: float, + afuel: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the ITER-96P (= ITER-97L) L-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + kappa95 (float): Plasma elongation at 95% flux surface + rmajor (float): Plasma major radius [m] + aspect (float): Aspect ratio + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + afuel (float): Fuel atomic mass number + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: ITER-96P confinement time [s] + + Notes: + - The thermal energy confinement time is given below + + References: + - S. B. Kaye et al., “ITER L mode confinement database,” + Nuclear Fusion, vol. 37, no. 9, pp. 1303-1328, Sep. 1997, + doi: https://doi.org/10.1088/0029-5515/37/9/i10. + ‌ + """ + return ( + 0.023e0 + * pcur**0.96e0 + * bt**0.03e0 + * kappa95**0.64e0 + * rmajor**1.83e0 + * aspect**0.06e0 + * dnla19**0.40e0 + * afuel**0.20e0 + * p_plasma_loss_mw ** (-0.73e0) + ) + + +def valovic_elmy_confinement_time( + pcur: float, + bt: float, + dnla19: float, + afuel: float, + rmajor: float, + rminor: float, + kappa: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Valovic modified ELMy-H mode scaling confinement time + + Parameters: + hfact (float): H-factor + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + afuel (float): Fuel atomic mass number + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + kappa (float): Plasma elongation + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Valovic modified ELMy-H mode confinement time [s] + + Notes: + + References: + """ + return ( + 0.067e0 + * pcur**0.9e0 + * bt**0.17e0 + * dnla19**0.45e0 + * afuel**0.05e0 + * rmajor**1.316e0 + * rminor**0.79e0 + * kappa**0.56e0 + * p_plasma_loss_mw ** (-0.68e0) + ) + + +def kaye_confinement_time( + pcur: float, + bt: float, + kappa: float, + rmajor: float, + aspect: float, + dnla19: float, + afuel: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Kaye PPPL Workshop April 1998 L-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + kappa (float): Plasma elongation + rmajor (float): Plasma major radius [m] + aspect (float): Aspect ratio + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + afuel (float): Fuel atomic mass number + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Kaye PPPL Workshop confinement time [s] + + Notes: + + References: + - Kaye PPPL Workshop April 1998 + """ + return ( + 0.021e0 + * pcur**0.81e0 + * bt**0.14e0 + * kappa**0.7e0 + * rmajor**2.01e0 + * aspect ** (-0.18e0) + * dnla19**0.47e0 + * afuel**0.25e0 + * p_plasma_loss_mw ** (-0.73e0) + ) + + +def iter_pb98py_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa: float, + aspect: float, + afuel: float, +) -> float: + """ + Calculate the ITERH-PB98P(y) ELMy H-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa (float): Plasma elongation + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + + Returns: + float: ITERH-PB98P(y) ELMy H-mode confinement time [s] + + Notes: + + References: + + """ + return ( + 0.0615e0 + * pcur**0.9e0 + * bt**0.1e0 + * dnla19**0.4e0 + * p_plasma_loss_mw ** (-0.66e0) + * rmajor**2 + * kappa**0.75e0 + * aspect ** (-0.66e0) + * afuel**0.2e0 + ) + + +def iter_ipb98y_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa: float, + aspect: float, + afuel: float, +) -> float: + """ + Calculate the IPB98(y) ELMy H-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa (float): Plasma separatrix elongation + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + + Returns: + float: IPB98(y) ELMy H-mode confinement time [s] + + Notes: + - Unlike the other IPB98 scaling laws, the IPB98(y) scaling law uses the true separatrix elongation. + - See correction paper below for more information + + References: + - I. P. E. G. on C. Transport, I. P. E. G. on C. Database, and I. P. B. Editors, “Chapter 2: Plasma confinement and transport,” + Nuclear Fusion, vol. 39, no. 12, pp. 2175-2249, Dec. 1999, doi: https://doi.org/10.1088/0029-5515/39/12/302. + + - None Otto Kardaun, N. K. Thomsen, and None Alexander Chudnovskiy, “Corrections to a sequence of papers in Nuclear Fusion,” + Nuclear Fusion, vol. 48, no. 9, pp. 099801-099801, Aug. 2008, doi: https://doi.org/10.1088/0029-5515/48/9/099801. + + """ + return ( + 0.0365e0 + * pcur**0.97e0 + * bt**0.08e0 + * dnla19**0.41e0 + * p_plasma_loss_mw ** (-0.63e0) + * rmajor**1.93e0 + * kappa**0.67e0 + * aspect ** (-0.23e0) + * afuel**0.2e0 + ) + + +def iter_ipb98y1_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa_ipb: float, + aspect: float, + afuel: float, +) -> float: + """ + Calculate the IPB98(y,1) ELMy H-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa_ipb (float): IPB sprcific plasma separatrix elongation + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + + Returns: + float: IPB98(y,1) ELMy H-mode confinement time [s] + + Notes: + - See correction paper below for more information about the re-definition of the elongation used. + + References: + - I. P. E. G. on C. Transport, I. P. E. G. on C. Database, and I. P. B. Editors, “Chapter 2: Plasma confinement and transport,” + Nuclear Fusion, vol. 39, no. 12, pp. 2175-2249, Dec. 1999, doi: https://doi.org/10.1088/0029-5515/39/12/302. + + - None Otto Kardaun, N. K. Thomsen, and None Alexander Chudnovskiy, “Corrections to a sequence of papers in Nuclear Fusion,” + Nuclear Fusion, vol. 48, no. 9, pp. 099801-099801, Aug. 2008, doi: https://doi.org/10.1088/0029-5515/48/9/099801. + + """ + return ( + 0.0503e0 + * pcur**0.91e0 + * bt**0.15e0 + * dnla19**0.44e0 + * p_plasma_loss_mw ** (-0.65e0) + * rmajor**2.05e0 + * kappa_ipb**0.72e0 + * aspect ** (-0.57e0) + * afuel**0.13e0 + ) + + +def iter_ipb98y2_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa_ipb: float, + aspect: float, + afuel: float, +) -> float: + """ + Calculate the IPB98(y,2) ELMy H-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa_ipb (float): IPB specific plasma separatrix elongation + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + + Returns: + float: IPB98(y,2) ELMy H-mode confinement time [s] + + Notes: + - See correction paper below for more information about the re-definition of the elongation used. + + References: + - I. P. E. G. on C. Transport, I. P. E. G. on C. Database, and I. P. B. Editors, “Chapter 2: Plasma confinement and transport,” + Nuclear Fusion, vol. 39, no. 12, pp. 2175-2249, Dec. 1999, doi: https://doi.org/10.1088/0029-5515/39/12/302. + + - None Otto Kardaun, N. K. Thomsen, and None Alexander Chudnovskiy, “Corrections to a sequence of papers in Nuclear Fusion,” + Nuclear Fusion, vol. 48, no. 9, pp. 099801-099801, Aug. 2008, doi: https://doi.org/10.1088/0029-5515/48/9/099801. + """ + return ( + 0.0562e0 + * pcur**0.93e0 + * bt**0.15e0 + * dnla19**0.41e0 + * p_plasma_loss_mw ** (-0.69e0) + * rmajor**1.97e0 + * kappa_ipb**0.78e0 + * aspect ** (-0.58e0) + * afuel**0.19e0 + ) + + +def iter_ipb98y3_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa_ipb: float, + aspect: float, + afuel: float, +) -> float: + """ + Calculate the IPB98(y,3) ELMy H-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa_ipb (float): IPB specific plasma separatrix elongation + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + + Returns: + float: IPB98(y,3) ELMy H-mode confinement time [s] + + Notes: + - See correction paper below for more information about the re-definition of the elongation used. + + References: + - I. P. E. G. on C. Transport, I. P. E. G. on C. Database, and I. P. B. Editors, “Chapter 2: Plasma confinement and transport,” + Nuclear Fusion, vol. 39, no. 12, pp. 2175-2249, Dec. 1999, doi: https://doi.org/10.1088/0029-5515/39/12/302. + + - None Otto Kardaun, N. K. Thomsen, and None Alexander Chudnovskiy, “Corrections to a sequence of papers in Nuclear Fusion,” + Nuclear Fusion, vol. 48, no. 9, pp. 099801-099801, Aug. 2008, doi: https://doi.org/10.1088/0029-5515/48/9/099801. + """ + return ( + 0.0564e0 + * pcur**0.88e0 + * bt**0.07e0 + * dnla19**0.40e0 + * p_plasma_loss_mw ** (-0.69e0) + * rmajor**2.15e0 + * kappa_ipb**0.78e0 + * aspect ** (-0.64e0) + * afuel**0.20e0 + ) + + +def iter_ipb98y4_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa_ipb: float, + aspect: float, + afuel: float, +) -> float: + """ + Calculate the IPB98(y,4) ELMy H-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa_ipb (float): IPB specific plasma separatrix elongation + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + + Returns: + float: IPB98(y,4) ELMy H-mode confinement time [s] + + Notes: + - See correction paper below for more information about the re-definition of the elongation used. + + References: + - I. P. E. G. on C. Transport, I. P. E. G. on C. Database, and I. P. B. Editors, “Chapter 2: Plasma confinement and transport,” + Nuclear Fusion, vol. 39, no. 12, pp. 2175-2249, Dec. 1999, doi: https://doi.org/10.1088/0029-5515/39/12/302. + + - None Otto Kardaun, N. K. Thomsen, and None Alexander Chudnovskiy, “Corrections to a sequence of papers in Nuclear Fusion,” + Nuclear Fusion, vol. 48, no. 9, pp. 099801-099801, Aug. 2008, doi: https://doi.org/10.1088/0029-5515/48/9/099801. + """ + return ( + 0.0587e0 + * pcur**0.85e0 + * bt**0.29e0 + * dnla19**0.39e0 + * p_plasma_loss_mw ** (-0.70e0) + * rmajor**2.08e0 + * kappa_ipb**0.76e0 + * aspect ** (-0.69e0) + * afuel**0.17e0 + ) + + +def iss95_stellarator_confinement_time( + rminor: float, + rmajor: float, + dnla19: float, + bt: float, + p_plasma_loss_mw: float, + iotabar: float, +) -> float: + """ + Calculate the ISS95 stellarator scaling confinement time + + Parameters: + rminor (float): Plasma minor radius [m] + rmajor (float): Plasma major radius [m] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + iotabar (float): Rotational transform + + Returns: + float: ISS95 stellarator confinement time [s] + + Notes: + + References: + - U. Stroth et al., “Energy confinement scaling from the international stellarator database,” + vol. 36, no. 8, pp. 1063-1077, Aug. 1996, doi: https://doi.org/10.1088/0029-5515/36/8/i11. + ‌ + """ + return ( + 0.079e0 + * rminor**2.21e0 + * rmajor**0.65e0 + * dnla19**0.51e0 + * bt**0.83e0 + * p_plasma_loss_mw ** (-0.59e0) + * iotabar**0.4e0 + ) + + +def iss04_stellarator_confinement_time( + rminor: float, + rmajor: float, + dnla19: float, + bt: float, + p_plasma_loss_mw: float, + iotabar: float, +) -> float: + """ + Calculate the ISS04 stellarator scaling confinement time + + Parameters: + rminor (float): Plasma minor radius [m] + rmajor (float): Plasma major radius [m] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + iotabar (float): Rotational transform + + Returns: + float: ISS04 stellarator confinement time [s] + + Notes: + + References: + - H. Yamada et al., “Characterization of energy confinement in net-current free plasmas using the extended International Stellarator Database,” + vol. 45, no. 12, pp. 1684-1693, Nov. 2005, doi: https://doi.org/10.1088/0029-5515/45/12/024. + ‌ + """ + return ( + 0.134e0 + * rminor**2.28e0 + * rmajor**0.64e0 + * dnla19**0.54e0 + * bt**0.84e0 + * p_plasma_loss_mw ** (-0.61e0) + * iotabar**0.41e0 + ) + + +def ds03_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa95: float, + aspect: float, + afuel: float, +) -> float: + """ + Calculate the DS03 beta-independent H-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa95 (float): Plasma elongation at 95% flux surface + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + + Returns: + float: DS03 beta-independent H-mode confinement time [s] + + Notes: + + References: + - T. C. Luce, C. C. Petty, and J. G. Cordey, “Application of dimensionless parameter scaling techniques to the design and interpretation of magnetic fusion experiments,” + Plasma Physics and Controlled Fusion, vol. 50, no. 4, p. 043001, Mar. 2008, + doi: https://doi.org/10.1088/0741-3335/50/4/043001. + ‌ + """ + return ( + 0.028e0 + * pcur**0.83e0 + * bt**0.07e0 + * dnla19**0.49e0 + * p_plasma_loss_mw ** (-0.55e0) + * rmajor**2.11e0 + * kappa95**0.75e0 + * aspect ** (-0.3e0) + * afuel**0.14e0 + ) + + +def murari_confinement_time( + pcur: float, + rmajor: float, + kappa_ipb: float, + dnla19: float, + bt: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Murari H-mode energy confinement scaling time + + Parameters: + pcur (float): Plasma current [MA] + rmajor (float): Plasma major radius [m] + kappa_ipb (float): IPB specific plasma separatrix elongation + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Murari confinement time [s] + + Notes: + - This scaling uses the IPB defintiion of elongation, see reference for more information. + + References: + - A. Murari, E. Peluso, Michela Gelfusa, I. Lupelli, and P. Gaudio, “A new approach to the formulation and validation of scaling expressions for plasma confinement in tokamaks,” + Nuclear Fusion, vol. 55, no. 7, pp. 073009-073009, Jun. 2015, doi: https://doi.org/10.1088/0029-5515/55/7/073009. + + - None Otto Kardaun, N. K. Thomsen, and None Alexander Chudnovskiy, “Corrections to a sequence of papers in Nuclear Fusion,” + Nuclear Fusion, vol. 48, no. 9, pp. 099801-099801, Aug. 2008, doi: https://doi.org/10.1088/0029-5515/48/9/099801. + ‌ + """ + return ( + 0.0367 + * pcur**1.006 + * rmajor**1.731 + * kappa_ipb**1.450 + * p_plasma_loss_mw ** (-0.735) + * (dnla19**0.448 / (1.0 + np.exp(-9.403 * (dnla19 / bt) ** -1.365))) + ) + + +def petty08_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa_ipb: float, + aspect: float, +) -> float: + """ + Calculate the beta independent dimensionless Petty08 confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa_ipb (float): IPB specific plasma separatrix elongation + aspect (float): Aspect ratio + + Returns: + float: Petty08 confinement time [s] + + Notes: + - This scaling uses the IPB defintiion of elongation, see reference for more information. + + References: + - C. C. Petty, “Sizing up plasmas using dimensionless parameters,” + Physics of Plasmas, vol. 15, no. 8, Aug. 2008, doi: https://doi.org/10.1063/1.2961043. + + - None Otto Kardaun, N. K. Thomsen, and None Alexander Chudnovskiy, “Corrections to a sequence of papers in Nuclear Fusion,” + Nuclear Fusion, vol. 48, no. 9, pp. 099801-099801, Aug. 2008, doi: https://doi.org/10.1088/0029-5515/48/9/099801. + ‌ + """ + return ( + 0.052e0 + * pcur**0.75e0 + * bt**0.3e0 + * dnla19**0.32e0 + * p_plasma_loss_mw ** (-0.47e0) + * rmajor**2.09e0 + * kappa_ipb**0.88e0 + * aspect ** (-0.84e0) + ) + + +def lang_high_density_confinement_time( + plasma_current: float, + bt: float, + dnla: float, + p_plasma_loss_mw: float, + rmajor: float, + rminor: float, + q: float, + qstar: float, + aspect: float, + afuel: float, + kappa_ipb: float, +) -> float: + """ + Calculate the high density relevant confinement time + + Parameters: + plasma_current (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla (float): Line averaged electron density [m**-3] + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + rminor (float): Plasma minor radius [m] + q (float): Safety factor + qstar (float): Equivalent cylindrical edge safety factor + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + kappa_ipb (float): Plasma elongation at 95% flux surface + + Returns: + float: High density relevant confinement time [s] + + Notes: + + References: + - P. T. Lang, C. Angioni, R. M. M. Dermott, R. Fischer, and H. Zohm, “Pellet Induced High Density Phases during ELM Suppression in ASDEX Upgrade,” + 24th IAEA Conference Fusion Energy, 2012, Oct. 2012, + Available: https://www.researchgate.net/publication/274456104_Pellet_Induced_High_Density_Phases_during_ELM_Suppression_in_ASDEX_Upgrade + ‌ + """ + qratio = q / qstar + n_gw = 1.0e14 * plasma_current / (np.pi * rminor * rminor) + nratio = dnla / n_gw + return ( + 6.94e-7 + * plasma_current**1.3678e0 + * bt**0.12e0 + * dnla**0.032236e0 + * (p_plasma_loss_mw * 1.0e6) ** (-0.74e0) + * rmajor**1.2345e0 + * kappa_ipb**0.37e0 + * aspect**2.48205e0 + * afuel**0.2e0 + * qratio**0.77e0 + * aspect ** (-0.9e0 * np.log(aspect)) + * nratio ** (-0.22e0 * np.log(nratio)) + ) + + +def hubbard_nominal_confinement_time( + pcur: float, + bt: float, + dnla20: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Hubbard 2017 I-mode confinement time scaling - nominal + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Hubbard confinement time [s] + + Notes: + + References: + - A. E. Hubbard et al., “Physics and performance of the I-mode regime over an expanded operating space on Alcator C-Mod,” + Nuclear Fusion, vol. 57, no. 12, p. 126039, Oct. 2017, doi: https://doi.org/10.1088/1741-4326/aa8570. + ‌ + """ + return ( + 0.014e0 + * pcur**0.68e0 + * bt**0.77e0 + * dnla20**0.02e0 + * p_plasma_loss_mw ** (-0.29e0) + ) + + +def hubbard_lower_confinement_time( + pcur: float, + bt: float, + dnla20: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Hubbard 2017 I-mode confinement time scaling - lower + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Hubbard confinement time [s] + + Notes: + + References: + - A. E. Hubbard et al., “Physics and performance of the I-mode regime over an expanded operating space on Alcator C-Mod,” + Nuclear Fusion, vol. 57, no. 12, p. 126039, Oct. 2017, doi: https://doi.org/10.1088/1741-4326/aa8570. + ‌ + """ + return ( + 0.014e0 + * pcur**0.60e0 + * bt**0.70e0 + * dnla20 ** (-0.03e0) + * p_plasma_loss_mw ** (-0.33e0) + ) + + +def hubbard_upper_confinement_time( + pcur: float, + bt: float, + dnla20: float, + p_plasma_loss_mw: float, +) -> float: + """ + Calculate the Hubbard 2017 I-mode confinement time scaling - upper + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + + Returns: + float: Hubbard confinement time [s] + + Notes: + + References: + - A. E. Hubbard et al., “Physics and performance of the I-mode regime over an expanded operating space on Alcator C-Mod,” + Nuclear Fusion, vol. 57, no. 12, p. 126039, Oct. 2017, doi: https://doi.org/10.1088/1741-4326/aa8570. + ‌ + """ + return ( + 0.014e0 + * pcur**0.76e0 + * bt**0.84e0 + * dnla20**0.07 + * p_plasma_loss_mw ** (-0.25e0) + ) + + +def menard_nstx_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa_ipb: float, + aspect: float, + afuel: float, +) -> float: + """ + Calculate the Menard NSTX ELMy H-mode scaling confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa_ipb (float): IPB specific plasma separatrix elongation + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + + Returns: + float: Menard NSTX ELMy H-mode confinement time [s] + + Notes: + - "The leading NSTX confinement scaling coefficient is chosen such that the ITER and ST energy confinement times are + identical for a reference NSTX scenario" + - Assumes IPB98(y,2) exponents are applicable where the ST exponents are not yet determined, i.e. + the species mass, major radius, inverse aspect ratio and elongation. Hence here we use the IPB98(y,2) definition + of elongation. + + References: + - J. E. Menard, “Compact steady-state tokamak performance dependence on magnet and core physics limits,” + Philosophical Transactions of the Royal Society A, vol. 377, no. 2141, pp. 20170440-20170440, Feb. 2019, + doi: https://doi.org/10.1098/rsta.2017.0440. + ‌ + + """ + return ( + 0.095e0 + * pcur**0.57e0 + * bt**1.08e0 + * dnla19**0.44e0 + * p_plasma_loss_mw ** (-0.73e0) + * rmajor**1.97e0 + * kappa_ipb**0.78e0 + * aspect ** (-0.58e0) + * afuel**0.19e0 + ) + + +def menard_nstx_petty08_hybrid_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + kappa_ipb: float, + aspect: float, + afuel: float, +) -> float: + """ + Calculate the Menard NSTX-Petty hybrid confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Line averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + kappa_ipb (float): IPB specific plasma separatrix elongation + aspect (float): Aspect ratio + afuel (float): Fuel atomic mass number + + Returns: + float: Menard NSTX-Petty hybrid confinement time [s] + + Notes: + - Assuming a linear interpolation in (1/aspect) between the two scalings + + References: + - J. E. Menard, “Compact steady-state tokamak performance dependence on magnet and core physics limits,” + Philosophical Transactions of the Royal Society A, vol. 377, no. 2141, pp. 20170440-20170440, Feb. 2019, + doi: https://doi.org/10.1098/rsta.2017.0440. + ‌ + """ + # Equivalent to A > 2.5, use Petty scaling + if (1.0e0 / aspect) <= 0.4e0: + return petty08_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + kappa_ipb, + aspect, + ) + + # Equivalent to A < 1.7, use NSTX scaling + if (1.0e0 / aspect) >= 0.6e0: + return menard_nstx_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + kappa_ipb, + aspect, + afuel, + ) + return (((1.0e0 / aspect) - 0.4e0) / (0.6e0 - 0.4e0)) * ( + menard_nstx_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + kappa_ipb, + aspect, + afuel, + ) + ) + ((0.6e0 - (1.0e0 / aspect)) / (0.6e0 - 0.4e0)) * ( + petty08_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + kappa_ipb, + aspect, + ) + ) + + +def nstx_gyro_bohm_confinement_time( + pcur: float, + bt: float, + p_plasma_loss_mw: float, + rmajor: float, + dnla20: float, +) -> float: + """ + Calculate the NSTX gyro-Bohm confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Net Heating power [MW] + rmajor (float): Plasma major radius [m] + dnla20 (float): Line averaged electron density in units of 10**20 m**-3 + + Returns: + float: NSTX gyro-Bohm confinement time [s] + + Notes: + + References: + - P. F. Buxton, L. Connor, A. E. Costley, Mikhail Gryaznevich, and S. McNamara, + “On the energy confinement time in spherical tokamaks: implications for the design of pilot plants and fusion reactors,” + vol. 61, no. 3, pp. 035006-035006, Jan. 2019, doi: https://doi.org/10.1088/1361-6587/aaf7e5. + ‌ + """ + return ( + 0.21e0 + * pcur**0.54e0 + * bt**0.91e0 + * p_plasma_loss_mw ** (-0.38e0) + * rmajor**2.14e0 + * dnla20 ** (-0.05e0) + ) + + +def itpa20_confinement_time( + pcur: float, + bt: float, + dnla19: float, + p_plasma_loss_mw: float, + rmajor: float, + triang: float, + kappa_ipb: float, + eps: float, + aion: float, +) -> float: + """ + Calculate the ITPA20 Issue #3164 confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + dnla19 (float): Central line-averaged electron density in units of 10**19 m**-3 + p_plasma_loss_mw (float): Thermal power lost due to transport through the LCFS [MW] + rmajor (float): Plasma major radius [m] + triang (float): Triangularity + kappa_ipb (float): IPB specific plasma separatrix elongation + eps (float): Inverse aspect ratio + aion (float): Average mass of all ions (amu) + + Returns: + float: ITPA20 confinement time [s] + + Notes: + - Mass term is the effective mass of the plasma, so we assume the total ion mass here + - This scaling uses the IPB defintiion of elongation, see reference for more information. + + References: + - G. Verdoolaege et al., “The updated ITPA global H-mode confinement database: description and analysis,” + Nuclear Fusion, vol. 61, no. 7, pp. 076006-076006, Jan. 2021, doi: https://doi.org/10.1088/1741-4326/abdb91. + """ + return ( + 0.053 + * pcur**0.98 + * bt**0.22 + * dnla19**0.24 + * p_plasma_loss_mw ** (-0.669) + * rmajor**1.71 + * (1 + triang) ** 0.36 + * kappa_ipb**0.8 + * eps**0.35 + * aion**0.2 + ) + + +def itpa20_il_confinement_time( + pcur: float, + bt: float, + p_plasma_loss_mw: float, + dnla19: float, + aion: float, + rmajor: float, + triang: float, + kappa_ipb: float, +) -> float: + """ + Calculate the ITPA20-IL Issue #1852 confinement time + + Parameters: + pcur (float): Plasma current [MA] + bt (float): Toroidal magnetic field [T] + p_plasma_loss_mw (float): Thermal power lost due to transport through the LCFS [MW] + dnla19 (float): Central line-averaged electron density in units of 10**19 m**-3 + aion (float): Average mass of all ions (amu) + rmajor (float): Plasma major radius [m] + triang (float): Triangularity + kappa_ipb (float): IPB specific plasma separatrix elongation + + Returns: + float: ITPA20-IL confinement time [s] + + Notes: + - Mass term is the effective mass of the plasma, so we assume the total ion mass here + - This scaling uses the IPB defintiion of elongation, see reference for more information. + + References: + - T. Luda et al., “Validation of a full-plasma integrated modeling approach on ASDEX Upgrade,” + Nuclear Fusion, vol. 61, no. 12, pp. 126048-126048, Nov. 2021, doi: https://doi.org/10.1088/1741-4326/ac3293. + """ + + return ( + 0.067 + * pcur**1.29 + * bt**-0.13 + * p_plasma_loss_mw ** (-0.644) + * dnla19**0.15 + * aion**0.3 + * rmajor**1.19 + * (1 + triang) ** 0.56 + * kappa_ipb**0.67 + ) diff --git a/process/init.py b/process/init.py index 3501f2b204..a809f3aa7d 100644 --- a/process/init.py +++ b/process/init.py @@ -1207,19 +1207,22 @@ def check_process(): if ( fortran.physics_variables.tauee_in > 1e-10 - and fortran.physics_variables.isc != 48 + and fortran.physics_variables.i_confinement_time != 48 ): # Report error if confinement time is in the input # but the scaling to use it is not selected. - warn("tauee_in is for use with isc=48 only", stacklevel=2) + warn("tauee_in is for use with i_confinement_time=48 only", stacklevel=2) - if fortran.physics_variables.aspect > 1.7 and fortran.physics_variables.isc == 46: + if ( + fortran.physics_variables.aspect > 1.7 + and fortran.physics_variables.i_confinement_time == 46 + ): # NSTX scaling is for A<1.7 warn("NSTX scaling is for A<1.7", stacklevel=2) if ( fortran.physics_variables.i_plasma_current == 2 - and fortran.physics_variables.isc == 42 + and fortran.physics_variables.i_confinement_time == 42 ): raise ProcessValidationError( "Lang 2012 confinement scaling cannot be used for i_plasma_current=2 due to wrong q" diff --git a/process/io/mfile_comparison.py b/process/io/mfile_comparison.py index 7f7c762e7a..054127c07e 100644 --- a/process/io/mfile_comparison.py +++ b/process/io/mfile_comparison.py @@ -90,7 +90,7 @@ "inductive_current_fraction", "gamnb", "beam_energy", - "powerht", + "p_plasma_loss_mw", ] BASELINE_LIST = [ @@ -130,7 +130,7 @@ "neped", "zeff", "nd_impurities", - "taueff", + "t_energy_confinement", "hfact", "tauelaw", "f_nd_alpha_electron", @@ -179,7 +179,7 @@ "inductive_current_fraction", "gamnb", "beam_energy", - "powerht", + "p_plasma_loss_mw", "pdivt", "vssoft", "vstot", diff --git a/process/io/obsolete_vars.py b/process/io/obsolete_vars.py index 482fb764be..1a494a494b 100644 --- a/process/io/obsolete_vars.py +++ b/process/io/obsolete_vars.py @@ -184,6 +184,11 @@ "d_vv_in": "dr_vv_inboard", "d_vv_out": "dr_vv_outboard", "iblnkith": "i_blkt_inboard", + "taulimit": "f_alpha_energy_confinement_min", + "ftaulimit": "falpha_energy_confinement", + "isc": "i_confinement_time", + "iradloss": "i_rad_loss", + "ipnlaws": "n_confinement_scalings", } OBS_VARS_HELP = { diff --git a/process/io/plot_proc.py b/process/io/plot_proc.py index 8a53dcfefe..139dfacd37 100644 --- a/process/io/plot_proc.py +++ b/process/io/plot_proc.py @@ -2442,7 +2442,7 @@ def plot_physics_info(axis, mfile_data, scan): (nepeak, r"$n_{e0} \ / \ \langle n_{\mathrm{e, vol}} \rangle$", ""), ("zeff", r"$Z_{\mathrm{eff}}$", ""), (nd_impurities, r"$n_Z \ / \ \langle n_{\mathrm{e, vol}} \rangle$", ""), - ("taueff", r"$\tau_e$", "s"), + ("t_energy_confinement", r"$\tau_e$", "s"), ("hfact", "H-factor", ""), (pthresh, "H-mode threshold", "MW"), ("tauelaw", "Scaling law", ""), @@ -2771,7 +2771,7 @@ def plot_current_drive_info(axis, mfile_data, scan): ("bootstrap_current_fraction", "Bootstrap fraction", ""), ("aux_current_fraction", "Auxiliary fraction", ""), ("inductive_current_fraction", "Inductive fraction", ""), - ("powerht", "Plasma heating used for H factor", "MW"), + ("p_plasma_loss_mw", "Plasma heating used for H factor", "MW"), ( "effcd", "Current drive efficiency", @@ -2803,7 +2803,7 @@ def plot_current_drive_info(axis, mfile_data, scan): ("inductive_current_fraction", "Inductive fraction", ""), ("gamnb", "NB gamma", "$10^{20}$ A W$^{-1}$ m$^{-2}$"), ("beam_energy", "NB energy", "keV"), - ("powerht", "Plasma heating used for H factor", "MW"), + ("p_plasma_loss_mw", "Plasma heating used for H factor", "MW"), (pdivr, r"$\frac{P_{\mathrm{div}}}{R_{0}}$", "MW m$^{-1}$"), ( pdivnr, @@ -2827,7 +2827,7 @@ def plot_current_drive_info(axis, mfile_data, scan): ("bootstrap_current_fraction", "Bootstrap fraction", ""), ("aux_current_fraction", "Auxiliary fraction", ""), ("inductive_current_fraction", "Inductive fraction", ""), - ("powerht", "Plasma heating used for H factor", "MW"), + ("p_plasma_loss_mw", "Plasma heating used for H factor", "MW"), ( "gamcd", "Normalised current drive efficiency", @@ -2856,7 +2856,7 @@ def plot_current_drive_info(axis, mfile_data, scan): ("bootstrap_current_fraction", "Bootstrap fraction", ""), ("aux_current_fraction", "Auxiliary fraction", ""), ("inductive_current_fraction", "Inductive fraction", ""), - ("powerht", "Plasma heating used for H factor", "MW"), + ("p_plasma_loss_mw", "Plasma heating used for H factor", "MW"), ( "gamcd", "Normalised current drive efficiency", @@ -2885,7 +2885,7 @@ def plot_current_drive_info(axis, mfile_data, scan): ("bootstrap_current_fraction", "Bootstrap fraction", ""), ("aux_current_fraction", "Auxiliary fraction", ""), ("inductive_current_fraction", "Inductive fraction", ""), - ("powerht", "Plasma heating used for H factor", "MW"), + ("p_plasma_loss_mw", "Plasma heating used for H factor", "MW"), ( "gamcd", "Normalised current drive efficiency", diff --git a/process/io/plot_radial_build.py b/process/io/plot_radial_build.py index 686ee0b8d9..b5c3fb5417 100644 --- a/process/io/plot_radial_build.py +++ b/process/io/plot_radial_build.py @@ -178,7 +178,7 @@ def main(args=None): "bt", "coreradius", "Obsolete", # Removed - "taulimit", + "f_alpha_energy_confinement_min", "epsvmc", "ttarget", "qtargettotal", diff --git a/process/io/plot_scans.py b/process/io/plot_scans.py index 03151fec3a..b6c1ad66f2 100644 --- a/process/io/plot_scans.py +++ b/process/io/plot_scans.py @@ -227,7 +227,7 @@ def main(args=None): 28: "bt", 29: "coreradius", 30: "", # OBSOLETE - 31: "taulimit", + 31: "f_alpha_energy_confinement_min", 32: "epsvmc", 33: "ttarget", 34: "qtargettotal", diff --git a/process/io/variable_metadata.py b/process/io/variable_metadata.py index 405c44a760..3093b52cd3 100644 --- a/process/io/variable_metadata.py +++ b/process/io/variable_metadata.py @@ -39,7 +39,7 @@ class VariableMetadata: description="Net electrical power", units="MW", ), - "taueff": VariableMetadata( + "t_energy_confinement": VariableMetadata( latex=r"$\tau_\mathrm{E}$ [s]", description="Effective energy confinement time", units="s", @@ -54,7 +54,7 @@ class VariableMetadata: description="Average electron temperature", units="keV", ), - "taulimit": VariableMetadata( + "f_alpha_energy_confinement_min": VariableMetadata( latex=r"$max : \frac{\tau_\mathrm{\alpha}}{\tau_\mathrm{E}}$", description="Ratio of alpha heating time to energy confinement time", units="", @@ -388,7 +388,7 @@ class VariableMetadata: description="Efficiency of electron cyclotron heating", units="", ), - "tauee": VariableMetadata( + "t_electron_energy_confinement": VariableMetadata( latex=r"$\tau_E$", description="Electron energy confinement time (sec)", units="s", diff --git a/process/output.py b/process/output.py index 25cce160b7..272d5a03c6 100644 --- a/process/output.py +++ b/process/output.py @@ -42,9 +42,6 @@ def write(models, _outfile): # Writing the output from physics.f90 into OUT.DAT + MFILE.DAT models.physics.outplas() - # TODO what is this? not in caller.f90 - models.physics.igmarcal() - # TODO what is this? Not in caller.f90? models.current_drive.cudriv(output=True) diff --git a/process/physics.py b/process/physics.py index dfab8b8002..5a4cbf3086 100644 --- a/process/physics.py +++ b/process/physics.py @@ -6,6 +6,7 @@ import scipy.integrate as integrate from scipy.optimize import root_scalar +import process.confinement_time as confinement import process.impurity_radiation as impurity_radiation import process.physics_functions as physics_funcs from process.fortran import ( @@ -2247,14 +2248,13 @@ def physics(self): # Calculate transport losses and energy confinement time using the # chosen scaling law ( - physics_variables.kappaa, - physics_variables.ptrepv, - physics_variables.ptripv, - physics_variables.tauee, - physics_variables.taueff, - physics_variables.tauei, - physics_variables.powerht, - ) = self.pcond( + physics_variables.pden_electron_transport_loss_mw, + physics_variables.pden_ion_transport_loss_mw, + physics_variables.t_electron_energy_confinement, + physics_variables.t_energy_confinement, + physics_variables.t_ion_energy_confinement, + physics_variables.p_plasma_loss_mw, + ) = self.calculate_confinement_time( physics_variables.m_fuel_amu, physics_variables.alpha_power_total, physics_variables.aspect, @@ -2264,8 +2264,7 @@ def physics(self): physics_variables.dnla, physics_variables.eps, physics_variables.hfact, - physics_variables.iinvqd, - physics_variables.isc, + physics_variables.i_confinement_time, physics_variables.ignite, physics_variables.kappa, physics_variables.kappa95, @@ -2275,24 +2274,22 @@ def physics(self): physics_variables.pcoreradpv, physics_variables.rmajor, physics_variables.rminor, - physics_variables.te, physics_variables.ten, physics_variables.tin, physics_variables.q95, physics_variables.qstar, physics_variables.vol_plasma, - physics_variables.a_plasma_poloidal, physics_variables.zeff, ) - physics_variables.ptremw = ( - physics_variables.ptrepv * physics_variables.vol_plasma + # Total transport power from scaling law (MW) + physics_variables.p_electron_transport_loss_mw = ( + physics_variables.pden_electron_transport_loss_mw + * physics_variables.vol_plasma ) - physics_variables.ptrimw = ( - physics_variables.ptripv * physics_variables.vol_plasma + physics_variables.p_ion_transport_loss_mw = ( + physics_variables.pden_ion_transport_loss_mw * physics_variables.vol_plasma ) - # Total transport power from scaling law (MW) - # pscalingmw = physics_variables.ptremw + physics_variables.ptrimw #KE - why is this commented? # Calculate Volt-second requirements ( @@ -2321,30 +2318,32 @@ def physics(self): sbar = 1.0e0 ( physics_variables.burnup, - physics_variables.dntau, + physics_variables.ntau, + physics_variables.nTtau, physics_variables.figmer, physics_module.fusrat, physics_variables.qfuel, physics_variables.rndfuel, - physics_variables.taup, + physics_variables.t_alpha_confinement, + physics_variables.f_alpha_energy_confinement, ) = self.phyaux( physics_variables.aspect, physics_variables.dene, + physics_variables.te, physics_variables.nd_fuel_ions, physics_variables.fusion_rate_density_total, physics_variables.alpha_rate_density_total, physics_variables.plasma_current, sbar, physics_variables.nd_alphas, - physics_variables.taueff, + physics_variables.t_energy_confinement, physics_variables.vol_plasma, ) - # ptremw = physics_variables.ptrepv*physics_variables.vol_plasma - # ptrimw = physics_variables.ptripv*physics_variables.vol_plasma # Total transport power from scaling law (MW) physics_variables.pscalingmw = ( - physics_variables.ptremw + physics_variables.ptrimw + physics_variables.p_electron_transport_loss_mw + + physics_variables.p_ion_transport_loss_mw ) # Calculate physics_variables.beta limit @@ -2502,10 +2501,6 @@ def physics(self): physics_variables.rad_fraction_sol * physics_variables.pdivt ) - physics_module.total_energy_conf_time = ( - physics_module.e_plasma_beta / physics_module.total_loss_power - ) - if any(numerics.icc == 78): po.write( self.outfile, @@ -2956,61 +2951,65 @@ def plasma_composition() -> None: @staticmethod def phyaux( - aspect, - dene, - nd_fuel_ions, - fusion_rate_density_total, - alpha_rate_density_total, - plasma_current, - sbar, - nd_alphas, - taueff, - vol_plasma, - ): + aspect: float, + dene: float, + te: float, + nd_fuel_ions: float, + fusion_rate_density_total: float, + alpha_rate_density_total: float, + plasma_current: float, + sbar: float, + nd_alphas: float, + t_energy_confinement: float, + vol_plasma: float, + ) -> tuple[float, float, float, float, float, float, float, float]: """Auxiliary physics quantities - author: P J Knight, CCFE, Culham Science Centre - aspect : input real : plasma aspect ratio - dene : input real : electron density (/m3) - nd_fuel_ions : input real : fuel ion density (/m3) - nd_alphas : input real : alpha ash density (/m3) - fusion_rate_density_total : input real : fusion reaction rate from plasma and beams (/m3/s) - alpha_rate_density_total : input real : alpha particle production rate (/m3/s) - plasma_current: input real : plasma current (A) - sbar : input real : exponent for aspect ratio (normally 1) - taueff : input real : global energy confinement time (s) - vol_plasma : input real : plasma volume (m3) - burnup : output real : fractional plasma burnup - dntau : output real : plasma average n-tau (s/m3) - figmer : output real : physics figure of merit - fusrat : output real : number of fusion reactions per second - qfuel : output real : fuelling rate for D-T (nucleus-pairs/sec) - rndfuel: output real : fuel burnup rate (reactions/s) - taup : output real : (alpha) particle confinement time (s) - This subroutine calculates extra physics related items - needed by other parts of the code - """ + Args: + aspect (float): Plasma aspect ratio. + dene (float): Electron density (/m3). + te (float): Volume avergaed electron temperature (keV). + nd_fuel_ions (float): Fuel ion density (/m3). + fusion_rate_density_total (float): Fusion reaction rate from plasma and beams (/m3/s). + alpha_rate_density_total (float): Alpha particle production rate (/m3/s). + plasma_current (float): Plasma current (A). + sbar (float): Exponent for aspect ratio (normally 1). + nd_alphas (float): Alpha ash density (/m3). + t_energy_confinement (float): Global energy confinement time (s). + vol_plasma (float): Plasma volume (m3). + + Returns: + tuple: A tuple containing: + - burnup (float): Fractional plasma burnup. + - ntau (float): Plasma average n-tau (s/m3). + - nTtau (float): Plasma triple product nT-tau (s/m3). + - figmer (float): Physics figure of merit. + - fusrat (float): Number of fusion reactions per second. + - qfuel (float): Fuelling rate for D-T (nucleus-pairs/sec). + - rndfuel (float): Fuel burnup rate (reactions/s). + - t_alpha_confinement (float): Alpha particle confinement time (s). + - f_alpha_energy_confinement (float): Fraction of alpha energy confinement. + + This subroutine calculates extra physics related items needed by other parts of the code. + """ figmer = 1e-6 * plasma_current * aspect**sbar - dntau = taueff * dene + ntau = t_energy_confinement * dene + nTtau = ntau * te # Fusion reactions per second - fusrat = fusion_rate_density_total * vol_plasma # Alpha particle confinement time (s) # Number of alphas / alpha production rate - if alpha_rate_density_total != 0.0: - taup = nd_alphas / alpha_rate_density_total + t_alpha_confinement = nd_alphas / alpha_rate_density_total else: # only likely if DD is only active fusion reaction - taup = 0.0 + t_alpha_confinement = 0.0 # Fractional burnup - # (Consider detailed model in: G. L. Jackson, V. S. Chan, R. D. Stambaugh, # Fusion Science and Technology, vol.64, no.1, July 2013, pp.8-12) - # The ratio of ash to fuel particle confinement times is given by # tauratio # Possible logic... @@ -3026,15 +3025,26 @@ def phyaux( ) else: burnup = physics_variables.burnup_in - # Fuel burnup rate (reactions/second) (previously Amps) + # Fuel burnup rate (reactions/second) (previously Amps) rndfuel = fusrat # Required fuelling rate (fuel ion pairs/second) (previously Amps) - qfuel = rndfuel / burnup - return burnup, dntau, figmer, fusrat, qfuel, rndfuel, taup + f_alpha_energy_confinement = t_alpha_confinement / t_energy_confinement + + return ( + burnup, + ntau, + nTtau, + figmer, + fusrat, + qfuel, + rndfuel, + t_alpha_confinement, + f_alpha_energy_confinement, + ) @staticmethod def plasma_ohmic_heating( @@ -3538,14 +3548,6 @@ def outplas(self): "OP ", ) - po.ovarrf( - self.outfile, - "Elongation, area ratio calc.", - "(kappaa)", - physics_variables.kappaa, - "OP ", - ) - if physics_variables.i_plasma_geometry in [0, 2, 6, 8, 9, 10, 11]: po.ovarrf( self.outfile, @@ -3748,7 +3750,9 @@ def outplas(self): "(iotabar)", stellarator_variables.iotabar, ) - + po.oblnkl(self.outfile) + po.ostars(self.outfile, 110) + po.oblnkl(self.outfile) po.osubhd(self.outfile, "Beta Information :") if physics_variables.i_beta_component == 0: po.ovarrf( @@ -3942,6 +3946,10 @@ def outplas(self): "OP", ) + po.oblnkl(self.outfile) + po.ostars(self.outfile, 110) + po.oblnkl(self.outfile) + po.osubhd(self.outfile, "Temperature and Density (volume averaged) :") po.ovarrf( self.outfile, @@ -4086,9 +4094,12 @@ def outplas(self): "OP ", ) + po.oblnkl(self.outfile) + po.oblnkl(self.outfile) + po.ostars(self.outfile, 110) po.oblnkl(self.outfile) - po.ocmmnt(self.outfile, "Impurities") + po.ocmmnt(self.outfile, "Impurities:") po.oblnkl(self.outfile) po.ocmmnt(self.outfile, "Plasma ion densities / electron density:") @@ -4279,6 +4290,10 @@ def outplas(self): physics_variables.alphap, ) + po.oblnkl(self.outfile) + po.ostars(self.outfile, 110) + po.oblnkl(self.outfile) + if stellarator_variables.istell == 0: po.osubhd(self.outfile, "Density Limit using different models :") po.ovarre( @@ -4353,6 +4368,10 @@ def outplas(self): "OP ", ) + po.oblnkl(self.outfile) + po.ostars(self.outfile, 110) + po.oblnkl(self.outfile) + po.osubhd(self.outfile, "Fuel Constituents :") po.ovarrf( self.outfile, @@ -4564,6 +4583,10 @@ def outplas(self): "OP ", ) + po.oblnkl(self.outfile) + po.ostars(self.outfile, 110) + po.oblnkl(self.outfile) + po.osubhd(self.outfile, "Radiation Power (excluding SOL):") po.ovarre( self.outfile, @@ -4802,15 +4825,15 @@ def outplas(self): po.ovarre( self.outfile, "Ion transport (MW)", - "(ptrimw)", - physics_variables.ptrimw, + "(p_ion_transport_loss_mw)", + physics_variables.p_ion_transport_loss_mw, "OP ", ) po.ovarre( self.outfile, "Electron transport (MW)", - "(ptremw)", - physics_variables.ptremw, + "(p_electron_transport_loss_mw)", + physics_variables.p_electron_transport_loss_mw, "OP ", ) po.ovarre( @@ -4909,6 +4932,10 @@ def outplas(self): "OP ", ) + po.oblnkl(self.outfile) + po.ostars(self.outfile, 110) + po.oblnkl(self.outfile) + if stellarator_variables.istell == 0: po.osubhd(self.outfile, "H-mode Power Threshold Scalings :") @@ -5151,7 +5178,9 @@ def outplas(self): po.oblnkl(self.outfile) tauelaw = f2py_compatible_to_string( - physics_variables.tauscl[physics_variables.isc - 1] + physics_variables.labels_confinement_scalings[ + physics_variables.i_confinement_time + ] ) po.ocmmnt( @@ -5171,57 +5200,64 @@ def outplas(self): ) po.ovarrf( self.outfile, - "Global thermal energy confinement time (s)", - "(taueff)", - physics_variables.taueff, + "Global thermal energy confinement time, from scaling (s)", + "(t_energy_confinement)", + physics_variables.t_energy_confinement, "OP ", ) po.ovarrf( self.outfile, - "Ion energy confinement time (s)", - "(tauei)", - physics_variables.tauei, + "Directly calculated total energy confinement time (s)", + "(t_energy_confinement_beta)", + physics_module.t_energy_confinement_beta, "OP ", ) + po.ocmmnt( + self.outfile, + "(Total thermal energy derived from total plasma beta / loss power)", + ) po.ovarrf( self.outfile, - "Electron energy confinement time (s)", - "(tauee)", - physics_variables.tauee, + "Ion energy confinement time, from scaling (s)", + "(t_ion_energy_confinement)", + physics_variables.t_ion_energy_confinement, "OP ", ) - po.ovarre( + po.ovarrf( self.outfile, - "n.tau = Volume-average electron density x Energy confinement time (s/m3)", - "(dntau)", - physics_variables.dntau, + "Electron energy confinement time, from scaling (s)", + "(t_electron_energy_confinement)", + physics_variables.t_electron_energy_confinement, "OP ", ) - po.ocmmnt( + po.ovarre( self.outfile, - "Triple product = Vol-av electron density x Vol-av electron temp x Energy confinement time:", + "Fusion double product (s/m3)", + "(ntau)", + physics_variables.ntau, + "OP ", ) po.ovarre( self.outfile, - "Triple product (keV s/m3)", - "(dntau*te)", - physics_variables.dntau * physics_variables.te, + "Lawson Triple product (keV s/m3)", + "(nTtau)", + physics_variables.nTtau, "OP ", ) po.ovarre( self.outfile, "Transport loss power assumed in scaling law (MW)", - "(powerht)", - physics_variables.powerht, + "(p_plasma_loss_mw)", + physics_variables.p_plasma_loss_mw, "OP ", ) po.ovarin( self.outfile, "Switch for radiation loss term usage in power balance", - "(iradloss)", - physics_variables.iradloss, + "(i_rad_loss)", + physics_variables.i_rad_loss, ) - if physics_variables.iradloss == 0: + if physics_variables.i_rad_loss == 0: po.ovarre( self.outfile, "Radiation power subtracted from plasma power balance (MW)", @@ -5230,7 +5266,7 @@ def outplas(self): "OP ", ) po.ocmmnt(self.outfile, " (Radiation correction is total radiation power)") - elif physics_variables.iradloss == 1: + elif physics_variables.i_rad_loss == 1: po.ovarre( self.outfile, "Radiation power subtracted from plasma power balance (MW)", @@ -5247,16 +5283,16 @@ def outplas(self): 0.0e0, ) po.ocmmnt(self.outfile, " (No radiation correction applied)") - if physics_variables.iradloss == 1: + if physics_variables.i_rad_loss == 1: po.ovarrf( self.outfile, "H* non-radiation corrected", "(hstar)", physics_variables.hfact * ( - physics_variables.powerht + physics_variables.p_plasma_loss_mw / ( - physics_variables.powerht + physics_variables.p_plasma_loss_mw + physics_variables.pden_plasma_sync_mw + physics_variables.p_plasma_inner_rad_mw ) @@ -5264,16 +5300,16 @@ def outplas(self): ** 0.31, "OP", ) - elif physics_variables.iradloss == 0: + elif physics_variables.i_rad_loss == 0: po.ovarrf( self.outfile, "H* non-radiation corrected", "(hstar)", physics_variables.hfact * ( - physics_variables.powerht + physics_variables.p_plasma_loss_mw / ( - physics_variables.powerht + physics_variables.p_plasma_loss_mw + physics_variables.pden_plasma_rad_mw * physics_variables.vol_plasma ) @@ -5281,7 +5317,7 @@ def outplas(self): ** 0.31, "OP", ) - elif physics_variables.iradloss == 2: + elif physics_variables.i_rad_loss == 2: po.ovarrf( self.outfile, "H* non-radiation corrected", @@ -5293,36 +5329,28 @@ def outplas(self): po.ovarrf( self.outfile, "Alpha particle confinement time (s)", - "(taup)", - physics_variables.taup, + "(t_alpha_confinement)", + physics_variables.t_alpha_confinement, "OP ", ) # Note alpha confinement time is no longer equal to fuel particle confinement time. po.ovarrf( self.outfile, "Alpha particle/energy confinement time ratio", - "(taup/taueff)", - physics_variables.taup / physics_variables.taueff, + "(f_alpha_energy_confinement)", + physics_variables.f_alpha_energy_confinement, "OP ", ) po.ovarrf( self.outfile, - "Lower limit on taup/taueff", - "(taulimit)", - constraint_variables.taulimit, - ) - po.ovarrf( - self.outfile, - "Total energy confinement time including radiation loss (s)", - "(total_energy_conf_time)", - physics_module.total_energy_conf_time, - "OP ", - ) - po.ocmmnt( - self.outfile, - " (= stored energy including fast particles / loss power including radiation", + "Lower limit on f_alpha_energy_confinement", + "(f_alpha_energy_confinement_min)", + constraint_variables.f_alpha_energy_confinement_min, ) + # Plot table of al the H-factor scalings and coparison values + self.output_confinement_comparison() + if stellarator_variables.istell == 0: # Issues 363 Output dimensionless plasma parameters MDK po.osubhd(self.outfile, "Dimensionless plasma parameters") @@ -5358,12 +5386,16 @@ def outplas(self): ) po.ovarre( self.outfile, - "Volume measure of elongation", - "(kappaa_IPB)", - physics_variables.kappaa_ipb, + "ITER Physics Basis definition of elongation", + "(kappa_ipb)", + physics_variables.kappa_ipb, "OP ", ) + po.oblnkl(self.outfile) + po.ostars(self.outfile, 110) + po.oblnkl(self.outfile) + po.osubhd(self.outfile, "Plasma Volt-second Requirements :") po.ovarre( self.outfile, @@ -5708,36 +5740,57 @@ def outplas(self): reinke_variables.fzactual, ) - def igmarcal(self): - """Routine to calculate ignition margin - author: P J Knight, CCFE, Culham Science Centre - outfile : input integer : Fortran output unit identifier - This routine calculates the ignition margin at the final point - with different scalings. + def output_confinement_comparison(self) -> None: + """ + Routine to calculate ignition margin for different confinement scalings and equivalent confinement times for H=1. + + This routine calculates the ignition margin at the final point with different scalings and outputs the results to a file. + + The output includes: + - Energy confinement times + - Required H-factors for power balance + + The routine iterates over a range of confinement times, skipping the first user input and a specific index (25). For each confinement time, it calculates various parameters related to confinement and ignition using the `calculate_confinement_time` method. It then calculates the H-factor for when the plasma is ignited using the `fhfac` method and writes the results to the output file. + + Output format: + - Header: "Energy confinement times, and required H-factors :" + - Columns: "Scaling law", "Confinement time [s]", "H-factor for power balance" + + Methods used: + - `calculate_confinement_time`: Calculates confinement-related parameters. + - `fhfac`: Calculates the H-factor for a given confinement time. + + Parameters: + - None + + Returns: + - None """ po.oheadr(self.outfile, "Energy confinement times, and required H-factors :") po.ocmmnt( self.outfile, - f"{'':>5}{'scaling law':<25}{'confinement time (s)':<25}H-factor for", + f"{'':>2}{'Scaling law':<27}{'Electron confinement time [s]':<32}Equivalent H-factor for", ) po.ocmmnt( self.outfile, - f"{'':>34}{'for H = 1':<20}power balance", + f"{'':>38}{'for H = 1':<23}same confinement time", ) + po.oblnkl(self.outfile) - # for iisc in range(32, 48): - # Put the ITPA value first - for iisc in [50, 34, 37, 38, 39, 46, 47, 48]: + # Plot all of the confinement scalings for comparison when H = 1 + # Start from range 1 as the first i_confinement_time is a user input + for i_confinement_time in range(1, physics_variables.n_confinement_scalings): + if i_confinement_time == 25: + continue ( - physics_variables.kappaa, - ptrez, - ptriz, + _, + _, taueez, - taueiz, - taueffz, - powerhtz, - ) = self.pcond( + _, + _, + _, + ) = self.calculate_confinement_time( physics_variables.m_fuel_amu, physics_variables.alpha_power_total, physics_variables.aspect, @@ -5747,8 +5800,7 @@ def igmarcal(self): physics_variables.dnla, physics_variables.eps, 1.0, - physics_variables.iinvqd, - iisc, + i_confinement_time, physics_variables.ignite, physics_variables.kappa, physics_variables.kappa95, @@ -5758,24 +5810,28 @@ def igmarcal(self): physics_variables.pcoreradpv, physics_variables.rmajor, physics_variables.rminor, - physics_variables.te, physics_variables.ten, physics_variables.tin, physics_variables.q, physics_variables.qstar, physics_variables.vol_plasma, - physics_variables.a_plasma_poloidal, physics_variables.zeff, ) - physics_variables.hfac[iisc - 1] = self.fhfac(iisc) + # Calculate the H-factor for the same confinement time in other scalings + physics_variables.hfac[i_confinement_time - 1] = self.find_other_h_factors( + i_confinement_time + ) po.ocmmnt( self.outfile, - f"{'':>2}{f2py_compatible_to_string(physics_variables.tauscl[iisc - 1]):<32}" - f"{taueez:<26.3f}{physics_variables.hfac[iisc - 1]:.3f}", + f"{'':>2}{f2py_compatible_to_string(physics_variables.labels_confinement_scalings[i_confinement_time]):<38}" + f"{taueez:<28.3f}{physics_variables.hfac[i_confinement_time - 1]:.3f}", ) + po.oblnkl(self.outfile) + po.ostars(self.outfile, 110) + @staticmethod def bootstrap_fraction_iter89( aspect: float, @@ -6499,198 +6555,159 @@ def bootstrap_fraction_gi_II( # noqa: N802 return c_bs * np.sqrt(inverse_aspect) * beta_poloidal - def fhfac(self, is_): - """Function to find H-factor for power balance - author: P J Knight, CCFE, Culham Science Centre - is : input integer : confinement time scaling law of interest - This function calculates the H-factor required for power balance, - using the given energy confinement scaling law. + def find_other_h_factors(self, i_confinement_time: int) -> float: """ + Function to find H-factor for the equivalent confinement time in other scalings. - physics_module.iscz = is_ - - return root_scalar(self.fhz, bracket=(0.01, 150), xtol=0.003).root + Args: + i_confinement_time (int): Index of the confinement time scaling to use. - def fhz(self, hhh): - """Function used to find power balance - author: P J Knight, CCFE, Culham Science Centre - hhh : input real : test value for confinement time H-factor - This function is used to find power balance. - FHZ is zero at power balance, which is achieved - using routine ZEROIN to adjust the - value of hhh, the confinement time H-factor. + Returns: + float: The calculated H-factor. """ - ( - physics_variables.kappaa, - ptrez, - ptriz, - taueezz, - taueiz, - taueffz, - powerhtz, - ) = self.pcond( - physics_variables.m_fuel_amu, - physics_variables.alpha_power_total, - physics_variables.aspect, - physics_variables.bt, - physics_variables.nd_ions_total, - physics_variables.dene, - physics_variables.dnla, - physics_variables.eps, - hhh, - physics_variables.iinvqd, - physics_module.iscz, - physics_variables.ignite, - physics_variables.kappa, - physics_variables.kappa95, - physics_variables.non_alpha_charged_power, - current_drive_variables.pinjmw, - physics_variables.plasma_current, - physics_variables.pcoreradpv, - physics_variables.rmajor, - physics_variables.rminor, - physics_variables.te, - physics_variables.ten, - physics_variables.tin, - physics_variables.q, - physics_variables.qstar, - physics_variables.vol_plasma, - physics_variables.a_plasma_poloidal, - physics_variables.zeff, - ) + def fhz(hfact: float) -> float: + """ + Function used to find power balance. - # At power balance, fhz is zero. + Args: + hfact (float): H-factor to be used in the calculation. - fhz = ( - ptrez - + ptriz - - physics_variables.f_alpha_plasma - * physics_variables.alpha_power_density_total - - physics_variables.charged_power_density - - physics_variables.pden_plasma_ohmic_mw - ) + Returns: + float: The difference between the calculated power and the required power for balance. + """ + ( + ptrez, + ptriz, + _, + _, + _, + _, + ) = self.calculate_confinement_time( + physics_variables.m_fuel_amu, + physics_variables.alpha_power_total, + physics_variables.aspect, + physics_variables.bt, + physics_variables.nd_ions_total, + physics_variables.dene, + physics_variables.dnla, + physics_variables.eps, + hfact, + i_confinement_time, + physics_variables.ignite, + physics_variables.kappa, + physics_variables.kappa95, + physics_variables.non_alpha_charged_power, + current_drive_variables.pinjmw, + physics_variables.plasma_current, + physics_variables.pcoreradpv, + physics_variables.rmajor, + physics_variables.rminor, + physics_variables.ten, + physics_variables.tin, + physics_variables.q, + physics_variables.qstar, + physics_variables.vol_plasma, + physics_variables.zeff, + ) - # Take into account whether injected power is included in tau_e - # calculation (i.e. whether device is ignited) + # At power balance, fhz is zero. + fhz_value = ( + ptrez + + ptriz + - physics_variables.f_alpha_plasma + * physics_variables.alpha_power_density_total + - physics_variables.charged_power_density + - physics_variables.pden_plasma_ohmic_mw + ) - if physics_variables.ignite == 0: - fhz -= current_drive_variables.pinjmw / physics_variables.vol_plasma + # Take into account whether injected power is included in tau_e calculation (i.e. whether device is ignited) + if physics_variables.ignite == 0: + fhz_value -= ( + current_drive_variables.pinjmw / physics_variables.vol_plasma + ) - # Include the radiation power if requested + # Include the radiation power if requested + if physics_variables.i_rad_loss == 0: + fhz_value += physics_variables.pden_plasma_rad_mw + elif physics_variables.i_rad_loss == 1: + fhz_value += physics_variables.pcoreradpv - if physics_variables.iradloss == 0: - fhz += physics_variables.pden_plasma_rad_mw - elif physics_variables.iradloss == 1: - fhz += physics_variables.pcoreradpv + return fhz_value - return fhz + return root_scalar(fhz, bracket=(0.01, 150), xtol=0.00001).root @staticmethod - def pcond( - m_fuel_amu, - alpha_power_total, - aspect, - bt, - nd_ions_total, - dene, - dnla, - eps, - hfact, - iinvqd, - isc, - ignite, - kappa, - kappa95, - non_alpha_charged_power, - pinjmw, - plasma_current, - pcoreradpv, - rmajor, - rminor, - _te, - ten, - tin, - q, - qstar, - vol_plasma, - a_plasma_poloidal, - zeff, - ): - """Routine to calculate the confinement times and - the transport power loss terms. - author: P J Knight, CCFE, Culham Science Centre - m_fuel_amu : input real : average mass of fuel (amu) - alpha_power_total : input real : alpha particle power (MW) - aspect : input real : aspect ratio - bt : input real : toroidal field on axis (T) - dene : input real : volume averaged electron density (/m3) - nd_ions_total : input real : total ion density (/m3) - dnla : input real : line-averaged electron density (/m3) - eps : input real : inverse aspect ratio - hfact : input real : H factor on energy confinement scalings - iinvqd : input integer : switch for inverse quadrature - isc : input integer : switch for energy confinement scaling to use - ignite : input integer : switch for ignited calculation - kappa : input real : plasma elongation - kappa95 : input real : plasma elongation at 95% surface - kappaa : output real : plasma elongation calculated using area ratio - non_alpha_charged_power : input real : non-alpha charged particle fusion power (MW) - pinjmw : input real : auxiliary power to ions and electrons (MW) - plasma_current : input real : plasma current (A) - pcoreradpv: input real : total core radiation power (MW/m3) - q : input real : edge safety factor (tokamaks), or - rotational transform iotabar (stellarators) - qstar : input real : equivalent cylindrical edge safety factor - rmajor : input real : plasma major radius (m) - rminor : input real : plasma minor radius (m) - te : input real : average electron temperature (keV) - ten : input real : density weighted average electron temp. (keV) - tin : input real : density weighted average ion temperature (keV) - vol_plasma : input real : plasma volume (m3) - a_plasma_poloidal : input real : plasma cross-sectional area (m2) - zeff : input real : plasma effective charge - ptrepv : output real : electron transport power (MW/m3) - ptripv : output real : ion transport power (MW/m3) - tauee : output real : electron energy confinement time (s) - taueff : output real : global energy confinement time (s) - tauei : output real : ion energy confinement time (s) - powerht : output real : heating power (MW) assumed in calculation - This subroutine calculates the energy confinement time - using one of a large number of scaling laws, and the - transport power loss terms. - N. A. Uckan and ITER Physics Group, - "ITER Physics Design Guidelines: 1989", - ITER Documentation Series, No. 10, IAEA/ITER/DS/10 (1990) - A. Murari et al 2015 Nucl. Fusion, 55, 073009 - C.C. Petty 2008 Phys. Plasmas, 15, 080501 - P.T. Lang et al. 2012 IAEA conference proceeding EX/P4-01 - ITER physics basis Chapter 2, 1999 Nuclear Fusion 39 2175 - Nuclear Fusion corrections, 2008 Nuclear Fusion 48 099801 - Menard 2019, Phil. Trans. R. Soc. A 377:20170440 - Kaye et al. 2006, Nucl. Fusion 46 848 + def calculate_confinement_time( + m_fuel_amu: float, + alpha_power_total: float, + aspect: float, + bt: float, + nd_ions_total: float, + dene: float, + dnla: float, + eps: float, + hfact: float, + i_confinement_time: int, + ignite: int, + kappa: float, + kappa95: float, + non_alpha_charged_power: float, + pinjmw: float, + plasma_current: float, + pcoreradpv: float, + rmajor: float, + rminor: float, + ten: float, + tin: float, + q: float, + qstar: float, + vol_plasma: float, + zeff: float, + ) -> tuple[float, float, float, float, float, float, float]: + """ + Calculate the confinement times and the transport power loss terms. + + :param m_fuel_amu: Average mass of fuel (amu) + :param alpha_power_total: Alpha particle power (MW) + :param aspect: Aspect ratio + :param bt: Toroidal field on axis (T) + :param nd_ions_total: Total ion density (/m3) + :param dene: Volume averaged electron density (/m3) + :param dnla: Line-averaged electron density (/m3) + :param eps: Inverse aspect ratio + :param hfact: H factor on energy confinement scalings + :param i_confinement_time: Switch for energy confinement scaling to use + :param ignite: Switch for ignited calculation + :param kappa: Plasma elongation + :param kappa95: Plasma elongation at 95% surface + :param non_alpha_charged_power: Non-alpha charged particle fusion power (MW) + :param pinjmw: Auxiliary power to ions and electrons (MW) + :param plasma_current: Plasma current (A) + :param pcoreradpv: Total core radiation power (MW/m3) + :param q: Edge safety factor (tokamaks), or rotational transform iotabar (stellarators) + :param qstar: Equivalent cylindrical edge safety factor + :param rmajor: Plasma major radius (m) + :param rminor: Plasma minor radius (m) + :param ten: Density weighted average electron temperature (keV) + :param tin: Density weighted average ion temperature (keV) + :param vol_plasma: Plasma volume (m3) + :param a_plasma_poloidal: Plasma cross-sectional area (m2) + :param zeff: Plasma effective charge + + :return: Tuple containing: + - pden_electron_transport_loss_mw (float): Electron transport power (MW/m3) + - pden_ion_transport_loss_mw (float): Ion transport power (MW/m3) + - t_electron_energy_confinement (float): Electron energy confinement time (s) + - t_ion_energy_confinement (float): Ion energy confinement time (s) + - t_energy_confinement (float): Global energy confinement time (s) + - p_plasma_loss_mw (float): Heating power (MW) assumed in calculation """ - eps2 = eps / 2.0e0 - str5 = 2.0e0 / (1.0e0 + (kappa**2)) - ck2 = (0.66e0 + (1.88e0 * (np.sqrt(eps2))) - (1.54e0 * eps2)) * ( - 1.0e0 + (1.5e0 * (eps2**2)) - ) - chii = ( - (6.5e-22) - * ck2 - * zeff - * (aspect**1.5e0) - * dene - * (q**2) - * str5 - / ((np.sqrt(tin)) * (bt**2)) - ) - str2 = 2.0e0 * (kappa**2) / (1.0e0 + (kappa**2)) - tauei = 0.375e0 * rminor**2 / chii * str2 + # ======================================================================== # Calculate heating power (MW) - powerht = ( + p_plasma_loss_mw = ( physics_variables.f_alpha_plasma * alpha_power_total + non_alpha_charged_power + physics_variables.p_plasma_ohmic_mw @@ -6698,19 +6715,23 @@ def pcond( # If the device is not ignited, add the injected auxiliary power if ignite == 0: - powerht = powerht + pinjmw + p_plasma_loss_mw = p_plasma_loss_mw + pinjmw # Include the radiation as a loss term if requested - if physics_variables.iradloss == 0: - powerht = powerht - physics_variables.pden_plasma_rad_mw * vol_plasma - elif physics_variables.iradloss == 1: - powerht = ( - powerht - pcoreradpv * vol_plasma + if physics_variables.i_rad_loss == 0: + p_plasma_loss_mw = ( + p_plasma_loss_mw - physics_variables.pden_plasma_rad_mw * vol_plasma + ) + elif physics_variables.i_rad_loss == 1: + p_plasma_loss_mw = ( + p_plasma_loss_mw - pcoreradpv * vol_plasma ) # shouldn't this be vol_core instead of vol_plasma? - # else do not adjust powerht for radiation + # else do not adjust p_plasma_loss_mw for radiation # Ensure heating power is positive (shouldn't be necessary) - powerht = max(powerht, 1.0e-3) + p_plasma_loss_mw = max(p_plasma_loss_mw, 1.0e-3) + + # ======================================================================== # Line averaged electron density in scaled units dnla20 = dnla * 1.0e-20 @@ -6722,828 +6743,748 @@ def pcond( # Plasma current in MA pcur = plasma_current / 1.0e6 - # Separatrix kappa defined with X-section for general use - kappaa = a_plasma_poloidal / (np.pi * rminor * rminor) - # Separatrix kappa defined with plasma volume for IPB scalings - physics_variables.kappaa_ipb = vol_plasma / ( - 2.0e0 * np.pi**2 * rminor * rminor * rmajor - ) + # Updated version of kappa used by the IPB98 scalings correction in: + + # None Otto Kardaun, N. K. Thomsen, and None Alexander Chudnovskiy, + # “Corrections to a sequence of papers in Nuclear Fusion,” Nuclear Fusion, + # vol. 48, no. 9, pp. 099801099801, Aug. 2008, + # doi: https://doi.org/10.1088/0029-5515/48/9/099801. - # Calculate Neo-Alcator confinement time (used in several scalings) - taueena = 0.07e0 * n20 * rminor * rmajor * rmajor * qstar + physics_variables.kappa_ipb = (vol_plasma / (2.0 * np.pi * rmajor)) / ( + np.pi * rminor**2 + ) # Electron energy confinement times - if isc == 1: # Neo-Alcator scaling (ohmic) - # tauee = taueena - tauee = hfact * taueena - - elif isc == 2: # Mirnov scaling (H-mode) - tauee = hfact * 0.2e0 * rminor * np.sqrt(kappa95) * pcur - - elif isc == 3: # Merezhkin-Muhkovatov scaling (L-mode) - tauee = ( - hfact - * 3.5e-3 - * rmajor**2.75e0 - * rminor**0.25e0 - * kappa95**0.125e0 - * qstar - * dnla20 - * np.sqrt(m_fuel_amu) - / np.sqrt(ten / 10.0e0) - ) - - elif isc == 4: # Shimomura scaling (H-mode) - tauee = ( - hfact - * 0.045e0 - * rmajor - * rminor - * bt - * np.sqrt(kappa95) - * np.sqrt(m_fuel_amu) - ) - - elif isc == 5: # Kaye-Goldston scaling (L-mode) - tauee = ( - hfact - * 0.055e0 - * kappa95**0.28e0 - * pcur**1.24e0 - * n20**0.26e0 - * rmajor**1.65e0 - * np.sqrt(m_fuel_amu / 1.5e0) - / (bt**0.09e0 * rminor**0.49e0 * powerht**0.58e0) - ) - - if iinvqd != 0: - tauee = 1.0e0 / np.sqrt(1.0e0 / taueena**2 + 1.0e0 / tauee**2) - - elif isc == 6: # ITER Power scaling - ITER 89-P (L-mode) - tauee = ( - hfact - * 0.048e0 - * pcur**0.85e0 - * rmajor**1.2e0 - * rminor**0.3e0 - * np.sqrt(kappa) - * dnla20**0.1e0 - * bt**0.2e0 - * np.sqrt(m_fuel_amu) - / np.sqrt(powerht) - ) - - elif isc == 7: # ITER Offset linear scaling - ITER 89-O (L-mode) - term1 = ( - 0.04e0 - * pcur**0.5e0 - * rmajor**0.3e0 - * rminor**0.8e0 - * kappa**0.6e0 - * m_fuel_amu**0.5e0 - ) - term2 = ( - 0.064e0 - * pcur**0.8e0 - * rmajor**1.6e0 - * rminor**0.6e0 - * kappa**0.5e0 - * dnla20**0.6e0 - * bt**0.35e0 - * m_fuel_amu**0.2e0 - / powerht - ) - tauee = hfact * (term1 + term2) - - elif isc == 8: # Rebut-Lallia offset linear scaling (L-mode) - rll = (rminor**2 * rmajor * kappa95) ** 0.333e0 - tauee = ( - hfact - * 1.65e0 - * np.sqrt(m_fuel_amu / 2.0e0) - * ( - 1.2e-2 * pcur * rll**1.5e0 / np.sqrt(zeff) - + 0.146e0 - * dnla20**0.75e0 - * np.sqrt(pcur) - * np.sqrt(bt) - * rll**2.75e0 - * zeff**0.25e0 - / powerht - ) + # ======================================================================== + + # User defined confinement time + if i_confinement_time == 0: # t_electron_energy_confinement is an input + t_electron_confinement = physics_variables.tauee_in + + # ======================================================================== + + # Nec-Alcator(NA) OH scaling + if i_confinement_time == 1: + t_electron_confinement = confinement.neo_alcator_confinement_time( + n20, rminor, rmajor, qstar ) - elif isc == 9: # Goldston scaling (L-mode) - tauee = ( - hfact - * 0.037e0 - * pcur - * rmajor**1.75e0 - * rminor ** (-0.37e0) - * np.sqrt(kappa95) - * np.sqrt(m_fuel_amu / 1.5e0) - / np.sqrt(powerht) - ) - - if iinvqd != 0: - tauee = 1.0e0 / np.sqrt(1.0e0 / taueena**2 + 1.0e0 / tauee**2) - - elif isc == 10: # T10 scaling - denfac = dnla20 * rmajor * qstar / (1.3e0 * bt) - denfac = min(1.0e0, denfac) - tauee = ( - hfact - * 0.095e0 - * rmajor - * rminor - * bt - * np.sqrt(kappa95) - * denfac - / powerht**0.4e0 - * (zeff**2 * pcur**4 / (rmajor * rminor * qstar**3 * kappa95**1.5e0)) - ** 0.08e0 + # ======================================================================== + + # "Mirnov"-like scaling (H-mode) + elif i_confinement_time == 2: # Mirnov scaling (H-mode) + t_electron_confinement = confinement.mirnov_confinement_time( + rminor, kappa95, pcur ) - elif isc == 11: # JAERI scaling - gjaeri = ( - zeff**0.4e0 - * ((15.0e0 - zeff) / 20.0e0) ** 0.6e0 - * ( - 3.0e0 - * qstar - * (qstar + 5.0e0) - / ((qstar + 2.0e0) * (qstar + 7.0e0)) + # ======================================================================== + + # Merezhkin-Mukhovatov (MM) OH/L-mode scaling + elif i_confinement_time == 3: + t_electron_confinement = confinement.merezhkin_muhkovatov_confinement_time( + rmajor, rminor, kappa95, qstar, dnla20, m_fuel_amu, ten + ) + + # ======================================================================== + + # Shimomura (S) optimized H-mode scaling + elif i_confinement_time == 4: + t_electron_confinement = confinement.shimomura_confinement_time( + rmajor, rminor, bt, kappa95, m_fuel_amu + ) + + # ======================================================================== + + # Kaye-Goldston scaling (L-mode) + elif i_confinement_time == 5: + t_electron_confinement = confinement.kaye_goldston_confinement_time( + pcur, rmajor, rminor, kappa, dnla20, bt, m_fuel_amu, p_plasma_loss_mw + ) + + # ======================================================================== + + # ITER Power scaling - ITER 89-P (L-mode) + elif i_confinement_time == 6: + t_electron_confinement = confinement.iter_89p_confinement_time( + pcur, rmajor, rminor, kappa, dnla20, bt, m_fuel_amu, p_plasma_loss_mw + ) + + # ======================================================================== + + # ITER Offset linear scaling - ITER 89-O (L-mode) + elif i_confinement_time == 7: + t_electron_confinement = confinement.iter_89_0_confinement_time( + pcur, rmajor, rminor, kappa, dnla20, bt, m_fuel_amu, p_plasma_loss_mw + ) + # ======================================================================== + + # Rebut-Lallia offset linear scaling (L-mode) + elif i_confinement_time == 8: + t_electron_confinement = confinement.rebut_lallia_confinement_time( + rminor, + rmajor, + kappa, + m_fuel_amu, + pcur, + zeff, + dnla20, + bt, + p_plasma_loss_mw, + ) + + # ======================================================================== + + # Goldston scaling (L-mode) + elif i_confinement_time == 9: # Goldston scaling (L-mode) + t_electron_confinement = confinement.goldston_confinement_time( + pcur, rmajor, rminor, kappa95, m_fuel_amu, p_plasma_loss_mw + ) + + # ======================================================================== + + # T-10 scaling (L-mode) + elif i_confinement_time == 10: + t_electron_confinement = confinement.t10_confinement_time( + dnla20, rmajor, qstar, bt, rminor, kappa95, p_plasma_loss_mw, zeff, pcur + ) + + # ======================================================================== + + # JAERI / Odajima-Shimomura L-mode scaling + elif i_confinement_time == 11: # JAERI scaling + t_electron_confinement = confinement.jaeri_confinement_time( + kappa95, + rminor, + m_fuel_amu, + n20, + pcur, + bt, + rmajor, + qstar, + zeff, + p_plasma_loss_mw, + ) + + # ======================================================================== + + # Kaye "big" L-mode scaling (based only on big tokamak data) + elif i_confinement_time == 12: + t_electron_confinement = confinement.kaye_big_confinement_time( + rmajor, + rminor, + bt, + kappa95, + pcur, + n20, + m_fuel_amu, + p_plasma_loss_mw, + ) + + # ======================================================================== + + # ITER H90-P H-mode scaling + elif i_confinement_time == 13: + t_electron_confinement = confinement.iter_h90_p_confinement_time( + pcur, + rmajor, + rminor, + kappa, + dnla20, + bt, + m_fuel_amu, + p_plasma_loss_mw, + ) + + # ======================================================================== + + # Minimum of ITER 89-P and ITER 89-O + elif i_confinement_time == 14: + t_electron_confinement = min( + confinement.iter_89p_confinement_time( + pcur, + rmajor, + rminor, + kappa, + dnla20, + bt, + m_fuel_amu, + p_plasma_loss_mw, + ), + confinement.iter_89_0_confinement_time( + pcur, + rmajor, + rminor, + kappa, + dnla20, + bt, + m_fuel_amu, + p_plasma_loss_mw, + ), + ) + + # ======================================================================== + + # Riedel scaling (L-mode) + elif i_confinement_time == 15: + t_electron_confinement = confinement.riedel_l_confinement_time( + pcur, + rmajor, + rminor, + kappa95, + dnla20, + bt, + p_plasma_loss_mw, + ) + + # ======================================================================== + + # Christiansen et al scaling (L-mode) + elif i_confinement_time == 16: + t_electron_confinement = confinement.christiansen_confinement_time( + pcur, + rmajor, + rminor, + kappa95, + dnla20, + bt, + p_plasma_loss_mw, + m_fuel_amu, + ) + + # ======================================================================== + + # Lackner-Gottardi scaling (L-mode) + elif i_confinement_time == 17: + t_electron_confinement = confinement.lackner_gottardi_confinement_time( + pcur, + rmajor, + rminor, + kappa95, + dnla20, + bt, + p_plasma_loss_mw, + ) + + # ======================================================================== + + # Neo-Kaye scaling (L-mode) + elif i_confinement_time == 18: + t_electron_confinement = confinement.neo_kaye_confinement_time( + pcur, + rmajor, + rminor, + kappa95, + dnla20, + bt, + p_plasma_loss_mw, + ) + + # ======== ================================================================ + + # Riedel scaling (H-mode) + elif i_confinement_time == 19: + t_electron_confinement = confinement.riedel_h_confinement_time( + pcur, + rmajor, + rminor, + kappa95, + dnla20, + bt, + m_fuel_amu, + p_plasma_loss_mw, + ) + + # ======================================================================== + + # Amended version of ITER H90-P law + elif i_confinement_time == 20: + t_electron_confinement = confinement.iter_h90_p_amended_confinement_time( + pcur, + bt, + m_fuel_amu, + rmajor, + p_plasma_loss_mw, + kappa, + ) + + # ========================================================================== + + # Sudo et al. scaling (stellarators/heliotron) + elif i_confinement_time == 21: + t_electron_confinement = confinement.sudo_et_al_confinement_time( + rmajor, + rminor, + dnla20, + bt, + p_plasma_loss_mw, + ) + + # ========================================================================== + + # Gyro-reduced Bohm scaling + elif i_confinement_time == 22: + t_electron_confinement = confinement.gyro_reduced_bohm_confinement_time( + bt, + dnla20, + p_plasma_loss_mw, + rminor, + rmajor, + ) + + # ========================================================================== + + # Lackner-Gottardi stellarator scaling + elif i_confinement_time == 23: + t_electron_confinement = ( + confinement.lackner_gottardi_stellarator_confinement_time( + rmajor, + rminor, + dnla20, + bt, + p_plasma_loss_mw, + q, ) - ** 0.6e0 - ) - tauee = hfact * ( - 0.085e0 * kappa95 * rminor**2 * np.sqrt(m_fuel_amu) - + 0.069e0 - * n20**0.6e0 - * pcur - * bt**0.2e0 - * rminor**0.4e0 - * rmajor**1.6e0 - * np.sqrt(m_fuel_amu) - * gjaeri - * kappa95**0.2e0 - / powerht - ) - - elif isc == 12: # Kaye-Big scaling - tauee = ( - hfact - * 0.105e0 - * np.sqrt(rmajor) - * rminor**0.8e0 - * bt**0.3e0 - * kappa95**0.25e0 - * pcur**0.85e0 - * n20**0.1e0 - * m_fuel_amu**0.5e0 - / powerht**0.5e0 - ) - - elif isc == 13: # ITER H-mode scaling - ITER H90-P - tauee = ( - hfact - * 0.064e0 - * pcur**0.87e0 - * rmajor**1.82e0 - * rminor ** (-0.12e0) - * kappa**0.35e0 - * dnla20**0.09e0 - * bt**0.15e0 - * np.sqrt(m_fuel_amu) - / np.sqrt(powerht) - ) - - elif isc == 14: # Minimum of ITER 89-P (isc=6) and ITER 89-O (isc=7) - tauit1 = ( - hfact - * 0.048e0 - * pcur**0.85e0 - * rmajor**1.2e0 - * rminor**0.3e0 - * np.sqrt(kappa) - * dnla20**0.1e0 - * bt**0.2e0 - * np.sqrt(m_fuel_amu) - / np.sqrt(powerht) - ) - term1 = ( - 0.04e0 - * pcur**0.5e0 - * rmajor**0.3e0 - * rminor**0.8e0 - * kappa**0.6e0 - * m_fuel_amu**0.5e0 - ) - term2 = ( - 0.064e0 - * pcur**0.8e0 - * rmajor**1.6e0 - * rminor**0.6e0 - * kappa**0.5e0 - * dnla20**0.6e0 - * bt**0.35e0 - * m_fuel_amu**0.2e0 - / powerht - ) - tauit2 = hfact * (term1 + term2) - tauee = min(tauit1, tauit2) - - elif isc == 15: # Riedel scaling (L-mode) - tauee = ( - hfact - * 0.044e0 - * pcur**0.93e0 - * rmajor**1.37e0 - * rminor ** (-0.049e0) - * kappa95**0.588e0 - * dnla20**0.078e0 - * bt**0.152e0 - / powerht**0.537e0 - ) - - elif isc == 16: # Christiansen et al scaling (L-mode) - tauee = ( - hfact - * 0.24e0 - * pcur**0.79e0 - * rmajor**0.56e0 - * rminor**1.46e0 - * kappa95**0.73e0 - * dnla20**0.41e0 - * bt**0.29e0 - / (powerht**0.79e0 * m_fuel_amu**0.02e0) - ) - - elif isc == 17: # Lackner-Gottardi scaling (L-mode) - qhat = (1.0e0 + kappa95**2) * rminor**2 * bt / (0.4e0 * pcur * rmajor) - tauee = ( - hfact - * 0.12e0 - * pcur**0.8e0 - * rmajor**1.8e0 - * rminor**0.4e0 - * kappa95 - * (1.0e0 + kappa95) ** (-0.8e0) - * dnla20**0.6e0 - * qhat**0.4e0 - / powerht**0.6e0 - ) - - elif isc == 18: # Neo-Kaye scaling (L-mode) - tauee = ( - hfact - * 0.063e0 - * pcur**1.12e0 - * rmajor**1.3e0 - * rminor ** (-0.04e0) - * kappa95**0.28e0 - * dnla20**0.14e0 - * bt**0.04e0 - * np.sqrt(m_fuel_amu) - / powerht**0.59e0 - ) - - elif isc == 19: # Riedel scaling (H-mode) - tauee = ( - hfact - * 0.1e0 - * np.sqrt(m_fuel_amu) - * pcur**0.884e0 - * rmajor**1.24e0 - * rminor ** (-0.23e0) - * kappa95**0.317e0 - * bt**0.207e0 - * dnla20**0.105e0 - / powerht**0.486e0 - ) - - elif isc == 20: # Amended version of ITER H90-P law - # Nuclear Fusion 32 (1992) 318 - tauee = ( - hfact - * 0.082e0 - * pcur**1.02e0 - * bt**0.15e0 - * np.sqrt(m_fuel_amu) - * rmajor**1.60e0 - / (powerht**0.47e0 * kappa**0.19e0) - ) - - elif isc == 21: # Large Helical Device scaling (stellarators) - # S.Sudo, Y.Takeiri, H.Zushi et al., Nuclear Fusion 30 (1990) 11 - tauee = ( - hfact - * 0.17e0 - * rmajor**0.75e0 - * rminor**2 - * dnla20**0.69e0 - * bt**0.84e0 - * powerht ** (-0.58e0) - ) - - elif isc == 22: # Gyro-reduced Bohm scaling - # R.J.Goldston, H.Biglari, G.W.Hammett et al., Bull.Am.Phys.Society, - # volume 34, 1964 (1989) - tauee = ( - hfact - * 0.25e0 - * bt**0.8e0 - * dnla20**0.6e0 - * powerht ** (-0.6e0) - * rminor**2.4e0 - * rmajor**0.6e0 - ) - - elif isc == 23: # Lackner-Gottardi stellarator scaling - # K.Lackner and N.A.O.Gottardi, Nuclear Fusion, 30, p.767 (1990) - iotabar = q # dummy argument q is actual argument iotabar for stellarators - tauee = ( - hfact - * 0.17e0 - * rmajor - * rminor**2 - * dnla20**0.6e0 - * bt**0.8e0 - * powerht ** (-0.6e0) - * iotabar**0.4e0 - ) - - elif ( - isc == 24 - ): # ITER-93H scaling (ELM-free; multiply by 0.85 for ELMy version) - # S.Kaye and the ITER Joint Central Team and Home Teams, in Plasma - # Physics and Controlled Nuclear Fusion Research (Proc. 15th - # Int. Conf., Seville, 1994) IAEA-CN-60/E-P-3 - tauee = ( - hfact - * 0.053e0 - * pcur**1.06e0 - * bt**0.32e0 - * powerht ** (-0.67e0) - * m_fuel_amu**0.41e0 - * rmajor**1.79e0 - * dnla20**0.17e0 - * aspect**0.11e0 - * kappa**0.66e0 - ) - - # Next two are ITER-97 H-mode scalings - # J. G. Cordey et al., EPS Berchtesgaden, 1997 - - elif isc == 26: # ELM-free: ITERH-97P - tauee = ( - hfact - * 0.031e0 - * pcur**0.95e0 - * bt**0.25e0 - * powerht ** (-0.67e0) - * dnla19**0.35e0 - * rmajor**1.92e0 - * aspect ** (-0.08e0) - * kappa**0.63e0 - * m_fuel_amu**0.42e0 - ) - - elif isc == 27: # ELMy: ITERH-97P(y) - tauee = ( - hfact - * 0.029e0 - * pcur**0.90e0 - * bt**0.20e0 - * powerht ** (-0.66e0) - * dnla19**0.40e0 - * rmajor**2.03e0 - * aspect ** (-0.19e0) - * kappa**0.92e0 - * m_fuel_amu**0.2e0 - ) - - elif isc == 28: # ITER-96P (= ITER-97L) L-mode scaling - # S.M.Kaye and the ITER Confinement Database Working Group, - # Nuclear Fusion 37 (1997) 1303 - # N.B. tau_th formula used - tauee = ( - hfact - * 0.023e0 - * pcur**0.96e0 - * bt**0.03e0 - * kappa95**0.64e0 - * rmajor**1.83e0 - * aspect**0.06e0 - * dnla19**0.40e0 - * m_fuel_amu**0.20e0 - * powerht ** (-0.73e0) - ) - - elif isc == 29: # Valovic modified ELMy-H mode scaling - tauee = ( - hfact - * 0.067e0 - * pcur**0.9e0 - * bt**0.17e0 - * dnla19**0.45e0 - * m_fuel_amu**0.05e0 - * rmajor**1.316e0 - * rminor**0.79e0 - * kappa**0.56e0 - * powerht ** (-0.68e0) - ) - - elif isc == 30: # Kaye PPPL Workshop April 1998 L-mode scaling - tauee = ( - hfact - * 0.021e0 - * pcur**0.81e0 - * bt**0.14e0 - * kappa**0.7e0 - * rmajor**2.01e0 - * aspect ** (-0.18e0) - * dnla19**0.47e0 - * m_fuel_amu**0.25e0 - * powerht ** (-0.73e0) - ) - - elif isc == 31: # ITERH-PB98P(y), ELMy H-mode scaling - tauee = ( - hfact - * 0.0615e0 - * pcur**0.9e0 - * bt**0.1e0 - * dnla19**0.4e0 - * powerht ** (-0.66e0) - * rmajor**2 - * kappaa**0.75e0 - * aspect ** (-0.66e0) - * m_fuel_amu**0.2e0 - ) - - elif isc == 32: # IPB98(y), ELMy H-mode scaling - # Data selection : full ITERH.DB3 - # Nuclear Fusion 39 (1999) 2175, Table 5 - tauee = ( - hfact - * 0.0365e0 - * pcur**0.97e0 - * bt**0.08e0 - * dnla19**0.41e0 - * powerht ** (-0.63e0) - * rmajor**1.93e0 - * kappa**0.67e0 - * aspect ** (-0.23e0) - * m_fuel_amu**0.2e0 - ) - - elif isc == 33: # IPB98(y,1), ELMy H-mode scaling - # Data selection : full ITERH.DB3 - # Nuclear Fusion 39 (1999) 2175, Table 5 - tauee = ( - hfact - * 0.0503e0 - * pcur**0.91e0 - * bt**0.15e0 - * dnla19**0.44e0 - * powerht ** (-0.65e0) - * rmajor**2.05e0 - * physics_variables.kappaa_ipb**0.72e0 - * aspect ** (-0.57e0) - * m_fuel_amu**0.13e0 - ) - - elif isc == 34: # IPB98(y,2), ELMy H-mode scaling - # Data selection : ITERH.DB3, NBI only - # Nuclear Fusion 39 (1999) 2175, Table 5 - tauee = ( - hfact - * 0.0562e0 - * pcur**0.93e0 - * bt**0.15e0 - * dnla19**0.41e0 - * powerht ** (-0.69e0) - * rmajor**1.97e0 - * physics_variables.kappaa_ipb**0.78e0 - * aspect ** (-0.58e0) - * m_fuel_amu**0.19e0 - ) - - elif isc == 35: # IPB98(y,3), ELMy H-mode scaling - # Data selection : ITERH.DB3, NBI only, no C-Mod - # Nuclear Fusion 39 (1999) 2175, Table 5 - tauee = ( - hfact - * 0.0564e0 - * pcur**0.88e0 - * bt**0.07e0 - * dnla19**0.40e0 - * powerht ** (-0.69e0) - * rmajor**2.15e0 - * physics_variables.kappaa_ipb**0.78e0 - * aspect ** (-0.64e0) - * m_fuel_amu**0.20e0 - ) - - elif isc == 36: # IPB98(y,4), ELMy H-mode scaling - # Data selection : ITERH.DB3, NBI only, ITER like devices - # Nuclear Fusion 39 (1999) 2175, Table 5 - tauee = ( - hfact - * 0.0587e0 - * pcur**0.85e0 - * bt**0.29e0 - * dnla19**0.39e0 - * powerht ** (-0.70e0) - * rmajor**2.08e0 - * physics_variables.kappaa_ipb**0.76e0 - * aspect ** (-0.69e0) - * m_fuel_amu**0.17e0 - ) - - elif isc == 37: # ISS95 stellarator scaling - # U. Stroth et al., Nuclear Fusion, 36, p.1063 (1996) - # Assumes kappa = 1.0, triang = 0.0 + ) + + # ========================================================================== + + # ITER_93 ELM-free H-mode scaling + elif i_confinement_time == 24: + t_electron_confinement = confinement.iter_93h_confinement_time( + pcur, + bt, + p_plasma_loss_mw, + m_fuel_amu, + rmajor, + dnla20, + aspect, + kappa, + ) + + # ========================================================================== + # Scaling removed + elif i_confinement_time == 25: + raise ValueError("Scaling removed") + # ========================================================================== + + # ELM-free: ITERH-97P + elif i_confinement_time == 26: + t_electron_confinement = confinement.iter_h97p_confinement_time( + pcur, + bt, + p_plasma_loss_mw, + dnla19, + rmajor, + aspect, + kappa, + m_fuel_amu, + ) + + # ========================================================================== + + # ELMy: ITERH-97P(y) + elif i_confinement_time == 27: + t_electron_confinement = confinement.iter_h97p_elmy_confinement_time( + pcur, + bt, + p_plasma_loss_mw, + dnla19, + rmajor, + aspect, + kappa, + m_fuel_amu, + ) + + # ========================================================================== + + # ITER-96P (= ITER-97L) L-mode scaling + elif i_confinement_time == 28: + t_electron_confinement = confinement.iter_96p_confinement_time( + pcur, + bt, + kappa95, + rmajor, + aspect, + dnla19, + m_fuel_amu, + p_plasma_loss_mw, + ) + + # ========================================================================== + + # Valovic modified ELMy-H mode scaling + # WARNING: No reference found for this scaling. This may not be its real name + elif i_confinement_time == 29: + t_electron_confinement = confinement.valovic_elmy_confinement_time( + pcur, + bt, + dnla19, + m_fuel_amu, + rmajor, + rminor, + kappa, + p_plasma_loss_mw, + ) + + # ========================================================================== + + # Kaye PPPL Workshop April 1998 L-mode scaling + # WARNING: No reference found for this scaling. This may not be its real name + elif i_confinement_time == 30: + t_electron_confinement = confinement.kaye_confinement_time( + pcur, + bt, + kappa, + rmajor, + aspect, + dnla19, + m_fuel_amu, + p_plasma_loss_mw, + ) + + # ========================================================================== + + # ITERH-PB98P(y), ELMy H-mode scaling + # WARNING: No reference found for this scaling. This may not be its real name + elif i_confinement_time == 31: + t_electron_confinement = confinement.iter_pb98py_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + physics_variables.kappa_ipb, + aspect, + m_fuel_amu, + ) + + # ========================================================================== + + # IPB98(y), ELMy H-mode scaling + elif i_confinement_time == 32: + t_electron_confinement = confinement.iter_ipb98y_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + kappa, + aspect, + m_fuel_amu, + ) + + # ========================================================================== + + # IPB98(y,1), ELMy H-mode scaling + elif i_confinement_time == 33: + t_electron_confinement = confinement.iter_ipb98y1_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + physics_variables.kappa_ipb, + aspect, + m_fuel_amu, + ) + + # ========================================================================== + + # IPB98(y,2), ELMy H-mode scaling + elif i_confinement_time == 34: + t_electron_confinement = confinement.iter_ipb98y2_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + physics_variables.kappa_ipb, + aspect, + m_fuel_amu, + ) + + # ========================================================================== + + # IPB98(y,3), ELMy H-mode scaling + elif i_confinement_time == 35: + t_electron_confinement = confinement.iter_ipb98y3_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + physics_variables.kappa_ipb, + aspect, + m_fuel_amu, + ) + + # ========================================================================== + + # IPB98(y,4), ELMy H-mode scaling + elif i_confinement_time == 36: + t_electron_confinement = confinement.iter_ipb98y4_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + physics_variables.kappa_ipb, + aspect, + m_fuel_amu, + ) + + # ========================================================================== + + # ISS95 stellarator scaling + elif i_confinement_time == 37: iotabar = q # dummy argument q is actual argument iotabar for stellarators - tauee = ( - hfact - * 0.079e0 - * rminor**2.21e0 - * rmajor**0.65e0 - * dnla19**0.51e0 - * bt**0.83e0 - * powerht ** (-0.59e0) - * iotabar**0.4e0 - ) - - elif isc == 38: # ISS04 stellarator scaling - # H. Yamada et al., Nuclear Fusion, 45, p.1684 (2005) - # Assumes kappa = 1.0, triang = 0.0 + t_electron_confinement = confinement.iss95_stellarator_confinement_time( + rminor, + rmajor, + dnla19, + bt, + p_plasma_loss_mw, + iotabar, + ) + + # ========================================================================== + + # ISS04 stellarator scaling + elif i_confinement_time == 38: iotabar = q # dummy argument q is actual argument iotabar for stellarators - tauee = ( - hfact - * 0.134e0 - * rminor**2.28e0 - * rmajor**0.64e0 - * dnla19**0.54e0 - * bt**0.84e0 - * powerht ** (-0.61e0) - * iotabar**0.41e0 - ) - - elif isc == 39: # DS03 beta-independent H-mode scaling - # T. C. Luce, C. C. Petty and J. G. Cordey, - # Plasma Phys. Control. Fusion 50 (2008) 043001, eqn.4.13, p.67 - tauee = ( - hfact - * 0.028e0 - * pcur**0.83e0 - * bt**0.07e0 - * dnla19**0.49e0 - * powerht ** (-0.55e0) - * rmajor**2.11e0 - * kappa95**0.75e0 - * aspect ** (-0.3e0) - * m_fuel_amu**0.14e0 - ) - - elif isc == 40: # "Non-power law" (NPL) Murari energy confinement scaling - # Based on the ITPA database of H-mode discharges - # A new approach to the formulation and validation of scaling expressions for plasma confinement in tokamaks - # A. Murari et al 2015 Nucl. Fusion 55 073009, doi:10.1088/0029-5515/55/7/073009 - # Table 4. (Issue #311) - # Note that aspect ratio and M (m_fuel_amu) do not appear, and B (bt) only - # appears in the "saturation factor" h. - h = dnla19**0.448e0 / (1.0e0 + np.exp(-9.403e0 * (bt / dnla19) ** 1.365e0)) - tauee = ( - hfact - * 0.0367e0 - * pcur**1.006e0 - * rmajor**1.731e0 - * kappaa**1.450e0 - * powerht ** (-0.735e0) - * h - ) - - elif isc == 41: # Beta independent dimensionless confinement scaling - # C.C. Petty 2008 Phys. Plasmas 15, 080501, equation 36 - # Note that there is no dependence on the average fuel mass 'm_fuel_amu' - tauee = ( - hfact - * 0.052e0 - * pcur**0.75e0 - * bt**0.3e0 - * dnla19**0.32e0 - * powerht ** (-0.47e0) - * rmajor**2.09e0 - * kappaa**0.88e0 - * aspect ** (-0.84e0) - ) - - elif isc == 42: # High density relevant confinement scaling - # P.T. Lang et al. 2012, IAEA conference proceeding EX/P4-01 - # q should be q95: incorrect if i_plasma_current = 2 (ST current scaling) - qratio = q / qstar - # Greenwald density in m^-3 - n_gw = 1.0e14 * plasma_current / (np.pi * rminor * rminor) - nratio = dnla / n_gw - tauee = ( - hfact - * 6.94e-7 - * plasma_current**1.3678e0 - * bt**0.12e0 - * dnla**0.032236e0 - * (powerht * 1.0e6) ** (-0.74e0) - * rmajor**1.2345e0 - * physics_variables.kappaa_ipb**0.37e0 - * aspect**2.48205e0 - * m_fuel_amu**0.2e0 - * qratio**0.77e0 - * aspect ** (-0.9e0 * np.log(aspect)) - * nratio ** (-0.22e0 * np.log(nratio)) - ) - - elif isc == 43: # Hubbard et al. 2017 I-mode confinement time scaling - nominal - tauee = ( - hfact - * 0.014e0 - * (plasma_current / 1.0e6) ** 0.68e0 - * bt**0.77e0 - * dnla20**0.02e0 - * powerht ** (-0.29e0) - ) - - elif isc == 44: # Hubbard et al. 2017 I-mode confinement time scaling - lower - tauee = ( - hfact - * 0.014e0 - * (plasma_current / 1.0e6) ** 0.60e0 - * bt**0.70e0 - * dnla20 ** (-0.03e0) - * powerht ** (-0.33e0) - ) - - elif isc == 45: # Hubbard et al. 2017 I-mode confinement time scaling - upper - tauee = ( - hfact - * 0.014e0 - * (plasma_current / 1.0e6) ** 0.76e0 - * bt**0.84e0 - * dnla20**0.07 - * powerht ** (-0.25e0) - ) - - elif isc == 46: # NSTX, ELMy H-mode scaling - # NSTX scaling with IPB98(y,2) for other variables - # Menard 2019, Phil. Trans. R. Soc. A 377:20170440 - # Kaye et al. 2006, Nucl. Fusion 46 848 - tauee = ( - hfact - * 0.095e0 - * pcur**0.57e0 - * bt**1.08e0 - * dnla19**0.44e0 - * powerht ** (-0.73e0) - * rmajor**1.97e0 - * physics_variables.kappaa_ipb**0.78e0 - * aspect ** (-0.58e0) - * m_fuel_amu**0.19e0 - ) - - elif isc == 47: # NSTX-Petty08 Hybrid - # Linear interpolation between NSTX and Petty08 in eps - # Menard 2019, Phil. Trans. R. Soc. A 377:20170440 - if (1.0e0 / aspect) <= 0.4e0: - # Petty08, i.e. case (41) - tauee = ( - hfact - * 0.052e0 - * pcur**0.75e0 - * bt**0.3e0 - * dnla19**0.32e0 - * powerht ** (-0.47e0) - * rmajor**2.09e0 - * kappaa**0.88e0 - * aspect ** (-0.84e0) - ) + t_electron_confinement = confinement.iss04_stellarator_confinement_time( + rminor, + rmajor, + dnla19, + bt, + p_plasma_loss_mw, + iotabar, + ) - elif (1.0e0 / aspect) >= 0.6e0: - # NSTX, i.e.case (46) - tauee = ( - hfact - * 0.095e0 - * pcur**0.57e0 - * bt**1.08e0 - * dnla19**0.44e0 - * powerht ** (-0.73e0) - * rmajor**1.97e0 - * physics_variables.kappaa_ipb**0.78e0 - * aspect ** (-0.58e0) - * m_fuel_amu**0.19e0 - ) + # ========================================================================== - else: - taupetty = ( - 0.052e0 - * pcur**0.75e0 - * bt**0.3e0 - * dnla19**0.32e0 - * powerht ** (-0.47e0) - * rmajor**2.09e0 - * kappaa**0.88e0 - * aspect ** (-0.84e0) - ) - taunstx = ( - 0.095e0 - * pcur**0.57e0 - * bt**1.08e0 - * dnla19**0.44e0 - * powerht ** (-0.73e0) - * rmajor**1.97e0 - * physics_variables.kappaa_ipb**0.78e0 - * aspect ** (-0.58e0) - * m_fuel_amu**0.19e0 - ) + # DS03 beta-independent H-mode scaling + elif i_confinement_time == 39: + t_electron_confinement = confinement.ds03_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + kappa95, + aspect, + m_fuel_amu, + ) + + # ========================================================================== - tauee = hfact * ( - (((1.0e0 / aspect) - 0.4e0) / (0.6e0 - 0.4e0)) * taunstx - + ((0.6e0 - (1.0e0 / aspect)) / (0.6e0 - 0.4e0)) * taupetty + # Murari "Non-power law" scaling + elif i_confinement_time == 40: + t_electron_confinement = confinement.murari_confinement_time( + pcur, + rmajor, + physics_variables.kappa_ipb, + dnla19, + bt, + p_plasma_loss_mw, + ) + + # ========================================================================== + + # Petty08, beta independent dimensionless scaling + elif i_confinement_time == 41: + t_electron_confinement = confinement.petty08_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + physics_variables.kappa_ipb, + aspect, + ) + + # ========================================================================== + + # Lang high density relevant confinement scaling + elif i_confinement_time == 42: + t_electron_confinement = confinement.lang_high_density_confinement_time( + plasma_current, + bt, + dnla, + p_plasma_loss_mw, + rmajor, + rminor, + q, + qstar, + aspect, + m_fuel_amu, + physics_variables.kappa_ipb, + ) + + # ========================================================================== + + # Hubbard 2017 I-mode confinement time scaling - nominal + elif i_confinement_time == 43: + t_electron_confinement = confinement.hubbard_nominal_confinement_time( + pcur, + bt, + dnla20, + p_plasma_loss_mw, + ) + + # ========================================================================== + + # Hubbard 2017 I-mode confinement time scaling - lower + elif i_confinement_time == 44: + t_electron_confinement = confinement.hubbard_lower_confinement_time( + pcur, + bt, + dnla20, + p_plasma_loss_mw, + ) + + # ========================================================================== + + # Hubbard 2017 I-mode confinement time scaling - upper + elif i_confinement_time == 45: + t_electron_confinement = confinement.hubbard_upper_confinement_time( + pcur, + bt, + dnla20, + p_plasma_loss_mw, + ) + + # ========================================================================== + + # Menard NSTX, ELMy H-mode scaling + elif i_confinement_time == 46: + t_electron_confinement = confinement.menard_nstx_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + physics_variables.kappa_ipb, + aspect, + m_fuel_amu, + ) + + # ========================================================================== + + # Menard NSTX-Petty08 Hybrid + elif i_confinement_time == 47: + t_electron_confinement = ( + confinement.menard_nstx_petty08_hybrid_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + physics_variables.kappa_ipb, + aspect, + m_fuel_amu, ) + ) + + # ========================================================================== + + # NSTX gyro-Bohm (Buxton) + elif i_confinement_time == 48: + t_electron_confinement = confinement.nstx_gyro_bohm_confinement_time( + pcur, + bt, + p_plasma_loss_mw, + rmajor, + dnla20, + ) + + # ========================================================================== + + # ITPA20 H-mode scaling + elif i_confinement_time == 49: + t_electron_confinement = confinement.itpa20_confinement_time( + pcur, + bt, + dnla19, + p_plasma_loss_mw, + rmajor, + physics_variables.triang, + physics_variables.kappa_ipb, + eps, + physics_variables.m_ions_total_amu, + ) - elif isc == 48: # NSTX gyro-Bohm (Buxton) - # P F Buxton et al. 2019 Plasma Phys. Control. Fusion 61 035006 - tauee = ( - hfact - * 0.21e0 - * pcur**0.54e0 - * bt**0.91e0 - * powerht ** (-0.38e0) - * rmajor**2.14e0 - * dnla20 ** (-0.05e0) - ) - - elif isc == 49: # tauee is an input - tauee = hfact * physics_variables.tauee_in - - elif isc == 50: # ITPA20 Issue #3164 - # The updated ITPA global H-mode confinement database: description and analysis - # G. Verdoolaege et al 2021 Nucl. Fusion 61 076006 DOI 10.1088/1741-4326/abdb91 - - # thermal energy confinement time - # plasma current Ip (MA), - # on-axis vacuum toroidal magnetic field Bt (T) - # "central line-averaged electron density" nebar (1019 m-3) - # thermal power lost due to transport through the LCFS Pl,th (MW) - # major radius Rgeo (m) - # elongation of the LCFS, defined as κa = V/(2πRgeo πa2) - # (with V (m3) the plasma volume inside the LCFS), - # inverse aspect ratio epsilon = a/Rgeo - # effective atomic mass Meff of the plasma - NOT defined, but I have taken it equal to - # m_ions_total_amu = average mass of all ions (amu). - # energy confinement time is given by τE,th = Wth/Pl,th, where Wth is the thermal stored energy. - # The latter is derived from the total stored energy Wtot by subtracting the energy - # content associated to fast particles originating from plasma heating. - - tauee = ( - hfact - * 0.053 - * pcur**0.98 - * bt**0.22 - * dnla19**0.24 - * powerht ** (-0.669) - * rmajor**1.71 - * (1 + physics_variables.triang) ** 0.36 - * physics_variables.kappaa_ipb**0.8 - * eps**0.35 - * physics_variables.m_ions_total_amu**0.2 + # ========================================================================== + + # ITPA20-IL confinement time scaling + elif i_confinement_time == 50: + t_electron_confinement = confinement.itpa20_il_confinement_time( + pcur, + bt, + p_plasma_loss_mw, + dnla19, + physics_variables.m_ions_total_amu, + rmajor, + physics_variables.triang, + physics_variables.kappa_ipb, ) + # ========================================================================== + else: - error_handling.idiags[0] = isc + error_handling.idiags[0] = i_confinement_time error_handling.report_error(81) - # Ion energy confinement time - # N.B. Overwrites earlier calculation above + # Apply H-factor correction to chosen scaling + t_electron_energy_confinement = hfact * t_electron_confinement - tauei = tauee + # Ion energy confinement time + t_ion_energy_confinement = t_electron_energy_confinement # Calculation of the transport power loss terms # Transport losses in Watts/m3 are 3/2 * n.e.T / tau , with T in eV - # (here, tin and ten are in keV, and ptrepv and ptripv are in MW/m3) - - ptripv = 2.403e-22 * nd_ions_total * tin / tauei - ptrepv = 2.403e-22 * dene * ten / tauee + # (here, tin and ten are in keV, and pden_electron_transport_loss_mw and pden_ion_transport_loss_mw are in MW/m3) + + # The transport losses is just the electron and ion thermal energies divided by the confinement time. + pden_ion_transport_loss_mw = ( + (3 / 2) + * (constants.electron_charge / 1e3) + * nd_ions_total + * tin + / t_ion_energy_confinement + ) + pden_electron_transport_loss_mw = ( + (3 / 2) + * (constants.electron_charge / 1e3) + * dene + * ten + / t_electron_energy_confinement + ) - ratio = nd_ions_total / dene * tin / ten + ratio = (nd_ions_total / dene) * (tin / ten) # Global energy confinement time - taueff = (ratio + 1.0e0) / (ratio / tauei + 1.0e0 / tauee) + t_energy_confinement = (ratio + 1.0e0) / ( + ratio / t_ion_energy_confinement + 1.0e0 / t_electron_energy_confinement + ) + + # For comparison directly calculate the confinement time from the stored energy calculated + # from the total plasma beta and the loss power used above. + physics_module.t_energy_confinement_beta = ( + physics_module.e_plasma_beta / 1e6 + ) / p_plasma_loss_mw - return kappaa, ptrepv, ptripv, tauee, tauei, taueff, powerht + return ( + pden_electron_transport_loss_mw, + pden_ion_transport_loss_mw, + t_electron_energy_confinement, + t_ion_energy_confinement, + t_energy_confinement, + p_plasma_loss_mw, + ) def calculate_poloidal_beta(btot, bp, beta): diff --git a/process/power.py b/process/power.py index 0ac6924aac..6dd504f92f 100644 --- a/process/power.py +++ b/process/power.py @@ -1554,10 +1554,10 @@ def power2(self, output: bool): po.ocmmnt(self.outfile, "-------------------------------") po.ocmmnt(self.outfile, "Only energy deposited in the plasma is included here.") - if physics_variables.iradloss == 0: + if physics_variables.i_rad_loss == 0: po.ocmmnt( self.outfile, - "Total power loss is scaling power plus radiation (physics_variables.iradloss = 0)", + "Total power loss is scaling power plus radiation (physics_variables.i_rad_loss = 0)", ) po.ovarrf( self.outfile, @@ -1575,10 +1575,10 @@ def power2(self, output: bool): ) total = physics_variables.pscalingmw + physics_variables.p_plasma_rad_mw po.ovarrf(self.outfile, "Total (MW)", "", total, "OP ") - elif physics_variables.iradloss == 1: + elif physics_variables.i_rad_loss == 1: po.ocmmnt( self.outfile, - "Total power loss is scaling power plus core radiation only (physics_variables.iradloss = 1)", + "Total power loss is scaling power plus core radiation only (physics_variables.i_rad_loss = 1)", ) po.ovarrf( self.outfile, @@ -1604,10 +1604,10 @@ def power2(self, output: bool): total = ( physics_variables.pscalingmw + physics_variables.p_plasma_inner_rad_mw ) - elif physics_variables.iradloss == 2: + elif physics_variables.i_rad_loss == 2: po.ocmmnt( self.outfile, - "Total power loss is scaling power only (physics_variables.iradloss = 2).", + "Total power loss is scaling power only (physics_variables.i_rad_loss = 2).", ) po.ocmmnt(self.outfile, "This is not recommended for power plant models.") po.ovarrf( @@ -1623,11 +1623,11 @@ def power2(self, output: bool): total = physics_variables.pscalingmw else: logger.error( - f"{'The value of physics_variables.iradloss appears to be invalid.'}" + f"{'The value of physics_variables.i_rad_loss appears to be invalid.'}" ) po.ocmmnt( self.outfile, - "ERROR: The value of physics_variables.iradloss appears to be invalid.", + "ERROR: The value of physics_variables.i_rad_loss appears to be invalid.", ) po.oblnkl(self.outfile) diff --git a/process/stellarator.py b/process/stellarator.py index 5cda95e2f0..367664852c 100644 --- a/process/stellarator.py +++ b/process/stellarator.py @@ -213,14 +213,13 @@ def stigma(self): for iisc, i in enumerate(istlaw): ( - physics_variables.kappaa, - physics_variables.ptrepv, - physics_variables.ptripv, - physics_variables.tauee, - physics_variables.tauei, - physics_variables.taueff, - physics_variables.powerht, - ) = self.physics.pcond( + physics_variables.pden_electron_transport_loss_mw, + physics_variables.pden_ion_transport_loss_mw, + physics_variables.t_electron_energy_confinement, + physics_variables.t_ion_energy_confinement, + physics_variables.t_energy_confinement, + physics_variables.p_plasma_loss_mw, + ) = self.physics.calculate_confinement_time( physics_variables.m_fuel_amu, physics_variables.alpha_power_total, physics_variables.aspect, @@ -230,8 +229,7 @@ def stigma(self): physics_variables.dnla, physics_variables.eps, 2.0, - physics_variables.iinvqd, - physics_variables.isc, + physics_variables.i_confinement_time, physics_variables.ignite, physics_variables.kappa, physics_variables.kappa95, @@ -251,7 +249,7 @@ def stigma(self): physics_variables.zeff, ) - physics_variables.hfac[iisc] = self.physics.fhfac(i) + physics_variables.hfac[iisc] = self.physics.find_other_h_factors(i) def stnewconfig(self): """author: J Lion, IPP Greifswald @@ -354,7 +352,7 @@ def stopt(self, output: bool): physics_variables.dnelimt = self.stdlim( physics_variables.bt, - physics_variables.powerht, + physics_variables.p_plasma_loss_mw, physics_variables.rmajor, physics_variables.rminor, ) @@ -3551,7 +3549,7 @@ def power_at_ignition_point(self, gyro_frequency_max, te0_available): ) # The second call seems to be necessary for all values to "converge" (and is sufficient) powerht_out = max( - copy(physics_variables.powerht), 0.00001e0 + copy(physics_variables.p_plasma_loss_mw), 0.00001e0 ) # the radiation module sometimes returns negative heating power pscalingmw_out = copy(physics_variables.pscalingmw) @@ -4454,14 +4452,13 @@ def stphys(self, output): # N.B. stellarator_variables.iotabar replaces tokamak physics_variables.q95 in argument list ( - physics_variables.kappaa, - physics_variables.ptrepv, - physics_variables.ptripv, - physics_variables.tauee, - physics_variables.tauei, - physics_variables.taueff, - physics_variables.powerht, - ) = self.physics.pcond( + physics_variables.pden_electron_transport_loss_mw, + physics_variables.pden_ion_transport_loss_mw, + physics_variables.t_electron_energy_confinement, + physics_variables.t_ion_energy_confinement, + physics_variables.t_energy_confinement, + physics_variables.p_plasma_loss_mw, + ) = self.physics.calculate_confinement_time( physics_variables.m_fuel_amu, physics_variables.alpha_power_total, physics_variables.aspect, @@ -4471,8 +4468,7 @@ def stphys(self, output): physics_variables.dnla, physics_variables.eps, physics_variables.hfact, - physics_variables.iinvqd, - physics_variables.isc, + physics_variables.i_confinement_time, physics_variables.ignite, physics_variables.kappa, physics_variables.kappa95, @@ -4492,15 +4488,17 @@ def stphys(self, output): physics_variables.zeff, ) - physics_variables.ptremw = ( - physics_variables.ptrepv * physics_variables.vol_plasma + physics_variables.p_electron_transport_loss_mw = ( + physics_variables.pden_electron_transport_loss_mw + * physics_variables.vol_plasma ) - physics_variables.ptrimw = ( - physics_variables.ptripv * physics_variables.vol_plasma + physics_variables.p_ion_transport_loss_mw = ( + physics_variables.pden_ion_transport_loss_mw * physics_variables.vol_plasma ) physics_variables.pscalingmw = ( - physics_variables.ptremw + physics_variables.ptrimw + physics_variables.p_electron_transport_loss_mw + + physics_variables.p_ion_transport_loss_mw ) # Calculate auxiliary physics related information @@ -4509,12 +4507,12 @@ def stphys(self, output): sbar = 1.0e0 ( physics_variables.burnup, - physics_variables.dntau, + physics_variables.ntau, physics_variables.figmer, fusrat, physics_variables.qfuel, physics_variables.rndfuel, - physics_variables.taup, + physics_variables.t_alpha_confinement, ) = self.physics.phyaux( physics_variables.aspect, physics_variables.dene, @@ -4524,7 +4522,7 @@ def stphys(self, output): physics_variables.plasma_current, sbar, physics_variables.nd_alphas, - physics_variables.taueff, + physics_variables.t_energy_confinement, physics_variables.vol_plasma, ) diff --git a/process/utilities/errorlist.json b/process/utilities/errorlist.json index 273809dc7f..8c8d066782 100644 --- a/process/utilities/errorlist.json +++ b/process/utilities/errorlist.json @@ -413,7 +413,7 @@ { "no": 81, "level": 3, - "message": "PCOND: Illegal value for isc" + "message": "PCOND: Illegal value for i_confinement_time" }, { "no": 82, @@ -1108,7 +1108,7 @@ { "no": 220, "level": 1, - "message": "CHECK: tauee_in is for use with isc=48 only" + "message": "CHECK: tauee_in is for use with i_confinement_time=48 only" }, { "no": 221, diff --git a/source/fortran/constraint_equations.f90 b/source/fortran/constraint_equations.f90 index 94c3f87c5d..3ab65fdea9 100755 --- a/source/fortran/constraint_equations.f90 +++ b/source/fortran/constraint_equations.f90 @@ -227,7 +227,7 @@ subroutine constraint_eqns(m,ieqn,cc,con,err,symbol,units) case (60); call constraint_eqn_060(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units) ! Equation for availability limit case (61); call constraint_eqn_061(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units) - ! Lower limit on taup/taueff the ratio of alpha particle to energy confinement times + ! Lower limit on f_alpha_energy_confinement the ratio of alpha particle to energy confinement times case (62); call constraint_eqn_062(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units) ! Upper limit on niterpump (vacuum_model = simple) case (63); call constraint_eqn_063(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units) @@ -440,7 +440,7 @@ subroutine constraint_eqn_002(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units) !! \begin{equation} c_i = !! \end{equation} !! - !! iradloss : input integer : switch for radiation loss term usage in power balance (see User Guide):