From 33b921515355cc68f6f156bb24d51ceacafb1a50 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Fri, 24 Nov 2023 13:34:44 +0000 Subject: [PATCH 01/32] Initial commit, added heating separation --- .../heating_and_current_drive/NBI/nbi_overview.md | 1 + .../eng-models/heating_and_current_drive/RF/rf_overview.md | 3 +++ .../heating-and-current-drive.md | 0 mkdocs.yml | 7 ++++++- 4 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md rename documentation/proc-pages/eng-models/{ => heating_and_current_drive}/heating-and-current-drive.md (100%) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md new file mode 100644 index 0000000000..597e30b12c --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -0,0 +1 @@ +# Neutral Beam Injection Heating \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md new file mode 100644 index 0000000000..ed72b24313 --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md @@ -0,0 +1,3 @@ +# Radio Frequency Heating + + diff --git a/documentation/proc-pages/eng-models/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md similarity index 100% rename from documentation/proc-pages/eng-models/heating-and-current-drive.md rename to documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md diff --git a/mkdocs.yml b/mkdocs.yml index 9ec196ad7e..3933d14b94 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -54,7 +54,12 @@ nav: - Shield: eng-models/shield.md - Divertor: eng-models/divertor.md - Heat transport: eng-models/power-conversion-and-heat-dissipation-systems.md - - Auxiliary Power Systems: eng-models/heating-and-current-drive.md + - Auxiliary Power Systems: + - Overview: eng-models/heating_and_current_drive/heating-and-current-drive.md + - RF: + - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md + - NBI: + - Overview: eng-models/heating_and_current_drive/NBI/nbi_overview.md - Cryostat and vacuum system: eng-models/cryostat-and-vacuum-system.md - Plant Availability: eng-models/plant.md - Power Requirements: eng-models/power-requirements.md From a03b29586e5e6fc2ea47328c07a4cea3a623fe3f Mon Sep 17 00:00:00 2001 From: mn3981 Date: Fri, 24 Nov 2023 15:38:59 +0000 Subject: [PATCH 02/32] lower hybrid fenstermacher first addition --- .../RF/fenstermacher_lower_hybrid.md | 6 ++++++ .../heating_and_current_drive/RF/rf_overview.md | 2 ++ mkdocs.yml | 15 ++++++++++++--- 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md new file mode 100644 index 0000000000..4009c6ca45 --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md @@ -0,0 +1,6 @@ +# Fenstermacher Lower Hybrid + +- `iefrf` = 1: Fenstermacher Lower Hybrid model +$$ +\text{Current drive efficiency [A/W]} = 0.36 \frac{(1+(T_{e}/25)^{1.16})}{R_{0} n_{e,20}} +$$ \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md index ed72b24313..3e51bb5b14 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md @@ -1,3 +1,5 @@ # Radio Frequency Heating +## Lower Hybrid Current Drive +Lower hybrid heating is that produced by a lower hybrid wave; a plasma wave of frequency between the ion and electron cyclotron frequencies. It has a component of electric field parallel to the magnetic field, so it can accelerate electrons moving along the field lines. diff --git a/mkdocs.yml b/mkdocs.yml index 3933d14b94..82a271abc5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -54,11 +54,20 @@ nav: - Shield: eng-models/shield.md - Divertor: eng-models/divertor.md - Heat transport: eng-models/power-conversion-and-heat-dissipation-systems.md - - Auxiliary Power Systems: + - Auxiliary Heating & Current Drive Systems: - Overview: eng-models/heating_and_current_drive/heating-and-current-drive.md - - RF: + - Radio Frequency: - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md - - NBI: + - Lower Hybrid: + - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md + - Fenstermacher Model: eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md + - Electron Cyclotron: + - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md + - Ion Cyclotron: + - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md + - Electron Bernstein Wave: + - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md + - Neutral Beam Injection: - Overview: eng-models/heating_and_current_drive/NBI/nbi_overview.md - Cryostat and vacuum system: eng-models/cryostat-and-vacuum-system.md - Plant Availability: eng-models/plant.md From 8583ee612a457999f263bb4f5b249800eb0a4944 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Fri, 24 Nov 2023 16:00:45 +0000 Subject: [PATCH 03/32] All LHCD pages added --- .../RF/culham_lower_hybrid.md | 76 +++++++++++++++++++ .../RF/ehst_lower_hybrid.md | 17 +++++ mkdocs.yml | 2 + 3 files changed, 95 insertions(+) create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md new file mode 100644 index 0000000000..8fefcea512 --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md @@ -0,0 +1,76 @@ +# Culham Lower Hybrid + +- `iefrf` = 6: Culham Lower Hybrid model[^2] + + + + +def cullhy(self): + """Routine to calculate Lower Hybrid current drive efficiency + author: P J Knight, CCFE, Culham Science Centre + effrfss : output real : lower hybrid current drive efficiency (A/W) + This routine calculates the current drive parameters for a + lower hybrid system, based on the AEA FUS 172 model. + AEA FUS 251: A User's Guide to the PROCESS Systems Code + AEA FUS 172: Physics Assessment for the European Reactor Study + """ + rratio = self.lhrad() + rpenet = rratio * physics_variables.rminor + + # Local density, temperature, toroidal field at this minor radius + + dlocal = 1.0e-19 * profiles_module.nprofile( + rratio, + physics_variables.rhopedn, + physics_variables.ne0, + physics_variables.neped, + physics_variables.nesep, + physics_variables.alphan, + ) + tlocal = profiles_module.tprofile( + rratio, + physics_variables.rhopedt, + physics_variables.te0, + physics_variables.teped, + physics_variables.tesep, + physics_variables.alphat, + physics_variables.tbeta, + ) + blocal = ( + physics_variables.bt + * physics_variables.rmajor + / (physics_variables.rmajor - rpenet) + ) # Calculated on inboard side + + # Parallel refractive index needed for plasma access + + frac = np.sqrt(dlocal) / blocal + nplacc = frac + np.sqrt(1.0e0 + frac * frac) + + # Local inverse aspect ratio + + epslh = rpenet / physics_variables.rmajor + + # LH normalised efficiency (A/W m**-2) + + x = 24.0e0 / (nplacc * np.sqrt(tlocal)) + + term01 = 6.1e0 / (nplacc * nplacc * (physics_variables.zeff + 5.0e0)) + term02 = 1.0e0 + (tlocal / 25.0e0) ** 1.16e0 + term03 = epslh**0.77e0 * np.sqrt(12.25e0 + x * x) + term04 = 3.5e0 * epslh**0.77e0 + x + + if term03 > term04: + eh.fdiags[0] = term03 + eh.fdiags[1] = term04 + eh.report_error(129) + + gamlh = term01 * term02 * (1.0e0 - term03 / term04) + + # Current drive efficiency (A/W) + + return gamlh / ((0.1e0 * dlocal) * physics_variables.rmajor) + + + +[^2]: T. C. Hender, M. K. Bevir, M. Cox, R. J. Hastie, P. J. Knight, C. N. Lashmore-Davies, B. Lloyd, G. P. Maddison, A. W. Morris, M. R. O'Brien, M.F. Turner abd H. R. Wilson, *"Physics Assessment for the European Reactor Study"*, AEA Fusion Report AEA FUS 172 (1992) \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md new file mode 100644 index 0000000000..a0a9c0decc --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md @@ -0,0 +1,17 @@ +# Ehst Lower Hybrid +- `iefrf` = 4: Ehst Lower Hybrid model +$$ +\frac{T_e^{0.77} (0.034 + 0.196\beta)}{R_0 n_{e,20}} +$$ + + % * ( + % 32.0e0 / (5.0e0 + physics_variables.zeff) + % + 2.0e0 + % + (12.0e0 * (6.0e0 + physics_variables.zeff)) + % / (5.0e0 + physics_variables.zeff) + % / (3.0e0 + physics_variables.zeff) + % + 3.76e0 / physics_variables.zeff + % ) + % / 12.507e0 + + % ) diff --git a/mkdocs.yml b/mkdocs.yml index 82a271abc5..4bf3ba41eb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -61,6 +61,8 @@ nav: - Lower Hybrid: - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md - Fenstermacher Model: eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md + - Ehst Model: eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md + - Culham Model: eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md - Electron Cyclotron: - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md - Ion Cyclotron: From a85bfd54c2a1d3a0b77f1f7678dbd6291de30ac4 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Fri, 24 Nov 2023 16:28:22 +0000 Subject: [PATCH 04/32] quick fix main page --- .../RF/culham_lower_hybrid.md | 15 ++++----------- .../heating-and-current-drive.md | 5 +++++ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md index 8fefcea512..a42a73e4c6 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md @@ -2,18 +2,11 @@ - `iefrf` = 6: Culham Lower Hybrid model[^2] +This routine calculates the current drive parameters for a +lower hybrid system, based on the AEA FUS 172 model. +AEA FUS 251: A User's Guide to the PROCESS Systems Code +AEA FUS 172: Physics Assessment for the European Reactor Study - - -def cullhy(self): - """Routine to calculate Lower Hybrid current drive efficiency - author: P J Knight, CCFE, Culham Science Centre - effrfss : output real : lower hybrid current drive efficiency (A/W) - This routine calculates the current drive parameters for a - lower hybrid system, based on the AEA FUS 172 model. - AEA FUS 251: A User's Guide to the PROCESS Systems Code - AEA FUS 172: Physics Assessment for the European Reactor Study - """ rratio = self.lhrad() rpenet = rratio * physics_variables.rminor diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md index 26effb3a43..2c8d287eb3 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md @@ -2,6 +2,11 @@ ## Current Drive +AUXILIARY POWER LOWER LIMIT FOR CONSTRAINT 40 WITH `auxmin` +injected upper limit with icc=30 and `pinjalw` +secondary fixed heating with `pheatfix` and `pinjfixmw` + + 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 `irfcd` 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 `iefrf`: From 410c9cba92640227450cf9d304b8f6b8adcb4706 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 16:25:10 +0000 Subject: [PATCH 05/32] added overview pages from RF heating types --- .../RF/ebw_overview.md | 1 + .../RF/ec_overview.md | 13 +++++++++++++ .../RF/ic_overview.md | 1 + .../RF/lhcd_overview.md | 7 +++++++ .../RF/rf_overview.md | 19 +++++++++++++++++++ mkdocs.yml | 8 ++++---- 6 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_overview.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_overview.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/lhcd_overview.md diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_overview.md new file mode 100644 index 0000000000..65bbc2d0f3 --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_overview.md @@ -0,0 +1 @@ +# Electron Bernstein Wave Heating \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md new file mode 100644 index 0000000000..d9a0f34db3 --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md @@ -0,0 +1,13 @@ +# Electron Cyclotron Heating + +Electron cyclotron resonance heating is the simplest of the radio frequency heating methods. In contrast to ion cyclotron and lower hybrid heating, there is no evanescent region between the antenna and the plasma,although cut-offs can exist within the plasma. +As a result, the antenna can be retracted into a less hostile environment than for the other schemes. Electron cyclotron heating has been made possible by the invention of the gyrotron millimetre wave source. This and related devices have only emerged since the mid-1970s. Gyrotron tubes capable of 0.5-1 MW out- put and with frequencies in the range 100-200 GHz are now under intense development. The frequency required for a reactor would be in the range 100-200 GHz which corresponds to vacuum wavelengths of 1-2 mm. +Since $\omega_{ce}\le \omega_{pe}$ only the electrons respond to electron cyclotron waves and only the electrons are heated directly. However, under reactor- like conditions the ions will be heated collisionally by the electrons. As the density is increased, a limit is encountered above which electron cyclotron waves cannot penetrate to the central regions of a tokamak. Propagation is again described below + +$$ +n_{\perp}^2 = 1 - \frac{\omega_{pe}^2}{\omega^2} \ \ (\text{O-mode}) +$$ + +$$ +n_{\perp}^2=\frac{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}}{\omega})(1-\frac{\omega_{pe}^2}{\omega^2}+\frac{\omega_{ce}}{\omega})}{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}^2}{\omega^2})} \ \ \text{(X-mode)} +$$ \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_overview.md new file mode 100644 index 0000000000..68e136f32b --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_overview.md @@ -0,0 +1 @@ +# Ion Cyclotron Heating \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/lhcd_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/lhcd_overview.md new file mode 100644 index 0000000000..ad7cb10bf9 --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/lhcd_overview.md @@ -0,0 +1,7 @@ +# Lower Hybrid Current Drive +Lower hybrid heating is that produced by a lower hybrid wave; a plasma wave of frequency between the ion and electron cyclotron frequencies. It has a component of electric field parallel to the magnetic field, so it can accelerate electrons moving along the field lines. + +Lower hybrid resonance heating utilizes electromagnetic power in the frequency range 1-8 GHz. At 3 GHz the vacuum wavelength is 0 1 m thus allowing the energy to be transmitted and launched by means of wave guides operating in their fundamental mode. This is one of the principle advantages of this scheme + +The lower hybrid range of frequencies satisfies wa«« wce Propagation in this frequency range is again well described by eqn 5 6 1 where the dielectric tensor elements are approximately +The use of lower hybrid waves was originally proposed with the object of heating the ions. For this purpose it is essential to choose conditions such that the lower hybrid resonance occurs in the plasma The condition for this is, from eqn 5 7 2, \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md index 3e51bb5b14..deeba66276 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md @@ -3,3 +3,22 @@ ## Lower Hybrid Current Drive Lower hybrid heating is that produced by a lower hybrid wave; a plasma wave of frequency between the ion and electron cyclotron frequencies. It has a component of electric field parallel to the magnetic field, so it can accelerate electrons moving along the field lines. + +Lower hybrid resonance heating utilizes electromagnetic power in the frequency range 1-8 GHz. At 3 GHz the vacuum wavelength is 0 1 m thus allowing the energy to be transmitted and launched by means of wave guides operating in their fundamental mode. This is one of the principle advantages of this scheme + +The lower hybrid range of frequencies satisfies wa«« wce Propagation in this frequency range is again well described by eqn 5 6 1 where the dielectric tensor elements are approximately +The use of lower hybrid waves was originally proposed with the object of heating the ions. For this purpose it is essential to choose conditions such that the lower hybrid resonance occurs in the plasma The condition for this is, from eqn 5 7 2, + +## Electron Cyclotron Heating + +Electron cyclotron resonance heating is the simplest of the radio frequency heating methods. In contrast to ion cyclotron and lower hybrid heating, there is no evanescent region between the antenna and the plasma,although cut-offs can exist within the plasma. +As a result, the antenna can be retracted into a less hostile environment than for the other schemes. Electron cyclotron heating has been made possible by the invention of the gyrotron millimetre wave source. This and related devices have only emerged since the mid-1970s. Gyrotron tubes capable of 0.5-1 MW out- put and with frequencies in the range 100-200 GHz are now under intense development. The frequency required for a reactor would be in the range 100-200 GHz which corresponds to vacuum wavelengths of 1-2 mm. +Since $\omega_{ce}\le \omega_{pe}$ only the electrons respond to electron cyclotron waves and only the electrons are heated directly. However, under reactor- like conditions the ions will be heated collisionally by the electrons. As the density is increased, a limit is encountered above which electron cyclotron waves cannot penetrate to the central regions of a tokamak. Propagation is again described below + +$$ +n_{\perp}^2 = 1 - \frac{\omega_{pe}^2}{\omega^2} \ \ (\text{O-mode}) +$$ + +$$ +n_{\perp}^2=\frac{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}}{\omega})(1-\frac{\omega_{pe}^2}{\omega^2}+\frac{\omega_{ce}}{\omega})}{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}^2}{\omega^2})} \ \ \text{(X-mode)} +$$ \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 4bf3ba41eb..6531c39232 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -59,16 +59,16 @@ nav: - Radio Frequency: - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md - Lower Hybrid: - - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md + - Overview: eng-models/heating_and_current_drive/RF/lhcd_overview.md - Fenstermacher Model: eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md - Ehst Model: eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md - Culham Model: eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md - Electron Cyclotron: - - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md + - Overview: eng-models/heating_and_current_drive/RF/ec_overview.md - Ion Cyclotron: - - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md + - Overview: eng-models/heating_and_current_drive/RF/ic_overview.md - Electron Bernstein Wave: - - Overview: eng-models/heating_and_current_drive/RF/rf_overview.md + - Overview: eng-models/heating_and_current_drive/RF/ebw_overview.md - Neutral Beam Injection: - Overview: eng-models/heating_and_current_drive/NBI/nbi_overview.md - Cryostat and vacuum system: eng-models/cryostat-and-vacuum-system.md From 6620dd9492b7dc64ac9c65384556d75b77762fa0 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 17:22:47 +0000 Subject: [PATCH 06/32] Main H&CD page updated for fixed heating --- .../heating-and-current-drive.md | 53 ++++++------------- 1 file changed, 17 insertions(+), 36 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md index 2c8d287eb3..f3806eb42b 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md @@ -1,22 +1,17 @@ -# Auxiliary Power Systems +# Auxiliary Heating & Current Drive Systems ## Current Drive -AUXILIARY POWER LOWER LIMIT FOR CONSTRAINT 40 WITH `auxmin` -injected upper limit with icc=30 and `pinjalw` -secondary fixed heating with `pheatfix` and `pinjfixmw` - - 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 `irfcd` 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 `iefrf`: -- `iefrf` = 1: Fenstermacher Lower Hybrid model +- `iefrf` = 1: [Fenstermacher Lower Hybrid model](RF/fenstermacher_lower_hybrid.md) - `iefrf` = 2: Ion cyclotron model[^1], - `iefrf` = 3: Fernstermacher electron cyclotron resonance model -- `iefrf` = 4: Ehst Lower Hybrid model +- `iefrf` = 4: [Ehst Lower Hybrid model](RF/ehst_lower_hybrid.md) - `iefrf` = 5: ITER neutral beam model[^1],[^2], -- `iefrf` = 6: Culham Lower Hybrid model[^2], +- `iefrf` = 6: [Culham Lower Hybrid model](RF/culham_lower_hybrid.md)[^2], - `iefrf` = 7: Culham electron cyclotron model[^2], - `iefrf` = 8: Culham neutral beam model[^2], - `iefrf` = 9: Oscillating Field current drive (RFPs only - OBSOLETE-REMOVED), @@ -24,41 +19,27 @@ The fraction of the required plasma current to be produced by non-inductive mean - `iefrf` = 11: ECRH "HARE" model [^3], - `iefrf` = 12: EBW user scaling input. Scaling (S. Freethy) +!!! Warning "Warning" + At present, the neutral beam models do not include the effect of an edge transport barrier (pedestal) in the plasma profile. -(Note that, at present, the neutral beam models do not include the effect of an edge transport barrier (pedestal) in the plasma profile.) - -It is sometimes useful to adjust artificially the current drive efficiency values produced by these routines. This can be achieved by setting teh scaling coefficients `feffcd`. The wall plug to plasma efficiencies can also be adjusted, by changing the relevant variable (`etaech`, `etalh`, `etanbi` or `etaof`). - -## Plasma heating - -In addition to current drive, some auxiliary power can be used to heat the plasma. The value of input parameters `pheat` determines the amount of auxiliary *heating* power (in Watts) to be applied to the plasma. This variable may be used as an iteration variable (no. 11). - -## Neutral beam access +It is sometimes useful to adjust artificially the current drive efficiency values produced by these routines. This can be achieved by setting the scaling coefficients `feffcd`. The wall plug to plasma efficiencies can also be adjusted, by changing the relevant variable (`etaech`, `etalh`, `etanbi` or `etaof`). -If present, a neutral beam injection system needs sufficient space between the TF coils to be able to intercept the plasma tangentially. The major radius `rtanbeam` at which the centre-line of the beam is tangential to the toroidal direction is user-defined using input parameter `frbeam`, which is the ratio of `rtanbeam` to the plasma major radius `rmajor`. The maximum possible tangency radius `rtanmax` is determined by the geometry of the TF coils - see Figure 1, and this can be enforced using constraint equation no. 20 with iteration variable no. 33 (`fportsz`). The thickness of the beam duct walls may be set using input parameter `nbshield`. +### Power limits +The maximum amount of desired heating and current drive power can be set with `pinjalw`. This limit can be enforced by activating constraint equation 30 (`icc=30`). +Similarly the lower bound on required heating and current drive power can be set with `auxmin`. This limit can be enforced by activating constraint equation 40 (`icc=40`). -
-
- NBI port -

-
Figure 1: Top-down schematic of the neutral beam access geometry. The beam with the maximum possible tangency radius is shown here. -
-
-
-
+### Secondary current drive -## Neutral beam losses +It is possible to have more than one type of heating and current drive system in `PROCESS`. This can be enabled by setting the `iefrffix` switch to the desired current drive scheme, following the same numbered selection for `iefrf`. +The power injected by the secondary current drive scheme has to be set to a fixed value. This value can be set with the `pinjfixmw` variable. -Input parameter `forbitloss` can be used to specify the fraction of the net injected neutral beam power that is lost between the beam particles' ionisation and thermalisation (known as the first orbit loss). This quantity cannot easily be calculated as it depends on the field ripple and other three-dimensional effects. The power lost is assumed to be absorbed by the first wall. +## Plasma heating only -The power in the beam atoms that are not ionised as they pass through the plasma (shine-through) is calculated by the code. There are two constraint equations that can be used to control the beam penetration and deposition, as follows: +In addition to current drive, some auxiliary power can be used to only heat the plasma. The value of input parameters `pheat` determines the amount of auxiliary heating power (in MW) to be applied to the plasma. This variable may be used as an iteration variable (`ixc = 11`). -- It is necessary to use a beam energy that simultaneously gives adequate penetration of the beam to the centre of the plasma and tolerable shine-through of the beam on the wall after the beam has traversed the plasma. The number of exponential decay lengths, $\tau$, for the beam power to fall before it reaches the plasma centre should be in the region of ~ 4-6[^2],. Constraint equation no. 14 may be used to force $\tau$ to be equal to the value given by input parameter `tbeamin`, and is therefore in effect a beam energy consistency equation. -- Alternatively, constraint equation no. 59 with iteration variable no. 105 (`fnbshineef`) may be used to ensure that the beam power fraction emerging from the plasma is no more than the value given by input parameter `nbshinefmax`. +### Secondary heating -It is recommended that only one of these two constraint equations is used during a run. +Like for a current drive and heating system a fixed amount of heating power that does not drive current can be set with the `pheatfix` variable. ## Ignited plasma From a913cf348cebb182cbd2d89aec3e8e13079b6189 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 17:23:16 +0000 Subject: [PATCH 07/32] RF and NBI pages separated --- .../NBI/nbi_overview.md | 32 ++++++++++++++++++- .../RF/rf_overview.md | 19 ----------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md index 597e30b12c..829ec4fa07 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -1 +1,31 @@ -# Neutral Beam Injection Heating \ No newline at end of file +# Neutral Beam Injection Heating + +!!! Warning "Warning" + At present, the neutral beam models do not include the effect of an edge transport barrier (pedestal) in the plasma profile. + +## Neutral beam access + +If present, a neutral beam injection system needs sufficient space between the TF coils to be able to intercept the plasma tangentially. The major radius `rtanbeam` at which the centre-line of the beam is tangential to the toroidal direction is user-defined using input parameter `frbeam`, which is the ratio of `rtanbeam` to the plasma major radius `rmajor`. The maximum possible tangency radius `rtanmax` is determined by the geometry of the TF coils - see Figure 1, and this can be enforced using constraint equation no. 20 with iteration variable no. 33 (`fportsz`). The thickness of the beam duct walls may be set using input parameter `nbshield`. + +
+
+ NBI port +

+
Figure 1: Top-down schematic of the neutral beam access geometry. The beam with the maximum possible tangency radius is shown here. +
+
+
+
+ +## Neutral beam losses + +Input parameter `forbitloss` can be used to specify the fraction of the net injected neutral beam power that is lost between the beam particles' ionisation and thermalisation (known as the first orbit loss). This quantity cannot easily be calculated as it depends on the field ripple and other three-dimensional effects. The power lost is assumed to be absorbed by the first wall. + +The power in the beam atoms that are not ionised as they pass through the plasma (shine-through) is calculated by the code. There are two constraint equations that can be used to control the beam penetration and deposition, as follows: + +- It is necessary to use a beam energy that simultaneously gives adequate penetration of the beam to the centre of the plasma and tolerable shine-through of the beam on the wall after the beam has traversed the plasma. The number of exponential decay lengths, $\tau$, for the beam power to fall before it reaches the plasma centre should be in the region of ~ 4-6[^2],. Constraint equation no. 14 may be used to force $\tau$ to be equal to the value given by input parameter `tbeamin`, and is therefore in effect a beam energy consistency equation. +- Alternatively, constraint equation no. 59 with iteration variable no. 105 (`fnbshineef`) may be used to ensure that the beam power fraction emerging from the plasma is no more than the value given by input parameter `nbshinefmax`. + +It is recommended that only one of these two constraint equations is used during a run. \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md index deeba66276..267d07174f 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md @@ -1,24 +1,5 @@ # Radio Frequency Heating -## Lower Hybrid Current Drive -Lower hybrid heating is that produced by a lower hybrid wave; a plasma wave of frequency between the ion and electron cyclotron frequencies. It has a component of electric field parallel to the magnetic field, so it can accelerate electrons moving along the field lines. -Lower hybrid resonance heating utilizes electromagnetic power in the frequency range 1-8 GHz. At 3 GHz the vacuum wavelength is 0 1 m thus allowing the energy to be transmitted and launched by means of wave guides operating in their fundamental mode. This is one of the principle advantages of this scheme -The lower hybrid range of frequencies satisfies wa«« wce Propagation in this frequency range is again well described by eqn 5 6 1 where the dielectric tensor elements are approximately -The use of lower hybrid waves was originally proposed with the object of heating the ions. For this purpose it is essential to choose conditions such that the lower hybrid resonance occurs in the plasma The condition for this is, from eqn 5 7 2, - -## Electron Cyclotron Heating - -Electron cyclotron resonance heating is the simplest of the radio frequency heating methods. In contrast to ion cyclotron and lower hybrid heating, there is no evanescent region between the antenna and the plasma,although cut-offs can exist within the plasma. -As a result, the antenna can be retracted into a less hostile environment than for the other schemes. Electron cyclotron heating has been made possible by the invention of the gyrotron millimetre wave source. This and related devices have only emerged since the mid-1970s. Gyrotron tubes capable of 0.5-1 MW out- put and with frequencies in the range 100-200 GHz are now under intense development. The frequency required for a reactor would be in the range 100-200 GHz which corresponds to vacuum wavelengths of 1-2 mm. -Since $\omega_{ce}\le \omega_{pe}$ only the electrons respond to electron cyclotron waves and only the electrons are heated directly. However, under reactor- like conditions the ions will be heated collisionally by the electrons. As the density is increased, a limit is encountered above which electron cyclotron waves cannot penetrate to the central regions of a tokamak. Propagation is again described below - -$$ -n_{\perp}^2 = 1 - \frac{\omega_{pe}^2}{\omega^2} \ \ (\text{O-mode}) -$$ - -$$ -n_{\perp}^2=\frac{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}}{\omega})(1-\frac{\omega_{pe}^2}{\omega^2}+\frac{\omega_{ce}}{\omega})}{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}^2}{\omega^2})} \ \ \text{(X-mode)} -$$ \ No newline at end of file From 5379ad9edacedb84fbc3c633fa52fbe24b6c9e7b Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 17:38:44 +0000 Subject: [PATCH 08/32] created separate H&CD images folder --- .../heating_and_current_drive/NBI/nbi_overview.md | 2 +- .../heating_and_current_drive}/images/portsize.png | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename documentation/proc-pages/{ => eng-models/heating_and_current_drive}/images/portsize.png (100%) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md index 829ec4fa07..a46edb0947 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -9,7 +9,7 @@ If present, a neutral beam injection system needs sufficient space between the T
- NBI port

diff --git a/documentation/proc-pages/images/portsize.png b/documentation/proc-pages/eng-models/heating_and_current_drive/images/portsize.png similarity index 100% rename from documentation/proc-pages/images/portsize.png rename to documentation/proc-pages/eng-models/heating_and_current_drive/images/portsize.png From e7c93e35f341d909931e645db4967b4acbfcbc9a Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 18:29:02 +0000 Subject: [PATCH 09/32] All RF pages added --- .../RF/culham_electron_cyclotron.md | 1 + .../heating_and_current_drive/RF/echr_gamma.md | 1 + .../heating_and_current_drive/RF/ecrh_hare.md | 1 + .../RF/fenstermacher_electron_cyclotron_resonance.md | 1 + .../heating_and_current_drive/RF/ic_model.md | 1 + .../heating-and-current-drive.md | 10 +++++----- mkdocs.yml | 3 +++ 7 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/echr_gamma.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md new file mode 100644 index 0000000000..2f7e8fd2ad --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md @@ -0,0 +1 @@ +# Culham Electron Cyclotron Model \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/echr_gamma.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/echr_gamma.md new file mode 100644 index 0000000000..2c3c736d4d --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/echr_gamma.md @@ -0,0 +1 @@ +# ECRH Uer Input Gamma Model \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md new file mode 100644 index 0000000000..d873f9660a --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md @@ -0,0 +1 @@ +# ERH HARE Model \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md new file mode 100644 index 0000000000..fbbcf34c7e --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md @@ -0,0 +1 @@ +# Fenstermacher Electron Cyclotron Resonance \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md new file mode 100644 index 0000000000..68c1722f03 --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md @@ -0,0 +1 @@ +# Ion cyclotron model \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md index f3806eb42b..f2f8ed0448 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md @@ -7,16 +7,16 @@ The use of inductive current drive leads to pulsed plant operation because of th The fraction of the required plasma current to be produced by non-inductive means, `fvsbrnni`, should be set, and flag `irfcd` 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 `iefrf`: - `iefrf` = 1: [Fenstermacher Lower Hybrid model](RF/fenstermacher_lower_hybrid.md) -- `iefrf` = 2: Ion cyclotron model[^1], -- `iefrf` = 3: Fernstermacher electron cyclotron resonance model +- `iefrf` = 2: [Ion cyclotron model](RF/ic_model.md)[^1], +- `iefrf` = 3: [Fenstermacher electron cyclotron resonance model](RF/fenstermacher_electron_cyclotron_resonance.md) - `iefrf` = 4: [Ehst Lower Hybrid model](RF/ehst_lower_hybrid.md) - `iefrf` = 5: ITER neutral beam model[^1],[^2], - `iefrf` = 6: [Culham Lower Hybrid model](RF/culham_lower_hybrid.md)[^2], -- `iefrf` = 7: Culham electron cyclotron model[^2], +- `iefrf` = 7: [Culham electron cyclotron model](RF/culham_electron_cyclotron.md)[^2], - `iefrf` = 8: Culham neutral beam model[^2], - `iefrf` = 9: Oscillating Field current drive (RFPs only - OBSOLETE-REMOVED), -- `iefrf` = 10: ECRH user input gamma, -- `iefrf` = 11: ECRH "HARE" model [^3], +- `iefrf` = 10: [ECRH user input gamma](RF/echr_gamma.md), +- `iefrf` = 11: [ECRH "HARE" model](RF/ecrh_hare.md) [^3], - `iefrf` = 12: EBW user scaling input. Scaling (S. Freethy) !!! Warning "Warning" diff --git a/mkdocs.yml b/mkdocs.yml index 6531c39232..8d9c8278aa 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -65,8 +65,11 @@ nav: - Culham Model: eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md - Electron Cyclotron: - Overview: eng-models/heating_and_current_drive/RF/ec_overview.md + - Fenstermacher Resonnance Model: eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md + - Culham Model: eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md - Ion Cyclotron: - Overview: eng-models/heating_and_current_drive/RF/ic_overview.md + - Ion cyclotron model: eng-models/heating_and_current_drive/RF/ic_model.md - Electron Bernstein Wave: - Overview: eng-models/heating_and_current_drive/RF/ebw_overview.md - Neutral Beam Injection: From 4e42e552c249bea76a33755b380024bd197bd25c Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 18:37:29 +0000 Subject: [PATCH 10/32] all model pages added --- .../eng-models/heating_and_current_drive/NBI/culham_nb.md | 1 + .../eng-models/heating_and_current_drive/NBI/iter_nb.md | 1 + .../eng-models/heating_and_current_drive/RF/ebw_freethy.md | 1 + .../eng-models/heating_and_current_drive/RF/ecrh_hare.md | 2 +- .../heating_and_current_drive/heating-and-current-drive.md | 6 +++--- mkdocs.yml | 3 +++ 6 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_freethy.md diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md new file mode 100644 index 0000000000..783b6344d2 --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md @@ -0,0 +1 @@ +# Culham Neutral Beam Model \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md new file mode 100644 index 0000000000..e21ac4face --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md @@ -0,0 +1 @@ +# ITER Neutral Beam Model \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_freethy.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_freethy.md new file mode 100644 index 0000000000..9121c1b8ec --- /dev/null +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_freethy.md @@ -0,0 +1 @@ +# Electron Bernstein Wave Model \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md index d873f9660a..7ccd60e2be 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md @@ -1 +1 @@ -# ERH HARE Model \ No newline at end of file +# ECRH HARE Model \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md index f2f8ed0448..f042240310 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md @@ -10,14 +10,14 @@ The fraction of the required plasma current to be produced by non-inductive mean - `iefrf` = 2: [Ion cyclotron model](RF/ic_model.md)[^1], - `iefrf` = 3: [Fenstermacher electron cyclotron resonance model](RF/fenstermacher_electron_cyclotron_resonance.md) - `iefrf` = 4: [Ehst Lower Hybrid model](RF/ehst_lower_hybrid.md) -- `iefrf` = 5: ITER neutral beam model[^1],[^2], +- `iefrf` = 5: [ITER neutral beam model](NBI/iter_nb.md)[^1],[^2], - `iefrf` = 6: [Culham Lower Hybrid model](RF/culham_lower_hybrid.md)[^2], - `iefrf` = 7: [Culham electron cyclotron model](RF/culham_electron_cyclotron.md)[^2], -- `iefrf` = 8: Culham neutral beam model[^2], +- `iefrf` = 8: [Culham neutral beam model](NBI/culham_nb.md)[^2], - `iefrf` = 9: Oscillating Field current drive (RFPs only - OBSOLETE-REMOVED), - `iefrf` = 10: [ECRH user input gamma](RF/echr_gamma.md), - `iefrf` = 11: [ECRH "HARE" model](RF/ecrh_hare.md) [^3], -- `iefrf` = 12: EBW user scaling input. Scaling (S. Freethy) +- `iefrf` = 12: [EBW user scaling input. Scaling](RF/ebw_freethy.md) (S. Freethy) !!! Warning "Warning" At present, the neutral beam models do not include the effect of an edge transport barrier (pedestal) in the plasma profile. diff --git a/mkdocs.yml b/mkdocs.yml index 8d9c8278aa..1dd648e8fc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -72,8 +72,11 @@ nav: - Ion cyclotron model: eng-models/heating_and_current_drive/RF/ic_model.md - Electron Bernstein Wave: - Overview: eng-models/heating_and_current_drive/RF/ebw_overview.md + - EBW Model: eng-models/heating_and_current_drive/RF/ebw_freethy.md - Neutral Beam Injection: - Overview: eng-models/heating_and_current_drive/NBI/nbi_overview.md + - ITER Model: eng-models/heating_and_current_drive/NBI/iter_nb.md + - Culham Model: eng-models/heating_and_current_drive/NBI/culham_nb.md - Cryostat and vacuum system: eng-models/cryostat-and-vacuum-system.md - Plant Availability: eng-models/plant.md - Power Requirements: eng-models/power-requirements.md From 65714859bc9aede284db9ac59a2247d40069533d Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 18:58:59 +0000 Subject: [PATCH 11/32] HARE obsolete, remove model page --- .../RF/{echr_gamma.md => ecrh_gamma.md} | 0 .../heating_and_current_drive/RF/ecrh_hare.md | 1 - .../fenstermacher_electron_cyclotron_resonance.md | 13 ++++++++++++- .../heating-and-current-drive.md | 4 ++-- mkdocs.yml | 1 + 5 files changed, 15 insertions(+), 4 deletions(-) rename documentation/proc-pages/eng-models/heating_and_current_drive/RF/{echr_gamma.md => ecrh_gamma.md} (100%) delete mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/echr_gamma.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md similarity index 100% rename from documentation/proc-pages/eng-models/heating_and_current_drive/RF/echr_gamma.md rename to documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md deleted file mode 100644 index 7ccd60e2be..0000000000 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_hare.md +++ /dev/null @@ -1 +0,0 @@ -# ECRH HARE Model \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md index fbbcf34c7e..cf4ae4294f 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md @@ -1 +1,12 @@ -# Fenstermacher Electron Cyclotron Resonance \ No newline at end of file +# Fenstermacher Electron Cyclotron Resonance + +effrfssfix = ( + 0.21e0 + * physics_variables.ten + / (physics_variables.rmajor * dene20 * physics_variables.dlamee) + + ) + +$ +\text{Current drive efficiency [A/W]} = 0.21 \frac{(1+(T_{e}/25)^{1.16})}{R_{0} n_{e,20}} +$$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md index f042240310..c7006f215d 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md @@ -16,7 +16,7 @@ The fraction of the required plasma current to be produced by non-inductive mean - `iefrf` = 8: [Culham neutral beam model](NBI/culham_nb.md)[^2], - `iefrf` = 9: Oscillating Field current drive (RFPs only - OBSOLETE-REMOVED), - `iefrf` = 10: [ECRH user input gamma](RF/echr_gamma.md), -- `iefrf` = 11: [ECRH "HARE" model](RF/ecrh_hare.md) [^3], +- `iefrf` = 11: [ECRH "HARE" model](RF/ecrh_hare.md) [^3], (RFPs only - OBSOLETE-REMOVED) - `iefrf` = 12: [EBW user scaling input. Scaling](RF/ebw_freethy.md) (S. Freethy) !!! Warning "Warning" @@ -43,7 +43,7 @@ Like for a current drive and heating system a fixed amount of heating power that ## Ignited plasma -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 etc during the plasma start-up phase only - use `pheat` to indicate the power requirement). 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. Also, constraint equation no. 28 can be turned on to enforce the fusion gain *Q* to be at least `bigqmin`. +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 etc during the plasma start-up phase only - use `pheat` to indicate the power requirement). 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. Also, constraint equation 28 (`icc = 28`) can be turned on to enforce the fusion gain *Q* to be at least `bigqmin`. [^1]: N. A. Uckan and ITER Physics Group, *"ITER Physics Design Guidelines: 1989"*, ITER Documentation Series, No. 10, IAEA/ITER/DS/10 (1990) diff --git a/mkdocs.yml b/mkdocs.yml index 1dd648e8fc..9d9516440a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -67,6 +67,7 @@ nav: - Overview: eng-models/heating_and_current_drive/RF/ec_overview.md - Fenstermacher Resonnance Model: eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md - Culham Model: eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md + - User INput Gamma Model: eng-models/heating_and_current_drive/RF/ecrh_gamma.md - Ion Cyclotron: - Overview: eng-models/heating_and_current_drive/RF/ic_overview.md - Ion cyclotron model: eng-models/heating_and_current_drive/RF/ic_model.md From 0c5663ec30b95143950add4fca46b5fd4c6963e0 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 19:20:43 +0000 Subject: [PATCH 12/32] ecrh_gamma page filled in --- .../heating_and_current_drive/RF/ecrh_gamma.md | 14 +++++++++++++- .../heating-and-current-drive.md | 6 +++--- mkdocs.yml | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md index 2c3c736d4d..a8dc7cc1b3 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md @@ -1 +1,13 @@ -# ECRH Uer Input Gamma Model \ No newline at end of file +# ECRH User Input Gamma Model + +This model allows the user to input a scaling factor to the current drive efficiency with the variable `gamma_ecrh`. The value of this variable should follow the value and form of the expression below: + +$$ +\gamma_{CD} = \frac{\langle n_{e,20} \rangle I_{CD}R_0}{P_{CD}} +$$ + +The current drive efficiency is then calculated with $\gamma_{CD}$ in the form below: + +$$ +\text{Current drive efficiency [A/W]} = \frac{\gamma_{CD}}{R_{0} n_{e,20}} +$$ \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md index c7006f215d..2edbd37dc0 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md @@ -14,9 +14,9 @@ The fraction of the required plasma current to be produced by non-inductive mean - `iefrf` = 6: [Culham Lower Hybrid model](RF/culham_lower_hybrid.md)[^2], - `iefrf` = 7: [Culham electron cyclotron model](RF/culham_electron_cyclotron.md)[^2], - `iefrf` = 8: [Culham neutral beam model](NBI/culham_nb.md)[^2], -- `iefrf` = 9: Oscillating Field current drive (RFPs only - OBSOLETE-REMOVED), -- `iefrf` = 10: [ECRH user input gamma](RF/echr_gamma.md), -- `iefrf` = 11: [ECRH "HARE" model](RF/ecrh_hare.md) [^3], (RFPs only - OBSOLETE-REMOVED) +- `iefrf` = 9: Oscillating Field current drive :warning: (OBSOLETE-REMOVED), +- `iefrf` = 10: [ECRH user input gamma](RF/ecrh_gamma.md), +- `iefrf` = 11: ECRH "HARE" model [^3] :warning: (OBSOLETE-REMOVED), - `iefrf` = 12: [EBW user scaling input. Scaling](RF/ebw_freethy.md) (S. Freethy) !!! Warning "Warning" diff --git a/mkdocs.yml b/mkdocs.yml index 9d9516440a..9859847548 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -67,7 +67,7 @@ nav: - Overview: eng-models/heating_and_current_drive/RF/ec_overview.md - Fenstermacher Resonnance Model: eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md - Culham Model: eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md - - User INput Gamma Model: eng-models/heating_and_current_drive/RF/ecrh_gamma.md + - User Input Gamma Model: eng-models/heating_and_current_drive/RF/ecrh_gamma.md - Ion Cyclotron: - Overview: eng-models/heating_and_current_drive/RF/ic_overview.md - Ion cyclotron model: eng-models/heating_and_current_drive/RF/ic_model.md From b1cc8471836b720a9769b16007ba1e0f3bc8fe72 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 22:20:38 +0000 Subject: [PATCH 13/32] beam stopping mode added --- .../heating_and_current_drive/NBI/iter_nb.md | 75 ++++++++++++++++++- .../NBI/nbi_overview.md | 37 ++++++++- .../RF/culham_electron_cyclotron.md | 64 +++++++++++++++- 3 files changed, 173 insertions(+), 3 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md index e21ac4face..05e9b946dc 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md @@ -1 +1,74 @@ -# ITER Neutral Beam Model \ No newline at end of file +# ITER Neutral Beam Model + +This model calculates the current drive parameters for a neutral beam system, based on the 1990 ITER model.[^1] + + +Firstly the beam access is checked for such that +$$ +\bigg(1+ \frac{1}{A}\bigg) > (R_{\text{tangential}}/R_0) +$$ + +The beam path length to centre is calculated: + +$$ +\text{`dpath`} = R_0 \sqrt(\bigg(1+\frac{1}{A}\bigg)^2-`frbeam`^2\bigg) +$$ + + # Calculate beam path length to centre + dpath = physics_variables.rmajor * np.sqrt( + (1.0 + physics_variables.eps) ** 2 - current_drive_variables.frbeam**2 + ) + +Beam stopping cross-section is claculated using the `sigbeam` method described in : + + + # Calculate beam stopping cross-section + sigstop = self.sigbeam( + current_drive_variables.enbeam / physics_variables.abeam, + physics_variables.te, + physics_variables.dene, + physics_variables.ralpne, + physics_variables.rncne, + physics_variables.rnone, + physics_variables.rnfene, + ) + + # Calculate number of decay lengths to centre + current_drive_variables.taubeam = dpath * physics_variables.dene * sigstop + + # Shine-through fraction of beam + fshine = np.exp(-2.0 * dpath * physics_variables.dene * sigstop) + fshine = max(fshine, 1e-20) + + # Deuterium and tritium beam densities + dend = physics_variables.deni * (1.0 - current_drive_variables.ftritbm) + dent = physics_variables.deni * current_drive_variables.ftritbm + + # Power split to ions / electrons + fpion = self.cfnbi( + physics_variables.abeam, + current_drive_variables.enbeam, + physics_variables.ten, + physics_variables.dene, + dend, + dent, + physics_variables.zeffai, + physics_variables.dlamie, + ) + + # Current drive efficiency + effnbss = current_drive_variables.frbeam * self.etanb( + physics_variables.abeam, + physics_variables.alphan, + physics_variables.alphat, + physics_variables.aspect, + physics_variables.dene, + current_drive_variables.enbeam, + physics_variables.rmajor, + physics_variables.ten, + physics_variables.zeff, + ) + + return effnbss, fpion, fshine + +[^1]: 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 diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md index a46edb0947..cfaba60106 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -28,4 +28,39 @@ The power in the beam atoms that are not ionised as they pass through the plasma - It is necessary to use a beam energy that simultaneously gives adequate penetration of the beam to the centre of the plasma and tolerable shine-through of the beam on the wall after the beam has traversed the plasma. The number of exponential decay lengths, $\tau$, for the beam power to fall before it reaches the plasma centre should be in the region of ~ 4-6[^2],. Constraint equation no. 14 may be used to force $\tau$ to be equal to the value given by input parameter `tbeamin`, and is therefore in effect a beam energy consistency equation. - Alternatively, constraint equation no. 59 with iteration variable no. 105 (`fnbshineef`) may be used to ensure that the beam power fraction emerging from the plasma is no more than the value given by input parameter `nbshinefmax`. -It is recommended that only one of these two constraint equations is used during a run. \ No newline at end of file +It is recommended that only one of these two constraint equations is used during a run. + +## Beam stopping cross-section + +Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the `sigbeam` method to calculate the stopping cross section[^1]. It finds a suitable analytic epressing for $\sigma_s^{(Z)}(E,n_e,T_e,Z_{\text{eff}})$ for fitting $\sigma_s$ data for a single impurity $(\text{Z)}$ plasma: + + + +$$ +\sigma_s^{(Z)}(E,n_e,T_e,Z_\text{eff}) = \frac{e^{[S_{1} (E,n_e, T_e)]}}{E} \times\left [1 +(Z_\text{eff}-1) S_z(E, n_e, T_e)\right] \ (\times 10^{-16} \text{cm}^2) +$$ + +where + +$$ +S_{1} = \sum_{i=1}^2 \sum_{j=1}^3 \sum_{k=1}^2 \ \{A_{ijk} \times (\ln E)^{i-1} \ [\ln(n/n_{0})]^{j-1} \ (\ln T_e)^{k-1} \} +$$ + +$$ +S_{Z} = \sum_{i=1}^3 \sum_{j=1}^2 \sum_{k=1}^2 \ \{B_{ijk}^{(z)} \times (\ln E)^{i-1} \ [\ln(n/n_{0})]^{j-1} \ (\ln T_e)^{k-1} \} +$$ + +with $E, n_e, T$ expressed in units of keV/u, $\text{cm}^3$ and keV, respectively, and $n_0 = 10^{13} \text{cm}^3$. The function $S_1 (E, n_e, T_e)$ together with the $E^{-1}$ factor describes the beam stopping in a pure hydrogenic plasma, while the function $(Z_{\text{eff}}- 1)\ S_z (E, n_e, T_e)$ describes the effect of the impurity $Z$ on the beam stopping. + +!!! info "Info" + For the full table of values for $A_{ijk}$ & $B_{ijk}^{(z)}$\ please see the accompanying paper[^1] or `current_drive.py` + +For a plasma having an arbitrary mix of $N$ different types of impurities with densities $n$, and charges $Z_q (q = 1, ..., N)$, the beam stopping cross-section can be represented as the weighted sum of the stopping cross- sections for $N$ reference single-impurity plasmas. In each of these reference plasmas, the electron density and the proton density (including that of deuterium and tritium ions) are the same as in a true plasma. The impurity density, however, is increased in order to satisfy quasi-neutrality. The weighting function is the electron density $n_qZ_q$ associated with the aum impurity (in the true plasma), divided by the sum of these densities. The result is: + +$$ +\sigma_s^{(N)}=\frac{ e^{S_{1}(E, n_e, T_e)}}{E} \times\left[1+\frac{1}{n_e} \sum_q n_q Z_q(Z_q-1) S_{Z_q}(E, n_e, T_e)\right] +(\times 10^{-16} \mathrm{~cm}^2) +$$ + + +[^1]:Janev, R. K., Boley, C. D., & Post, D. E. (1989). *"Penetration of energetic neutral beams into fusion plasmas."* Nuclear Fusion, 29(12), 006. https://doi.org/10.1088/0029-5515/29/12/006 \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md index 2f7e8fd2ad..5f9d2e234f 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md @@ -1 +1,63 @@ -# Culham Electron Cyclotron Model \ No newline at end of file +# Culham Electron Cyclotron Model + +def culecd(self): + """Routine to calculate Electron Cyclotron current drive efficiency + author: M R O'Brien, CCFE, Culham Science Centre + author: P J Knight, CCFE, Culham Science Centre + effrfss : output real : electron cyclotron current drive efficiency (A/W) + This routine calculates the current drive parameters for a + electron cyclotron system, based on the AEA FUS 172 model. + AEA FUS 251: A User's Guide to the PROCESS Systems Code + AEA FUS 172: Physics Assessment for the European Reactor Study + """ + rrr = 1.0e0 / 3.0e0 + + # Temperature + tlocal = profiles_module.tprofile( + rrr, + physics_variables.rhopedt, + physics_variables.te0, + physics_variables.teped, + physics_variables.tesep, + physics_variables.alphat, + physics_variables.tbeta, + ) + + # Density (10**20 m**-3) + dlocal = 1.0e-20 * profiles_module.nprofile( + rrr, + physics_variables.rhopedn, + physics_variables.ne0, + physics_variables.neped, + physics_variables.nesep, + physics_variables.alphan, + ) + + # Inverse aspect ratio + epsloc = rrr * physics_variables.rminor / physics_variables.rmajor + + # Effective charge (use average value) + zlocal = physics_variables.zeff + + # Coulomb logarithm for ion-electron collisions + # (From J. A. Wesson, 'Tokamaks', Clarendon Press, Oxford, p.293) + coulog = 15.2e0 - 0.5e0 * np.log(dlocal) + np.log(tlocal) + + # Calculate normalised current drive efficiency at four different + # poloidal angles, and average. + # cosang = cosine of the poloidal angle at which ECCD takes place + # = +1 outside, -1 inside. + cosang = 1.0e0 + ecgam1 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) + cosang = 0.5e0 + ecgam2 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) + cosang = -0.5e0 + ecgam3 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) + cosang = -1.0e0 + ecgam4 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) + + # Normalised current drive efficiency (A/W m**-2) + ecgam = 0.25e0 * (ecgam1 + ecgam2 + ecgam3 + ecgam4) + + # Current drive efficiency (A/W) + return ecgam / (dlocal * physics_variables.rmajor) \ No newline at end of file From 7752843f5ae8c77aa7a36b357b68a63ffe41c78e Mon Sep 17 00:00:00 2001 From: mn3981 Date: Sat, 25 Nov 2023 22:48:44 +0000 Subject: [PATCH 14/32] cfnbi addition --- .../heating_and_current_drive/NBI/iter_nb.md | 104 ++++++++---------- .../NBI/nbi_overview.md | 57 ++++++++++ 2 files changed, 105 insertions(+), 56 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md index 05e9b946dc..c6a602af54 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md @@ -14,61 +14,53 @@ $$ \text{`dpath`} = R_0 \sqrt(\bigg(1+\frac{1}{A}\bigg)^2-`frbeam`^2\bigg) $$ - # Calculate beam path length to centre - dpath = physics_variables.rmajor * np.sqrt( - (1.0 + physics_variables.eps) ** 2 - current_drive_variables.frbeam**2 - ) - -Beam stopping cross-section is claculated using the `sigbeam` method described in : - - - # Calculate beam stopping cross-section - sigstop = self.sigbeam( - current_drive_variables.enbeam / physics_variables.abeam, - physics_variables.te, - physics_variables.dene, - physics_variables.ralpne, - physics_variables.rncne, - physics_variables.rnone, - physics_variables.rnfene, - ) - - # Calculate number of decay lengths to centre - current_drive_variables.taubeam = dpath * physics_variables.dene * sigstop - - # Shine-through fraction of beam - fshine = np.exp(-2.0 * dpath * physics_variables.dene * sigstop) - fshine = max(fshine, 1e-20) - - # Deuterium and tritium beam densities - dend = physics_variables.deni * (1.0 - current_drive_variables.ftritbm) - dent = physics_variables.deni * current_drive_variables.ftritbm - - # Power split to ions / electrons - fpion = self.cfnbi( - physics_variables.abeam, - current_drive_variables.enbeam, - physics_variables.ten, - physics_variables.dene, - dend, - dent, - physics_variables.zeffai, - physics_variables.dlamie, - ) - - # Current drive efficiency - effnbss = current_drive_variables.frbeam * self.etanb( - physics_variables.abeam, - physics_variables.alphan, - physics_variables.alphat, - physics_variables.aspect, - physics_variables.dene, - current_drive_variables.enbeam, - physics_variables.rmajor, - physics_variables.ten, - physics_variables.zeff, - ) - - return effnbss, fpion, fshine + +Beam stopping cross-section ($\sigma_{\text{beam}}$) is calculated using the `sigbeam` method described [here](nbi_overview.md) : + + +Calculate number of electron decay lengths to centre + +$$ +\tau_{\text{beam}} = \text{`dpath`} n_e \sigma_{\text{beam}} +$$ + +Shine-through fraction of beam: +$$ +fshine = e^{(-2.0 * dpath * n_e * sigstop)} \\ +fshine = max(fshine, 1e-20) +$$ + +Deuterium and tritium beam densities: +$$ +n_D = n_i * (1.0 - current_drive_variables.ftritbm) \\ +n_T = n_i * current_drive_variables.ftritbm +$$ + +Power split to ions / electrons +fpion = self.cfnbi( + physics_variables.abeam, + current_drive_variables.enbeam, + physics_variables.ten, + physics_variables.dene, + dend, + dent, + physics_variables.zeffai, + physics_variables.dlamie, +) + +# Current drive efficiency +effnbss = current_drive_variables.frbeam * self.etanb( + physics_variables.abeam, + physics_variables.alphan, + physics_variables.alphat, + physics_variables.aspect, + physics_variables.dene, + current_drive_variables.enbeam, + physics_variables.rmajor, + physics_variables.ten, + physics_variables.zeff, +) + +return effnbss, fpion, fshine [^1]: 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 diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md index cfaba60106..ec96e8b309 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -63,4 +63,61 @@ $$ $$ +## Ion coupled power +Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the `cfnbi` method to calculate the fraction of the fast particle energy coupled to the ions + +def cfnbi(self, afast, efast, te, ne, nd, nt, zeffai, xlmbda): + """Routine to calculate the fraction of the fast particle energy + coupled to the ions + author: P J Knight, CCFE, Culham Science Centre + afast : input real : mass of fast particle (units of proton mass) + efast : input real : energy of fast particle (keV) + te : input real : density weighted average electron temp. (keV) + ne : input real : volume averaged electron density (m**-3) + nd : input real : deuterium beam density (m**-3) + nt : input real : tritium beam density (m**-3) + zeffai : input real : mass weighted plasma effective charge + xlmbda : input real : ion-electron coulomb logarithm + fpion : output real : fraction of fast particle energy coupled to ions + This routine calculates the fast particle energy coupled to + the ions in the neutral beam system. + AEA FUS 251: A User's Guide to the PROCESS Systems Code + """ + # atmd = 2.0 + atmdt = 2.5 + # atmt = 3.0 + c = 3.0e8 + me = 9.1e-31 + # zd = 1.0 + # zt = 1.0 + + # xlbd = self.xlmbdabi(afast, atmd, efast, te, ne) + # xlbt = self.xlmbdabi(afast, atmt, efast, te, ne) + + # sum = nd * zd * zd * xlbd / atmd + nt * zt * zt * xlbt / atmt + # ecritfix = 16.0e0 * te * afast * (sum / (ne * xlmbda)) ** (2.0e0 / 3.0e0) + + xlmbdai = self.xlmbdabi(afast, atmdt, efast, te, ne) + sumln = zeffai * xlmbdai / xlmbda + xlnrat = (3.0e0 * np.sqrt(np.pi) / 4.0e0 * me / constants.mproton * sumln) ** ( + 2.0e0 / 3.0e0 + ) + ve = c * np.sqrt(2.0e0 * te / 511.0e0) + + ecritfi = ( + afast + * constants.mproton + * ve + * ve + * xlnrat + / (2.0e0 * constants.echarge * 1.0e3) + ) + + x = np.sqrt(efast / ecritfi) + t1 = np.log((x * x - x + 1.0e0) / ((x + 1.0e0) ** 2)) + thx = (2.0e0 * x - 1.0e0) / np.sqrt(3.0e0) + t2 = 2.0e0 * np.sqrt(3.0e0) * (np.atan(thx) + np.pi / 6.0e0) + + return (t1 + t2) / (3.0e0 * x * x) + [^1]:Janev, R. K., Boley, C. D., & Post, D. E. (1989). *"Penetration of energetic neutral beams into fusion plasmas."* Nuclear Fusion, 29(12), 006. https://doi.org/10.1088/0029-5515/29/12/006 \ No newline at end of file From e2429a0e4d0f3e5779445098c23e662b6a824628 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 27 Nov 2023 16:21:12 +0000 Subject: [PATCH 15/32] coloumb log and first couple attempt --- .../NBI/nbi_overview.md | 119 +++++++++--------- 1 file changed, 62 insertions(+), 57 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md index ec96e8b309..38efd5dad6 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -64,60 +64,65 @@ $$ ## Ion coupled power -Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the `cfnbi` method to calculate the fraction of the fast particle energy coupled to the ions - -def cfnbi(self, afast, efast, te, ne, nd, nt, zeffai, xlmbda): - """Routine to calculate the fraction of the fast particle energy - coupled to the ions - author: P J Knight, CCFE, Culham Science Centre - afast : input real : mass of fast particle (units of proton mass) - efast : input real : energy of fast particle (keV) - te : input real : density weighted average electron temp. (keV) - ne : input real : volume averaged electron density (m**-3) - nd : input real : deuterium beam density (m**-3) - nt : input real : tritium beam density (m**-3) - zeffai : input real : mass weighted plasma effective charge - xlmbda : input real : ion-electron coulomb logarithm - fpion : output real : fraction of fast particle energy coupled to ions - This routine calculates the fast particle energy coupled to - the ions in the neutral beam system. - AEA FUS 251: A User's Guide to the PROCESS Systems Code - """ - # atmd = 2.0 - atmdt = 2.5 - # atmt = 3.0 - c = 3.0e8 - me = 9.1e-31 - # zd = 1.0 - # zt = 1.0 - - # xlbd = self.xlmbdabi(afast, atmd, efast, te, ne) - # xlbt = self.xlmbdabi(afast, atmt, efast, te, ne) - - # sum = nd * zd * zd * xlbd / atmd + nt * zt * zt * xlbt / atmt - # ecritfix = 16.0e0 * te * afast * (sum / (ne * xlmbda)) ** (2.0e0 / 3.0e0) - - xlmbdai = self.xlmbdabi(afast, atmdt, efast, te, ne) - sumln = zeffai * xlmbdai / xlmbda - xlnrat = (3.0e0 * np.sqrt(np.pi) / 4.0e0 * me / constants.mproton * sumln) ** ( - 2.0e0 / 3.0e0 - ) - ve = c * np.sqrt(2.0e0 * te / 511.0e0) - - ecritfi = ( - afast - * constants.mproton - * ve - * ve - * xlnrat - / (2.0e0 * constants.echarge * 1.0e3) - ) - - x = np.sqrt(efast / ecritfi) - t1 = np.log((x * x - x + 1.0e0) / ((x + 1.0e0) ** 2)) - thx = (2.0e0 * x - 1.0e0) / np.sqrt(3.0e0) - t2 = 2.0e0 * np.sqrt(3.0e0) * (np.atan(thx) + np.pi / 6.0e0) - - return (t1 + t2) / (3.0e0 * x * x) - -[^1]:Janev, R. K., Boley, C. D., & Post, D. E. (1989). *"Penetration of energetic neutral beams into fusion plasmas."* Nuclear Fusion, 29(12), 006. https://doi.org/10.1088/0029-5515/29/12/006 \ No newline at end of file +Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the `cfnbi` method to calculate the fraction of the fast particle energy coupled to the ions. + +### Coloumb logarithm +Firstly the Coloumb logarithm for the ion-ion collisions ($\ln \Lambda$) is calculated where the relative velocity may be large compared with the background thermal velocity using the `xlmbdabi` method [^2], which follows as: + +$$ +x_{1} = \frac{T_e}{10} E_{\text{fast}} \frac{m_{\text{u,fast}}}{n_e} +$$ + +$$ +x_2 = \frac{m_{\text{u,ion}}}{(m_{\text{u,ion}} + m_{\text{u,fast}})} +$$ + +$$ +\ln \Lambda = 23.7 + \log(x2 \sqrt{x1}) +$$ + +Where $T_e$ is the density weighted average electron temp (keV), $E_{\text{fast}}$ is the energy of the fast particle (MeV), $m_{\text{u,fast}}$ is the mass of the fast particle (units of proton mass),$n_e$ is the volume averaged electron density (1e20), $m_{\text{u,ion}}$ is the mass of background ions (units of proton mass). + +---------------------------------------------- + +$$ +sum\ln = Z_{\text{eff} = \frac{\ln\Lambda}{\ln \Lambda_{\text{i-e}}} +$$ + +$Z_{\text{eff}}$ is the mass weighted plasma effective charge and $\ln\Lambda_{\text{i-e}}$ is the ion-electron coulomb logarithm + +$$ +xlnrat = 3 \left(\frac{\sqrt \pi}{4}\frac{m_e}{m_p sum\ln}\right)^{\frac{2}{3}} +$$ + +$$ +v_e = c \sqrt{\left(\frac{2T_e}{511}\right)} +$$ + +$$ +ecritfi = \frac{m_{\text{u,fast}} m_p v_e^2 xlnrat} {(2 echarge 1000)} +$$ + +$$ +x = \sqrt{\frac{efast}{ecritfi}} +$$ + +$$ +ti = \log{\frac{x^2-x+1}{(x+1)^2}} +$$ + +$$ +thx = \frac{(2x-1)}{\sqrt{3}} +$$ + +$$ +t2 = 2 \sqrt{3} \frac{\arctan{thx}+\pi}{6} +$$ + +$$ +couple fraction = \frac{(t1+t2)}{3x^2} +$$ + +[^1]:Janev, R. K., Boley, C. D., & Post, D. E. (1989). *"Penetration of energetic neutral beams into fusion plasmas."* Nuclear Fusion, 29(12), 006. https://doi.org/10.1088/0029-5515/29/12/006 + +[^2]: David R. Mikkelsen & Clifford E. Singer (1983) *"Optimization of Steady-State Beam-Driven Tokamak Reactors"*, Nuclear Technology - Fusion, 4:2P1, 237-252, DOI: 10.13182/FST83-A22816 \ No newline at end of file From 268e382aa7ffb3860412806d3a36c1b310f90cb1 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Mon, 27 Nov 2023 19:36:49 +0000 Subject: [PATCH 16/32] iter nbi model first draft --- .../heating_and_current_drive/NBI/iter_nb.md | 76 ++++++++++++++----- process/current_drive.py | 2 +- 2 files changed, 58 insertions(+), 20 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md index c6a602af54..3c1931a99f 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md @@ -11,7 +11,7 @@ $$ The beam path length to centre is calculated: $$ -\text{`dpath`} = R_0 \sqrt(\bigg(1+\frac{1}{A}\bigg)^2-`frbeam`^2\bigg) +\underbrace{\mathtt{dpath}}_{\text{Path length to centre}} = R_0 \sqrt{\left(\left(1+\frac{1}{A}\right)^2-\mathtt{frbeam}^2\right)} $$ @@ -21,34 +21,29 @@ Beam stopping cross-section ($\sigma_{\text{beam}}$) is calculated using the `si Calculate number of electron decay lengths to centre $$ -\tau_{\text{beam}} = \text{`dpath`} n_e \sigma_{\text{beam}} +\tau_{\text{beam}} = \mathtt{dpath}\times n_e \sigma_{\text{beam}} $$ Shine-through fraction of beam: $$ -fshine = e^{(-2.0 * dpath * n_e * sigstop)} \\ -fshine = max(fshine, 1e-20) +f_{\text{shine}} = e^{(-2.0 \times \mathtt{dpath} \times n_e \sigma_{\text{beam}})} \\ $$ Deuterium and tritium beam densities: $$ -n_D = n_i * (1.0 - current_drive_variables.ftritbm) \\ -n_T = n_i * current_drive_variables.ftritbm +n_D = n_i * (1.0 - \mathtt{ftritbm}) $$ -Power split to ions / electrons -fpion = self.cfnbi( - physics_variables.abeam, - current_drive_variables.enbeam, - physics_variables.ten, - physics_variables.dene, - dend, - dent, - physics_variables.zeffai, - physics_variables.dlamie, -) +$$ +n_T = n_i * \mathtt{ftritbm} +$$ + +Power split to ions / electrons is calculated via the the `cfnbi` method described [here](nbi_overview.md) + + +## Current drive efficiency +Uses the `etanb` method. -# Current drive efficiency effnbss = current_drive_variables.frbeam * self.etanb( physics_variables.abeam, physics_variables.alphan, @@ -61,6 +56,49 @@ effnbss = current_drive_variables.frbeam * self.etanb( physics_variables.zeff, ) -return effnbss, fpion, fshine +zbeam = 1.0 + bbd = 1.0 + + dene20 = 1e-20 * dene + +Ratio of E_beam/E_crit + +$$ +\mathtt{xjs} = \frac{ebeam}{10 m_{\text{u,ion}}T_e} +$$ + +$$ +\mathtt{xj} = \sqrt{\mathtt{xjs}} +$$ + +$$ +\mathtt{yj} = 0.8 \frac{Z_{\text{eff}}}{m_{\text{u,beam}}} +$$ + +$$ +rjfunc = \frac{xjs}{((4.0 + 3.0\mathtt{yj} + \mathtt{xjs}(\mathtt{xj} + 1.39 + 0.61\mathtt{yj}^{0.7})))} +$$ + +$$ +\mathtt{epseff} = \frac{0.5}{A} +$$ + +$$ +\mathtt{gfac} = \left(1.55 + \frac{0.85}{Z_{\text{eff}}}\right)\left(\sqrt{\mathtt{epseff}}-(0.2+\frac{1.55}{Z_{\text{eff}}})\mathtt{epseff}\right) +$$ + +$$ +\mathtt{ffac} = \frac{1}{\mathtt{zbeam}} - \frac{(1-\mathtt{gfac})}{Z_{\text{eff}}} +$$ + +$$ +\mathtt{abd} = 0.107 (1-0.35\mathtt{alphan}+0.14\mathtt{alphan}^2)(1-0.21\mathtt{alphat})(1-0.2E-3\mathtt{ebeam}+0.09E-6\mathtt{ebeam}^2) +$$ + +$$ +\text{Current drive efficiency [A/W]} = \mathtt{abd}(\frac{5}{R_0})(0.1\frac{\mathtt{ten}}{n_{e,20}})\frac{\mathtt{rjfunc}}{0.2}\mathtt{ffac} +$$ + + [^1]: 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 diff --git a/process/current_drive.py b/process/current_drive.py index 34958c0be4..50e67ee9a3 100644 --- a/process/current_drive.py +++ b/process/current_drive.py @@ -1721,7 +1721,7 @@ def etanb(self, abeam, alphan, alphat, aspect, dene, ebeam, rmajor, ten, zeff): alphat : input real : temperature profile factor aspect : input real : aspect ratio dene : input real : volume averaged electron density (m**-3) - enbeam : input real : neutral beam energy (keV) + ebeam : input real : neutral beam energy (keV) rmajor : input real : plasma major radius (m) ten : input real : density weighted average electron temp. (keV) zeff : input real : plasma effective charge From 82c42a199a2ed45a2bbb3dbdf4103a3cb35dfa58 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Tue, 28 Nov 2023 16:24:30 +0000 Subject: [PATCH 17/32] legendre polynomial --- .../NBI/nbi_overview.md | 15 +- .../RF/culham_electron_cyclotron.md | 95 ++++++----- .../RF/ec_overview.md | 147 +++++++++++++++++- .../RF/rf_overview.md | 5 + .../images/JET_rf_panel_1984.jpg | Bin 0 -> 112795 bytes 5 files changed, 199 insertions(+), 63 deletions(-) create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/images/JET_rf_panel_1984.jpg diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md index 38efd5dad6..81f264c508 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -1,22 +1,15 @@ # Neutral Beam Injection Heating -!!! Warning "Warning" +!!! Warning "NBI Models" At present, the neutral beam models do not include the effect of an edge transport barrier (pedestal) in the plasma profile. ## Neutral beam access If present, a neutral beam injection system needs sufficient space between the TF coils to be able to intercept the plasma tangentially. The major radius `rtanbeam` at which the centre-line of the beam is tangential to the toroidal direction is user-defined using input parameter `frbeam`, which is the ratio of `rtanbeam` to the plasma major radius `rmajor`. The maximum possible tangency radius `rtanmax` is determined by the geometry of the TF coils - see Figure 1, and this can be enforced using constraint equation no. 20 with iteration variable no. 33 (`fportsz`). The thickness of the beam duct walls may be set using input parameter `nbshield`. -
-
- NBI port -

-
Figure 1: Top-down schematic of the neutral beam access geometry. The beam with the maximum possible tangency radius is shown here. -
-
-
+
+![NBI Port Size](../images/portsize.png){ width = "300"} +
Figure 1: Top-down schematic of the neutral beam access geometry. The beam with the maximum possible tangency radius is shown here.
## Neutral beam losses diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md index 5f9d2e234f..cc5477687e 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md @@ -1,52 +1,38 @@ # Culham Electron Cyclotron Model -def culecd(self): - """Routine to calculate Electron Cyclotron current drive efficiency - author: M R O'Brien, CCFE, Culham Science Centre - author: P J Knight, CCFE, Culham Science Centre - effrfss : output real : electron cyclotron current drive efficiency (A/W) - This routine calculates the current drive parameters for a - electron cyclotron system, based on the AEA FUS 172 model. - AEA FUS 251: A User's Guide to the PROCESS Systems Code - AEA FUS 172: Physics Assessment for the European Reactor Study - """ - rrr = 1.0e0 / 3.0e0 - - # Temperature - tlocal = profiles_module.tprofile( - rrr, - physics_variables.rhopedt, - physics_variables.te0, - physics_variables.teped, - physics_variables.tesep, - physics_variables.alphat, - physics_variables.tbeta, - ) - - # Density (10**20 m**-3) - dlocal = 1.0e-20 * profiles_module.nprofile( - rrr, - physics_variables.rhopedn, - physics_variables.ne0, - physics_variables.neped, - physics_variables.nesep, - physics_variables.alphan, - ) - - # Inverse aspect ratio - epsloc = rrr * physics_variables.rminor / physics_variables.rmajor - - # Effective charge (use average value) - zlocal = physics_variables.zeff - - # Coulomb logarithm for ion-electron collisions - # (From J. A. Wesson, 'Tokamaks', Clarendon Press, Oxford, p.293) - coulog = 15.2e0 - 0.5e0 * np.log(dlocal) + np.log(tlocal) - - # Calculate normalised current drive efficiency at four different - # poloidal angles, and average. - # cosang = cosine of the poloidal angle at which ECCD takes place - # = +1 outside, -1 inside. +This routine calculates the current drive parameters for a electron cyclotron system, based on the AEA FUS 172 model[^1] + +Local electron temperature $(\mathtt{tlocal})$ is calculated using the `tprofile` method found here +Local electron density $(\mathtt{dlocal})$ is calculated using the `nprofile` method found here + +Inverse aspect ratio + +$$ +\mathtt{epsloc} = \frac{1}{3A} +$$ + +Coulomb logarithm for ion-electron collisions[^2] + +$$ +\mathtt{coulog} = 15.2 - 0.5\log({\mathtt{dlocal}}) + \log({\mathtt{tlocal}}) +$$ + +Calculate normalised current drive efficiency at four different poloidal angles, and average. +cosang = cosine of the poloidal angle at which ECCD takes place = +1 outside, -1 inside. + +# Normalised current drive efficiency + +Uses the `eccdef` model found below + + + + +Normalised current drive efficiency (A/W $\text{m^{-2}}$) + +$$ +\mathtt{ecgam} = 0.25(\mathtt{ecgam1} + \mathtt{ecgam2} +\mathtt{ecgam3} + \mathtt{ecgam4}) + $$ + cosang = 1.0e0 ecgam1 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) cosang = 0.5e0 @@ -56,8 +42,15 @@ def culecd(self): cosang = -1.0e0 ecgam4 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) - # Normalised current drive efficiency (A/W m**-2) - ecgam = 0.25e0 * (ecgam1 + ecgam2 + ecgam3 + ecgam4) - # Current drive efficiency (A/W) - return ecgam / (dlocal * physics_variables.rmajor) \ No newline at end of file +Current drive efficiency (A/W) + +$$ +\text{Current drive efficiency [A/W]} = \frac{\mathtt{ecgam}}{\mathtt{dlocal} \times R_0} +$$ + + + +[^1]: Hender, T.C., Bevir, M.K., Cox, M., Hastie, R.J., Knight, P.J., Lashmore-Davies, C.N., Lloyd, B., Maddison, G.P., Morris, A.W., O’Brien, M.R. and Turner, M.F., 1992. *"Physics assessment for the European reactor study."* AEA FUS, 172. + +[^2]: Wesson, J. and Campbell, D.J., 2011. *"Tokamaks"* (Vol. 149). Oxford university press. \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md index d9a0f34db3..60168ebb57 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md @@ -10,4 +10,149 @@ $$ $$ n_{\perp}^2=\frac{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}}{\omega})(1-\frac{\omega_{pe}^2}{\omega^2}+\frac{\omega_{ce}}{\omega})}{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}^2}{\omega^2})} \ \ \text{(X-mode)} -$$ \ No newline at end of file +$$ + +## Normalised current drive efficiency `eccdef` + +One of the methods for calculating the normalised current drive efficiency is the `eccdef` method found below. + +| Input | Description | +| :---------- | :----------------------------------- | +| $\mathtt{tlocal}$ | Local electron temperature (keV) | +| $\mathtt{epsloc}$ | Local inverse aspect ratio | +| $\mathtt{zlocal}$ | Local plasma effective charge | +| $\mathtt{cosang}$ | Cosine of the poloidal angle at which ECCD takes place (+1 outside, -1 inside) +| $\mathtt{coulog}$ | Local coulomb logarithm for ion-electron collisions | + +This routine calculates the current drive parameters for a electron cyclotron system, based on the AEA FUS 172 model. +It works out the ECCD efficiency using the formula due to Cohen quoted in the ITER Physics Design Guidelines : 1989 (but including division by the Coulomb Logarithm omitted from IPDG89). +We have assumed gamma**2-1 << 1, where gamma is the relativistic factor. +The notation follows that in IPDG89. +The answer ECGAM is the normalised efficiency nIR/P with n the local density in 10**20 /m**3, I the driven current in MAmps,R the major radius in metres, and P the absorbed power in MWatts. + + +$$ +\mathtt{mcsq} = 9.1095e-31 \frac{c^2}{(1E3\text{e})} +$$ + +$$ +\mathtt{f} = 16\left(\frac{\mathtt{tlocal}}{\mathtt{mcsq}}\right)^2 +$$ + +$\mathtt{fp}$ is the derivative of $\mathtt{f}$ with respect to gamma, the relativistic factor, taken equal to $1 + \frac{2T_e}{(m_ec^2)}$ + +$$ +\mathtt{fp} = 16.0 \frac{\mathtt{tlocal}}{\mathtt{mcsq}} +$$ + +lam is IPDG89's lambda. `legend` calculates the Legendre function of order alpha and argument `lam`, `palpha`, and its derivative, palphap. +Here `alpha` satisfies $alpha(alpha+1) = \frac{-8}{(1+zlocal)}$. alpha is of the form $(-1/2 + ix)$, with x a real number and $i = sqrt(-1)$. + +lam = 1.0e0 + +---------------------------------------------------------------------------------- +### Legendre function and its derivative `legend` + + +| Input | Description | +| :---------- | :----------------------------------- | +| $\mathtt{zlocal}$ | Local plasma effective charge | +| $\mathtt{arg}$ | Argument of Legendre function | + +``` py +def legend(self, zlocal, arg): + """Routine to calculate Legendre function and its derivative + author: M R O'Brien, CCFE, Culham Science Centre + author: P J Knight, CCFE, Culham Science Centre + zlocal : input real : local plasma effective charge + arg : input real : argument of Legendre function + palpha : output real : value of Legendre function + palphap : output real : derivative of Legendre function + This routine calculates the Legendre function `palpha` + of argument `arg` and order + `alpha = -0.5 + i sqrt(xisq)``, + and its derivative `palphap`. + This Legendre function is a conical function and we use the series + in `xisq`` given in Abramowitz and Stegun. The + derivative is calculated from the derivative of this series. + The derivatives were checked by calculating `palpha` for + neighboring arguments. The calculation of `palpha` for zero + argument was checked by comparison with the expression + `palpha(0) = 1/sqrt(pi) * cos(pi*alpha/2) * gam1 / gam2` + (Abramowitz and Stegun, eqn 8.6.1). Here `gam1`` and + `gam2`` are the Gamma functions of arguments + `0.5*(1+alpha)`` and `0.5*(2+alpha)` respectively. + Abramowitz and Stegun, equation 8.12.1 + """ + if abs(arg) > (1.0e0 + 1.0e-10): + eh.fdiags[0] = arg + eh.report_error(18) + + arg2 = min(arg, (1.0e0 - 1.0e-10)) + sinsq = 0.5e0 * (1.0e0 - arg2) + xisq = 0.25e0 * (32.0e0 * zlocal / (zlocal + 1.0e0) - 1.0e0) + palpha = 1.0e0 + pold = 1.0e0 + pterm = 1.0e0 + palphap = 0.0e0 + poldp = 0.0e0 + + for n in range(10000): + # Check for convergence every 20 iterations + + if (n > 1) and ((n % 20) == 1): + term1 = 1.0e-10 * max(abs(pold), abs(palpha)) + term2 = 1.0e-10 * max(abs(poldp), abs(palphap)) + + if (abs(pold - palpha) < term1) and (abs(poldp - palphap) < term2): + return palpha, palphap + + pold = palpha + poldp = palphap + + pterm = ( + pterm + * (4.0e0 * xisq + (2.0e0 * n - 1.0e0) ** 2) + / (2.0e0 * n) ** 2 + * sinsq + ) + palpha = palpha + pterm + palphap = palphap - n * pterm / (1.0e0 - arg2) + else: + eh.report_error(19) + +``` + + +palpha, palphap = self.legend(zlocal, lam) + +lams = np.sqrt(2.0e0 * epsloc / (1.0e0 + epsloc)) +palphas, _ = self.legend(zlocal, lams) + +# hp is the derivative of IPDG89's h function with respect to lam + +h = -4.0e0 * lam / (zlocal + 5.0e0) * (1.0e0 - lams * palpha / (lam * palphas)) +hp = -4.0e0 / (zlocal + 5.0e0) * (1.0e0 - lams * palphap / palphas) + +# facm is IPDG89's momentum conserving factor + +facm = 1.5e0 +y = mcsq / (2.0e0 * tlocal) * (1.0e0 + epsloc * cosang) + +# We take the negative of the IPDG89 expression to get a positive +# number + +ecgam = ( + -7.8e0 + * facm + * np.sqrt((1.0e0 + epsloc) / (1.0e0 - epsloc)) + / coulog + * (h * fp - 0.5e0 * y * f * hp) +) + +if ecgam < 0.0e0: + eh.report_error(17) +return ecgam + + +[^1]: Abramowitz, Milton. *"Abramowitz and stegun: Handbook of mathematical functions."* US Department of Commerce 10 (1972). \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md index 267d07174f..f57da52192 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md @@ -1,5 +1,10 @@ # Radio Frequency Heating +
+![JET 1984 RF Antenna](../images/JET_rf_panel_1984.jpg){ width = "100"} +
Figure 1: The early interior of the Joint European Torus (JET) in 1984. This image shows the vacuum vessel and the first radio frequency antenna being installed.
+
+ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/images/JET_rf_panel_1984.jpg b/documentation/proc-pages/eng-models/heating_and_current_drive/images/JET_rf_panel_1984.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce4cb98dedacf270e7d0870c8312114c7da7d0c0 GIT binary patch literal 112795 zcmbTdbx>r%vo+Yb+W-TD&!B_54mP;EHtz0jjSSAWsgmmQ<P!#)3qOPGy0=Er-0$>3U0H^>$eM3h(86{C=z-M#RcXc#$azqmns9r_=eZ59B)c?|$SMg5P> zAQ1p)2n7Iem;c8`_UVTf2msXg8ag|;{P%bO>d${Kz#~K&q%%|i^bo8p{1-%AWCPS& zj0voJTnhqv5+Sm(pBD5!EGJyG{PUt}GVIDOS~y08Rzc3HK7T`KW7*S63nOY)+Ea!H z7L0dYubw_WK2`ui09a@kSQuznSQuD1I9PZ@bVNi11Vk)UG-PxfEL>b1tgm132+4`@ z@JR{2ekGwLA*G=FN&WL1F&!fv6(c#-Ppbb60s#jHhX{{|iHL|vh4&SY>i={5=mcQE zL#jhgK|%ZgKw>~ZVL*KJ0*F5s1_t84+W)!@00>B^&-uc^BOoGuI)KpukPuK%kkC*t zFwoGS-rk@60B8)DFW;F2VKEi-;eOa-G5f`2!;}85?!s1_x+G&UaPUV!{ECD74Ue3H zlIkZlD;qlpCl|Mnu!yLbxP+vVvWlwO=VBNd8Jn1znOitIIlH*JxqAfs2@DDj2@Q*l zi%&>QN=`}5$<50zC@d;2sj004*EcjaHFx*)_Vo`84h>Jw%+Ad(EG{i?ZSU;v?H?Q- z9baAF+}_c44y{{AG~hy7|<}^nP9&N zD!}R6WBy?FgU9+ElU?0~K+2+ciEZF8h4__>b&LG!Kh*w<+5bCY{{O$2{a?iXhu1Oy z84BWa@t`mO{D5mY^wp9TYtDnX35%PS6pj{-O33C+tRXUYv>xwimdOPgXgYgmlx7EQ z|ET`jY;5?of6CS^_^H;VBDq+7Vd_kX3No$cWgB;fF=#|=tzBS=mw;jx;#8sGYy><3BdNikFTp~Y>!5% z{%Jhnxai|nmQ2E2ub$r0oUvVLsld9RsS_Cht4Nt5rk@#4JUeZ1UBzJ}Vvbc$giA+4 zsyI*HzkghuRtsYJ06>(ibAW1v3J+Zd#o}``l$~#IQA&Km8?Gq8v}{xtua?FzxAtX> z1AE;8=Rra3_;Iv#j;U65V)COI2gcvS$!-^4viNsFojS^3cb z0;A?l9m|d%fQ1Ue^u2^U$EM_SvIn-A$MGBchT4c*{M~`#L;i_!M=JJ+huh+ux_!^; z_HL_Aeg?iej*-rB3+XQio!D5tv9Oj3%w=T`veZ=DruO3!X923&LS&C9zFd?xn|!&` zmFD$N#>a9H7ENU`73OBoX03^A_Q^XR0CiAX)H~Q2@6VNaB8B?LNl{vQAQhhlyd(uc+Z176%t&&EBi)E)S!fI4O?vsm_B2Y=DiN2R(v%zdL2z zZ#BIoji~Qp0Hs)VQon^TBZb&C8cUh_^(9_7IghD!MJp4T0`Ce;OdIWmChOr@wf %>(r4){nnZ{3J|JFYR@Ik(bvl6BSTpbN8wxzCV*!H#M1GFek%`F@xZbB`WxPpSO=6-rdN|UGih+i83soGxsekuIO8! zHSI3XDQaW1 zO?IfB;oo|o9lNhBs=)^7Gu=y=b=e+pSrT?1yKmq@L&~RtXUZ&ndR;xj#5MLKdr;rs z(_W&^$dC&z?Y5lDdLBlU8IH`6d=+go<8!X{-mAySHK$ndVheTjoY zr9zH)*|}xQ-YJjdB?dK&<=wqvnLJpoR+kMu;pI;R_WiSKp?Rv2i)y!+JaJW_w!nfyaCo9LlB|KDb7F+nGgNZMw zR~LVGn4~8xefaCkoh@oo^lyma2oNqm__jKW6m9 zr-9SXt+rKqEk)B^z?3#sHg=8Hqwsv5ejMp7)|)`dwQaJE4?MsQ*cyZNc5rlb>$9GG zy(W6^E`Dhi{?i2ZMA&-cy8*V{;M0v8C%hj=S*%|LhthhXmE zHeWN}t(iP%wOf||HceDLTBN##swz5zOGGk^nOQCo&AW>9wpeA7pbd%6BwIy>{oVI#*FoH6YH6Mwl=)~`h9W`CWww76=>dR>{=OR?fj(DH# zMGw@ad+e1*sZJLUy0-qNZKQe)0+a3M-E9r;q?hnRIMy8*-aGu55i>rVg;v>O;*dWk zi~Px~gKlB`a$Lddq%XNw6@{wvx5Th8{@;lT%d(cEg#nSoR;XA$V8885;)!BGiu5fJ zJfG+k4SKZUUXO!%Z#cGthgu*|1nu5X`X*ZXrg<|igZ%+&^+tI&Zbt11)8t`t_DU^` zjaO5bN2`UCAU{nEK49ZB9BO&*Hh9FtSm!E(g$8wSJ}pWEcqzgQfe|FJg6HN9ntrK* z*v;_SaJW!ln)-{`yz(3t+1My6Tz=Bnfqaw2UXkmPU?*fKD^4=g)Z_e_3dNbxL;8==*E*T# zf%hu{ACpvvXdY72UOv1pQnsGkG$WoWX6@qTlTDp`8=51rFWt{Zo?FxBws}y&&GDj{ z(fgT&k3g;YJq6a9grhx;icP)>yWGn$7jD-c6b=~$KCo-SVg*a{xg4L|;1)H1N(ZJE{2(#&8Mv-LWYtbXFpqT+GJv!$V zCN2jRmJGJKyObCTJyI!Xon7>zAuWv$$X;@b3vOKynBI-4u+cTi?@sNcC+2`6 z{La?|2*^9aeKu)$$OuxCQu;BYI%oYw5S0SCh0jz2gfRhIyCF|z-BA-HyJR+M{WQ09 z*K}@R8Cph1guW$#kqyYOpJ4^+9wkA<0yXFczl}1ZGu=`W=koyF!ro0lOHL!z%|DIm z9ABBeMxMg*J@Z$W0goC6HnE~B@$(;md*1YW*-Uq+>URXV#Es;g+mh7u{JE4cj*u1j z{zGWES~ z`W%aK15;G+GWcW9d`E z&%NVh@O`#C-yEC0nxsM6uivK-GVo2txGA&n zFMG99Vyty5c=B@_A~`v&>X}Xsb1hmk+@fvBrA5T~N)!9Y+ZMX zvs$L$`j;qWC*?I(>sPm$uk93*U;#b}vBZI^4*-;wT=!!JLx}z2AF^Si09)C#h{#^4?s^cgW+Dekr*6d6!Df0gT0H@t9HS$%XE!SYIA#ym8tIx%TGkS?Wg2OB(EYaTN`bL2&XRZ1Q{&bm1wJF zQkWK+QlW^quE-7`$-_#xi%i}V-^;VDukCP6YrQxunoJirE)_RAP2ibCsW!24<6W&Uu2c>?|O&=f(4NF1Vs2&MXhbQx_Tn2aY5bP~CgC_Ol`*{>WXs&n8c zoHs*v_LCXXEU3$OCkte!Gf44m{*E@=+N_JHZT^|7(v78em;78ad6aem4O89#qJu-O z4}kCV`Ag`z(PNfKp*gp4qwtIO$iEcwfzc9F9JqR*{cGt|Rw}P<_l{~RTa-dIk<23$ z%q6GeNv5vH4OhsOSd?6R$6+{$GEwwE=NsIKc5ry*-b{Al@+1k)ly&9;AOb{PlDZ5% z(A2LzabH?&s>ggP$2zNpYX2zjOJEo=>j$qDYpaMn$6u;DgON3K>hC zS4jEoBsDKI#%FylFh^RPNT0`jH|lb`nT|%9Vto55Z!sExGq-pPbywz%_s!;40+(I@ zA}^fgMIt8$PzX^xF`E8f0)Ag;Q&W{jZ0s~waaVsJ7j@iq{O&q>V8~JwYf8a+cyJh zE`5z1w?$)MSo99D&~ib7g1!)bb^ITbaF9{<6edEpIX9h?txkKuB{C^v5SyG>uPZ$Q>;;LtNA)==)` zL7V9EAgt5GLd$0kZCAQtf5*AAs6vclUa)Og$CLGx)<7P5rpo4aTPnk&BvFaH-0Dj| z=(kL4w<>Wo2@$zio;RCG^Fj-n zdb#4WJ{Vl*LrZ6~LmHGwCelcr?XvL}zAbVwp$oaXDAK)`rIWBJaE-aP?}^_;R&o3( zYsf7RDTq6un}P#FCqLJ`7^X2MXc}&qCVm2QP5?ApFzuYNeV@AA+75GMKX+N&~0hGN^M zp_<(kGuChyTF}-hyC8e9!kaQ;L^pHVXbbKV+txTfEy_p7m6O+!_k=?He;tqFY&~R2 z=V2K@RE*B9WnNikUKU{D;k0y(v|vmP0PYV_z;o)1_t)Ny1ouQ%Pa()Mt2}p%kX%xH z6*(TYMURJHse@MyAs>Kh)_wo60BwmCUfvV2Uc6pSnbZZ;wGih-rts1Tb?e|{_G5-t8ZfB~clKF0z|9M79BBttZ;$bJ7cHBFg}as*8gc@t zJ?)Q|VsQ#59LyBCY-79rC&~`r(#Lnh`2t!%)cym)vCnGl?I3yzp2&Ny zf!Q0Gu?`m=#5Ii=WDbwIAuRL~;P-CP0Qin=?=f4x;5_qGuh`?6Z${F_Uj@P&Z(*W5 zf_r_)sxGewjBWATcCN6~h)?np}&hi}VNQrG|006_mZ)efNbfw5f2ZM~*eaD|_Nev-b+eGQgR-lX9P<^K$J? zzkcJ{ysZ?0r`Bi>wEJB+&h%th5Wi(l=O50-R%e(nDM2!4jOI= z4(ep+p)31{rXm?Dr2#5Jn9^kgw z;i1Jsr%3n_8=~}|9flbyL^8S76EG^tbBA{tGZag7S(L4I^dOcvDZXqFE2ynK?S5$= z;~AAk*B$+I*fw{AOol9R0*`8l8NFk4zqk&Q`Cx>WS00jIGSSop!19Gz94tcfX@`u$A*mV>Q;a`y>&f#0?}hR$HdYf-RdEgt7e2T_J3J(wlQm zG4GZ^N8yk7vIl{RdOEEkeP>8;*bsJ?UAr7U{J9`6H3KWF3DTsr-X;?~$ra|zKi3yKdxcf_YiM|8H)QiVEz*asLn z`=?o-@6$TV$5P^5Nh1(j_T!IHLXS>G8ogWPm2Qf#{RB^@^=Qs)9u%<`qGqN;tuyYp zzgj7Sh?B0%)?@d7(g#y#`SUOFTD+2kZpJ|aULcf8tSMK0@QM^2$rL4@QUm1Bn`=Ocmyff zc4&?FmB1L8haSvdhK|eJ+6gT#L-BC>IgL5hZOGLQ3Kj_7n@T?bNDLZvxu~yC^rF;BeUEtS9{};$ z+(G^1p$A1=5Q~moKT}?NgJ!e8b1UaTP;7|ULgQwJ|IaW*Zjw{rE#cOYg_@3p%D~7C1&NMc~Zv9RoB24I8JU9SwDUClr|C3Nho&4C@Pm^?c|6_p-9?hA|a53tt0$e@B zD~CM-q>S4U75V_sp??5qKNG>}#4$|1h(l}y&J$Hb=?oYQF@M2gS#F2{kD;1rl<*S~ zdKj!zmZU4S;Cnf9@?=Mg-(_Ws!__Az0o#7(o zrGEWOCVKh+{Ag|w`%4$|T~tlsh6dR%gBm{*`Cq!=UX6ne$5V0!D$hanb{kT+0#L$| z<=7I+;%gD)7c5(a^jxS5bcuuMlDzm>aVe>Kdn7#V$9m4a{TYcrttm$>7sLyYsY!I^ zTVtlW@iER`GHo3ONOz=%Dg2k*)uoz!#>Pc-*);UUZU%5JvRw}oGhDBwl-pQ;w9S2p z!NgZbxa$G$o)Z3Io9vZa!o2%Qcg7z8X#73V%&IePT2bAq*QEeQIQrWB^YKcZvQD#p^ zDLZzNNM`q)Hp$X>LWF{0zu`hCN+?RmisyvtIJ?Ec9mtZN6p9_bOwCleWJbWjd|m^D z0OwOEK(&RGZhWEZ{sf$#ATC1aZLtx?#$Fq$h}+x1(kQ<3enS)xme`q}AG=~FS!BxV z;LTsIznsEw*L0EQb37G+ZrWOS!LiA&NaN3Uo3=hUuSu_LzS3(L$>aU<8WUtcwfeUI z`bgBN@?w@~68{au3%m|RU~`aFM7IO5U(T>=;@o{0knEQ|Z4VG*$Y4av7jood3Fy4T zCMEcODx=u4n{ay~{59A3r!nmSCFy!W9qHK60hFK0IZ1SJjOZpWb$@`(f>M@Jla$_e zLvu9>OW{mHo{9@Uy`@Y4cRq1^c{{HCnmf)P;8ghX0(uRQTk@e}=kt77`CCH%)87D^ zNSr20uw&7>D&c9E4`to^GWef#(3y3v@EU8ND?^sj9oxZjVhZh*AbEr^u#W_6DUV=A z29@?)e2i8&-R$jfahj@|Nbt{p-KemZo!cA6!cB+sw2teJS7x1q35o_(g*K9@w5X;S z=U>CJI?>V;)x$>+NhS6wO^<_=QR3P3?1X)Agv8Rs6Y6u2S#DwBdVQR9y*AoG<5iUM z626F*?|~D@3Y4EkY?=zxHiXq+I-rRb=Q*|>MS6)oJuxt;Z?@^z^<^7RO|Ko_zB=tQJ zID4B{gqE35&r>bRHQ~o@l2Y`*qT$t;G46}Z@B2y9aJG=T6GLQL61zN{RRk4Y{HSgH zC#bs$)9zFnIm-L~^6T!rI*bkh{#MWgn@$&K>&JZT2SC;2D}@#n&3jYlvHc{(>}@F# z+q|M%UJW?mk9o8UTC3P?`Sf9^v5af)nSF8c85z@xu;f7#@5Bc{r{3wMG-*b4e=6}X zt5cYZCT>+N(;PjR&rqx}&M$7hji*zG0MmT|W_@EM4)Mw>n77~4PkAmqhCx^=_tEJX z>3&Snx=RA3<*%;`cJHgym2YEcoi%oA8!zmD(az}oXO?luNAp;0@aKs8moMcHcg)8q zXSk=-Yn(szLea3y-j15Te_D`LHYws8vW5~N3=Lo(qxYub1m!nFxDIAWa~<=yZp>Vj zF(8<2zu&_|+yV{=CmvNczK+n>mQ}>%`Cs<7EBkCZ+xG6xI~$*odYi!I64oh*r%HKXyCxH#{MuYw%S*2V?MV%*X8^Un5=CSxXz{~swSYmBd< zU`Eri{i3p@njv^<#$59^P?Y{+To)#hU+`E?|J*{#Go@7}_r!XurE&ha7beoAQ>NGS z!Ts3NhCfhB-`b;{xgkI~((*6vZz@+=8+|L!@pG*pw}m=2`l4)t6o#uOS=U3-q{IdXI)*sjYOTSIDXlHuP53<$E`j zpS26YW1dW`l$J$7L}LuBUN}>rJd$7SqoL53h_aT9>9&5*H3~Z$3~o=v|I-&#FG8_64^8 zGex}cv|EX8Bs4nRbsx+%)3!v9R`b~n8E&lHJ*n=NuKv)ury5h` zaS|Vy9N)WP;UUv?;z?H$A^!xxrQEvKNH>S#3MX_yUZXA(xtnhg?OEhD4VCw;M@NMu0_(zAx~p@!b41>)VL^f69N>S=yLH1Mph@4G7c(yF)m1KaeYVOLoF_KTKv zG{&C@hjDK}skNYXW%P8@pxH8g_BM*R1oaRnrBfv-QTnx<r)3bQ z%Fw{b$=z#dvD*(RiobK#w8}Qnl%HpSN&|k-P(x=AeRhYHE0p_j%^_z#BZ zt#;hk?gwCF_ib{Uz#|yP-}iKs5_ZcGL1IH>oKMLgfSPo<*-cgQi_i+2bp0tkAe$jr zU2k~fl71u50SAX!a?~Uyk0ci9i^sLa&&BROEnhoStbF5pPpaeDbPQrqwl$i$ zE!N?2^(^jJX$|^`d-v3S^+u(_RZmRUz{0UY?OXjteD9o?;CWN|3(z+1L2^`=3|c6v zyIhcWZ>#1~h$CE6m5~JZwh97*QDsq;#6uCc2%GiHm*g(1Fp=f=NUlmi@S5Fh9gumOv zx##_K%iCvZUhD3dH`k5}1AY$IQbtR;WX!Kjk}7fMW@$OidRj;d*a7fULgn!s$`Ti*8@ zgT*z01L9ntgguW_&cv_wH&4GgJ^=0rpL^%5uv@g?FX{aK4fg>dyT-|ACYzbFs>Hqc z#I+X7X*_lYE%Y7dlGz=}YzgcMVm4WGb3tA|8<9%oY~IM^LFksHkCoQ?QJP|4gb>RVhs?l=?4&{O9FgLJZKL zt@#qBh3M~mWG|$h%WSa&}RfdtTbzj zc#=~C-M+rquiHw&E73x>ibB`~LrzBZ&T2`CL6c*#Ee(&a`9$g7g~yDV-&3iUnF&J& zh<^%B8cxn~Z+n}iRh;)HCbE_rGWMazIXtzd5fCVWy=7N~fKuT=T`=$1 zqSMdFtZFC0z9BeLja}0J zPKjjax_CH=lhDEh<&~MT^A4kR;jbU3dlm7VzA#q3yfPCDpU3QEK4)(J#aZo)` z&ot$ALFNISF+HjYT~2p7U7)b-F2Xt(lYIc}P-zNYt890L=Hg#LuKPNICVAGO4n6$6 zmZ_oMFzT%d7vP_TTqX(EyykxJJJDu3$5qp0LSQ-0v*}_Ti9jga12zK_h~JUx;3Q`% z$}}Uy#`5377M+8FcYV&>6#uLb=+>4#^#b2gx%f^RM6_NqXV`-CH1Yq{DNHz~o;b(G zm?zdxbsD-vw^jgoI&tNB0S8w_#k|V$S&yjmyT=px6zL1X= z#gv&v^jQ4OwdXR7a#a3BS+A|QZ?;3SLPq1`@C5+3hJ_Z$TNjh54cQ()*s-AflA+1chio4Rg58aiGfs`!6 zmrNpTA|VyYc_EJCp5IlbPc+9Gf>?t-!~R>Yn?J6aS^rMI#4S|n4Wa1f0JLg-$!=Vr z{=BTu!)$6Z>mIhdjdcF#EuA@&M1^HwUX*p601ImG{p+Uy=th$z`8HgQ-!!ygRLtd+ zA8{#?Vv-dm5^KYokw-yPis>8WA>4H(Pl_=x;DBRPR{fyd8fWyJhS1cnPN>|{4%mQB zvO!8T%)LJrCu&4dw5>(g`k+z|^c6 z%x_>A``qj}>dLpJ>?gL%7e~R90Ex?6KMd7iC0crPSF2$0kGE3s`JRUPvr^}$}3UlEJHEssr%E}fk{ z&4s5}wSLbD*&#i1jH@#x%Tzk0u>`J(x*jXcU);XoJ@3eZZ%o$UMN~*J&^d{vuf-HC z1DJV7Gh5>TS8p_+-b8bliRCQ(?AEtKJqc33go)}2>~NFn&ngP49W3X=n4$z7VvA?G znqM6!m}fWiy4tCelV9^z#)rjtYl*IovD6kowS`X$r|5XG-r6BMTT!kbi^9s)9B)mV zd(O}>U+?v^bk#hf!`60#AMz_dYxo9V#;gdPXAI57AJ#{@X+?G3K`TZ$&WiEl?dcvF95uh(`Y33zx%{~2n@Lsc8|HeF zgw488n+&wp-@u-zRMAs=?FqkDI-bGh$g+(ix)Ia7PYKmqnKN%ml;1BlXOIWmUvpts zd`AMY^JTH4_b1{6?W@f2tuVN%8C>!*5Y1pmuQ!Y(eEtO!hrvbIs|=PMZ({N`k6F70 zIU%2aYjAJsjHEQYOLt-5#5!Nz^Bk`dFvI(bHj;!g9xkfCirhhVzl#(se9TcbecbJi z^wso8W`?2i%vis$8m4nC5RUb(-n_!_FRu6~1dlruZ##HSU0vhIE$Cbo$03{P2mM)j zf#(Mza3sHjIDEz{ol{wd^zRiS=0W8g^QU*nG$FEPB4qVYz(%0!<<{gs6$)mGVO zUT}JUB}vQtH2Vv0lk}5V;n>+srbX9`Rb{IRh)mU%G&GOK(IeAC^@4zZt{FmRt(09_ zu|34fCDuZ|%QRbyX4IwZI;5t)ewNJus^LmN3O+iazGhR>|7lnj_ zc*DKU(z}X+R`d4;hlwz7@dcTTRBtu;+;fXN`$%+kfIrlYFW_wUAazF@%>Ttg4k3Od zR$QQy3SbJ=Fr8ejZGoy6KI#(FgE6$a4nF3?xde9vV~{t7$P^D}l9BC-#EfvAoha{T z9}_e%wlZvm=tt6&9y;`z;5&BNy4>pe+)Y~~C2DHd9&6rBcE84Sp+6<>oR{1a@6LlF zUZvoIrD!8-kC}@=v_$TQ>QT+@zK)T}CpuiECmgA5J8QbK(~@pbSx{9_Ran^)W9x?T zvFyKexBrd#Y}J(78Wkczd&6?ue8$X_2-rsX=`u-KsVYj_Hg;f;xC;w015f=yN4cs$ zS0(vR+6QhPugtZ;w!V2Klp)*Z+~-V-na`s|JwLCN z+NK3!s$=iqtUI=rqP4du=@$iI^zU8$P}UcF#V@@CMjwFZ(u{mp$|32-E^>F=ug^xL zR38fX7vRdZ%sFyr3109#CPEm%tYYmgBJ~91tpI4Kqm3su z&Ih0bdX~sp%oz8vqsP7|eAL? zGx$B)mqg+ht@2qO&QG!Vu0E1yNBVkf2f_DrqA=vtt2ajKjT_b`F$w+M4(LDtnqW~P z&5^FqmLL>|i&@1hy${|&etMpM%fFg!cv+n?!4dN;Xl$KiI7P!$hd+0Jj6#Dvm_Mb% zf)q{ZqJk9RD6^(?&{N}l=_oE4^cZW8hCK_@1Y|79Wco|$*zY+_l_u>MCl{>e?$8*? zDK>HTX8Sr!{oMO)!=w54nRxZzOr(7bvA3I-k$|Dr))Y56xU0jwJU-Zm>kt{bkD}WS z{TgaKf_&+)7WSp7Ohx{2b!n2HHSg9HVjK%iL(|c&h{EQ$ckJA&ob#!z+6KSZQ)%Ql z2E^8#Po24k5^Y^d)>Tk>nF!-wdPgv+O-m;|!t<`GSZ~OKnP2zLNW2er{%lEsSkKpp z4V2>piL0~aekc*UeTt#8w1v{VlO)GKN^z0h?LL=p>3jEu2;kpm_(7(;Sf<5nr(afo z`F^(n9MaGl^ZU>-7t4tP8|UZ~&AW%gA;?G+0vcvBHE+Z#Ou$#!f3(D_#yh#s$@t;E zy;_2k$UGKMwgvBPvDKyCmor~IKQ*mtK@!?OEZS0*iny?`&xV&tx-U{5BT3v1-vFPr zqM`XkeI>86=+HEq2fl#yqCO;8b8--~OaH-9lmMLGPqGGM4(}jADEA50Q?f?;ky`-B zSxjHOog*Tho&Bgr@Hy3ewYl<2vBB3Pr`#DyR6wzQF?VLEmwatRR2B)AN1g%HkOkHL^8nQH6^!$>y#>YQnJec#{FAP9fNs zpLx^o9Xs1?>0c$yk%IYszo)PGCV}T0jads#9GO!yOkAItNrcZ00Mdfa;1!2?)xTPx zvGW7KYgyteVwvyqgmsX)eM%FaF$dOG?2(2JaAahDhF?geysS`fcdsAz5EE*c2^-PJ z?gRtXTKYy~ipQA&I-oVEn{qntlhe2_N9_n$c~c(%Z#0E>Y^WHrh(X4tC$XGcsOvr| z++82%iJ#i_3QE8lZtpH(5HkW?3UWYh_R-_>91H;B%@U}T`A&WWRiuaSWOOH|I zLzFuCAcM0Qc&Pc!KF9`PsMrcZe&l3z&MiCEoiNv}^Ed2g0XI`fGZEuFV$-;~Pr1ID zqQZZ~dS43eyb>{9jFgJ^y<-^c6s~V&6sxzWLO)HEd^aXkpt%hx0Db#v!GN_kVs1*5 zi37WnbdYmTJfFsUCj3HB&_u0sLcHuK?NDME2s|&kd*1m}^V-B}YvVWG_xyaaUeMRe zLj@A`P#%kwE1OfccVKifM{Hrpc@cG_J1x%*AF^MLpodA_f69z(0j3WTVs^3sqPZ!T zvgWvb$M)}Ywy2dDbhMbjAAbgyhwX<349ARk#z5}vs^%09m~^vOep016QpFZY9E$1F zgT1we-&hwXVpZa|dkg+gyx_YsV;Y8IxhAnNrR~CeX*}Ex3}vjLT_`AJfQ#*T%GwdOiTQ zL?+wWo(sk~nti4`eA(cfP}e-S4}eDG#$TDj75YpgK`niE(hjhMDU^1Ldz#T+8{7w= zq{{W_uMNLsB%PFU#)165LHTl)p-Iv3H^7<3I_Z4K6jE;xzB|+2&q2p;o2GB)9g>T) zdXX#A3D9GBH2%ko&;fNIq4mZ!KBOpg3!zbCv+bvq(Jc;$$(=`K50IwQbXcS0#qa$< zQ`k^?2i~Ou~;)sEQwEeKr4aBe47BRw>d81frNFi*i z&98-{-JF-D{;vnT7RAw$ia1YIc7^<|%XQ)=83DyI`4b17DjRSluXBZ{Nsit~7Osvt zBcp}xyJ$*pFeVzytQh2@FY{k~6rx(i6cn|!>S7ww&a+p@A&$i)$68Lm@}R*yhDyf* zbr{`@V2pKV?1;ykrDV8QL}M@HTT@WtEt@GR$pYRyec1Mz4e~go93<`lL|_nb{@htT zH_|bL^rgBG>e$SNZY^vgYXjX92k$&@x^V@4`%?(p2%dV>6-DoDz^phR-PLj`+dwqi z)}tra%1QG(ww$IdtKyLQgUDxfRfP(U_!q|@o|BlABV=mNo?{ZZWYifyXy@z02HxC2 zTXhT9#_P{fDgWX4mWhhm_qlhWOC~y~;@9k%vLYV98(tmGb2I3csSsYNaGR**Z; zhWp#9ZU}l5ZRKIkJM;5)jfNH~nDqAaNyszE0WYd8jJEB7aK-T0qq2wU*ZChGn?8@` zvUrCoDd+A)n|k0eJdsQ}F&s0XD( zP`W7>7gja)D`V^xi*KRIw59){$ zLJaOn-0ge9Kl3c93LV_9F{YeE&knVg|`Yki-8TUmW&b3Wr zDv;fl+B2V+cLwdr5G^P2YzBL7<3!O7@ANR0ExoQe?-B}0)JIBr=!xl+Yr?0X%&kF* z52ZdpYU+F7-IBbhAKdxr&Moo5>O%a6r1e+zokXe9lUSb_r?DGxIXzIz$%!VvYei1m z;N4%1+zfk^o>g5f%=>@S4r9kf-n=rVk5&`zcFz_oWK%kfs)~HZyeYtHY%DylBv&a! zTXTXf-)|IcJl*fa+K?o}SjVvx+hfy9ymBupI8wqq&J5l;v`v!|P)bqk8V%I-j1BoHTN2CvlFzR`#>7sA6Xr=WpH+$7?y6hD%ftx4iEm53EP#)gdUO|9$y%^?D)LJi}_6OjM z->!X4?nKLJguR%?0&n-_yKWP)EDr!q@Ra&sF_G02mU%3KE!Z+u#h=BKPm6OvHw#?^lM>J-PRUZ3A@s0g6{4EfHTh6Mfp=O7 zfX0E`iubyvj&8dBM(}1yzrHN7N=-vhr4^Y{(a4%G6)wByq>08B`h@i>5|!&<{x&{7#_o}Pd2iOvM6~|rlWzoi zo@i6_)DfoAtg~MUlMaw75*V9yy zV4TC~ajXE;U=L1yvd_5KIOLhZ6`JNf^_GR9jiT$RtL6H2J@AD1H`z%CMiCRQ6RK;B zTmo5!)eqe`N?-HK;(#r@c|IWHA1M5gXL4B+Qf*cSQ9^Mqk$m;MQ83MG)4%Wrd(|z* z>&Ya=O)6e0Vdv%K2DCG5=^tr`DMpJCa*ysx^vHIYt$IE`nGN_d^^^2(8Fc9Dq8giL zK?<0@U%L)cn|gbSgXNcW2r8^B1aY}DI|@biWv!B5@UuvkhQP59gYKMV(o7!vgGFR^ z^jB5gn^Vi&M{7G9HbPISCPX~5Js5$_w1emQFLG)(Y{&N8yAuBg0Q*1$zaNQY!!MOP z2UE!#WL?Am079*e3U{!&(=@3f5r+*cI!M`e0O3gKj{g8!wQXRmmRC0@-)V;3U@F~; zlA!)rs(Qm1HBBPu54k^*Q;7K=l zeWU2nOv*v`!LE)p$*ZmLu|r{6F@SPFt_R`>MAj`fNS$agfagDdh+^d8j1`qDu! zn{5k@tcu^IJSiudhq*{q9ewJDh+;3J-3)b%sRjXqqGBfGEDyf>f&F# z=lTzR)l*H)q$t01lLyp(R8=3f>Rul@B}TCD9Qw}|iKZ<^+H)2+$$1Ot!DKaF7c z?DS}PUy~_b|tAum> zL(uzr9@PzY6|8wow$9Q&ms^XOAhflBa8)<3$3ooy04!D#c8W-(H3zLq zxWyn`agK(GTgr)>JqCHKY=F$amwm%8RY8iOGXQek1y7bIE!6d>F7vPexy@2ncPM4L zhJ5whdsjne2}>y^S18++P!adJ>G@Y91UiCVBU+(kVgUz{UV(DxB(>AAwV+>^bsNqz z&*VP}RT^5h2{)oN^hko+HN@?|F9d`e0X4;(OGC zNRGnT<>eqT1a$QNzlCrTdDmA$J9T3c;x)%^ar&Ctnn@7Z)p#RBw78Pm?WJ~QMpus* z+S$Ot@5l43e~NfI#35H>2!>N1bZ3g*wAXDsGp5;yV)O1LEEQYs@Nv87PJb%l{7Z9p zd8u4Yei?2gJJ>Mj4@$W2b}pto5S$V@IO*w9$cz+xtOIvF>PX`|Fc1F#s;)HhTv|bH zz->ZXJ?f<^g-msK2d0K6ims)()K^W2ZgAys)CTUx zlf)B8;r$lhPq6@AxGrBGGLGl*tGaw}+oZbP>UmN}9vlz4#B?j^o;a=^`u1Dv$*$-5 zq>-_=vZ?4RMckhvnG(*jJgvG%JKf32W14;3p=_W)xKWm4(?NzTF zyGEmsc_4P?tvz)DD|=aPV7Zz+Vko@FEzl01ncxa;k!)IQw$jXfGr{d$6{Krz;Y){O ziLYeo=!?_!tiZlizGGdiIUpPwB_X2Dp>X3io?@~o<8KR^!~tcI)xkLG2OQJoPn|b0 z!94dMRmjmqWsl#-8S2$HVwjmD~JwrzEE076e; z?_KwWV2&%f^zx-9Me_)5>sd~JWTd*CCW)sdlnFPMJt0y$k^D#4R(`AJ>$^;p)<;|i5ta4Mt?<;IZaHIG}aaH0oI+!D7^4*40cLe(4yDd#7w(}CsUnV4s z?u>Dec<0pB4-aWeB&Oov?6!zxnv2^+Rm++lkrtZ)y}bFDeZ(B@YU=E**Gji-Ygxly z$T4pZU4!ZCR(wBaZ#X*6tOQzhw-7|f1jlZ%;$P(SCIpI=`=UFNMluY`2C?DWW^ZB5f;V04IoPhWnu zVSdNp-5x7=P#ftN5vDTP^*;HpEAdXU#L9wGCCrES^JhQs0qyHsTa{hzP5L7nTe{ga zj*}aiEC^Ya!ZCcw~PR0o>$J?l1V4ut!3P}jzf+}?deaMzG6rW;Qj8I6wN_ z*VEp*(oxmyOLr_=>1(NKD;A#eNfE;qb=$Yp8uZ;K!_R3fLfu%~#|RA>9eR@0XTy2~ z8cm8214!JiM_*Px-qk0Hb+7D;VGKmI{M@SdO#c88{{U$A9lH8g1xdQj%VS8TA5%BP zTDa2J$hP^l2H`^U|pSj)5K5iYK_Tw6+hXn9M6788b=U#(R638;n(>w^7@<$#`}a@iqLn z7boRHGBew-0=F;qJ@ZSXcyZD-i8Fb6f7QT)uhjZ`^yahtX{VnIvC*{Yp4Z8YCCs3P z^O*J6M>y^N70tml$kX7`B8$p_dlSnbs#i33c>xbNzHs(%%0 zk?3*#hQNunIS0H!sV9kB3O7dK@5Mw8C2e>|``Bl4XWz+M2sXIOMpOX#BljwbYO=s$tNp$MT zZxjuKxsyLP*Zlo!dQn!icJ5~;_hk)E`dgOSoskZaspIkWs5ILLyO6wuM{JzDjnGzw zmYODs?rxvTw2PN>-`INAcC)MfsYSJ#c{WMWJGZ(201D|{qGcy-#J$v!VryMI7~uXV z=+E``toY)}nI+*ndzzNk*fJTWIEjBYK7ymVm8FxA02~D!g<45yL)TU{rDE#9E*GNX zBl4?umJ;1CZKviuDvnRn+O@nf;n%-qn&C)?_*eVi{c7nho(U35Ei9E}Aug{~M%YxG z6;s^$o`83(rCD=w#I;XLvz3ERo;#CmXv=XaU|6Wir=UKk{hE_jvWrP$_W4c5p#1q+ z`=9ThUtwJiv#!|qdfjyY01k*=@GjT6L%CzmTpsLuxAGiUpUE@4jPAvxW0rDqNvel5 zwR#~*rLeQkWqr-b$4hKII%?OvCIuLXEn%97f+1BSD=;@!cfIV!rxHv?M1I57zn6bXsVm8X zdLjN}$uHUMR5ahj$L_`tbMNRo{VI8EqPDe>S98e!05iz^vz&E5;m}rvjjVQ-;y8u| zcM?uZ9^{_pp}T$TSG7+zx&^LreiGCk4KjO6WbX`F^#W7rdBDW{z!a+GX(8jz0XEyqEpwJ3;+HtcyZCNAXHYP;R$L%O*Mq z*>^;Ouo{{VqM=~X@r*qJB4zmYMt2vqx?PxP*uX{fm} zXVBC5i*x(yTTnpS42(X!3gfn%XVccUd{cAw&k$WdJ5{zX&{ljA`HT=?9(quogIf|r zq%Q1ZHEPpT7WXKU5rBSE=~1`Jq<{MB68(3~yGaLd1o}}MNs37IO)mO9T|Ak;*QnZ( zbp(1JQTmF0u@~6kF(|=B&OJ%#TwjE4&8Da1O5~!x0sL#Zl1MM5lg)DS^#t?-x9M3{ z(?lq%98Q-0XNYXH{{SssNl%+Aw;>`>OL6LPfNQa0WpXSoRMb|oDLpPWEERmhV|8q9-;m?61GQAt0b~fIXRZ%%S_q86 z%Bd=&Cj;(}TFaanC1xD+fmtz?Q2_*>r8VO7WKb|j>sIdBEp7K4d4zWEYL=Ng$iz3^ zV@<6t37sE??NtodPE;kbZy@(Qhv!%Hi(w@4-OGT)Wy$^_+!}{Wj!A5`NZ-3=$Qwr( z@1C_Mh_2U4@a(uCNh07Jb^ic7RH!N0bRRQDFN`m&bw3iDtvyyddk91UqZki64&(ii zfKRPwX?Ajbs^nXSKnkhnJ9E{K`=clFtovIQ)AZGerQXDOvM@aPjDNzmu3Z?JG0q6bHQD%6PtCNlwn%UlaoARJE1|8WMHDu7cVsY~hWQwD+)oOi zdz$L5Adp$XVHQM^D3VO}9f#EQ{Hl$m)vlhl(0OIa`J7;Nr|I#1r&W8K*55WqB#@)4yDeRnwzFFZyivX=+_Ttoe1{eOgen&S0Hq}MgrEh0=<#f*W| zXyI4%tvzb|eV*$1NiT4!B1~gsU-HcdxjAF?sGu+5{Q_IdrVo24>fKq-Pso2N7P@!* zfXMN-qJf5)Xg_lR%z;PVWBwJ$u2r`a@(w<=Az5!Pe6KJDbCzOy_cYj)nO-~-7(cCB z&`Av-5(^F+80L|oCV0_K7_Lb^`K?VePnP!Y$z7@y3zGc+139X3110_tkgjk)l`di1 zxo+}#X&zMd|pSs4jcvZ5P7V>zHDHT zoL5bYT`tb%{`Iy;3T}7fEyqDxnr))RZMddpm~BNP?yq+Kf~Z(n4;FZxA&Eoj8f2h1 z_iipnIQLZQeefx$*jKr;;7tNK?{54_szlHkP;FUHFk6B0r?WNzZ@^X;jC@D^r+X%& zGXDUe+mjuf2cw_w5nKNN5jEKD_TC&SOzx0-txOHd;XQv z+Gzg(Xu3-#D4J!miD#2J4eWoyv+OM=0U%Z_s9kd;hxiw{Kj+f5b@?sy-5}}F$YQjN zZn<^p-r4^EJk+Io-}>?f`w6J(>w9@^9i6wG2J;1-u^96Y@j3R#B-eMO+gW%!M14l{ zYu(Ius2mv__a5G!gX>)PfV8BvwV%X#>WD4lk8E*~_ahx69_Oj`Ja(+jdtH}OxouZa zAr*;BJ9EfU{o*TF>F+;~JqSEYtlTrraWsJH6OM3y)S>rL=Md`q;&@mu_T|)3j5Zxo3wmJb`q2b>QN2c3= ziW*ipXCssJs{RM?ylZUo-YF7JgkW${PxY@+&~#xkF}oriKFxC^%y|e0O#c9Q{{SlG zsV{2zR>iM(UZ+2IrhS{k*BYD7w$WPr@UsoVX-7oc{7as`zlC{KwZ+M4wOwTqu4a&! z!k!8B9qY95r-+lpnyVy7$kD7u*r8sy^~b5jd4{Q~o6DDXQn7)E^U_yr=~*ss^00=<`BvjJ5c#upmoXV#!tD; zbQjZorQ%hDMPmTl6bZml{{ZXj+}19!c@>4DUR(h3wo(|+0ndN<2=D9D*0~*7Ri7+2 zHi}VNl=Tk~E`?@ei04tbP*f3;ih3XL9s2afd8=TyN^WmYn|CW0RO&%J$@TR#mbQi7 zT~kzdY2+o>=D{EBXVmlqwNjABy!kQtV4f5oyX-$2>!%2)@-LYUz1bzy&odX4f_*z< z&{XVobf=NVTc&bubnfe7h))V~u$HPrYSY*hua?#BHGC0CLCBR<@Np&O|A| z9I@=9)}YjHTu!0_V)D<*>%&&?Z9ZEW$}#wi`>BkdDxI;8iaje=!`>g8P*$0j2nWfL zoz4Cg9)YDvsorjo5dxgMdiz(PUl}z204qzw?a=ndT9jj*RoFS#G*t!4O+QMa+O8cvV`!UiO9{9dEq{Qeg;o4B-%Ijpqu zS+Yda9$H5|bN+voaTgPo7$11#G5&&`C@E{uChS&b$v6NHYGrO|_IB1#3(Z*z1OBSt zp^*BYYOgk%JeSfys*578n9+hhPWye&PAh(N%v@QW0&kU9X>5=-uT$(RtuR{Xx6vdH zvQIb#fI0F3{saEjdYa9%i0OVyGb(BmkKKpq0-xeO=eMU?n!?P>zUKB-`!po5anX;j zzqLf&{R@h*+LYfu{+~Ya^glQCHE*HF=~e6qlEU6l2`w7_Aap;KT#a%_VT^SKyvL!| zW9TEwmr%7_gB8gjdoTvB-C{@E{5aS@uj^E;0E5K$>P`&Mq@#}c!L12L%nmV%(oJ(; zxe?f(;jOt{0}MfRoJ4|WpxN##NiTV` zHKMWQ-Z8XQ_=#W(vcq?7QNo;W03Ve59CKT*&O+d4u>Mt(@j6itigXDhQMM^|Gv~QI z2hy~8h!#y^R_ zpdCrwT@rGQCwZ<(ZHMHw^v~E4yT{G zo}TBoYV2*TRyK(iX z<%4(30m2jS?#YdZ8tw2{6(xvq%-UVHYejXon6i}jRYjqoIZ zdf|YrxYwRX>04CYHcTFYxxE&Ov9Nmnf{L4t{bN zE1=eGblZ7s-rg{<+4+}A&T)h!lk3SrQ%X156$cDRQTW$C;~T&<&1yKK+2yQSWMm(_ z&fA>+SQSZJchuswIZe02@>riYQM(0?OseKX`nvvA+xQM4rT7tUTy1$(=Rc1F`Bw$w zqQ&$rCNff0Zh(F@g{6kN)V|Q@CW)BK_El9TNaMk5 z4#(5f)GvA6jqPK!wX=&%vbC|a43WT@^gEpHZ2n+=6*{kR_|$gyG2gG+p^!+DlEH_5 zYRaz_liuJ#DJdHqkVwY|6;3#TBL=Qtg)D+KAY&vGoSLqf+Sns2){B>U-41InFzQO5-Wpz*<0~ zmM0bK+9VeC+Bujafe;Eg_VoJKp6HfF;_$WxGhLR?GC-L-Bjk@-N?W!mE9hN_Ti!jp zENv9QesX_{=~p$_Ry!~3Wi{S3Kcp6cMtu}JG14WULrW;hM>QP1I6zBj%pC9a`z2mdEcIagR@Wx2|ayb{8(U2*F435mITkMtwz5IS84^^cS7D>r+uJS8(h(7nH%ljFQO~p%bilyP2 zf8RD_nnoGi=bTp|azxVw$iY49Ut5Z3#!1cwNcA<3Zy^Ds0|bqOBe|}5Nx2q`;~|#d zqMivLA8PD;C#Q(gO-AiLL>P^IO=b9hO8(HkSc-r$cQEV+di0xpIU=~;#5IMIf*L+U zF&$61{&e@)E|9k0@hZ1li;tU8yltqypZ#I{>JJWSa(J^`MTqXOwU=>_^0LZ0x4N%y zR{B9-_CYL5~wB^bArRujt8kV+iDX>;Li?QXj)#>)$d~ij(mu*)c(JT zCbWuHw@>Ty7oSrr#d_qLuAx1PY+V~lZM&i2W?{$YTrQ(~CDiiEAsk>L4vM{itu038 zC}B%T4q=Oud$V^YxheG&aU(d|!0aQgTd=5`djd4{`+2ns_@IDpF55`Q73lETL1PKD zwnAb-x^`Z!dnoptETrT4`2NX72HKOzYKSKh?jN z)|^$9*q-)B2k{qJe-K_Rq*5QS+cCjWfbHCmVbFVX-ngr6H~l!H$i^@?5Thjj0EKjy zR>A@iWR6l)H^|&_I(#gL;n3b^_9_QETS-u<4=hZa`0Y(q~YOCP= z2w2($ZDQ~M`2PTwYyIEz?_L$+E3pg`TSLt9HtUD&ll&vvj$T#Dw-xWJGIgCm$r{^O zuG?r>vPeGkhr1L0cooZCr+fkk>+f1OGVK5!=aL8MS<_0)paFmeF^;vt2Q6e-ElOvfL2&5wKD^?C<&3SAzUGCZlvNr$!c$9;f)*(!E~Z+8YaF zdpwB*F=j{kMi_hjKU2kXVk)`6XCIkRic6W4bx7=VogwDb+yr6D=M2P-6nl~R4t*=m z2$xm5Z9?_RY0#$2c$jh&bQ$hHQ&)9s>z@_sQrs+Z8w-9C5Ju+b^(U!6{c6hAul&hH zwYGei$r#2r8c~NYxgVPwdfk;Z8<)70vv8RCQ?RKtOBpY&z(plgfzvrYf~(rZZf^u2 z;khAz$Wl9>YVP!lG_|r><0d%}5{$il$@ett)%Gy7cN`j(H^4d*Pib9WLCx&I2m>lSobidIMcGD*Gt;vna;z$Zec&;p;8Z+lfm)%Se@f z*17)o)2XIi&iYNP(oHX!sNMYc6MuAe1JGlj^yj#(J6N9TY*-L(Td8Ir-2{$%^sEcX-&oa*lgAt;P6pA8V1B3hn$(UfgA&=naAuL;%S9|( z%2n&_jGi&xoR*dpdzI1&^}SYmi?`}a&mrIsYPlW4YC5&Oj4D>e0}OQC!Q|1aOBSDE zEG>TT{IqfWZRwv+^XXZ79nY7qSQ36;HA55MJbql!td;)YdLEx`5{RQzA1D9-J5s{A zc?W&Oesyn8k1&9Gu1DoejWKg3JK)!r_cpngcORFm!v6sC(iUI)HXGplF4ZnUVj=4LoepywIu*be8g6-&pEdEOYi{{Uq}{$Kv8 zo5P!~^qVWmRD}_#i4Sv(7eB~*bKZ+51m8h@qI*krSsHtQ1oAG>y+lj>(eK=z=jbYE zV`Cs(WHv|U4O&#+{Y_5s)Vu zm&(`tNd|aX6^H%y!}`~C<|HvZlRBhmH#0H7P(4j;Szbg%=sqMJ&0y-fythv!j)GSz zcF%f7Qa@0?-fz%RESEkYC1Nt#X(y|XmRphS{nY(WwOv~{tzuXpjbnvI6;xmWOGqy; z+~jnt81(NKyh!rDpJMFKBW`A3z~?`OYhP*!Ya-i06J1})%3Go5{pLTyzUH$v)V%)y zgwsunPL(2>Yk3emuHc}9xPj}Ap7qk{+HJOx369(}lgM*5#D^~-_ce01l94N_Mjp=- z{{YV|C;s|sE2iD;MNdDH`-g8cptOt`;aqT;m9ywNR{^iH+()C^1N+O{$*)*-&pQ+K zuKIbJJu6bZ+l5Gqr?(Zu%mR4s2%82yBE}%z#Zb!Ms?tkSM02QvTKKq8erRF2+C2h9 zFhBGf?!F-s@mnY(x*uJU-p;L{{WwQ)3u%}yLFZWls>!=dxAR=Q>yWd zVxV{y7ipp)OaB0@7~zjh{e9^+*ogzB#9mamQlR;7>Fj;0HslmW7{ea5X&Y(Ds`n@D z1f~?C;1U>a1m_tCw+EVUU|JPy({q4%C)3ut2y7rRs!JFzg2V!OHDAM)IKNc6z>RXp zJ%wp$@vN6j$Ouf57dgQ6ta(eh%lt)_JvT(Rw6a2%S56{Qr;sz(`O^4e_U78~+Ai5F zTMBLEY^&#nJoIk)6`SG-zqPz}6nxh93Df=K3P3}ZuNInoZf1a&e_ABKAi{YP^ylDoYQtlXr9S8 zVS0}BB#0VlknRDSoOTsz7gH*gU5cm%KMHgZH1|Upz&&d=#%yT<-p=hJhDDfd`@j%C zU(UMwn!H&~_0P0O{S+&lu;s%Zx1Tiy@ zFXhf70|KV@R%lkcxo1}^6{W78t@5|;XZ6^<0s5NH(q(JiVbm4-I)G%z$laWdy)lYr zpeKgoQ@Oiv#%Vm5Kx~bP#z)n&`Bd@)rfBm?0s%XZm2;E4{{V$*m-XmFIj8LMtF$v*vMnL58QtAzsRh5Y>0XXh!s`z=~X>abu7JlyK^uo2Cf#s(O>jAVW)}tx9d@n+H&!u&K8L$!JVw<-f0j^aWo9(HoXJ*R`Q7WG) zK+6tg~tVHMK95VPwIuu-Yki$MHGq`3^rC zG$x0`DJH4nC1~2@{h~>6k>(NdL+!P2IqpqqWqS#CB=~`;{{UrZ@o3hp1>MT-pKtJ| zp!~7)6~bF$M~ytNk*bZUoZ}r%efrg#`Y#8v*^f%yaxJYSxgd!qU9qU@vGxP&*0~!S7x6!f(%dflYX=Q0 z-z2&IxhlSN1z?EskJhkm=V@L^BtJ89M@&^t zR?tf29Zu{=5oXSFfl+8$AlCJZ7h*&(xRzpi5IW|geb?@(97aYX{`o$&-)OpWXto9k zK4&A$n2!1ApNXuZ^(pDGtEk^u={6GT7a@cwn<0xhE_)#Q^(U~+c@6!{`mUip%4VtuM)LM8}DKtbm|;QMk*g9;(M-B&CY-ARIph3m(7Xepkq6r5Pxo_GC&;wi z7N91cP>_s5hxp$g)BI~6!?vj{+&*{ip#bia z_+uT|p5BArvHl}?f*oH_TMG#Q(rkt|FWqDQf6p}$)82cH>Tv!h)-EpZZnbO6f-WWI z2=?b7^(WH$$HgVc2ZGs_?0RDdU z#rXSHn^?Y08%@vIk@m|X{nlVQeFy4!uB*pdt9WxmFhzlVINCOxkVxkT^!)v+&h*&L zos9C94|H4igmbaI57YV92{0OE)Cfz27@QZ@M?fmYWoG`Hx@AisQ%9UeRA$ zBWg1DbU1$$Y4Fc9j@x{&er~|y{N}g~TTwF>NU*SU109D$^{%7Fnxf%s<6=o%$ljy> z0I%2bu1`#}ZBJ2-1jt^lanXC%Rt}%CrFpX|lIE3>wct$@-CX^qOaiCm9e$@3*H3K? z_3POTCY@;BWz>g|?l}s5K<+)j?@Lq*J-)S@_wq+xxHaDt zlF-Y|kp*5yIjh!Dla>nWAUW5gLzd0C)d>1Nuq4hgqoe-$RQ>eB4Pfr zUik;810RVMGoM5>jGqu`@M&fX6#`8_=4s{5S`{PZj~$LW){d8EmKJ-9tan!kOO`nD zVjtJ9>*y&wJEoicO5*~c@3scdZ?;#C8M zY~_zYJDTW?qa94%toE%x=7L7g%EU1C1Or5gw&WajU+Yom3Pqd>K?BNO4_*cb=~Lbz zH!9$qMugyclaJ|MQ`Oww#z%?rx@$Ue%IPQ21{tg9p~yk^RPH|KwO7^RGuT}xKQv6g zrfSBT1KZm$B<_t)e*r>%=&V!KqF=UX(z4}N?{DU(`r^81&=eRQs|Q~~mN3Xh1XpoB zeLie|TIu3UCpq`_Bhj2Ei)wra$0k{A)z70X@;V6afJ4X=Yd4 zkwuR+hDjqLHTB1H=s%#VQm9OAP|`8^RP@KG_8+fGk_goUXC;ZtG5#a!YcyAxNn^;dfk&;Neb3;hO7PsQ}>C)n#pniX}`bJPLy8#yA~m>A}Z(WY{sD*sOXKa(bI> z@y~}}KX^!oKH&cVjddgj0Oy+JHPREr-Wivm`$V7w3ovYR_wFoA6hE6 zo_#2(v1d`Kz*j}I)7eVB&CGEyK83+Qpf%<<7mX}_Hr4q3;gTdj?>fdmK-KCVA(X)- ztg;;ao*Rp%C;gbn2lHWGJ%9d*@Y3BR2h6{`QrY7n6uJFm6>#{hyuZvo&CaXfou`wb z-`+3-%$sOF%0K$`n>@x_>E$Oo+_&ppSA*ahU&BZwZ;;6oNzeO7kLg^BDGoEoH0wLN zikYJhL00R5im88%!*?UUwOhAfW8~wXN~L~5C;U6sD{{&@d_k|&@X8KGE3LDYUg|_( zst5=P;~eu`{{V%dGF`i{;RZ%)qm50zfvDUA`^ltO)Z?HTCm)cip7s(spAlX(_j0@$ zSr`!+>wb*YZ5(GEH)ALDCb(@PA$j6$J`lP6=1zKGSENkdWbXX~ zF*LST6A%C~fsQ%mtKO;d_Je|Xt6_0fZjN6Au%f~%pyQr+>sT7aiM*6FPqnzo#cxgW z#Owz_S@6Wi<~{foGQP-bxw)l9aTbRy-13t+1 z%%_k&>qg~vTWPjP#O+fnk4*Ia1!a6j)@IT?GHvV|ZPnox&BTT>s<$iZG@R}Gn1OYAQr;+Jq>pnEx5L`8?m0eQjV;b zv2`9*l0}5=4222DttO=;x@L+##0b(+wjy&Z(%L;%fs%Ov)LCo{^NV1cRqrucy~*;@cx#F_!46cj->WcS|$%Z>wV72BT>R1 zx)1fO>BE&>?qfM~J1vY0Bx#E!s;j24s zA4i_*Ova3c;zo1CU~)dZS1cy^thP3BR@C3KwHMmGwTlqxZ;Pvu{pZifr|R6FVO;l* zwLk5>aWrdrb7^io%ZAQD$2|V0@f6*6T#Lc}1HaWSC)=s&vKC#~45i1*$8E9W@oMl} zj~d_ETD(^GEH7?xB+gfH3)NRYsji48CAR+nkfg1rW7;L085T?sq=2K)3h49&U7O_@ zc~0^Vr$9d}*N5qTKUea9we8vz=(C{t8y=&zdR~>{Z8`1QXyuLKjudBPY?&L8wMTQ) z=|fI0QZ1pU<2##JzIB2&xMVTM$2jSqr=>T;+G^X_q%sehMe`>0+v)i9{Oc=15_pGL zd+YSuZyz`ZgdK%+_Y$?Ohn&iM%c&SHMmSyo1Jbk7PU~Wqx~y~hmaV5xs<+yun`|-& zV@OXjPC>$s*d5PqO)}xfgS;A$SmpIg@?wPN=OvC_LVq0R+*N-MY0&DPCAho;78WJZ zTeC_304-nnApZb?RzcL8#2zHO)+8CSwEqA{vP^Js{8;?Y z=0YQfl>?z;(0+Bl<9$ro>1k^Vf2Q6y{0S4gemy@rb)}+cx>#aWe3;r++<%K5eege8 z;jiwE&Y>;KxRY{#haYu&4ttLN`KnIKQ9WJJPVUxQVz9hytW`>`I)l==y+-APn2#rJ zRONf;n!BxP1{5Jr?;9X}D;gJh6;U(u<2-h)p&KiSvva~aQ|j7;Ve(L5wR=XDY>RCL zyC{Z4Bn9;Yy>k8q(^k_@NkGJoGt<}n{*~%}7`KfUYyCrK*{xU2k=P9J&{l5qko<~% zGP*h+hU3z0@VbtqzrFtercjQ@{P#8Fn(fqfa3!6-6$b|$&#i9wuUMZ@ySdcoa+6GR z5Co*F$_jPJ!`)Y9XYy~&wCpl5n&#^WC+gbd9PschNB*xr>T_Ws_&2!)SiR$ z^Ht7y2NR)#bg`!Q#cGg z*x>yD_pdg(xsnLwxoK40TozcFPIjhn(hslQ9>ALJ{wLiUO$)JN$JcspF_Q~&CB(3O6?sSmY zNHp7%IaaxvDH>9}Gq->}fB+Bvy>UMZWl^EsLP0GR%=G$i}q4|un7LOOW|T#?sh>k4?^dbZl8ek6pe&je;4zq3k(6$s>wJF zj-+?2tzn!VqCB6BAoLU26ZQSq{{ULL7Jhi|T(-Y@kMUbdDC*KIK1_fd?Ijps`}186 zNg$pxT2=cb$EiP<2Vc^w+&TG);10fkR5w>qTB5Y9a!%DyGR}Pf9ZgkRd2gIPprIko zQr9^i#m{r?)9YEK)s)%K_=4z9ccDuha+sF+aXv7O$osv|*QIr`$C(>~Ij(cZGsc>B zm~a7(@ee;*)|UEPsbotGYz)BMu*wd9fPWX)r`ENSycLOCvfq+_yni|>huG!+0HBTc z{q(=#MQ8IbQ={?i_%}CEtgf-arbzP$n+!ubs9&My@~&0wt}i3g?3vzu)=#xbUq+a27n-Rj0o5ORA8|qoch;4;atgXfMA!94z;c0Y0s5y3Z7k={{W>_x{#I3 z-vimd_SMbIs8wNrmC5Q@;1T)PT`R0{GfBH*jFO9!f#^HeJK!zTTWc4rODva5YY{o& zBV3$*Cc2pTBO;qtdV_Zqh52?8%YlMd1o7N%i@c-*q(1sSNG@rrvW{zlM;Cg=rFh38Ns1{xi~j)E%{1*BkEy?+SRGd6 z#KfR6ux3HX;~Dz%TMebzTyPm@ z%4vF=$7)1K%`S56T=UORJ#ke{rK{>pleUJ9)Dl`Y$rY7B`IPm|K=$5hd5W!qaCqoz zdrsD2zY7KWhvR~N^8F9=s}t#$QQFP+Ig)EO!ReB}g=pd1V>K&i_cQ^e{`D%b*{{RUiYJus-Da+kR61iidulvC;JRg+5o*6~CZOn=dA;!@+UJx}x%*5AsL&mFb6AVzkabfOCS zzJinJg|?ZQjJE@Gjs||}ueZ7NsnSQ8@D30hBCj6R1a^f7&UUEj-!+}9YBF1q93Omf z)2F>`-I0~9^ef&^aXqZ&KoHF4Bv5ihYI#42s5f~Q;Z<_j+s{g5PS-aKa(01?dJ1LJ z0H++P@IB3QP3d!Zqp0xb?=*m31B(CLI~1 zn<76vuqU|1c~6a|ZC}KK*h;=#sN7VXZgbBcpr=xNw3A||8_k-(4q$7$XIY&27RqF9 zdG;TjX?V9+n)ZDo!j|e9_Wnec<*|Ua>T+}SAP>&1cppt`O&lzs#`iM$vgi0?UZ0uC z{40|1e78Oz@s6+J3vxD3D_YyJ8QX54uO68^{uP}B{hiGvZeun4CI0{k7OM9bcNeo; z2Ysu2T#~DviVoB9Q6` z`c*XTWD29|CxmRwdM%_^7!Nx6^O4XX{{S8;w~B9Po@QG>9`Z*P_R4tzN8o-6GRNsr z#|_PylvvAzlm#)rAb@j^rBv|z-(uHpFZJnyL2ns0@r5LrABi0C{oV($HO`>pqc!GD z+>6BJyftra;k_-=Wz->9*mAN)2L+V(+({%JO${;JzOhp*-Q=+v$=E)-?+lj>?_)wI}mxs9q$5Sm5XBPVjYsmh9cgyM#w- zulJj^Q@)C8i}bdTd2U-DKOcp9UZ1DKr)jVP%MzlJ&UfibedHtra_bOwRcHwt!Q-O-R;vGxR)oyRM#~~8pILO?lHQ`Qw z&sxEdnPPjH2{O(|&Hx>I3hIngTA^$#w+8lUW|^7WuRZHy!WvP()Z;?GE`DR^1!HNE z`SS>)7+mw7_3M5M(Nf;U459Ztp~lmL^rcy}tbrX}m7>EONUC=n1yTA6)A7yBc9u4N z8isAN9k(~Q?mHuJ zF&I$3fcp#z#kCmQxc4zULw1)kK3&xme(VAFv0PpC!ZPh*6ch7fl6_A#&|F0&_4IIC zb?7oP`d2@$X>V&YBNW-Y3O5Ynp0#wXdodZ1gCzT5B#qtp!1S+1_r`ENNIYo--v7oc*(oJ_5byY$NNHLZ_caLMuWlGH~oD$6K$?i^R zCAykrD`@xIsX8@M--j{n%_aUyVq}Gc6cM(Y>OK(G7<8YAaTzpKGo-%=AietQ%@t8 zl4mSf_va_`Kgx=5yYval$ftiSQ%ubXlgj`ESH?gC+N;J3GN>SA=sqzNI|Zx06g=(|eK;TN`qC0=iq*TTc(c zYZz6M?+)N~5ibb8k6OZ5INVN7agRaut_1Gfnbm768lD2Uczi(}yt2sNdN2W-AY%r- zFH;*~b^|1G2fcWgg>S*}&Yt_fcjozH=s^|j+T(e4$EJ4-eswjY%c(JUdK}&Rmaz(? zhm>Grwtv88sA%Y0Qn}OCA}rQanohxiRlJlZ>|%Q{@Fj)wPdGsb&EFHAwTU7D~j-&3w?XVR^)xl)o;yD_*X%wUVWa~ zOl#&&$82$fg6w(^@jZr3aoRtbXX6hM!F6!5&mu!9bzPvIbAjp4)|_6C&_`!;akTus z$2jd+8lIyemF(;r7dXVTVTH3n3Z#di8pqk`; z;7`jRyPxPetPdVHnA%f^U`5zmsli<1q3vBAy}Da3l?sGFe?Q08wQX|6vTdsp&dfzA znrHK_ir~t_7#@m0gnJ6Pf!3P5AAD1Yz|XB^cHPEv9x#n0w6WfykY2_Z9^mnVT`bXs za;g9dZ~*KDbDl9c(Tkt?XK@pMstOUefr#^`--dj zR%#END92jnp0Z`dS|hqC9dIi?S=tF!NXQI2WCA~0)W$Q?uyr5{;N)l1(wr8e=yi6o zi7qXrNYM<8WIkF2$;W&SYPX1Gd#za#1u__hz&%)Yt9~9>Cz90+?6Jm-?(u-dKvGUY z`d2qK=Aj&teS$X^*Apyp5;+XV?+?t;Yr7!nbF=VuiPL;1rrTVjrNhS84!jMoBNpTz zY*xw+!=*m)3SBg9&derHa0WB_P=f}vdb^p8oZ=?;;P>n|$Pu3ND4^lSDDsU9zat&NOB0e! zIinW3U6r^PBxHg9ed^>etT65*@-hMHO>Y%rCdS`Lk;Y_s7CemP_x8nbx`or+U%NRt z0~yVB_seZ^g5K;pe7O#%u4|pV@Vu)imd;T;eLyD$rlORVgQn8l&xMr;0l3G_&N%d~ z8!JfUL3w-f*v5WU?i)VfZL?Ie=kp-V_X-WYPx|Z?!@Vvo8^c!2kV_*V*it0U(dsgCef!rV<9nCZJ|t;cO2#C$(_u49k&)&< z-3RD7#d|h|Xf3SZhzt~7ezoY+hN*Tr>PaQ)I?%y)8EbhJ$Q-XmU#L8at#J-m04q;W zwt`>`k%HiG)BBt}kld)G0k$afG=Q~G*Wb8t4OKIg4@?}<*$N@&L$uzxXJ zn26aXjp)0(GS`MyZBJ82o>?YXIUC71`hJzA@f%lrJt3?i+#2YJ-PfpIt@-djI@9na zqFPuv3%Yp+$_VM2^M4uYPkXN1$js&#{{V9t>Ih!^dYqreqMnHwwW)=3cF$zC0yGf$ zfyvr8ZUYDA>yK)seJmlH$lTEkge}28gYP3^ITrS5lbE5I|1^jKK1SpNA?>ZGZ`v}3;e5w_<5yy6WvVil7K=hMB9~*Q-j~q zyW87uw_QbQ&SJKSP0Z}48&!E;exvlRdA?~}WIjB&eLq6dd^Z^)>h%4t_Z>p@0RI4< z)#m!$+}AP%RwC9Msv!HLp2O=_V7|M#mj3`()Nd!cl2T%c<{-A;u01LXtA$Hv5~*A! zdF$+I9X&CE%!c6GA z4Pqk(^;32q%O#HrJw+4-csNQv~aK{XBym5~))L^kbzPK14g>m|j^7mk=2aNkxl(m(?nYUMdWURd4 z4Cg^=>8Y7j>_0uN}gjnnH};lpmoXmR~4dKjYCq7 zJ-i{@euBLo8&9_0+i6gPzWu^VSEz+~e0_fJ{0g{nQs!!(%-Wi=xzu=KfA~iH1*`b3 zbP-=_BgwK;)-+&t0rX#+{smq&;#s7z(c!Xl`}^XzvyS0#e5F5zTmA$q)_yMCMRBZY z-WpfgWu`=CyW96i8>IY(6n$&LHN8qrPgJ_RmjS18asAQQ51_!ViZQ#noaLcJWsk}! z%<_|l$S1EIX^O>p2bxmM{GM}NW(NNNgS6(p)Z)k?3vAzx0q%3`GHapL44SU8rVDpl za^6aE2->}e(Q){ix1q-_jp1qT6ayr?U_>K=?aLGNUOyV^{u20Z2A1z#)W`Y_inPv8 z-EF*|&9FZT^XF3XZ|*vy8zYhUlXBWsm4}DnB_xeS&Co-PyAPF5(0@Af2^(`0T^EY= zo1H_%7uu6b%RR)d*;B{|x8;Fc-F4B8qKqm#y9IRK2D6TRQ_P%x?FKsjXY&4a&8W$) z+6WGj;rU#Dt(62I`ZEl<{J5g4_j!AYn!CAoQPr&PE~Jp$L=c=P-O)!%&DJlit@PJ6 zvZG5U$TprpJx}Fa?1|g?3aL5E;BW^O5u+4oDYT0^G{)apvXmTbog4KP^d6}<+F^uu zF$X_i@+;>AZH%lt9M{m6puMzGmdKJMW%e6-e>%?>9T2H*ML62-GgT~z8q7`5HL(Z& z0{;O0m0EW)Natx7C3)}1TFAC`8r`hTC+=M(i4z0xH)2+PU6>IV_ zUnejyPUVVq`c}8*xfZd#W~M@J~gm*XnW;Y%LxHm&NXMxE1Y1D zehqf*E))*gu0H(Z#g_;B)={6y@lGFZc-U56C2*nGM~$4~%0NIH$ESPtDhwt#^E>DS`y^?nhYE;3vDc@c#fmYJ{!^M~xJ} zhOdf@g(}A$%qylRv3?7u zov!M4N3r@$8Dm^; zGgrHF*~lK%UOr?8&}TGVo%eIUA2XBs(#Ae+ovV^svrUzU$$&WOYZCM^V~p+kR=vZO z1J}J}tgP21INCp2sCOjj{2O6xG@VlBNzlq*Xp$yVoVGd7(v5oB)ZghU6Bi9~p+cqs z2ZBi*F^-+{TfQ8%RM6P$8IbyQy#b;^@n95eO zv1wh{l1a`_ddr<&V*45}!1a9Nr?nE;Be~Do=vLP^it_F)xNs|^@dlqP_t3*b9p7j z^m9GKBcGWg34k%s{KRwhtV1Zb(_O=Db{iDqKQnRLpIWoxkZ$~Ce>iL{t-LnN^*=Lz zIw7z(w_1I&%+Sd0?v4g<%7+>D=B``VOH-He9kj2n7^0E_sH+-*GV!%>&!>J3TGDjg zU(0KYNJ}hW7TD^3nHjFjRGwAwm9>?-Y>F6$Msc|9$tTp;PvH;W==zIF#z#oOQvBfO zwrXtT?3mn?R;LRU+^E7WLKnB0uzqF0Z>4GJfW6X%>7Hw<)f(98_CoR$nVAlEdSs40 zD<;+(D5q0tFP6vnB;|hsKdouWIO{D;`J(hjwae~UApix>%mC^INqsNbG@FSB03id8 z=Zc8N{{U%@M#ju=LC8NtPCX$vr_H+;WMSzL33Ur-+>@~GBR}2d zy8SXRn#2~ixc~spM;w#wSe_lUA8L6wgD3j3m^og0=chH&_)&b_V^q0r5+>R7#|Qe- zOWqrP>9=xWS$z4I?u;t>^V*pVGR~%HGlDXs9R*XjLwM$Uj#0kiV;CK)TkU~u;(=Fm zhbKLN_x7#PlUfy9i-M}Bl~L2{Pc0R!K6Tq{UdlSLqfon#PEv9txgcS4!q+){sC~5o zbS7V}1x)HFEk_7BF`CY^aeUrgz9NZFBh-76;Uoi+$^QV?q+5Nj^AbVl<>Z>& zlM&h|Sw3ufaroCGlbgJa?4hDKPaC?Wg}tgdVB4l6>%jd5YIr8c`!ho~7hflsrgkJ_ z2nA$nOuCUW^i5p3>!V<@hepC7eHI*pyRBd$7(q9T) z&THX3a_U;;{b z+e;$+(nPGM7|1;2dt$vJHOh>RmFUrqoZVT;T33~bE-#>Svn(XWb~q|e_}4w-TY(0Z z6|s>6e^FO7y>j_bs!qEh1cJv01GP(e3Pywi#@&y~-^Cg9`c_r#nMHo` zGUSob{l~wxa^0tMdnS&y)5h@1!X`%9j&ecg>D*StSJqd-KF=y|#^SmDoomT#ZKM(i zfXtIH3I|&D*U~Lvg2vUNUG`B05)K$Qau3v+(i4=lB2bDj^(g$ZP>xh%@vlC(hx&mWCACh2^r$TCPr81(5> z?WS@eA1)Mv#fMNafPF_5z2Ms!ul4xkkyBtEaK;Y=@IU(1y#3p-N3D2IOrFb6Pb?!2 z0z^3Zk6vk>D!-FY@U`9u7kaGTLT%>}F9)Ab@vWF+XswpqjF%e+`^TxSN5nG6s(7|o zfX$YXZc`cKcXRpw04nF%0(WOKug?^4+gQQ8EGjZ~<0SRSHHoRE)RuEJ8;FbnpFltT zb<}u*BK8to&oaw2ilnd~cav4#0Um@QQ~Sw6jy>2CX{Tm8o_BGmU&yIxb33#Va3ehc zAJ6fwo59vgd#OVwmdYYf&Rd~u@${@u5=6G%AemW4H)QeoSAXFvHiJ)BF|m&04qK@n z)unl^MAuP8YIOH%1*DDUh|)2r5g zISv8H6g)1Hva*oCVWF}Ct|N^WX2?tKqDaIr+=k-kHT2vZC_UL z9oa2qr9#OYFdr~ZNgwY&{)1kA@(n9OUnz4qO|h>}owy&=*J*om27&ON$HUf>5ABUs zWl18z4yX?qYNk!w&VEJ8a>Nd*0`6}Q?oD1!{5eC|DmZ^Yn!HLc?7vvmcO zuH?%kVBUE4=uPeGh}a7uaaFtQO+^cgv2ZHU9t>$*v#ajB|L0#qr5I zGnu9{lHB7N!TJo7_*Xmehs9sp-Y~tE-G|vAKW4Wbf+qm}Cz|GkE@@cWQ?j||w{n?g zW+ycbDLFZ$uSqK-i*kDynro=lK_@xD8LqEha)Q>`x`c^lT%&^=bh&-gCQvU=V%&igPqpt{Dpk_2TJ#k1;3l&eJtlWh%N}}gNo+GEfIA0CDd|~c}j51 z00-05);^+vZgk)>6=h%m@A4iGwQlOWR{a={;RESddYAg^Hd1)FAE;qoe0Mi{8a9uz zJf5bj>GR{nx~31`x3_=GaH$vlTHt$Db&QHUT{3P`#>H|o=>7iyI;wZq(3u@Ue~@*q zTUiBsOA8O;vSE*;g1RXsSYY!cI1B02pF!_jZm)T>UbVWskRWJfO{Dy&1_%Sx{{S;r z1$GS3GAcq|Mhbvrlh6-(&urgerVO^9!yh4~9;eZLx}T*wC6evL*D;WQ<~Uooqd%$i zUW30ib)!FhiDG%lqeyy{xsBrp$?%=Q?2^Pl$3e)hjtiLM(;=F96%a;@S&swd6^G)| zPlRuR^xqLY_4%symtbSJwU+WjaXLo32^d($(f3!^->qqR}FKu;LTI*8gJe+bw5)Sn0AF?d?`Uhg{}$!jyj z6K>GFRU!WXmXqxI=0zX-Ep2=;&A)+s%myXoY#wut-=%96Xauz}iT&X`bta}>FmN+b zzT+#gP@9`L1A*;|kwL)vdRHe?N3jL-5DDj{W?209B!Q25)4BojGBKKuONe>=i~wsy z^kQeEX^|MT%V@_Z3H?oSchW7-#YG$Q_Ip{5I|GGZ>s@Z0D$3UJqY^{l`(bOHhSoVe zd97Z6Ln4?5rU_DiQCAxzLD0vVc&4XLC?}Kj=}%%eE6XO{)k5S2iAFG7=QVYJcO2kU zH(Z2JIv(_;sNyAz0p~zXbaoK!d@11bSlUSc083$m#AUPj3g{ss7@hiTT;%%<)J1Aj z*z>e@ySddad(V30XVFg4{HpD?pe!#gGyecAEraK&1>IL4ty$5uX{NEZiWiDm!Wkq` z;1a}=a1IIUT$hO@du7#K_-DPdvIG6r-ox~wE1BGHO&QcLi08QRA&MyA@{EKAF^%~3 zCcD21UCn)_Ud=YZVo{BX6gNG^d7g!LrvCtJN3zNM@0qe?$QTEN*hV-ntzXL+Xs1>8)aw*d03 z*O5@`2$MC8(VlN3)hiU}PsO&CflBV0d!*^&b)auHmw=t4q^?fxxV%TFpnR zDMLp39WJCEd1Oe~s8-$Jjf8-11avv;R4pc-?J>NNO&koRi;zmOC$Bv#PZAf% zUGI#H4%q8h^D2*=*3LQ>EVna-RmlhDBY~f-Gg`f6+{Ci1V6h)hK|~Y&@5<`OkULg4 zif+8UDcf<&A1|NG{{Sks{nApqFnlW`L*h8@Zi@27*LO|bt1sfU^6L8k0EhG|Ns-V< z*Ajr)86Pj__p7V$ouM}Ea_FQ3g*fkAhMi>wvGI>klHCXvY|)k{<=gGK`WkGJOa&x~A&d6T(6Q*eRl(nPd}A;j;SNH%d@y`>{=<; zp1k1Kp=;B;8c0~SiJb5p{o+n>`B$3B@}#c}E#$F2b*bv7xmv=hr7~!4eD!E0MO%gB zsp#YX0IyVTHY`{fG3SBaGfgg`5wc8Q^3GoC>}p3~@@_a19taoc{nS>orUFg=YIiGNQi=D8nmf>B#TYRc{B{eVa&{;Y$y+$%Rre zfW5ynQh0^HF~mA5@_qYO)YX;D>N~q0cjIgHdr0kIkU5$1cAmnwye(z+JrnI0K*r|_ z&s7-Y{sOs4z|{O@<*zWp!aRZL*ZS9?YRBwe64a(ik!+ zGh_C}0$A!z6Y+>(wpQEwAm&%siNfoi2S8a6dy? z)pwGD=u+6^ylB&0_{zsk5*KSVStQ-gWo#3i`<48woz~d}%*}+EPyML(^J?0| zqOA8aFj5CSNC)f5{{X&4bF=-T`sy24zt&1X1Gm)GMP5RCSb`{|zPMPU{vvtw9m%aN zO8z|>IN-F0eaRq&&ni7nxveF#O#@76T^3p8C1W_jd~t#P&wTq=9eVC{4XoSmCU2SX z$j@QuD`eE)ku2;Y*DgktJ=NTjD1`$&ah==~kJ76}tHr9>86eugND!8YZpj=E>rlez zBzUB6^l22r##_we7|8Uk6#oElnE8FT@_0HfG;0=wH)j?cm~p;cKYA7&1t4S|B$J^o?`;A@4` zdw2s)7Z(O$-u8v@$Kqqz6H?q7)al9A-kI$)kf3@@yV|y zlb0mpuWBf* z5tZVvO%hpY+I_2$<}w?W!S2L?pTK^#k*HiQ*4jzq999w4+}~tmTsHYw=cg3HcS=N7TcZ|9X&;#~4^v*_;6&M=TCZeg9DQ?MFQlq{sSD=4kKxyt+7XgPDvvyc3GM;M z^R8S=(AEmbxvV<WTeBa(V&1R}z`Rw;=&LM^DG=SbCH~O>0Xo z2L@bZbRjca3If2Mrn4`={?yV-bn~4^`o?KNzHhv5V)7u^dt;!am4+~SW1*xjIT`3b zDyMaHk*@Y^FHH3$`T^XUN-evT%3djDJ{iIj_n%2pZWKX{{TT1yV4f(GW$ir*NoJ$QcdEWQAaC z$X{T=7$gj2<25&iTmC7{GmrUTKbftqYI>9Qi`$Q(qNVw$tj1+{iLv1QVfhAIS}pnAcgLFO~4p*mTS!{%mVcvG;`5 zzj2Dq=1HGkrle21$E`wx>x!_M^7_{{=8UN`WmsdJ=BCmWn(1@TBZE}sE9Nftz|W;? z=w>+X6rc<;4ja8bf_fg07|s5erZhm7`55n$*Y&PLNB!oltV}w+!5{eX{{RZ>bcvSY zL=u2(>a#rEGbiA~c79Z2Ip`!#6%jM2RWPb(FT3y?P)b`=wz8`Bg< z4&`mkG3asleJU%KAsqFp)RB=PXFj!3M?-bA=OEO!^Dur5RB%nx5stN+EpBaSm^U{> zbX8Qy_vaONUb$Oe4(f8YIJa;QxflYe>8y~z#YZmVpz3i<@x-jY5|SVQGf0W=%L;J@ z^)Ms7m+jH%_WM%a7$QYgQNh|b9-VS)i19cO*y$-O?*9O7)?}TeW0u;uP*1-myG<;| zCZT(9{SY0v^#Zs*h%diZ@U5y4F&_SU0`i~mtE9c_19~2T;k_$II-z@gR!fFdY^a2< z2fcUR6pGH?&iQPod6nY%*r^)^dg8qQ0Kqy{&6VZTTr>rqGK;c6-2VVd^j`~EOJ%3t zq^%bDBLOzHa&uD+#XX5G>zTL58@J& zq- z8v4$=X{cH>5L@{(mjSk)muT;gTF%AB)G#{-IUF}2R8d>1Nyz!mPE94$PYyEKW5^!W ztYs<7nnXKASp+l521^h&@9V#2OFRWX_ zhXN&7&({M#u4&5cHE@a2*+ewm9tj!i{?71Tvm{OlSOvQAo?8q3O&?kv0^6wuo&vdYDZ1`z-l=Z}1T71>HWsUs=9 z8R-$mj-$*~J-Hbopq|(V%u-7kJZ)CW{zj&PU?C521;x8`A(waRxfGGh9n9!0q*+)T z;ZHmdO6t*^x}%=)q>BDrEg5)MB(k5G4?sY!CRrJ!Rh~_=4kEZ8c28!mqh6ED)Z7Mm zrynZrKP!P;{mN!J5#k+wXwUTbu6et*&7-0z6=NiKi0-F>W7DlHru zpuqiFt@tj|80<{e18T@ae8)Zge+uJ1G-@UMM;)S)!p7Yr`Z4*N`Qo|xZ4{1(>nofM z?X}H?{E=KMLo8o20C^c1?d)q2ORF%z+QSEM^{$Uk)2{VKxO;nft`L3k8NnI%tjnD~ z>fUJ$)KXiXO65uVR`HTUHM|LCv+C#y5>%3S>F-|sr^Mf2NU#(+z&-gq{*~l^3$0|D zS*MYU7JgXzlm7tguVj@W7A$U6B)5r6Fm8u$BlX2|w|TI89&@TVzxa@zXw9{dY1|&0 zV;LW=E6#PBiSDjvnbm_yBS=rKPEB?Cb<=-ic!O4xcsEl0mMzX(3dbx4Pt)?QI^so> z<&2a%48LPDCn>ZkBy+*2^y6vXzy@dN0ErC09sEm&rhkVnx(ATma8OI%FOR4l^Dku9B1>*XZVVA zuyLcl~AFXM>%#Fr91!)U6%DRo{h^;SKl&cYg>swH)EUSN!=1C+;Ajfsc z&*h5ZqMg+`{(Wn1+UUXL*)jd(gU)b&gpPu>l{;)_d+us@`HZa+C76^-x>OeJD#V_Y-HV9m@>?MHgX>TpfwWL<+**7vO5P9S89)AH@QjMv`CCTd9 zzkMWHKf-%UX;=69gvM6KA1V$%4b7jzyu#*LCS=~lf+$4<=VU>oGN zfg-^5#^(J^aSpg+l?NlOcF|T>?qNQ~Q}0Dc%Yb;MW1m4=n4A6-j@|CI+(KnmVUine z)c~?UgAILRyei}y;O(BRZ zfFdf6-RqLGwc0u%vNL>hJeQszkxwZcYYbd}3h;ki)(kp)j(Txha6|U3V(p2}9E_iC zD|+6+NI1vg{b+R*5<$y%c5v%r#h-BDPBTx_?49nHXdvzi54o=5Z8cR2kU1u!(QQn6 z?SvZu3|dF;fW0ZI*Ftbe?JqRzL2V3AZwnMfUCe-!fm~0GEi7%crZC#Vvq<4XDgln> zyDdg(2?932-IpY1BNfGX!Ntk9i9sO&VtZuNMf>PUHjW9SINj;jifJ4Z&MQDbS_bnM zZcaK>M$`uYZrkWN&2{r4Tu134!%7u0O5ic=-}+a%>2i5GZI!-G_#n*0{{R!VSpKHG zt3|bpU0XIIWioT=h3bDpUXf!dc$u3%WT>ur?0Q!nd0#|mm4a9U$GN%rw-M`9^*{Lq zUmSnSKk6$^Vf(Xyde&aC#+7_W{PAkzj_A;rXb4U+Pc@CIFdDv=-l;nO03%yh9C=|+ z1xNC(Us<^)#9CY-PQm7U=b<>{56Z5RZeMsk5x$N4l<&!`ygY&Io z*R$8Tn_lswHStnnwqG_;!NJ0()b{>$99Fx(dv@Y!I)F#Wzd_&Xe@dJ{B0#XHSl9SK zz!c&>LB}N2b9O4kdXok4&a_yZeU*n_Tngv>JFP_?hhb}L6t|bkg-j6-yYn7dx&d3d z(f7E4;kx^db1b@ z01`OwT;($!@Z|UWt8c>a`OR*JjK5J?R}mMR100&&@Y4OB^3#8Js=k&JJIxl@+D9Pk zh=AwuHN^N4U9@>-cFRk7J9W<+us@Y|_O0eYctGV;p#K2AYnJe(jmC|l#c6XIrN$%@ zt0*`u8mW@?}tJ?gdZ5p(O-ttk0wuBd=T7z`UcoOK??o7hN#(NUY`&*4?| zFS6Un3dsIpJm;YHp`t7ZQhIi-Zu3KH%dqBGR955?O=90eM2_|=Xq0K<*zS^LF8t%Y zWq9)J8yh$k8y{PPVg^l*bB^RGjtC9`#Se_O{j<9+0MYxV@6> zKhE2>ZAQ*NOx0bs)q=@c+|SVhzLBY1fJOrjM}P8bf$`KPUl{3;fuAPU-FA+->-}rc z^hjo#!tw};2`(pCa_hK!%mzrV7slRgw~n4u`?m=TA;vHQ3=#QN!$+rKBzN8eu$6Sn z_nIbGI0_kXPX@bB2f-?6x~Y;W5SY{qf;;xCPYhjN$>El~mf}W`mnz4$2XDr=JRx~? zePgIkcQZ=x#tIhfY9Q{=Ph#WCJQ_8VLnEWHX36B9agJ#t)aH=@xPmFyzUAhxUS7!# zn`rKlOXevgIODBn#i`gbznx}cZ&;f()onI8lh;Dkqv`h!HV3wl9^)!%mai9)s9LPC zM*&hdp=%n&tHuGi&;cx#R6b{$Kv8?EEttrQPkv8Q1~Ou&x>tzwL4{!D$JudiyB) zn$z8~<>JcrM8X$v1P?$@dNgJ7vh@J+C{@cpuZv=hMmE5|-7tKaye!y0On zfXy@D^aX&=>0aBT+uVJU-^rXts)OV)hF|ghYrc}RMm1l$bRca&D?aFe&m!>3xZF5A zpZ>K=B$sio+=fAq;bN!t2D3E_k}c^1#*i0_f__IJWczflBiGnZ;%O2_GRU%s!yFC<2Wq;~_iRlhuc7Ha5hBwMWPksHZtlnQcx*LgFOfcvVL0-?SJ89kp)b3bgY&}PzIW0Z*(YPn$lZ{qnCo{2n^nzhxMy4`14R8i<1?~e|C65{cD)NmA=upC6zD$ z%}b`)HPy<0co0Bte@fQLM)C_>_Kye44gH)KaN4cBtl1xDBn*#HTmC(sO*g>zCFWO_ zR#*X5#yg*_RPar=lWh=WQH2=_FabR9Dj$miY4m+6(%BiBM`_<2?F5Ac*D`#{)N@Cp9^bo%+B`4P&#=m8=s{+<4w$GUbnFs*<)_0 z_?%Y>ZGUj7b1=D-O4tFs!U_Frs+})(_a;)*?Qdhgi9XFGtnk9Tmw3)j2enY}os5@S z$|#J8mDhgmFf;F1uz0guhD<@KT!kD2FOmA!qWBY9z1ObW?TZhViM5B831g1A?V430 z>BWR(+3OKNzD2STl_WC^cItmYURR(;_Rkk<8kDM~lXuOG46|n+lA852WU$lq30UP| zwr3l^gNy(_&ua5O2(7Z{w-*<#@h#2X*(FxT$&6zjxhA<%(@v&{)6->>O3}3~U=?S9 zJh;i|8Mx26$*(+y;bfQQ#z`z#^)=djNto%L1+#|H%%b9P%7P08$?5r5loq^_4e~3Y zz~nAITHX|I8!}Y-ojmg_w+R9^Gm^x16?Wr9wbU)5HxWqB_f(_f0~}Tzq^8g)x<9;N z7_awNvi>#E*lGzjpFES`C^TN3wf%Bb3lE4GdIL>ZZL)PcaM;%(pBQnm<^ zWr%0dMtWC6_`XE+MlP#;_RUeJZ|$_v_pLiui6)$|QN6GaZYr*$6elbI z2im$I^|6yo%8^Ju)fpe1Il%|6Y4*c65%37yI`lQMmghlji)|n&`C3;v_u8O;Hfrm< z2V}1s&oRU>LoLe_>@YviwQ}03d7oho8paY0-@D^1-!bFpMRhjT_mKEYQkN)p;H zGXokck%@TdKdIIU^Nxtyh;n}1=bvk<8dKkc9Ju1{38ktAi9 zuJA}ZPXqCRV zw~)^Ge;8TB!MLp@twaz&OeNbJahTN))WM?#+`CV z1C}3^Y}@KF>N?HkkPNY@OGIYGZ@U%(Ev&p(Fa>tfu@eBl`61T252^{icLMw$ui z;$~Gbvr5aHw*L7!^QNcKZ2mMqMyS-Y_yS>2`CWPi&P{{YZM zXwp#Axi`Fv!HFCiV}ehq^rdW!6Uja4qpnS4iXhbo{8KvTptUFU6$gWl{8KuAZ{3mq z0FN58sz`&v`ssF6-DpDOfs>KNRq$#50E%l*Jn*Og075m{qR;|0?YEfg5DXiXCphOEQGS4Q(-pJQHFyN;9mMJJfi;kzNtP)A7rr5{{0uBeYa(@zH&ZVZ3yG&^;nCX+W4A-M* zD3NFuq$mtvT#z|DSDgGpaV_LzoQ1ZKUFJ``K7z5NwL+V^W|h=d^H^Io%p@n5xCq-DMt@qx zmrAgjJ@DO65}*0#xfQjk`3A<*%#_=wmK7PgFs$#fmx!bnR`P?>4b62sSm#%`mYP(E z>d;LT=)c`O)Ov%obHuWwgbm{)<8E4{hQjXNRAUQZe-iWjs|UrA-(PAPcarRUuQvpe z0Byqn`i>7;!mG4RV6M)qMUagrQk3;wz#qWZ8E7!F<#_XdrFJ@KE8$&9*+Q2ra6R!{ zzMBu8WdQ9yVL9}yE9%nnHK(F}q`~D&8Js$gmjbj=irK)9nNb>p`Br|T5Bdy|fLLUK z@9$cY?IU3Tl>vP_3d$*@TV)xxfsMG&Y*ivsFjNeM8qCJy;|;aAZQfn1XaMAba>x1CzUh&X0s))_10(5QJ89_m9~!lZ zl$=287;i!mNBGyfTj|!w{&GZ8LULIhl#}m+UWGMjJ9!vYvq>{{Ty3l^QJ?!hWkrdL zw*~&aKN^}?rUUnPw?o*tar%Q)^{0RAm;{i!s-KyVeBI9OD@n^k7^^dqa6?EflsM}x zoV$g3i&uoJ{S?1{st*ZktM@Ad*Ea#xHk%Jx2tJu9D6 zay^kdhcEJh^2$Gl*oy0PSfz_XS6E|`R&qdA+8mSDKS5l5v2k$EC=p8C9CIAM{d)8b zE+U$Bk|@{$4aldA_5QTstcjM0$LWg^_(n@5&9DX(I zo+O=Mvb>a#0>IQpf*0IF4m61sGUkiD1+R5cQkPb;xoM3W_(J z`%j7CwhR8N$%pU*dsW{J2yHatkwSrGa7uxWbAW4{d83=e7xKyk2f`q!d-1dII|_%Z>9Vbjq?cQ4_jV=eAgyZAs*6B|eevu2k_@aD1Mhht*F zzw4rIuU5H*cJy3*1z~DXVF^|$dti}KK4z@gqdiQUzYyF>;ayJKR8p6h8&Rc&K2U(< zoM%6UWEeb;3h4Ia6XqWOQc21XD??Scmfr74)1`%xqf}h(1QEdP z^sZU$V|cr(m_HZwo6RLOD;qf#TgYh~Z4I294!=WOEIQ@7M z9^m~eS}XHB?Gyz?ouUL!_Sl|V@x^0VT+GXJRGWbuqz(>zS! zG|h+(4hQT10M@QWNjj;$&W9^NXNGqy-)NAlvyIKXXMxZ3tC6gOLxS~_5lbwNPJf8< z20HYr)>yaD=8%k$699Yk1NoYg_}P}HdZr8KV*nKv@(uKB#_*m z^-nO2@3bF;hONAyF5V6}6Fg-9LF9!+ucCm zb@@||{g%0i;Z@Y(mCorVkWAx4@wqzjykb+1d&^?R#b8pZ@zw#N#AnEC0SUwVAW zbTg8=(UWV^eUn7gri^8h-a@-aQbq^rYv(pIZu0!0kUcBfe0Qu}PvP0&0wh^kRFqw( z8?)Cw)#S6l@<=4}*>G?&I#!gVo!D};jG~SY`jS1XTSvIW>27WCk}%wR;BtSJMI3S& zIh45RiqipNXdDIH2^l|1(r-%+G3s_-4K)w5Yd4qeg%-MO&bqF zkcK{0lJo9gC;8PoJIL&`y>KW1wS;jlIQzwk{&epNxc=R`TyU1^KTs+TkNs(n|s}=HO@jn!0P=CG20_v}6;2 zD-T|tIHa;^h|iv+4D;C}Ptpe=WNXF?1=z0%xS^CYY#}%U!x>vi8bDpQK9>dzS zq`l-Rw_?B&+@Id7M-OPaGk?5CPp9WrMieL*80b3z=}W*~KU$7P!j5_R)VFc$SqC~k zx9Rp7f0a$5<+Q6JIX+4bf87;c41Z*6g^m~O68``yO#)k+jV8@4Vb}yJ4D*aAyr zeuLhvuX9f1-qJPRRE9G0xIz8qI28(|#lijB7$fZSFU)vL) zvhqj!qoR+cTp7tY{Oc_i#cIrbQpObU-nQ(5NrkH)GEbSak>9uBimTwlTf;U#?veih zj~dk1n{S47!aDtskIahZ{3`{^=r)Tj$&TEDRUsQ#f=^fL`C_(O)76poj<;ifb-yD; zWB&kU*?-Ri{{Vj<{Aj7Xf3Ns)*_XBC{{V|wFC#0ckLMt*?H3R5>dVu~QU3ssRz9!` zd@a;~>mHyF{y!yb_)%JKhgP5rpD6G>n9=rE%yKbRF@f(_qf@Z)&MAu-8OZ%BQ%|vb zjt8b|6t2eJhdnD5oCWKO-Oyq4E*0A#MH@HiQp=&YnposBs0#uR=m zDCBpzDJFDr&GrowRG((`hB+kKM+X@-$Y?i4{{Tg?yV!~6L?2=dD&(F3^scK>lrDv= zpt0+kwi>B_wBQ<(L1Z74IX2&KZa(U#`NVuJaoPFdSNsRqghp;UeO(0zZLX5`1Ey@x>&Uy6h zULkG%ljE5nW96gXxH2AtENk3jUo$|^i(@`)Wd3#H)|T?zc%9;gKQd!=CKPoiajjzP zq&Tflpfq?DJTV=ya6fRtWCJRGZof{|z2W$yPY+$&$0|F!0v&$nm=lexSe|R9@b#nHcvkKSfD@7cO#H|2tf_7(>@KfmHQlYETC{R3XcU6j=i0gF z(l3%iO`~n~QVnctcCw3GMM#?~7|B7<{uP)F+%cm^Ea=!Jfn&#|b!%grscOZpA(}Nl zbYSs@%}J`0JeKlGM&L-u7~^#o8jbIrYLYm0ll#N9J5!(S2?1D@Sg`;vf0))aG)A!8 zyJDa5Mc)?Xv%&uWfePcSBq%NcA9=_F@~+0)_kIeT9IFz%ZvOylkz96{hPjib12N>| zxUOo?-d={#*tc-oY^_6m=a4A&8Lc~m<;f!vkQkF$7tUwbEFj8|CSC#jYf|^Cb;*3< zp*Ads)3kwAGP$aj5w<}*_vzN8y-l*KXPoW)Y4-hnM|@OLyLV%f6U3;a!tyX+ zS*Ji(zA(nGcwCX90p!S~31gA>wy$r_vHWhy4~K2lPs=3P1O5YBo*K9^X^^55wHq1F z(zI*$zacM#^DhDUmp>G|LnNx>{UEjo>B#HvUiE3HS~$m^s(l<4Kd2SrUk8_ejeJ8h zK3VTyj{g9CxvzbRa-8JXd@pxno~^H`R!L!WK3vf^AHv|)PQ5CnwVL_zK-prl54sLI zA8Op5+9pRY5*|CKHP7nutlwr9vVpxA`7@^7<2WPqqIb27vjN14|Qj#eqT%cTUBpk39=Dg#CKa>K6KpD)(rCQf{vpDmfoRUp#n+MQsPf+NPFV$Ss+bS%)k;AIR6$+EjN5b#WY) zu|;l*zD&wSTRlM@*cIVF9AQg;8_vyzdz)C89CaX&f0cCd*(O9KcVo?w zW#RjUhUx(CwE@mE?Oe8=q!a~uWbxXr-p}O?%0~jQs~&e_RiW;Y-@$98+D!Q|DMH(D zPB2)S;*(K=dku2tF*2++1%G=U(%aiRhbMzvU9X64F8nhklQ;UQl&J@(An{S^dgQhu z^G!qsJIJC(a(MxLDJpMf1q)3*Z!F&|sEW(?zaB~aE4TP7XB>9dF0ReX9EKwY09T#K zsL5>vLN`0S&^}&wV<(Yblki~8FuriX5sNTgpo|`W3fXgCU5THi08i|siOqWGh2zxyG6J*_Er15 z^1xMzw@c$YbU>_;ga;?51l5b%X++TysevLKhR;F|^sMbPnLKdh^clfE%Zlco#*w^V zx@2ls)9U^&*WtY)O&SLXvAD_e6+jBVh{>*MJ9&}8J8003jLq_klTgsHn5ox6S& z)9RXHS>6T%nO%we7ykgST%Fp5fx#I&&q33gC21SdeNf>Sks>j0ck`Z|>OT`o40h?; zaN|4?ink*(>9GI-+Q4+=aamf#g{OibM$p5IdQyh6xwQ5!BdY0B#Ur`i%M^b3BR|Tn z>$w+C7i^;XX8?Dqw<8c~>Gz9FgyZovYu5rzMq(Af+)hZwa4Ds&z{+#En5SRQiiM>R zg0IUQV?1KCG#FCnSAsb{<7BWN!#J#cU7fW%pEK_X2*;&u9qdH3S0|DgO{&}&+sa}> zxF0Dauj5c#sq+gDyaxb|^>;|~X0^Gu1hQ>cRb#+><3EU~Z54jftGE!v1NnhfebBeF zIz)0MSqp<8ws|l*echw^(rbXGvat-3kfeP*0W~$fvq&S79i}ym#6dsphW=Fsr2hbE z*Tn543mZ%RtTtPwFimpB>!G9bBZB8@5&_TWQrSGdQyE4XoSwO=jJ`yH7>EQ=e+|>5N;m z=O^b_%TyE6*R!5*?*HuhzToh;kCPQAAajEKU#5R}nD69y(^W zqoM{^ws_ujQ0iFK+nFJ3uKxg@ILiU*PXqeZTX@&aQWGaVxT8{ihEzpRzE}YMB-OQc z3t*N{^gG~l^B7d;w*s|%CA{m`Y%-;Q`@rjW>^zH{;C}rEKA8Ui3f1s5vdgZ@ zT(cF68Dq~;M3tb(zNqeQitUx$-~qH}x2B5v~F1coj=miS9L>FASq%$nBp_2Ophi*{0h#GyTQq z@D)n@kL{~odO;`i6{3FeFJk0q7v+p`>)ie|m9LYs$bZw?e_GXvxjdegkFK1X9^>t6 z{HUk#1hy=aPtuY0ge=4aUP}{zDhr#HM=`3j)Bga^HS9fD_7z;)JZ}(QSY#?*ply6{{V?LrnXQSqml-V=3}u!k~6ovAJV#w2j$W1LF4xc{{Wzh=5=5f zL)36dK3D$CE2Pm*G>bfre1!i1&_xrohMmbv-qg|E-zTLixA(JAXWUZcwcMWy z>%{f@FaFLeFT+3b0kHo7u0#6Pmbic7lh?@U_EG-;p^DD%*v5rn#~w=7>-c1^h|`B5!@m-zAG*EY$Nh9a{8eiB8HAq?;@StwBp;JjYzx1_9yWvw zZDRibtY`Yw&xQ%Fj=GxpShpbx%C+%`PTmchXEH2 z&N7_fd(=a8DQs!Bqi!bH!L!q+O1E`9QfQY7g?Sw0RV1;*j^Ey6nzv&aqITe9rr@^P%C8eT;w}qV%dEjn1u7=7X70u)*PQ-1i zob<=NX2~AclyV1{*!=1i=%!Ur3Fo(5Rm)o>xrS2Q73uj^L~L9%W+`x2c#|V%UY}af zvJMMvVi)*_uN6wnPeUmqfNuLlfmC&@S#=8$eX`lmE^s;In$Vvz1{lt3nTx~r=TZ`u zAnx2iJ$bBV`x-@eJpyZ(S6O2$o>u77X*d|*a(%cp&G^o8+MT)vj!`A7*mP~fAg^&- zI)F?)OD2bS8#$i$~En z$PpTJMJ?-|Kb3gBjFKmcDpjdI~4DX-g{U*1?_HL2e0boRgEzYpv20odxAAS+R}T z&+A;)pEI?*GDka-@RlPdAD5+cnsJ-^0Lo^3G0x2Vx%yPlPqCd#cO}&)n%XN-6opvC zrH>reVb$)?KJy#n`^j6Hl%7IbWkk&JD;@mf*j8NEcFqr-Wf3{%x|-8t2G#c@OU%z^ zCbogu({LehSLsysMv0o=$&brjhvm+Hh}NthWs+!#w<_W>w1dzd)ysH?Q;HpS*3u}k z2a>MyJN?kkM@)LxJzb6I>dp2Wd>8^`0#_LN*A-}mp|~bMghwIIzomBWt^WWBX&Avq zT$9@kTt=U=SMsI=#UzDW9^~;{n2(O$M%4Zio`-PK_@7TK0~T;UO6u;2`&b~8&Ux!x zm6f|#c)rdff)Y%F(}U8wsd#pgvye_kJLb9Rd<{P4lK8Gwyda#O$2i40I3I}=VNYt9 z1a&)yFTkP(Y!oM^00z1!uf)!8v4!K$EwsHgFj0#+9CgOp=zKbY+fP)^L2%sHH{-vW z4KH?hcgNyIbrumS>F`KC^8=o}h@<{qvHg?IJ_^kec$Z$5O~W@V{4R0}H>G>kzNc*I z@~z3h?`hWBo3~wAU z$7AnVTIPfoqhm)HS0FIT^(pQ>t4!`IF9(J6tcj7Nx>jtmq2fh2BiV&slG+)hmEA)) zP^9iWdvIyN>cVLxjw|A1fpln;{pOv2Kx>}RuA;cr^sqT(BoKRXTE7yl;*Q?bMH-`T zB#=2Z&3He`ZxmU;Rh57wl5z>b?Ottm-Xh+IO)Gmd*L3d?#cK{V2|i4>?=VizP5~a6 z$2I5w03EbhbtkaZte|OD7}_~m2II8y4m}4oa_Vcz9%!v?jLK#5@^jej$@Z^D@ZO*H zeJ(iXT&@a6ta3tnAA0JgQl(iqbVN-;n&#?!p>7YFHy%3GeRKPnz#}C3*RK3c@DKKN z-}aV^0~=Q)%?gb9XRbj0?_Z^PCbXb73#&0r*Eb5SrxBwE^VAmI z#sZ!NL##q4)<{>(p~CFPUrLir<4h%+?@ls5;5FWSI`Hk4{v1|ZO@~#s0?j58wm>%j!^rtkU?1+nP7&l&I?gVf+a0>v# z1Au$;T$Y9AH;b=id;qz|4nWUp>u>HMb;3xb`U6~#grjHHbrK01gOSgC^{z>LXH0$r zkoai6cZqKt_jV-r9J_?R9&zDt+C|e+<{C-f9uYZ5by7 zjPpUvq zwLq=|#M4C{!^)iUc>F6D#Z4Ocg7uFUr)i*_psa+j8T6|@4LH@Wv6H~g;f^;^ zCwRz?$7WlWCmir9o}l1aPJh^M;tn~?Mi!ma^yJJunsROz7C%sA=DhcD(p#%;; zK54Ak;CAg*xDD1=9TQL)&LSWB7_Og2z|ySq{{TEw{{TT1#_JQLS~cn(42r0}=WsvL zx@{)(HkoRc(LC<4AYwR0IPS;#W}M^hlYe;HJqR3CX>TElPb`*_U-{)2+~1dP#}xsJ zX|wj3NK^j+Ea4?b;@wZ_Q$-AMCdi{yPem9Ng_7S=_cQg^)FtrFw8|~*;1DkKU}TY( zdhwnD{u!k3{{YLP*muM#arjl;aYy_iej;q+5XLf3T*xaw!}G@4HJFQh(g;))g?D3) z=b-#eZ>xbCDH^-aprV|4V( zksdZq!w20(UC=&n9e9%8sJOG;jP=S$Kf<%V5B!$;ya)JZQ~D7^HvYQ=%gVStGAn06 zIJ{nPa7AYr@gsHNjcDmgMcia(tweVewmOACt@`Gw$2hjW&eHkn17kGlCs@V@`o$-& zr`D)5wAaHq+~z+u)P4(Yxtyn-|A3?*v}`udQF?>!q-QSk;me5UU_pIP4RD1f@!>% znpcy4H)ARf^{p4fFF{4wtDe!K-P^Pl;yY$kFp{9Ya58wV#>!HBJ`a?uYn~VQ{{TAS zv{P=ju!Nt?2@?Rpagm>T?W~VfJ`rHuDaE3{|l4DE;^v4yFntUa)xA2kluB)S+r*mQvZRQP(%kqJO zJ9e&HT!P>GVg^tpQxt2tm#7CL_2#;@wv0@~Of$C_KT75Gr75baE2|(#`CgUJUt?-J zn&gl8L}kMk0lMQK#as=Gt50nk=b5(;eoc2M+q@m92H>Z!u@&Z?bH=vLnBFB~r}4f5~Bxx^+6erxfRd79NZIFj7Nx?sz7s|tK)02*r=nHMwp+jRit?1}yGoSIh zuH87CsNVko%vVEe9Iv565V&=6t^|N`q>)^=jy`nLhI6so@i|)RY)&jx20aD=Jt%29 zjrk2}6nVeEz~frg1XAt&`5b_7cQ-ZkHJo>87!7!@^|w*{tLLAA@~H79rv}lvZW#Oh z_7(JmD#aHF*yFW&FNJfJ_VVCu4>O%pVdLd8xb11Z;`u9og6 z*u<$A9+l2&DKrxz8CEAMaU7%NaZXwzIPa-UV1DvaV$ULIc~kWjqiF((8bcB@5zLVs z2KUFUW}=8?04cF^*nIH6)6%vrBOoz&e6x?e6J<}hs711b$`)ZKInF%9{-UfiGzLJH z&im7QGL;!V`99Sh;+W*mI6uaN`HH>w+kwH3h^<0Q^UoLqs9h{>rrlyt+oZ-1pv}D|23*tLTtkXg3oD4{;d`*&K{>`4L`KtLl1gmEs#YC1{bPLX1Jj z7{zkcrj+@b)Y_Z8Y>xLrF|fD=cJ7s%ZtV3r>MH%dw3<$}Yi)4uE$>f~zuiabzfAP} ztBdgVrx>&b*zb&uppKkzSB~vRQG?H1qGi7tBT~&;+y@j!GpC(e==6;yIO2@R>=$=T zn%lMczHOv0ZZTY*ojuF#^5cdP>fD@GxSDom_TV7RW@dL)s@H+Jq}c%E@J`;f!S zL9lbjy>hqAp%2bE9<|tblS@dp+(?SgA^EbS8O3qBjjgeW<_Nt$;HZ`FsZp`a>P`YN z1Y_&(Tz`gcWo!G$%Yhmsg+_at>Mvurf^4<4PNZ!r!;Wi;&?UyPd@!MWw_FaKS0?jk zO884Y50B5+X0}XjnM#s6bT!+zhYYZ;@<~yQj%&_77Tirfr*U)_<{7~Ug*Y|pOQ_vN z7-hqEuGuSD9$iM%nZtOOO*(d^YZ+tAZv2mNURNBW?Q4<m+|_NH92K$m6-G>}O@X zjzvE(ahk8JJ5Q?2+zhe69l13Wsq#s)s#3Zv+LIOaiof1Xz>MaW`M09s0+A5u-{z)C zv+Z_f4>a!^^@5dR(O0}dhTZ7002a;8T{uTb*8nS-eJ}TMTbW1oZoc zxqW?!)SD!5&(Hh}*5`-kQLe)0r`r4f0Jv+N)>yWqAvhRz$G^;L8fw$|4qFmLHz&&E z4D|J`mquAbCie_JmC9PTKu$7idfQTKX|NM_f5M8fZCMU29h@=k)%5x0+R~(NwL!-m z=k%>_;6v-L#-Ot@7T9$q-@+O*~$cZ$l@n-&ue$7uZ6S3EA7G-K_eSfU8I zKBSzIeMzcjHIrL%%bZ()7qQD8zm;Fk3C9MhKsRdl2eQP2`PHthlSKyyBdF_H7witF zY3!05{zA1!LUZ-5cUG9it6TYL<}rzYRrM$I=}w-kC9!R!3P=DSN{Ts|%LssB({_GQ z`1kq>WHxU(Cgp>7^4IQ?SDo80PEL$1_!XHtMIFmz9s{v3HPTCM+2H~1d0j#s|y+x zyh?U_KG&G_XMsQQ{Qm$-wWJN2MVctU5T^sDK~+3rc6>I}zuUZlKbfn#c*T{t^o@Uz zt>vT@J5~KB#FlS8;^|+#x!%S|%zrYR^!30rqWMxB zw=GQ=`$U-s?;5vd!>9)wj!i;dN!_K8ZFc2>7{RBgI5?`&JEAu>KVbv7BS zl5!2gWcT#0V^b0s&c;0}kCO80JxLXvwjSMms+~pHl?(MfYQ^G9qDcS%xW}hI;Z-~v zWOV&H?g1cg^y`Mok~n4r1Nqi!6K$v4+)Z%BZXn#PE);?pfgj8BruatgO+E|Q_RVLt7$o)N9-W0}2_r`r(CoHx(xi@PZAp@LArBer&1NpCF#{H0eP$ofQeIB? zHoIhvP=?RS+rOo4eN1f3tw0Ix<#@p=%t)+-07`Iq&wAYoLY<=(g)u91#Ez%(tS8*k z2ScPC)=}pe=O9!*Ew!5J9W|gr?;Y$caoKlZpUBg+S07+tc-rI&t??D4kHNQd#P1xC zyiQ7-WCvXI_RSGjRw?N2Wlf{Yr)fIc-rd_qxpNYh`J4_x1E)Q!&n~Q_z4)r;-y5d0 zj&Z#0>k`**r3b&0Rkpe!Sko+u!|s9(FN#Q>6n3SQP9(ujf1gV8Zw$vL_FVq}yM4oqW87D! zK?{GvEv8080@9P5bJTUEhrP5FRG7~ZTg`WNrqm;%qNr@+I0CBLX_JRTC{<9vpPRK@ z*I_d17X*2jQ-BvWO4`y^k~8JWv@q&D>!sZ1vboUe2^^ktL~_ie1B`aA6If3#Q!)8~ z%N%j;P&gcV*KMp!W@(ZXC--Dayfvf`wpxlvWsxji{|ndm-j{b6blU zI~{=f4F3R1^IbXtc(5zB)X8=u>t3CrE^T!LARjUoA# zxRs)8+Lu&xy1;_xQi|dal`Zz|8U8KZ2lKACP?Z_mxePJ**O!~*5L-yWjE=;fZ~+Gy z_u$uitjf!{D*_5EgYp&3rS8g1)vZ!3-8zkoP5>XBRkxI@JL8t)9Whldu7HIbB!V%` zRfg-%m?;Efiq@2q+=-@A@s~Ds&N)6~WcqL`qSBvriWA7%Kb3RdCurrcw^nV6vS6?o z#z*T~+5^cZnyikYRRAX(=bESS{Di&~dH2H$e5HK%AqNLOP(PdEp1{vOpr);BKEq}!t%VYyu6 z@vHXnh#aaJBG2%*%#{eD8O|KJ%Kreg4pjX`OxEiuhDYE2tf<=MLHv(3U|KicDij`b z8OT3{GGE+?8ByfR6m6t&@5!Mq;Mt|6Tz#}lWi_0lHH;{@3-UPWw>`+O9Qcdyj_&4j zCWfgpvtUIt;gct^?km35bqn->CA_y5=@||3xX040*!aZBHHEG0JEfXY51I}JPjV?u z!L+38*2Tk_E5zaaCEzVzO3^LtZexf_o3n{Q9ZBn2uxJ|87rWL7*>*DE$+Yv+wR(%8 z!tvLoG{c@~SV(hoUs7FpTFmjyYry)hqW0$9qqUYCxML||7@Y7xuE$5xuhzl{bvKS{ zk^Zu1#s}g(Yq9b(=nX&Y`9J{At!k*G?n9|2j%)iWNz-W{s3Zb;IH~OXJsP(5jPfvd zAJ)1^Z4nRy$rWSE80UdnDr<6YCS}`L!5r1~$x*b1ua7}p)^3IYxf>kU)2juKO zA9}*7)Y3Z~Z;7qa*&>llgn6KH#P&U_gV2u6e&uj^-Udh3yI&ViFOvtGBID0d!sD^7 zGR4t+MB7zBF2~FVs6DHa%bD2fUkL}oX*{{LB_o_MAIiN8?FY#DfzB(-ycu~8pFXPc zHr9-}$ExQQ)DIO|NgAkpoOTt}RXe7U=Snw|VXjWUXfif1BRu+ZUQc>+bt4X$;=7Gk zR9Ri5LAf>@^XO}boA;BI&I=ynrD;i7YHtN(O=%`1jPduWnu9XxEJs|Ljdvu0N#q)} ztwrT(I}QoY-UoyJb62I!p2Wg7R`(mTjnTzPDEpKR7m?Yx$^ zQbRJ8bvPofJCRVoECc%asw);_V3eEI9Szw{$l zU>j#D-4=Dq{v=fmSBtk9=*$P_N-N&D=dlz{cV@LM4gn z8$lu^xo#7d!4-1WUGs$g5i*?T*8;O3d@=oNQ%gYikqH3u+GSk*XqvFoD%(Wq9f@RM zzGHxU8rSeb6ZW1nnRz+wxBmdIT+NfPxK(n@p}G^tTI_rpf-5_zcJR{RbL~@CNU~P8 zHKs1tErNWsU7!xsD0Ck$Oi}1d?PAhbT-&0lC1Z7kOjk(I(uiYPC?;p~r-6=ZstAIA!f$h{)K_m|4=-VXY^{6Iela8SA z?@Jy^oQz_c{{Xx^V+uL#LfoRA?pkdwGyGRs{Zv%Z z#ZC5oOTw3Ep?tF~vB#=8HCMww=pPuhOI|ihEa7qJeqmal5TeT+HTy$^qJ8x6u+SmslXxl#T#k*KV;_xfe@1gk}FaRV^_0IrHa{{Y9S-UcqW z+FG(;wW~zOIXO~BKk?e#SsYnvvM!#F_Ic!GR{4XVDj1R5kUu&lqOvPaV$X)JC7vmy zcO}$-2?M#WPgvbFeKu5c=F0y7F+IjbdAEhHo_hguwl?sqzRxXJ?_<4seCBwx{UGk% zlJclj0G#&Xs*1AMiiFpZx7(&zUu`vSafx-U%7!{EEV_W^GLDd?PYRJaR_CqM9LsIuVQ- z@xK%)it^nL0TUlznAfU!8xUF8qq{VwSqa_SJx9|c^{+knp=>OCS#U9kRmdE4@BM2U ziAo8hYHreK=U|sH9mgR~MS5JSgoNBQhz`-_CJ6Q> zv|@{IATp0p$f&f8v_yTNI42>QdixPtk=v9z!j&K1jO2b*F)56WFO-m=`=S1oopPfx zoabzy@;yasNJ6P{Re=5_;EKh%A83l@U5*(;Zbl&ReQ0_KBR5)K+)PM6boTbIKh)(r zBW{K{6~PCmHRw8>lrlm|Qp{I^Sd;wg&9xaBZJdw2x1KA{$2P3atTmm{v8>Vpe}FV*yCP2acx(pq-Rzc2co8WFOA3PnqAj(v_8& ziK@>%s%n-uN{33KPw?0gH zhYEjaL|dsPN8$}$P6*H4?^!xbf-Bo{-JE|qzAqsXFfyP4j~T9M#kX^!Em*It0uAMY{zm;V5-SirZjYjMXFpP~HM+LMu%Glkubz*YH3&N>rRd^j?<&)Ke9`B1(V zC%QG|+79gTT;0Pc*Dnhk1&Ibp`d3FU-5;fLcTl9-t@F4n6_r3Ij-CB!((7=MIl5ED zx|v(1LBbEI{{RY8Ze(58a(SHOMxzKn4*vj+Mh*rOfImu=p9zeTeFbf6Y!>cS3Fr8O zPKzv{upcQZK=vc0clMSx)_MCh2^l?D4o}qeHN$Cxe~R?r*gO{N>}$~g&NIblRlN|R zwQOii94#)xxMGwKnA6j?Mk}92SwrFrFz_Ci5@U4QspOAD{{ZXJ9-nbGe&2sHsp}j+ zx=*JZpU$1}0Dr`f!cdI<^H7=p04;*FfH>rFTS`quScPWH-|Q_v{(V#a`fu@~wE6V? zXsqud?2DfgZJYZa#44khyoGHJAS>HszD95E(MfRpz?R$9Hcv7Q}N}4>EVS+L1-ny2i5-HB4 zZ~SYP*KaRvZDd;=k-Krb9M@ZXWLW~nxya6IpYa8`@&<5nJ5rj^adt939a`K8FQdDe zrFr3TjOQGGI@Zv1crB%h=4BJE?aFr$QNO)_ap{`O@QmiuSctHFr{z0+>!r6wjV>+r zoyY(WLGZrh0iM-@f|Z-x)ybZ3r_1&q6T=e&h;>=u=dfnnKlCc?W{OyKZC=6{BACk; zof?)XMs|h;x#NuV>s&93x%ud*2ob3v0kMM=--s|^CGJ!17%Nz04k%-UN7_NfR ze{_LPa68vCrN;IiI+1|+e%1)jOh|+J=A!r2np)RL>okjm7cH~}3m{-VxX<#gGvlb0 zHI_E8?~Z6vNeCGujAVWyy0nd=*KTdX{Kw`4K8O4bX8cu&;g?F(p@_cd%yN1hazB}< zPu$m|DL;7di%DP0-i?4b#d@}hb?5j~OJ@MOG?5=qTH>|c6kIFnT3X>-=9(oRbo!6* zu8Y9(XTnab#E5T!1bQ%|5R~b*i;LA7)|V{MNgJpePC*os7@E|8PJKP&ArH0Bd82N#8;^NI=fq~65YdOGAje?#c+QUqVxVA-zy!? zh?6Ni9D)z>%~|*xeKp^Q?cx)v2=a$&Wv~xUf5N?Le+p+UMRa=@#xt64-H{0%)I_oc z!Jbz75I>L<$>RzGjoX3FNhZ23bLc-!c@p5EXqgWMzo8Yhqi@U;Z~IXkkIK2^1W)FD zpDKA0Mt*O^R?H8WH>hkM;!}^zR77ltP>_^3Aoj=@HJETG1B^25C%s>}%lyNU>N?d6 zkbJ~A2W}6c6fi|8rj*+$7SF*e^SX|ooq2|?vPCq?;ZUrEZR?I})?`A$W%N6T(!9sV zF?l+yyMWswt9ASBJ;K+Bq;8Nga63F^X!x=3y2G0DoE zrwlzsItx3=q*b=Gn~~E8IIH@1j5TXLHXAr)jbVgrQey<;KTmq8KZ`Y{W1U6#{^$xn zL0!r{jI}$jgc@wp_}NU+v?`YD+gM<*#yGEYusbB0A)UF%uM7A&tz1jvYg2o3B))tv z5H8v0uk^2dffQXyv>$BNv{jMMUgVx`#o7r1q=Mt-PzF!6GG|DK?+6*-4_a(80V1qw zJk!WfGDp|ax-N5An_s=Ux6$q-)1z0s3-X3I$E#zx1GRkLZDPqi)4ri?G}B4Ag8Y`x zKaG7qX=KP(15YCnGtco2j&&WjE;%3vku$3IiDH8Lqjnt zOTJDz09POTEgD{*4eg>yd3y{pM;f#|0vkO;9PmYIc$&@b>=mJ1+gE=aV{3!_iLOAL zSWb#^(VsC$J+uD+*Q_Z!#T^nV{6MhtH8@CI%Pb(pCubu$O#0&lepSM&?QCO%)K{$Q zFvWl2%SmP~V`uVMuRdF2aK~b;Wt^xnm$NGpG~BLe3ZNwtno3{>u;7>s{1m zrH*OGshUcZ`=C=ECPh+5-p&uLELmaOKT48EF5X@;tJ4CyHYaj8(B}=1bBfZQ5^a-t zAYkD2=~W?78*#}Ms*^0bd%}S?CR>6@9CxUbcP=SdqXd3!q{XsZ1bcMP_|?BKm>HCe znB#Hy98_8%-5^Y5SRDO8{{RD8x2dMv*jmeJ70j^7x*@&P5LX%eGI%u-df26=rZvG; zls4%|VVtfoX$goNA3yRHVLX}VhBgfvf=guN;Pck0NZga3>sEroO3^n@JMki{X)NDs z5h0K)s^~#Js%nwOPCq)crpQ-OwsDLsicWYK&p)L%u_H9)3vv+jY_3Oqie=x;Zwnmo zn@IXoq*G_9N{1PWTxY23Prd*ovH4|6$lT{W`cc&}bg`TA_2g5PfX82Yj8lQdXl7fs zF4Cxrk`C|6rM^!t`fQKmKjTTH$|Jl}$lMBoJxJoL>ltgX#Bj)sk6)BjKZ?e&T3n?j zOnCJXo|R~>=p5s=YN;=dk|(>(>V}L{>GOBoE|-U8G|>k0!kq z*%k{ZP!2)>eYmVEJ4FsVlyBt=a1}vkD}_b>06Y(RtRgFWZt@-T6nq8F6kv28k6!h5 zYzA@w1fED7nyVrgyGF|mkz5JJMT65>X|Bp%^^$MUMvluvU??&2uIi5Tu&T;%OsgVAh55&^6 z_mZwHt(FY`03E|*{tCa;)?BQ+iQ~cZ_!<%3N#*|l$JhKTO?qcF&iIBaweb&xM_|`STe!EsR9K;g>&akq zxQ0T9Jb$(NSCik`W5K%hpF8ZXgX0|GWFz@WUfFP6bVwj|j4U~4Xhu01JOlLUUTdvd zZ`V9gXBfg>z-CYQ6lC%Eps9niS1)^`p!j(|+dLg-mTbkk9FC)D;<~8U<;E~;&OQp= z8T1SLW<13(ar9;X02QxHj|Bn185Ofub}@UAkVqo2HRuemI`$yfLU2uI-^J!Db5hVJ zV~+4k0jhad1I&*+q2P7qwfs$Nww@=SVt}NApmeM)GURE#BG^JQ2|jF&#=4IgH=jM7 z*i}v7sR}sbrE@)v`kfw(+w4>m_ju{jr%PB;_DiJ)&XE-u=YkhF3fI&~`zbz$tz$Uce!NvO zQ!*fkdCE`>1I}xw$c%{)0vQ*8D+(yQsS6YLvyY{1!r|afoiUH4V3m!odH(>!J5t(> zw9YVYttNo`lp)vp*GM%4y6|6y^#yIxz+>Js$RBi{{C1-Fj|n1bli5(9>c&r~0J6d>-3xwrngfSoOM!^37BU(OSOUWcI6;d$d z9;ABJ4SICdEnvHXHwkBOsO0xa0aN;wtS@a1*5^yEu($CIo#Jw{A~&G){{RY~#gP50 zz_Q3dGFr^9k~8w0sUN7UFAy}>J{|Dg0S4SE=v>}zD59nj^uy!tIX^zTSWN5 zsavpNZ#;%UhQKQLV1GQ1c z6-P+5wTj&u8)#$5&Q%6~I@BDFwb`pVecpv;iBzdonaCf0J_`LudbevlZw}Dx&b*RF z7!Pq-)3(_eSk1>H%lp+Wo$hCiP1?94A3AM+{=H7Yy19A2btGZE#|Eg~uJkarjk<8Is_u9Bv~3`_wXwI}N;(oY$ulCU5vg_3bsi zHsT^w#d8@SOp5xR;`x$r6akPx$2IZ(pCOEr8w|fN{445R4^WR#(k%55LwT_)4Ep1d z`R1H-lSWll(q_{|BM{FZk3C$UnEMY()v$#v<3?SeHzfBppJAp$-Rru(%LbO7>`~XEB$MMwUcpWZ~>7vkOn#Ee_HSKdA`?c zByO!4D}qYrCmG}M9czTVhsxEZLm-JnyVc3yD}2NC$gV0Yq0uc(KLzR*(xujsseIN` zjAx@E>_@mfk8xD>T`Fj=Ca|~*E%m4&Na1c`Jm7!4IUbGm;~!hMI(7QX0GI6Yfh2DD z1+p@6j@hol7Cs=-pq>T?QL-Ep)yo8RwU5YzH8|uAM(`%znBO7X*C86%-P~pNe90eKgyqU8cRDFmA`?YY=5%c zeuPw0jn)>DDCBO4@#u0tt!BCuWptx7_ZV}!m}^raSQ})h-i!@u>!b^ajA!?IHZLB8 z{{W3+4)wjOLciIT^9I~W1p97Z{GNs$@@d>Dnj6lRC(i{r2`}D=}k3hB5pl? zV^%F3hfW6!I`pcm!5zo7JqgY`XEd6))3I(?%U!^P5PaRZBODSB^{+@~REKl$0M1Wg zTt=O2*IL91rDOQ>9nP<^(y3^)pn$KhJK zdKh%uMD8I^J7T=cG^%G#)(+(lo=Q9p-K^&(f>lb)G1!dk4a5n+T@ zV!@9jjP@1WUFIuGhCjm_H|T4Ow#r&Xj!wZ>OQ@tMR96Io&OeFy{{ZU>9f@zeNFx-4 zkU@^;sdWQg_cZ z;rDs0wkjx;5jWJI^qR5?A17C*>}yt=Z;2iUCc?nn2Ec}e-V_*EOAvwTX` zO8`Z+v@r~hpCZ=al|jmp zoQ`qFKhC`OQ7Z6H1$KXvqyK~$!=E8;@ZXS+DL8)K4CajJoFv<*G^;%cCXBR2Q|ug zWo={BXGK&==8)Vnh2_9drzgG${cEiA3E*H4MHnBYYX+=iQED;bZ{iCW{{U$7`BCMj z(xkM6@qzM>@uMSlDe(|x1F_<-VhlY+V_S#^*`W+`8xS*$_Q|SRt(1@9jZzy%+GK>d zLD0JLKb2|f(X?_F#$A432;h-V(%;XAE(gpx9l5NUS2a$^so{%+)jTTFu@_#De_M3$ZD>BNN z@|<_}HND}Bb8)K03xk*W2=^fW09xmoarky-nl-7b;hXsk(V=V%Z3Em^H^qZ4pRZ`z z)HzVOEYVmxBIqjtABCuHqn3zc>|oTB7y8!|EYn#Q)dxQ6O6ehknK8CYb2>ze2#KaX8Jx1LDp^21vT!O{_510gCdR>3V}_aXewtQ^c}HXG-_TVlCd72Zu8uTlL3f0aE+ zPY=Ouc|V-_G69ST_j7?>S@3(q3#e+}+IKN4L2N*bILI&k@5A}m(KZ(Q$l$OX?mSmb zINn^xHEI2nTC#wFoD3d$&1y!wSB!oX*kV-xp1)kw++!8ejADkj74iqfOW7|xO{+~J zkj-%UUrZch^slcbCkGYsm&O|(?Ee57>Vh@G$sm+}z=nUuxv?u|Z$<8rnc-`qV1#ES zA88rvYKMxf!fFAXytQ;>&fMjP%)g#U&$Uv}t{HBgEP=Rg{6}i&JWx%}mL)(*i31Fb zfI%l8ik7Y~hG#*?>k%~C4UNtlUm?jTP73<^kH)N7Ms8!h zvQ%f^7@jb^;gtUXfi=#wOoW9!I`hqT#a&sMv(q*CKeOhKP=N%xb^wht z1osyAR3*{giDIypk@~&cy_DJOJe2@rYrrNEmRc0OPf78j7P# zO<2V*<+eso<6DVyvJEQh81iQF^PJ&GO4%Ytwd4JF8T+FMsQU*P#(|rPK zsNR0G@DF@bK<+8o1OwmcS~5*2z{`{Xz8|YAU^V6F_7` z_mGr1^r}^=Gm^6ty>Hu}wCFMh2lqp${{Up1bftS4l*&<6`~Ux-jsFzl-~5FnI}!)@Z(g3k(Kh;{v2Yu ziIlCgd3aJ61KPR&00j~j;POTSk8J0f=q7A@y~zXm{{Twks_!#s?Q*QhdHW1WjhJuVFydX=c# z5t-U)npo5`bX>PUItuM>NeFtxlgyo( zSu??NoP7sDPD`09g5N>f=B*d@UCLXdzT_%oZ4O_u1JkSj-;{vf|&6g zjAW6Uj)Q^vRi)gUop-~5yZcUD@X~>w%>Mvd?GNi*m%~W$qt5u{razz+)}AYtuf)oZ z!U2Q*Y3jR~R~=3%pb`NCk6zVOYdUSE%x2>95>bI@<33}YAMUPeG@E)3=2o2ke~tW6 zFzNP>EPVkZ`d36gmC1M-Z?;@(H={V7=(x|hC;Hb~Il;&4T2#^4nCv${N-5h#6$Kuz zaU;WWvM>cnBRS%^Ul71AVAU;${I|DeU-y*f`DVI3T1JX87>%PD&1Brm5WKXQ5wmzl z9?mwO=UG&G7X*0!0FJ(EJr7oh4eOZBJ02Z>Qp51CWzw$J_SV+z2-`Gj-F;Uz<=!Z; zX}mM5S};58E(@si3g7%ppZM)`pA9F9e+^np05=c=Zq46lY=QdLv3G)DHLE=b9Y<_t zqkfpDp#%fkn0Yv>F*%-4EJaTSU+mfYDYZ{xHQ+imc&_fob1--;CaV5O#GPEuSmg;!vN+zf>(BOeLL4p;Q>5;8?&~( zaQ9ZKZRB8n_TGo_TvSqTW>ogMW<5MRZoHaHhW_u}Py6J5T-AL=1aq($3V8rlpg1)J z;~-t{7UB*E&HU?YBP~oTjW&HwF%(jmfjqX&*dI!hMbPZ5F2K6HX-HspsN6@W&rWJ- z?q!)u?%1E*P6bmL5)Fi$R68w8S7!V+7Le+beVQ*MtcMI3jl-zV>0B?w+j9?yr2qvN z7Rh%T4!&efgU|bTWS~f;u<&)2XWFK?i5b&I??DK^GBiIqQ$- zSo^@i$gQg>(WCMuBV%#TZ~nDo-of@snHXgl{G<-qtfQ`myAxYZLF`9fYqju9OMT)C z6A;@patRn?f(Iw@t`gjl>%X;veOtrrX(1Noc-lD;PEI?1hxDwEh}v$=c0EQhl7tB{>Dbo3op8}T zyQ32vm?u3?6;3v&)7YEyMKjF47~M;uc&Ag*UN>ioOezz!0=<5N1RDAt(n($GY)2qh%8}^m<0F1spEtx zU=(`vtDaF44{$|FBEiqKG>~7ZKu5+8PL$yhBCdI3Cj%VjpS4kP#Z-HmED4@rL2X76oEmfR5+AaoWwQUsz2Pi;`6H z>Bkl4RcqQ@?5A}b9NUq7rNwXo-GYtJamQN8((EL@)*!NiJ@QQZdRC5#k8^1yn3a*2 zFST$9BZeJ5hP@x)--cn2Q@Ye7T)JX3EJ-6gll-bErR^M7QtC?4x#>O*&?3>at7|)T z7)9jcC69B8?JZ&vi~vdQO;WQ)FUHUS2-h(WR4hl9gky%!QoGgb*T(Y}9Ft;Wvkl+%a;Nakbcm}(O*vX~K7%cu)*;F3u z+q zO1=3Vgm6pq0sKkSXZ`|fJ5htlyp|BfkTKX#aCsl071VgD&8_YeVn?;Va>bW%;AMHw za7g?snz#)ug}lIJ;6G=R9^9$?vOfyyr7NqVUW}(_E7;wo!WPONN2so{@5Zv+va;C1 zGBCxMl6!JGX1OOSQ|24JYA9Rhz~JZdttAyLSr)PAmbY_VY1Yz5v`C=YK3CKifxkkv z=h~&*_qQ!2(FRa4(-qnHK4rU}O+RoFT_KJ$=_>s3pUp`8YXikrq8(0R5Gu`yfE~AT zN8oZR3T;NKO>Su=q0PGX@7JYkcxH8q?lf`_m`q>~ao)2fOlPmwtZ2?f=v5hG^C#4E zU2@hYYja99lHNP0N;8W&gn$9jTRi^&I>ppf8Oy4&0&rCI9qX)ZkEzu2hP^An_LthWn{jVxJ&?6A7g*#39l&$Q^f{`nHx+a!+3s+5 zOz~Vs@o_Y49dg(i2Q_D2QERSB@v^jUws`jR+T7#%RXe!a-s#b>O1C)a_*S*Z7oH!p zmn-I5NNt^)j4xIF3H+#T%`xspsoT7g%KIbvq7w$(eqqqydhuN2jjU9ThPv4>x^!D) zSzgXV42+zHjrt$uT+QSrIU76>cHs5;)280UO?4}Z-tci&))F>VK4ffzJ=>`MRfFwQ zTFln>5z8MAj2wMOHKgOs7Kn?pxvAnPL^{O9N6987Q~vPJ^UY-u@|=3+y5AXE@3ynN zh~*d%ao8W21Nq{)bx?D-{#6ub%@oZi9ZK2B$)%-nh9jjVYGig^3__L?%EyBL0LWH} zQ!UB3ke$OKHP77ybNJP50X&@w-;P|fRksrzrZfdker9X|_;oeOH+eHPg|Vlh(MBPBP1Qt z07teepaB626a(qSPpm$53uW|HY*j(XB=i-$eiTdG3w6dYDTYOjS(!t8r-FFoVw?zL zz{&Kg_iy{A$m@alRUtF6@NLcYwuGr|X$vdJ%q5mm0sjDifu7#Au_J1eb1m}1zumQj zFaA8)H5Z2y%FwKnAM(r}&zihWarCZ9&)z9VO-f6p+sxsvjMqp0o667n6N=c=tgYgd zEHK81s?CK^Iw>^-V>|*e>T0&Rs86NoHy2jS7EpyjBR_ax@%Wlaw)GoY6n+{f{7EK| zkG(lRpsvMZXFnp7^sXDhwpy9dAU67fTHCoU0zw)3`kLSV#*R`x+jo0-eI=aj{{X&5 z1zh=V+hnbcy@%3@#s0w3zvsp;%8HAjot5qN%+eK+n6KBRL#KzGuF>0ZU^e?>(xhla zGD!-2{!_AKj>DyA+siaM>|p^a!=Fr74yoCl3&^poTddmM!pH!JRJ0C#i5naBasL2( z*ER5l>7tiX(7Hw=V#H-YRsQ?;`VOYCb=^i=WQkPoMmXIkJ5Q(`1t}$A z#k-buJ2sretT>H|mt%|%VOjneX0q{Sv!}Go%X<=D!gJA=P;r=CZE^T;e+tQ2GexRB3%RJSSIoC?I^v~eD$J*<@lD9w z$_ONNtxU`%CqCJwWmGNGaT(8{rMOcZ?wtngieW3A&B^IeB9UiH2Y%8=UCUZJrHX4l zAJlZ#;Li)7&p_D9pU)M}!F#guFu!$J20q5Ri#PuOP7#I!a_2snsD!!{&pFeyxfja5 z)MWBR(L~Zlj5qnK!RymMjdp$zXI(ODc>z-l&d3j6Ey*K4Ly=t9ifpB|)-}i@Cw$Q* z^bB*I(Vv)pN2j%I=r<_sX?Gv`o8;PY&@tqGppV9sZk@tfqo&C;gsCKuOLnFy$R?AW z)zD;zD{PlJ`c*wfB1T4Xt+-W*S1cPO8qU|R&6E+hmRzyhw0EeU+LaZqhOQ&JvuI|) zNl>F_(APcT!eh8Lw=I)AZEXJl@5jb}5rg>DzFo!Ls@ulp3v$4m9A}U*?NzntO^&4< z#hh-D%BeI#&QAF7u0IvQ{3|=_v1w^yZ321awVDg0NT#-x!l+_?K-lZ+$Uj5vU2c_f zjTwSLkl)_v^sEPk7g75}Ir48*GjqmB13#dv7Oq2(cx5;>Pyd6$hm4ua{mEiFn(8O+fj z=N_PUAIgc-(&!;RjPi&##XpxK1$8?}uV45}YGan_>9K(sL4)oyTqd(%WQ<;*UFdwL zRqMxp!n=Qk1~*Jvzj2*6i{U?R+*c^d0qM`!Q z6E9$7y$Q1k!F)=NZWW{{Twk^($Mw1I3MR z81l6H-?)swC=5#lKDc5>{0LMzTGrgrE8R2PbPYn@`V}SAIrre!joc$3i22 z((Pvp1ZeESL4l9};NW}kYa;8$+RXm|EGmQ0h0pV?zOa(CmZo0D`yRn_BoGB@B~`)a zpK9lIPa5d97ctwt(zMbNsEhLwdgF@ni^(-TPC(a_&QJGQzF*3-d`G27G>{3+oLgd(AS|GO@_2=2Q1n@xKGMNc=07wDFbxwPx~7J0rm3 z%|tj1j5_`YKb23XPj9a2AWlDVeF2Gq9-|+p^sXDg)_1mkBbv_U-P$-At#1e%1?eI{U!;))FNXGyQ$AE5y3E{s=)rp9N zG@NbfeXG%1T;-0e<^Cdgu{<}XqQc5=?l_H4@Tlrf@)dVN)M3=L_%5J1NmLQ->MQ4O z8u*G|5cr=^mPX8bib4V5RZajO&bxnvI^>Ys%MHsS+HO_LI0YQ=Fg*=%LlWgvU5=U3 zN*Zo^Hva(OJepCvJ?ggpoSr=@&&+yayOGFvm+b@L>8|1$gfKjjM4Oq_cua6XKKviT zyidb-A{)aKWElq^QD0j8M6!GT00wH%Mn>ZUHVEnf&MV`B-)Fg33!SZ>t#MYT?>P56 zX-e@-?{!O8)^us4i3xC^790T}<$pY5@vaw5w)<7vz*$lYsPN4F6~XyQ^yiB1{5dMT zI|PlkR1CR24RZb`(;5v%?O+=b$J$dQ3>^Hxdf~apy>rl=z1C>a%u5ExWys*|KT%a? zOg9~K`BuKGx^;^2FsV5C$M<9(cz!*98pxmSlatTsUC??E%?&E$t*)S!+?ACWIv+*{ zBlWJs;w7?N+SqE=gAiP<@Ar3ekHGE~=kYrX4upQS=(+^StoTCjN^|?jj`)e~xbgo0 zkB|I%xp7It)mKOObuJG29&Iq=fCp-YBxq+@Qy{4fJw;obGP5g$9=cTz?&Dz2*-GI^>#R{6f3wVxqVAu6OVU`}yemQz+{F7afqDR(Z!<&JqZ z(Rg7+?00%`!8dS`A3yTdK4tvIMRLk{tt}3DBE5~FWl2?ph{WIqQ=jpoarblxy>&JG zG!{$AtS0#*y@D^FT6QAj+rIr_8^hBk-;_1Dy>sK(Z`n>N?_fI0ZVR+S)K4$M&ree;y0D;$!twUDiUD1)q$0C`h!Y(hMi1c>= zG(Q`sV8+{&7$U-3VcXX$FM51Hl1<~uWQ z3-cVGTD5Wu3=^J6I6T!ft~GNK>Svcza^-S~kC%WyKdl28IL|c$XYIERxBxcXo@wnL z2QFB9a4U3(LOUw97=S;WSG#@4F`N_W#aLBPepLYdDI`-Qwu#idn8)G;7ZW``!XTC~ zr}tw~)7qTg;+@bCGmh9am?ZPZYU1-XM6j+GJ*yALkLBnNxgRsA{d4^*ppAZ7!5|7YTuzwm; z_=L6_xqTXnU&HjGm6vgzgRN?X47vW8~(*E+0S7a7+_DhCyK-IE|eQg z@dlCr^R3+6LGC$m{G|NqXwK73^)!D8+31(ceW&U7s@M}oq>w#FKdovU0$FlTV#g#` zo_r+KKH1@iwPTrWBp`pfc^|H8zE|9;!?>=kosMP_v3!$~M{`*^+zWGJ`9E{!7_CM* zZ>XpwUFzuF2*zqCu#~UvLNYsXQMy*|j&e zbB)kpcWi2CF1>V#M)8k=ZS&GvE%vTt)6ksXthMW%*|A7kz9A+)?Cl>um`1W>M6bh z>N%{q;>pP%DWvYfGbsa^l;Hfw71Y}YCf?++4hF^|vf2MsxV%@TH4#-Q8K0JE8sZH>#erC#}ZSv^KP<$+(FF0Nu0tir1ba zB5#SYGIGD|4(nY0kYf{ z+~(rgcmDusJ^iY0hMF9ZKBmmYZQB7$3=H)+uF5xt&DvoDOEVBa2jxEbsP?tX%F+QE zN_QBOJ9A6fMM~&g@0QGiQ?wH#C0IHsAzgYLaBG&mv@to@af87PTjGumDeCBPfuEJp3i!=bHs ztRVvtrvXD}9gn?p9vsm|f#Pe|xVrNG!!GF5477{4A&K-UjQgps{^btTkyS#7R)Q8-K%u;|qfyOiW;-&E?iL^aL`4;+wGD=Cpu5zRt9QsqTN%I1`wT>#oQn1pl zuRJ@ZS$QR+6Qr{p+m3Q}6VL;X&apgQl+^6?yJE?0s3^3&KykKForS)IW|w`@{07FKwaLY}-z@-1hpUUUJBX0SEx^=eQsob;va>rM|^4BdCp1 z<4>}`QWyjf%tvwjE%+Wk8hcs|q=8w!0=a0#){Uw%JdqOw+fN6MqtiJD+cnWzLh;7- z^SOE8ZH&kGhgCm_#R*)Op@DyG=0PMZK2{j|S8w18U$S^pPq$uhhp%s#Zl&f#AJD zqcFfH&WoQO~Vld{$vMfi+8V2bnSiMLpXf{{TwrsQ& zv&aVkI6UBccvvK4F2|HNWB;QG2ERp%*g5JkSSI z$IL$w&*5HsZ8KZlq>6U3oO9C^=w2VVBh0s$pjJOA3>zcZ{cDD#c_qwrr=i2df^#*H z85aZ1i`qpTAH;E7^nt@LJTN?i!Ox|4J|VMv8@WEr1ac5w+>hZu{bO8?s?TvE-;S3g zmk0P{2j*YTpT@fBO8Su{VuVX0zsjb%PYK=0rrxBJmKKtHlK%j>dXerpKZRsO@v50I z^CT!T=#@8p3_x^MMEO4 zR#hG2ZX5h-W?6=T;%u(h5I+14lEUMW`5e|VgS&~MmDSEh?jolksU3b+2Lte`z;j(! zjWoowy)SKswV8bATy$kT*C=>3(N28Pxs27BV$OEAx{72ZG;A1S*w=02M2}Flv()YL zw_uICU}GwOQa=jdgI9Op`QyIPZZyl5#_&*Qws}MO=ku(qu2!bH7fs&rIP7uvi6*qX zHE+9ELP5eQf9X^tMzxw~q>L6)ROk3eJ!_`$^zqFjN#*UAZ0K!j0rUhd%*<4%!5mjhn7fXi{}0(Ba#8_kzSACCx%wAnG5-sFc_sSa(u<@ z`c;UPqc@N+1=Y!1jPQC^D_9z*%QB~jH2WPpNxF_HS)-W>IwV^oVmdg)0L$bS)Du$dW8Pvu@o@dTTFS48m* znZinm^AGPP3iJNs0r*#}Lp*m@*7tD`W0?a3>_$a&-u7lwjfoF9C)Sw!K56}_vVvEN z2r)GVYaLQ6nA-ud`HJf=FC)}6xuOA?o-pg4*z~SvTZGMI%!4f-%s8!&1l}aJYOl1s zXB|1g{{SYkdOLS7p^am9)_Sgx>~U>zBiT#rWEnz#;7gCjx{xq=?bf-k6If10p=D!_ zwB$_yCmD4+)P7?hjdXVR0`}J4^e(}563w*#00|?J_#BEMrh}J85-4RLio%(hB{B5c za0P7MTt#gYNi*$SBw%N)jq_c1YizH>sGXzs0Hb@c@UXF z1ZOz+#b!wx$rCE@PkN6?(bmrNUr8f0qksvlwZ4U`bvG_AZ|$z%Pqc|rRsR5%&-Xy} ztS=pDZxFkU3jL~BQvNN3{Iej$m_FkN@UGVGPu^SI#zrMwkB-DuZx!3`)1bbMH@&lO zAb%3{VfkjCD_3Bpszz3ocAAZ*nX0Zwnx0&^JOX$*`Y^4GFa(j`8TYP3!TVsj)wCyX z-Gk@bH>x-J2D;mM%h@LH^@Npt{{VP!f5-8yBFK^+4+Avb#*_{@=x8IJwL%FTnDD9@ zs-Bi(g6P|g``wG+{n7NRtBv^WRpb$^+$|)kj;+_eDka=&v8UoIWx3KIxru*y5BfC6 z{gQJVeFJg$*E6YVF1l5=s)AOM*}SRaiE>HKFnzs!jdc+j=G0D;8Hr=MjnT}U4YJso5+fKLGhFq%{NE|XX+qnF zJl2X%)*;0bHdumcw6UC3^<3kMYeaBqS%PL$DObp$g28hP$f~G5LxF$?tz4EOM-^T~ z4GBi+Qqf76e-Nz7M{ldZKnsX24{e0}jD3}k53`!F;fvq2Sv`rtk{rtb^-k&daw|z> zx0^_o*7x_ZkYSY%CBYcS;tg{eeVxvMbe8k6n(7mnNiVWttmAH;XM}TdPVZV>m8hx$gmUD?>!w`BmLsuOg z%*^i>#w6Bn)PQ4=j~L*LSDfg`A)Ww8LASo^LYs$xne55$896Ke00C_N2E8LzkltO( zIb0Vx$EA7ikF6$wZS{)*i@PS@$MG-mDfS|>lDjpI)*{qj`x{)e*5Fc*UozX>DEp}} z;aL5C@8w>Mx3NzJt@0i=gpm5DWAz90Cb)~6yDewKCTSp&T`K(oPb!WeW6`tN=k*l- z00Up#DY?k9FRMnaaz+!vl-}(TR8-gD?u8@x%=JfuZpzzuXHPc zGKP{h-i_QEyKD-4ryEbDRq+)5R-fe-1I#-~K9$ica=V#FeGijwL{{X~S4WwJ=_iMaLcoB;FJK@ER&Yhw?h4E8yZ8Iq={6O*zMH+4svm&!j zCv^*{9G-et5AlCTx7Dn)SGZim75XHdak0S!A8dhLZKm%to}Tq;>dHIo8SU;AG*Y2L z5A&|Mu4uG#(|oeI^H0UU1KDY^3#}dxA+fpPQc92qBxj-P#c)~$)5RgTBySjakD;%9 z(R@8+s9asct;>5o#1c9>HNhlfjAONU7O`peZxYE2PL{$s*+FB%0Nwup3gk)6G|t5A zcQ;^P={{^wK{dck#$-*~Ti9o~$mcz)&hDWC;p3dI+3#C&umMDK4u{ZZp{}Pw)k0k; zGLN&!O5@+Z_|*O?(DJTQFWp@H{PD56Tp-wR^^7< z%O5V>ELSmLl0Z9w?^dq#v43eL&BW11d1jj?L&HgfgkV0H$?4O*Vd=LGXL-3?HqJg# zkaO7AZTXglO<3sk3zX8YH5-tYQ)Mxzi0j)nCX?lI7%o?J^^1*w8WR3Q& zNY3ngj()kUeMuvKBI*yC7hI5d=eYMZwWnuY@Gbt9#I@d@eE4|D*_`9>Y>%S~=A3OM zR{L-1{c2xJ9A}HPSv1SlaCh6>D3UiF2sKN?*E3pQG_mgTlx9LYD9;4`IIf!N<+U#k z+CecHRNADDj0Yc>{#C^opXUG&SE$8x!Slt&Mp9g@G&f523DD-kiC6enzg+SMGUb!YpsK9b6CM0F2b{solw9EhL$q0CE+%$KzJD z+ZDH*nA>p}5)Hd{w|+f6>m=87Z6uk_(~Ge9+@oZD4R+dW*7}x@4aD)8?zFrkqMS6a z9PRq!rEt}wq3SKB-=w5(h=P)*_mK4zPB&TvWo^#SPARSEw>nt?WwgxJnK?dD=Wczg zg}NS5X#B9O80EW<_G_Sm;$0h3j^fyt@(%de^p+FUenzG7wVEF%P_rs*uFsmd1BM`H zpXpe`-ItRzmZ;<^{*8Fnm#F*5L-Myhzxv&3ht`3`bTxHmWSzA-e;7s$#23*o$#S1I zI&T~w@vEK~2@aUk$U+7rl1@0P8Z4tzu$xSs{$?BEEzw+b{Q6eKyaF35Xq{JbuX^Th zmOPK4w(jHX?pp6qP_eLq6tQ;WamEG*r!_vOFPC9+AUN3@AIBJ}EeI_s1EPWX{{Z@` zhP@&kKgn4a%$h`uC^_RfH3?ox3uHG-w(|7&K?fTKYcs?P&AdSKB)z%dfBNgE3abtm z104l&+R@#rTSxx@JmW5Z6aN6}tAo6PS|Y+rB1Tmr033qO-_TZmr6kL4`{oCC1yyh> zOdv~OPBME6$kp4-Sk-@xxD}*#6Iu}4uxOE2b2d6CClxtYDsdT5JFx<$mM4sq94I?R zPhmhCQw&B3=~ZzgRgf@JcMp65YfHgNzI(Y3qKy6|)hSB(PDmLFPajI!@H%a>o=;f- z{Dmn$bX`uGH!9gYin$cP;AcL@se|}X8=Qf~b6C|Er(6J6gH=3qKGE@GO0yspv$KLS zI}Aox{;gMR6x?0G5Wz1ZuTN81+MI&-<5s;WA5EcC`c*?qku#@UD)E6$Bp&p1 z&%a7w$8TECQIFa^sHV|Q$VKfM_{DoCk(Ebi@8TYc;1&bu!G(7EsaUnkS=0SR+eCIo&p>oV@T@WQGL&1C!@;0{OWS;boMHL1~>)+h)$ z0FZJs*y6eP~2Mnx`E( z&+^SFE5^jd+FG7@;;kj+@Yb`XGUnq-oXZ#cnJh8?00Czo@CwxUO{g}b;V-htb2XEg z`u_kARX@yDzPPdf0BmWxo2s-Lj0VXr0)Wzk5gZmWDc|uk%Ljeb!~Lgn@I$Sj8(DN)SWpMTk4Enn~<`G45xr= zA4R$T$JM1rI8J(Z9jk6*g=60wRu;8sEYrbpY76dAa649Y7gC~a_>IZ4w zUj6H42itIIkZSG}Gg_+cw|aOrK_)_8I$)_%=T}%Tht&IwrbInvDaxMs8VtmdxL{fEmew+j^sLh;@;X@-T-jiNT1zq zgj0-uOvW}j9YOUSs-}Yk&|OI!tNV%avk}rMlyZKIIUicS#7zMxLm09F^<2|~6qclr zu+Ie6jjM$}HDp`2%~~)w9QHM2vtc;qr2`<;7VaCKzSSz6Ha{w~?m)*(4wYJ1xH#)q z@wgIuRAqiqNui?#%Fp{c;pLV5-!;E@NaG!k;aPq>wtGjn@dc=2_J1wPsL6N<$v)*z z&GgN5*Krb_q*QjUCyq;b@g`S*-0ojW&eqVSE~h)E-8?fWjG?!Z)3 z8OLMpYS;ET)HQuF^6K!~-hwTfTXT)d4p(>3^gi{U@e@yq;xtIfOMrLBApRB|DDcj* zFDyRQDxbAmsgCXtGD#i4`g2)b?|)NO zaFxyEOyK_joK_EwF5!aO-aHq)++Gyq1AsvU{xxwtMWx&Tu-&2L6T!|alJP9#QoL!R zd?Ng-p4jMr&#gL>T)G4!XQ?D>4ehc|A1LEI^&X)6gT-(^6ub`}v8MgH);!(YjIbSD zKg3sMq+Sh-i~^nCIO&G(TB|5yoagIU+nE=47I}xk`wM*zJ6n$|6r6ceNz|#%K|a~9 zYFl{2JgB34<0N2*SfNZYnz;N`qR}^=$)5xVW)#I6yqOWnI8?$Oo+v zo2I?tN<8mF&|(2sHDM$Iymv$Rg{$1%{hL&V+TLt&wN5{sbQfMHzm6A8@Ii3jEN)jL zb~xg-jv^$wGEDNHi(1w0pYa=5{>{3Y)?BE}M;ZA?TJl?&WSV&lu36ubN#`}}y3c~; z@rJ2+sYh}xFE;JFg~4o3>Oa|G$UjlqyykBM_=Ma&vgxlZ#Nt0Kf$33CYn#cfj9nUX zuQU?MBj3sv8N*klczaM?Qrb;A@ykw#6tOuu>_&eAE0giZgD<=*WovUJt1CLFoOygi z#Ag}r>7QE7&^0%Z$2?4a*={~yI?A8oDr(dFNO6*S8@?mcZeWz%Myl5~gJh9siQ;ZZ z3;O>6_3MkdwYRjLBzf4{%)8@c2Q0bipHa~LE7tB-J$Fft>eS}p0O{0@<>Jy9k(kH@}qV>)wAJ?i1eQs zT1HioC1Y(q^Vzu1=d}J6=hDY0iat%PkGs^42EApZapsQ#k0 zsZBpdOj&Eh_HUzV7uIp*R5zOu`W?gikHWCE9oN>MZGng*b))$gQCa$w>~3Dp@npfrMjoQQ z9?$JM)KIpc`^{F<_x9|+#-MT!wlWQHI;Dh=O5+8QM&Lr9x_Te!T7C@FWwyUi9kCKK zV|G4X^}SegN1b#sgstwgq48ymT9uk>R)|$(8!ltVF~33x>_M+Qxq!mhET^6@dwSQY zMKpSC@tuf$A5tM^T>k*8ko0e%{{RZ*{7>QAi(9cBykT5>A=F?LbIy(OVquAUpnP##! z?s(fY+G?d_h`jH0h&M9d3_ zB(|DsX<`CpZKpZPkyUye8tJt+OEGJ9#!r`U>7JgIq-AtN zRwvV^Hup&2fzB(mGetaUCA$WUe7yD}gIo=DT1~W;R&mKJgUOvd-Mz>E0IUzvv#OTt zxHqw8VY+4on5k|?*Kea4l-~daJ)1_)f5HUvI#75)z^HigZKDRqJD%-FWWcqrVg-HxrI&fr!Ce4%8QK;uu<_g5z&D3wbfLe7yd3)Oa#7G&OCf1=!~tS0ky( zn3v|xPp_qP`ev7Cwif1CRotLv-I6j!dQz5=)SjmFvcQMuo&^5@dPN`Bpj|@67=d>S zar`8=@&>C%Yi^2syLgxAfK>6S;O*nRV`OP|ZFpk(DRuiJ40F%r$R#Np4U!j=jDhJ~ z=Yi)smx?vrMCbR;&(B|-$*#-6AG^H1x#Wvm3yHp%jMp9Tt}*sI=}vNFRnOu70N19z z7E9=NBz(M@XaKe;T#!A!l-29&SqzhBzv)FAT8b_Q9;nv3qeQt4D*pg^55I5Lw>$x>Izr7K4-A5JUqF8F{PS2T zS*Fg3E@++Zjk+UoYT%Ev$W?#cJdf*JlfW((M^(x4`Sck70P9s0Up9uco z@~899=Tchg4+`#$RPnTf$Tg}~(8G11!(Yi7=o+=G;r{^8-7jt321vsXPP|u~YnKw; z!v~2kw8Lws-7><0EaqZ^Ahu6TV*|b`)pe&9MQ)>qbWQu25nE^jAdH+IoYy;jW;HJe zc!$H|8|@qIc4NNYTmkrbi}_SR+1T4zE1f=(Z)pybZ1zWZkOwdQ?2ann&UxuvU%`z- z?cN`kPL%%o(BK2tV{$(uU9%|!UCKe`p^6_S85J0wcPKx@>?+r{ ztuS!-{V6>`9X6MA_c{bJs}Uu$Y;rp6Z~nbt>ek*|*B0XeE@L}M>~Z}#KZRWIoZ=h# ztmfhyg(!a>pRHTgZ5m5_mHqX*XCAoViiWzBnT_H7LA6~T3yHtu>2n3j_gPbh{P;hO zXaykjtP58D%<*tV1#GpX$UnljNI3d#OpmCpl&*R8t4lzZjH!DEn+8|!FCw#J0|Zv| zf9)ys=e=ZIMdaKNIvzz9AwGm#<0w?|wDqkGGBY$YOwx~)a*BPs4|<}p4=^9$HD)Vh zibM{%OoCJ#XPTQ8b6d(?Pe`8Klz}pBJGnXa_OCoki8Ox`T3=1_$8b%Z@1T%$Z^wiA z*P)4%OlI?BQ3)H>v(-&;z9)q>h^3a=30BtemKJ9i2{0Lrhi-oF;wmQW*K**lpJPU0 zsN3szF+$NvYa&N1F?nRM!)=h~JwPDi)9G5_dt;%jZwuZ30Brbu1f|yg!HiN6*l<9` ze-YNUQdrt0n7V~0YZ7n+bj4gqknl3Yi~=ZiE(pmP$jb0VK1NvMW^;s9EKksLReUXb z2EV7tcc#d)!j4d$gpt>ZuOfO}j{Xp+7-Xg}z?{{cB<_gCk>;Q!2ltoKtxE`z3NYY| zVyLWd0St%tk(`flQzd6|lfH~@u@t7xUnWl{a47B+1GtZoo7f&dA8Mzd-8KG%L^ z+BcPR5bVRR;A^Kb#i-gI0asE8^#`b~IvbbJJV3Wo0&V5nZF$F0{1Sgd?mg-rj{O-+ zRc@w}FP9+3b~xOhLsu=|Bi94-6-xZvL9f1@Bw*T07@E>>bCOO9f$TY?hGMOp@(pN+ zX8pXFeldb-?(M)ZJk}%<79=hP?r=N%RqJ`mu?$Z<9zR;4SkOo3@ToXGJJn#|fPHD^ zPzF2p6;~p`AjsraQ}2pw#+h-KLy!RWty7=kAfG|ns$Ik8MoRtR%AZ41BvN)~JL5ep z>e@^PYWh6Q2Q{-n#l7W_8&N*hfsilEJvNM@9XG)1Kzrg8D&-veV?98 zs`LnbE1mJIS2`BI9uhc$ZhT;ayOtH zkN1Z{523Dd?^c=}a$gT$LYDe;$P&z{!tVo>IOtDN=s>7;UfybvvI z!9I+<0>MuFtmTXgb-Bs z2kHE)J5^aMuZRct5A#I%$Sd`w&256+8MS+;D7kh;AO-o;KYco6dy3exzj+}>NAo}* zF<(sJ6ZNhN;`4ed#KX^s8I!*nAKQr1QX1DrQ?_V%e$vkqIM)a=;GgUui> zq3clVmaBDPBuAAa85PULt$Az}i5cimQ~v7QEcEa#6{(+#|?41qXhI3#vIP)F%rQR8iWZhSbjP(OtFXVR=pu<4UNqhl!h zEa&|$H6Juj$L~P&>9~F(x+y+W8LOGU7`#2Gc#_P;WvB?2Fbmo;;bbF_NgVN?rFaeg zk*j!HP>M_2c8e$EkQ}S~WPd99cTrh&J7aNfLfm|+S%}DC(UkfSaqq=*8il2p=Omwc8wRVi7CXNHcT8rs=g9P&Aw4aUY!P7s)2dCHTTAnD=5>nUJ zi?}joR2&Hx``=N=(DUB7ZEH!p@Mf>JMRwD!3D{e%2US1q3hlfzs;$IpX>%&=kZyue z-|+rp-nlA4!QASMl$Fmv)NGEh3I`wBFsp584>u90=zrT^)K(UicDC1XJCXvhJaxx< z^nV&!HKcJoHg>k~Zbmb~8S@fF>PsA-f2Y#8jb_PiB9ivq5oS(qp-zL+ME?L}_w+T@ zPHJk*&Pk_pw6(jmywVcN*qL#a>dTGFJ-%`O0FPIj+$j=9#1MKmdl6GW|DV{@oil!Odu_`bF9-#VCr%&0<+o;@>qG(^j^I9#l$W^6`7|NV(@3i`g zlPIw)f(O( zycg*9cO?Cqbtxbx?zT8#S-O&3eYNa$M|YMXh@?F3TyQos85P-m zuESo^KF2k@t*omSx4Pf7702Aie_E+Wl2=PYQ|4Z04C+G>)PqeN@mg09n}}X@U9-i+ z>EHeQe?Nb%Q=H2*o@1{pIKu4&4nL)AnVUw=li~SwQeo24=HmGic|}3Bex#9(^-AgP zl3R!`B?W_lA{GSh9AsmRikiauSuJI?S>7g;1bx5q(FbGi{KaePx|W}KiEX55R`5w} zw{y%(y~Y3p`T#MUR5sS-Sk2Mpmf5Df3me<0^5=<|0_uGS>s7UTF=;ZqKQ*1e-y3^+ zeMM@zS?cilR$6;o>cDL=#QUR|4CRNTdk!!wI?cn!CYgF!0dL(iu|A_ zA}uPS{LI7wj`^Y$v@7bqvn!Gs(L2bdfrg(qmh$}si%xReBa4N>SqfL_5 z2;p{;8yM%fan2p`Mn|R!jw+^+v->{TQNaOn#C9a}Q*ACct1au-A}uz29!l*Wj}^^W zro=!=+Ib)WSNusXZPGqIcLR@Vs}2L;bm^MX3ehF*I^-M?xw!3`&WneZT(X?)82Nue1V-BOW zQUVKr&he=|c&|c1u@y%k41QI?S*Mw+TA}AIx%}(AO0pl;rmT^Yty!gr=+%f1IY6}#X#Lb@9&ECjW15K z5bpAoqywuAny+=KY1%%WsNLKFg{r)rkZ7NvCr zgE7twiJxEMAD{E1M;oGBeAZ__AxpXLZCmclgs=O;x#*;8O+!t+$m(q7&rA{wWd8ub zfFD9@YG`D)kuH#BRPOzGs(PJ-bKP88l2+dOJ<$+;>-7YC=CPM^cr~%cczRReZ;G>9 zu`6eGcCLDCepB-4`PZ>(F>RN495~P8-n^gUMU0o47MZR`9^0E!{d8Rs?{{WsUz!>YzAzaYR%*sb+>t zYtOO;ReYy3F!@eKMmi4k z(&$Cbd1L_(O3l_aY1Z8%v5lm-+yOmyiqN`%!*IylW09Xqmc=27$=bQ~sFH6(RP1U& z5Y%)eTd<}`er>+0dXLYVv43F>r{VeR0rJttQyme83XnT;1!u=}uuKBFf_U}LYSeQG zFN7qMZy@<|)O~#o9IL3CXP#)+^5}jghW6(o-tEn$=Y8JD zP7mJWq5VHfgstwEC$y2LJR*B(VLS&ypP0pQ9|Gh$bo%CtKg%Lb=BPdK^0)F|&bzBg z4A$u(#^dt11EUVV<6LH`WhRT`San-9Auc(5cjFE}EFZ$Old`!H>l4zhe789V58vLi z?xMgF0nl^wt`EhZ67-EVVn~{4ZnrYDYB0z_$IbmKZ^8aI(|k*|-Y+pPJgw~;uNdxg zLYHuGYg1C%>1=K`I{^%*NgH_X^*Q`Nk zB~6!5_g`Pc8W&)F(L&ySM?Z~TNy%ah6UAWMZnd9o?a06~KW0qaB7n!rfRPo3KI-S?mCKs zIYS^|exjS^g6iPy1HY|R$scnMQb)>oZ}F%?N2prdY4_-|qp4CDaOy>0LL>*&91&U9 zQJ9!*IC081^r?DkhP6E9q@TkVZ=l{21CWwW}7!Km54mhgkZ zo~1{sk@F$?uWHUwOI6g_Hznqc4HLu{dR)v30fUD|Uj6H+zVR)s{fq)1GtNVkzo7b8 zEqmr_P!Vop`(VS!007LOU@$(TxU3lOHUgl4bAyAL&zZ+SvU--hZ)m!uqsULpFmgJn z9TF8^P*L3^6I)5hmCW=vp*xhh?8qP6N9nR-Xx{m4=vb|#* z#~WoGRQ7MBWa@X<@Ifw@d4L0kJae3N2hfVn(Qf6xwkV(L?W1QBgZu-iIjv-xEm|fL z`9kg(*bgN4!D z_ZZ_1?^0W%5W-{;?LAmveKYIrPmcCIJ(_5M1F0VW07}(L>dcmog5KryOXPuxk|Llh z5rE?yuhe!mt^{`gc{dD}#(QUu)VibCX<|mW^}`*Ftev|?0=EuRN5}E!ulBX2cGIlWLRxvl;xOo z@|)4us6WI%OH~_MZbO2(*Xn*5gIu$o9b#WLDVupj7!kI5sp<|m&135x2eP-*k}VD| zv&{)Cps{WL0H1&Hu8YrmNrP}#BoI%hP=1xI3}*TPBna+0Wk-KX(OOEzca&YxXUNn<(rTy@WNK8Cd~ zt(Muh0f2i~HKbn0YR|n{!($1YDd(y5Aapgqs$Pb-w~`~~z{3Jg;QBD^YYLE;I%wLQ z(^h6J?w0;?8&xtS#|o-B2e8Fdv$&GR2fILAMZ4F}yGBPrMUBha+$*32AC;8!VcZ%?bsf&*NZkj8HA|^pIV73V!YPOGr`~VS0a%t+ zpKR7_t&sysG|He6k;%vP{VQ)+Wwg<>n+T8~NSfu>zUMq=-vX<6G{tYO%cxu&TUkWY zIU_g&jy>|iu}^s#+eD8+_;w-GynCQ|K=;t<;1;AMOW1IyP%efDhK*-7G-mBVqjXZIoIc5NU zHG2@=rRF1p_)-u`Had>Ar>N+6)<|V|eAovjSjIs5j@6u3Y&jqmBdDaLrK)8x(3f_- z4?lF1`2$_cuNmOAab6s?mg4GJV40w3#|{)8zgp=9z2L|EOs3DWApVsVHDZZ<4sfJI+>_3ubUE#`e@eWT6FAFidWPZ1{q8@dWYX?gbK+#8ABR34vmbiu`fG#k z6+(~w3bd_Y@@%1q90ZL=3=bcf%GU;_7)Mw2Em2^BFd?xjX~YfH)P{6lTxq zMD$4sZdN1Z#W{L^g-Rm%NNy=3OaaF|t2-5Oy!x6deZN{MYDwK$-pIrwISc91usl%# zZ$1%`9m3&)HPR#=I|3k@PPVSnAPbV`d2_vG@M~J?q}I31gdlIR@VD zKRPc?N6ac{OPcBR{=YKoM%HNJp5VuEEChg!^Dokx@JS|^8)#{5pL!5Ftxv1zOnlft z{r$TY`mba8R9aL`Z7La$?w>KR&#g_hvlaTHly+;VE&iK3D%jVw^rSZvGN#wNI3rhfma{# zGTHPm7wMiR(}`<)z$Go&m;t-~`ce<$RYBVEWzNsSLw?#S!L-iRIsDK>j>0Jrj=442vaz#yRBU)c1s&UR~iZRD(WzxG_w$2=KDKJN8 zaUxFw@C*|vBxCdZtBk(6)GT!S*tG1M+k8nH{{YWGq&DBg0xMU-*S~7CdsjcaUz#v| zdym9Zb#(IQg7!X{*#7`d#->`K$K7PMw-D+!7T4Cl@$YjOl|6y&_#BVIo)@vKPYT5L zSGt~v(YUl$`*n+RjgEeJ^Zv_ok3(G%TpFl5qGqi0F}1sF!m}v(kl_6*19{|R*HwBA z!x$4G2l~Q4m0;c47$s#q`Wj3V&|tB7<5ou6%igb960&WOhIQpz9qE?00tI)Ol_5pR zW;_AkG}WFfsN=b{-{rR>auhiF9%>znM?rCI4zZ-qX>tjURM^M3J&5-mYk{;kUK+j{ zz09IJjk4O^BOmzqWyaYCdl7<9YVEY^fUG`Z18{36$2ww42B1M`Jfm%Rqo3T84)N}+ z0Y2IEr8RYRxlqyA(1PCP+Sb?59$5HG}YTJ3%)5~Lgxsomw`$(R(QMJ68GrE3bVeo#5 zsyfT4+N8j6dBV2lre2M`2w) zoj;K)LdWE9xPPTr*R=TAUVkh}6pON0{{XxX`Qy-mQzgukTbf1L+3Zu*^qqv;$FRcL zdub0qPw<~(+upf2?pY*gqy##W2t8|{(Iwv;z8lo$W>-S?7e}ivVgB---o#c`rD1Zm zEZ1eE)on;iha(w|3xtz*%v7oB1xt9VC(3@H)^CCCQtHO)J>45Q^vM4J zCa=uKMZ*oVCPM-1o}#I0gw>4Jl3Pi<e7;CuBRy!17Tsz)5rKBK0OlQ_7Df6FHI$M;QkJ}lEE@aCreA=2S@u$P@i z)dooa0H(@4KR&#}sqIWqMZ`BlRY_aQ0 zbjx*Y%H794qM5ANByf#KOeL%&ZLFv7LjM5WZ*N0ciE_vlmA~?OuI#dpfL=**T7E zVB?JYR!)Pf9SZhK$W`74AWI4Rqn>g{{V&KT#OOd zj@7%Q-iwlq8B%E1IVb&Rpst(6z8AB;RF2Z<$*RP-X_#SWoj@W@>jmN&E$;NLxSzeBeru~w!NYQBRm8NvC0mO@0#d@ zlU9)~>r+$1z9f#xrAwHAGLQ)kfQ{YbAIw)zacvFMCQ-4BiVa zTH9)(U$ja#!*L+Mx>3Ll+szopdOkgCwb6C>^jkw~b~eCRvdkB`?83a3=q8~Gh|F>; zE(~Xsk$U{Tgmu8=brp9+@g!D}ww`qBCbrasYO`TL+}p4~^lx6@tw*K!UJKiy zC5*G%T^u}9$M+l9`h9Dz(mXM#2_(4Gu44|)H!Lf}ia)*XeX3MtDXjyUMQ(WSitY4E zom%ri)1v<@$}C&XINH&GSOQgpd!GMf5rRy+N&QdA`Zw zi|Yxmqs^tuta8ROjfTz-w`%BBVb$!~8>p9leq;w5kN4E}KcVPrWZf@|W;bbUdCmQ_ zK?K$-CzhiU2O}zT*N)!w+Y9!$av4L!+&pd3$G`a3N2zFwq{A)1x{;MzYJ`ORndlsx zU=g2D?^zd?R<~BkHk-LFLX#{9?wo%TAN`l|uBgd0WYa}U*jJhD7_GPEEr;Fk;pNh<_GF43sQl<*F!VSY)=g5C4GOBo?+3B}Bj2~#ypkpb|nQn+kBipy(Q>=F#li20JB=9n7?u%sFj;(2EgC=QJ zKMeEwS3?(sHOrS1Y1&4i49b7iv~0LP?6Lkw^Q{dF!b zm2v?%=RcJxH%V{>qb4odAO9DOUrbqlnP_T<_JYjVU!WWZp)_~SL|9}@K;cjKK(Sjh5p%TKeR z9htsg@vlD6ZPQWK?QNNN0{f)nsPw3(WSe7WyZk?z-qXQrbf;`_!{;3F!mfX%d7r|q z3h%`_hQEIiw=?V{$8#R&rY_ki$Ey1<v*)81XY&?FgNA-)sKvzgK%-^gD(e>>nc^b^ibg>WjxO-QzV3ipmai zk6Pf2)m8q=A8u~+?m|xPfAE+7T zyOf-gY|Cv4p#+o3>spp;zC=X_EWt=BjkQ&wO3rzMo-)AMnCDGHOh&GujBs!5Z^cs9^yi|85k}= z{RMOp#~4l#K_0@ccG#4QgIm)|VBXuD_YIn8*7VRw7jc|*!m<99P!b=3gX}8gPq=`8 z{dF1@Vc*+2cl`Yi`}W`AMNgCKMHgOTvDwFhO={W93}!RX)-n=LHD=NF$Pa3i2Rq{Z zFkIVQ+ifHfxodynUa=+Thf+5`>6&bqKDZr6`Sq>x|6Cfp*n&EU?w(zfyW0;@x z9Yf@C+jsu}tNB+vzjssm`J2bzg^yqH94am?Z{hy{RVwU%q2*8X{A-HT{8ymBvPNZj z+dp;%$tOJpcjhF$((bh5{42U92eITI&b(3$9lSr|Tg#iPVQ~ci0C7X@WCgx(r?K>{ zs%W{4Y1z9oztdv2y;RiIq8D)dj}by8NZY1!`2IMo{{RzseYKwrYMLT~XSW9K%Z{Ux z0RI5T*Z%pfpAPF#Nw(9bHjH` zw$fYAl_X>~GqJ}*QErH7^(x(5>abYEG^otCme(ln2LR0&ICUBBLH#SB)IW6Ch!WBa zpgo7F`hPlx_5{4V`*3zwWdcZ$;0GOd5$nOn9cwbe{l|!I^xKO;7s@8Lomb_RFfu>h zQ~DZFx@Acwy$uMU5vUzcQcrVHYBpbLw;?bk9I34aUVW*^03$W0DUHrVL$eBU*z3F2 zuPGA7K*oC2?OM-i6QKE9hWh%}Y6egCV8mW&qt3K*)=PZyht#1s z{{VD~>a}^7#Qq=Cwf!4xauiGtLS3$IrD4P0NjL+s| zDLBCNsCqpO7OPS_-89}u@|1AG7P4dBdq3IQ0X# zHPPF7R}h|s9CRYNjekqJg7O=^H0{)Fv*fYqJbmJCe^1NOrN@_4H2JhR&k$IfCu_TS z_S?DI>Hh#cU%LGdP-_m_@WphpqY&e!IKi(=lJ3)4(?$F-1Llt^>eY@up!<%-yx+wd zQ)x4+#>QJIa$=X))lZ`i;- zxAEL{hF_8R=)C=-vGW6{Q@HJQJqY)$ z-xFw}&M)mPCR09@DFdIs0siBUg*Zd-K0 zTRXd8D|5yAewQt!yp1!YbIMQdzV)=2;zT`;dXD0}r^9V^4eDIlubRVvna)q8 zZRvLU?EWK`Nvz~eC1l@tW__x=xxhWi><2ZIQoXJkZf!?A@ZBz#t}+XTjQyVJN6B!X z-e2myLF86Gy{C)ESnp)=uG0$*>FC3V>)#w_sOL2bTHYhKbA+DO=fnERg7v_eaLm!2 z<7pWO--^?=zB90r+bbg<-baoav~@i>C5kw%*O=E3+#tzO+dixOze=m9&u!uR#7Gik zyNCx#+Au>l+&2fXImdBU`D!mPyGEsq5bE~j7U^NQ5-5+%Tn|IJy8-K2`i`M%rD_ii znv2`m*aJM#m5B)c;vQS-+SB)*#!g@US^#@v zp&fYqsYdYlhSk=GFRdlz{qx^lPV!yIerI!%c*Z`M;54CT!mb#L8k+1>&MUk*WgZwT!2K^0imzGl5#8PW;@e{-U0EfLlNxOR{ZL$W5 zx~!a|5AL_Wp{FWI>k#Jddw+qvNqyni+;`wVG`%;CaLakzPI1T7lP|tf%|HWL9^GCz3?n zZ{@ALoU}R2PTkpY_eu31jb#?@lN(EW9%*>3ypls_sjW>DS!+Y&-4fAl+ODT2Kk*!N zs{=^6y1Cn@+skmw!AwDZbtk8>`ijZ8v6?yNj#zx75h}s>Dn|q#dhE1jtjzU}r=?o! zDLssF>IGzqMZ(FD!w0uLNBbtRwZ90g@qMF1AeZ^Pl6Y_T3I0c)LTi-M?wS-aDKaVQ zt@mrG@a59j&i?>pzgbp5GZ7gh+n%+~;OSk&yQyw+j<)D0i&C|@OVk@fXJ*#_0BuOg zsx9`26FDY4;5g)G>t4lo{gtmkBh@YAE~5)3NM-skZWM={e&*$~f+6C-{v# z<&CDKmX_n9E|y7O$9b%)U1Di&5O{{wrMbIwhCOx7#0o_u1ns;$Pqt6Z0DyKSKmAE7zp@~rK4`g?6MHc76$+qv3Rd89Hr z#Di*Oy~!rFbsaxLwzEj=7Utsdqze?2GKCDspjGaD&jPr8a`yIlBwMD0NooZF88PP0 zx9z*QPh=j6vL$=7q z)UQAAlD&?Zs_KgyG_YHcrFkLTVSg->_*ZkOkN8G@8hxHVCz2(P+_B{TrnIXrhG`ro zv3BpKTwS|nT}JKY&vJ?KkJoiv_*Z6bb@sR;gutvH6E~AI7D|3wNLC)d#f-Q9JWY4s z32i)^BR&W+9Ov|+R*gSV^|7zUNGIS{8ZDlwfUp85yr!?KYhQLt&fX0+x7b!LBuw284f!W{{Yqk zqD$RNxI=$K%QdOXUfwdC2-RR5{(s2VqWF40vv_|`j|3ki6ZJg*09y0Evs+wgkw4n8 zdpz5WJ9E1%K(K>gjI|V5C#0JJX=Z%D0Hsm**4}tq#OawTDQGdJ0-?@8t1Ok z;Oh%A%Zp(a(4P7K0QFSQDFE}y9czg#tZ!@XXKDgNERsl$g`Dz1_3c&TU}PQpS3Tm* zYVu3iZPww$cB*y&e(7VA{XZ()vTJjpMRFc_Z(<|uAfO1UakPW$>MPPw<%(?Q-L#De zhg^#5dRfm2LdhLGE9MjrfN}$Il`ZdOV_yqp|I?mIycr4{=wL%$m ztMFU^f90E;GK1=;`BJ4Td#00I$n_veLKqOksQ0Fj0qu|HRkY%(1W6kfi(uNtvQHkp z_^XY`LtRU! zJt`mU=o){uDi1ptC)%=?|x0(u{DR6J{=MRg3a$;Gt% zPC)+vRQ~|OF#2#0x6-a#NQohi;E@^R73v$dD_+^W*xDJ_=NVT<=ZX|ntT!f|&O^aE zl-FrSqD{a;QE8wrC;G=cHD4to@!-&JLA1olDHvVTTN$3kZcoL%rh#l-UqWU`$P4v!&cK^)@@V? z1aroBLpT{Ief>f1E6uLqy71w+3VwsFzMC>j7{r@~NI%2rUX7@jE)vwetXCRyF?M|5+qO7i z{>eQ@O7kxhX^)`luK^6vaLDYq^AwJw`B7rGJws0WHlZXMwSe0wBh63eUWIEYo&dS( zGn)C|!}|34W!!Saz{YrV>_vMnfvrJz407APVm-gQeGO?AXDHaM;_D5!OLZEJvi;yY zFzfy`pQhckNYTslMt<^pdW!8Yp$)_Ks?1$V z&|42WEzb)Ntx>d?PkR^I$!H?^qsL?ES;NHU%J1y=L(I1)3<&4yD#ou2aoa83n|Zc! zjD}u7p-oL)3eGOf?QHKB;SQgvMdm>;D2~G+hB;QQLh{Pvz;d#%YrhIh##k3NS?ou6 zzg4KTJ#9c+O+kx5z^a`3`kL)@`;}XBX?#TXat)~LGB%&#YSJ=KMkcIqmlm2Xk8>uZ zE@C!!QDLo|Q)qVc}I_`Xb z;ED7GeMdxBxzWfzZKo~dFH^L4Phr!jt}+c?Yi5G($bkZ;(o}=DKD~;cU(T!Ei_oQJ zv>@;(`&i{p8P*o>t?+jB@SzQfrz`77(l&XM=sRP9&11*2Sk|rlL8D(h5V27r!lNjYJZo_Jb+dh%>dgND$HJ%~!Q%%!5OMcU*0{B>xYBj2+Z`CBs}W&y zV8Hog58{hGk3T8t+Z64s*5X~6#NKGvR_?M`BizJ#G;5MS-W`oH#_8vmd~OotckFA? ztn89$jM^z{YuL#WTFAv&8ytb(@aij%)%-CwWS+$tB*`rS_4Yr~v{F*iLc2_}rt4rg zlXkvagOa5F8Css^Q8|%_1yhsI5ziSP;nuk*ovzqf-liwX3de?1R^ikxv}Ye|fK3X5 ziz_Zb$nXApR({UULYqwAL|J3R6BmPBF^;dHU5L+k*LrY?=GVocrgvtzw!Y#aU!q2(9lRGevNcvlWk` zE(Y8a@18v?V@KEY>$@qxwWnKqobVM1NeS*i`=`{39s*!l8KQXHl)xi79^Jb2tgS~) zvl@KQvSFzCpvJ+5!kFbq_0Kt{?#o6!dK;IPR~Au3*5{mWh@^w(2m6kvlldQNz`nIx znA%C?3pV|%uG?k@8OsC14|9W1SzgU$@)Gu>o>YzSzx&E-ay@@clqI&KY^v+kmAu%F zdSm#P@IQq=dK%i{qd6;$D&jRQ7!og_;lD5N%|R4*2*sjD%5vCK^8I})(1wer-PtY8 zh18Km&9oI^D(C&y!+$!prbDP{61=)~=ASz>Zy6F38xX?>?+kvmUfo+#eV(T=qw9<_ z9rF={ZH_r?fxyqbNczpyvU&D5MWj=>M#DJzde>2X;9Dp>JeN^PCElwr1#N7ZStI9= z?oVG~n!Dg10$Za=tN5DUcr4*!A+?x{+_)LQ!TZ0=@mR`GNy^2f_AP0ejJkJ%puV|w zj`vg^R6ykzM8A2mJx&IGwTQkTiXXH__fqYc4>bu4ua1O}0VnEfS6UZ(rlUQ^r5h;O zvHG>w9i#eF(Sc!T$h#Xsa`y zkgO~Ru1Vcie9KQM_F56Of&%el=02N=&m7c}Us!0?t1H`tx|5jT2Xp%q#~*+dmt}7@ zs`K3H5;%l$CeDfp;w1Mcf`9t>)h8`(?1|XBr%Dpu{{UUMU-V5n5|)E#0$YhbP}m=i zJ%xGY%NNRS+}&7{$@Q++$Cu_COI<1jREpf0rrY;?;sz9dy11?aM>|38+?wm96>FJI zo$rF|p5SR#VJrydf#{&O^c3#{K(^YnySmuf z#b!O2k1|8~uocSqmsW~twcCe=MrmYQSmXo%ssSVe^~QaLWc}&bYipd9%f00CO6M|7 zCmzI__pJ)j9Wu(!Fco50!E@7v9G~Z25uq@XSF(;#@(DB3y?Y;u^)5S5l6P`(w4M-SzId-W)t`G>M0wmyuk;_}(q8pXLe`PE%?jUtiR_>} ztOOSS0Dz32*1aQmJoMwZ#c&=6WjeI?GO$+LwR6TAp-4&lTP1 zYqLtblY*t#pF$L1R|%#@WWI@*9ig`qk3pLBB#-Rg4^}^VKr{IAYtY0!6j6mPtmh59 z6K*hrZE#NwA1Y7NwRDq6QG2C%n-M9i+h{zsb$@+6% zi>JTXJP$3?j6Bjjr29u1!T$ihooTmaV0)vM@b;--@EcgB*)I1X9Bm{PBxAQq*;BZj z9xKkgBW!Oq=wkyU=kq*&TJOFmY8M)3#9OUC!D8~F5L*bb!EK-u$9&V2ed{7t*Dgn$ z+#G&1_i{+~ts4yr_fa~T)8I2jV(hXoBP0SwK>RB)d?*q!XPUEr9(A8af#U!*6M2m%75Tk%AiSRY={3E_In@hPk)3rR5&p{_~ z`1Pz8?y7k+YpRg+Jr`ND`zEU^C>})LyhGbP#bYJWTa5H4pRIMbHm!N2O={;iHpeJ? zk=nTns1>w=+qT_A`=bM{JFnqe$ywbPEp#`hX#Up?!(iIpFOxcv{9Uv4tS=e(d;Ss+ z2;OO|yY(F`nQhytl00<$RDNoGYVM9c-)A+OHcX3vf4ak_D)oi?y}TNW3|-iG@Y|NdpWy6~g%QOm7Bw z+6`vGF{jfvp1=+1uCplm^&wpyo zD6%QfCZo|}p3>pxxV@Hn82rdUSkMlE7y6z}C8G_|(xS!?It;7w2^hht=2G#OJx2zt z$FlC-Fb6}A@cy+}Ka`Fb5}?v0MHVH~RhlM^%CH-SAS+%#L+(?KIK@Gy z&hSskInPSb7-ibut!7=RM=Uyz)}l(rk#{$)5t*|(pW`3ww@`Z?E2qsor>+OwhwB-l}q^py`(KhX9y zGWV6%;GLbBg{|DU(oV0WME6@)b6dxc-l^&_>MFFr!-CiwfFX070x~)1diAWW9__p{ zs3p5Q%cNW}*z7P+_fzP=@I`dj*5JmC6Nj-Noul}3&Q$t)dzw*q)N)qP;(TkW-D&z- zy_@WIeY^3Taa~`-9eK4~0wHuq+bxNPU{B%?(1I(P@iv@ptZpo&Bo`Tt$A3dy_k}EO znkiz2d2Q}ggqLqp7o%goJC8%{N>7#Cq?1-XOJAPJX4?euB-#0+4m0^vY;_bdGTgeL z1Me~873cc@0Dv_ud&GBF_Lox)@4RqAfyW;8&_m(-y%$QhO zy^uJ?EzY{aNi1$cxjsQWA4<{ItRcU)S;I#i#9-`^##DpVSa(z0RxX=;9mEB02n;&r zpQGJHcWlwgyg;%YrOrXY?^K?aBHG;I@9nO9J8<^_B>u~DvRGe}Y~=L!L)iEF)%`}+ z!^9dqcDE{`0nAe%`Jg?Iy84RrEmKa0`qj3gHdA9R-W_{_JuA(xbgRD)W@rmZr*GSX z$%r1!?b|gjKF`pr^ZK4&tmzke4fESxD9=@K%DVO{eJb~dJVP#(aE^_b+dGu>`d6o1 zS?Rj|l(u??)m8jS6eC;%fXOX_W9QFSPQae)(A6yq#3xS7GM17& ze9@kND(E~RE!~4$Y8I{bn|WN325?b*s?^@ho?fW(#C|?}sjThowXrj+MPsfK3{x|0j$$*A-ISkRnXg#!PlL4o02jd8u7M)jYQSNR2w4d1 z;CCLQkzQFk+*#_a4x<^c)?i@UoDHvzg!Uu-q4xDH?HSFCF|N~*RO8{#e}OOy!P`( zM#m%`z0~6w9jhNo@spc_2E1O9Bw{qrRKW*4 zbv##>yt|R1m3+kP4^i|q<4rs07ijcL^xZUb-A(puhR2ht!Sf`T=p_TF_v$NmOV#3* z`YSINTZrcXv^Oz67UT}f-58(DcNN0?Ka%bZRx3%RNwjA>rAc`T2VgyGxBl4Cb+^A= zGTPeq&5zAw!((nA^3i<>^%yigG-9>N9xazmzSUgcX}(-#N0&XS>~sU6Q_+C*Jl7|# zM{ypNEMhqCY~(w|%pFvY0db6}=jmIfMT%nh$K_XSb!Gs?a|*XPZZV(2y1i-! z)+a~Rl3QEEh#_!*2T{WD(Y~P8Hlg9E*4im!{p@mQ%8_{8gU?=g{A+G#%i<+nY(y_@ znU&y^$z#SCWq&@RwUXWLriKunZH5UH> z5VbYJ$sMaEFhPKSFhxr*h_t;&2JQxp&r*_*KOzld%Tg}yVv~zAuO(>ai|w(i1R#*0 zA#cThoi=?!IQAO@a{xKqvQ4;t6qmB;Zq4P*bgS90jz27eRij-oh!fw-w?BDcJAm)T zar*J^TBxfDy-vsB=8>p)zgtTXhp!o42Hv%Dge$Qw;yL(tr z1&w-RJnlWo`qmWQEQjIGhjjfnNVG@3)S(wsnTg*TAN62`?nX~u^}=6xzhBhkWwvi1 zNO6b|BOkn%)UQHX+_abgeAihLlVMrF_eaxtN@;eqs+{kK*olT=lK_XNt#7j_x>! zwutPqfQ_vzhk)!qknBGiO$x;LggmEpmxgUmn=I2DHOU{u$J5Xb2SHrdjP=oVapqg* z7($e^kGe1InUg!Qj zq0G}C`euW3euE!~tk~g_c;=M`L|7z!YoyU_{>|a`X*hjOUnNQH1bAr(`nJ{l4RvUh zj5lXf;q6F8;muE0k%*R7c6|Q;eTgUZ#c?{rn5?w>S3f%`x|jXw4n}|AA#17eeU97x zJ}6``rm3;6?bHCORDI$2X1HBi=-z4*&OYlg+C3C-2jz;&j8lBw%_Q`((Re<}Td984 z5<&{g^E8XQ<;Owjee0(2yr%0)(lmQ_23G{oGw;lfg$*m|y zONB>eW3TXqk~W0qR17DOoF75J{eJ!(0@_-)!jB9vFSFj=A1g`;`Y6qB__lL4sFu-WnBoNg06My*519V|AyH~tn(JQ_ zrqq7?Z+`QSbVHH)Eq5OR^tG|kHSK2Lsrwy_vZ)6kGcE_?*1W^QKk^p1cKge2>JMIA zh5n|h>GMdGtdc$V!xtk+_)p?3UPFncjz$OEkMU~r8wX1t0cpl0*>NE+yx^XHrFS0^ zC4Dd8q!y|QwdBhmwL1*P{`sQ0?60jA zT!^b9-4t?1PAWuPj(by4dgrY@IC0vsAaZ*O($nVHR|lnLfrIN-B5kA^Xf1Shwo(g- zOij>?R|(^d4o9_jgNvJX^I>7?IUnI&E|+zN9Pw5>LArZYHZYr;zJet^ey5-mt3#eX zVM<)GFL*D+&}y0umZHoA!w_6AaC&p}H6Mtrr?=J?Z9W+0vtzn>3F0yQO1SFB^zU3R zgZu$~ZF#He8lCj%9Fv!h$_WUGm%BG}f_hi1cz0ylEShaJT|COP0`i_3VI%aK9n zAoZ>78tx{y2{_+xE>ZJY+V@PowI|nnJ~h7%-uQlO8Q>mujEA`FGyedN{{Y`L=f4cK zXHT?fSJ_#u$?}76O6QgQE7ElP$(rVSN5kIf$IZ53{{SuR&jfu(L+`ZL6Y)z&YYj@% z#kwC6+z`_3;0Nk+?BC;A#$1l(vRvrjxI&D;=bk~R)wl$Xed%<&*mbQcE2xeGuOs`7 z+#klFB&jMv1a+>x^*J`syBwQ-l_R)QxD1M*uZ*sEHDy>7!Rk1mM(&Y(PzYH3t(+0s zwF2c&_l7z3_pUD2%!c4)j?>b*+c`HT3Cm-T@TQoWvoK+U`x{y|4aT3TIg-$x1XJ~B z{*Bao)a|)O9F4&9fr{GHY+%&wKFxHb#!9lXove&G1Rln)FSRAPiu!A4m|j}V_Gw^l zzG2}T=-qSmto{dQv3BQITZ>?P`{^a?6}Rr!-a80cG27OJ z`h$t-c9&0QAW6$KYsk}r$8fCbs>;I-gk&)9#dA7FsTKSlT*L<>^Q|j6-%pSu zlF%NF{o1tpG8)w4d{yD;^q|+8X7;dCxT=y`5Ak1q-RlhBTk0BQupl!Z>U>b8;cv3AwEs6qZu2!XZnL!x^AO2oyyG&ts5!fhpl>Uk*r4WPi=h+ zaz`)ABvbv;dxjsv-u~6f__M*UXB3*2hvr=A*~`Xxk`HF}AMI5_T-q|((?|AC7U)pE zspZ>VI~d`dFa?-(+M|h7cB&Vkdg)uUiq&;@b`=1 zyo38YUWsS6ZZh2Q{Qm$RwB-Oz$5eA@o^b?>gIcU%dY@JI{Og&%okT}_qNp9uU!bolqp1q2DD96d;dW_XL22U1P2P%p zo9L98Z1aMB*Vd@$J|n!*CJQNHgN9cAwZk^3_BxVWSvyBEHdWBzitaS+S5EPa0t@pU zmb3R(U@()PL+ESQaJtnTE!o)~qonGv>ViA1GT_@?uguZ^01Nu$cdZ>-!%6YBo-OrA z#22VYid8#gjmJ`_@f>^ChRAh44(cKaAd)#_&4`0f=eILa3dc;cw`*}AD%1n)p zeQG`EY7Qxx+P0H_;W<9buUh@LN+kI=u?!T?q5cExepBsKZT#CQ4epJ0uL_miLhufF z^Aq?_>F8^{J}90ILf1#tHr(4v3wfaf2^Z0`!1~pH5_~(67yDDeQzEcKy4!XOf^+hd z$NU8GPvh81T)UoCeWR`9^2=hTE0!hN-Oe&e$tX|qu3B_^dDu!FSxy;PV1x9o_SWq# zWtPWLj9T1A+gd3>j4ORl`m^kQQ`pw-t)^)3XloX+Zza{>kIXU#+bl}Q2!kC?0b`yq zk6N`+!P-FMeUCBH^=WJ+-xw{Ql!ACU^{5^qCi`BR@>@)wFxqed`u45K{3qw3pGCV{ z>tHg;w`|e#{7K*HIIIQUvYUAc4h}u~^fj-$x)+l=3r`loc&TgR%N3ZR8*Y(tBKx0O z>h=9f>s(d2i7jHa{qRw-vG2w^4r;BJh;2~_u+?w0;(z6n{PF%EpmR z6AN*?9D>1d*PP<3NvB*p6a9mHpq!r~c;-+&gDF3)3$kK;>{`)2AFipZ$89`v*;@c! zY0Q~aP%=*=nxm=sHQ?4R;nLyMC9qc_DP)Cm%iH|otuC8znDVsUdLS8CV!#}bbJbW? z`5#`950R(qvPq6N+Q_T;=1Qy0br-v19^1fIl9MEs*F}2m+7~rzLhv$6tyx>%v{56@ zic(pZaT(+V2S251>Y84!a?pLBO`6g$xRz_#;{cyrF(d)(4Oh2?^obtg>s_%H>zL2k zn6W}e0~G;5$L4D})RK#LDMei0@x;1LudYjacXrHvFqPQkb4X5`}-`9b2cG@0VK z^R4t-X$!`=31c55{{Xc!@}t~su4Q%Y2F?T~%Ij3T1LpfgyC4VI69kW`syDtP*EQ7p z9jNkc2TNNt5k?2NAI#N4n@Ygsu5}uYt6`$UGU%WI@UGX{2#?g#NPImI`{ zJ}67slkJf_T5_DNm^f*1(8=gO+5G+L*4Uf3xo^e(Dvtiw$hK97Mu3kh5%Qa+9SI-Y z9-ZsW?xddn>Ew3ZE1sUeN?XgOzP)E+a8Jmiu%vYLS_*Z(IQy{o*r^@%*cG>}{_6Rcmi!kFi=OkQG~UBB3Srp7~+{J*YwSDtz&i6 z+jnDx)~?%7dF54Y*Owbq0m)qF`C_rHqv9DZ{Fvfcs$O0Y?*t^>?dq5J*upSBi|J?r*{Am^s2=2 zdXKGn=^YGiz)o;+Tu+JS^L1GOIaC`(cTPlbGZTOYbDHx@nGE+*KT_;S{Ohv}uI^z~ z>0`3+Y*=VmV+j#s^<)14)~DQ}UEke1oJd~_?gv`8;Y1NzO6|~my#D~QG5qTqR?FSV zf-$&p$IMO#^QG}rY_+6IehYyvJYQuao$*_<+_$I73x7dS{7kqHtU&=h#R`@m?J(Sb zRyBXXc5)%qq-+B5C8`t0GPqy;1T}M-kvgx7olhcbkez#O{{RZ<>u$y!E_-i;b&V6l z{{RdcJ#ksS-zvo{10b@M&N4dVgY~aF@TH}_#ohJolw~bvzYxHU_ks+z59YNu#M#yh zJr>F{(ImTN9kcSU=qk^`t2UbNNre5if zRvy3BiYgqMt7AyTI&9bRzK|VPQMV(>m<`zMdm81ebsKvtTZO-oV^kr&W6zxc(r2k@XcD zu@q5CF6!cvv#`M?8j*zD5V#u-p3*18$)9pD+ESUGl(poc08A3_Za^Ga2`jY7^)g}rL!7k z&9mDZQRJAUJhnQV`jgERR!wrxLrdNok?Y!U)Gd`a;m~Fo3FH0KTs6YYYcs)chB;G$ ztwj{(mf;uBd=AXOpe2X*dexM<4A>`Yj-#=niiNetX<1&F-AXY8d)INI>k-~YAh;kl zF_T3VQF@9?Li63Wk~gz%we;s=oNTKI)L=;8!Ja#wT3k&Z`kNvwE%wCEo8 z!clc*{{TEQ#B#qw=|vS45>G&jVc~BVOJi~Vnna2Q&>O1y*Q01YBx_>R=@M^=hF;m5 zfPF<2Ruy8P?-NC?<^5%RJL6}JT|(CSf++%I`6iF?=)>6NxXpXR`mThJENd30rk$mX`ea^ia_TH52PjldKB>kb>~!S<%hdvj_hU0+Xz z?Pg7ebwDLt5rdyleQ2VK+1PC7t~98plg-lZ{NUXAQvn=-y$56Y)?LcnK;B)#NfT$I zt}{gyyd>{pEK3#i!qRJ9vAk0OxG?F1#w$JGz$6?V;)*Lxo`GxbMiG_1Rv?bztie6% zf2g>Xev%PI6zrblqf#AD#6>X;_14kpEj~++5=;KF>gfLfy)6`0F3X{5d5!+d)~?(c z2POO!zH4~@sx5C4DaI;Pw?Lhg93=I8i zt+>>@E#WkKO+L;&O8OzpNslcXv5~rd9G_|^t4+&tQq=N2TT}_C-CQ_~%JQ_a#U4a( z7UYCe!t>v+(z(|&U)=;nGD_#5qKfEST$kAGyg%T^MuzI;kC?pd#z8gc7Lh||Z6xO?BK7x8c;&1NW?&z-|_+_PK)$fyfykbpUhps~-?9T5U^CvMjz* zCz$NKsrMe(6j4~m?4woHoHgYC0O*oRc#`Fr{)?Os&^2!O9u1Z=&PV#k+n-=R`t(s+ z;vK2zXAg+gziCah=>gj@QV{38L#KJdDAsljAOJDWa%iHtQ}=9iJ;wNgf3xW`p5$#G zjc|5q8tNhb&@@q9cx@nISK>VqBx`K~1yTf)FZ1TI^@!t)Ahr2YXI9&c?ZC+yJ$a&v z!khQLX3t}K#zwL5^m3jaStXoc_Kh|v{{X(8xW5QS*FGkSPP;eD`f>V^MHSPuTQJ?E zYy4G{Z;I!)2R~)EhTHK93H?oaAHrw?Uo?ad^k@+j{TH9qnkc0;q($81Z7)9E0IsHzGUv)4rrpM?XyU1N9VWqR*ERCEQfRd*?=IwPXGV_ literal 0 HcmV?d00001 From be597cd9b35421745d87ac70e9649f0ab2bada93 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Thu, 1 Feb 2024 10:17:20 +0000 Subject: [PATCH 18/32] Added cutoff ecrh model page to docs --- .../eng-models/heating_and_current_drive/RF/cutoff_ecrh.md | 0 .../heating_and_current_drive/heating-and-current-drive.md | 5 ++++- mkdocs.yml | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md index 2edbd37dc0..e6a43ab807 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md @@ -18,6 +18,7 @@ The fraction of the required plasma current to be produced by non-inductive mean - `iefrf` = 10: [ECRH user input gamma](RF/ecrh_gamma.md), - `iefrf` = 11: ECRH "HARE" model [^3] :warning: (OBSOLETE-REMOVED), - `iefrf` = 12: [EBW user scaling input. Scaling](RF/ebw_freethy.md) (S. Freethy) +- `iefrf` = 13: [ECRH O-mode cutoff with Zeff and Te](RF/cutoff_ecrh.md) (S. Freethy) [^4], !!! Warning "Warning" At present, the neutral beam models do not include the effect of an edge transport barrier (pedestal) in the plasma profile. @@ -49,4 +50,6 @@ Switch `ignite` can be used to denote whether the plasma is ignited, i.e. fully [^2]: T. C. Hender, M. K. Bevir, M. Cox, R. J. Hastie, P. J. Knight, C. N. Lashmore-Davies, B. Lloyd, G. P. Maddison, A. W. Morris, M. R. O'Brien, M.F. Turner abd H. R. Wilson, *"Physics Assessment for the European Reactor Study"*, AEA Fusion Report AEA FUS 172 (1992) -[^3]: E. Poli, M. Müller, H. Zohm, M. Kovari, *"Fast evaluation of the current driven by electron cyclotron waves for reactor studies"*, Physics of Plasmas 1 December 2018; 25 (12): 122501 \ No newline at end of file +[^3]: E. Poli, M. Müller, H. Zohm, M. Kovari, *"Fast evaluation of the current driven by electron cyclotron waves for reactor studies"*, Physics of Plasmas 1 December 2018; 25 (12): 122501 + +[^4]: Laqua, H & Maassberg, H & Marushchenko, Nikolai & Volpe, Francesco & Weller, A & Kasparek, W. (2003). *"Electron-Bernstein-Wave Current Drive in an Overdense Plasma at the Wendelstein 7-AS Stellarator"*, Physical review letters. 90. 075003. 10.1103/PhysRevLett.90.075003. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 74dffd37bd..bbacff8a1b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -68,6 +68,7 @@ nav: - Fenstermacher Resonnance Model: eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md - Culham Model: eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md - User Input Gamma Model: eng-models/heating_and_current_drive/RF/ecrh_gamma.md + - Cutoff mode: eng-models/heating_and_current_drive/RF/cutoff_ecrh.md - Ion Cyclotron: - Overview: eng-models/heating_and_current_drive/RF/ic_overview.md - Ion cyclotron model: eng-models/heating_and_current_drive/RF/ic_model.md From 5190c73ee3f8c657939c8ff0745384b113faaa0f Mon Sep 17 00:00:00 2001 From: mn3981 Date: Thu, 1 Feb 2024 13:10:29 +0000 Subject: [PATCH 19/32] rf overview text --- .../heating_and_current_drive/RF/cutoff_ecrh.md | 2 ++ .../RF/ehst_lower_hybrid.md | 15 +++------------ .../heating_and_current_drive/RF/rf_overview.md | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md index e69de29bb2..4d7e98a460 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md @@ -0,0 +1,2 @@ +# Cuttoff + diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md index a0a9c0decc..2b969bc2e6 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md @@ -2,16 +2,7 @@ - `iefrf` = 4: Ehst Lower Hybrid model $$ \frac{T_e^{0.77} (0.034 + 0.196\beta)}{R_0 n_{e,20}} -$$ +$$ - % * ( - % 32.0e0 / (5.0e0 + physics_variables.zeff) - % + 2.0e0 - % + (12.0e0 * (6.0e0 + physics_variables.zeff)) - % / (5.0e0 + physics_variables.zeff) - % / (3.0e0 + physics_variables.zeff) - % + 3.76e0 / physics_variables.zeff - % ) - % / 12.507e0 - - % ) +$$\frac{\frac{32}{5+zeff}+2+\frac{\frac{12\left(6+zeff\right)}{5+zeff}}{3+zeff}+\frac{3.76}{zeff}}{12.507} feffcd$ +$ \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md index f57da52192..a2ec10ab0d 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md @@ -1,5 +1,11 @@ # Radio Frequency Heating +In the realm of radiofrequency (RF) heating, electromagnetic energy is introduced into the plasma through radio or microwave frequencies, facilitating a resonant energy transfer from the waves to the plasma. Various RF heating techniques are presently under investigation, including Electron Cyclotron Resonance Heating (ECRH) operating in the gigahertz (microwave) range, Ion Cyclotron Resonance Heating (ICRH) in the megahertz (radiowave) range, and Lower Hybrid Heating (LHH) operating in the vector range between ICRF and ECRH. Consequently, "RF heating" encompasses a diverse set of independent approaches. + +Ion Cyclotron Resonance Heating has proven effective in ion heating within plasma for an extended period. Both slow and fast wave systems have been developed to heat ions in different plasma confinement devices such as stellarators, tokamaks, and mirrors. This method has demonstrated efficiency at the first and second harmonic, as well as higher ion cyclotron frequencies. Achieving power levels reaching several megawatts has been successful, resulting in ion heating efficiencies comparable to those attained with a neutral beam. + +The transmitter functions as a wave generator, producing the required RF signal in terms of power and frequency, sustaining this signal from reactor startup to burn phase. The RF wave is then transmitted through a coaxial cable or other suitable transmission line to the tuning network, which optimizes the system impedance for efficient power delivery to the plasma. The actual delivery is executed by an antenna situated in the plasma chamber. This antenna incorporates a radiating element, often a loop, covered by a Faraday shield. The design of the Faraday shield poses a significant challenge, requiring consideration of polarization requirements, heat loads from the plasma, erosion caused by plasma particles, and induced RF currents. +
![JET 1984 RF Antenna](../images/JET_rf_panel_1984.jpg){ width = "100"} @@ -7,4 +13,13 @@
+Electron Cyclotron Resonance Heating (ECRH) employs microwave energy within the gigahertz frequency range, generated by a device called a "gyrotron." In this process, a high-power electron beam traverses a potent magnetic field created by superconducting magnets. The electron beam follows a spiral trajectory in the magnetic field, emitting microwave radiation. These microwaves are conveyed to the plasma chamber through waveguides, passing through a dielectric window—crafted from materials like ceramic or diamond—before being directed into the plasma where absorption occurs. Successfully implemented ECRH systems, featuring multiple 1-gigawatt gyrotrons, waveguides, and diamond windows, have been developed for deployment on DIII-D. + +The Lower Hybrid Heating (LHH) system shares similarities with ECRH and ICRH systems, utilizing analogous equipment such as transmitters, transmission lines, and wave launchers or antennas. However, the key distinction lies in the positioning and design of the launcher. Due to the higher frequency of waves used in ECRH and LHH, a waveguide can replace a loop antenna and Faraday shield. This waveguide facilitates strategic placement of critical components, including ceramic windows, within the reactor's shield, thereby mitigating radiation damage to these essential elements. + +In plasma conditions where the plasma frequency surpasses the microwave frequency, preventing microwaves from penetrating into the core plasma where electron cyclotron resonance (ECR) occurs, an alternative is sought. In such instances, the electron Bernstein wave (EBW) is employed, given its electrostatic nature, allowing it to propagate without encountering density limitations. The EBW originates through mode conversion from the slow X-mode at the upper hybrid resonance (UHR) and exhibits resonances at harmonics of the EC frequency [10, 11]. + +In tokamak plasmas, where the magnetic field varies inversely with the major radius, spatial areas for EBW propagation are distinctively arranged in a band structure between two adjacent harmonic ECRs. When microwaves are injected from the outboard side and EBW is triggered at the UHR layer through the OXB mode-conversion scheme, the EBW is confined to propagate solely between the UHR layer and the harmonic ECR layer on the inboard side. + + From 633fe43e2f2b0d8ced69443e0a25119046eba063 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Wed, 1 May 2024 14:11:24 +0100 Subject: [PATCH 20/32] docs update --- .../RF/culham_electron_cyclotron.md | 10 +-- .../RF/culham_lower_hybrid.md | 61 ++++++++++++- .../RF/cutoff_ecrh.md | 40 +++++++++ .../RF/ec_overview.md | 90 ++++++++++--------- .../RF/ehst_lower_hybrid.md | 4 +- ...stermacher_electron_cyclotron_resonance.md | 10 +-- .../RF/fenstermacher_lower_hybrid.md | 3 +- .../heating_and_current_drive/RF/ic_model.md | 6 +- .../RF/lhcd_overview.md | 7 +- .../RF/rf_overview.md | 14 +-- .../heating-and-current-drive.md | 2 +- 11 files changed, 170 insertions(+), 77 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md index cc5477687e..8b994b11c2 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md @@ -22,12 +22,7 @@ cosang = cosine of the poloidal angle at which ECCD takes place = +1 outside, -1 # Normalised current drive efficiency -Uses the `eccdef` model found below - - - - -Normalised current drive efficiency (A/W $\text{m^{-2}}$) +Uses the `eccdef` model found [here](ec_overview.md) $$ \mathtt{ecgam} = 0.25(\mathtt{ecgam1} + \mathtt{ecgam2} +\mathtt{ecgam3} + \mathtt{ecgam4}) @@ -42,9 +37,6 @@ $$ cosang = -1.0e0 ecgam4 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) - -Current drive efficiency (A/W) - $$ \text{Current drive efficiency [A/W]} = \frac{\mathtt{ecgam}}{\mathtt{dlocal} \times R_0} $$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md index a42a73e4c6..a6b76206e9 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md @@ -1,6 +1,6 @@ # Culham Lower Hybrid -- `iefrf` = 6: Culham Lower Hybrid model[^2] +- `iefrf` = 6: Culham Lower Hybrid model[^1] This routine calculates the current drive parameters for a lower hybrid system, based on the AEA FUS 172 model. @@ -65,5 +65,62 @@ AEA FUS 172: Physics Assessment for the European Reactor Study return gamlh / ((0.1e0 * dlocal) * physics_variables.rmajor) + def lhrad(self): -[^2]: T. C. Hender, M. K. Bevir, M. Cox, R. J. Hastie, P. J. Knight, C. N. Lashmore-Davies, B. Lloyd, G. P. Maddison, A. W. Morris, M. R. O'Brien, M.F. Turner abd H. R. Wilson, *"Physics Assessment for the European Reactor Study"*, AEA Fusion Report AEA FUS 172 (1992) \ No newline at end of file + """Routine to calculate Lower Hybrid wave absorption radius + author: P J Knight, CCFE, Culham Science Centre + rratio : output real : minor radius of penetration / rminor + This routine determines numerically the minor radius at which the + damping of Lower Hybrid waves occurs, using a Newton-Raphson method. + AEA FUS 251: A User's Guide to the PROCESS Systems Code + AEA FUS 172: Physics Assessment for the European Reactor Study + """ + # Correction to refractive index (kept within valid bounds) + drfind = min(0.7e0, max(0.1e0, 12.5e0 / physics_variables.te0)) + + # Use Newton-Raphson method to establish the correct minor radius + # ratio. g is calculated as a function of r / r_minor, where g is + # the difference between the results of the two formulae for the + # energy E given in AEA FUS 172, p.58. The required minor radius + # ratio has been found when g is sufficiently close to zero. + + # Initial guess for the minor radius ratio + + rat0 = 0.8e0 + + for _ in range(100): + # Minor radius ratios either side of the latest guess + + r1 = rat0 - 1.0e-3 * rat0 + r2 = rat0 + 1.0e-3 * rat0 + + # Evaluate g at rat0, r1, r2 + + g0 = self.lheval(drfind, rat0) + g1 = self.lheval(drfind, r1) + g2 = self.lheval(drfind, r2) + + # Calculate gradient of g with respect to minor radius ratio + + dgdr = (g2 - g1) / (r2 - r1) + + # New approximation + + rat1 = rat0 - g0 / dgdr + + # Force this approximation to lie within bounds + + rat1 = max(0.0001e0, rat1) + rat1 = min(0.9999e0, rat1) + + if abs(g0) <= 0.01e0: + break + rat0 = rat1 + + else: + eh.report_error(16) + rat0 = 0.8e0 + + return rat0 + +[^1]: T. C. Hender, M. K. Bevir, M. Cox, R. J. Hastie, P. J. Knight, C. N. Lashmore-Davies, B. Lloyd, G. P. Maddison, A. W. Morris, M. R. O'Brien, M.F. Turner abd H. R. Wilson, *"Physics Assessment for the European Reactor Study"*, AEA Fusion Report AEA FUS 172 (1992) \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md index 4d7e98a460..088b7965c1 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md @@ -1,2 +1,42 @@ # Cuttoff +$$ +\mathtt{fc} = \frac{1}{2\pi}eB_{\text{T}}m_{\text{e}} +$$ + +$$ +\mathtt{fp} = \frac{1}{2\pi}\sqrt{\frac{n_{\text{e,19}}e^2}{m_{\text{e}}\epsilon_0}} +$$ + +Apply effective charge correction from GRAY study + +$$ +\mathtt{xi_{CD}} = 0.18\left(\frac{4.8}{2+Z_{\text{eff}}}\right) +$$ + +$$ +\mathtt{effrfss} = \frac{\mathtt{xi_{CD}}T_{\text{e}}}{3.27R_0n_{\text{e,19}}} +$$ + +For the O-mode case: + +$$ +\mathtt{f_{cutoff}} = \mathtt{fp} +$$ + +For the X-mode case: + +$$ +\mathtt{f_{cutoff}} = 0.5\left(\mathtt{fc}+\sqrt{\mathtt{harnum}\times\mathtt{fc}^2+4\mathtt{fp}^2}\right) +$$ + +Plasma coupling only occurs if the plasma cut-off is below the cyclotron harmonic +(a = 0.1). This controls how sharply the transition is reached + +$$ +\mathtt{cutoff_{factor}} = 0.5\left(1+\tanh\left({\left(\frac{2}{a}\right)((\mathtt{harnum}\times \mathtt{fc} -\mathtt{f_cutoff})/\mathtt{fp -a })}\right)\right) +$$ + +$$ +\text{Current drive efficiency [A/W]} = \mathtt{effrfss} \times \mathtt{cutoff_{factor}} +$$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md index 60168ebb57..4f898d9edf 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md @@ -26,29 +26,71 @@ One of the methods for calculating the normalised current drive efficiency is th This routine calculates the current drive parameters for a electron cyclotron system, based on the AEA FUS 172 model. It works out the ECCD efficiency using the formula due to Cohen quoted in the ITER Physics Design Guidelines : 1989 (but including division by the Coulomb Logarithm omitted from IPDG89). -We have assumed gamma**2-1 << 1, where gamma is the relativistic factor. + +We have assumed $\gamma^2$-1 << 1, where gamma is the relativistic factor. The notation follows that in IPDG89. -The answer ECGAM is the normalised efficiency nIR/P with n the local density in 10**20 /m**3, I the driven current in MAmps,R the major radius in metres, and P the absorbed power in MWatts. +The answer ECGAM is the normalised efficiency $n_{\text{e}}IR/P$ with $n_{\text{e}}$ the local density in [$10^{20} / \text{m}^3$], I the driven current in [$\text{MA}$], $R$ the major radius in [$\text{m}$], and $P$ the absorbed power in [$\text{MW}$]. $$ -\mathtt{mcsq} = 9.1095e-31 \frac{c^2}{(1E3\text{e})} +\mathtt{mcsq} = 9.1095\times10^{-31} \frac{c^2}{1 \text{keV}} $$ $$ \mathtt{f} = 16\left(\frac{\mathtt{tlocal}}{\mathtt{mcsq}}\right)^2 $$ -$\mathtt{fp}$ is the derivative of $\mathtt{f}$ with respect to gamma, the relativistic factor, taken equal to $1 + \frac{2T_e}{(m_ec^2)}$ +$\mathtt{fp}$ is the derivative of $\mathtt{f}$ with respect to gamma, the relativistic factor, taken equal to $1 + \frac{2T_{\text{e}}}{(m_{\text{e}}c^2)}$ $$ -\mathtt{fp} = 16.0 \frac{\mathtt{tlocal}}{\mathtt{mcsq}} +\mathtt{fp} = 16 \left(\frac{\mathtt{tlocal}}{\mathtt{mcsq}}\right) $$ -lam is IPDG89's lambda. `legend` calculates the Legendre function of order alpha and argument `lam`, `palpha`, and its derivative, palphap. -Here `alpha` satisfies $alpha(alpha+1) = \frac{-8}{(1+zlocal)}$. alpha is of the form $(-1/2 + ix)$, with x a real number and $i = sqrt(-1)$. +$\mathtt{lam}$ is IPDG89's lambda. `legend` calculates the Legendre function of order $\alpha$ and argument `lam`, `palpha`, and its derivative, `palphap`. +Here `alpha` satisfies $\alpha(\alpha+1) = \frac{-8}{(1+z_{\text{local}})}$. $\alpha$ is of the form $(-1/2 + ix)$, with x a real number and $i = \sqrt{-1}$. + +$$ +\mathtt{lam} = 1.0 +$$ -lam = 1.0e0 +$$ +\mathtt{palpha, palphap} = \text{legend}(\mathtt{zlocal, lam}) +$$ + +$$ +\mathtt{lams} = \sqrt{\frac{2 \times \mathtt{epsloc}}{1 + \mathtt{epsloc}}} +$$ + +$$ +\mathtt{palphas} = \text{legend}(\mathtt{zlocal, lams}) +$$ + +$\mathtt{hp}$ is the derivative of IPDG89's \mathtt{h} function with respect to $\mathtt{lam}$ + +$$ +\mathtt{h} = \frac{-4 \times \mathtt{lam}}{\mathtt{zlocal + 5}} \times \frac{1- (\mathtt{lams \times \mathtt{palpha}})}{\mathtt{lam \times \mathtt{palphas}}} +$$ + +$$ +\mathtt{hp} = \frac{-4}{\mathtt{zlocal}+5} \times \left(1- \mathtt{lams} \times \frac{\mathtt{palphap}}{\mathtt{palphas}} +\right) +$$ + +$\mathtt{facm}$ is IPDG89's momentum conserving factor + +$$ +\mathtt{facm} = 1.5 +$$ + +$$ +\mathtt{y} = \frac{\mathtt{mcsq}}{2 \times \mathtt{tlocal}} \times (1+ \mathtt{epsloc} \times \mathtt{cosang}) +$$ + +We take the negative of the IPDG89 expression to get a positive number + +$$ +\mathtt{ecgam} = \left(\frac{-7.8 \times \mathtt{facm \times \sqrt{\frac{1 + \mathtt{epsloc}}{1- \mathtt{epsloc}}}}}{\mathtt{coulog}}\right) \times (\mathtt{h} \times \mathtt{fp} -0.5 \times \mathtt{y} \times \mathtt{f} \times \mathtt{hp}) +$$ ---------------------------------------------------------------------------------- ### Legendre function and its derivative `legend` @@ -123,36 +165,4 @@ def legend(self, zlocal, arg): ``` - -palpha, palphap = self.legend(zlocal, lam) - -lams = np.sqrt(2.0e0 * epsloc / (1.0e0 + epsloc)) -palphas, _ = self.legend(zlocal, lams) - -# hp is the derivative of IPDG89's h function with respect to lam - -h = -4.0e0 * lam / (zlocal + 5.0e0) * (1.0e0 - lams * palpha / (lam * palphas)) -hp = -4.0e0 / (zlocal + 5.0e0) * (1.0e0 - lams * palphap / palphas) - -# facm is IPDG89's momentum conserving factor - -facm = 1.5e0 -y = mcsq / (2.0e0 * tlocal) * (1.0e0 + epsloc * cosang) - -# We take the negative of the IPDG89 expression to get a positive -# number - -ecgam = ( - -7.8e0 - * facm - * np.sqrt((1.0e0 + epsloc) / (1.0e0 - epsloc)) - / coulog - * (h * fp - 0.5e0 * y * f * hp) -) - -if ecgam < 0.0e0: - eh.report_error(17) -return ecgam - - [^1]: Abramowitz, Milton. *"Abramowitz and stegun: Handbook of mathematical functions."* US Department of Commerce 10 (1972). \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md index 2b969bc2e6..c5086cb55a 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md @@ -1,8 +1,6 @@ # Ehst Lower Hybrid - `iefrf` = 4: Ehst Lower Hybrid model $$ -\frac{T_e^{0.77} (0.034 + 0.196\beta)}{R_0 n_{e,20}} +\text{Current drive efficiency [A/W]} = \frac{T_e^{0.77} (0.034 + 0.196\beta)}{R_0 n_{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} $$ -$$\frac{\frac{32}{5+zeff}+2+\frac{\frac{12\left(6+zeff\right)}{5+zeff}}{3+zeff}+\frac{3.76}{zeff}}{12.507} feffcd$ -$ \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md index cf4ae4294f..5f06a7f2ec 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md @@ -1,12 +1,6 @@ # Fenstermacher Electron Cyclotron Resonance -effrfssfix = ( - 0.21e0 - * physics_variables.ten - / (physics_variables.rmajor * dene20 * physics_variables.dlamee) - - ) -$ -\text{Current drive efficiency [A/W]} = 0.21 \frac{(1+(T_{e}/25)^{1.16})}{R_{0} n_{e,20}} +$$ +\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))} $$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md index 4009c6ca45..91b94aee57 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md @@ -1,6 +1,7 @@ # Fenstermacher Lower Hybrid - `iefrf` = 1: Fenstermacher Lower Hybrid model + $$ -\text{Current drive efficiency [A/W]} = 0.36 \frac{(1+(T_{e}/25)^{1.16})}{R_{0} n_{e,20}} +\text{Current drive efficiency [A/W]} = 0.36 \frac{(1+(T_{\text{e}}/25)^{1.16})}{R_{0} n_{\text{e},20}} $$ \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md index 68c1722f03..6b57e8c366 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md @@ -1 +1,5 @@ -# Ion cyclotron model \ No newline at end of file +# Ion cyclotron model + +$$ +\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}}} +$$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/lhcd_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/lhcd_overview.md index ad7cb10bf9..84d8cd1a57 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/lhcd_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/lhcd_overview.md @@ -1,7 +1,4 @@ # Lower Hybrid Current Drive -Lower hybrid heating is that produced by a lower hybrid wave; a plasma wave of frequency between the ion and electron cyclotron frequencies. It has a component of electric field parallel to the magnetic field, so it can accelerate electrons moving along the field lines. +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 utilizes electromagnetic power in the frequency range 1-8 GHz. At 3 GHz the vacuum wavelength is 0 1 m thus allowing the energy to be transmitted and launched by means of wave guides operating in their fundamental mode. This is one of the principle advantages of this scheme - -The lower hybrid range of frequencies satisfies wa«« wce Propagation in this frequency range is again well described by eqn 5 6 1 where the dielectric tensor elements are approximately -The use of lower hybrid waves was originally proposed with the object of heating the ions. For this purpose it is essential to choose conditions such that the lower hybrid resonance occurs in the plasma The condition for this is, from eqn 5 7 2, \ No newline at end of file +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. diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md index a2ec10ab0d..cb43a30780 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/rf_overview.md @@ -1,10 +1,10 @@ # Radio Frequency Heating -In the realm of radiofrequency (RF) heating, electromagnetic energy is introduced into the plasma through radio or microwave frequencies, facilitating a resonant energy transfer from the waves to the plasma. Various RF heating techniques are presently under investigation, including Electron Cyclotron Resonance Heating (ECRH) operating in the gigahertz (microwave) range, Ion Cyclotron Resonance Heating (ICRH) in the megahertz (radiowave) range, and Lower Hybrid Heating (LHH) operating in the vector range between ICRF and ECRH. Consequently, "RF heating" encompasses a diverse set of independent approaches. +In the domain of RF heating, electromagnetic energy is introduced into plasma using radio or microwave frequencies, enabling resonant energy transfer from the waves to the plasma. Various RF heating methods are currently being explored, including Electron Cyclotron Resonance Heating (ECRH) operating in the microwave range, Ion Cyclotron Resonance Heating (ICRH) in the radio wave range, and Lower Hybrid Heating (LHH) in the intermediate range between ICRF and ECRH. As a result, RF heating encompasses a diverse range of independent approaches. -Ion Cyclotron Resonance Heating has proven effective in ion heating within plasma for an extended period. Both slow and fast wave systems have been developed to heat ions in different plasma confinement devices such as stellarators, tokamaks, and mirrors. This method has demonstrated efficiency at the first and second harmonic, as well as higher ion cyclotron frequencies. Achieving power levels reaching several megawatts has been successful, resulting in ion heating efficiencies comparable to those attained with a neutral beam. +Ion Cyclotron Resonance Heating has demonstrated effectiveness in ion heating within plasma over an extended period. Both slow and fast wave systems have been developed for ion heating in various plasma confinement devices like stellarators, tokamaks, and mirrors. This method has shown efficiency at the first and second harmonic, as well as higher ion cyclotron frequencies. Achieving power levels of several megawatts has been successful, resulting in ion heating efficiencies comparable to those achieved with a neutral beam. -The transmitter functions as a wave generator, producing the required RF signal in terms of power and frequency, sustaining this signal from reactor startup to burn phase. The RF wave is then transmitted through a coaxial cable or other suitable transmission line to the tuning network, which optimizes the system impedance for efficient power delivery to the plasma. The actual delivery is executed by an antenna situated in the plasma chamber. This antenna incorporates a radiating element, often a loop, covered by a Faraday shield. The design of the Faraday shield poses a significant challenge, requiring consideration of polarization requirements, heat loads from the plasma, erosion caused by plasma particles, and induced RF currents. +The transmitter serves as a wave generator, producing the required RF signal in terms of power and frequency, maintaining this signal from reactor startup to the burn phase. The RF wave is then transmitted through a coaxial cable or other suitable transmission line to the tuning network, which optimizes the system impedance for efficient power delivery to the plasma. The actual delivery is carried out by an antenna located in the plasma chamber. This antenna includes a radiating element, often a loop, covered by a Faraday shield. Designing the Faraday shield presents a significant challenge, requiring consideration of polarization requirements, heat loads from the plasma, erosion caused by plasma particles, and induced RF currents.
@@ -13,13 +13,13 @@ The transmitter functions as a wave generator, producing the required RF signal
-Electron Cyclotron Resonance Heating (ECRH) employs microwave energy within the gigahertz frequency range, generated by a device called a "gyrotron." In this process, a high-power electron beam traverses a potent magnetic field created by superconducting magnets. The electron beam follows a spiral trajectory in the magnetic field, emitting microwave radiation. These microwaves are conveyed to the plasma chamber through waveguides, passing through a dielectric window—crafted from materials like ceramic or diamond—before being directed into the plasma where absorption occurs. Successfully implemented ECRH systems, featuring multiple 1-gigawatt gyrotrons, waveguides, and diamond windows, have been developed for deployment on DIII-D. +Electron Cyclotron Resonance Heating (ECRH) utilizes microwave energy within the gigahertz frequency range, generated by a device known as a "gyrotron." This process involves a high-power electron beam moving through a strong magnetic field produced by superconducting magnets. The electron beam follows a spiral path within the magnetic field, emitting microwave radiation. These microwaves are then directed to the plasma chamber via waveguides, passing through a dielectric window typically made from materials like ceramic or diamond, before being directed into the plasma for absorption. Successful ECRH systems, incorporating multiple 1-gigawatt gyrotrons, waveguides, and diamond windows, have been developed and deployed on DIII-D. -The Lower Hybrid Heating (LHH) system shares similarities with ECRH and ICRH systems, utilizing analogous equipment such as transmitters, transmission lines, and wave launchers or antennas. However, the key distinction lies in the positioning and design of the launcher. Due to the higher frequency of waves used in ECRH and LHH, a waveguide can replace a loop antenna and Faraday shield. This waveguide facilitates strategic placement of critical components, including ceramic windows, within the reactor's shield, thereby mitigating radiation damage to these essential elements. +Lower Hybrid Heating (LHH) systems share similarities with ECRH and ICRH systems, employing similar equipment such as transmitters, transmission lines, and wave launchers or antennas. However, the key difference lies in the positioning and design of the launcher. Due to the higher frequency of waves used in ECRH and LHH, a waveguide can replace a loop antenna and Faraday shield. This waveguide allows for strategic placement of critical components, including ceramic windows, within the reactor's shielding, thereby reducing radiation damage to these essential elements. -In plasma conditions where the plasma frequency surpasses the microwave frequency, preventing microwaves from penetrating into the core plasma where electron cyclotron resonance (ECR) occurs, an alternative is sought. In such instances, the electron Bernstein wave (EBW) is employed, given its electrostatic nature, allowing it to propagate without encountering density limitations. The EBW originates through mode conversion from the slow X-mode at the upper hybrid resonance (UHR) and exhibits resonances at harmonics of the EC frequency [10, 11]. +In scenarios where the plasma frequency exceeds the microwave frequency, preventing microwaves from penetrating into the core plasma where electron cyclotron resonance (ECR) occurs, an alternative approach is required. In such cases, the electron Bernstein wave (EBW) is utilized due to its electrostatic nature, enabling it to propagate without encountering density limitations. The EBW originates through mode conversion from the slow X-mode at the upper hybrid resonance (UHR) and exhibits resonances at harmonics of the EC frequency. -In tokamak plasmas, where the magnetic field varies inversely with the major radius, spatial areas for EBW propagation are distinctively arranged in a band structure between two adjacent harmonic ECRs. When microwaves are injected from the outboard side and EBW is triggered at the UHR layer through the OXB mode-conversion scheme, the EBW is confined to propagate solely between the UHR layer and the harmonic ECR layer on the inboard side. +In tokamak plasmas, where the magnetic field varies inversely with the major radius, spatial regions for EBW propagation are arranged in a band structure between two adjacent harmonic ECRs. By injecting microwaves from the outboard side and triggering EBW at the UHR layer through the OXB mode-conversion scheme, the EBW is confined to propagate solely between the UHR layer and the harmonic ECR layer on the inboard side. diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md index e6a43ab807..d1beb31f1f 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md @@ -18,7 +18,7 @@ The fraction of the required plasma current to be produced by non-inductive mean - `iefrf` = 10: [ECRH user input gamma](RF/ecrh_gamma.md), - `iefrf` = 11: ECRH "HARE" model [^3] :warning: (OBSOLETE-REMOVED), - `iefrf` = 12: [EBW user scaling input. Scaling](RF/ebw_freethy.md) (S. Freethy) -- `iefrf` = 13: [ECRH O-mode cutoff with Zeff and Te](RF/cutoff_ecrh.md) (S. Freethy) [^4], +- `iefrf` = 13: [ECRH O-mode cutoff with $Z_{\text{eff}}$ and $T_{\text{e}}$](RF/cutoff_ecrh.md) (S. Freethy) [^4], !!! Warning "Warning" At present, the neutral beam models do not include the effect of an edge transport barrier (pedestal) in the plasma profile. From 25ed34430c5381cecb9314440b0c7a887a595a9a Mon Sep 17 00:00:00 2001 From: mn3981 Date: Wed, 1 May 2024 15:20:28 +0100 Subject: [PATCH 21/32] ebw changes --- .../RF/ebw_freethy.md | 78 +++++++++++++++++- .../RF/ebw_overview.md | 10 ++- .../images/ebw_coupling.png | Bin 0 -> 33637 bytes 3 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 documentation/proc-pages/eng-models/heating_and_current_drive/images/ebw_coupling.png diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_freethy.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_freethy.md index 9121c1b8ec..58c898ee41 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_freethy.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_freethy.md @@ -1 +1,77 @@ -# Electron Bernstein Wave Model \ No newline at end of file +# Electron Bernstein Wave Model + + +The aim of the function below is to produce a 'simple as possible' function for estimating the current drive for an EBW system based solely on the 0D parameters available. It is noted that the efficiency of an actual EBW current drive system depends strongly on how it is used, in particular on the location and spatial distribution of the current and the plasma shape and launcher solution. None of these are included in the below. The model has significant room for improvement, but much more work is required in order to understand how best to do this. + +Electron Bernstein waves (EBW) have the potential to be a source of relatively efficient current drive[^1] and have been predicted to be more efficient at driving current off-axis in spherical tokamaks[^2]. + +Microwave current drive efficiency is often expressed as a normalised quantity, $\xi_{CD}$, which captures its natural variation with temperature and density and is given by[^3]: + +$$ +\xi_{CD} = \frac{3.27 \ I_{\text{P}} [\text{A}] \ R [\text{m}] \ n_{\text{e}}[\times 10^{19} \text{m}^{-3}]}{T_{\text{e}}[\text{keV}] \ P[\text{W}]} +$$ + +We can rearrange this expression to give the current in terms of the other parameters: + +$$ +I_P[\text{A}] = \frac{\xi_{\text{CD}} \ T_{\text{e}}[\text{keV}] \ P[\text{W}]}{3.27 \ R[\text{m}] \ n_{\text{e}} [\times 10^{19} \text{m}^{-3}]} +$$ + + +Experiments of EBW current drive on W7-AS found $\xi_{CD}=0.43\pm0.1$ [^1]. It should be noted that this may be different depending on the plasma and the location within the plasma that the current is driven. A more conservative assumptions might be $\xi_{\text{CD}} = 0.3$, optimistic $\xi_{\text{CD}}$ = 0.5. + +Note that we neglect the coupling of the microwave beam in vacuum to the plasma. + + +Normalized current drive efficiency $\gamma$ + +$$ +\gamma_{\text{CD}}= \frac{\xi_{CD}}{32.7}T_{\text{e}} +$$ + +Absolute current drive efficiency $\gamma$ +$$ +\gamma_{\text{CD}}= \frac{\gamma_{\text{CD}}}{n_{\text{e,20}}R_0} +$$ + + +The EBWs can only couple to the plasma if the cyclotron harmonic is above the plasma density cut-off. In order to capture this behaviour, we introduce an ad-hoc model which reduces the plasma current up to this condition, by way of a tanh function: + +Where $\mathtt{fp}$ is the plasma frequency, $\mathtt{fc}$ is the cyclotron frequency, $\mathtt{harnum}$ is the harmonic number and $a$ is a free parameter which defines the sharpness of the transition. + +The effect of this factor can be seen below: + +$$ +a = 0.1 +$$ + +$$ +\mathtt{fc} = \frac{\frac{1}{2\pi}\times \mathtt{harnum} \times e B_{\text{T}}}{m_{\text{e}}} +$$ + +$$ +\mathtt{fp} = \frac{1}{2\pi}\times \sqrt{\frac{n_{\text{e}}\text{e}^2}{m_{\text{e}} \epsilon_0}} +$$ + +$$ +\mathtt{density factor} = 0.5 \times \left(1 + \tanh{\left(\frac{2}{\mathtt{a}}\times \frac{\mathtt{fp}-\mathtt{fc}}{\mathtt{fp}- \mathtt{a}}\right)}\right) +$$ + +$$ +\text{Current drive efficiency [A/W]} = \gamma_{\text{CD}} \times \mathtt{densityfactor} +$$ + +
+![EBW Coupling](../images/ebw_coupling.png){ width = "100"} +
Figure 1: EBW coupling function as a function of on-axis toroidal field strength
+
+ + + + +[^1]: Laqua HP, Maassberg H, Marushchenko NB, Volpe F, Weller A, Kasparek W; ECRH-Group. Electron-Bernstein-wave current drive in an overdense plasma at the Wendelstein 7-AS stellarator. Phys Rev Lett. 2003 Feb 21;90(7):075003. doi: 10.1103/PhysRevLett.90.075003. Epub 2003 Feb 21. PMID: 12633236. + +[^2]: G. Taylor, P. C. Efthimion, C. E. Kessel, R. W. Harvey, A. P. Smirnov, N. M. Ershov, M. D. Carter, C. B. Forest; Efficient generation of noninductive, off-axis, Ohkawa current, driven by electron Bernstein waves in high +$\beta$⁠, spherical torus plasmas. Phys. Plasmas 1 October 2004; 11 (10): 4733–4739. https://doi.org/10.1063/1.1792635 + +[^3]: Luce, T., Lin-Liu, Y., Harvey, R., Giruzzi, G., Politzer, P., Rice, B., Lohr, J., Petty, C., & Prater, R. (1999). Generation of Localized Noninductive Current by Electron Cyclotron Waves on the DIII-D Tokamak. Phys. Rev. Lett., 83, 4550–4553. \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_overview.md index 65bbc2d0f3..f6e9fb57ce 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ebw_overview.md @@ -1 +1,9 @@ -# Electron Bernstein Wave Heating \ No newline at end of file +# Electron Bernstein Wave Heating + +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. + +In Landauer's experiments, the strong interaction between EBWs and Electron Cyclotron (EC) waves was showcased. Landauer observed the excitation of EBWs by an unstable electron distribution function, with emission detected even at the 20th harmonic. Furthermore, Landauer confirmed the theoretically anticipated polarization dependence. + +In the experiments led by Leuterer, EBW excitation and detection were achieved using small antennas placed at the plasma edge. Leuterer successfully demonstrated both forward and backward wave propagation. By measuring the phase difference between emitter and detector, the dispersion relation of EBWs could be estimated. + +These fundamental understandings and experimental validations of EBW physics prompted considerations for utilizing EBWs in fusion plasma heating and temperature diagnostics. The appeal of EBWs lies in their ability to access over-dense plasmas, which is limited in conventional plasma heating methods using electromagnetic EC waves. Additionally, EBWs offer high cyclotron absorption, enabling plasma heating at higher resonant frequencies (>2 harmonics), compared to the limited applicability of electromagnetic EC waves primarily at the first harmonic ordinary and extraordinary mode, and the second harmonic extraordinary mode. Higher harmonic heating with electromagnetic EC waves is only feasible under specific high-temperature conditions. \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/images/ebw_coupling.png b/documentation/proc-pages/eng-models/heating_and_current_drive/images/ebw_coupling.png new file mode 100644 index 0000000000000000000000000000000000000000..4ead682b3f8d1d6822eae2605e57eab243e73225 GIT binary patch literal 33637 zcma&O1z1#X*Z(_&fCUanmx6$RfCJJcN+Y0j*MLZOw?%_Uij>k_!q6ZwATfvGe;*2JKK9aoR2xVAKiQ7>})T@#r5wKIPDzGxdi-$3n7qu5IIQ+ zHTR_TNe^$*#roqN6hF1`^?;|?#@8jV3Cv<44nITG)%2cPu!r8Tsm~eqvZ+6C%YQ>U zZor`#s;4lX@A7kTuG8e2n&i)G@!0pVOoJa?$I@mDxbuwQ*WMX?=>ZE1`T@(Yq;9$6 z2E$?x#a!jNrLE>sMy!zu(|f48uIl zv`(bJoG3r~1crGUQ)Xe3p@R!uVP_}~?T~=7l0z98Zq{|eB^MA3Wr~tYE>f2hEG;u+IK!f)MbNY@nx9KRnlmcVme!UX+ThT|*|cDUxew?Io3yhr!JC!zBfKDV)BJ!*FL# zCTzHo-iwwG`khsKioYz`4i?|u%<@i3e8ixhu3!3-SPfF-B@N`8NH+3V=d72D#jtHTU{Jt z$-398>1D+CDg409iFm}cop?)?zaqkii@?OMqR`I2>->-6H5LCxoU`@48hm%+H(P(u z-%`*vPqvFL#8Pp~{0&Vm%Bz|pyj=ZV82xnvh)TzhNmvayQxIuI)Il8^^;K}N>J8qt7Uf%Ko0;r#kW zNC}k#9j<)cD*b+s!3I2ok zrbf^|y7R4Rv51pSed$&mrkKyH(FvL_>~OfC_h8s_CBzJ<8d9+>7r|{i-=VKI@m!FU zazC*(^GP}1AzHgsE9LruhE%Q@?^Ktempm{X>&EF67w_rXvvp6@*kY)qV4(Q!Y4>2_ z#Mr@B{(QMpl)l|3ltXgmwA+?hx#cM8L4luqou6H3odKF}yL3^`ea&5b*<hL6s*g^ zU#RD_u!C=GQI`+_l))6PMTvYRDX-a?h9-1_ZufMs!r!zHmSs=D{CN{?cD~r$eoQl`!?R%Kla4w9W zvzMojHe(SNekwkrI3rXrEm|7Sf<-jCrF_k|s2hu1C3eR5R@lCdICO2LoSf=d`_eFv zxI(zZFMHixQ}y8JTPn&k{#C3%a+{}6WvD*c&HXpa(~$r6J7aw@RK=D51Vx&XT>;lG z?t7!z))Hx4+_e*X?X3JyPc~dn#CM`4M_eu~hreueLm@ni_xrcDbuMg*5 zf8UaQj<2R~c3hphoAn|Lo5|eo&^uW0#3P3>3%#*ni*IrfBfda-WSv^ZzP{+?{~j`a zrCi&~ow`_FUn$&!^8BSG7mLMtpp&vtVG!?0gQlWNpcp+6kvrnLh-p)GQC}*1>FsK% zeT6tYP}^ynE>kbX^`yvdIW-bpioR@B-EB~)=SV55X9VO?$HQqTC{yEp$#P$O8G zKV_rQGey+~cl^{@Z5!W9QQFXw{GN0APDoR72{&i;1dguXaxR#@|89_=l2zXbr8%sE zh8KvXaOPwxscMlMo%ni9^_hF*h!LTUCwJdM4407!(F|o+Yhp~99#MLA@A0tgYV=pFB z8nwDgpCknRK-LTjU{M6Qh;*BH13xq5#RETR>yug*iT1J8?deU1a{WL0Io9W^GiiXC!I8%u~}i7@UN9tBnR zW&LXC7EAKhUK zKLlD;s&!9rPme>#B5V|Go{UTkjJ>;o^lX0gQ%iJ^g)%?;Gz_xF+qPw5(`e;#F#zq% z_v$oGq{y|Oq0F{QyLrZ$wi>D7bF@|6Lt;lH+#e$XS2)PaR3h>+n3)^={*ho1{nJZ? zb6OWRgf%dqMe3Z6Uc$g4n?*cI$&k6Qy_uWxIl&*9GComK8}xbECk z+ESJ@DX~or7<}qe3R_B0u6U|>N3=1NRjFOdzR_w5;iOM_q$nsu!bnQk@B@9ZQ5usN zHYw{=f3cf2wt8Ahw+7Ywxmv}cm7=g3e!?|8umrc}aN#`4UAxONSF8veu{M`VN}4sG9#v|dH=HwvtlZEFK%_?>9%vujmIO1-?o1HTbCM7kk;9&xeZrj z&}mnliVYG=aq`eo;vA)>7vc^TKWjYkO9WcO=hR7lx5`%cHdyX$Y5CnP#?=Vvc!MH; z8zdRrK>$5r9P+zR@}gT4?xaR#O8V{GpfJ)X z0o(p5ATlp^|GNiqj@ z2scf5B1t=l{5imh&=s@`;r9(xuiwal7{O~eGT~VsRmz#y-D$+7M8U^ts9MFA!#Q7K zeQ~s!{)vZ#`Az)V`TeSNb>qTZVWob#?589{^p?sjZYfhHkt#mNc=P7<*PeWT zCsV6Lyj?x)%U1GnbDK`72@-j%?e=I$l_y0g1y*kvdcst^`>cTQwo?H8@Vxgmo(Hmx zkTt%lcQRfV%5{~mW=Q>{OU}|Fdhw`FJqQ>M$3Eg}OKv=W`y(^&$ZG2d&lgvkjygx49dx{_FI+|{V z>>~x-@$IC6=;ZrB>SMZs1ks&#p^A4eedxkq#c-E9RW$6m!9Q2smNc7`a~7{N!e4-W zL%QHTI~iQGd2(zDsZ`KQ?RV?k%4hzD(bxL=t2RqF)ga!x9oGvaFQ-dC(hEZEZ}MIc z9^W1!mHD<>f74lb#V1dw{?@NS1|s-@g!6q3bZUD^ktZEq%1?P>tBso-zIOPKy;9$+ zrc)MkY7KPQrES2_i8h}GOT@5|OY%15(8-&32dH+ZCL{QZhhzGz=nBZCSX!vZYLGgU&T1O{k!%KZ3gNMn%@mb&^EI9`05exNw!v z|0*=|!lJ(I#g9i8g~hP@IcOnN_Dj&C+xFd*47-&lSdUxWyne@1$9_LtNT%&)lHUXW?aSdJ1=-FMMrrN!-|qA zq)``#XVtorOChp>LPPm`BBw)pI+dLUho-b=?#Lp-ILoGzWo_`dQ*2Y>m(B@;mIcs_3vy!3lF!-^7(^ST4a!zR47>$4GDbwBBc4 zVj7YR7cpB0d8)rCoFK>97iA4-UJ4)wLc?Lg7&(xNm5NuIY=lbZ0xklo?)saO8N82w zW~T&_p!HZa0d|Tx6SOM8EY?-U7`$eV%-8al#z$bUTNnOm0 zAF|>9yh%pPOex7JQ!n#^f_1S0)WqU1ufe-5psbJ@_raq=)w@Oq1BW6)PpieRt6lhv z=tdqSIkpCP{yG$yN?GkkqRO74?^3xMyj%2$Y|PJ8YC?s^8=>I5hiIGYL!@b}TEU;& z?|NNk`S1>W{d-p{U`uP3VMpL>GjMKAAKe`05;yFg67id6rhq>PVg+fQztCtZJ*^iG zNzpYRk<7U5KdIO>D7HAIb1JBbh5$(Cn2K&ZH3(n}l6|C(prvvqO-s3vQ{zJZm{VM2 zt#wF+C4v3Al7J}+pReySX~841c2I?-I*yyg`@IX{xXGj#PSthxfN7hslTMUS&q)&d zwKpaiY62ZU&^}TbUj9PyDlS&+JWpxcDd3$Ybc6V7QENt|V|y7oLa{WXGfk`Q0}ZcL zNH$O{0~B>I%}J51oy>|qC&rAGhAd~66JHOzat|k*s5dGg`PDAHv5sK?FIL+zX*?f( zGjnx9Hm1CJKID7y1-4{F(socLntGq%`CB~}{57c4&sDo@DyUrgO2ZTKkv(TUn9d2$8Arq|iwR-Q3TCp^S>4Fyg32FQOfzFhQI;c%!$x zBxh-0V9=c?2Q5(s{)L?#Pab4lfaZ;iI5~nJU;;od$ zi){3ZZDNe;w`BaE%2o2kf5DTf3vlA|4l=UlutSDxMbJ;)HrERL2JlmltB*&miQ zLBT_t4{wasx-Ka^0~v~6e+ch3)DL2(w_1+$D)Icn+3eZs$))jqk4w$Pd0E?>|1lN& zCZm?&r!)U6Y|gCfMb7SRD%N4u&?>?;d8BWFBq!cT@Bz~myuhF#*_mZqpaf?vPnpZh zl6)O+J)gU!1ZgSk?~;FTZ|LzO#?sGWS=)Y7#;;-@o-ED@YIZ`2tG2i?NIKUk^l$y} z50u8xYO}wYJ4U55D>&-^RS4*+O{({bCJVdq<>uzv27Xg3cV7L&3K{!hL5Y)%$e3qk zEj=Bwo*YB0v1aO2-lpcG;YB{cQ`ID46jxDI)o%2yA2)tD_{e9cjU1xq+$Y5;GZz-; zETW6hq17Ow$${79IfVu-T+;<_$czz^dGjnoZSqI>|F{Mr8B=rf=;Y)LR|@$Ly!EkJ zF^+2O5ww$pKVNaIxSN=mOb|-smSls=?tF!VcgtQFSEeFk-a@YZyIRh2;gf%(d6`1P z#s(=Dx4zF2EbQ!|1qF`~Eic&$RxszJ_a+I>yAniL%C)D{3bU#6V;KG_O<$v*AL98- zwsp)&YN1YZt=BiJ(RAR(f`fx4BolbdBgTyfS1ZSD8Ch9_=jKch&mAT|-lo0-P4T-t z5nAJGKhpWYUk^55ONT7QugEg9E(&p95yXV!%~!8pP1v{GwhbixeR{CwaWJUqvHOd~ zV!YC(q6{(Z`&C)&}{DUdw*RPo&qC%cQ`QwFLur~>WsH`5KGZj&yW;br3IvqWGe z28#5BJ@=P?9&U_N*QJgThZ)r$4Czj|4C{lw36JZ#mWqmsfb;U5P;#!N!*M%w{n6BX zA!6#8BvnN!KApRNU%JfR{(v%%)zG6xmn7ffSZvHy5Uvdur{4hXN)Z&kN+)J<759E)L_Io}2XB_mxu8(}q4sG^HDYEr^PZst3 zE)IBY<6Sn!VuiQrNc?%NhK}{!W}82}_{tX!ZURb9E(83UQqb`MSHto5>C4w1m?CY}Ypfm^$^I8pynPSv@OG%-`P-vuztl{H zcoiL;PJOq@wis5`s`K5hFJeAIRzn5GU}+~@$8BN_n}7ZKC9>PWcz#gqw>VM?7df7J z2MHp;TyWWZZn1j429%OgPFh-8wsOm+<>PJt!H+C=zo(~T1%>3D463N9weGJB$SEtE zcPGFeFflnCZyQf}plN+C_fnm}V~nBIbkTF6TzE4rMB)p;t@8Bf@{V*^AuwbW?eh`v zR(_7m=lq$8W8{Y3SWQyo`gheXEC#Yl?Ps6WIIlE!#f9BM3YCY^7udK0Y%4-Cf7Ixj9({1^7UgVgxOU+OFC;YBC<7@ zWUW9`Pw$1dw+PrDjP{m#T!swGU*E=fkp27`*xIl^#l>lCxvV)Ju4{iJqVJ94&~?AM zILc?@hOj87EG+zrcHS7P7~93cC;VM(C|={XWiW4v+L>=(`TY%tQ6^#`_3GTbqU>ee zaNZ(u)NN$KzR~I`X*#o-o@ZP+X=0F2?l(8`^TH*c{AYO_M+VB4oY8sQP%C|CDf)d6 z$0z&6YLg#EKi_s{5ZvSBjQI0Mt*orfeJ+@VEt;VO@A<}bqxi|m$z5`CO=f9bgl%R< zM#d{;{gXWq%^FkvH<4f^-pPj@ZcQtDcnE@Z4ZqIy=9_Gg$Y$e}Z>9BU^YPBS)dMLb z-t)uZV_`wTFSe64I~PaO!w*9vBU$+PD#tifBVX1J%UhWIdB5rHf|Kgw^=IR8%uR+2 zHtmo*>;WNn?sGp2x)T&u;!6f)5ba{TC&c|Wp@ZN%BV$m+-8C1rgWM>TpZQ>~ zeuM{SD6(5kRjR8k?z$F!mkqO$%C3Y-N_|uwXa+l^qod>UWG%m@p^r=WZe5)SF){IZ zW#g}|E=F+cO36a%oKABN&VC@i?(UP8oIZT`5Rx-Im~$$xsK~^{#kG8TyPE0%Y#@8t z;upbtDDhNH1CKVlWU!bpzf12pF2mjkT44c)Ib2dw(%8k8K%%2sgJ;jM0|{yKN=4K_ z)F)E#ezQpTa?rkdfM|IGORBrQUeEgOdP$w-mu#g9$1|x9xq0xgiU|lQ()YHS8UoSu+lTyk^CzPQ1{wy&%Ie~&LaIvI9+c+2I>pNI>h`PM+99YIrzPt_@^Ep6-?=uo zf*nd9v{jU49Tv)#8D=w8%-6NLN=iTJQ7>9ww`OBwtJ>{kw~AR@T5?<;f!WrqWOY`u z(*b8Q9WK(3wRtHbVi*_DVA>LnX8kdctsH1g?{m7JTlalwG!k7QK3U_EKYVz#8{fFy zWqA2H00)1!Pli6~)2El|y&%m{@Y~XW`!)HK^Xf&4$d~u;aY5jYmYWlCHJ)=n44J}49?<1~_>^v2Xj=yUBDg$i2sQYw zW=LNyS9<$_Qd_2Zp=s`qq&XgQRw17_MyX61PPRqaJ`2Lshl?G*R9tBu&4DkS^|m{e z!NI0Rj$U{!k>)Rt-0|EZvz1N8(~6(Ctn@Q2yNepyuB`CdU3gL5IAb5La$p2Y##=;Y z`ua5k!!2sQ0;JHjYu7~fe?NbuUG~1Y`5B1$1YtMMd1QG0p1b4Dvh{z@0vLGjNNE)5 zQSLij8%I85WzFTTe0j2*9?9l6RbfSL#H65U#`f^hqYSsLDc(-(`eB(!Iwlw_s@e%%26iSsyQvrQ z@;CO-sN%hPjT_C6VZ>1>O{oFVPwPDyNuv6i+Mhnz=KDmXM<{aZTvpQ8G>p}S&jbh+ zXH(prLdGCFT75S&U8xVVXR77`?&nX03CT)5t{fUpHU;d8Q070$t0Aq@GLP?7i@vLE zk9II%DWdrOA>rXwu!>KEvuJQsV|Iq6*IP?qf~N=L50Mn0JXje=a5*?Q46bgCBO=4X zZuJigXxF*Jg)A>xM8ZxDRpD^i?XYeoQ`=`nEY&Kz>s=| z5&bY12Z!0(P~j~~?)M1^2~>+;zI@qV9qihQ4eIWGp@XpP@yEi+<9L@C{Aa4(OS{zM z8aUbNH_6+B4d1i|X2rzT?^2;4=M$YXODn{4nyvI_LSmJXJ|~OuAfw}ye0+o{N8gRb zqoa;MImIh56>s1fjImEghb%ITvSmP7Tt8jO($dn*8!Q2)!0|rcX%C|lO=K^sdJ8h; z_LSEa4Ag@R3=9+k_G#0u%Ium&54gEMUngN!(>2g-Sp(&5QRC$)NPF97Cn{{8O60;M zO(8>rNmnqWHygu&VwlLm^byBnAz^orhsq|_R}Tp3#Cvqt z_B?#_#oV~MGn{HEd_PY`H)Opp+HsjK8YwfoX=Y~TYxiwoanWIa`4wmVem|92W@e`K zcx5U6jcY&Pc`c7E{fnV;Rs z!tp=f;qQTJ_{_%8`TW=+j#IxA6wETH6w&DPNg)$BJfBHH{+j7Ji}6HK z3Gt7ECc?CedTYKR91#S5bvR=EG#WdGtGuf?*GiXBIt&2UnIw+l$Mkl>rnY_-$tylr z+yiD~BulIKm$rwr!i%nNkQ8u`5^W()=f^vEg^jKoI_2O9OwZdaZKvb$|JB`nYsEJ) zIy=>O46+24^tNX*NDU;ElooUz3sII`?O~Mg*WC%T_V4oqv4+0hbNXz*@_WJ9NZ@hH zlk;Dt?q0qkPpi#6@clk8aH~oVg?5~Ra_Grp+{|9lC}{J@Ui9&q&5F0fRb+xl84K9# z99mMv(fO0#yvEqH(q$sEK-!-0Kqq^HirIR)AsLr}s;ei)My_i%A>a+o!u6vnt*hHBT*tw-egdA85F4PW+mW6sOCxSHC&$Y4U&} z-Cw&YH4J9>(NXho!tRU#-d&DNaE8C|1R{x`PTP=t>)vh`X|_J+9w{AC*0iJ9UUDr;rvrMnh5M~WYpAM?8SA@JUxZl+S=}qqrige z3m)nUboKO@Ep>m9m}c1T={fgtS3r~eWcBl#l(zJt-tRz=mwjmK&{=)=MvDl;dL0qNRa^x;~K zZMly%%Ia3t0|vA)(+iKLO=+3Jm>W5DbxEK&Z(3zs(bU|Z-$G=Tqu;=W1LbPdPq)SB zNE^an)>C!WV^3SV!+Xy88kfm7zY z+CUzv@Cl-rg17ad5w$uz7t1J&72g*x344kx>I1{B%#2k*#v6`pHInwcn6gZ!3i!$- zIZve@ab!bntYKqp&kA=v@jwhH{FRP2CnpJ?=avl7kfi$q|H5GmaPxQ2dhXwf(}+{_ zL`W%7rO1+=x~CiwF$3<{%wfsb7h#=0em_|iC}UYUIS1ienazpg;l()I$Zq87LZ90S zRUTda5n@VXhUHs`0_&haimQxNHfr}A?Nw#`hM&84ZNXJbp7q*~5_W0%+@<;9`O`k0 zZ@fg0rV0>$5<7r?dNul5o^>%5Gk_>_us&Lj9MQP^5ga_XLmgNG%zd@jhfutu-Gb{S z(j%cDM3(uC$=WWHH8U~$)O*LEAHgF|+4s&|e6pwFT{Pt%(T2^~L@fpR2Ri+w4@ucP z+hkc6b9l^q?SX%%t%*BtJQb=8p1o}QDxhlsZSJ7TYG^0v1to1x4nd<+fto-c=m9O} z9IOqirusI`jZ5y;UKcm&x+D=fI!U=BJ@oiMG{ydKP}6V+9M!ZRRgC}koYsmc|HL}r z)NcO?6kHdis*zAbxtvxtsJLLj)S?h{_J{-@N<#YcB9!mdD`<-7F29?o=YAR}&oEF* z3v(7JS#1p-N+8^Q6Q|x~QXi@6c@AyZ>%0efe*mzGzmN;l1Gu5fPq-x^ zr!AOYN$V&aLv|lX!G#6W|MB`ty-+`gSe#o~gA;iD8&f#2T@K)^;H^+-^Fd3^jzurD zfoq6sA89E!-@r=BhG`$t3}!3SpYE^Bj~p`J+UOm<(Gt>wPc#17N5DtK763KC;UueR z{Z;ZXMMh})IQ1tQnduDIbH+7c+h5Cz%a!kD_jjst!RDp%?YkxhNeOxEJ^)(C+1iVt z`MvSvvH9lFI+yk7<@+QtI{w(WH~=?R|I)y}01L1&5>To-I)CNAwL#bj3pJN;VWJ{Q+)ehqbiw<#BOw(mFbc|9YMGCdo%v_}NbeAYg!f zUb6$F2e8k->|;q*MB5+UK`=`{>N%M6O{c%gPX0p(Sg+jI_hCh(Du$pu@F0p3uO zO%iZ;>$O=O2(&!NH+P^QbbxuD!#2ll5R=j>D#RdrMA#17Q1e+om2?Mn`dR_?>X9NZ zhmW2i2p&*mezYD3moqw?-@5FVb!n#z}5R7F;OCQGD2Sud@M(+N>+iVNhMO)ca)j(|XGa{0pxY z*~T~mT~xc7_v$cE{5$}p@v#ak5T2qV4L-H$XSO$pM7ALy=P#{fr@kI4(Dq$>(sq`W z7&j%aDlfPSC=IX~!-MgN(D0=YEPbuY6^MBk`?E44!*3#VcJzMdFi14B;*C);zzEuM zRkLYEHI$SH^EC?R00>|$)I}7%y8NT692Fhi5=_E!JU)H7)FJkDEaz3az}5Ml$I=(` zhg@7oy4kE#{DVLK2CyaIoz|meOs3>+tE^+42A96C zk*JcVU0vYE;86OiF1jL>{?ICMT<;R7X6&KZXa&yd_aH-mG(4Xpue-WDd!%0z)8DTG zxFu)Si!aTK@rJzs7ik0h)fLZ$2H+arlgJAJ=ytDzF>-sj@iG>aWII3?U~5E9D9 z%y)h$Z<5aVypo>4TLjnz4iKsHO8>6jyp}KyNYsh-*R$-T3aOn;q3-yC20D> zV~&A;fMO>JxrB_2XhAx=x`IPP896w5`V1=3Jzr&vjg5aF1pXg@piBKug}Hltk$$a) zuJ23}7C`edAmdx%3Tj+HPM81WsxERXe_q@tx3;zAL?(1v0ODDoUt2lGy=4JzLBa-+)?_(7 zSPEZGx%EO(vCz7lq}#cR1M#Q22jejq^$g&Hkn6fE@RG$-K|#U&<-V3J&+FH((};Th zK<>V*x9ik5c4(88T!O4T6;I=NiM@cO5O9J_NYl{{k>&i&{&eR){KYWDOrA9`3A9h{ zPs^CTx4-ypTeoXQ*RC83on{s?J==8?866!}Q&Y2FjMW@^2j9dc& zvp!alUp5&Mh`#B1ygf@OZ4j-x^(t~>#gz$*90_xHQ)sQUr@ z0tg{8D<%(LSvdS9i!1yrlc&klMdsPB;7Y5_~oH{nek2(|ikGRRVSS)uNN(SgpM#mwuhDioW zjBW6Rd&=tdMO6zUQ8J&F65Df>%(Ub7u|*9M-)}rq?3@^w2!jMLh)p9 zBOfbp+PkErFyHfIs)MbndBTskD4RbsDX^X4$SWw^6gr%kn6NBP_B44ZS+(D5^K=Xy|_QdD$dM|ze8)6XxH*eg)kg&7E4MsM$&MnefkdkkdoSN-wjGx7UL~LsM zfL)^?XPv@T?5xlY@T7q3%$Pixu82ikCK& ze_mu9ZccWEkg{tbY?I;14+v=len)Ni4-V}82LhC=4?xae0_5MDEWEc6tt>>QY(q>! zQVp6&C!jk=DeCz|Q_tZVJ|WEvXzjs4B9oMqd~84Sw9zIJFjzTocO=X&aw_X8KMsSu zhv|9^o`&xpX}_9fEg)uuRujF!Z-w(B8*tf6PvD|_1ElV4=A(2_%p?Pe47R%bhYx$i zrs}^=*1F;R&etqvRtSR__+7a8 zUaT4J0bsR*XuJpqu!hHNQxA`bu6x|BaRcGg2U-PB`=Pwc2KG;TxcBsDb3a)(=0>)|L5B|SaeE}aoAp=B|IS{KqK64sFJ8aS zf{))~Q5L`Wfz=Ig4b{F76B83NH+Mg#i#He-Ny&o*;I3tsK)uBOfVo4Dq2Lt6qcbm( zU`RdntN)&VI0La73ly0k6Aq)Nh7*DjeoA;H1$+~C3A?Z~#c@wT@^wguCsf-HWH=;! zm`a{p*oz7(DRVUb)xNqD=r_Irn|nvH+te@qY3~+5H$6ZryrZ|*cAGDmu6+|24_r{@ zZf;Q==uiEBc@6IWn%Bg>Yi5J(mXLg9Y7$5z*>+^)KWRLyTRPat^AWQOljBEburSx~ zUw&5UnM{*-cg`nI7#lD-MncPKx=2s->+tKTyNHm>YHRIQgMxtp9VI0t*mJg#)ONo? z7ZlHKUBM`BD2s=YMpZ!;u@@RXu1=DQ@ zse$(+18~^&c6pMh@TSN2`Y2S(*ZO8E`{?rh(pBIuk|T?jwJhX$xk#4$l-3et4N^Uf zCu3u8d;^#96(F!}(3`8F4cS#mE$wgK4T&OBcFPL)$m`x4c64KezmgxE?TBK0ag^^UhJ1))T_b zNr9A?qctw(|{-*S?8$a{ko-4O7|Sq$(3OkUnOLjS_`6P z-IahNF~}YaO91T@ewQ$~k8MVK#>D91Z>)SclBVD?D1{Hqwzaxy;9LaEY9V^Zus<}R z4_yslvr}pEtb_OJg)5ji`9ccLp8-i*zDe5qs^Pij!%Ry@QQ*?nSeA!`WL3VLFVm^D z;4V`+v;u4{gdst9J{~Uro}(Le(@_nFXRA3ad17Wv9h*y1Xh(cYf(FclPL=PCBkYQ4 z&J+PFS;JIp9HF|ml>-mgpL%>S?z)`M$QE*w%3$Knu=%T6G0N9bt=4rzZ*=Q7-H!ht zWc*iaN8$YS4{^?qfb{!Ex%~e2oJPnw=hxBKKVosVJEf*uPL=r9hzORuH*VYj?MwT= zvK}*TBWMYldysIdn(yB}W(rJ0#(U-+#z40cQnma&R4+m@cRLdxh`crmuxjjl^cgdz ztjS{)j>1VLJk}$R|Hm8(>__%s-#l}mU3SG?o3S6?6umY}FjF__py$20dKq}Q+=Q=7WD+Kk zA^PhdqhqP~Hx*e00Wc2^ zC!4F5b-WR!NhPN<_atX95B?`_UGh0?bdQB69w2n$L~KRJ=_n$*ohL@Nw+~*LfhlR__z158ihK2 zd9kkExoS2TeODpSq9SC!WPNR%=x#Nwyq3kkiG@zmH&JkLXZx;+2vAI`M_gpZ>?)6A zSVnA0%BCy9{_;qok`270muq1t%piPBLx3hy^&cGemw1qpkbr5SAc7W8SNjYs*MGn2 z$qsxg2NW~AdwY|F?=aE5*C7|86whlZJnJZ;Bw#-S0jcvJpZJS+f18-Hqiw z1!w0U{}>3P65FW87^h0VN$9+dd$Rczz?Hw=MKxBA6Q~q}DTffxuLH8RISv$V6+rK@ zpvBJ2j0eTkB}GWJ_$7*ROM$-wSARg_oh1C$UjoQvbDzKO`6pnjc(-YRXM8=P&#r5J^5()`I0XrYcDTHbHgDHlt`6oy zp_{c^VxZvu0*C|9C#~)6PV?dXj@vU5kV@OhPN0QAwaOqSmaf7cy}iyX2}P?-(DLH&}`_0A4Ns)ZxEwh1&TU5I&w5GKr;>kMjombJ}Xo$C0ZS~ zaryo{+iFDhXDYCAa4Z5|V$vDIifNy{NEJ&4GeITZCyutY8+?F};5>D7ME0@vz+Nxjf@K+BNmZDxtgO7gI6c4wPWgTtxgo^9Pl~*n zCfE!;8?6UBBDp+ke|~J?iSjI_w{0JY!9XM+1OSk`3A%Eo9iQ$)K;;|t`SUXXS3y7T zkwIO;O|H5-{($>pnwbDd3An7@EiEmD#KgywfKeqdhJ}G{kB}aFORuyj&I|jETRy@Z z=33KMKeD|Z+?O586?1?IRVm?OC*3)dbP!P1FHQb@cK^t?GRjl6H}k(6e98L{ zgD>xIa#l6vwqO;s0-6JcK``=I2=+ShNy~rF0^CsVW~;;CPRl+9hWFn@g+A3Q3wstQ zo2Y>iAV7@jy^fYv^NWjKrNqa}0Idg#neyqfswx3cM5tAFN1F;Jo4zkI_RcZUnEeZ; z)0=nV27agPi0u8cRf>-#q1JDd8EV;ar^*v+{|w}gl+-maf?^h4HZh?GHglvR|D+l` zAqq@ym01mQayA^#S$2uaAwg+DeWzL&xJ=#-sPu`W1fL51CR)A~1Mz55F=~KirO}PA zVx1FKQ7z-rlpywUz^}Bmd}Gf{3;_3FU)j9fw$Dr{Zr=c`}P!X zZkj^M1HLePHV*q$Y{kgXkAI9Ui#>%^iIeVch^-mg(RLtL7Nc^20QU;PKw!rQ>L2$@ zJe#Jl(0%04+MqP$BT>xw$-X z$|}2QG0<|81%qWfb8TR-Z07`>Ism*cErM0eCd@K))F})MU!XzfFVh^A(w)c~3RvLh z)Kq1Fk}0Zh&a;?0qJ7}y+0hpMTjem!K;@G+FT=Sp5^*EE(G@7f z|0ogfKp|i{<*fjf0#N9KWKRDY2zYyWafb8Qyq5+uum(Wrl&2L&=ePWau42kM$ZG5z+S5E1FeqY7a@>Fv>dPU?9|@D z!J$Y3;R8+tnmrswIt6}xl);GOH{KdqGMIfGsC630(}xL>+l-cdC@bS`M0D=%?h1JB z=S-IYqF8A&j{J20d0u!I*~4EWV0Z@%wE7|zD{F`ur}LkI)nEjZWjbXUiPia(8+8O>c^*0{HabHX(`fX$i`y zVm%-Zb8>PHulNB+gYPc<`T=rO?lZOf#2NtJ(En~*J2-2)1@Df!Hx!OQx8uZk#kp;3 zK4jo2wMATWxzY#a;W%Rzem_X6VF7h-Rrj~3&VS#V^%S{1Yr&t7n*~f?R#0g1 zeMwF1>#!BeFlZXPJqZ|XcqN&%tl#B?GrrX*giJ6Ghpm7yLV#@WU9RTm<7`W+2bpq8Cg0{+$6(0~t_? zP7*2$-kT_*0L@TA+(*!;7X`X-E*xI^@SI*JsfS`uJ-kvq!Kk>bCAt!_F7$mPtoawn zEExGZNyzvH=;>Q@A_>2uS$I5lK^N)O{W}_(VcwMRUH`%+BFT)Ud7{CM67&Ujj8}^F z%|Cc@tc(6hNi>d*&0E6-`uPt(&*==-V!2k)DL-HTN0HakN|ysbqHZ%GFu42P#l&>& zHL7bZ2QiisNfKq*&cxu*)TSkB>9=U@F3)NQS__L{7qbnV9rg&e8P!M09JZXeujYe3 z67}DvvNlONS?__a1%sm)_>(7s%jF{2$D$g6;fC%X_wGc!Nh5msI&5??*Dh?7iGjT| zMWmMcxO{ktu5DHEjB=wzHrGjWt9QfQuL}#&V&4P$2or?gv`L^!NdmL36l|?}%3&qQ zCtlCMZ*IF{UDHy|y10|Sb09HeShwniUuhhk8Mj(q=+{O?ykG%60e@NI$z!rLvaxsf zg>Pi4jjTnF#DSKcfQI+S2%C!MVwq}+v!5smu~XV=26^wUIh>jlNG_4iSirlFep+`l zSjH#~-Yc6g#f$Qxvbr;xR+%1S`Nebmc8ME3$Lm(X1d56bhv}Fbq{AeP@NTjKUBjP4 zsLa(qFTcf;CKMI@7nQvG%^q*w@3GO3a=n%;j*uuM>1|gv1P<&ZjGNh>m zoA7&oPiJdIwfBGWLA6D%?DJ1)pV*>m0UFFf%N+zN#AC||7V^3N|MXD6ygC@B>DhRU zT}C%bBnG>2G@ly@5LB5HTIp}+?4R-a=KBAqu`dsYx_#TXrV_Gb4NqfGNo0hvRtAGm zh-7KOAbVrYUeVZ}QPD7{kd&qDyHT=ajHEEuk!q5i?A!1DOwaRuzkj^H<9MIrxQ{t{ zn&opZ*L9uOd0y9@xbYmtbN%;F4k)RF!B|wR3k7D|EF{~K-P?AJzUTpz_!;>f6iE`1 zw#_?l`EJV)ZKa+j3!i#BbMWE*5C~-Xn=WXUmdt>(Z3hB+>iNV#Zdv{R%5e@K5)+#W z*jr%)N>1ynE}qpXm4tpm)~wH)sFp|3V?cNRW_F=!@pDC}d!v~{r5f#W`s3l6%b+Jf zui!$DEtnYAG)$6eZIr3OnBXsU3yW7;Dk=#91I9I>B z?siq)CiR3u3ale`rX^q+PBCR=YrnVncd2rwHiG?wfcbO6o-08{#%_j>g;)`~oNOOb zl>TN}DlgAFaPPUv6|^CVI^AM>Sm8}k(3q-CshATv!)t8v)3glFq8oDS z%h1r2#vSz60!7fmN&iYN&v_uEZ&M1&>c@Cdd}j7;Fr|s|`_UJRSzqfp{kU))4nvrl z1n=uA``|LnG<{-bQ-)8-KQ9)Y`|{PRFoSkO1IN>K$tI1(W>*Fu#P95cGrlDnk3-%3 z{^3!h)VJKSf|&cN;>6$nZf<5LOFs+Zt6#{OpfI_V)|;l8Vl=1Z*=M+RIZI*il`0+s zBmiMT+a6oG^v*L)$JX_J`jlk{G`VPb+sd`1BPp)O6Hst-EiJ9zzu^%Vum+A?q+Hh5 zz2Hp;xVe?o)YhM+!VrX3P`{e+S*b211(tEqV#T`f@;Ef*$s|0EjLv(nSKd`{WA#8r zsRE4O0-B(e3z&qg%~|vKxJboA@iQ;^|Fte{O-+gAQ|B)YoUl%DjX(>J={OxP)iW2bPDi-3wr> zC*dC?`N-#t7_?pOJZdsSAOq|@Q113%P8b&Z9DFMF^ZF7UEUk@&3G(!JY5vhuMiwD5 z7It>i|Jk=r@=uR+B%-&t`s@DxY+H`MvXxowMg@+17_5?${**`IIBC*>!s8V2D&fCo zhUw0l(KzRzp8nF8yEbX{wclvr)gW!p83NkIhA_7m7R#8QKcIa#lm1SNw^&I|vKP)P z(&A^#>uZBt7x~9y>Lz)56SI;+SWc(9AvOtw?Nq{dVh_2NOio<#KS~L}q1FBGMfaQ+ z0S)#1#&5-QG@?qFIHKAjway^sxoK0RjIL=@I8=trz zSrVhuSWIh1IkoJM!@Xjl#(K9$~nCaC`JwvZ29)2fjwPdEnl zYR(cnckJwV2`SJ?Ugh>#9A@JBl3pXN^gy~&QK^iNHZq>POKh{HGml9u4|pL$O0cu} z_B&?Pz+w8q#*&s;cs ziB&GLgn5RfL!f>Tz7^NLH!(3$Sw&?d37?kKD#{d)^oAt>nqGRkC@8;VJTYqYlu}tp zBoC`?RN(gwZTfInj>O=BP!gFEL$4DG+EmL97V;4~V{2=>^Hh&5@_oDz*z2l3>Z6AO z)W^V}2C^2M3gltFhQs1g2oMKZUb6=^U}sTm`Qj2SVVyw=J`^n)(RPMtJM#InK(j#{ z`pQEAp&pg|IQxn7R3SV;>S8pW5Vm)XuQ@ZT|30GknGamk%D_*XSELP86?TC!qoF_A zno*kFx02ut_*DQ*DS-#@DC6_joiLK@+8l+lN8^&tFQ$eL3rhs*1)1`Syra?nx_fsr zgKdy%Y0|%dJ;2>?`$PDZAw+6ztvY0{&|aYuz|3`+wf7aWdS$%WB$JJz^hl9dFFLL* zjhVxssh@oENHr(>eCCU?c(jV2idApKbsTH{Z8y&si{i3^ps2L~vH^Mn*uvF=0(y5z z{3I=m%7(K&rH13(oDhowivmAcMJzye{yt_!__f$inWIleSuB}&ShExJcws5G--SG% zQSW;|1x7CezJ^8pt>dZrr@jtL7PMwV%98MFw(7ViQ-z{x>{|)f>~p;7Z^qJbWJU4u zEBbXwS>G$-%aF`c#+!|?E$>6F3(UF)cuSPbv4oGOnpX$q2>J*t6xP&G1MeMkdwDFs zvi_UUo@@CPT8;#*kjj4^oDc5-q$vE{UW*$TKjlli=dM2li!5#I$s22Y1CtkvTk9LV z@IH&54i=0znc;Z>x$rLiv^(&;DU~tDSF)$WzC7Gku5u}N$qJ4EqZQg3u_|Et&n_>~ zmnb!xQfkRK^z@+U%WB1MYC*MWsZ?qPA@z~g80xEXk8n-^O}Uv|T;R(3D}T*_7k|f{ zGk3i})^hFn!eCR<{skEtXBwZW%h(Ck+(Q;H4_O;XJdiiQg&9y_ob^0o|qET?= zrs6waVV%?eM4q(RSz&w5!;f2Q@;AeI4WF`e3a%w7I!nLTJ5gBT)Ezq-pPW~tmE-JY zB7?6^uoXtqpI5Li`Hd;SCO?mk&T70ZFHcM_&0bkac$im-Ymxp`tc<7|CTk0QN9w`t zKQ)Slx$8PBwjO=BvVud0Kerbq*whdjI>}i~Dy*yLby9J;mj>J3l&e_!KFiN83loa` zUFDK1n;n`0#wTcrG8R++!c-ov=3L`?l5}mi)Sk2(CzFmtk0%ld0qa{fS-mKCP`=P8 zg@Zdd01LUq(!^aaS)FCAf*oNB9YC%=aGi+73G}sBB$QeSS5#E2C;gQYg!IoNP>&-v zIq%qDu5x%WWpRY7hIW)4k3+#Z9V${mR8s>{0-RS~zchPYpTM7rXRWEKnOKE;CF?ha zkLaQH=M|Se9E?jjU+k=0Pagt|#5ZIt`j$!GqZKAawk_6qYmyFbifhAlR+&Z*w{=@qTv1;o12q!bF1QxSHO802z-|I^hjFl$^kJ^(HpMl zq04dSo!-7}M^?2WS0%17H*cV9BZs1z_Hd_D(lI%+NB zvr7cm?$`NQx8uP00Ihtdn-y^C<=9zcO3fouBHKjbhe)1#3c+QBumN)VjSt6Q=88i3 z(~{kNOw*N>DkfAR0%}z5ss=qPfU+%nrw$#+e}3rd-YuSM*@SKTa$c}#Q(qr$KWKPR zuVjDa$`w~Pw*?4VJ+GI>VT*^5tB2^rr%4rTy=$9Mfv7{KsFwTD%a0!8YmRLWu9`UA z!h67`h_-ZM9p__?tpEYK0PjLxVJ?o{{}I9V+bM>5JAVktOMH*)*L|&2i6dW_nVD&n zLOrW^nxZ93>De)!Y0N>%$o1>PO&=76hILw+{vw8i-tf+3H^UHN-kUUDnMq*`xyV zO)pd&l$yH&R@dV-#YsQ zv0KH2hEqQhU@&&o{Mv+b!_ z4mH4?ch@~M)UE9F+{DK1KAO0AGJ#x3yjI_{8P(6UN0ZqjQ6(Lhdl8E*o7;GaSIBu0J-8m=BsxLMRahGi zWvhFLe*5-Mb-!Wo+26~{J^g8!#b@zq=Pv_)Q$c9xCTH!*;+Wl&#TqVt`6qD`hxHor zV|h#^&LbKnlP>)_UDk_PK_E8e5uNTjstET}W!{ge%!nyO*-6A^J)tYh)RecQ3(#rQ zYTukWVZ5vRi)XuNp=2#WqAwBqV+g?jOcf?!C-PW)DB}u^~`={wys3QAb6lB}Qz-qNlHj-T6|? zD}c5>%Aa9(RIPeY>MdZFZ@Wl@Z*u=0M{~cCYpc zV(?7S58`HrTC${4SqYy2qQo)fZ97>#YAEs~O+jC4dmrs2%^tIIoo;8QEu!ayd3jX+ z`P15m??i0Aos!!eh;4BzecQgevA{aMaE`mA;k2f<`XYrt5?D1k-1LIl2-B8YEe@9A z+*Nj5jfe-HxHLHvO_Vv2K*TBt9dCEVSh3V=Y%OGCgE~{@)kdeQ#o3~JZh$!2@}so# zGh<81$i^_nx$oFORRS-9|~?JA>?i9faSHj9}j){n5sp(zYp`M zLGER5OxvlpGf29G52Yx8Qq-rwgD=p){y5-5AufnZDJ44JJ&>i-wqw!Im~(yz^sA`_ z&Jr2s<^>=YojjfV{Px#^#xe5jo<=4QW`{YV27bc!{@mU#iA!6B7fbl@!k`kL09wg6 zlXwY@ISRcIznxcz=!mm#!nbb&I6kKlgMMc6`H|IGMJdmhi{VX#Fx<7%GhHMxBGzCr zXmkGDgZQ@K@M^5RoL@Ye@}uiG$2IRg`*Wm?Q_t_f@FHHNr}VuMWh=+BG)mk+GI8;a zuijLYDw3Y`eLXlix^0MD==wPwT|w$PqcCroML&cWDQtY1P|D}nz3^K|ANzy6Abu9U zAS0Jx6@B&1|Bm|Rfs4q*tQ>77m(@inBn1tHvBh5sH*p8)rZzdDrsB}F7GdYDYYLSCe@d(fVufKlqQYuysWHmw%J)Yw7lF%u39> ze?M!9?9X$X69s^~#Z>;VIW&#L?=<(n3mI?|m%=Y3+6o`?;mR3jDHLA&s8+ImY@X&M zyMIo!Nakp{7e_eZ8c*eB)aIgayFARI+;7r+j2Bh`UQ*{`B8Ep3u}Oz3^^6J&?ZxnF zL08+_k%0<65F-5gs9@Dmt4Szm&JP>g{#jXBc@3PLn3z3+SCz8oywp27u&m0KY3oVK z&WzK8{-&-EOL34jCDK}Ar-zAJpe1%$uQ~NEx9rlfkr9)?z$!)t%1Cbgr>ubR^-DwF z3A`BXE`*)g;LHK4@*B5anXywSzAlhL;n1H>cOPfnFmFojIb?0eNU;H{z)L{sx$R3l z?ObrR^F?Dgxd^7`#0D4x+_xtcPmeF#yV(r2nZmh2ii*1RvG2m84LymnN?>4z7iWzS zWumkh(j_*rO2`8?f)gp`smW`Y@x2q|q6Z7cS2TlH{^IdeBavta^WINxsXF%+CxTBN zPasc&yL!%Ol{gr;GiR%oje(#Zc5fX8cgA$3f7dvd8#B~9=#zeggTr+BRtNEBcfoTR zhG`;&^f46)^!tv(?j z>PB7zX$NPHMgAT8bmhIaPND0=r#38}@T^JGhp{wd9cwG1-FQcPe`RcDscGrrn0gxkPY9`>2mWuKgnGtxT}k8 z#0>@`^rkEV$Mt7jk0ogDFH|h+2AED?A{|7SZJuk$`TH052=E%lRmK>tWc^$gcl_|r zyC;n{kG|$z+l{OvPa|oH9}n1>ynfy@K{Dvlr+jNe(!=G_t6?dAK;p^+fl!nRVGAhz z-56%_zmz9oVPf)UPmU#oV_R02NkxwJKPtxi(cFMbQqukW`7?A(@iQV>rA@2fkiTC3 z3e`(5Wt{GB7Q+55spn8i6F?hdQdU(BG386d&$x-dN$pvTo|H>SlGNcQ5s_F11wiDK zq7Qfa?%~CI4Afv{|IU2t>J*|csP9(pIizxCN;vjBe6HaW3Wa%Tb108oeB8wIdilRB z7vQJR5?~|E>ryXXy7Y*Vj$8*$@venhK9*8IG|SD?@n){<9Wlrl{fsc@0_ND zsRE6QHe!Y-_@ygiF9#w@(>U+yHs*Zu1iY!xYB)dsjY*J88!{hefLeq~oFPx%Gc)yp)03t#3Gny=v&g_zH@PPclKMP!)~RuW~W< z7pXWTJ*^(l=lHT9crq`I3A9NULj*$}ux>aHMjy~xb;)^iNj<0g?Isws65!xUs!4bfvM`AMxexry3l-n*8mx0mQ(bNdf9$)w-2QO0IEKLoXjOFs~^BJTW^|$REPJ> zKI}T*$(VZWCqVH*auvAiqR|nBDO|BkOH=f=Vy`n-LCnya?;h3+`UpLoF$!#1(@o4( zQgMy|McY7C7-D?R$a=6X>JiE2 zn&fLgQMx);Xm~I!hV0Q81yM|==)>G};!>s_3NG{x z(fdi6Ny8n&A4iS_COotB!Zb0LGi#CbX})y3TB{rUc+`|@A@iMMoBej5Xh;*UKL%NP zS-6X}QR~;65zLAMeb_9FjgMdm+GKA-tLqSQ#l_m(+^Ik`GPA;6itj$kFHi4h21#sh zT+YpF?DMCeh_A^aY$p}c+sPMz-tFuA1^_~l5-pH2LoBFu+{&L-*L^+eTe&x-mJ0_4hkh#2~;{9WD_)tup`{2+}!w=jC)Xe00>cedyB{6^e^yw>< zO*+pc^#nDFN_dORu>-Dzh<%lbeU*`(zF)u?9#X183Va66uvOV+5Rb0z00lIRAgVD6@($=c%yk=?+@yJ z(Wd@RVQ<`%WW_gakf4-p?&JpS0c5~llvBET#!KXAZ}%jYwJ`_Rt_DHP#55);E9iY0lf`eT#x|D#@88dTl(;D+lhxnVfYfD1mMnFfP_mgbqm;)ePAYZ zj`D%eg!NilnWNlwFWppma0tHu%_;T_qyr?&)Bzu?9RTya05A>;xM*_VJ@og%EWov9 z4f@}Cdc@!&{yp*LP17vR$$uGnbdf{D;6HDBe)BfR9^`OX*1G?rQ~BxXj17e}4>(IE z;0C4ZHB3-4&mj-E46egj1Y-kw@S$F+fGO1sxKpUH9*ho#1BRaAxckKATb^cEPxeQ7 z@28FC#dAQJ%O=DOK`07#!P2Q*6&Tj#TSCG0pr#1Qz%?Pn1+JfcqrMQY8Q0zdvJ>c! z1?dg4A(Kst-!wiv{^MR4Qqjv7FXq89Trbbhd6V9Jq;2#8{qko^eh@v7Au2T^p)kXz z(DV9(RuKq?g$^!#z?5pmo=EuP&4Flv$N8!3d4C~=<61o9$I!W;)0Q0?W2ayb%tC&> zG$L5orw%X=0FBBK4Cu(EGhDrmt(@!_!ryxCNB+M^ca$Z~y_52JJ&hN#jKA2GtpkPz3KCB3v{x`lN+yNILL+FKuVcj!l-Ec z8iv6fCtVAFc#N?pWz8&!f4^i^c)1zW?=$%B+yjj}YOnd!IHy@tO~1qcP1Kn@*o#@U z_YQkuR5j>H1}T?OPKTvbA7t9vjw2Is-=ug06C%f01zF1?cQq52LJ3cf*0v#6Rp`T# z>U1x_zMo*$K0T8QgFUD&L_RKUnz>L#hnJ)>7WQxO;KS9D@XVh?bW&L4VEZhstqtt$Ga;{J6!N3%<&%O+BG;zr`-et=yLnh#esow=LeihY zl^FUK+3$(bkv&TEVhXqW=>tQ&2bZD&I_9(Gpd+TxqrmaqsM8_+KPgO$cn1@*+rg!DZMN5C~%?oNKjn6mGPDx=GT=&OE!P2b@S*r==43n1f&s)PM1{}B+Fo3 zJn+gvphO)S5TvpkDl0v`cBw3QET}1Ezc*<7@fa*;7+oj$77@;5$0WyF|0Q!+k}kuj zw|2IIDcL%6(B=@I;=5{?OZrAV=Iu&g6;2v*4V4{?K<@W%^6gd(w!K(5z_9r=*JKIpd{{{n=>i*g-+LKz}F?O)*-#Er%#XKjneA#7<{VeZqUYT*?kQ?Szlo?AE zYtwX+4{TvY)_s-3*Ie5#S}M<$6yLcFT3(qzd*oueF1*8B6+qFHqNb*7NSQtb zLyW8x-Ym%9++wdy+LRoh@(paX^Lh z%?&xUqYMiwa>=1<===Nc)GnYtor8QOGcYUq8&3nZp}?s0TRKg*6&ik8!Dy20Vj3R!n@qIX*V$$mhAg85%y@&ges(*PkHX26U0 zWyJC#o3a?_COi-lk3t42>{8y-8&le?xpV-GgtTr!Lr#!a!`Mqbnoq>VlZTk5TU%Sn zGtRPnrxSt0KKA#^Qa(Y|{?g{&huaj2DPvl-j$jgJUR{|Qc)cn>L5^KSIURsP=YCgb zW3BuUj-d6mnmZ8z42!zU2uhrSC!mOUvC8G!x#XF|FZiqwB^z5uBL;B+H~+)cAOE#- z!mIe{vvM3)h}n|dD?$C+vmH+VZXjPlb8|B~AlEGJ#gK)$T}xcFze5#BS0Su{M>~5S zHad^qlR{R8NR9cXZF5MXXOAmZkdiam<*=iVM1;`SH%jTHiwnQx<` zXBznp#TavaeMxH1HHE8}tzUP0y1UB_xWwi@ngx+w;Ig}}blEGT22U;+Y=W_c*D$Rg z`Zn%B!03OlO-02Q09xLE$$BKetl1dGp%o_d;-mt(w9$;@hWp zLLESpp1iy~`}zrdxls#HvTfN4nSZe8FjcbjGfT30sg`AAV%wI~zK2a{hF`yORu2U$ zFU?Cb{$aWBF@|+(@YfoLKF{2`6=>Dn1WS7fwqJ_&FImkE$_^s9wFHvG7OS;GHbeKl>moq&g zncrb4kXQo>POvD@Ryn$Lb~VAM|MO+DmqmsxwT+ z@0J$?^~J@-{rvn|Hbh`}1Wv?OBU4B|(3b~n(c95tHIg7Bw`gMt!mV!D1dL5IB$e99$a z=~1)u23=nK_?F<#M@z?))~+Xv{6lLR9!-$oOs*nOUoGAX4D{M_JL;JCyd%aqlF9}; z`3tfPQ1Fvjce!fcp2HG@K1_5OaipU3A4YT(BD73t7oUh%hkWi`*&Qz|f2AC!7cU4UKj$jxNsl-O!V2$qZFaZZ z+W8ZLuZv4XjvX1``xcG}VQn7N{g<-AJZBUTFKLb_kOaMd&^Z9~=62;i?1P=MKo1xJFYsY>d0hzsz?7tT1!@^Sq6 zi_Wk5m`e}mFSOX+bMlnbz^lPA^A$L!cg|_{D(ms)Ee0VUjN^ir7T332CzvTb2h1;C zIouIk#$dh}blvmkGNt8XPfAuGccry`cgtxC-%cSgvJUVQdX1@4^)I&?_9hFiefkop*h6#U9hg`>m9rxLcNg; z)D_V7<7(Y2_|I}UW9q}coXZ;UeMny=5?9v$q>oTu2_M+>p3JSOyrZ*m-=x=JUkKQx z|1gAjv^=O&Bv)i?rl9EP_Xka-2}Sp7gJ}!)z3ORmmAKp}!5{%V`t%yZ_`-&erO3~KUtrGQ$7mfb9==hCIR#(fg3&V0cT=p6f#@qDDqueFLYW` zWt^Dt30YfLH#s|-q((qjG7yF5NbMugrv@e2x#cdih5L7YcBL(SE1uXI84R;fZ~Iez zXVKDuD%FF~kI)YRCRwXv}woD%DFAA*MhHGW=PflWK+(BamhrjNx9{EzNo{zIq9i#M&SXnbO9 zj7)9hL^dffh{3arEd?FF;11_uu%+-fTFzi*KQiUif_`XbhdJ3&=8SLHqEh}uRZz79 z8Xh{KH&$o?(vakB7qKs5*~ywR6b-MChZ!;o5B-6BktCr7i8(35Svu8Wh7Lo~(5)C2 z`KE{dBA{2fX$Y0y^pD2m5x3x9)^z>wY z5SyC}tjaPRhhqpzGYn)Uh*Xy`K7oW=82|JQ6ny-ZM8!ACYCi3xueQQFC{_dp`!w-$#Fhh*RNFK7&s>ET2Q5q71KAx!+A{fa~@t)yZSGHyb z8$!1>GYHn!%~u;kP8h(`;MJuY+lQLAusgv^XaCCdlU!R0yJ7%K5y`hBBg9Q@q>3YWH=?b@`>bk`b-=QTOr zE>*TXvPZ$W1T7EDFQ}H!f0G>fAlVRn?0#MMQgf3{cVhO=zU-ZRq2TqPWC#{~YJAtu|XsYo7{stjrurN+?UKsqQ-(2S4DW{O}v!9L1a|DNpSM=@!9`ZuUV z;hI|y=rvJY7%H)E*^DT7klo;yu)F=cGjuz4By=XfZY{4(Vy>U<+ZZ=Bft7#CzW4UF3WSsh^0IY#-OW$~w!UO($+{^Cpk6hB61WAOkm@=siH- zwCEoi;yeSAIy$_k-8@9*X6Msh`uc2H$oiDaiVw)0nSkeh{VXr(JLgpOt?OEHf_*)M z7Yc3|n#*SUC)5Kquy5ZqTWzEsrRFJb_ZJopX4W6-^wx%Mcgz>k#cO*X&k?627VIvr ziOh_$J`*C+^6dzEPPC&%TyAsxoNOX}6wr`m{FaIl_{Eb-apa>X@7zGd#Z7;8)N6e|*L8q3E{?P} zODfc4z9_nlhDey-xAwkGS8A%vI;>kk(95FeyCvJ(xzXFl`YTm~y8gcR_QgrfED8Gh zc-z#3W-?(!&&MFPva-@p+Xw{@E3WyG-cGq>=cN2)&xlK>Oo2!y_P4$8SHQASmbpIl zMnq*ba{m6!bE|lcg}%X2qo|D9ed0)adyw^Rv-R#1&PE3TZcW{F<`TKm63rozV%v%U~ zD8$+D?a%2rkoK{6yQ%9Q-It=pq{-AQoZ}XribH<|&6OeRc8Hv3<&Wb&-S}wbnc`!3 zxy^OW)bt-%Tiq=MOEGjCSvAT1JH@BX)fRx%>2Bw7-}*PY7qbD}d=Rr5>h9&WLPWu9 zQWWhYc<1@}&H5Es(q#z6S6L6A?OoQZ|1~$q@dVI8*c4Z%0xg@H@o4QuLh&3Z^+s0l z2R(e^S_2_c<}aiwP%#ZDEU8KA-8QtL@u@j+|EyiUtX?uLflqM`J;CS^H-|ys!YBZ5nB)T>3fdM1>w)a=p+omjU_;w|o9w z8CRg(pg;q~)QvO~L9pVWeHgl`iouD4U=VBBw`UDg0B#nUz7DR0{g*07VQ^wz)yy`MvvLxF9q-=^rQ?Sm+w|k6R5qsmo(oNpL~KeUHnRxg%4Lo7 zYcB}fx0=gb6E235r&&qXk#|XsB#9>?K^zx2LV2otCt>g`!ZK?&vu&i*nbSV3uSM0E zhH1p!l()wmF-0VqC&Dk7N9Tx}wPThkoQNrwUr_tOZyWls3ugxU`3JH#_m=gYXz>Wt zylNS5_5L6-a+QOl4A&{p!YVI7P zIg+f2*d~iLC#6dm45^7poTS4fc{cju&3n<{*ab8hI;lg&D&A2M?4#o#m@J1DV7;FF zP5AtXALM^#AT>=q5%;!@hxsa3M5ul9UBl7V<8kLA#3U5tECpl9TBIUUNR&jk4GKf_ zQR|4{pfK-V_q)h;;pelxPjWv>9u?xcI?d@|(e4Kd+q{0KpIf|vNn_1sZln=IH0$f+ zCM_7cGp|6ESX5gk_HMYNVUicD+HrH0WQYjie0^ArM{|N0^2q@F8*LJgZT8L2&bLLZ z5cC!uF_K4wn3>q_oEX!#y$a99x6UtHv+@ssZFje8cc$4l;aM75H9 zgpuNlB~ZNF(D<(XVHkf9>sen*lX-(>_cI#vW|+!PSCu<@hUeFqpYR1qT`-WC)T8~CLC><%4yp604X zpXF@x1vPn@Sc+!=C5&kedq<~qb;IN+@+fz*zK_e#HcCwyrA8>Sigh!xKb@Kw4Q^_E z5lNo*qH(fWG+qVuN#n?r^B31T*EUI>q{B4ZEU6B-zTZ<%j-3|lVbI#ql4@K3{BJwr zf#fw@`=Ss1ndvt$wzw(Cb4m;{oc*U_oVNn zbv!2vpIqHezk zSVJ;-+APwHWoqx9$(NfaoXH-?d~W`>Z}j0x+BH&)^hw0de!D!E=Cs$lE4k+TeZq+G z1>x;Sfl4E0wac;++ja6G72qbCulfl<3?#baM5-gOhG8Ichj#OI{4 zs!PJaMU3iR5a41lV_Id4pJ_Bo!_GFd7(Cb-=HBY|`SsJ3rqv(>Y|V3OEVE{#^-()Q7sZ^Hy|HWwdEJ9wZ`0)9C$yuP^d@(aZ{ zYlEN@GLJ{KQnOij1mTGR=^7bKOe`sesI!*mzcjJ%FsZW2?OSpAbws#j(~}lHvQOaH z3n10A1+II+h0Xlpp2+zUFXNolhp^XJX9`sXtf&lqE0k zK2UxRJRlmvga7vz@=;8m_AOQ$gob1@QZ-qfJ_W-ahe^18cjqP<@9w?YmPZ?-xGOECwOHr!-ZY#~hCM||Fk z2I?L~>BAeEl!{Sg;2bX7EKz;;wOPUf^<6C!5qmWzKBMQQBA?+Ykl&<;=Ij??B2UMY zB906s&#UJ9&RUQz(|22fvgKja9H5e>1SH3_$w2iP{1CT4*lXx@C%W8Dc%EkPfDdHNYD9bSx{Q=5OEjjb4-crJ%J{5E|SjsJEo}8Hb z2HU3mc()z}US7k~K*0LQe1OSavkl~zy@krWhKUz@mtRH6MXKJ{i2(F$HSH-VErA|A zJ%L!Pv-dE&1WV&L;--)e9tAgs{{PqL-X)h|mw5EJ8wk&2%ehks7Ysc=1cn&$z$Cp9 zdLn=q=m9w+!OfI;HF0hI92 Date: Wed, 1 May 2024 15:55:27 +0100 Subject: [PATCH 22/32] nbi overview update --- .../heating_and_current_drive/NBI/iter_nb.md | 32 +++++++------------ .../NBI/nbi_overview.md | 27 ++++++++-------- 2 files changed, 26 insertions(+), 33 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md index 3c1931a99f..c93f69b954 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md @@ -41,30 +41,22 @@ $$ Power split to ions / electrons is calculated via the the `cfnbi` method described [here](nbi_overview.md) -## Current drive efficiency +## Current drive efficiency (`etanb`) Uses the `etanb` method. -effnbss = current_drive_variables.frbeam * self.etanb( - physics_variables.abeam, - physics_variables.alphan, - physics_variables.alphat, - physics_variables.aspect, - physics_variables.dene, - current_drive_variables.enbeam, - physics_variables.rmajor, - physics_variables.ten, - physics_variables.zeff, -) +$$ +\mathtt{zbeam} = 1.0 +$$ -zbeam = 1.0 - bbd = 1.0 +$$ +\mathtt{bbd} = 1.0 +$$ - dene20 = 1e-20 * dene Ratio of E_beam/E_crit $$ -\mathtt{xjs} = \frac{ebeam}{10 m_{\text{u,ion}}T_e} +\mathtt{xjs} = \frac{\mathtt{ebeam}}{10 \ m_{\text{u,ion}} \ T_e} $$ $$ @@ -76,7 +68,7 @@ $$ $$ $$ -rjfunc = \frac{xjs}{((4.0 + 3.0\mathtt{yj} + \mathtt{xjs}(\mathtt{xj} + 1.39 + 0.61\mathtt{yj}^{0.7})))} +\mathtt{rjfunc} = \frac{\mathtt{xjs}}{((4.0 + 3.0\mathtt{yj} + \mathtt{xjs}(\mathtt{xj} + 1.39 + 0.61\mathtt{yj}^{0.7})))} $$ $$ @@ -84,7 +76,7 @@ $$ $$ $$ -\mathtt{gfac} = \left(1.55 + \frac{0.85}{Z_{\text{eff}}}\right)\left(\sqrt{\mathtt{epseff}}-(0.2+\frac{1.55}{Z_{\text{eff}}})\mathtt{epseff}\right) +\mathtt{gfac} = \left(1.55 + \frac{0.85}{Z_{\text{eff}}}\right)\left(\sqrt{\mathtt{epseff}}-\left(0.2+\frac{1.55}{Z_{\text{eff}}}\right)\mathtt{epseff}\right) $$ $$ @@ -92,11 +84,11 @@ $$ $$ $$ -\mathtt{abd} = 0.107 (1-0.35\mathtt{alphan}+0.14\mathtt{alphan}^2)(1-0.21\mathtt{alphat})(1-0.2E-3\mathtt{ebeam}+0.09E-6\mathtt{ebeam}^2) +\mathtt{abd} = 0.107 (1-0.35 \ \mathtt{alphan}+0.14 \ \mathtt{alphan}^2)(1-0.21 \ \mathtt{alphat})(1-0.2\times 10^{-3}\mathtt{ebeam}+0.09\times 10^{-6} \ \mathtt{ebeam}^2) $$ $$ -\text{Current drive efficiency [A/W]} = \mathtt{abd}(\frac{5}{R_0})(0.1\frac{\mathtt{ten}}{n_{e,20}})\frac{\mathtt{rjfunc}}{0.2}\mathtt{ffac} +\text{Current drive efficiency [A/W]} = \mathtt{abd} \times\frac{5}{R_0} \times0.1\frac{\mathtt{ten}}{n_{e,20}} \times \frac{\mathtt{rjfunc}}{0.2}\mathtt{ffac} $$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md index 81f264c508..2655d8976b 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -23,7 +23,8 @@ The power in the beam atoms that are not ionised as they pass through the plasma It is recommended that only one of these two constraint equations is used during a run. -## Beam stopping cross-section + +## Beam stopping cross-section (`sigbeam`) Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the `sigbeam` method to calculate the stopping cross section[^1]. It finds a suitable analytic epressing for $\sigma_s^{(Z)}(E,n_e,T_e,Z_{\text{eff}})$ for fitting $\sigma_s$ data for a single impurity $(\text{Z)}$ plasma: @@ -56,10 +57,10 @@ $$ $$ -## Ion coupled power +## Ion coupled power (`cfnbi`) Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the `cfnbi` method to calculate the fraction of the fast particle energy coupled to the ions. -### Coloumb logarithm +### Coloumb logarithm (`xlmbdabi`) Firstly the Coloumb logarithm for the ion-ion collisions ($\ln \Lambda$) is calculated where the relative velocity may be large compared with the background thermal velocity using the `xlmbdabi` method [^2], which follows as: $$ @@ -74,46 +75,46 @@ $$ \ln \Lambda = 23.7 + \log(x2 \sqrt{x1}) $$ -Where $T_e$ is the density weighted average electron temp (keV), $E_{\text{fast}}$ is the energy of the fast particle (MeV), $m_{\text{u,fast}}$ is the mass of the fast particle (units of proton mass),$n_e$ is the volume averaged electron density (1e20), $m_{\text{u,ion}}$ is the mass of background ions (units of proton mass). +Where $T_e$ is the density weighted average electron temp ($\text{keV}$), $E_{\text{fast}}$ is the energy of the fast particle ($\text{MeV}$), $m_{\text{u,fast}}$ is the mass of the fast particle (units of proton mass), $n_{\text{e}}$ is the volume averaged electron density ($1\times 10^{20}/ \text{m}^3$), $m_{\text{u,ion}}$ is the mass of background ions (units of proton mass). ---------------------------------------------- $$ -sum\ln = Z_{\text{eff} = \frac{\ln\Lambda}{\ln \Lambda_{\text{i-e}}} +\mathtt{sumln} = \mathtt{zeffai} \times \frac{\mathtt{xlmbdai}}{\mathtt{xlmbda}} $$ $Z_{\text{eff}}$ is the mass weighted plasma effective charge and $\ln\Lambda_{\text{i-e}}$ is the ion-electron coulomb logarithm $$ -xlnrat = 3 \left(\frac{\sqrt \pi}{4}\frac{m_e}{m_p sum\ln}\right)^{\frac{2}{3}} +\mathtt{xlnrat} = 3 \left(\frac{\sqrt \pi}{4}\frac{m_e}{m_p \ \mathtt{sumln}}\right)^{\frac{2}{3}} $$ $$ -v_e = c \sqrt{\left(\frac{2T_e}{511}\right)} +v_e = c \sqrt{\left(\frac{2 \ T_e}{511}\right)} $$ $$ -ecritfi = \frac{m_{\text{u,fast}} m_p v_e^2 xlnrat} {(2 echarge 1000)} +\mathtt{ecritfi} = \frac{m_{\text{u,fast}} m_p v_e^2 \ \mathtt{xlnrat}} {(2000 \times e)} $$ $$ -x = \sqrt{\frac{efast}{ecritfi}} +\mathtt{x} = \sqrt{\frac{\mathtt{efast}}{\mathtt{ecritfi}}} $$ $$ -ti = \log{\frac{x^2-x+1}{(x+1)^2}} +\mathtt{ti} = \log{\frac{x^2-x+1}{(x+1)^2}} $$ $$ -thx = \frac{(2x-1)}{\sqrt{3}} +\mathtt{thx} = \frac{(2x-1)}{\sqrt{3}} $$ $$ -t2 = 2 \sqrt{3} \frac{\arctan{thx}+\pi}{6} +\mathtt{t2} = 2 \sqrt{3} \frac{\arctan({\mathtt{thx}}+\pi)}{6} $$ $$ -couple fraction = \frac{(t1+t2)}{3x^2} +\text{Fraction of past particle energy coupled to ions} = \frac{(\mathtt{t1}+\mathtt{t2})}{3\mathtt{x}^2} $$ [^1]:Janev, R. K., Boley, C. D., & Post, D. E. (1989). *"Penetration of energetic neutral beams into fusion plasmas."* Nuclear Fusion, 29(12), 006. https://doi.org/10.1088/0029-5515/29/12/006 From 57c393b6f225521db11f54bfdafa9e0534f3a65f Mon Sep 17 00:00:00 2001 From: mn3981 Date: Thu, 9 May 2024 11:08:51 +0100 Subject: [PATCH 23/32] culham nb model --- .../NBI/culham_nb.md | 220 +++++++++++++++++- .../RF/ehst_lower_hybrid.md | 4 +- .../RF/fenstermacher_lower_hybrid.md | 2 +- 3 files changed, 222 insertions(+), 4 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md index 783b6344d2..9162f7bb66 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md @@ -1 +1,219 @@ -# Culham Neutral Beam Model \ No newline at end of file +# Culham Neutral Beam Model + +- `iefrf/iefrffix` = 8 + +This routine calculates Neutral Beam current drive parameters +using the corrections outlined in AEA FUS 172 to the ITER method. +The result cannot be guaranteed for devices with aspect ratios far +from that of ITER (approx. 2.8). + +$$ +\mathtt{frbeam} = \frac{R_{\text{tan}}}{R_0} +$$ + +Where $R_{\text{tan}}$ is major radius at which the centre-line of the beam is tangential to the toroidal direction. This can be user defined + +$$ +\left(1+ \frac{1}{A}\right) < \mathtt{frbeam} +$$ + +A quick sanity check is done to make sure no negative roots are formed when calculating $\mathtt{dpath}$ this prevents setups where the NBI beam would miss the plasma + + +$$ +\mathtt{dpath} = R_0 \sqrt{\left(1+\frac{1}{A}\right)^2-\mathtt{frbeam}^2} +$$ + +Beams topping cross section is calculated via $\mathtt{sigbeam}$ found [here](../NBI/nbi_overview.md/#beam-stopping-cross-section-sigbeam). This produces $\mathtt{sigstop}$ + +Calculate number of decay lengths to centre + +$$ +\mathtt{taubeam} = \mathtt{dpath} \times n_{\text{e,0}} \times \mathtt{sigstop} +$$ + +Calculate the shine through fraction of the beam + +$$ +\mathtt{fshine} = e^{\left(-2 \times \mathtt{dpath} \times n_{\text{e,0}} \times \mathtt{sigstop}\right)} +$$ + +Deuterium and tritium beam densities + +$$ +\mathtt{dend} = n_{\text{ion}} \times (1-\mathtt{ftritbm}) +$$ + +$$ +\mathtt{dent} = n_{\text{ion}} \times \mathtt{ftritbm} +$$ + +Power split to the ions and electrons is clauclated with the $\mathtt{cfnbi()}$ method found [here](../NBI/nbi_overview.md/#ion-coupled-power-cfnbi) and outputs $\mathtt{fpion}$ + +## Current drive efficiency ($\mathtt{etanb2()}$) + +This routine calculates the current drive efficiency in A/W of +a neutral beam system, based on the 1990 ITER model, +plus correction terms outlined in Culham Report AEA FUS 172. + +| Input | Description | +| :---------- | :----------------------------------- | +| $\mathtt{abeam}$ | beam ion mass (amu) | +| $\mathtt{alphan}$, $\alpha_n$ | density profile factor | +| $\mathtt{alphat}$, $\alpha_T$ | temperature profile factor | +| $\mathtt{aspect}$, $A$ | aspect ratio | +| $\mathtt{dene}$, $n_{\text{e}}$ | volume averaged electron density (m**-3) | +| $\mathtt{dnla}$, $n_{\text{e,0}}$ | line averaged electron density (m**-3) | +| $\mathtt{enbeam}$ | neutral beam energy (keV) | +| $\mathtt{frbeam}$ | R_tangent / R_major for neutral beam injection | +| $\mathtt{fshine}$ | shine-through fraction of beam | +| $\mathtt{rmajor}$, $R$ | plasma major radius (m) | +| $\mathtt{rminor}$, $a$ | plasma minor radius (m) | +| $\mathtt{ten}$ | density weighted average electron temperature (keV) | +| $\mathtt{zeff}$, $Z_{\text{eff}}$ | plasma effective charge | + + +Charge of beam ions +$$ +\mathtt{zbeam} = 1.0 +$$ + +Fitting factor (IPDG89) + +$$ +\mathtt{bbd} = 1.0 +$$ + +Volume averaged electron density ($10^{20} \text{m}^{-3}$) + +$$ +\mathtt{dene20} = n_{\text{e}} / 1^{20} +$$ + +Line averaged electron density ($10^{20} \text{m}^{-3}$) + +$$ +\mathtt{dnla20} = n_{\text{e,0}} / 1^{20} +$$ + +Critical energy ($\text{MeV}$) (power to electrons = power to ions) (IPDG89) +N.B. ten is in keV + +$$ +\mathtt{ecrit} = 0.01 \times \mathtt{abeam} \times \mathtt{ten} +$$ + +Beam energy in MeV + +$$ +\mathtt{ebmev} = \mathtt{enbeam} / 1\times 10^{3} +$$ + +x and y coefficients of function J0(x,y) (IPDG89) + +$$ +\mathtt{xjs} = \frac{\mathtt{ebmev}}{\mathtt{bbd}\times \mathtt{ecrit}} +$$ + +$$ +\mathtt{xj} = \sqrt{\mathtt{xjs}} +$$ + +$$ +\mathtt{yj} = \frac{0.8 \times Z_{\text{eff}}}{\mathtt{abeam}} +$$ + +Fitting function J0(x,y) + +$$ +\mathtt{j0} = \frac{xjs}{(4.0 + 3.0 \times \mathtt{yj} + \mathtt{xjs} \times (\mathtt{xj} + 1.39 + 0.61 \times yj^{0.7}))} +$$ + +Effective inverse aspect ratio, with a limit on its maximum value + +$$ + \mathtt{epseff} = \text{min}(0.2, (0.5 / A)) +$$ + +Reduction in the reverse electron current +due to neoclassical effects + +$$ +\mathtt{gfac} = (1.55 + 0.85 / Z_{\text{eff}}) \times \sqrt{\mathtt{epseff}} - (0.2 + 1.55 / Z_{\text{eff}}) \times \mathtt{epseff} +$$ + +Reduction in the net beam driven current +due to the reverse electron current + +$$ +\mathtt{ffac} = 1.0 - \frac{\mathtt{zbeam}}{Z_{\text{eff}}} \times (1.0 - \mathtt{gfac}) +$$ + +Normalisation to allow results to be valid for +non-ITER plasma size and density: + +Line averaged electron density ($10^{20} \text{m}^{-3}$) normalised to ITER + +$$ +\mathtt{nnorm} = 1.0 +$$ + +Distance along beam to plasma centre + +$$ +\mathtt{r} = \text{max}(R, R \times \mathtt{frbeam}) +$$ + +$$ +\mathtt{eps1} = a / \mathtt{r} +$$ + + if (1.0 + eps1) < frbeam: + eh.fdiags[0] = eps1 + eh.fdiags[1] = frbeam + eh.report_error(21) + +$$ +\mathtt{d} = R \times \sqrt{((1.0 + \mathtt{eps1})^2 - \mathtt{frbeam}^2)} +$$ + +Distance along beam to plasma centre for ITER +assuming a tangency radius equal to the major radius + +$$ +\mathtt{epsitr} = 2.15 / 6.0 +$$ + +$$ +\mathtt{dnorm} = 6.0 \times \sqrt{(2.0 \times \mathtt{epsitr} + \sqrt{epsitr}^2)} +$$ + +Normalisation to beam energy (assumes a simplified formula for +the beam stopping cross-section) + +$$ + \mathtt{ebnorm} = \mathtt{ebmev} \times ((\mathtt{nnorm} \times \mathtt{dnorm}) / (n_{\text{e,0}} \times \mathtt{d})) ^{1.0 / 0.78)} +$$ + +A_bd fitting coefficient, after normalisation with ebnorm + +$$ +\mathtt{abd} = ( + 0.107 + \times (1.0 - 0.35 \times \alpha_n + 0.14 \times \alpha_n^2) + \times (1.0 - 0.21 \times \alpha_T) + \times (1.0 - 0.2 \times \mathtt{ebnorm} + 0.09 \times \mathtt{ebnorm}^2) + ) +$$ + +Normalised current drive efficiency ($\text{A/W} \text{m}^{2}$) (IPDG89) + +$$ +\mathtt{gamnb} = 5.0 \times \mathtt{abd} \times 0.1 \times \mathtt{ten} \times (1.0 - \mathtt{fshine}) \times \mathtt{frbeam} \times \frac{\mathtt{j0}}{0.2} \times \mathtt{ffac} +$$ + +Current drive efficiency (A/W) + +$$ +\text{Current drive efficiency [A/W]} = \frac{\mathtt{gamnb}}{\mathtt{dene20}\times R} +$$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md index c5086cb55a..15bff14676 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ehst_lower_hybrid.md @@ -1,6 +1,6 @@ # Ehst Lower Hybrid -- `iefrf` = 4: Ehst Lower Hybrid model +- `iefrf/iefrffix` = 4 $$ -\text{Current drive efficiency [A/W]} = \frac{T_e^{0.77} (0.034 + 0.196\beta)}{R_0 n_{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} +\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} $$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md index 91b94aee57..a085f17fb3 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_lower_hybrid.md @@ -1,6 +1,6 @@ # Fenstermacher Lower Hybrid -- `iefrf` = 1: Fenstermacher Lower Hybrid model +- `iefrf/iefrffix` = 1: $$ \text{Current drive efficiency [A/W]} = 0.36 \frac{(1+(T_{\text{e}}/25)^{1.16})}{R_{0} n_{\text{e},20}} From 2e5b22ae08c7b2f442272484b673581fed7a6686 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Wed, 15 May 2024 13:17:49 +0100 Subject: [PATCH 24/32] Update NBI overview --- .../NBI/nbi_overview.md | 169 +++++++++++------- 1 file changed, 106 insertions(+), 63 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md index 2655d8976b..acde1e67ba 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -24,27 +24,38 @@ The power in the beam atoms that are not ionised as they pass through the plasma It is recommended that only one of these two constraint equations is used during a run. -## Beam stopping cross-section (`sigbeam`) +## Beam stopping cross-section | `sigbeam()` -Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the `sigbeam` method to calculate the stopping cross section[^1]. It finds a suitable analytic epressing for $\sigma_s^{(Z)}(E,n_e,T_e,Z_{\text{eff}})$ for fitting $\sigma_s$ data for a single impurity $(\text{Z)}$ plasma: +| Input | Description | +| :---------- | :----------------------------------- | +| $\mathtt{eb}$ | Beam energy $\left(\text{keV}/\text{amu}\right)$ | +| $\mathtt{te}$, $T_{\text{e}}$ | Electron temperature $\left(\text{keV}\right)$ | +| $\mathtt{ne}$, $n_{\text{e}}$ | Electron density $\left(10^{20}\text{m}^{-3}\right)$ | +| $\mathtt{rnhe}$ | Alpha density / $n_{\text{e}}$ | +| $\mathtt{rnc}$, | Carbon density /$n_{\text{e}}$ | +| $\mathtt{rno}$, | Oxygen density /$n_{\text{e}}$ | +| $\mathtt{rnfe}$ | Iron density /$n_{\text{e}}$ | + + +Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the `sigbeam` method to calculate the stopping cross section[^1]. It finds a suitable analytic epressing for $\sigma_s^{(Z)}(E,n_{\text{e}},T_{\text{e}},Z_{\text{eff}})$ for fitting $\sigma_s$ data for a single impurity $(\text{Z)}$ plasma: $$ -\sigma_s^{(Z)}(E,n_e,T_e,Z_\text{eff}) = \frac{e^{[S_{1} (E,n_e, T_e)]}}{E} \times\left [1 +(Z_\text{eff}-1) S_z(E, n_e, T_e)\right] \ (\times 10^{-16} \text{cm}^2) +\sigma_s^{(Z)}(E,n_{\text{e}},T_{\text{e}},Z_\text{eff}) = \frac{e^{[S_{1} (E,n_{\text{e}}, T_{\text{e}})]}}{E} \times\left [1 +(Z_\text{eff}-1) S_z(E, n_{\text{e}}, T_{\text{e}})\right] \ (\times 10^{-16} \text{cm}^2) $$ where $$ -S_{1} = \sum_{i=1}^2 \sum_{j=1}^3 \sum_{k=1}^2 \ \{A_{ijk} \times (\ln E)^{i-1} \ [\ln(n/n_{0})]^{j-1} \ (\ln T_e)^{k-1} \} +S_{1} = \sum_{i=1}^2 \sum_{j=1}^3 \sum_{k=1}^2 \ \{A_{ijk} \times (\ln E)^{i-1} \ [\ln(n/n_{0})]^{j-1} \ (\ln T_{\text{e}})^{k-1} \} $$ $$ -S_{Z} = \sum_{i=1}^3 \sum_{j=1}^2 \sum_{k=1}^2 \ \{B_{ijk}^{(z)} \times (\ln E)^{i-1} \ [\ln(n/n_{0})]^{j-1} \ (\ln T_e)^{k-1} \} +S_{Z} = \sum_{i=1}^3 \sum_{j=1}^2 \sum_{k=1}^2 \ \{B_{ijk}^{(z)} \times (\ln E)^{i-1} \ [\ln(n/n_{0})]^{j-1} \ (\ln T_{\text{e}})^{k-1} \} $$ -with $E, n_e, T$ expressed in units of keV/u, $\text{cm}^3$ and keV, respectively, and $n_0 = 10^{13} \text{cm}^3$. The function $S_1 (E, n_e, T_e)$ together with the $E^{-1}$ factor describes the beam stopping in a pure hydrogenic plasma, while the function $(Z_{\text{eff}}- 1)\ S_z (E, n_e, T_e)$ describes the effect of the impurity $Z$ on the beam stopping. +with $E, n_e, T$ expressed in units of keV/u, $\text{cm}^3$ and keV, respectively, and $n_0 = 10^{13} \text{cm}^3$. The function $S_1 (E, n_{\text{e}}, T_{\text{e}})$ together with the $E^{-1}$ factor describes the beam stopping in a pure hydrogenic plasma, while the function $(Z_{\text{eff}}- 1)\ S_z (E, n_e, T_e)$ describes the effect of the impurity $Z$ on the beam stopping. !!! info "Info" For the full table of values for $A_{ijk}$ & $B_{ijk}^{(z)}$\ please see the accompanying paper[^1] or `current_drive.py` @@ -52,69 +63,101 @@ with $E, n_e, T$ expressed in units of keV/u, $\text{cm}^3$ and keV, respectivel For a plasma having an arbitrary mix of $N$ different types of impurities with densities $n$, and charges $Z_q (q = 1, ..., N)$, the beam stopping cross-section can be represented as the weighted sum of the stopping cross- sections for $N$ reference single-impurity plasmas. In each of these reference plasmas, the electron density and the proton density (including that of deuterium and tritium ions) are the same as in a true plasma. The impurity density, however, is increased in order to satisfy quasi-neutrality. The weighting function is the electron density $n_qZ_q$ associated with the aum impurity (in the true plasma), divided by the sum of these densities. The result is: $$ -\sigma_s^{(N)}=\frac{ e^{S_{1}(E, n_e, T_e)}}{E} \times\left[1+\frac{1}{n_e} \sum_q n_q Z_q(Z_q-1) S_{Z_q}(E, n_e, T_e)\right] +\sigma_s^{(N)}=\frac{ e^{S_{1}(E, n_{\text{e}}, T_{\text{e}})}}{E} \times\left[1+\frac{1}{n_{\text{e}}} \sum_q n_q Z_q(Z_q-1) S_{Z_q}(E, n_{\text{e}}, T_{\text{e}})\right] (\times 10^{-16} \mathrm{~cm}^2) $$ -## Ion coupled power (`cfnbi`) +## Ion coupled power | `cfnbi()` Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the `cfnbi` method to calculate the fraction of the fast particle energy coupled to the ions. -### Coloumb logarithm (`xlmbdabi`) -Firstly the Coloumb logarithm for the ion-ion collisions ($\ln \Lambda$) is calculated where the relative velocity may be large compared with the background thermal velocity using the `xlmbdabi` method [^2], which follows as: - -$$ -x_{1} = \frac{T_e}{10} E_{\text{fast}} \frac{m_{\text{u,fast}}}{n_e} -$$ - -$$ -x_2 = \frac{m_{\text{u,ion}}}{(m_{\text{u,ion}} + m_{\text{u,fast}})} -$$ - -$$ -\ln \Lambda = 23.7 + \log(x2 \sqrt{x1}) -$$ - -Where $T_e$ is the density weighted average electron temp ($\text{keV}$), $E_{\text{fast}}$ is the energy of the fast particle ($\text{MeV}$), $m_{\text{u,fast}}$ is the mass of the fast particle (units of proton mass), $n_{\text{e}}$ is the volume averaged electron density ($1\times 10^{20}/ \text{m}^3$), $m_{\text{u,ion}}$ is the mass of background ions (units of proton mass). - ----------------------------------------------- - -$$ -\mathtt{sumln} = \mathtt{zeffai} \times \frac{\mathtt{xlmbdai}}{\mathtt{xlmbda}} -$$ - -$Z_{\text{eff}}$ is the mass weighted plasma effective charge and $\ln\Lambda_{\text{i-e}}$ is the ion-electron coulomb logarithm - -$$ -\mathtt{xlnrat} = 3 \left(\frac{\sqrt \pi}{4}\frac{m_e}{m_p \ \mathtt{sumln}}\right)^{\frac{2}{3}} -$$ - -$$ -v_e = c \sqrt{\left(\frac{2 \ T_e}{511}\right)} -$$ - -$$ -\mathtt{ecritfi} = \frac{m_{\text{u,fast}} m_p v_e^2 \ \mathtt{xlnrat}} {(2000 \times e)} -$$ - -$$ -\mathtt{x} = \sqrt{\frac{\mathtt{efast}}{\mathtt{ecritfi}}} -$$ - -$$ -\mathtt{ti} = \log{\frac{x^2-x+1}{(x+1)^2}} -$$ - -$$ -\mathtt{thx} = \frac{(2x-1)}{\sqrt{3}} -$$ - -$$ -\mathtt{t2} = 2 \sqrt{3} \frac{\arctan({\mathtt{thx}}+\pi)}{6} -$$ - -$$ -\text{Fraction of past particle energy coupled to ions} = \frac{(\mathtt{t1}+\mathtt{t2})}{3\mathtt{x}^2} +| Input | Description | +| :---------- | :----------------------------------- | +| $\mathtt{afast}$, $m_{\text{u,fast}}$ | Mass of fast particle (units of proton mass) | +| $\mathtt{efast}$, $E_{\text{fast}}$ | Energy of fast particle (keV) | +| $\mathtt{te}$, $T_{\text{e}}$ | Density weighted average electron temperature ($\text{keV}$) | +| $\mathtt{ne}$, $n_{\text{e}}$ | Volume averaged electron density ($\text{m}^{-3}$) | +| $\mathtt{nd}$ | Deuterium beam density ($\text{m}^{-3}$) | +| $\mathtt{nt}$ | Tritium beam density ($\text{m}^{-3}$) | +| $\mathtt{zeffai}$ | Mass weighted plasma effective charge | +| $\mathtt{xlmbda}$ | Ion-electron Coulomb logarithm | + +### Coloumb logarithm | `xlmbdabi()` +Firstly, the Coulomb logarithm for the ion-ion collisions ($\ln \Lambda$) is calculated using the `xlmbdabi` method [^2]. The calculation follows these steps: + +1. Calculate $x_1$ using the formula: + $$ + x_1 = \frac{T_{\text{e}}}{10} E_{\text{fast}} \frac{m_{\text{u,fast}}}{n_{\text{e}}} + $$ + where $T_{\text{e}}$ is the density-weighted average electron temperature (in $\text{keV}$), $E_{\text{fast}}$ is the energy of the fast particle (in $\text{MeV}$), $m_{\text{u,fast}}$ is the mass of the fast particle (in units of proton mass), and $n_{\text{e}}$ is the volume-averaged electron density ($1\times 10^{20}/ \text{m}^3$). + +2. Calculate $x_2$ using the formula: + $$ + x_2 = \frac{m_{\text{u,ion}}}{m_{\text{u,ion}} + m_{\text{u,fast}}} + $$ + where $m_{\text{u,ion}}$ is the mass of the background ions (in units of proton mass). + +3. Calculate $\ln \Lambda$ using the formula: + $$ + \ln \Lambda = 23.7 + \log(x_2 \sqrt{x_1}) + $$ + +--- + + + +--- + +Next, the following calculations are performed: + +1. Calculate `sumln` using the formula: + $$ + \mathtt{sumln} = \mathtt{zeffai} \times \frac{\mathtt{xlmbdai}}{\mathtt{xlmbda}} + $$ + where $\mathtt{zeffai}$ is the mass-weighted plasma effective charge and $\ln\Lambda_{\text{i-e}}$ is the ion-electron Coulomb logarithm. + +2. Calculate `xlnrat` using the formula: + $$ + \mathtt{xlnrat} = 3 \left(\frac{\sqrt \pi}{4}\frac{m_{\text{e}}}{m_{\text{p}} \ \mathtt{sumln}}\right)^{\frac{2}{3}} + $$ + where $m_{\text{e}}$ is the electron mass and $m_{\text{p}}$ is the proton mass. + +3. Calculate $v_{\text{e}}$ using the formula: + $$ + v_{\text{e}} = c \sqrt{\left(\frac{2 \ T_{\text{e}}}{511}\right)} + $$ + where $c$ is the speed of light. + +4. Calculate `ecritfi` using the formula: + $$ + \mathtt{ecritfi} = \frac{m_{\text{u,fast}} m_{\text{p}} v_{\text{e}}^2 \ \mathtt{xlnrat}} {(2000 \times e)} + $$ + where $e$ is the elementary charge. + +5. Calculate `x` using the formula: + $$ + \mathtt{x} = \sqrt{\frac{\mathtt{efast}}{\mathtt{ecritfi}}} + $$ + +6. Calculate `ti` using the formula: + + $$ + \mathtt{ti} = \log{\frac{x^2-x+1}{(x+1)^2}} + $$ + +7. Calculate `thx` using the formula: + $$ + \mathtt{thx} = \frac{(2x-1)}{\sqrt{3}} + $$ + +8. Calculate `t2` using the formula: + $$ + \mathtt{t2} = 2 \sqrt{3} \frac{\arctan({\mathtt{thx}}+\pi)}{6} + $$ + +Finally, the fraction of fast particle energy coupled to ions is calculated using the formula: +$$ +\text{Fraction of fast particle energy coupled to ions} = \frac{(\mathtt{t1}+\mathtt{t2})}{3\mathtt{x}^2} $$ [^1]:Janev, R. K., Boley, C. D., & Post, D. E. (1989). *"Penetration of energetic neutral beams into fusion plasmas."* Nuclear Fusion, 29(12), 006. https://doi.org/10.1088/0029-5515/29/12/006 From 246d3d540fab01c3c21cc84473947c369b3e34a7 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Wed, 15 May 2024 13:51:36 +0100 Subject: [PATCH 25/32] Update ITER Neutral Beam Model documentation --- .../heating_and_current_drive/NBI/iter_nb.md | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md index c93f69b954..42957543dd 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md @@ -1,4 +1,12 @@ -# ITER Neutral Beam Model +# ITER Neutral Beam Model | `iternb()` + +- `iefrf/iefrffix` = 5 + +| Output | Description | +|----------|-------------| +| $\mathtt{effnbss}$ | Neutral beam current drive efficiency in Amperes per Watt | +| $\mathtt{fpion}$ | Fraction of NB power given to ions | +| $\mathtt{fshine}$ | Shine-through fraction of the beam | This model calculates the current drive parameters for a neutral beam system, based on the 1990 ITER model.[^1] @@ -41,8 +49,32 @@ $$ Power split to ions / electrons is calculated via the the `cfnbi` method described [here](nbi_overview.md) -## Current drive efficiency (`etanb`) -Uses the `etanb` method. +## Current drive efficiency | `etanb()` + +This routine calculates the current drive efficiency of +a neutral beam system, based on the 1990 ITER model. +AEA FUS 251: A User's Guide to the PROCESS Systems Code +ITER Physics Design Guidelines: 1989 IPDG89, N. A. Uckan et al, +ITER Documentation Series No.10, IAEA/ITER/DS/10, IAEA, Vienna, 1990 + +| Input | Description | +|---------|-----------------------------------------------------------| +| $\mathtt{abeam}$ | Beam ion mass ($\text{amu}$) | +| $\mathtt{alphan}$ | Density profile factor | +| $\mathtt{alphat}$ | Temperature profile factor | +| $\mathtt{aspect}$, $A$ | Aspect ratio | +| $\mathtt{dene}$, $n_{\text{e}}$ | Volume averaged electron density ($\text{m}^{-3}$) | +| $\mathtt{ebeam}$ | Neutral beam energy ($\text{keV}$) | +| $\mathtt{rmajor}$, R | Plasma major radius ($\text{m}$) | +| $\mathtt{ten}$ | Density weighted average electron temperature ($\text{keV}$) | +| $\mathtt{zeff}$, $Z_{\text{eff}}$ | Plasma effective charge | + +| Output | Description | +|---------|-----------------------------------------------------------| +| $\mathtt{etanb}$ | Neutral beam current drive efficiency in Amperes per Watt | + + + $$ \mathtt{zbeam} = 1.0 From 3c69d86d901b26d70cef4d41e78842ee7bf57386 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Wed, 15 May 2024 14:03:49 +0100 Subject: [PATCH 26/32] Update Culham Neutral Beam Model documentation --- .../heating_and_current_drive/NBI/culham_nb.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md index 9162f7bb66..8b5f3a0121 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md @@ -1,12 +1,20 @@ -# Culham Neutral Beam Model +# Culham Neutral Beam Model | `culnbi()` - `iefrf/iefrffix` = 8 + + This routine calculates Neutral Beam current drive parameters using the corrections outlined in AEA FUS 172 to the ITER method. The result cannot be guaranteed for devices with aspect ratios far from that of ITER (approx. 2.8). +| Output | Description | +|----------|-------------| +| $\mathtt{effnbss}$ | Neutral beam current drive efficiency in Amperes per Watt | +| $\mathtt{fpion}$ | Fraction of NB power given to ions | +| $\mathtt{fshine}$ | Shine-through fraction of the beam | + $$ \mathtt{frbeam} = \frac{R_{\text{tan}}}{R_0} $$ @@ -50,7 +58,7 @@ $$ Power split to the ions and electrons is clauclated with the $\mathtt{cfnbi()}$ method found [here](../NBI/nbi_overview.md/#ion-coupled-power-cfnbi) and outputs $\mathtt{fpion}$ -## Current drive efficiency ($\mathtt{etanb2()}$) +## Current drive efficiency | `etanb2()` This routine calculates the current drive efficiency in A/W of a neutral beam system, based on the 1990 ITER model, @@ -168,10 +176,6 @@ $$ \mathtt{eps1} = a / \mathtt{r} $$ - if (1.0 + eps1) < frbeam: - eh.fdiags[0] = eps1 - eh.fdiags[1] = frbeam - eh.report_error(21) $$ \mathtt{d} = R \times \sqrt{((1.0 + \mathtt{eps1})^2 - \mathtt{frbeam}^2)} @@ -185,7 +189,7 @@ $$ $$ $$ -\mathtt{dnorm} = 6.0 \times \sqrt{(2.0 \times \mathtt{epsitr} + \sqrt{epsitr}^2)} +\mathtt{dnorm} = 6.0 \times \sqrt{(2.0 \times \mathtt{epsitr} + \mathtt{epsitr}^2)} $$ Normalisation to beam energy (assumes a simplified formula for From 99d68a1cd1eb7712d7802a8f87c297e941e837a7 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Thu, 16 May 2024 09:56:55 +0100 Subject: [PATCH 27/32] Update Culham Lower Hybrid --- .../RF/culham_lower_hybrid.md | 144 +++++------------- 1 file changed, 34 insertions(+), 110 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md index a6b76206e9..60325886d5 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_lower_hybrid.md @@ -1,126 +1,50 @@ -# Culham Lower Hybrid +# Culham Lower Hybrid | `cullhy()` + +- `iefrf/iefrffix` = 6 + -- `iefrf` = 6: Culham Lower Hybrid model[^1] This routine calculates the current drive parameters for a lower hybrid system, based on the AEA FUS 172 model. AEA FUS 251: A User's Guide to the PROCESS Systems Code -AEA FUS 172: Physics Assessment for the European Reactor Study - - rratio = self.lhrad() - rpenet = rratio * physics_variables.rminor - - # Local density, temperature, toroidal field at this minor radius - - dlocal = 1.0e-19 * profiles_module.nprofile( - rratio, - physics_variables.rhopedn, - physics_variables.ne0, - physics_variables.neped, - physics_variables.nesep, - physics_variables.alphan, - ) - tlocal = profiles_module.tprofile( - rratio, - physics_variables.rhopedt, - physics_variables.te0, - physics_variables.teped, - physics_variables.tesep, - physics_variables.alphat, - physics_variables.tbeta, - ) - blocal = ( - physics_variables.bt - * physics_variables.rmajor - / (physics_variables.rmajor - rpenet) - ) # Calculated on inboard side - - # Parallel refractive index needed for plasma access - - frac = np.sqrt(dlocal) / blocal - nplacc = frac + np.sqrt(1.0e0 + frac * frac) - - # Local inverse aspect ratio - - epslh = rpenet / physics_variables.rmajor - - # LH normalised efficiency (A/W m**-2) - - x = 24.0e0 / (nplacc * np.sqrt(tlocal)) - - term01 = 6.1e0 / (nplacc * nplacc * (physics_variables.zeff + 5.0e0)) - term02 = 1.0e0 + (tlocal / 25.0e0) ** 1.16e0 - term03 = epslh**0.77e0 * np.sqrt(12.25e0 + x * x) - term04 = 3.5e0 * epslh**0.77e0 + x - - if term03 > term04: - eh.fdiags[0] = term03 - eh.fdiags[1] = term04 - eh.report_error(129) - - gamlh = term01 * term02 * (1.0e0 - term03 / term04) - - # Current drive efficiency (A/W) - - return gamlh / ((0.1e0 * dlocal) * physics_variables.rmajor) - - - def lhrad(self): - - """Routine to calculate Lower Hybrid wave absorption radius - author: P J Knight, CCFE, Culham Science Centre - rratio : output real : minor radius of penetration / rminor - This routine determines numerically the minor radius at which the - damping of Lower Hybrid waves occurs, using a Newton-Raphson method. - AEA FUS 251: A User's Guide to the PROCESS Systems Code - AEA FUS 172: Physics Assessment for the European Reactor Study - """ - # Correction to refractive index (kept within valid bounds) - drfind = min(0.7e0, max(0.1e0, 12.5e0 / physics_variables.te0)) - - # Use Newton-Raphson method to establish the correct minor radius - # ratio. g is calculated as a function of r / r_minor, where g is - # the difference between the results of the two formulae for the - # energy E given in AEA FUS 172, p.58. The required minor radius - # ratio has been found when g is sufficiently close to zero. - - # Initial guess for the minor radius ratio - - rat0 = 0.8e0 - - for _ in range(100): - # Minor radius ratios either side of the latest guess - - r1 = rat0 - 1.0e-3 * rat0 - r2 = rat0 + 1.0e-3 * rat0 - - # Evaluate g at rat0, r1, r2 - - g0 = self.lheval(drfind, rat0) - g1 = self.lheval(drfind, r1) - g2 = self.lheval(drfind, r2) +AEA FUS 172: Physics Assessment for the European Reactor Study[^1] - # Calculate gradient of g with respect to minor radius ratio - dgdr = (g2 - g1) / (r2 - r1) +1. Call the [`lhrad()`](#lower-hybrid-wave-absorption-radius--lhrad) method to calculate the lower hybrid wave absorption radius, `rratio`. +2. Calculate the penetration radius, `rpenet`, by multiplying `rratio` with the minor radius of the plasma. +3. Calculate the local density, `dlocal`, using the `nprofile()` function from the `profiles_module` module. This function takes into account various plasma parameters such as the density profile, electron density at the edge, pedestal density, separatrix density, and the value of the parameter `alphan`. +4. Similarly, calculate the local temperature, `tlocal`, using the `tprofile()` function from the `profiles_module` module. This function considers parameters such as the temperature profile, electron temperature at the edge, pedestal temperature, separatrix temperature, `alphat`, and `tbeta`. +5. Calculate the local toroidal magnetic field, `blocal`, using the formula `bt * rmajor / (rmajor - rpenet)`. Here, `bt` is the toroidal magnetic field at the magnetic axis, and `rmajor` is the major radius of the plasma. +6. Calculate the parallel refractive index, `nplacc`, which is needed for plasma access. It uses the local density `dlocal` and the local magnetic field `blocal` to calculate a fraction `frac`. `nplacc` is then obtained by adding `frac` to the square root of `1.0 + frac * frac`. +7. Calculate the local inverse aspect ratio, `epslh`, by dividing `rpenet` by `rmajor`. +8. Calculate the LH normalized efficiency, `x`, using the formula `24.0 / (nplacc * sqrt(tlocal))`. +9. Calculate several intermediate terms, `term01`, `term02`, `term03`, and `term04`, using different formulas involving `nplacc`, `physics_variables.zeff`, `tlocal`, `epslh`, and `x`. +10. Calculate the current drive efficiency, `gamlh`, using the formula `term01 * term02 * (1.0e0 - term03 / term04)`. +11. Return the current drive efficiency normalized by the product of `0.1e0 * dlocal` and `physics_variables.rmajor`. - # New approximation +[^1]: T. C. Hender, M. K. Bevir, M. Cox, R. J. Hastie, P. J. Knight, C. N. Lashmore-Davies, B. Lloyd, G. P. Maddison, A. W. Morris, M. R. O'Brien, M.F. Turner abd H. R. Wilson, *"Physics Assessment for the European Reactor Study"*, AEA Fusion Report AEA FUS 172 (1992) - rat1 = rat0 - g0 / dgdr +## Lower Hybrid wave absorption radius | `lhrad`() - # Force this approximation to lie within bounds +This routine determines numerically the minor radius at which the damping of Lower Hybrid waves occurs, using a Newton-Raphson method to establish the correct minor radius ratio. The required minor radius ratio has been found when the difference between the results of the two formulae for the energy E given in AEA FUS 172, p.58 is sufficiently close to zero. - rat1 = max(0.0001e0, rat1) - rat1 = min(0.9999e0, rat1) +Correction to refractive index (kept within valid bounds) + $\mathtt{drfind} = \min\left(0.7, \max\left(0.1, \frac{12.5}{\text{te0}}\right)\right)$ - if abs(g0) <= 0.01e0: - break - rat0 = rat1 +Use Newton-Raphson method to establish the correct minor radius ratio. The required minor radius ratio has been found when the difference between the results of the two formulae for the energy E given in AEA FUS 172, p.58 is sufficiently close to zero. - else: - eh.report_error(16) - rat0 = 0.8e0 +Iterate over the following steps to find the minor radius ratio: - return rat0 +1. Set an initial guess for the minor radius ratio, $\mathtt{rat0}$, to 0.8. +2. Repeat the following steps for a maximum of 100 iterations: + - Calculate the minor radius ratios, $r1$ and $r2$, by subtracting and adding 0.1% of $\mathtt{rat0}$, respectively. + - Evaluate the function $g$ at $\mathtt{rat0}$, $r1$, and $r2$ using the method `lheval(drfind, rat)`. + - Calculate the gradient of $g$ with respect to the minor radius ratio, $\frac{{dg}}{{dr}}$, using the formula $\frac{{g2 - g1}}{{r2 - r1}}$. + - Calculate a new approximation for the minor radius ratio, $\mathtt{rat1}$, using the formula $\mathtt{rat0} - \frac{{g0}}{{\frac{{dg}}{{dr}}}}$. + - Ensure that $\mathtt{rat1}$ is within the bounds of 0.0001 and 0.9999. + - If the absolute value of $g0$ is less than or equal to 0.01, exit the loop. + - Update $\mathtt{rat0}$ with the new approximation, $\mathtt{rat1}$. +3. If the loop completes all 100 iterations without finding a satisfactory solution, report an error and set $\mathtt{rat0}$ to 0.8. +4. Return the final value of $\mathtt{rat0}$. [^1]: T. C. Hender, M. K. Bevir, M. Cox, R. J. Hastie, P. J. Knight, C. N. Lashmore-Davies, B. Lloyd, G. P. Maddison, A. W. Morris, M. R. O'Brien, M.F. Turner abd H. R. Wilson, *"Physics Assessment for the European Reactor Study"*, AEA Fusion Report AEA FUS 172 (1992) \ No newline at end of file From f4f47c87d9e82f7808592b7d681c1156463fb3f2 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Thu, 23 May 2024 10:52:11 +0100 Subject: [PATCH 28/32] Update ECRH User Input Gamma Model --- .../RF/culham_electron_cyclotron.md | 38 +++++--- .../RF/cutoff_ecrh.md | 23 ++++- .../RF/ec_overview.md | 96 ++++++------------- .../RF/ecrh_gamma.md | 2 + ...stermacher_electron_cyclotron_resonance.md | 2 +- 5 files changed, 83 insertions(+), 78 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md index 8b994b11c2..204f6fd053 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/culham_electron_cyclotron.md @@ -1,17 +1,21 @@ -# Culham Electron Cyclotron Model +# Culham Electron Cyclotron Model | `culecd()` + + +- `iefrf/iefrffix` = 7 This routine calculates the current drive parameters for a electron cyclotron system, based on the AEA FUS 172 model[^1] -Local electron temperature $(\mathtt{tlocal})$ is calculated using the `tprofile` method found here -Local electron density $(\mathtt{dlocal})$ is calculated using the `nprofile` method found here -Inverse aspect ratio +1. Local electron temperature $(\mathtt{tlocal})$ is calculated using the `tprofile` method +2. Local electron density $(\mathtt{dlocal})$ is calculated using the `nprofile` method + +3. Calculate the inverse aspect ratio `epsloc`. $$ \mathtt{epsloc} = \frac{1}{3A} $$ -Coulomb logarithm for ion-electron collisions[^2] +4. Calculate the Coulomb logarithm for ion-electron collisions `coulog`.[^2] $$ \mathtt{coulog} = 15.2 - 0.5\log({\mathtt{dlocal}}) + \log({\mathtt{tlocal}}) @@ -20,14 +24,16 @@ $$ Calculate normalised current drive efficiency at four different poloidal angles, and average. cosang = cosine of the poloidal angle at which ECCD takes place = +1 outside, -1 inside. -# Normalised current drive efficiency +## Normalised current drive efficiency Uses the `eccdef` model found [here](ec_overview.md) -$$ -\mathtt{ecgam} = 0.25(\mathtt{ecgam1} + \mathtt{ecgam2} +\mathtt{ecgam3} + \mathtt{ecgam4}) - $$ - +5. Calculate the normalised current drive efficiency at four different poloidal angles, and average. + - Set `cosang` to 1.0 and calculate `ecgam1`. + - Set `cosang` to 0.5 and calculate `ecgam2`. + - Set `cosang` to -0.5 and calculate `ecgam3`. + - Set `cosang` to -1.0 and calculate `ecgam4`. + cosang = 1.0e0 ecgam1 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) cosang = 0.5e0 @@ -35,12 +41,22 @@ $$ cosang = -0.5e0 ecgam3 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) cosang = -1.0e0 - ecgam4 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) + ecgam4 = self.eccdef(tlocal, epsloc, zlocal, cosang, coulog) + +6. Calculate the normalised current drive efficiency `ecgam` as the average of `ecgam1`, `ecgam2`, `ecgam3`, and `ecgam4`. + +$$ +\mathtt{ecgam} = 0.25(\mathtt{ecgam1} + \mathtt{ecgam2} +\mathtt{ecgam3} + \mathtt{ecgam4}) + $$ + +7. Calculate the current drive efficiency by dividing `ecgam` by `(dlocal * physics_variables.rmajor)`. $$ \text{Current drive efficiency [A/W]} = \frac{\mathtt{ecgam}}{\mathtt{dlocal} \times R_0} $$ +Note: The `eccdef` method is called to calculate the current drive efficiency at each poloidal angle. + [^1]: Hender, T.C., Bevir, M.K., Cox, M., Hastie, R.J., Knight, P.J., Lashmore-Davies, C.N., Lloyd, B., Maddison, G.P., Morris, A.W., O’Brien, M.R. and Turner, M.F., 1992. *"Physics assessment for the European reactor study."* AEA FUS, 172. diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md index 088b7965c1..57d0ff5635 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md @@ -1,4 +1,20 @@ -# Cuttoff +# ECRH with Cutoff + +- `iefrf/iefrffix` = 13 + +| Input | Description | +|-------|-------------| +| `dene`, $n_{\text{e}}$ | Avergae electron temperature $\left[10^{19}\text{m}^{-3}\right]$ | +| `te`, $T_{\text{e}}$ | Avergae electron temperature $\left[\text{keV}\right]$ | +| `rmajor`, $R_0$ | Major radius $\left[\text{m}\right]$ | +| `bt`, $B_{\text{T}}$ | Toroidal magnetic field $\left[\text{T}\right]$ | +| `zeff`, $Z_{\text{eff}}$ | Effective charge | +| `harnum` | Harmonic number | +| `mode` | RF mode | + +---- + + $$ \mathtt{fc} = \frac{1}{2\pi}eB_{\text{T}}m_{\text{e}} @@ -40,3 +56,8 @@ $$ $$ \text{Current drive efficiency [A/W]} = \mathtt{effrfss} \times \mathtt{cutoff_{factor}} $$ + +
+![ECRH Cutoff](../images/ecrh_cutoff.png){ width = "100"} +
Figure 1: The variation in current drive efficiency as a function of toroidal magnetic field at different harmonics and modes
+
\ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md index 4f898d9edf..b94ead6a88 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ec_overview.md @@ -12,7 +12,7 @@ $$ n_{\perp}^2=\frac{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}}{\omega})(1-\frac{\omega_{pe}^2}{\omega^2}+\frac{\omega_{ce}}{\omega})}{(1-\frac{\omega_{pe}^2}{\omega^2}-\frac{\omega_{ce}^2}{\omega^2})} \ \ \text{(X-mode)} $$ -## Normalised current drive efficiency `eccdef` +## Normalised current drive efficiency | `eccdef()` One of the methods for calculating the normalised current drive efficiency is the `eccdef` method found below. @@ -93,7 +93,7 @@ $$ $$ ---------------------------------------------------------------------------------- -### Legendre function and its derivative `legend` +### Legendre function and its derivative | `legend()` | Input | Description | @@ -101,68 +101,34 @@ $$ | $\mathtt{zlocal}$ | Local plasma effective charge | | $\mathtt{arg}$ | Argument of Legendre function | -``` py -def legend(self, zlocal, arg): - """Routine to calculate Legendre function and its derivative - author: M R O'Brien, CCFE, Culham Science Centre - author: P J Knight, CCFE, Culham Science Centre - zlocal : input real : local plasma effective charge - arg : input real : argument of Legendre function - palpha : output real : value of Legendre function - palphap : output real : derivative of Legendre function - This routine calculates the Legendre function `palpha` - of argument `arg` and order - `alpha = -0.5 + i sqrt(xisq)``, - and its derivative `palphap`. - This Legendre function is a conical function and we use the series - in `xisq`` given in Abramowitz and Stegun. The - derivative is calculated from the derivative of this series. - The derivatives were checked by calculating `palpha` for - neighboring arguments. The calculation of `palpha` for zero - argument was checked by comparison with the expression - `palpha(0) = 1/sqrt(pi) * cos(pi*alpha/2) * gam1 / gam2` - (Abramowitz and Stegun, eqn 8.6.1). Here `gam1`` and - `gam2`` are the Gamma functions of arguments - `0.5*(1+alpha)`` and `0.5*(2+alpha)` respectively. - Abramowitz and Stegun, equation 8.12.1 - """ - if abs(arg) > (1.0e0 + 1.0e-10): - eh.fdiags[0] = arg - eh.report_error(18) - - arg2 = min(arg, (1.0e0 - 1.0e-10)) - sinsq = 0.5e0 * (1.0e0 - arg2) - xisq = 0.25e0 * (32.0e0 * zlocal / (zlocal + 1.0e0) - 1.0e0) - palpha = 1.0e0 - pold = 1.0e0 - pterm = 1.0e0 - palphap = 0.0e0 - poldp = 0.0e0 - - for n in range(10000): - # Check for convergence every 20 iterations - - if (n > 1) and ((n % 20) == 1): - term1 = 1.0e-10 * max(abs(pold), abs(palpha)) - term2 = 1.0e-10 * max(abs(poldp), abs(palphap)) - - if (abs(pold - palpha) < term1) and (abs(poldp - palphap) < term2): - return palpha, palphap - - pold = palpha - poldp = palphap - - pterm = ( - pterm - * (4.0e0 * xisq + (2.0e0 * n - 1.0e0) ** 2) - / (2.0e0 * n) ** 2 - * sinsq - ) - palpha = palpha + pterm - palphap = palphap - n * pterm / (1.0e0 - arg2) - else: - eh.report_error(19) - -``` +The `legend()` function is a routine that calculates the Legendre function and its derivative. It takes two input parameters: `zlocal` (local plasma effective charge) and `arg` (argument of the Legendre function). The function returns two output values: `palpha` (value of the Legendre function) and `palphap` (derivative of the Legendre function). + +Here is the explanation of the `legend()` function: + +1. Check if the absolute value of `arg` is greater than `1.0 + 1.0e-10`. If it is, set `eh.fdiags[0]` to `arg` and report an error (error code 18). + +2. Set `arg2` to the minimum value between `arg` and `1.0 - 1.0e-10`. + +3. Calculate `sinsq` as `0.5 * (1.0 - arg2)`. + +4. Calculate `xisq` as `0.25 * (32.0 * zlocal / (zlocal + 1.0) - 1.0)`. + +5. Initialize `palpha` to `1.0`, `pold` to `1.0`, `pterm` to `1.0`, `palphap` to `0.0`, and `poldp` to `0.0`. + +6. Start a loop that iterates up to 10000 times. + +7. Check for convergence every 20 iterations: + - If `n > 1` and `(n % 20) == 1`, calculate `term1` as `1.0e-10 * max(abs(pold), abs(palpha))` and `term2` as `1.0e-10 * max(abs(poldp), abs(palphap))`. + - If the absolute difference between `pold` and `palpha` is less than `term1` and the absolute difference between `poldp` and `palphap` is less than `term2`, return `palpha` and `palphap`. + +8. Update `pold` to `palpha` and `poldp` to `palphap`. + +9. Calculate `pterm` as `pterm * (4.0 * xisq + (2.0 * n - 1.0) ** 2) / (2.0 * n) ** 2 * sinsq`. + +10. Update `palpha` as `palpha + pterm`. + +11. Update `palphap` as `palphap - n * pterm / (1.0 - arg2)`. + +12. If the loop completes without returning, report an error (error code 19). [^1]: Abramowitz, Milton. *"Abramowitz and stegun: Handbook of mathematical functions."* US Department of Commerce 10 (1972). \ No newline at end of file diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md index a8dc7cc1b3..399eb1f932 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ecrh_gamma.md @@ -1,5 +1,7 @@ # ECRH User Input Gamma Model +- `iefrf/iefrffix` = 10 + This model allows the user to input a scaling factor to the current drive efficiency with the variable `gamma_ecrh`. The value of this variable should follow the value and form of the expression below: $$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md index 5f06a7f2ec..47165b65b7 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/fenstermacher_electron_cyclotron_resonance.md @@ -1,6 +1,6 @@ # Fenstermacher Electron Cyclotron Resonance - +- `iefrf/iefrffix` = 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))} $$ From 5b3c78eda9776c8c9251bce22bea31ee18b4c2f7 Mon Sep 17 00:00:00 2001 From: mn3981 Date: Thu, 23 May 2024 11:03:15 +0100 Subject: [PATCH 29/32] docs: Update ion cyclotron heating documentation --- .../heating_and_current_drive/RF/ic_model.md | 2 ++ .../heating_and_current_drive/RF/ic_overview.md | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md index 6b57e8c366..fa8855f893 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_model.md @@ -1,5 +1,7 @@ # Ion cyclotron model +- `iefrf/iefrffix` = 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}}} $$ diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_overview.md index 68e136f32b..2d31283e66 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/ic_overview.md @@ -1 +1,16 @@ -# Ion Cyclotron Heating \ No newline at end of file +# Ion Cyclotron Heating + + +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. + +To implement ICH in a fusion tokamak, an antenna system is used to couple the RF waves to the plasma. The waves create an oscillating electric field that interacts with the ions in the plasma. As the ions move in the presence of this electric field, they gain energy through a process called resonant absorption. + +Resonant absorption occurs when the frequency of the RF waves matches the cyclotron frequency of the ions. The cyclotron frequency is the frequency at which ions in a magnetic field undergo circular motion. When the RF waves and the ions' cyclotron frequency are in resonance, the ions absorb energy from the waves more efficiently. + +The resonant absorption process leads to the heating of the ions in the plasma. The absorbed energy increases the kinetic energy of the ions, causing them to move faster and collide with other particles in the plasma. These collisions transfer energy to the surrounding particles, resulting in an overall increase in plasma temperature. + +ICH is an important technique in fusion tokamaks and is used to control and manipulate the properties of plasmas by selectively heating specific ions or regions within the plasma. + +In summary, ion cyclotron heating is a method of heating ions in a fusion tokamak by applying RF waves that are in resonance with the ions' cyclotron frequency. This resonant absorption process efficiently transfers energy from the waves to the ions, leading to their heating and increasing the overall plasma temperature. + + From 1daa559ed8b507c1c81e3fb7ee84f4d29a1b02fe Mon Sep 17 00:00:00 2001 From: mn3981 Date: Thu, 23 May 2024 11:12:55 +0100 Subject: [PATCH 30/32] docs: Update NBI documentation with ion mass and electron density changes --- .../eng-models/heating_and_current_drive/NBI/iter_nb.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md index 42957543dd..f32dde153a 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md @@ -59,11 +59,11 @@ ITER Documentation Series No.10, IAEA/ITER/DS/10, IAEA, Vienna, 1990 | Input | Description | |---------|-----------------------------------------------------------| -| $\mathtt{abeam}$ | Beam ion mass ($\text{amu}$) | +| $\mathtt{abeam}$, $m_{\text{u,ion}}$ | Beam ion mass ($\text{amu}$) | | $\mathtt{alphan}$ | Density profile factor | | $\mathtt{alphat}$ | Temperature profile factor | | $\mathtt{aspect}$, $A$ | Aspect ratio | -| $\mathtt{dene}$, $n_{\text{e}}$ | Volume averaged electron density ($\text{m}^{-3}$) | +| $\mathtt{dene20}$, $n_{\text{e,20}}$ | Volume averaged electron density ($10^{20} \text{m}^{-3}$) | | $\mathtt{ebeam}$ | Neutral beam energy ($\text{keV}$) | | $\mathtt{rmajor}$, R | Plasma major radius ($\text{m}$) | | $\mathtt{ten}$ | Density weighted average electron temperature ($\text{keV}$) | @@ -96,7 +96,7 @@ $$ $$ $$ -\mathtt{yj} = 0.8 \frac{Z_{\text{eff}}}{m_{\text{u,beam}}} +\mathtt{yj} = 0.8 \frac{Z_{\text{eff}}}{m_{\text{u,ion}}} $$ $$ @@ -120,7 +120,7 @@ $$ $$ $$ -\text{Current drive efficiency [A/W]} = \mathtt{abd} \times\frac{5}{R_0} \times0.1\frac{\mathtt{ten}}{n_{e,20}} \times \frac{\mathtt{rjfunc}}{0.2}\mathtt{ffac} +\text{Current drive efficiency [A/W]} = \mathtt{abd} \times\frac{5}{R_0} \times0.1\frac{\mathtt{ten}}{n_{\text{e},20}} \times \frac{\mathtt{rjfunc}}{0.2}\mathtt{ffac} $$ From f86fa72a8edddb30991e963b1cd032ddf43b9930 Mon Sep 17 00:00:00 2001 From: Jack Foster Date: Thu, 23 May 2024 14:19:50 +0100 Subject: [PATCH 31/32] Minor fix to HCD overview --- .../heating_and_current_drive/heating-and-current-drive.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md index d1beb31f1f..f6bf579f8d 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/heating-and-current-drive.md @@ -2,7 +2,7 @@ ## 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 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 `irfcd` 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 `iefrf`: From 8999e16528d260f3f565d4bc1cec8c153c06209c Mon Sep 17 00:00:00 2001 From: mn3981 Date: Thu, 30 May 2024 09:45:57 +0100 Subject: [PATCH 32/32] docs: Update NBI documentation with ion mass and electron density changes --- .../heating_and_current_drive/NBI/culham_nb.md | 18 +++++++++--------- .../heating_and_current_drive/NBI/iter_nb.md | 4 ++-- .../NBI/nbi_overview.md | 6 +++--- .../RF/cutoff_ecrh.md | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md index 8b5f3a0121..40ecbd1148 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/culham_nb.md @@ -70,14 +70,14 @@ plus correction terms outlined in Culham Report AEA FUS 172. | $\mathtt{alphan}$, $\alpha_n$ | density profile factor | | $\mathtt{alphat}$, $\alpha_T$ | temperature profile factor | | $\mathtt{aspect}$, $A$ | aspect ratio | -| $\mathtt{dene}$, $n_{\text{e}}$ | volume averaged electron density (m**-3) | -| $\mathtt{dnla}$, $n_{\text{e,0}}$ | line averaged electron density (m**-3) | -| $\mathtt{enbeam}$ | neutral beam energy (keV) | +| $\mathtt{dene}$, $n_{\text{e}}$ | volume averaged electron density $(\text{m}^{-3})$ | +| $\mathtt{dnla}$, $n_{\text{e,0}}$ | line averaged electron density $(\text{m}^{-3})$ | +| $\mathtt{enbeam}$ | neutral beam energy $(\text{keV})$ | | $\mathtt{frbeam}$ | R_tangent / R_major for neutral beam injection | | $\mathtt{fshine}$ | shine-through fraction of beam | -| $\mathtt{rmajor}$, $R$ | plasma major radius (m) | -| $\mathtt{rminor}$, $a$ | plasma minor radius (m) | -| $\mathtt{ten}$ | density weighted average electron temperature (keV) | +| $\mathtt{rmajor}$, $R$ | plasma major radius $(\text{m})$ | +| $\mathtt{rminor}$, $a$ | plasma minor radius $(\text{m})$ | +| $\mathtt{ten}$ | density weighted average electron temperature $(\text{keV})$ | | $\mathtt{zeff}$, $Z_{\text{eff}}$ | plasma effective charge | @@ -95,13 +95,13 @@ $$ Volume averaged electron density ($10^{20} \text{m}^{-3}$) $$ -\mathtt{dene20} = n_{\text{e}} / 1^{20} +\mathtt{dene20} = n_{\text{e,20}} $$ Line averaged electron density ($10^{20} \text{m}^{-3}$) $$ -\mathtt{dnla20} = n_{\text{e,0}} / 1^{20} +\mathtt{dnla20} = n_{\text{(e,0) 20}} $$ Critical energy ($\text{MeV}$) (power to electrons = power to ions) (IPDG89) @@ -114,7 +114,7 @@ $$ Beam energy in MeV $$ -\mathtt{ebmev} = \mathtt{enbeam} / 1\times 10^{3} +\mathtt{ebmev} = \frac{\mathtt{enbeam}}{10^3} $$ x and y coefficients of function J0(x,y) (IPDG89) diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md index f32dde153a..ee91af1abf 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/iter_nb.md @@ -4,7 +4,7 @@ | Output | Description | |----------|-------------| -| $\mathtt{effnbss}$ | Neutral beam current drive efficiency in Amperes per Watt | +| $\mathtt{effnbss}$ | Neutral beam current drive efficiency in $\text{A/W}$ | | $\mathtt{fpion}$ | Fraction of NB power given to ions | | $\mathtt{fshine}$ | Shine-through fraction of the beam | @@ -71,7 +71,7 @@ ITER Documentation Series No.10, IAEA/ITER/DS/10, IAEA, Vienna, 1990 | Output | Description | |---------|-----------------------------------------------------------| -| $\mathtt{etanb}$ | Neutral beam current drive efficiency in Amperes per Watt | +| $\mathtt{etanb}$ | Neutral beam current drive efficiency in $\text{A/W}$ | diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md index acde1e67ba..9ececc967e 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/NBI/nbi_overview.md @@ -60,7 +60,7 @@ with $E, n_e, T$ expressed in units of keV/u, $\text{cm}^3$ and keV, respectivel !!! info "Info" For the full table of values for $A_{ijk}$ & $B_{ijk}^{(z)}$\ please see the accompanying paper[^1] or `current_drive.py` -For a plasma having an arbitrary mix of $N$ different types of impurities with densities $n$, and charges $Z_q (q = 1, ..., N)$, the beam stopping cross-section can be represented as the weighted sum of the stopping cross- sections for $N$ reference single-impurity plasmas. In each of these reference plasmas, the electron density and the proton density (including that of deuterium and tritium ions) are the same as in a true plasma. The impurity density, however, is increased in order to satisfy quasi-neutrality. The weighting function is the electron density $n_qZ_q$ associated with the aum impurity (in the true plasma), divided by the sum of these densities. The result is: +For a plasma having an arbitrary mix of $N$ different types of impurities with densities $n$, and charges $Z_q (q = 1, ..., N)$, the beam stopping cross-section can be represented as the weighted sum of the stopping cross- sections for $N$ reference single-impurity plasmas. In each of these reference plasmas, the electron density and the proton density (including that of deuterium and tritium ions) are the same as in a true plasma. The impurity density, however, is increased in order to satisfy quasi-neutrality. The weighting function is the electron density $n_qZ_q$ associated with the amu impurity (in the true plasma), divided by the sum of these densities. The result is: $$ \sigma_s^{(N)}=\frac{ e^{S_{1}(E, n_{\text{e}}, T_{\text{e}})}}{E} \times\left[1+\frac{1}{n_{\text{e}}} \sum_q n_q Z_q(Z_q-1) S_{Z_q}(E, n_{\text{e}}, T_{\text{e}})\right] @@ -74,7 +74,7 @@ Both the [ITER](./iter_nb.md) and [Culham](culham_nb.md) NBI models both use the | Input | Description | | :---------- | :----------------------------------- | | $\mathtt{afast}$, $m_{\text{u,fast}}$ | Mass of fast particle (units of proton mass) | -| $\mathtt{efast}$, $E_{\text{fast}}$ | Energy of fast particle (keV) | +| $\mathtt{efast}$, $E_{\text{fast}}$ | Energy of fast particle ($\text{keV}$) | | $\mathtt{te}$, $T_{\text{e}}$ | Density weighted average electron temperature ($\text{keV}$) | | $\mathtt{ne}$, $n_{\text{e}}$ | Volume averaged electron density ($\text{m}^{-3}$) | | $\mathtt{nd}$ | Deuterium beam density ($\text{m}^{-3}$) | @@ -152,7 +152,7 @@ Next, the following calculations are performed: 8. Calculate `t2` using the formula: $$ - \mathtt{t2} = 2 \sqrt{3} \frac{\arctan({\mathtt{thx}}+\pi)}{6} + \mathtt{t2} = 2 \sqrt{3} \arctan({\mathtt{thx}})+\frac{\pi}{6} $$ Finally, the fraction of fast particle energy coupled to ions is calculated using the formula: diff --git a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md index 57d0ff5635..1989210b4e 100644 --- a/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md +++ b/documentation/proc-pages/eng-models/heating_and_current_drive/RF/cutoff_ecrh.md @@ -17,7 +17,7 @@ $$ -\mathtt{fc} = \frac{1}{2\pi}eB_{\text{T}}m_{\text{e}} +\mathtt{fc} = \frac{\frac{1}{2\pi}eB_{\text{T}}}{m_{\text{e}}} $$ $$