Skip to content

Commit

Permalink
Update documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
jhillairet committed Apr 6, 2023
1 parent 872e891 commit 5f7346a
Show file tree
Hide file tree
Showing 3 changed files with 154 additions and 849 deletions.
241 changes: 20 additions & 221 deletions doc/chart_manual_matching.ipynb

Large diffs are not rendered by default.

89 changes: 71 additions & 18 deletions doc/introduction.ipynb
Expand Up @@ -48,6 +48,7 @@
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import skrf as rf\n",
"rf.stylely() # pretty plots\n",
"from tqdm.notebook import tqdm\n",
"# WEST ICRH Antenna package\n",
"import sys; sys.path.append('..')\n",
Expand All @@ -58,12 +59,12 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"The WEST ICRH Antenna RF model can be built be eventually defining:\n",
"- the frequency band of interest, given by a scikit-rf `Frequency` object\n",
"- the front face S-parameter `filename`, ie. the model of the antenna front-face radiating to a given medium\n",
"The WEST ICRH Antenna RF model can be built by defining one or all of:\n",
"- the frequency band of interest, given by a [scikit-rf](https://scikit-rf.readthedocs.io/en/latest/) `Frequency` object\n",
"- the front face (Touchstone) S-parameter `filename`, ie. the model of the antenna front-face radiating to a given medium (or a scikit-rf 4-port `Network`)\n",
"- the capacitor's capacitances `[C1, C2, C3, C4]`\n",
"\n",
"All these parameters are optionnal when builing the `WestIcrhAntenna` object. Default parameters if a frequency band 30-70 MHz, with the front-face radiating in vacuum with all capacitances set to 50 pF."
"All these parameters are optionnal when builing the `WestIcrhAntenna` object. Default parameters is a frequency band 30-70 MHz, with the front-face radiating in vacuum with all capacitances set to 50 pF."
]
},
{
Expand All @@ -72,7 +73,7 @@
"metadata": {},
"outputs": [],
"source": [
"# default values\n",
"# Using default values\n",
"antenna = WestIcrhAntenna()\n",
"print(antenna)"
]
Expand All @@ -90,7 +91,7 @@
"metadata": {},
"outputs": [],
"source": [
"freq = rf.Frequency(48, 52, npoints=2001, unit='MHz')\n",
"freq = rf.Frequency(48, 57, npoints=2001, unit='MHz')\n",
"antenna = WestIcrhAntenna(frequency=freq)"
]
},
Expand All @@ -116,23 +117,62 @@
"metadata": {},
"source": [
"## Antenna Matching\n",
"Matching the WEST ICRH antenna consists in setting up the 4 capacitances values ($C_1,C_2,C_3,C_4$) to achieve low reflected power to the generators (ideally zero from the generator point-of-view). For the given geometry of the WEST antenna, these optimal capacitances depend on:\n",
"- the antenna front-face, i.e. the plasma facing the antenna; \n",
"- the antenna excitation, especially the phasing between left and right sides.\n"
"Matching the WEST ICRH antenna consists in setting up the 4 capacitances values ($C_1,C_2,C_3,C_4$) to achieve the desired behaviour, typically a low reflected power to the generators. For the given geometry of the WEST antenna, these optimal capacitances depend on:\n",
"- the antenna front-face, i.e. the plasma properties facing the antenna; \n",
"- the antenna excitation, powers and phasing between left and right sides."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Matching the antenna step by step\n",
"### Matching the antenna in one step\n",
"The optimum set of capacitances to minimize the reflected power at a given frequency can be obtained using the `match_both_sides()` method:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"f_match = 55e6\n",
"C_match = antenna.match_both_sides(f_match=f_match)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# dipole excitation for the set of capacitances\n",
"power = [1, 1]\n",
"phase = [0, np.pi]\n",
"\n",
"# Antenna reflection coefficient in dB (active S-parameter, cf next section)\n",
"s = rf.mag_2_db(antenna.s_act(power, phase, C_match)) \n",
"\n",
"fig, ax = plt.subplots()\n",
"ax.plot(antenna.f_scaled, s)\n",
"ax.set_xlabel('Frequency [MHz]')\n",
"ax.set_ylabel('$|S_{act}|$ [dB]')\n",
"ax.set_title(f'Reflection is min at {f_match/1e6} MHz')\n",
"ax.set_xlim(54, 56)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Matching the antenna step by step\n",
"When both sides of the antenna are used (which is the desired situation), the figure of merit is not the reflection coefficient from scattering parameters (such as $S_{11}$ or $S_{22}$) but the \"active\" parameters, that is the RF parameters taking into account the antenna feeding and cross-coupling effects between both sides. Because of these cross-coupling effects, the matching point for each side used separately is not the same than for both sides used together.\n",
"\n",
"Let's see step by step these effects.\n",
"\n",
"Each side of the antenna can be matched separatly, which is what is done in practice since it's simpler to act on two capacitors than four at the same time. \n",
"Each side of the antenna can be matched separately, which is what is done in practice since it's simpler to act on two capacitors than four at the same time. \n",
"\n",
"Let's start with the left side, looking for a solution at 50 MHz, with the solution 1 (corresponding to $C_{top} > C_{bot}$, solution 2 being the opposite). The right side is left unmatched."
"Let's start with the left side, looking for a solution at 54 MHz, with the solution 1 (corresponding to $C_{top} > C_{bot}$, solution 2 being the opposite). The right side is left unmatched."
]
},
{
Expand All @@ -141,9 +181,9 @@
"metadata": {},
"outputs": [],
"source": [
"f_match = 50e6\n",
"f_match = 54e6\n",
"C_match_left = antenna.match_one_side(f_match=f_match, \n",
" side='left', solution_number=1)"
" side='right', solution_number=1)"
]
},
{
Expand Down Expand Up @@ -330,9 +370,9 @@
"## Impedance at the T-junction\n",
"The WEST ICRH antennas design is based on the conjugate-T to insure a load-tolerance. In particular, they have been designed to operate with an impedance at the T-junction $Z_T$ close to 3 Ohm. An impedance transformer connects the T-junction to the feeding transmission line (30 Ohm line). Hence, matching the antenna is similar to having a 30 Ohm load connected to the feeding transmission line, such as no power is reflected (VSWR$\\to 1$), which should be equivalent of having an impedance of roughtly 3 Ohm at the T-junction.\n",
"\n",
"However, due to real-life design and manufacturing constraint, the optimal impedance at the T-junction is not necessarely 3 Ohm, but can be slightly different in both real and imginary parts. \n",
"However, due to real-life design and manufacturing constraint, the optimal impedance at the T-junction is not necessarely 3 Ohm, but can be slightly different in both real and imaginary parts. \n",
"\n",
"So let's evaluate the impact of the impedance at the T-junction to the 30Ohm feeder line (the one which really matter for the generator point-of-view). \n",
"So let's evaluate the impact of the impedance at the T-junction to the 30 Ohm feeder line (the one which really matter for the generator point-of-view).\n",
"\n",
"For that, let's take the impedance transformer/vacuum window/service stub network assembly of an antenna:"
]
Expand Down Expand Up @@ -408,7 +448,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Hence the optimal impedance at the T-junction is not 3 Ohm, but slightly above in the complex plane. Let's calculate this optimal value using: "
"Hence the optimal impedance at the T-junction is not 3 Ohm, but slightly close in the complex plane. Let's calculate this optimal value using: "
]
},
{
Expand Down Expand Up @@ -480,7 +520,20 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
"version": "3.10.8"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": true,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
Expand Down
673 changes: 63 additions & 610 deletions doc/tutorial_matching_manual.ipynb

Large diffs are not rendered by default.

0 comments on commit 5f7346a

Please sign in to comment.