Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
7b8ea3a
♻️ Refactor CurrentDrive initialization to include new classes for ea…
chris-ashe Apr 4, 2025
1ec13ce
:sparkle: Add lower_hybrid_fenstermacher function to calculate lower …
chris-ashe Apr 4, 2025
fc38b75
✨ Add ion_cyclotron_ipdg89 function for calculating ion cyclotron hea…
chris-ashe Apr 4, 2025
0a4bf7c
✨ Add electron_cyclotron_fenstermacher function for calculating elect…
chris-ashe Apr 4, 2025
6fcccc6
✨ Add lower_hybrid_ehst function for calculating Lower Hybrid current…
chris-ashe Apr 4, 2025
9ed7bc3
✨ Add electron_berstein_freethy function for calculating Electron Ber…
chris-ashe Apr 7, 2025
7d6f1f8
✨ Add electron_cyclotron_freethy function for calculating Electron Cy…
chris-ashe Apr 7, 2025
47d050d
✨ Refactor CurrentDrive class to streamline current drive efficiency …
chris-ashe Apr 7, 2025
7ad3df5
🔄 Make eta_cd_hcd_secondary a proper current_drive variable
chris-ashe Apr 7, 2025
c4602f5
➕ Add calculation for the normalised secondary efficiency
chris-ashe Apr 7, 2025
4af1403
✨ Create new current driven variables for the hcd systems
chris-ashe Apr 7, 2025
490479c
✨ Add calculations for secondary heating current drive efficiency and…
chris-ashe Apr 7, 2025
c03f9e3
🔄 Rename pinjwpfix to p_hcd_secondary_electric_mw for clarity and con…
chris-ashe Apr 7, 2025
20f52a6
🔄 Rename variable plhybd to p_hcd_lowhyb_injected_total_mw for clarit…
chris-ashe Apr 7, 2025
0da8a51
🔄 Rename variable pnbeam to p_hcd_beam_injected_total_mw for clarity …
chris-ashe Apr 7, 2025
32fa0fe
✨ Introduce p_hcd_primary_injected_mw variable and update calculation…
chris-ashe Apr 7, 2025
edd5b9c
✨ Add variables for ion cyclotron and electron Bernstein wave injecti…
chris-ashe Apr 7, 2025
1ebbc02
✨ Add injector wall plug efficiency variables for ion cyclotron and e…
chris-ashe Apr 7, 2025
c2a87b2
♻️ Refactor current drive calculations to introduce p_hcd_secondary_i…
chris-ashe Apr 7, 2025
f8af8d2
🔄 Rename pinjwp to p_hcd_electric_total_mw for clarity and update rel…
chris-ashe Apr 7, 2025
6b1eba7
✨ Introduce p_hcd_primary_electric_mw variable and update calculation…
chris-ashe Apr 7, 2025
22aca7e
♻️ Update current drive calculations to handle electron Bernstein wav…
chris-ashe Apr 7, 2025
85f4d21
♻️ Refactor primary heating power calculations in current drive modul…
chris-ashe Apr 7, 2025
17184ed
✨ Add p_beam_plasma_coupled_mw variable to track neutral beam power c…
chris-ashe Apr 7, 2025
636c91e
🔄 Rename echwpow to p_hcd_ecrh_electric_mw for clarity and update rel…
chris-ashe Apr 7, 2025
8eeb453
♻️ Update current drive calculations to include electron Bernstein wa…
chris-ashe Apr 7, 2025
6683b77
♻️ Rename pwplh to p_hcd_lowhyb_electric_mw for clarity and update re…
chris-ashe Apr 7, 2025
072742d
✨ Add p_ebw_injected_mw variable to track electron Bernstein wave pow…
chris-ashe Apr 8, 2025
426f7fd
:memo: Enhance current drive reporting by adding extra power metrics …
chris-ashe Apr 8, 2025
aa6d166
🔄 Rename fvsbrnni to f_c_plasma_non_inductive for clarity and update …
chris-ashe Apr 8, 2025
bef486e
🔄 Rename inductive_current_fraction to f_c_plasma_inductive for clari…
chris-ashe Apr 8, 2025
01d9240
🔄 Rename aux_current_fraction to f_c_plasma_auxiliary for clarity and…
chris-ashe Apr 8, 2025
7b35f0e
:memo: Fix nbi in output
chris-ashe Apr 8, 2025
287d0f3
Post rebase updates
chris-ashe Apr 11, 2025
b694092
🔄 Move legend function from CurrentDrive to ElectronCyclotron for bet…
chris-ashe Apr 11, 2025
5f0304e
🔄 Add initial data files and documentation for heating and current dr…
chris-ashe Apr 11, 2025
f80c0f6
🔄 Add p_hcd_injected_current_total_mw as a variable
chris-ashe Apr 11, 2025
f30b2cb
🔄 Refactor current drive method calls for clarity and consistency
chris-ashe Apr 11, 2025
cb34a38
🔄 Refactor current drive method calls for clarity and consistency
chris-ashe Apr 11, 2025
32811fd
Re make current drive unit tests to new style, create case for lower …
chris-ashe Apr 14, 2025
255258c
🔄 Refactor CurrentDrive initialization to instantiate cyclotron and b…
chris-ashe Apr 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Neutral Beam Injection Heating
# Neutral Beam Injection Heating | `NeutralBeam`

!!! Warning "NBI Models"
At present, the neutral beam models do not include the effect of an edge transport barrier (pedestal) in the plasma profile.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Electron Bernstein Wave Heating
# Electron Bernstein Wave Heating | `ElectronBernstein`

Crawford et al. initially demonstrated the experimental verification of Electron Bernstein Waves (EBWs) in 1964. Subsequent experiments focused on measuring the transmission and emission of EBWs in linear low-temperature plasma devices, with Crawford providing an overview of these foundational experiments. Among these, two notable examples stand out.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Electron Cyclotron Heating
# Electron Cyclotron Heating | `ElectronCyclotron`

Electron cyclotron resonance heating is the simplest of the radio frequency heating methods. In contrast to ion cyclotron and lower hybrid heating, there is no evanescent region between the antenna and the plasma,although cut-offs can exist within the plasma.
As a result, the antenna can be retracted into a less hostile environment than for the other schemes. Electron cyclotron heating has been made possible by the invention of the gyrotron millimetre wave source. This and related devices have only emerged since the mid-1970s. Gyrotron tubes capable of 0.5-1 MW out- put and with frequencies in the range 100-200 GHz are now under intense development. The frequency required for a reactor would be in the range 100-200 GHz which corresponds to vacuum wavelengths of 1-2 mm.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Ehst Lower Hybrid
# Ehst Lower Hybrid | `lower_hybrid_ehst()`


- `i_hcd_primary/i_hcd_secondary` = 4

$$
\text{Current drive efficiency [A/W]} = \frac{T_{\text{e}}^{0.77} (0.034 + 0.196\beta)}{R_0 n_{\text{e},20}}\frac{\frac{32}{5+Z_{\text{eff}}}+2+\frac{\frac{12\left(6+Z_{\text{eff}}\right)}{5+Z_{\text{eff}}}}{3+Z_{\text{eff}}}+\frac{3.76}{Z_{\text{eff}}}}{12.507}
$$
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Fenstermacher Electron Cyclotron Resonance
# Fenstermacher Electron Cyclotron Resonance | `electron_cyclotron_fenstermacher()`

- `i_hcd_primary/i_hcd_secondary` = 3 [^1]

- `i_hcd_primary/i_hcd_secondary` = 3
$$
\text{Current drive efficiency [A/W]} = \frac{0.21 T_{\langle e,n_{\text{e}} \rangle}}{R_0n_{\text{e,20}}(31.0-(\log{n_{\text{e}}}/2)+(\log{(T_\text{e}}\times1000))}
$$

[^1]: T.C. Hender et al., 'Physics Assessment of the European Reactor Study', AEA FUS 172, 1992.
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
# Fenstermacher Lower Hybrid
# Fenstermacher Lower Hybrid | `lower_hybrid_fenstermacher()`

- `i_hcd_primary/i_hcd_secondary` = 1:

This forumla was originally in the Oak RidgeSystems Code[^1], attributed to Fenstermacher and is used in the AEA FUS 172 report[^2].
Comment thread
chris-ashe marked this conversation as resolved.

$$
\text{Current drive efficiency [A/W]} = 0.36 \frac{(1+(T_{\text{e}}/25)^{1.16})}{R_{0} n_{\text{e},20}}
$$
$$

[^1]: R.L.Reid et al, Oak Ridge Report ORNL/FEDC-87-7, 1988

[^2]: T.C. Hender et al., 'Physics Assessment of the European Reactor Study', AEA FUS 172, 1992.
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
# Ion cyclotron model
# IPDG89 ion cyclotron model | `ion_cyclotron_ipdg89()`

- `i_hcd_primary/i_hcd_secondary` = 2
- `i_hcd_primary/i_hcd_secondary` = 2 [^1] [^2]

$$
\text{Current drive efficiency [A/W]} = \frac{\frac{0.063 T_{\langle \text{e}, n_{\text{e}}\rangle}}{2+Z_{\text{eff}}}}{R_0n_{\text{e,20}}}
$$

[^1]: N.A. Uckan and ITER Physics Group, 'ITER Physics Design Guidelines: 1989', https://inis.iaea.org/collection/NCLCollectionStore/_Public/21/068/21068960.pdf

[^2] T.C. Hender et al., 'Physics Assessment of the European Reactor Study', AEA FUS 172, 1992.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Ion Cyclotron Heating
# Ion Cyclotron Heating | `IonCyclotron`


Ion cyclotron heating (ICH) is a technique used in fusion tokamaks to heat ions in a plasma by applying radio frequency (RF) waves. The RF waves used in ICH are typically in the range of tens to hundreds of megahertz.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Lower Hybrid Current Drive
# Lower Hybrid Current Drive | `LowerHybrid`

Lower hybrid heating is generated through the propagation of a lower hybrid wave within a plasma, characterized by a frequency lying between the ion and electron cyclotron frequencies. This wave possesses an electric field component parallel to the magnetic field, enabling the acceleration of electrons traveling along the field lines.

Lower hybrid resonance heating employs electromagnetic power within the 1-8 GHz frequency range. At 3 GHz, the vacuum wavelength measures 0.1 meters, facilitating the transmission and launching of energy via waveguides operating in their fundamental mode. This feature stands out as a primary advantage of this method.
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Auxiliary Heating & Current Drive Systems
# Auxiliary Heating & Current Drive Systems | `CurrentDrive`

## Current Drive

The use of inductive current drive leads to pulsed plant operation because of the limited flux swing that can be achieved using the central solenoid. This poses problems due to the fact that fatigue failures may result, and there would be a need for thermal storage to maintain output of electricity between pulses, and supply power for starting a new pulse.However, the plasma current can also be produced and maintained (partially or wholly) using non-inductive means which, in principle, removes this restriction. `PROCESS` contains a number of auxiliary current drive schemes, including various RF methods (Lower Hybrid, Electron Cyclotron, Electron Bernstein Wave, and Ion Cyclotron (Fast Wave) current drives) and also Neutral Beam current drive systems. The code calculates the efficiency and the resulting power requirements of the chosen system.

The fraction of the required plasma current to be produced by non-inductive means, `fvsbrnni`, should be set, and flag `i_hcd_calculations` should be set to 0 for purely inductive scenarios, or 1 otherwise. The current drive efficiency model to be used in this latter case is defined by the value of switch `i_hcd_primary`:
The fraction of the required plasma current to be produced by non-inductive means, `f_c_plasma_non_inductive`, should be set, and flag `i_hcd_calculations` should be set to 0 for purely inductive scenarios, or 1 otherwise. The current drive efficiency model to be used in this latter case is defined by the value of switch `i_hcd_primary`:

- `i_hcd_primary` = 1: [Fenstermacher Lower Hybrid model](RF/fenstermacher_lower_hybrid.md)
- `i_hcd_primary` = 2: [Ion cyclotron model](RF/ic_model.md)[^1],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Currently in `PROCESS` the inductive current fraction from the CS is not calculated directly but is just equal to ($1 - \mathtt{fvsbrnni}$). Where $\mathtt{fvsbrnni}$ is the sum of the fractions of current driven by non inductive means.
Currently in `PROCESS` the inductive current fraction from the CS is not calculated directly but is just equal to ($1 - \mathtt{f_c_plasma_non_inductive}$). Where $\mathtt{f_c_plasma_non_inductive}$ is the sum of the fractions of current driven by non inductive means.

This calculated fraction (`inductive_current_fraction`) is then used in the `calculate_volt_second_requirements()` and `burn()` functions to calculate the volt-second requirements and the burn time for a pulsed machine.
This calculated fraction (`f_c_plasma_inductive`) is then used in the `calculate_volt_second_requirements()` and `burn()` functions to calculate the volt-second requirements and the burn time for a pulsed machine.

!!! info "Inductive plasma current fraction refactor"

Expand Down
24 changes: 12 additions & 12 deletions examples/data/csv_output_large_tokamak_MFILE.DAT
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,9 @@
bore____________________________________________________________________ (itvar035)____________________ 2.0588E+00
bore_(final_value/initial_value)________________________________________ (xcm035)______________________ 1.0294E+00
bore_(range_normalised)_________________________________________________ (nitvar035)___________________ 1.9786E-01
fvsbrnni________________________________________________________________ (itvar036)____________________ 4.1495E-01
fvsbrnni_(final_value/initial_value)____________________________________ (xcm036)______________________ 1.0374E+00
fvsbrnni_(range_normalised)_____________________________________________ (nitvar036)___________________ 4.1437E-01
f_c_plasma_non_inductive________________________________________________________________ (itvar036)____________________ 4.1495E-01
f_c_plasma_non_inductive_(final_value/initial_value)____________________________________ (xcm036)______________________ 1.0374E+00
f_c_plasma_non_inductive_(range_normalised)_____________________________________________ (nitvar036)___________________ 4.1437E-01
tdmptf__________________________________________________________________ (itvar037)____________________ 1.9607E+01
tdmptf_(final_value/initial_value)______________________________________ (xcm037)______________________ 7.8427E-01
tdmptf_(range_normalised)_______________________________________________ (nitvar037)___________________ 1.9526E-01
Expand Down Expand Up @@ -545,14 +545,14 @@
Bootstrap_fraction______________________________________________________ (bootipf)_____________________ 4.1436E-01
Diamagnetic_fraction____________________________________________________ (diaipf)______________________ 0.0000E+00
Pfirsch-Schlueter_fraction______________________________________________ (f_c_plasma_pfirsch_schluter)_______________________ 0.0000E+00
Auxiliary_current_drive_fraction________________________________________ (aux_current_fraction)_______________________ 5.9038E-04
Inductive_fraction______________________________________________________ (inductive_current_fraction)_______________________ 5.8505E-01
Total___________________________________________________________________ (plasipf+aux_current_fraction+inductive_current_fraction)_________ 1.0000E+00
Fraction_of_the_plasma_current_produced_by_non-inductive_means__________ (fvsbrnni)____________________ 4.1495E-01 ITV
Electron_cyclotron_injected_power_(MW)__________________________________ (p_ecrh_injected_mw)______________________ 7.5213E+01 OP
Auxiliary_current_drive_fraction________________________________________ (f_c_plasma_auxiliary)_______________________ 5.9038E-04
Inductive_fraction______________________________________________________ (f_c_plasma_inductive)_______________________ 5.8505E-01
Total___________________________________________________________________ (plasipf+f_c_plasma_auxiliary+f_c_plasma_inductive)_________ 1.0000E+00
Fraction_of_the_plasma_current_produced_by_non-inductive_means__________ (f_c_plasma_non_inductive)____________________ 4.1495E-01 ITV
Electron_cyclotron_injected_power_(MW)__________________________________ (p_hcd_ecrh_injected_total_mw)______________________ 7.5213E+01 OP
Maximum_allowable_ECRH_power_(MW)_______________________________________ (p_hcd_injected_max)_____________________ 2.0000E+02
ECH_wall_plug_efficiency________________________________________________ (eta_ecrh_injector_wall_plug)______________________ 5.0000E-01
ECH_wall_plug_power_(MW)________________________________________________ (echwpow)_____________________ 1.5043E+02 OP
ECH_wall_plug_power_(MW)________________________________________________ (p_hcd_ecrh_electric_mw)_____________________ 1.5043E+02 OP
Total_V-s_capability_of_Central_Solenoid/PF_coils_(Wb)__________________ (abs(vs_cs_pf_total_pulse))__________________ 5.8939E+02
Required_volt-seconds_during_start-up_(Wb)______________________________ (vssoft)______________________ 2.8401E+02
Available_volt-seconds_during_burn_(Wb)_________________________________ (vsmax)_______________________ 2.8571E+02
Expand Down Expand Up @@ -1158,7 +1158,7 @@
Total_(MW)______________________________________________________________ ______________________________ 2.1348E+03
Net_electric_power_output(MW)___________________________________________ (pnetelmw.)___________________ 4.0000E+02
Required_Net_electric_power_output(MW)__________________________________ (pnetelin)____________________ 4.0000E+02
Electric_power_for_heating_and_current_drive_(MW)_______________________ (pinjwp)______________________ 1.5043E+02
Electric_power_for_heating_and_current_drive_(MW)_______________________ (p_hcd_electric_total_mw)______________________ 1.5043E+02
Electric_power_for_primary_coolant_pumps_(MW)___________________________ (htpmw)_______________________ 1.8742E+02
Electric_power_for_vacuum_pumps_(MW)____________________________________ (vachtmw)_____________________ 5.0000E-01
Electric_power_for_tritium_plant_(MW)___________________________________ (trithtmw)____________________ 1.5000E+01
Expand Down Expand Up @@ -1432,9 +1432,9 @@ ixc = 29
boundl(29) = 0.1
dr_bore = 2.0

* fvsbrnni
* f_c_plasma_non_inductive
ixc = 44
fvsbrnni = 0.4
f_c_plasma_non_inductive = 0.4

* tdmptf [s]
ixc = 56
Expand Down
24 changes: 12 additions & 12 deletions examples/data/large_tokamak_1_MFILE.DAT
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,9 @@
bore____________________________________________________________________ (itvar035)____________________ 1.9854E+00
bore_(final_value/initial_value)________________________________________ (xcm035)______________________ 9.9271E-01
bore_(range_normalised)_________________________________________________ (nitvar035)___________________ 1.9045E-01
fvsbrnni________________________________________________________________ (itvar036)____________________ 4.3358E-01
fvsbrnni_(final_value/initial_value)____________________________________ (xcm036)______________________ 1.0839E+00
fvsbrnni_(range_normalised)_____________________________________________ (nitvar036)___________________ 4.3301E-01
f_c_plasma_non_inductive________________________________________________________________ (itvar036)____________________ 4.3358E-01
f_c_plasma_non_inductive_(final_value/initial_value)____________________________________ (xcm036)______________________ 1.0839E+00
f_c_plasma_non_inductive_(range_normalised)_____________________________________________ (nitvar036)___________________ 4.3301E-01
tdmptf__________________________________________________________________ (itvar037)____________________ 1.8429E+01
tdmptf_(final_value/initial_value)______________________________________ (xcm037)______________________ 7.3716E-01
tdmptf_(range_normalised)_______________________________________________ (nitvar037)___________________ 1.8347E-01
Expand Down Expand Up @@ -543,14 +543,14 @@
Bootstrap_fraction______________________________________________________ (bootipf)_____________________ 4.1920E-01
Diamagnetic_fraction____________________________________________________ (diaipf)______________________ 0.0000E+00
Pfirsch-Schlueter_fraction______________________________________________ (f_c_plasma_pfirsch_schluter)_______________________ 0.0000E+00
Auxiliary_current_drive_fraction________________________________________ (aux_current_fraction)_______________________ 1.4376E-02
Inductive_fraction______________________________________________________ (inductive_current_fraction)_______________________ 5.6642E-01
Total___________________________________________________________________ (plasipf+aux_current_fraction+inductive_current_fraction)_________ 1.0000E+00
Fraction_of_the_plasma_current_produced_by_non-inductive_means__________ (fvsbrnni)____________________ 4.3358E-01 ITV
Electron_cyclotron_injected_power_(MW)__________________________________ (p_ecrh_injected_mw)______________________ 8.0143E+01 OP
Auxiliary_current_drive_fraction________________________________________ (f_c_plasma_auxiliary)_______________________ 1.4376E-02
Inductive_fraction______________________________________________________ (f_c_plasma_inductive)_______________________ 5.6642E-01
Total___________________________________________________________________ (plasipf+f_c_plasma_auxiliary+f_c_plasma_inductive)_________ 1.0000E+00
Fraction_of_the_plasma_current_produced_by_non-inductive_means__________ (f_c_plasma_non_inductive)____________________ 4.3358E-01 ITV
Electron_cyclotron_injected_power_(MW)__________________________________ (p_hcd_ecrh_injected_total_mw)______________________ 8.0143E+01 OP
Maximum_allowable_ECRH_power_(MW)_______________________________________ (p_hcd_injected_max)_____________________ 2.0000E+02
ECH_wall_plug_efficiency________________________________________________ (eta_ecrh_injector_wall_plug)______________________ 5.0000E-01
ECH_wall_plug_power_(MW)________________________________________________ (echwpow)_____________________ 1.6029E+02 OP
ECH_wall_plug_power_(MW)________________________________________________ (p_hcd_ecrh_electric_mw)_____________________ 1.6029E+02 OP
Total_V-s_capability_of_Central_Solenoid/PF_coils_(Wb)__________________ (abs(vs_cs_pf_total_pulse))__________________ 5.7728E+02
Required_volt-seconds_during_start-up_(Wb)______________________________ (vssoft)______________________ 2.8601E+02
Available_volt-seconds_during_burn_(Wb)_________________________________ (vsmax)_______________________ 2.7014E+02
Expand Down Expand Up @@ -1153,7 +1153,7 @@
Total_(MW)______________________________________________________________ ______________________________ 2.1752E+03
Net_electric_power_output(MW)___________________________________________ (pnetelmw.)___________________ 4.0001E+02
Required_Net_electric_power_output(MW)__________________________________ (pnetelin)____________________ 4.0000E+02
Electric_power_for_heating_and_current_drive_(MW)_______________________ (pinjwp)______________________ 1.6029E+02
Electric_power_for_heating_and_current_drive_(MW)_______________________ (p_hcd_electric_total_mw)______________________ 1.6029E+02
Electric_power_for_primary_coolant_pumps_(MW)___________________________ (htpmw)_______________________ 1.9053E+02
Electric_power_for_vacuum_pumps_(MW)____________________________________ (vachtmw)_____________________ 5.0000E-01
Electric_power_for_tritium_plant_(MW)___________________________________ (trithtmw)____________________ 1.5000E+01
Expand Down Expand Up @@ -1426,9 +1426,9 @@ ixc = 29
boundl(29) = 0.1
dr_bore = 2.0

* fvsbrnni
* f_c_plasma_non_inductive
ixc = 44
fvsbrnni = 0.4
f_c_plasma_non_inductive = 0.4

* tdmptf [s]
ixc = 56
Expand Down
Loading
Loading