{ "cells": [ { "cell_type": "markdown", "id": "f2df5433-1df0-4ea1-b055-dffbc8993123", "metadata": {}, "source": [ "# Manual Matching of a WEST ICRH Antenna on Plasma" ] }, { "cell_type": "markdown", "id": "808b14fd-dc7e-412c-abfa-b3ca0254598b", "metadata": {}, "source": [ "This notebook calculates the charts used in the internal documentation for the IC Operators for the manual matching on plasma. " ] }, { "cell_type": "code", "execution_count": null, "id": "14c9acaa-9f2e-4f89-bb51-6b9497c88ef6", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from tqdm.notebook import tqdm\n", "import skrf as rf\n", "\n", "# WEST ICRH Antenna package\n", "import sys; sys.path.append('..')\n", "from west_ic_antenna import WestIcrhAntenna\n", "#rf.stylely()" ] }, { "cell_type": "markdown", "id": "6c69f03f-a506-4d68-bdd7-f9e5fe758d4d", "metadata": {}, "source": [ "# Capacitance Diff vs Coupling Resitance\n", "For a given RF frequency $f_0$ and phase setup, an antenna is generally first matched on vacuum conditions, leading to a couple of solution (C1, C2, C3, C4)." ] }, { "cell_type": "markdown", "id": "297462ea-0a2f-4e07-bfc1-ed705f93be18", "metadata": {}, "source": [ "For the WEST preset frequencies, We create multiple plasma scenarios for low to high coupling cases and for each of them we determine the best matching point:" ] }, { "cell_type": "code", "execution_count": null, "id": "566888d7-4c62-47ae-a22d-20c98d06e509", "metadata": {}, "outputs": [], "source": [ "# WEST Antenna matched on vacuum condition in dipole (default) for a given frequency\n", "f0_MHzs = [55.5, 57] # [48, 53, 55.5, 57, 63]\n", "delta_Cs = {}\n", "\n", "for f0_MHz in tqdm(f0_MHzs):\n", " freq = rf.Frequency(f0_MHz, f0_MHz, npoints=1, unit='MHz')\n", " ant_vacuum = WestIcrhAntenna(frequency=freq) # default is vacuum coupling\n", " Cs_vac = ant_vacuum.match_both_sides()\n", " \n", " Rcs = np.linspace(0.4, 1.7, num=10)\n", " Cs_plasmas = []\n", " \n", " for Rc in tqdm(Rcs):\n", " plasma = WestIcrhAntenna.interpolate_front_face(Rc, source='TOPICA-H-mode')\n", " ant_plasma = WestIcrhAntenna(frequency=freq, front_face=plasma)\n", " Cs_plasma = ant_plasma.match_both_sides()\n", " Cs_plasmas.append(Cs_plasma)\n", " \n", " delta_Cs[f0_MHz] = np.array(Cs_plasmas) - np.array(Cs_vac)" ] }, { "cell_type": "code", "execution_count": null, "id": "adeffd01-319d-4240-afdd-0ffdad081ef2", "metadata": {}, "outputs": [], "source": [ "fig, ax = plt.subplots()\n", "for f0_MHz in tqdm(f0_MHzs):\n", " ax.plot(Rcs, abs(delta_Cs[f0_MHz][:,0] + delta_Cs[f0_MHz][:,2])/2, marker='^', label=f'{f0_MHz} MHz - Top')\n", " ax.plot(Rcs, abs(delta_Cs[f0_MHz][:,1] + delta_Cs[f0_MHz][:,3])/2, marker='v', label=f'{f0_MHz} MHz - Bot')\n", "ax.set_xlabel('Coupling Resistance $R_c$ [Ohm]')\n", "ax.set_ylabel('Capacitance Shift $\\Delta C$ [pF]')\n", "ax.set_title('Capacitance Shift to add from Vacuum Match Points (55 MHz)')\n", "ax.legend()\n", "ax.grid(True)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.7" }, "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, "nbformat_minor": 5 }