{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ab747090-6d2a-4bdf-9be0-42bbf688c512",
   "metadata": {},
   "source": [
    "# Rediscovering the ZS6BKW\n",
    "\n",
    "The ZS6BWK antenna is a well-known antenna. It consists of a centerfed dipole 10 m above ground and\n",
    "a 400 Ω two-wire feed line.  Dipole and feed-line lengths are carefully chosen: The antenna\n",
    "exhibits low SWR in five bands: 40 m, 20 m, 17 m, 12 m, and 10 m.\n",
    "It can be operated on these bands without a tuner.  That antenna is \n",
    "described by its original author Brian Austin, G0GSF (ex ZS6BKW),\n",
    "in an [article](https://www.wireantennas.co.uk/pdf/zs6bkw-antenna-from-the-horses-mouth-by-g0gsf.pdf) from Sprat #130.  That article also gives some summary how that antenna was originally designed:\n",
    "With the aid of computer optimization as was available some 40 years ago.\n",
    "\n",
    "With the availability of potent hardware and potent software, this should be easier\n",
    "nowadays than it was 40 years ago, when Brian accomplished his feat.  So the present\n",
    "document presents a 2026 version: How could one re-invent the ZS6BKW today?\n",
    "\n",
    "Good optimization algorithms exist, e.g., in the Python ecosystem\n",
    "in the FLOSS [https://docs.scipy.org/doc/scipy/reference/optimize.html#global-optimization](https://docs.scipy.org/doc/scipy/reference/optimize.html#global-optimization) package.\n",
    "\n",
    "Existing optimization algorithms can be used for antenna work in several ways. One\n",
    "is the Python software `antenna-simulation-driver` that I (Andreas, DJ3EI) have\n",
    "authored and made available as a FLOSS project\n",
    "via [Pypi](https://pypi.org/project/antenna-simulation-driver/).  That software allows\n",
    "to run the NEC2 port `nec2++` and process `nec2++`'s results.\n",
    "\n",
    "This current document is mostly a test and show-case for my `antenna-simulation-driver` software.\n",
    "People not interested in coding, but in the ZS6BKW antenna itself,\n",
    "will probably find this a long read with only a few bits of information new to them.\n",
    "\n",
    "It demonstrates how that software can be used for a real-world problem.\n",
    "That my software was able to reproduce Brian's results helped me\n",
    "to convince myself of its general usefulness.\n",
    "\n",
    "For the record: Of that software, some internal version was used\n",
    "that had the same functionality as does version 0.2.0 (not yet published while I write this).\n",
    "\n",
    "## Input data, plan of action\n",
    "\n",
    "Brian gives the following data:\n",
    "\n",
    "Center freq | SWR | bandwidth\n",
    "------------|-----|-----------\n",
    "7.10  | 1.1 | 360\n",
    "14.20 | 1.1 | 270\n",
    "18.1  | 1.3 | 380\n",
    "24.92 | 1.4 | 260\n",
    "28.97 | 1.4 | 400\n",
    "\n",
    "Center frequency (in MHz) is the frequency of the lowest SWR, and the bandwidth (in kHz)\n",
    "is the SWR &lt; 2 bandwidth.\n",
    "\n",
    "The present document by me, Andreas, DJ3EI, rediscovers the dipole length\n",
    "and the feedline length that Brian came up with that provide these remarkable features.\n",
    "To do so, the above list of frequencies is used as input. The optimization attempts\n",
    "to minimize SWR at all of those frequencies simultaneously."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "40ce5fe4-3c7e-4b68-a026-e926509b1091",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2026-08-04 11:47:03 UTC'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datetime import datetime, UTC\n",
    "start_time = datetime.now(UTC)\n",
    "start_time.strftime(\"%Y-%m-%d %H:%M:%S UTC\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "101458c1-15e9-4169-99bc-a33e49bdce19",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[7100000.0, 14200000.0, 18100000.0, 24920000.0, 28970000.0]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The list of frequencies where SWR is to be minimized:\n",
    "# I habitually use base units in my code internally\n",
    "# (like m, Hz, Ω, H, F).\n",
    "\n",
    "# Convenient human-consumable derived units are converted\n",
    "# from on input and often converted back to on output.\n",
    "# Here, I translate the list of frequencies in MHz to Hz:\n",
    "\n",
    "LOW_SWR_WANTED_FS = [x*1e6 for x in (7.1, 14.2, 18.1, 24.92, 28.97)]\n",
    "LOW_SWR_WANTED_FS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9a176028-6fc5-4e51-9ec0-e6779eb83219",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0009772050238058398, 7.499999999999998e-07)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import math\n",
    "# I'm in the habit of using 0.75 mm² stranded wire:\n",
    "\n",
    "WIRE_AREA = 0.75e-6 # in m²\n",
    "WIRE_DIAMETER = math.sqrt(WIRE_AREA/math.pi) * 2\n",
    "WIRE_DIAMETER, math.pi * (WIRE_DIAMETER/2)**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3e65a4e8-02cf-487d-82f3-a300d051f02f",
   "metadata": {},
   "outputs": [],
   "source": [
    "DIPOLE_HEIGHT = 10.0 # This is the height above ground as given by Brian.\n",
    "Z_CABLE = 400 # This is the impedance of the feedline used for the original ZS6BKW.\n",
    "Z_TX_WANTS = 50 # The ubiquitous 50 Ω we want to see."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "63628cbc-cb33-40d1-a022-92042d456c91",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Brian's description mentions \"city ground\":\n",
    "CITY_GROUND_DIEL = 3\n",
    "CITY_GROUND_CONDUCTIVITY = 1e-3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "17c59df4-4ce9-4b42-8114-31f1508879f2",
   "metadata": {},
   "outputs": [],
   "source": [
    "from antenna_simulation_driver import run_nec2pp\n",
    "import antenna_simulation_driver\n",
    "\n",
    "antenna_simulation_count = 0\n",
    "\n",
    "def compute_antenna_z(\n",
    "    qrg: float,\n",
    "    dipole_length_1: float,\n",
    "    dipole_length_2: float,\n",
    "    dipole_height: float = DIPOLE_HEIGHT,\n",
    "    wire_diameter: float = WIRE_DIAMETER,\n",
    "    ground_diel_const: float = CITY_GROUND_DIEL,\n",
    "    ground_conductivity: float = CITY_GROUND_CONDUCTIVITY,\n",
    "    capture_output: bool = False,\n",
    "    rp_line: str = \"RP 0 37 144 1003 0.0 0.0 2.5 2.5 0.0 0.0\"\n",
    ") -> antenna_simulation_driver.Nec2ppOutput:\n",
    "    λ = 3e8 / qrg\n",
    "    simulation_input = (\"CM Dipole.\\n\"\n",
    "        # end of comment:\n",
    "        \"CE\\n\"\n",
    "\n",
    "        # tag number, number of segments, x,y,z of endpoint, x,y,z of other endpoint, wire radius\n",
    "        # Somewhat arbitrary decision: One segment every 30 cm.\n",
    "        f\"GW 1 {math.ceil(dipole_length_1 / 0.3)} \"\n",
    "        f\"{-dipole_length_1:.3f} .0 {dipole_height:.3f} \"\n",
    "        f\"-0.3 .0 {dipole_height:.3f} \"\n",
    "        f\"{wire_diameter/2:.3e}\\n\"\n",
    "\n",
    "        f\"GW 2 1 \"\n",
    "        f\"-0.3 .0 {dipole_height:.3f} \"\n",
    "        f\"0.3 .0  {dipole_height:.3f} \"\n",
    "        f\"{wire_diameter/2:.3e}\\n\"\n",
    "\n",
    "        f\"GW 3 {math.ceil(dipole_length_2 / 0.3)} \"\n",
    "        f\"0.3 .0  {dipole_height:.3f} \"\n",
    "        f\"{dipole_length_2:.3f} .0 {dipole_height:.3f} \"\n",
    "        f\"{wire_diameter/2:.3e}\\n\"\n",
    "\n",
    "        # end of geometry\n",
    "        \"GE\\n\"\n",
    "\n",
    "        # Ground: 2 0 0 0 finite ground with no ground-screen, dielectric constant, conductivity in mhos / m\n",
    "        f\"GN 2 0 0 0 {ground_diel_const} {ground_conductivity}\\n\"\n",
    "\n",
    "        # copper wire\n",
    "        \"LD 5 1 0 0 58.1e6\\n\"\n",
    "        \"LD 5 2 0 0 58.1e6\\n\"\n",
    "        \"LD 5 3 0 0 58.1e6\\n\"\n",
    "\n",
    "        # Excitation: 0 Voltage source, 1 tag number and segment number where the excitation happens,\n",
    "        # the following 0 is for general sanity, the following one or two floats give the (real or complex) voltage.\n",
    "        f\"EX 0 2 1 0 1.0\\n\"\n",
    "\n",
    "        # Frequencies: 0: linear stepping, 1: number of frequencies stepped through, 0, 0,\n",
    "        # then starting frequency in MHz and stepping increment.\n",
    "        # The software that reads the simulation run's output assumes we have only one frequency.\n",
    "        f\"FR 0 1 0 0 {qrg*1e-6:.6f} 0.00\\n\"\n",
    "        # Actually run the simulation:\n",
    "        # \"RP 0 37 145 1003 0.0 0.0 2.5 2.5 0.0 0.0\\n\"\n",
    "        f\"{rp_line}\\n\"\n",
    "        \"EN\\n\")\n",
    "    # print(simulation_input)\n",
    "    global antenna_simulation_count\n",
    "    antenna_simulation_count += 1 # This does not work through multiprocessing.\n",
    "    return run_nec2pp(simulation_input, capture_output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9e2d163b-13ed-4f4e-b56b-61178ebe494e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(14.625-1060.5j)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Sanity check: Compare with known quarter wave dipole.\n",
    "# For this dipole, MMANA calculates an impedance of 14.04-1001j (\"known\").\n",
    "# If we see some similar impedance here, that is some indication\n",
    "# that the above input script generation for NEC2 is correct:\n",
    "compute_antenna_z(7.05e6, 5.0, 5.0, 10.0, 1.6e-3, 13, 5e-3).input_and_impedance.impedance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "b8defad5-9ae7-4a75-97ec-0de8d7cc7339",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((9.98402555910543-0.39936102236422005j),\n",
       " (9.984025559105431-0.3993610223642172j))"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import math\n",
    "SPEED_OF_LIGHT = 3e8\n",
    "\n",
    "# Z0 (Z + j Z0 tan(2πL/λ)) / (Z0 + j Z tan(2πL/λ))\n",
    "def cable_transform(z_in: complex, z_cable: complex, f: float, electric_length: float) -> complex:\n",
    "    t = math.tan(2 * math.pi * electric_length * f / SPEED_OF_LIGHT)\n",
    "    return z_cable * (z_in + 1j*z_cable*t) / (z_cable + 1j*z_in*t)\n",
    "\n",
    "# Sanity check, the numbers should come out the same:\n",
    "cable_transform(250+10j, 50, 10e6, SPEED_OF_LIGHT/10e6/4), 50 * 50 / (250+10j)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "8f79633a-41b0-49b1-803e-fad0ea2c700a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import scipy\n",
    "\n",
    "# I like to use the scipy.optimize.differential_evolution algorithm,\n",
    "# admittedly without checking alternatives and also without\n",
    "# delving into the many parameters that could be used to control it further.\n",
    "\n",
    "# I noticed this algorith# does not always return, as a result,\n",
    "# the best candidate ever examined,\n",
    "# but often only some slightly worse candiate.\n",
    "\n",
    "# This (rather pedestrian) wrapper fixes that:\n",
    "# It simply remembers the best result achived thus far\n",
    "# and the candidate solution that achived it.\n",
    "\n",
    "def optimize_wrapper(minimize_me, bounds):\n",
    "\n",
    "    best_xs = None\n",
    "    best_result = float(\"Infinity\")\n",
    "\n",
    "    def wrapper(xs):\n",
    "        nonlocal best_xs\n",
    "        nonlocal best_result\n",
    "        result = minimize_me(xs)\n",
    "        if result < best_result:\n",
    "            best_result = result\n",
    "            best_xs = list(xs)\n",
    "        return result\n",
    "\n",
    "    result = scipy.optimize.differential_evolution(wrapper, bounds)\n",
    "\n",
    "    if result.success and best_xs is not None:\n",
    "        result.x = best_xs\n",
    "        result.fun = best_result\n",
    "\n",
    "    return result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "392b6f44-4b49-4d57-8ae1-8299bd4a50d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas\n",
    "from multiprocessing import Pool\n",
    "\n",
    "# We only deal with electrical feedline length.\n",
    "# To actually derive at physical cable length,\n",
    "# you'd need to take the velocity factor into account. (We don't.)\n",
    "\n",
    "# The feedline lengths we even consider\n",
    "# are those between 1 m and 40 m.\n",
    "FEEDLINE_LENGTH_MIN = 1\n",
    "FEEDLINE_LENGTH_MAX = 40\n",
    "\n",
    "# Running the simulation is much more expensive than is\n",
    "# running a few experiments with different feedline lenghts.\n",
    "# So after each simulation run, we optimize feedline length for best SWRs.\n",
    "\n",
    "def find_best_feedline_length(\n",
    "    fs:list[float],\n",
    "    zins:list[complex],\n",
    "    swrs_wanted:list[float]\n",
    ") -> tuple[float, float, list[float]]:\n",
    "    \"\"\"Input: Arrays of frequencies and impedances (at those frequencies), so two arrays of same length.\n",
    "\n",
    "    Output: Tupel with three slots: First: best feedline length,\n",
    "    second: resulting best sum of (swr-1)² at that feedline length,\n",
    "    third: array of individual SWR values at the frequencies in fs.\n",
    "\n",
    "    You'd normally want all SWRs to be 1.0.  If so, pass an array of all 1.0 as swrs_wanted.\n",
    "    But it is also possible to optimize for best fit to other SWR values.\n",
    "    Pass these other SWR values as swrs_wanted. In any event, that array should also\n",
    "    have the same length as do fs and zins.\n",
    "    \"\"\"\n",
    "\n",
    "    # Given frequencies in fs and resulting dipole impedances at those frequencies in zins,\n",
    "    # this is the function we want to minimize.\n",
    "    def swr_sum(xs):\n",
    "        feedline_length = xs[0]\n",
    "        swrs = (\n",
    "            antenna_simulation_driver.swr(cable_transform(zin, Z_CABLE, f, feedline_length), Z_TX_WANTS)\n",
    "            for f, zin in zip(fs, zins)\n",
    "        )\n",
    "        return sum((swr_is-swr_wanted)**2 for swr_is, swr_wanted in zip(swrs, swrs_wanted))\n",
    "\n",
    "    # Optimize feedline length for minimal overall SWRs.\n",
    "    # One of these days, I should try whether\n",
    "    # https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.least_squares.html\n",
    "    # gives better results.\n",
    "    o_result = optimize_wrapper(swr_sum, ((FEEDLINE_LENGTH_MIN, FEEDLINE_LENGTH_MAX), ))\n",
    "    if o_result.success:\n",
    "        best_feedline_length = o_result.x[0]\n",
    "        best_swrs = [\n",
    "            antenna_simulation_driver.swr(cable_transform(zin, Z_CABLE, f, best_feedline_length), Z_TX_WANTS)\n",
    "            for f, zin in zip(fs, zins)\n",
    "        ]\n",
    "        best_square_sum = o_result.fun\n",
    "        return best_feedline_length, best_square_sum, best_swrs\n",
    "    else:\n",
    "        raise RuntimeError(f\"{o_result}\")\n",
    "\n",
    "def zin_and_eff_from_args(args: tuple[float, float, float, ...]) -> tuple[complex, float]:\n",
    "    \"\"\"Helper function to run the simulation:\n",
    "    Given arguments as our compute_antenna eats it (at least three are required),\n",
    "    return that antenna's complex impedance and its radiation efficiency.\n",
    "    \"\"\"\n",
    "    result = compute_antenna_z(*args)\n",
    "    return result.input_and_impedance.impedance, result.average_gain.average_power_gain / 2\n",
    "\n",
    "def optimize(wire_diameter: float,\n",
    "             swrs_wanted:list[float] = [1.0 for f in LOW_SWR_WANTED_FS],\n",
    "             min_half_dipole_length: float = 3,\n",
    "             max_half_dipole_length: float = 50\n",
    "            ):\n",
    "    \"\"\"The main optimization function.\"\"\"\n",
    "    global antenna_simulation_count\n",
    "    best_found_thus_far = float(\"Infinity\")\n",
    "\n",
    "    def minimize_me(xs):\n",
    "        global antenna_simulation_count\n",
    "        nonlocal best_found_thus_far\n",
    "        # This \"outer optimization\" only optimizes the dipole length.\n",
    "        dipole_length_1 = xs[0]\n",
    "\n",
    "        # Arguments for one \"volley\" of antenna simulations.\n",
    "        # The \"volley\" consists of one antenna simulation for each frequency in LOW_SWR_WANTED_FS.\n",
    "        argss = [\n",
    "            (f, dipole_length_1, dipole_length_1, DIPOLE_HEIGHT, wire_diameter) for f in LOW_SWR_WANTED_FS\n",
    "        ]\n",
    "        # Run the simulations of one \"volley\" in parallel simultaneously, in separate processes.\n",
    "        # This way, the work is distributed over the cores of a multicore computer.\n",
    "        with Pool() as pool:\n",
    "            zin_eff_s = list(pool.map(zin_and_eff_from_args, argss))\n",
    "            # The global count is not accessible from separate processes, so we increment it here:\n",
    "            antenna_simulation_count += len(argss)\n",
    "\n",
    "        # Now that we have the impedances at various frequencies,\n",
    "        # run a separate optimization to find the best common feedline length:\n",
    "        feedline_length, swr_square_sum, swrs = \\\n",
    "            find_best_feedline_length(LOW_SWR_WANTED_FS, [zin_eff[0] for zin_eff in zin_eff_s], swrs_wanted)\n",
    "        # This is the value we'll return:\n",
    "        result = swr_square_sum\n",
    "        # To keep the operator entertained while waiting for the optimization result,\n",
    "        # output the sequence of best results found thus far:\n",
    "        if result < best_found_thus_far:\n",
    "            best_found_thus_far = result\n",
    "            print(\n",
    "                f\"dipole_length_1: {dipole_length_1:.3f} m\\n\"\n",
    "                f\"dipole_length_2: {dipole_length_1:.3f} m\\n\"\n",
    "                f\"feedl_length:    {feedline_length:.3f} m\\n\"\n",
    "                f\"result:          {result:.5f}\\n\"\n",
    "                f\"SWRs:            {[round(swr,3) for swr in swrs]}\\n\"\n",
    "                f\"effs:            {[zin_eff[1] for zin_eff in zin_eff_s]}\\n\"\n",
    "                f\"simcount:        {antenna_simulation_count}\\n\"\n",
    "            )\n",
    "        return result\n",
    "\n",
    "    # We assume that the dipole length we are looking for\n",
    "    # will be somewhere in the range of 6 to 100 meters.\n",
    "    o_result = optimize_wrapper(minimize_me, ((min_half_dipole_length, max_half_dipole_length),))\n",
    "\n",
    "    if o_result.success:\n",
    "        best_dipole_length_1 = o_result.x[0]\n",
    "        best_argss = [\n",
    "                (f, best_dipole_length_1, best_dipole_length_1) for f in LOW_SWR_WANTED_FS\n",
    "        ]\n",
    "        # Do the calculations one more time\n",
    "        # (we did that same calculation before as part of the optimization,\n",
    "        # but did not bother to keep the results):\n",
    "        with Pool() as pool:\n",
    "            best_zin_eff_s = list(pool.map(zin_and_eff_from_args, best_argss))\n",
    "            antenna_simulation_count += len(best_argss)\n",
    "        best_feedline_length, best_swr_square_sum, best_swrs = \\\n",
    "            find_best_feedline_length(\n",
    "                LOW_SWR_WANTED_FS,\n",
    "                [best_zin_eff[0] for best_zin_eff in best_zin_eff_s],\n",
    "                swrs_wanted\n",
    "            )\n",
    "        print(\n",
    "            \"Best antenne found:\\n\"\n",
    "            f\"dipole_length_1: {best_dipole_length_1:.3f} m\\n\"\n",
    "            f\"dipole_length_2: {best_dipole_length_1:.3f} m\\n\"\n",
    "            f\"feedl_length:    {best_feedline_length:.3f} m\\n\"\n",
    "            f\"result:          {best_swr_square_sum:.5f}\\n\"\n",
    "            f\"SWRs, 3 digits:  {[round(swr,3) for swr in best_swrs]}\\n\"\n",
    "            f\"SWRs, 2 digits:  {[round(swr,2) for swr in best_swrs]}\\n\"\n",
    "            f\"efficiencies:    {[best_zin_eff[1] for best_zin_eff in best_zin_eff_s]}\\n\"\n",
    "            f\"simcount:        {antenna_simulation_count}\\n\"\n",
    "        )\n",
    "        return (best_dipole_length_1, best_dipole_length_1, best_feedline_length)\n",
    "    else:\n",
    "        raise RuntimeError(f\"{o_result}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "54b680ac-3808-4db2-9b83-7852c9866388",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dipole_length_1: 34.398 m\n",
      "dipole_length_2: 34.398 m\n",
      "feedl_length:    35.257 m\n",
      "result:          1079.98918\n",
      "SWRs:            [1.46, 2.626, 23.559, 23.515, 8.83]\n",
      "effs:            [0.52075, 0.5437, 0.5736, 0.5888, 0.5856]\n",
      "simcount:        6\n",
      "\n",
      "dipole_length_1: 38.403 m\n",
      "dipole_length_2: 38.403 m\n",
      "feedl_length:    30.875 m\n",
      "result:          512.45483\n",
      "SWRs:            [7.314, 19.973, 3.239, 5.668, 10.265]\n",
      "effs:            [0.5559, 0.5061, 0.528, 0.53345, 0.53475]\n",
      "simcount:        31\n",
      "\n",
      "dipole_length_1: 12.948 m\n",
      "dipole_length_2: 12.948 m\n",
      "feedl_length:    14.807 m\n",
      "result:          15.05795\n",
      "SWRs:            [1.348, 2.167, 2.055, 2.645, 4.124]\n",
      "effs:            [0.60765, 0.56995, 0.5801, 0.5995, 0.5917]\n",
      "simcount:        41\n",
      "\n",
      "dipole_length_1: 13.883 m\n",
      "dipole_length_2: 13.883 m\n",
      "feedl_length:    13.834 m\n",
      "result:          4.05262\n",
      "SWRs:            [1.209, 1.899, 1.88, 2.043, 2.157]\n",
      "effs:            [0.6112, 0.55165, 0.5869, 0.59, 0.59905]\n",
      "simcount:        181\n",
      "\n",
      "dipole_length_1: 13.993 m\n",
      "dipole_length_2: 13.993 m\n",
      "feedl_length:    13.726 m\n",
      "result:          3.15472\n",
      "SWRs:            [1.193, 1.801, 1.797, 1.952, 1.966]\n",
      "effs:            [0.6117, 0.5499, 0.5875, 0.5889, 0.59975]\n",
      "simcount:        336\n",
      "\n",
      "dipole_length_1: 14.547 m\n",
      "dipole_length_2: 14.547 m\n",
      "feedl_length:    13.175 m\n",
      "result:          1.43134\n",
      "SWRs:            [1.086, 1.079, 1.075, 2.074, 1.508]\n",
      "effs:            [0.61365, 0.5436, 0.58905, 0.586, 0.60165]\n",
      "simcount:        356\n",
      "\n",
      "dipole_length_1: 14.369 m\n",
      "dipole_length_2: 14.369 m\n",
      "feedl_length:    13.353 m\n",
      "result:          0.51365\n",
      "SWRs:            [1.121, 1.309, 1.33, 1.525, 1.139]\n",
      "effs:            [0.61315, 0.545, 0.5888, 0.5863, 0.6014]\n",
      "simcount:        446\n",
      "\n",
      "dipole_length_1: 14.395 m\n",
      "dipole_length_2: 14.395 m\n",
      "feedl_length:    13.327 m\n",
      "result:          0.49987\n",
      "SWRs:            [1.114, 1.272, 1.291, 1.557, 1.134]\n",
      "effs:            [0.61325, 0.5448, 0.5889, 0.58625, 0.6015]\n",
      "simcount:        821\n",
      "\n",
      "dipole_length_1: 14.392 m\n",
      "dipole_length_2: 14.392 m\n",
      "feedl_length:    13.330 m\n",
      "result:          0.49966\n",
      "SWRs:            [1.115, 1.276, 1.295, 1.553, 1.133]\n",
      "effs:            [0.61325, 0.5448, 0.58885, 0.58625, 0.60145]\n",
      "simcount:        846\n",
      "\n",
      "dipole_length_1: 14.391 m\n",
      "dipole_length_2: 14.391 m\n",
      "feedl_length:    13.331 m\n",
      "result:          0.49965\n",
      "SWRs:            [1.115, 1.277, 1.297, 1.551, 1.133]\n",
      "effs:            [0.61325, 0.54485, 0.58885, 0.58625, 0.60145]\n",
      "simcount:        911\n",
      "\n",
      "dipole_length_1: 14.393 m\n",
      "dipole_length_2: 14.393 m\n",
      "feedl_length:    13.329 m\n",
      "result:          0.49956\n",
      "SWRs:            [1.115, 1.275, 1.294, 1.554, 1.133]\n",
      "effs:            [0.61325, 0.5448, 0.58885, 0.58625, 0.60145]\n",
      "simcount:        971\n",
      "\n",
      "dipole_length_1: 14.393 m\n",
      "dipole_length_2: 14.393 m\n",
      "feedl_length:    13.329 m\n",
      "result:          0.49956\n",
      "SWRs:            [1.115, 1.275, 1.294, 1.554, 1.133]\n",
      "effs:            [0.61325, 0.5448, 0.58885, 0.58625, 0.60145]\n",
      "simcount:        1061\n",
      "\n",
      "Best antenne found:\n",
      "dipole_length_1: 14.393 m\n",
      "dipole_length_2: 14.393 m\n",
      "feedl_length:    13.329 m\n",
      "result:          0.49956\n",
      "SWRs, 3 digits:  [1.115, 1.275, 1.294, 1.554, 1.133]\n",
      "SWRs, 2 digits:  [1.11, 1.27, 1.29, 1.55, 1.13]\n",
      "efficiencies:    [0.61325, 0.5448, 0.58885, 0.58625, 0.60145]\n",
      "simcount:        1066\n",
      "\n"
     ]
    }
   ],
   "source": [
    "best_dipole_length_1, best_dipole_length_2, best_feedline_length = \\\n",
    "    optimize(WIRE_DIAMETER)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d4026eb9-820c-4cb8-8f4f-21842e29b032",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1066 simulations thus far in 75.0 s, so 70.4 ms/simulation\n"
     ]
    }
   ],
   "source": [
    "intermediate_time = datetime.now(UTC)\n",
    "intermediate_time.strftime(\"%Y-%m-%d %H:%M:%S UTC\")\n",
    "intermediate_duration = (intermediate_time - start_time).total_seconds()\n",
    "print(f\"{antenna_simulation_count} simulations thus far in {intermediate_duration:.1f} s, \"\n",
    "      f\"so {intermediate_duration*1e3 / antenna_simulation_count:.1f} ms/simulation\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7a295856-088c-423b-aef9-ac866325e081",
   "metadata": {},
   "source": [
    "## Geometry comparison\n",
    "\n",
    "Comparing the measures given in Brian's publication to what my program found:\n",
    "\n",
    "What | original length | my length | deviation\n",
    "-----|-----------------|-----------|----------\n",
    "one dipole half | 14.25 | 14.39    | 1 %\n",
    "feedline, el    | 13.3  | 13.33    | 0.2 % (rounding?)\n",
    "\n",
    "## SWR comparison\n",
    "\n",
    "Next, I recalculate the SWRs not for my antenna,\n",
    "but for Brian's lengths as published, but using my software.\n",
    "\n",
    "When re-calculating the SWRs in that way,\n",
    "it turns out the 20 m band and 12 m band SWR values\n",
    "calculated with my software are considerably worse\n",
    "than those claimed by Brian:\n",
    "\n",
    "Center freq | claimed SWR | recalculated SWR | my SWR\n",
    "------------|-------------|------------------|---------\n",
    "7.10  | 1.1 | 1.07 | 1.11\n",
    "14.20 | 1.1 | 2.21 | 1.27\n",
    "18.1  | 1.3 | 1.14 | 1.29\n",
    "24.92 | 1.4 | 2.62 | 1.55\n",
    "28.97 | 1.4 | 1.68 | 1.13\n",
    "\n",
    "What could be the reason for this?\n",
    "\n",
    "Some possibly pertinent pieces of information:\n",
    "\n",
    "- Brian's Sprat article does not mention which wire was used to construct the antenna.\n",
    "- Out of habit, I had the simulation use 0.75 mm² cross section stranded wire,\n",
    "  which is a kind of wire I often use for actual antenna experiments.\n",
    "- My antenna comes out slightly longer than Brian's.\n",
    "\n",
    "This causes me to harbor a suspicion: I may have used in my calculations\n",
    "a wire that is thinner than the wire Brian used in his.\n",
    "\n",
    "## A wire diameter finding experiment\n",
    "\n",
    "So let us try to find out experimentally which diameter of wire Brian **has** used.\n",
    "\n",
    "It is well-known psychological effect: Once one has a nice hammer,\n",
    "various things start looking like nails. Now what I have isn't a hammer,\n",
    "but an optimization setup.  So I'll try to use that setup to find the\n",
    "correct diameter:  Fix the dimensions to those Brian published, and wiggle the wire diameter\n",
    "until the SWRs obtained are those he claimed.\n",
    "\n",
    "I tried that, but the SWRs didn't match up.\n",
    "\n",
    "So, instead of using the data that Brian published, let loose all three variables: The wire diameter,\n",
    "the dipole length, and the feedline length. Do another optimization.\n",
    "This time, not trying to find an antenna with lowest SWR values,\n",
    "but one that reproduces the SWR values Brian has published.\n",
    "\n",
    "As you can see from the material below, that resulted in a dipole geometry of 2 x 14.258 m with\n",
    "a wire diameter of 1.97 mm and a feedline length of 13.445 m. Let me hasten to make clear:\n",
    "**This is not a best-performing (lowest SWR) dipole, but the dipole that\n",
    "best reproduces the SWRs published by Brian!**\n",
    "\n",
    "Center freq | Brian's SWR | newly recalculated SWR\n",
    "------------|-------------|------------------\n",
    "7.10  | 1.1 | 1.13\n",
    "14.20 | 1.1 | 1.11 \n",
    "18.1  | 1.3 | 1.33\n",
    "24.92 | 1.4 | 1.42\n",
    "28.97 | 1.4 | 1.37\n",
    "\n",
    "The dipole length also fits reasonably well the dipole length of 2 x 14.25 m as published by Brian.\n",
    "Only the feedline now comes out as 13.445 m long, instead of the 13.3 m Brian published,\n",
    "but the resulting deviation is still a little less than 1%.\n",
    "\n",
    "## Overall satisfaction 😄\n",
    "\n",
    "The details are not exactly the same as those published by Brian.\n",
    "Given the limited precision of antenna simulations, this\n",
    "was to be expected.  But clearly,\n",
    "my search operation has found the ZS6BKW antenna."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "cf4a1d50-0571-46ec-9e6e-5def0894b105",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.9824561403508811, 0.22556390977443128)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Calculate deviation in percent\n",
    "\n",
    "def deviation_in_percent(actual, should):\n",
    "    return 100 * (actual-should) / should\n",
    "\n",
    "deviation_in_percent(14.39, 14.25), deviation_in_percent(13.33, 13.3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "3e0401c8-21fe-493d-bcf4-95408f6b866f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "At  7.100 MHz, ZS6BKW has SWR 1.07\n",
      "At 14.200 MHz, ZS6BKW has SWR 2.21\n",
      "At 18.100 MHz, ZS6BKW has SWR 1.14\n",
      "At 24.920 MHz, ZS6BKW has SWR 2.62\n",
      "At 28.970 MHz, ZS6BKW has SWR 1.68\n"
     ]
    }
   ],
   "source": [
    "# Let us re-calculate the SWR with the values given by the author,\n",
    "# using our software.\n",
    "\n",
    "recalculated_swrs = []\n",
    "\n",
    "for f in LOW_SWR_WANTED_FS:\n",
    "    z_in = compute_antenna_z(f, 14.25, 14.25).input_and_impedance.impedance\n",
    "    z_antenna = cable_transform(z_in, Z_CABLE, f, 13.3)\n",
    "    recalculated_swr = antenna_simulation_driver.swr(z_antenna)\n",
    "    recalculated_swrs.append(recalculated_swr)\n",
    "    print(f\"At {f*1e-6:6.3f} MHz, ZS6BKW has SWR {recalculated_swr:.2f}\")\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "3a71f5f1-2342-4abb-b34b-6f079362d749",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "wire_diameter:   1.16 mm\n",
      "dipole_length_1: 14.365 m\n",
      "dipole_length_2: 14.365 m\n",
      "feedl_length:    13.390 m\n",
      "result:          0.05508\n",
      "SWRs:            [1.122, 1.129, 1.423, 1.524, 1.248]\n",
      "effs:            [0.615, 0.549, 0.59085, 0.5909, 0.6034]\n",
      "simcount:        1076\n",
      "\n",
      "wire_diameter:   2.09 mm\n",
      "dipole_length_1: 14.151 m\n",
      "dipole_length_2: 14.151 m\n",
      "feedl_length:    13.534 m\n",
      "result:          0.03256\n",
      "SWRs:            [1.174, 1.205, 1.389, 1.439, 1.482]\n",
      "effs:            [0.6178, 0.55975, 0.5946, 0.6015, 0.6071]\n",
      "simcount:        1166\n",
      "\n",
      "wire_diameter:   1.67 mm\n",
      "dipole_length_1: 14.268 m\n",
      "dipole_length_2: 14.268 m\n",
      "feedl_length:    13.450 m\n",
      "result:          0.00798\n",
      "SWRs:            [1.096, 1.14, 1.362, 1.414, 1.352]\n",
      "effs:            [0.6173, 0.556, 0.5937, 0.5982, 0.60615]\n",
      "simcount:        1356\n",
      "\n",
      "wire_diameter:   1.83 mm\n",
      "dipole_length_1: 14.295 m\n",
      "dipole_length_2: 14.295 m\n",
      "feedl_length:    13.424 m\n",
      "result:          0.00737\n",
      "SWRs:            [1.107, 1.086, 1.328, 1.449, 1.337]\n",
      "effs:            [0.6179, 0.5569, 0.5943, 0.5995, 0.60675]\n",
      "simcount:        1396\n",
      "\n",
      "wire_diameter:   1.83 mm\n",
      "dipole_length_1: 14.260 m\n",
      "dipole_length_2: 14.260 m\n",
      "feedl_length:    13.449 m\n",
      "result:          0.00405\n",
      "SWRs:            [1.115, 1.124, 1.341, 1.414, 1.363]\n",
      "effs:            [0.61775, 0.5572, 0.5942, 0.59955, 0.60665]\n",
      "simcount:        1526\n",
      "\n",
      "wire_diameter:   1.99 mm\n",
      "dipole_length_1: 14.267 m\n",
      "dipole_length_2: 14.267 m\n",
      "feedl_length:    13.439 m\n",
      "result:          0.00322\n",
      "SWRs:            [1.135, 1.096, 1.323, 1.423, 1.37]\n",
      "effs:            [0.61815, 0.5581, 0.59465, 0.60065, 0.60715]\n",
      "simcount:        1656\n",
      "\n",
      "wire_diameter:   1.98 mm\n",
      "dipole_length_1: 14.254 m\n",
      "dipole_length_2: 14.254 m\n",
      "feedl_length:    13.448 m\n",
      "result:          0.00298\n",
      "SWRs:            [1.138, 1.109, 1.327, 1.415, 1.378]\n",
      "effs:            [0.6181, 0.5582, 0.59465, 0.60065, 0.6071]\n",
      "simcount:        1766\n",
      "\n",
      "wire_diameter:   1.96 mm\n",
      "dipole_length_1: 14.259 m\n",
      "dipole_length_2: 14.259 m\n",
      "feedl_length:    13.445 m\n",
      "result:          0.00294\n",
      "SWRs:            [1.133, 1.107, 1.327, 1.417, 1.372]\n",
      "effs:            [0.61805, 0.558, 0.59455, 0.60045, 0.60705]\n",
      "simcount:        2731\n",
      "\n",
      "wire_diameter:   1.97 mm\n",
      "dipole_length_1: 14.258 m\n",
      "dipole_length_2: 14.258 m\n",
      "feedl_length:    13.445 m\n",
      "result:          0.00293\n",
      "SWRs:            [1.135, 1.107, 1.327, 1.417, 1.374]\n",
      "effs:            [0.61805, 0.55805, 0.5946, 0.60055, 0.6071]\n",
      "simcount:        2986\n",
      "\n",
      "wire_diameter:   1.96 mm\n",
      "dipole_length_1: 14.258 m\n",
      "dipole_length_2: 14.258 m\n",
      "feedl_length:    13.446 m\n",
      "result:          0.00293\n",
      "SWRs:            [1.134, 1.108, 1.327, 1.417, 1.373]\n",
      "effs:            [0.61805, 0.558, 0.59455, 0.6005, 0.60705]\n",
      "simcount:        3341\n",
      "\n",
      "wire_diameter:   1.96 mm\n",
      "dipole_length_1: 14.258 m\n",
      "dipole_length_2: 14.258 m\n",
      "feedl_length:    13.446 m\n",
      "result:          0.00293\n",
      "SWRs:            [1.134, 1.108, 1.327, 1.417, 1.373]\n",
      "effs:            [0.61805, 0.558, 0.59455, 0.6005, 0.60705]\n",
      "simcount:        3476\n",
      "\n",
      "wire_diameter:   1.96 mm\n",
      "dipole_length_1: 14.258 m\n",
      "dipole_length_2: 14.258 m\n",
      "feedl_length:    13.446 m\n",
      "result:          0.00293\n",
      "SWRs:            [1.134, 1.108, 1.327, 1.417, 1.373]\n",
      "effs:            [0.61805, 0.558, 0.59455, 0.6005, 0.60705]\n",
      "simcount:        3546\n",
      "\n",
      "Best antenne found:\n",
      "wire_diameger:   1.96 mm\n",
      "dipole_length_1: 14.258 m\n",
      "dipole_length_2: 14.258 m\n",
      "feedl_length:    13.446 m\n",
      "result:          0.00293\n",
      "SWRs, 3 digits:  [1.134, 1.108, 1.327, 1.417, 1.373]\n",
      "SWRs, 2 digits:  [1.13, 1.11, 1.33, 1.42, 1.37]\n",
      "effs:            [0.61805, 0.558, 0.59455, 0.6005, 0.60705]\n",
      "simcount:        3596\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Another optimisation run, this time to find an antenna\n",
    "# that best reproduces the SWR values as published by Brian:\n",
    "\n",
    "def find_wire_diameter_brian_used() -> float:\n",
    "    brians_swrs = [1.1, 1.1, 1.3, 1.4, 1.4]\n",
    "    global antenna_simulation_count\n",
    "    best_found_thus_far = float(\"Infinity\")\n",
    "\n",
    "    def minimize_me(xs):\n",
    "        global antenna_simulation_count\n",
    "        nonlocal best_found_thus_far\n",
    "        # This \"outer optimization\" only optimizes the dipole length.\n",
    "        dipole_length_1 = xs[0]\n",
    "        wire_diameter = xs[1]\n",
    "\n",
    "        # Run one \"volley\" of antenna simulations,\n",
    "        # which consists of one antenna simulation for each frequency in LOW_SWR_WANTED_FS.\n",
    "        argss = [\n",
    "            (f, dipole_length_1, dipole_length_1, DIPOLE_HEIGHT, wire_diameter) for f in LOW_SWR_WANTED_FS\n",
    "        ]\n",
    "        # Run the simulations of one \"volley\" in parallel, in separate processes.\n",
    "        # This way, the work is distributed over the cores of a multicore computer.\n",
    "        with Pool() as pool:\n",
    "            zin_eff_s = list(pool.map(zin_and_eff_from_args, argss))\n",
    "            # The global count is not accessible from separate processes, so we increment it here:\n",
    "            antenna_simulation_count += len(argss)\n",
    "\n",
    "        # Now that we have the impedances at various frequencies,\n",
    "        # run a separate optimization to find the best common feedline length:\n",
    "        feedline_length, swr_square_sum, swrs = \\\n",
    "            find_best_feedline_length(\n",
    "                LOW_SWR_WANTED_FS,\n",
    "                [zin_eff[0] for zin_eff in zin_eff_s],\n",
    "                brians_swrs\n",
    "            )\n",
    "        # This is the value we'll return:\n",
    "        result = swr_square_sum\n",
    "        # To keep the operator entertained, output the best result found thus far:\n",
    "        if result < best_found_thus_far:\n",
    "            print(\n",
    "                f\"wire_diameter:   {wire_diameter*1e3:.2f} mm\\n\"\n",
    "                f\"dipole_length_1: {dipole_length_1:.3f} m\\n\"\n",
    "                f\"dipole_length_2: {dipole_length_1:.3f} m\\n\"\n",
    "                f\"feedl_length:    {feedline_length:.3f} m\\n\"\n",
    "                f\"result:          {result:.5f}\\n\"\n",
    "                f\"SWRs:            {[round(swr,3) for swr in swrs]}\\n\"\n",
    "                f\"effs:            {[zin_eff[1] for zin_eff in zin_eff_s]}\\n\"\n",
    "                f\"simcount:        {antenna_simulation_count}\\n\"\n",
    "            )\n",
    "            best_found_thus_far = result\n",
    "        return result\n",
    "\n",
    "    # We assume that the dipole length we are looking for will be somewhere\n",
    "    # in the range of 6 to 100 meters.  What we give to the optimizer\n",
    "    # is one half of the dipole length.\n",
    "    o_result = optimize_wrapper(minimize_me, ((13.5, 15.0),(0.5e-3, 5e-3),))\n",
    "    if o_result.success:\n",
    "        best_dipole_length_1 = o_result.x[0]\n",
    "        best_wire_diameter = o_result.x[1]\n",
    "        best_argss = [\n",
    "            (f, best_dipole_length_1, best_dipole_length_1, DIPOLE_HEIGHT, best_wire_diameter)\n",
    "            for f in LOW_SWR_WANTED_FS\n",
    "        ]\n",
    "        with Pool() as pool:\n",
    "            best_zin_eff_s = list(pool.map(zin_and_eff_from_args, best_argss))\n",
    "            antenna_simulation_count += len(best_argss)\n",
    "\n",
    "        best_feedline_length, best_swr_square_sum, best_swrs = \\\n",
    "            find_best_feedline_length(\n",
    "                LOW_SWR_WANTED_FS,\n",
    "                [best_zin_eff[0] for best_zin_eff in best_zin_eff_s],\n",
    "                brians_swrs\n",
    "            )\n",
    "\n",
    "        print(\n",
    "            \"Best antenne found:\\n\"\n",
    "            f\"wire_diameger:   {best_wire_diameter*1e3:.2f} mm\\n\"\n",
    "            f\"dipole_length_1: {best_dipole_length_1:.3f} m\\n\"\n",
    "            f\"dipole_length_2: {best_dipole_length_1:.3f} m\\n\"\n",
    "            f\"feedl_length:    {best_feedline_length:.3f} m\\n\"\n",
    "            f\"result:          {best_swr_square_sum:.5f}\\n\"\n",
    "            f\"SWRs, 3 digits:  {[round(swr,3) for swr in best_swrs]}\\n\"\n",
    "            f\"SWRs, 2 digits:  {[round(swr,2) for swr in best_swrs]}\\n\"\n",
    "            f\"effs:            {[best_zin_eff[1] for best_zin_eff in best_zin_eff_s]}\\n\"\n",
    "            f\"simcount:        {antenna_simulation_count}\\n\"\n",
    "        )\n",
    "        return (best_wire_diameter, best_dipole_length_1, best_dipole_length_1, best_feedline_length)\n",
    "    else:\n",
    "        raise RuntimeError(f\"{o_result}\")\n",
    "\n",
    "repro_swr_wire_diameter, repro_swr_dipole_length_1, repro_swr_dipole_length_2, repro_swr_feedline_length = \\\n",
    "    find_wire_diameter_brian_used()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "eb772f08-7002-4b5e-b1ee-0d7e63fd5689",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3596 simulations thus far in 253.394802 s, so 70.4657402669633 ms/simulation\n"
     ]
    }
   ],
   "source": [
    "intermediate_time = datetime.now(UTC)\n",
    "intermediate_time.strftime(\"%Y-%m-%d %H:%M:%S UTC\")\n",
    "intermediate_duration = (intermediate_time - start_time).total_seconds()\n",
    "print(f\"{antenna_simulation_count} simulations thus far in {intermediate_duration} s, \"\n",
    "      f\"so {intermediate_duration*1e3 / antenna_simulation_count} ms/simulation\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0f554c6c-5919-49a8-8f29-bc9b0254d446",
   "metadata": {},
   "source": [
    "We could stop here. But let us do:\n",
    "\n",
    "## One more optimization\n",
    "\n",
    "Given the above result, I consider it a fairly safe guess that Brian used 2 mm diameter wire\n",
    "in his original work.\n",
    "\n",
    "So let us restart the optimization one more time, this time with that wire\n",
    "instead of the thinner (roughly 1 mm diameter) wire I usually use and I initially used here.\n",
    "\n",
    "Things get a bit hairy at this point...\n",
    "\n",
    "At one point, the algorithm resulted in a bogus solution: Each dipole length 27.73 m, feedline length\n",
    "27.7 m, no SWR any better than 2.  But that result was not reproducible.\n",
    "\n",
    "A \"valid\" run finds the dimensions of the third column of this table:\n",
    "\n",
    "What | original length | my thin length | my thick length\n",
    "-----|-----------------|-----------|----------\n",
    "one dipole half | 14.25 | 14.39    | 14.28\n",
    "feedline, el    | 13.3  | 13.33    | 13.44\n",
    "\n",
    "To see what we've got, I compare SWRs at the optimized frequencies for all versions of the ZS6BKW:\n",
    "\n",
    "- Brian's version as published\n",
    "- my original thin wire best antenna, optimized for minimal SWR\n",
    "- my thick best 2 mm diameter antenna, optimized for minimal SWR\n",
    "- a variant with thick 1.97 mm diameter wire, also optimized for minimal SWR (see below)\n",
    "- my thick reproducing 1.97 mm diameter, optimized to reproduce Brian's values\n",
    "\n",
    "Center freq | Brian's | best thin | best 2 mm thick | best 1.97 mm | reproducing\n",
    "------------|---------|-----------|-----------------|--------------|--------------\n",
    "7.10  | 1.1 | 1.11 | 1.14 | 1.14 | 1.13 \n",
    "14.20 | 1.1 | 1.27 | 1.43 | 1.43 | 1.11 \n",
    "18.1  | 1.3 | 1.29 | 1.45 | 1.45 | 1.33 \n",
    "24.92 | 1.4 | 1.55 | 1.52 | 1.52 | 1.42 \n",
    "28.97 | 1.4 | 1.13 | 1.29 | 1.28 | 1.37\n",
    "\n",
    "It is interesting that the thicker wire results in overall somewhat worse\n",
    "SWR values (assuming all bands are equally important), compared with the original thin solution.\n",
    "\n",
    "It is an unpleasant surprise indeed that my thick 2 mm diameter antenna,\n",
    "**optimized for minimal SWR,** ends up having SWR values that are worse 😯\n",
    "(overall), compared with the 1.97 diameter antenna that was only tuned\n",
    "to reproduce Brian's SWR values, but not tuned for minimal SWR values.\n",
    "\n",
    "To make sure the difference between 2 mm and 1.97 mm does not play a decisive role here,\n",
    "the optimization was repeated with 1.97 mm.  Still, the result was worse, compared with\n",
    "the SWR reproducing antenna.\n",
    "\n",
    "This should not be the case. It invites further investigation.\n",
    "\n",
    "I have been simply grabbing and using an optimization algorithm as is,\n",
    "without investigating futher, without investigating alternatives, and\n",
    "finally, without any fine-tuning by supplying optional parameters.\n",
    "While this lead to results that are, of course, valid antennas,\n",
    "those antennas apparently are not always be the optimal antennas we look for."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "bb44dcac-8843-4893-8a41-a9adc51c765b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dipole_length_1: 47.107 m\n",
      "dipole_length_2: 47.107 m\n",
      "feedl_length:    28.353 m\n",
      "result:          616.11446\n",
      "SWRs:            [3.226, 17.89, 14.714, 12.693, 2.048]\n",
      "effs:            [0.53405, 0.47289, 0.5383, 0.59825, 0.60895]\n",
      "simcount:        3601\n",
      "\n",
      "dipole_length_1: 34.118 m\n",
      "dipole_length_2: 34.118 m\n",
      "feedl_length:    35.518 m\n",
      "result:          586.48480\n",
      "SWRs:            [1.745, 1.683, 16.615, 18.793, 6.007]\n",
      "effs:            [0.5289, 0.56705, 0.5903, 0.59695, 0.59535]\n",
      "simcount:        3621\n",
      "\n",
      "dipole_length_1: 13.089 m\n",
      "dipole_length_2: 13.089 m\n",
      "feedl_length:    14.632 m\n",
      "result:          7.68497\n",
      "SWRs:            [1.438, 1.928, 2.026, 1.931, 3.171]\n",
      "effs:            [0.6143, 0.5762, 0.5904, 0.6059, 0.6044]\n",
      "simcount:        3626\n",
      "\n",
      "dipole_length_1: 13.307 m\n",
      "dipole_length_2: 13.307 m\n",
      "feedl_length:    14.382 m\n",
      "result:          3.24268\n",
      "SWRs:            [1.37, 1.679, 1.847, 1.205, 2.373]\n",
      "effs:            [0.6149, 0.5725, 0.5916, 0.60495, 0.60485]\n",
      "simcount:        3776\n",
      "\n",
      "dipole_length_1: 13.834 m\n",
      "dipole_length_2: 13.834 m\n",
      "feedl_length:    13.847 m\n",
      "result:          1.89699\n",
      "SWRs:            [1.226, 1.476, 1.629, 1.629, 1.909]\n",
      "effs:            [0.6166, 0.56365, 0.5936, 0.6022, 0.60625]\n",
      "simcount:        3826\n",
      "\n",
      "dipole_length_1: 14.266 m\n",
      "dipole_length_2: 14.266 m\n",
      "feedl_length:    13.428 m\n",
      "result:          0.44188\n",
      "SWRs:            [1.142, 1.102, 1.3, 1.432, 1.367]\n",
      "effs:            [0.61815, 0.55815, 0.5947, 0.60075, 0.6072]\n",
      "simcount:        3906\n",
      "\n",
      "dipole_length_1: 14.285 m\n",
      "dipole_length_2: 14.285 m\n",
      "feedl_length:    13.410 m\n",
      "result:          0.43650\n",
      "SWRs:            [1.14, 1.085, 1.283, 1.449, 1.358]\n",
      "effs:            [0.61825, 0.558, 0.59475, 0.60075, 0.60725]\n",
      "simcount:        4196\n",
      "\n",
      "dipole_length_1: 14.285 m\n",
      "dipole_length_2: 14.285 m\n",
      "feedl_length:    13.410 m\n",
      "result:          0.43650\n",
      "SWRs:            [1.14, 1.085, 1.283, 1.449, 1.358]\n",
      "effs:            [0.61825, 0.558, 0.59475, 0.60075, 0.60725]\n",
      "simcount:        4461\n",
      "\n",
      "dipole_length_1: 14.285 m\n",
      "dipole_length_2: 14.285 m\n",
      "feedl_length:    13.410 m\n",
      "result:          0.43650\n",
      "SWRs:            [1.14, 1.085, 1.283, 1.449, 1.358]\n",
      "effs:            [0.61825, 0.558, 0.59475, 0.60075, 0.60725]\n",
      "simcount:        4686\n",
      "\n",
      "Best antenne found:\n",
      "dipole_length_1: 14.285 m\n",
      "dipole_length_2: 14.285 m\n",
      "feedl_length:    13.437 m\n",
      "result:          0.76626\n",
      "SWRs, 3 digits:  [1.14, 1.433, 1.452, 1.523, 1.286]\n",
      "SWRs, 2 digits:  [1.14, 1.43, 1.45, 1.52, 1.29]\n",
      "efficiencies:    [0.61275, 0.54585, 0.5885, 0.58655, 0.60105]\n",
      "simcount:        4691\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Try to optimize for thick wire:\n",
    "optimize(2e-3)\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ff666849-2bc0-4639-812c-1ec98e4792e0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dipole_length_1: 14.388 m\n",
      "dipole_length_2: 14.388 m\n",
      "feedl_length:    13.310 m\n",
      "result:          0.62629\n",
      "SWRs:            [1.126, 1.063, 1.195, 1.645, 1.39]\n",
      "effs:            [0.61865, 0.557, 0.59495, 0.60055, 0.6074]\n",
      "simcount:        4696\n",
      "\n",
      "dipole_length_1: 14.294 m\n",
      "dipole_length_2: 14.294 m\n",
      "feedl_length:    13.402 m\n",
      "result:          0.43271\n",
      "SWRs:            [1.134, 1.08, 1.275, 1.459, 1.35]\n",
      "effs:            [0.61825, 0.55775, 0.5947, 0.60055, 0.6072]\n",
      "simcount:        4701\n",
      "\n",
      "dipole_length_1: 14.285 m\n",
      "dipole_length_2: 14.285 m\n",
      "feedl_length:    13.411 m\n",
      "result:          0.43207\n",
      "SWRs:            [1.135, 1.088, 1.283, 1.449, 1.353]\n",
      "effs:            [0.6182, 0.55785, 0.59465, 0.60055, 0.60715]\n",
      "simcount:        4846\n",
      "\n",
      "dipole_length_1: 14.285 m\n",
      "dipole_length_2: 14.285 m\n",
      "feedl_length:    13.411 m\n",
      "result:          0.43207\n",
      "SWRs:            [1.135, 1.088, 1.283, 1.449, 1.353]\n",
      "effs:            [0.6182, 0.55785, 0.59465, 0.60055, 0.60715]\n",
      "simcount:        4896\n",
      "\n",
      "dipole_length_1: 14.287 m\n",
      "dipole_length_2: 14.287 m\n",
      "feedl_length:    13.409 m\n",
      "result:          0.43198\n",
      "SWRs:            [1.135, 1.087, 1.281, 1.451, 1.352]\n",
      "effs:            [0.6182, 0.5578, 0.5947, 0.60055, 0.60715]\n",
      "simcount:        4941\n",
      "\n",
      "dipole_length_1: 14.288 m\n",
      "dipole_length_2: 14.288 m\n",
      "feedl_length:    13.408 m\n",
      "result:          0.43198\n",
      "SWRs:            [1.135, 1.086, 1.28, 1.452, 1.352]\n",
      "effs:            [0.6182, 0.5578, 0.5947, 0.60055, 0.60715]\n",
      "simcount:        4961\n",
      "\n",
      "dipole_length_1: 14.288 m\n",
      "dipole_length_2: 14.288 m\n",
      "feedl_length:    13.408 m\n",
      "result:          0.43198\n",
      "SWRs:            [1.135, 1.086, 1.28, 1.452, 1.352]\n",
      "effs:            [0.6182, 0.5578, 0.5947, 0.60055, 0.60715]\n",
      "simcount:        5001\n",
      "\n",
      "Best antenne found:\n",
      "dipole_length_1: 14.288 m\n",
      "dipole_length_2: 14.288 m\n",
      "feedl_length:    13.434 m\n",
      "result:          0.75240\n",
      "SWRs, 3 digits:  [1.139, 1.429, 1.447, 1.521, 1.279]\n",
      "SWRs, 2 digits:  [1.14, 1.43, 1.45, 1.52, 1.28]\n",
      "efficiencies:    [0.61275, 0.5458, 0.5885, 0.58655, 0.60105]\n",
      "simcount:        5006\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(np.float64(14.288195054043397),\n",
       " np.float64(14.288195054043397),\n",
       " np.float64(13.434063173319753))"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Try to optimize for thick wire, this time even giving a head start:\n",
    "optimize(1.97e-3, min_half_dipole_length = 14.2, max_half_dipole_length = 14.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "d2264244-5261-4a55-9c77-86b0b9fad68a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5006 simulations thus far in 365.575831 s, so 73.02753316020775 ms/simulation\n"
     ]
    }
   ],
   "source": [
    "intermediate_time = datetime.now(UTC)\n",
    "intermediate_time.strftime(\"%Y-%m-%d %H:%M:%S UTC\")\n",
    "intermediate_duration = (intermediate_time - start_time).total_seconds()\n",
    "print(f\"{antenna_simulation_count} simulations thus far in {intermediate_duration} s, \"\n",
    "      f\"so {intermediate_duration*1e3 / antenna_simulation_count} ms/simulation\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "62315c11-fc43-451f-bb89-2ddbeb8b100e",
   "metadata": {},
   "source": [
    "## SWR diagram\n",
    "\n",
    "Let us now draw an SWR diagram of the antenna with feedline over its intended range.\n",
    "\n",
    "This returns to using my original \"thin\" 0.75 mm² cross-section wire."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "9e39f4fc-2807-4fcb-bd8e-fa9adafe4f41",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Frequency of best SWR and that SWR:\n",
      "            swr\n",
      "7.056  1.074121\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAARTCAYAAACZESueAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAA+pFJREFUeJzs/Xm8ZVV54P8/5+xz7q0qoIoSAVFAIhoEnEAQ/YoIqEQLjFObaOzkl8ShWzGJaLdT/CYS41djzNS+EhONr25tMWqMrRGJgjKoURAn2iE4ICKKiEoVpVTVvWfYvz/uXWvvc+455+5hrb2G/Xm/XnkRi1unDrv22nut9TzreTppmqYCAAAAAACM6rr+AgAAAAAAxIgFNwAAAAAAFrDgBgAAAADAAhbcAAAAAABYwIIbAAAAAAALWHADAAAAAGABC24AAAAAACxgwQ0AAAAAgAUsuAEArbR37175xS9+4fprAACAiPVcfwEAgL8Gg4EkSSLd7sb92bvuukt6vZ4cdNBBE7+epqncddddkiSJHHLIIZv+vp///OcyGo1ERKTT6cjWrVtlaWnJwn+NyHA4lJe85CXyv//3/5Y0TeWMM86QK664YsPP7d+/X1ZWVjb9vO3bt8+8Nouu2ywrKyuyvLw889/lr4+ISL/f33DNp39eRGZe+3379snq6qp0Oh1J03Tm91c/c8ghh0iSJBP/Tl2XHTt2SKfTKfTfZsKBAwf0nwsAQEiIcAMAJtx5553yile8Qu573/vKQQcdJDt27JAHPehB8id/8ifyox/9SP/cmWeeKSeffPKG3/+FL3xBdu7cKUcfffTEQlFE5Oabb5ZDDz1UXvWqV+lfO+WUU+Swww6T4447Tu573/vK1q1b5dhjj5VXv/rVcuDAAaP/be985zvlrW99q1x11VWyd+/emYttEZE//uM/luOOO27u/+3cuVN27twp3/rWt/TvKXrdlF/84hfyyle+Uo4++mg59NBD5cgjj5Q/+IM/kDvvvHPi5/LX57jjjpPDDz9cDj30UHnqU58qN9xww4bPPeWUU+Qxj3nMhl//2Mc+JocffricffbZ8nd/93eyc+dOufzyyzf83GMe8xjZuXOn/NM//dOGf/fUpz5Vjj76aBkOhzOvmy2vec1r5LDDDmv0zwQAwAQW3AAAbWVlRc466yz5X//rf8k//MM/yN133y27d++Wiy++WN7+9rfLn/3Zn+mfPffcc+WWW26R7373uxOfceWVV8qOHTtk79698sUvfnHDv1O/N+/BD36w7NmzR/bs2SP79u2Tiy66SN7whjfIi170IqP/fZ/97GflqKOOklNPPXXhz73pTW/S32f6/9785jeLiMjxxx8vRx99tIiUu24iInfffbecc845cvXVV8tHPvIR2b9/v3z3u9+VX/7lX5ZPfvKTG77P9PW57rrr5JZbbpGzzjpLbr/99k3/uy+55BL51V/9VTnttNPkmmuukac+9akikv19KLt375avfOUrsmPHjg3/bjAYyL//+7/LmWeeKf1+f9M/EwAAsOAGAORcfvnl8vWvf13+6I/+SJ74xCdKv9+XXq8nz3jGM+RLX/qSPOxhD9M/+7jHPU5ERK666qqJz7jyyivlyU9+stzvfvfbsGi76qqrpNvtytlnnz33OywvL8tFF10kj3jEI+Td73637N+/v9R/w/79+yVN04lfG4/HsmfPHvnxj38sS0tLevG6urpa6rM/97nPyYUXXigHH3ywfPjDH5aDDz5YRMpdNxGRP/qjP5KbbrpJPvrRj8opp5wiIiIHHXSQXHjhhfLMZz5z0+9xwgknyCtf+UrZu3evfOITn1j4s3/zN38jv/mbvynnn3++fPzjH5cdO3bIiSeeKPe+9703/N1dffXV0ul05MUvfvGGv7vrrrtO7r77bv33Ps/q6qq+vnfdddfcaPj+/fvlrrvu0v97OBzO/Nl9+/bp9P78xsd4PN7ws2mayr59+2r9eWV/tuh/LwCgnVhwAwA0df73nve854Z/d/jhh8tv//Zv6//92Mc+VpIkmViYqSjoOeecI2efffbMBfepp54qhx566Kbf5bjjjpPBYCA//elPN/3Z/fv3y0tf+lI54ogjZPv27bJ161a54IIL5D/+4z9EROSWW26R4447Tj7+8Y/r//+4446TD3zgA5t+tnLbbbfJM57xDBkMBvLOd75zIp2+zHVbWVmRt73tbfLrv/7rcthhh8l4PK6UOq9+z6yz2sqrX/1qeclLXiLPfe5z5QMf+IBs2bJF/7tzzjlHvvzlL8uePXv0r1155ZVy6qmnylOe8pQN2QvzshOmvfOd79TX95hjjpHl5WV5yEMesiFF/b//9/8u97nPfWT37t3yn/7Tf5Lt27fLli1b5Pzzz5ef/OQn+ude+MIXytvf/nYZjUYTaf233HKL/pnrr79ezjvvPNmyZYsceuihcq973Uv++I//eOJIQ9E/r+zPFv3vBQC0VAoAwLqbb745XV5eTk899dT0m9/85qY/f/rpp6dHHXWU/t+f+tSnUhFJv/vd76bvete70m3btqUrKytpmqbpjTfemIpI+vKXv3ziM44//vj0oQ996MSvjcfj9OSTT063bduWrq6ubvo9zjvvvPTQQw9NP/rRj6aDwSC96aab0kc96lHpzp0705tvvln/3FOe8pT0+OOP3/Tzpq2srKSPfOQjUxFJX/Oa12z492Wu27XXXpuKSPqKV7wiffKTn5wuLy+nSZKkxx57bPpXf/VX6Xg8nvj5448/Pn3Qgx6U7t69O929e3d6++23p5dffnl6v/vdL33wgx+cHjhwYObPP+95z0tFJH31q18983u84x3vSEUk/fCHP6x/7aSTTkpf/vKXp8PhMN2+fXv69re/Xf+7s88+O925c2c6Go02vV55d911V/onf/InabfbTT/1qU/pX7/wwgvTbdu2pb/1W7+VfvrTn05Ho1H6+c9/Pj3ssMPS5zznOROf8bKXvSxNkmTm53/6059Ol5eX02c/+9npD37wg3Q0GqWf/OQn08MPPzz9L//lv1T688r8bNH/XgBAO7HgBgBMeP/735/e6173SkUkfeADH5g+61nPSt/61remP/rRjzb87Ctf+cpURNIbb7wxTdM0fe1rX5see+yxaZqm6a233pqKSHrNNdekaZqmb33rW1MRST/+8Y9PfMb0gvKb3/xm+nu/93upiKSve93rNv2+V1xxRSoi6d/8zd9M/Pott9yS9vv99AUveIH+taoL7uc+97mpiKQXXHDBhgWxUvS6/Z//839SEUk7nU76/Oc/P92zZ0+6b9++9PWvf30qIunFF1888fPHH3982u120x07dqQ7duxIDzrooFRE0hNOOCH98pe/vOF7HH/88amIpCKS/vqv//rc/6bvfe97qYikL3nJS9I0TdPbb789FZH0sssuS9M0TXft2pU++9nPTtM0Tffv358uLy+nT3va0wpfszRN0wMHDqR79uxJd+/enR5//PETfxcXXnhhKiLpBz/4wYnf8/KXvzxNkiTdv3+//rVFC+5TTz01feADH7hhY+atb31r2u129YZLmT+vzM8W/e8FALQTKeUAgAnPfOYz5dZbb5VrrrlGnv/850un05GXv/zl8oAHPEDe8573TPysSi9W6cZXXnmlnHPOOSIicvTRR0+c477yyitlaWlJzjzzzA1/5je+8Q1dpfyEE06Qt7zlLfKHf/iH8prXvGbT73vNNdeIiMiTn/zkiV8/9thj5WEPe5hcffXV5S7AlL/927+Vd7zjHfLABz5QLrnkkrntsIpet3T9fPl97nMf+du//VvZsWOHbN26VV796lfLYx7zGPmzP/uzDSnm+aJpv/jFL+THP/6xnH766XLmmWfK5z73uQ3f5f73v7886lGPkn/+53+Wf/zHf5z5fe973/tu+Pvp9Xr67+fss8/WZ7w/+9nPysrKyqbp5CJrbd9+7/d+T4466ijZtm2bHHPMMXLcccfJ9773Pbnppps2/PwTnvCEif994oknymg0ku9///ub/ll33HGHfOlLX5LHP/7xsrKyIj//+c/l5z//uezdu1dOPfVUGY/HG65PmT+vyM+W/e8FALQLC24AwAa9Xk/OOusseelLXyrvec975Dvf+Y7c5z73kec+97kTZ1jPPPNMWVpakquuukr2798v1113nV5wi4g+x52mqVx99dVyxhlnyLZt2zb8eWpBedddd8mdd94pv/M7vyN/9md/Jv/2b/+26XdVZ5CPOOKIDf/uiCOOkN27d1e4Ams+9alPyUUXXSTbt2+XD33oQ7J9+/aFP1/kuh1++OEiInL66advqPb96Ec/Wvbt2zfRbmyWI444Qt72trfJcDiUP/qjP9rw7w866CC5/PLL5cwzz5QXvOAF8nd/93czP+fcc8+Vr371q/LTn/5UrrzySjnttNP0mfCzzz5bbr/9dvnGN76hF95FFtzPfvaz5b3vfa+85z3vkQMHDsjevXtlz549cvLJJ28oKLZt2zZdeE5R/3vv3r2b/lnqmr7jHe+Qo48+Wo455hg55phj5Nhjj5XzzjtPduzYIXfffXelP6/oz5b57wUAtA8LbgDApo444gj5jd/4DTlw4MBE7+etW7fKox71KLn66qvlM5/5jKysrGxYcF933XXy+c9/Xn7yk59sWuFaRGTnzp3ytre9TR74wAfK7/7u72668FIL2Ntuu23Dv7vttttmLsSLuPXWW+WZz3ymDIdDueSSS+SEE04o/RmzrtuDH/xg6fV6Mxdjg8FARNYW7pvZunWrHHnkkXLj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ySe68cYbNXjwYJ155pmFHAoAAAAAADlVsIA7EoloxIgRCofDOvroo7Vp06ZCDaVTSSQSuuWWWzRixAgdffTRmjlzpv27Ofvss/Wzn/3Mfu0111yjvn37asOGDfbfHTRokBYvXqz33ntPffv21bPPPqsJEyaof//+eu655wrxIwEAAACAkQp2LFggENC6desUCAQ0b948rVu3Lu/fM5FIqCEay/v3aSsU8HX4DPB7771Xt99+ux588EEdcsgh+utf/6orr7xSDz30kL761a9q0aJF+v73vy9J+uMf/6j6+notXbpUs2bN0urVq7V27VoNGzZMn3zyibZs2aLvfe97uvPOOzVo0CD16tUrnz8mAAAAAMChYAG3x+NRIBA4oN+zIRrT0Vcf+Czv2usnqaykY7/q1atX6+tf/7rGjx8vSRo4cKBmzJghSRozZoxuuukmNTQ0qKmpSWvWrNH8+fPtgHvZsmUaNGiQevbsqU8++USS9POf/1ynnnpqfn4wAAAAAEBGBQu4v4ympiY1NTXZX9fX10uSotGootFoymubm5sltWS14/G4JNn/f6DF4/EOf+9vfetbOuOMMzRz5kydeuqpGjdunKqqqhSPxzVy5Eh5vV698sor2rNnjwYPHqxvfetbmjFjhuLxuJYuXarRo0enfL9jjz026/eOx+NKJBKKRqPy+Xw5+Xnxz7Ou57bXNVAMuH5R7LiGUcy4flHMiuX63Z/xFVXAfdNNN+m6665r9/jixYtVVlaW8pjf71efPn20d+9e+xeSSCT02vxRB2SsTtGGvapv7FhJ+YgRI7R8+XItWLBAd999t2bOnKk5c+boyiuvlCTV1tbqueeeUzgc1gknnKCBAwfq888/11tvvaWXXnpJt912m+rr67Vnz56W7x2N2jcm0olEImpoaNDy5cvtmxToPJ5//vlCDwH40rh+Uey4hlHMuH5RzDr79RsOhzv82qIKuH/4wx9q/vz59tf19fXq16+fJk6cqK5du6a8ds+ePfroo49UXl6uUChkP97tgI32yxs2bJiGDRsmSfrTn/6k0047TfPmzVNNTY3GjRunJUuWKBwO69prr1VVVZVOOOEEPfDAA9q5c6cmTZqkrl27qkuXLpKkioqKdr8bp8bGRoVCIZ188skqLS09ID8f9i0ajer555/XhAkTDvjWC+CfxfWLYsc1jGLG9YtiVizXb7aEZltFFXAHg0EFg8F2jwcCgXb/Qfz+lh/N4/HI6y2e48ZvuukmHXfccRozZoz8fr82b96sYDCoyspKeb1ejR07VjfddJMkafTo0fZj1113XUpjNOtn9nq9WX9+r9dr76fvzBe1qfjvgmLG9YtixzWMYsb1i2LW2a/f/Rlb8USihpg0aZJ+9rOfqXv37qqsrNTNN9+sxx9/XOXl5ZKk448/Xj6fT0OGDFG3bi35+jFjxqixsVFjxowp4MgBAAAAAE4FzXCfeuqpev/991VXV6fGxkYNGDBAkvT3v/+93Z5sUwwbNkyLFy9WU1OTIpGIKioqUp4PBoNav369SkpK7MdGjBihTZs2qbKy0n7syCOP1KZNmzgKDAAAAAAKpKAB969//euUruMW555rU2Uqn5ekPn36pHzt9XrVt2/flMf8fn+7xwAAAAAAB05BA+5+/foV8tsDAAAAAJA37OEGAAAAACAPCLgBAAAAAMgDAm4AAAAAAPLAtQG3x+ORJCUSiQKPpHPj9wMAAAAA+eHagNvv9ysejyscDhd6KJ2a9fvpzAfLAwAAAEAxKmiX8nzy+XzavXu3PvvsM3m9XpWVldlZb7RktsPhsD799FNVVlbK5/MVekgAAAAA4CquDbglaffu3Ro4cKA+/fTTQg+l06qsrGx3rjcAAAAA4J/n6oBbknr37q2amhpFo9FCD6XTCQQCZLYBAAAAIE9cH3BLLeXlBJYAAAAAgAPJtU3TAAAAAAAoJAJuAAAAAADygIAbAAAAAIA8KOo93IlEQpJUX1/f7rloNKpwOKz6+nrOmEbR4fpFMeP6RbHjGkYx4/pFMSuW69eKP614NJuiDrh3794tSerXr1+BRwIAAAAAMMnu3bvVrVu3rK/xJDoSlndS8XhcW7duVUVFhTweT8pz9fX16tevnzZt2qSuXbsWaITAl8P1i2LG9YtixzWMYsb1i2JWLNdvIpHQ7t27ddBBB8nrzb5Lu6gz3F6vV3379s36mq5du3bq/1hANly/KGZcvyh2XMMoZly/KGbFcP3uK7NtoWkaAAAAAAB5QMANAAAAAEAeuDbgDgaDuuaaaxQMBgs9FGC/cf2imHH9othxDaOYcf2imLnx+i3qpmkAAAAAAHRWrs1wAwAAAABQSATcAAAAAADkAQE3AAAAAAB5UNTncKfz3e9+V2+//XbKYxMmTNANN9xQoBEBme3cuVO/+c1vtGDBAo0YMUI///nP272mvr5eN998s1599VV169ZNM2fO1JlnnlmA0QKpwuGwHn30UT3yyCOqrq7WY4891u41o0aNavfYf/7nf+rb3/72gRgikNHatWt17733as2aNerZs6emTp2qb3/72/J4PPZrEomE7r//fj355JOKRCKaOHGi5s2bp5KSkgKOHJA+/vhj3XPPPVq1apUqKio0adIkzZo1S35/cmk/d+5cvfHGGyl/b/To0br55psP9HCBFJFIRL/5zW/03HPPac+ePfra176mOXPmqH///imvW758ue666y5t375dgwcP1hVXXKGampoCjfrLc13A/Y9//EODBg3SBRdcYD/Ws2fPAo4ISG/btm0aPny4zjrrLHk8Hr377rvtXhOPxzV58mRFIhH96Ec/0vr16zV9+nTde++9Ou+88w78oAGHI488UuPHj1dVVZXeeuuttK9ZsWKFfvnLX+q4446zH2s7oQIH2ksvvaSLL75Ys2fP1mmnnab33ntPF1xwgd5++23deOON9uuuvfZa/eIXv9Ctt96qiooKff/739eqVavS3lwCDpQNGzZowoQJuuCCC3TZZZdp27ZtuuKKK/Tiiy/qt7/9rf26tWvXauDAgbrooovsx6qqqgoxZCDFrFmzVF1drfPOO09+v1/33nuvjjvuOL355pvq16+fJGnp0qWaOHGiLr/8cp177rm64447dOKJJ+rtt99WRUVFgX+C/eO6LuUnnXSSxo8fr2uvvbbQQwGyikQiisViCoVCmjFjhvbs2aOFCxemvObpp5/W1KlTtWHDBh1yyCGSpB/84Ad6+OGHtWnTJnm97ApB4XzxxRfq1q2brrrqKj3xxBNpbxp5PB49//zzGj9+fAFGCKQXDocVCoVSstm33nqrrrnmGn3xxRfyer3atWuX+vTpozvvvNO+ib9s2TKNHTtWb731loYMGVKo4cNwTU1N8nq9CgQC9mNPPfWUpk6dqu3bt6tXr16SpPHjx2v48OH66U9/WqihAmmFw2GVlZXZX0ciEZWXl+t//ud/7ITSiSeeqH79+tk3OMPhsGpqanT11VfrsssuK8SwvzRXrtafeOIJjR49WjNmzNDDDz8sl91TgEuUlJQoFAplfc2SJUs0ZMgQO9iWpClTpmjr1q1655138j1EIKtu3bp16HXXXnutxo4dq/PPP18vvfRSnkcF7FtZWVlKsC1JXbp0UTQaVTwelyS9/PLLampq0umnn26/5uSTT1ZlZaX+8pe/HNDxAk7BYDAl2JZarl+pJXBxeuaZZzRmzBhNnz5dDzzwAGtidArOYFuSXnvtNcViMQ0ePFhSS3D9+uuvp3z+lpWVafz48UX5+eu6gLt3796aOXOmfvSjH2nUqFGaN2+eLrzwwkIPC/hSNm7cqIMOOijlMevrjRs3FmJIwH455phjdP755+uKK65Qz549NW7cOD3wwAOFHhaQIhwO67bbbtNpp51m74HduHGjfD6fnS2UJK/Xqz59+vD5i04lHo/rpz/9qWpra9W3b1/78Z49e+rcc8/VVVddpZNOOkmXX365vvOd7xRwpEDS66+/rlGjRunoo4/WmWeeqQULFqi2tlaStGnTJsXj8bRr4GL8/HXdHu5HHnlEwWBQUkspzYABA3T66afrkksuse+aAMUiGo22uwtoZcWj0WghhgTslzfeeMP+TJ4wYYK8Xq/mz5+v8847r12GESiEWCymc845R+FwWHfddZf9eDQaVUlJSbvrNBQK8fmLTuXSSy/Vm2++qVdffTXl8QcffDBlTXzUUUdpwoQJmjdvnoYPH16IoQK2o446Srfffrvq6up03333ac6cOTr22GN1yCGH2J+x1vVrKdbPX9dluNv+hxk3bpwk6e9//3shhgP8U6qqqrRz586Ux3bs2CFJ6tGjRyGGBOyXtp/J48eP165du/Txxx8XaERAUiwW07nnnquVK1fqhRdeUO/eve3nqqqq1NDQoMbGxpS/s2PHDj5/0Wlcfvnldrfno446KuW5tp+/Y8aMkc/na3eaD1AI3bp106hRo3TaaafpySefVElJiX7xi19ISjb3S7cGLsbPX9cF3G1t375dklReXl7gkQD7b9iwYXr77bdT7uatWLFCfr9fgwYNKuDIgC/nk08+kdR+/xZwoMXjcc2cOVMvvviili5dqsMPPzzl+WHDhkmSVq5caT+2bds2bd68WUOHDj2gYwXSueKKK/SrX/1Kixcv1ogRI/b5+rq6OsViMdbE6HR8Pp+qq6tVV1cnqaV0vE+fPimfv1LLGrgYP39dFXB/8MEHKU3S9uzZo3nz5qm6utrOdAPF5Oyzz1ZTU5N9x2/37t269dZbNXXqVFVWVhZ2cMA+/PnPf9Yrr7xif71hwwbdcMMNGjdunKqrqws4MpguHo/rvPPO07Jly7Rs2TINGDCg3WsGDRqkkSNH6sc//rGam5slSddff7169+6tb3zjGwd6yECKq666SnfddZcWL16skSNHtnt+w4YNeuCBB+wmgOFwWHPnzlX37t01adKkAz1cwNbQ0KD//u//TkkmPfPMM1q5cmXKZ+v555+v++67T1u2bJEkPfnkk1q7dq3OP//8Az7mf5ar9nD37t1by5cv1yWXXKK+fftq/fr1+trXvqbFixcX3XltMMPkyZO1a9cuffjhh4rFYho1apTKysr0wgsvSJIOPvhgPfroo5o1a5buvvtu1dXV6dhjj03ZZwgUygUXXKA1a9Zo8+bN2rFjh0aNGiVJevbZZ1VVVaWvfOUruvjii7V69Wr16NFDH374oc444wzdcccdBR45TLdgwQI9/PDDOuyww3TOOeekPPf000+rpqZGUktfmClTpqh3794qLS2V1+vVk08+SYUGCmrVqlX68Y9/rJqaGl1yySUpz919990aNmyYqqurtXLlSl122WXq27evNmzYoIEDB2rx4sXq3r17gUYOtGx1+Pzzz3XQQQeppqZGu3btUkNDg26++WbNmDHDft3VV1+tDz74QAMGDFC/fv20efNm3XnnnTruuOMKOPovx3XncEvS3r179dFHH6mmpkY9e/Ys9HCAjP72t7+1a/7g8/nafZg0NTXp3XffVdeuXdW/f/8DOUQgo3/84x/avXt3u8dra2tTjqzZsWOHtm3bpsMOO8w+ugYopB07duiDDz5I+9zQoUPb7X197733FIlEdNRRR9ldzIFC2bNnj9asWZP2uaOPPlpdu3a1v25oaNCHH36oPn36UFmETiUajer9999XeXm5+vbtm/GzdevWrdq+fbsGDBhQtAlUVwbcAAAAAAAUmqv2cAMAAAAA0FkQcAMAAAAAkAcE3AAAAAAA5AEBNwAAAAAAeUDADQAAAABAHhBwAwAAAACQBwTcAAAAAADkQfoTxgEAMNzixYu1c+fOdo9PnTpVgUCgACMqLr/73e80efJkde3aNeXxvXv36o9//KO8Xq/OOusseTyelOcXLFigxsZGTZgwQT169LBff8opp6hXr14pr122bJmCwaCOP/74vP88AAB8GZ5EIpEo9CAAAOhshg8frvr6eg0bNizl8fvvv19lZWUFGlVxePPNNzVmzBjV1dW1uzmxYcMG9e/fX5K0ZMkSnXLKKfZza9as0THHHKNEIqHXXntNo0aNsl+/dOlSjRkzJuXfGj9+vHr27KnHHnss7z8TAABfBhluAAAymDhxou688852jz/99NOqra2Vx+PRqlWrdMghh2jo0KGSpB07duj1119XMBjUsGHDVFVV1e7vr169Whs2bNCRRx6pmpoaLVy4UFOmTFEoFNKWLVv0+uuva+rUqfbrd+/erUWLFtmvsWT7XnV1dfrLX/6iadOm6b333tO6det0xBFH6Ktf/Wq78ezcuVNvvPGGgsGgRo0apVAopHg8rt///vc66aSTdPDBB9uvjcVieuKJJ9o97rRw4UJNnDgxayXAySefrP/93/9NCbjvu+8+nXzyyXrxxRcz/r1sli1bpk8++aTd4+my4wAAHAgE3AAA7KcLL7xQtbW1eu+99zR06FCdeeaZGjp0qO655x798Ic/1HHHHadEIqG//e1v+vWvf61p06bZf/eSSy7Rfffdp5NOOknr1q3TwIED9ac//UmbNm1S3759tXLlSs2cOTMl4N6yZYvOPvts+zWS9vm93n33XZ199tl65JFHtGXLFvXu3VsvvPCCrrvuOl1++eX2v3333Xfrv/7rvzR48GCVl5dr+/bteuqppzRw4EDdc889euWVV/TLX/7Sfv2f//xnnXvuudq6dWvG38/ChQt10UUXZf0dzp49W//+7/+uXbt2qbKyUk1NTfrtb3+r22677UsH3K+88opWr16d8nt7+eWXtXz5cgJuAEBBEHADAJDBBx98kFKu3L9/f40cOVKStHXrVq1evVoVFRWSpBUrVujyyy/Xq6++qkGDBkmSFi1apLPPPltjx45VdXW1XnrpJd11111asWKFamtrFY1GNWnSpP0eV0e+l2XIkCF65plnJEn/93//p9mzZ2vu3LkKhUJ65ZVX9L3vfU+///3v7QB//fr12rNnj6SWGwtz587VLbfcomAwKKmlpH7KlCnq0aNH2rF9+umnWrVqlU499dSsP8PAgQNVW1urRx55RBdddJGefvpp9erVK+N+7BdeeKFd9nr79u3q2bOn/fWVV15p/3nv3r068cQTNXnyZJ144olZxwIAQL4QcAMAkMH69eu1YMEC++vRo0fbAfesWbPsYFuSHnzwQQ0YMEDvvvuu3nnnHSUSCSUSCUWjUf31r3/VN77xDT3++OMaO3asamtrJUmBQECXXnqpli5dul/j6sj3svzHf/yH/ecxY8aoqalJGzdu1JFHHqmHHnpII0eOTMmmW/urpZYGcXPmzNEf/vAHTZs2TXV1dVq4cKH+8Ic/ZBzbokWLNHz48JSgP5PZs2frjjvu0EUXXaT77rtPs2fPzvjal19+We+//37KY5999lna1yYSCZ133nlqaGjQY489Jq+XQ1kAAIVBwA0AQAaZ9nBLUk1NTcrXGzZs0BdffKEnnngi5fEpU6aovLxckvTxxx/rsMMOS3neGeB2VEe+l8W5r9vKUjc2NtrjGThwYMbvU1paqn/913/V/fffr2nTpunhhx9Wr169NHHixIx/Z+HChTrttNM69HOcddZZmjt3rp5++mm9/PLLeuSRR1RfX5/2tVdffXXapmnp3HjjjXr++ee1YsUKdevWrUNjAQAgHwi4AQD4EtoeZ9W1a1cdfvjhWTtm9+jRQ59//nnKY22/9nq9isfjKY9ZAfL+fK+OqKys1I4dO7K+5sILL9TQoUO1efNmPfDAA5o5c2bGjHEkEtHzzz+vq6++ukPfv7y8XDNmzNCsWbP0zW9+U7169coYcHfUM888o+uvv17PPPNM2gZxAAAcSNRYAQCQA5MnT9ayZcv07rvvpjxeV1enSCQiSTrppJO0ZMkS7d69237+qaeeSnn9wQcfrIaGhpSmZG1LzjvyvTpi4sSJeuGFF7R582b7sXg8nhKEH3PMMaqtrdWcOXO0Zs0azZo1K+O/9+KLL6qyslJDhgzp8BguvvhiTZ48WZdeemmH/04ma9eu1TnnnKOf/OQnKWX1AAAUChluAABy4Dvf+Y6eeuopff3rX9fcuXNVU1Oj1atX69lnn9WqVatUUlKic889V7fffrtOOeUUzZ49W++88067LPWxxx6rwYMHa9q0aZo1a5bef/99Pfroo/v9vTo65scee0zHH3+85syZo7KyMj3++OO64YYbUsq3L7zwQv3bv/2bxowZo8MPPzzjv7dw4UJ985vf7PgvTS1N3XJ1jvY555yj3r17q1+/fin/JseCAQAKhQw3AABpTJo0yW5u1ta//Mu/6NBDD015zOfzacGCBfrVr36lbdu2acWKFRo4cKBWrVplN1cLBAJavny5Tj/9dL3xxhs6+OCD9eyzz7b7d5YtW6bx48frtddeU58+fbRkyRJNnz5dZWVlHf5e1dXVmj59unw+n/1vB4NBTZ8+Xd27d5ck+f1+LVq0SD/5yU/0/vvva926dbrlllva7ZU+44wzJEnnn39+1t/ZokWL9rl/u7y8XNOnT0/pLu5UUVGR8rz1+nQB89ixY3XCCSfYXx9//PGqra3VggULUv5XV1eXdUwAAOSLJ5FIJAo9CAAATPXhhx/qiCOOSDlju7N56KGHNG/ePG3ZskWhUCjta9555x3V1tZqx44dGV8DAIBpKCkHAABpffTRR1q2bJmuvfZazZ8/P2sgvXXrVv3gBz8g2AYAwIGAGwCAArJKqK1y8c5k48aNWrJkiebMmaP58+dnfe24ceM0bty4AzQyAACKAyXlAAAAAADkAU3TAAAAAADIAwJuAAAAAADygIAbAAAAAIA8IOAGAAAAACAPCLgBAAAAAMgDAm4AAAAAAPKAgBsAAAAAgDwg4AYAAAAAIA8IuAEAAAAAyIP/B+B5vXIA01XhAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x1200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def draw_diagrams(from_f, to_f, dipole_length_1, dipole_length_2, feedline_length):\n",
    "    global antenna_simulation_count\n",
    "    num_of_points = 500\n",
    "    fs = [from_f + i * (to_f - from_f) / num_of_points for i in range (0,num_of_points+1)]\n",
    "    argss = [(f, dipole_length_1, dipole_length_2) for f in fs]\n",
    "    with Pool() as pool:\n",
    "        z_and_eff_s = list(pool.map(zin_and_eff_from_args, argss))\n",
    "        antenna_simulation_count += len(argss)\n",
    "\n",
    "    swrs = [\n",
    "        antenna_simulation_driver.swr(\n",
    "            cable_transform(z_and_eff[0], Z_CABLE, f, feedline_length),\n",
    "            Z_TX_WANTS\n",
    "        )\n",
    "        for z_and_eff, f in zip(z_and_eff_s, fs)\n",
    "    ]\n",
    "        \n",
    "\n",
    "    df = pandas.DataFrame(\n",
    "        {\n",
    "            # \"efficiency\": [z_and_eff[1] for z_and_eff in z_and_eff_s],\n",
    "            \"swr\": swrs,            \n",
    "        },\n",
    "        index = [f * 1e-6 for f in fs]\n",
    "    )\n",
    "    print(f\"Frequency of best SWR and that SWR:\\n{df[[\"swr\"]].loc[df[[\"swr\"]].idxmin()]}\")\n",
    "    df.plot(\n",
    "        figsize = (12,12),\n",
    "        subplots = True,\n",
    "        title = f\"SWR of ZS6BKW antenna.\",\n",
    "        xlabel = \"Frequency / MHz\",\n",
    "        ylabel = \"SWR\",\n",
    "        ylim = (0.9, 5.5),\n",
    "        grid = True\n",
    "    )\n",
    "    return fs, swrs\n",
    "\n",
    "swr_fs, swrs = draw_diagrams(6e6, 30e6, best_dipole_length_1, best_dipole_length_2, best_feedline_length)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4f11962c-6abe-4ae4-8bbf-193f5b329461",
   "metadata": {},
   "source": [
    "## Bandwidth shootout\n",
    "\n",
    "In the following two cells, we compare the bandwidths (in kHz) of our (thin-wire) antenna with Brian's published,\n",
    "and his frequencies of best SWR with our central frequency of the SWR &lt; 2 bandwidth interval.\n",
    "Frequencies given in MHz, bandwidth in kHz.\n",
    "\n",
    "B's best | B's bw | our cf | our bw\n",
    "-------|--------|--------|--\n",
    "7.10  | 360 | 7.07  | 346\n",
    "14.20 | 270 | 14.24 | 246\n",
    "18.1  | 380 | 18.03 | 393\n",
    "24.92 | 260 | 24.92 | 215\n",
    "28.97 | 400 | 28.98 | 439"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "e3d16ee4-0e3d-47f4-9e48-38b32c4633d1",
   "metadata": {},
   "outputs": [],
   "source": [
    "def find_swr_change(min_f, max_f, swr_boundary = 2) -> float:\n",
    "    \"\"\"Find and return a frequency f between min_f and max_f where SWR is precisely swr_boundary.\n",
    "    \n",
    "    This analyses the antenna given by the global variables\n",
    "    best_dipole_length_1, best_dipole_length_2 and best_feedline_length.\n",
    "    \"\"\"\n",
    "    def find_my_0(f: float) -> float:\n",
    "        z_in = compute_antenna_z(f, best_dipole_length_1, best_dipole_length_2).input_and_impedance.impedance\n",
    "        z = cable_transform(z_in, Z_CABLE, f, best_feedline_length)\n",
    "        swr = antenna_simulation_driver.swr(z, Z_TX_WANTS)\n",
    "        return swr - 2\n",
    "    frequency_of_change = scipy.optimize.toms748(find_my_0, min_f, max_f, disp=True, rtol=1e-10, xtol=100)\n",
    "    return frequency_of_change\n",
    "\n",
    "\n",
    "def find_bandwidths(fs: list[float], swrs: list[float]) -> list[tuple[float, float]]:\n",
    "    \"\"\"Go through a scan of swrs and find the intervals of SWR < 2, as tuples of f_min, f_max.\"\"\"\n",
    "    swr_boundary = 2\n",
    "    if swrs[0] <= swr_boundary:\n",
    "        raise RuntimeError(\"This starts unexpected\")\n",
    "    if swrs[-1] <= swr_boundary:\n",
    "        raise RuntimeError(\"This ends unexpected\")\n",
    "    good_bands: list[tuple[float, float]] = []\n",
    "    good_band_start = None\n",
    "    for i in range(0, len(fs) - 1):\n",
    "        if swrs[i+1] < 2 < swrs[i]:\n",
    "            if good_band_start is None:\n",
    "                good_band_start = find_swr_change(fs[i], fs[i+1], swr_boundary)\n",
    "            else:\n",
    "                raise RuntimeError(\"Unexpected\")\n",
    "        elif swrs[i] < 2 < swrs[i+1]:\n",
    "            if good_band_start is not None:\n",
    "                good_band_end = find_swr_change(fs[i], fs[i+1], swr_boundary)\n",
    "                good_bands.append((good_band_start, good_band_end))\n",
    "                good_band_start = None\n",
    "            else:\n",
    "                raise RuntimeError(\"Unexpected\")\n",
    "    return good_bands\n",
    "\n",
    "good_sw_bands = find_bandwidths(swr_fs, swrs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "7d2e2822-82c3-4a5e-a41b-a4ea34b73b29",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " 6.90 -  7.25 MHz, center  7.07 MHz, bandwidth 346 kHz\n",
      "14.12 - 14.37 MHz, center 14.24 MHz, bandwidth 246 kHz\n",
      "17.83 - 18.22 MHz, center 18.03 MHz, bandwidth 393 kHz\n",
      "24.81 - 25.02 MHz, center 24.92 MHz, bandwidth 214 kHz\n",
      "28.76 - 29.20 MHz, center 28.98 MHz, bandwidth 439 kHz\n"
     ]
    }
   ],
   "source": [
    "for from_f, to_f in good_sw_bands:\n",
    "    print(\n",
    "        f\"{from_f*1e-6:5.2f} - {to_f*1e-6:5.2f} MHz, center {0.5e-6*(from_f+to_f):5.2f} MHz, \"\n",
    "        f\"bandwidth {(to_f - from_f)*1e-3:3.0f} kHz\"\n",
    "    ) "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3cded13f-d3fa-47bb-a551-6a81102444f9",
   "metadata": {},
   "source": [
    "## 6 m\n",
    "\n",
    "Brian mentions a low SWR of 1.5 at 51 MHz, he does not mention the bandwidth.\n",
    "\n",
    "Our original thin-wire antenna has a better low SWR of 1.15, at 51.03 MHz,\n",
    "with a SWR &lt; 2 bandwidth of 481 kHz."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "97337b87-af14-4c08-a33c-bde151d70236",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Frequency of best SWR and that SWR:\n",
      "              swr\n",
      "51.0312  1.147095\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAARTCAYAAACZESueAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAApdBJREFUeJzs/XeY3Xd5J/zf50yf0RT1XqxiWbZcwRhwwQUcwIApSwLhSnYTElJIgWSXEMKThLD5JSEkhOXJEiA8u5BACCEEgmk2uICxLdy7rN57mRlpevn+/phzRpLVZqQ58z3l9bourkQzR5p7Rsej8577c9+fTJIkSQAAAAATKpt2AQAAAFCOBG4AAAAoAIEbAAAACkDgBgAAgAIQuAEAAKAABG4AAAAoAIEbAAAACkDgBgAAgAIQuAGoSJ2dnXH06NG0ywAAylh12gUAULwGBgaiqqoqstmTfz7b0dER1dXV0dTUdMLbkySJjo6OqKqqiubm5rP+viNHjsTQ0FBERGQymWhoaIja2toCfDYRg4OD8b73vS/+6Z/+KZIkiWuuuSbuuuuukx7X09MTfX19Z/3zWlpaTvm1OdPX7VT6+vqirq7ulO87/usTEVFTU3PS1/zFj4+IU37tu7u7o7+/PzKZTCRJcsr6849pbm6OqqqqE96X/7q0trZGJpMZ0+c2EXp7e0c/LgCUEh1uAE5w6NCh+IM/+INYvHhxNDU1RWtra6xevTr+7M/+LHbv3j36uOuuuy4uueSSk37/I488ElOnTo0FCxacEBQjIjZv3hxtbW3xh3/4h6Nvu/LKK2P69OmxZMmSWLx4cTQ0NMSiRYviQx/6UPT29k7o5/aFL3whPv3pT8c999wTnZ2dpwzbERF/8id/EkuWLDnt/6ZOnRpTp06NdevWjf6esX7d8o4ePRof/OAHY8GCBdHW1hazZ8+O3/3d341Dhw6d8Ljjvz5LliyJmTNnRltbW7z5zW+OJ5988qQ/98orr4zrr7/+pLd/73vfi5kzZ8aNN94Y//t//++YOnVq3HnnnSc97vrrr4+pU6fGv/zLv5z0vje/+c2xYMGCGBwcPOXXrVA+/OEPx/Tp0yf1YwLARBC4ARjV19cXN9xwQ/zf//t/4zOf+Ux0dXXF4cOH4yMf+Uh87nOfi7/6q78afezNN98cW7dujU2bNp3wZ9x9993R2toanZ2d8eijj570vvzvPd6ll14a7e3t0d7eHt3d3fH+978//uIv/iJ+8zd/c0I/vwceeCDmzp0bV1111Rkf97GPfWy0nhf/7+Mf/3hERCxbtiwWLFgQEeP7ukVEdHV1xU033RT33ntvfOtb34qenp7YtGlTXHjhhfHDH/7wpHpe/PVZs2ZNbN26NW644YbYs2fPWT/vL33pS/GmN70pXvrSl8Z9990Xb37zmyPi2N9H3uHDh+OJJ56I1tbWk943MDAQP/nJT+K6666Lmpqas35MAEDgBuA4d955Zzz77LPxx3/8x/Ha1742ampqorq6Ot72trfFY489FldcccXoY2+55ZaIiLjnnntO+DPuvvvueOMb3xhLly49KbTdc889kc1m48YbbzxtDXV1dfH+978/Xvayl8U///M/R09Pz7g+h56enkiS5IS3DQ8PR3t7e+zduzdqa2tHw2t/f/+4/uwHH3ww3vve98aUKVPim9/8ZkyZMiUixvd1i4j44z/+49i4cWN8+9vfjiuvvDIiIpqamuK9731vvP3tbz9rHStXrowPfvCD0dnZGT/4wQ/O+NhPfvKT8Qu/8Atx2223xfe///1obW2NVatWxbx58076u7v33nsjk8nEb/3Wb530d7dmzZro6uoa/Xs/nf7+/tGvb0dHx2m74T09PdHR0TH668HBwVM+tru7e/R4//E/+BgeHj7psUmSRHd393l9vPE+dqyfLwCVSeAGYFR+/nfGjBknvW/mzJnx3/7bfxv99ate9aqoqqo6IZjlu6A33XRT3HjjjacM3FdddVW0tbWdtZYlS5bEwMBAHDhw4KyP7enpid/7vd+LWbNmRUtLSzQ0NMQb3vCGeP755yMiYuvWrbFkyZL4/ve/P/r/L1myJL72ta+d9c/O27VrV7ztbW+LgYGB+MIXvnDCcfrxfN36+vris5/9bPzcz/1cTJ8+PYaHh8/p6Hz+95xqVjvvQx/6ULzvfe+Ld7/73fG1r30t6uvrR9930003xeOPPx7t7e2jb7v77rvjqquuittvv/2k0wunO53wYl/4whdGv74LFy6Murq6uOyyy046ov4//sf/iPnz58fhw4fjv/yX/xItLS1RX18ft912W+zfv3/0cb/xG78Rn/vc52JoaOiEY/1bt24dfczDDz8ct956a9TX10dbW1vMmTMn/uRP/uSEkYaxfrzxPnasny8AFSoBgJzNmzcndXV1yVVXXZW88MILZ3381VdfncydO3f01z/60Y+SiEg2bdqUfPGLX0waGxuTvr6+JEmSZO3atUlEJB/4wAdO+DOWLVuWXH755Se8bXh4OLnkkkuSxsbGpL+//6x13HrrrUlbW1vy7W9/OxkYGEg2btyYvOIVr0imTp2abN68efRxt99+e7Js2bKz/nkv1tfXl7z85S9PIiL58Ic/fNL7x/N1e+ihh5KISP7gD/4geeMb35jU1dUlVVVVyaJFi5JPfOITyfDw8AmPX7ZsWbJ69erk8OHDyeHDh5M9e/Ykd955Z7J06dLk0ksvTXp7e0/5+F/5lV9JIiL50Ic+dMo6Pv/5zycRkXzzm98cfdvFF1+cfOADH0gGBweTlpaW5HOf+9zo+2688cZk6tSpydDQ0Fm/Xsfr6OhI/uzP/izJZrPJj370o9G3v/e9700aGxuTX/zFX0x+/OMfJ0NDQ8lPf/rTZPr06cm73vWuE/6M3//930+qqqpO+ef/+Mc/Turq6pJ3vvOdyY4dO5KhoaHkhz/8YTJz5szk137t187p443nsWP9fAGoTAI3ACf46le/msyZMyeJiOSiiy5K3vGOdySf/vSnk927d5/02A9+8INJRCRr165NkiRJ/vRP/zRZtGhRkiRJsn379iQikvvuuy9JkiT59Kc/nURE8v3vf/+EP+PFgfKFF15Ifvu3fzuJiOSjH/3oWeu96667kohIPvnJT57w9q1btyY1NTXJe97zntG3nWvgfve7351ERPKGN7zhpECcN9av23/8x38kEZFkMpnkV3/1V5P29vaku7s7+fM///MkIpKPfOQjJzx+2bJlSTabTVpbW5PW1takqakpiYhk5cqVyeOPP35SHcuWLUsiIomI5Od+7udO+zlt2bIliYjkfe97X5IkSbJnz54kIpLvfOc7SZIkyetf//rkne98Z5IkSdLT05PU1dUlb3nLW8b8NUuSJOnt7U3a29uTw4cPJ8uWLTvh7+K9731vEhHJ17/+9RN+zwc+8IGkqqoq6enpGX3bmQL3VVddlVx00UUn/WDm05/+dJLNZkd/4DKejzeex4718wWgMjlSDsAJ3v72t8f27dvjvvvui1/91V+NTCYTH/jAB2LFihXx5S9/+YTH5o8X548b33333XHTTTdFRMSCBQtOmOO+++67o7a2Nq677rqTPuZzzz03uqV85cqV8alPfSr+6I/+KD784Q+ftd777rsvIiLe+MY3nvD2RYsWxRVXXBH33nvv+L4AL/L3f//38fnPfz4uuuii+NKXvnTa67DG+nVLcvPl8+fPj7//+7+P1tbWaGhoiA996ENx/fXXx1/91V+ddMT8+KVpR48ejb1798bVV18d1113XTz44IMn1bJ8+fJ4xSteEf/2b/8W//iP/3jKehcvXnzS3091dfXo38+NN944OuP9wAMPRF9f31mPk0eMXPv227/92zF37txobGyMhQsXxpIlS2LLli2xcePGkx7/mte85oRfr1q1KoaGhmLbtm1n/Vj79u2Lxx57LF796ldHX19fHDlyJI4cORKdnZ1x1VVXxfDw8Elfn/F8vLE8dryfLwCVReAG4CTV1dVxww03xO/93u/Fl7/85diwYUPMnz8/3v3ud58ww3rddddFbW1t3HPPPdHT0xNr1qwZDdwRMTrHnSRJ3HvvvXHNNddEY2PjSR8vHyg7Ojri0KFD8Uu/9EvxV3/1V/Hd7373rLXmZ5BnzZp10vtmzZoVhw8fPoevwIgf/ehH8f73vz9aWlriG9/4RrS0tJzx8WP5us2cOTMiIq6++uqTtn1fe+210d3dfcJ1Y6cya9as+OxnPxuDg4Pxx3/8xye9v6mpKe6888647rrr4j3veU/87//9v0/559x8883x9NNPx4EDB+Luu++Ol770paMz4TfeeGPs2bMnnnvuudHgPZbA/c53vjO+8pWvxJe//OXo7e2Nzs7OaG9vj0suueSkhWKNjY2ji+fy8r/u7Ow868fKf00///nPx4IFC2LhwoWxcOHCWLRoUdx6663R2toaXV1d5/TxxvrY8Xy+AFQegRuAs5o1a1b8/M//fPT29p5w93NDQ0O84hWviHvvvTfuv//+6OvrOylwr1mzJn7605/G/v37z7rhOiJi6tSp8dnPfjYuuuii+OVf/uWzBq98gN21a9dJ79u1a9cpg/hYbN++Pd7+9rfH4OBgfOlLX4qVK1eO+8841dft0ksvjerq6lOGsYGBgYgYCe5n09DQELNnz461a9ee8v1TpkyJ7373u3HzzTfHe9/73vi7v/u7kx5zyy23jP4w5J577jnh7+6qq66KlpaWuOeee+Luu++OOXPmxMUXX3zGmjo7O+N73/te/Pqv/3rcdNNNoz9Q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",
      "text/plain": [
       "<Figure size 1200x1200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sixmeter_fs, sixmeter_swrs = \\\n",
    "    draw_diagrams(\n",
    "        49.7e6, 52.3e6, best_dipole_length_1, best_dipole_length_2, best_feedline_length\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "dfdc92b3-2205-42bc-a665-583306f06c3e",
   "metadata": {},
   "outputs": [],
   "source": [
    "good_sixmeter_bands = find_bandwidths(sixmeter_fs, sixmeter_swrs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "5a53d341-3fce-463b-9226-0a9c99a07d89",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "50.79 - 51.27 MHz, center 51.03 MHz, bandwidth 481 kHz\n"
     ]
    }
   ],
   "source": [
    "for from_f, to_f in good_sixmeter_bands:\n",
    "    print(\n",
    "        f\"{from_f*1e-6:5.2f} - {to_f*1e-6:5.2f} MHz, center {0.5e-6*(from_f+to_f):5.2f} MHz, \"\n",
    "        f\"bandwidth {(to_f - from_f)*1e-3:3.0f} kHz\"\n",
    "    ) "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f935ed4c-f644-4d9b-a06a-a71436d4e218",
   "metadata": {},
   "source": [
    "## Gain on 6 m\n",
    "\n",
    "As is to be expected of an overly long antenna, the gain for 6 m is rather high,\n",
    "but the lobes with highest gain approach the wire.\n",
    "\n",
    "In our case, we find the lobes with the highest gain, namely, 11 dBi,\n",
    "at an elevation of only 8° above the horizon,\n",
    "and 33° to the left and the right of each dipole wire.\n",
    "\n",
    "Brian mentions a gain of 12 dBi at an elevation of 25° above the horizon, and 20° to the left\n",
    "and right of each dipole wire.  This is quite some difference.  For lack of information and interest,\n",
    "I did not bother  to investigate that difference further."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "d8747d35-5379-4702-a75b-9cf21c15c75c",
   "metadata": {},
   "outputs": [],
   "source": [
    "sixmeter_result = compute_antenna_z(\n",
    "    51e6, best_dipole_length_1, best_dipole_length_2, rp_line=\"RP 0 91 360 1001 0.0 0.0 1 1 0.0 0.0\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "57a7b48e-82d6-4903-846e-35a4d49ef87a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  8.0° above horizon,  33.0° from wire, 10.73 dB\n",
      "  8.0° above horizon, 147.0° from wire, 10.73 dB\n",
      "  8.0° above horizon, 213.0° from wire, 10.73 dB\n",
      "  8.0° above horizon, 327.0° from wire, 10.73 dB\n"
     ]
    }
   ],
   "source": [
    "def find_best_direction(sim_result: antenna_simulation_driver.Nec2ppOutput) -> list[tuple[float, float, float]]:\n",
    "    best_theta, best_phi, best_power_gain = None, None, -float(\"Infinity\")\n",
    "\n",
    "    results = []\n",
    "    \n",
    "    for ray in sim_result.radiation_pattern.rays:\n",
    "        if best_power_gain < ray.power_gain_total:\n",
    "            best_theta = ray.theta\n",
    "            best_phi = ray.phi\n",
    "            best_power_gain = ray.power_gain_total\n",
    "            results = [(best_theta, best_phi, best_power_gain)]\n",
    "        elif best_power_gain == ray.power_gain_total:\n",
    "            results.append((ray.theta, ray.phi, ray.power_gain_total))\n",
    "    \n",
    "    return results\n",
    "for some_theta, some_phi, some_power_gain in find_best_direction(sixmeter_result):\n",
    "    print(f\"{90-some_theta:5.1f}° above horizon, {some_phi:5.1f}° from wire, {some_power_gain:5.2f} dB\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed1ce73d-7c3b-4a6f-9b35-16335a5c0b06",
   "metadata": {},
   "source": [
    "## Consistency check: Lossless free space dipole\n",
    "\n",
    "For yet another coarse onsistency check,\n",
    "I  simulate a free space lossless dipole. This has no direct relationship with the ZS6BKW antenna,\n",
    "it is just a test to see whether the setup yields decent results.\n",
    "The result should have a maximal gain of 2.15 dBi.\n",
    "\n",
    "The calculation comes up with 2.04 dBi.\n",
    "\n",
    "Being an ideal dipole, there should be no losses;\n",
    "but the simulation comes up with an efficiency of 97.579 % instead of the 100 % expected.\n",
    "If we compensate for that loss, the maximal gain rises to 2.146 dBi."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "6362083a-3e37-452b-851d-477c0bd4b74c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found resonance at 7306.814 kHz for 20 m dipole of 1 mm diameter wire.\n"
     ]
    }
   ],
   "source": [
    "def calculate_ideal_dipole():\n",
    "\n",
    "    def freespace_dipole_simulation(qrg: float) -> antenna_simulation_driver.Nec2ppOutput:\n",
    "\n",
    "        dipole_length_1 = 10\n",
    "        dipole_length_2 = 10\n",
    "        dipole_height = 0\n",
    "        wire_diameter = 0.001\n",
    "\n",
    "        # rp_line=\"RP 0 181 361 1003 0.0 0.0 1.0 1.0 0.0 0.0\"\n",
    "        rp_line=\"RP 0 361 721 1001 0.0 0.0 0.5 0.5 0.0 0.0\"\n",
    "\n",
    "        simulation_input = (\"CM Dipole.\\n\"\n",
    "        # end of comment:\n",
    "        \"CE\\n\"\n",
    "\n",
    "        # tag number, number of segments, x,y,z of endpoint, x,y,z of other endpoint, wire radius\n",
    "        f\"GW 1 {math.ceil(dipole_length_1 / 0.3)} \"\n",
    "        f\"{-dipole_length_1:.3f} .0 {dipole_height:.3f} \"\n",
    "        f\"-0.3 .0 {dipole_height:.3f} \"\n",
    "        f\"{wire_diameter/2:.3e}\\n\"\n",
    "\n",
    "        f\"GW 2 1 \"\n",
    "        f\"-0.3 .0 {dipole_height:.3f} \"\n",
    "        f\"0.3 .0  {dipole_height:.3f} \"\n",
    "        f\"{wire_diameter/2:.3e}\\n\"\n",
    "\n",
    "        f\"GW 3 {math.ceil(dipole_length_2 / 0.3)} \"\n",
    "        f\"0.3 .0  {dipole_height:.3f} \"\n",
    "        f\"{dipole_length_2:.3f} .0 {dipole_height:.3f} \"\n",
    "        f\"{wire_diameter/2:.3e}\\n\"\n",
    "\n",
    "        # end of geometry\n",
    "        \"GE\\n\"\n",
    "\n",
    "        # free space\n",
    "        \"GN -1\\n\"\n",
    "\n",
    "        # perfect ground\n",
    "        # \"GN 1\\n\"\n",
    "\n",
    "        # bad city ground\n",
    "        # f\"GN 2 0 0 0 {CITY_GROUND_DIEL} {CITY_GROUND_CONDUCTIVITY}\\n\"\n",
    "\n",
    "        # ideal wire\n",
    "        \"LD -1\\n\"\n",
    "\n",
    "        # copper wire\n",
    "        # \"LD 5 1 0 0 58.1e6\\n\"\n",
    "        # \"LD 5 2 0 0 58.1e6\\n\"\n",
    "        # \"LD 5 3 0 0 58.1e6\\n\"\n",
    "\n",
    "        # Excitation: 0 Voltage source, 1 tag number and segment number where the excitation happens,\n",
    "        # the following 0 is for general sanity, the following one or two floats give the (real or complex) voltage.\n",
    "        f\"EX 0 2 1 0 1.0\\n\"\n",
    "\n",
    "        # Frequencies: 0: linear stepping, 1: number of frequencies stepped through, 0, 0,\n",
    "        # then starting frequency in MHz and stepping increment.\n",
    "        # The software that reads the simulation run's output assumes we have only one frequency.\n",
    "        f\"FR 0 1 0 0 {qrg*1e-6:.6f} 0.00\\n\"\n",
    "        # Actually run the simulation:\n",
    "        # \"RP 0 37 145 1003 0.0 0.0 2.5 2.5 0.0 0.0\\n\"\n",
    "        f\"{rp_line}\\n\"\n",
    "        \"EN\\n\")\n",
    "        # print(simulation_input)\n",
    "        global antenna_simulation_count\n",
    "        antenna_simulation_count += 1 # This does not work through multiprocessing.\n",
    "        return run_nec2pp(simulation_input, True)\n",
    "\n",
    "    # Find frequency of resonance:\n",
    "    frequency_of_resonance  = scipy.optimize.toms748(\n",
    "        lambda f: freespace_dipole_simulation(f).input_and_impedance.impedance.imag,\n",
    "        7.3e6,\n",
    "        7.6e6,\n",
    "        disp=True\n",
    "    )\n",
    "    print(f\"Found resonance at {frequency_of_resonance*1e-3:.3f} kHz for 20 m dipole of 1 mm diameter wire.\")\n",
    "    return freespace_dipole_simulation(frequency_of_resonance)\n",
    "\n",
    "ideal_dipole_data = calculate_ideal_dipole()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "d5e5dedf-b215-4d5c-9640-e2d3e4ae9d1c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PowerBudget(input_power=0.0067619, radiated_power=0.0067619, structure_loss=0.0, network_loss=0.0, efficiency=1.0)\n",
      "AverageGain(average_power_gain=0.97579, solid_angle_used_div_by_pi=4.0)\n",
      "AntennaInputParameters(tag=2, seg=35, voltage=(1+0j), current=(0.013524-1.7474e-08j), impedance=(73.944+9.5541e-05j), admittance=(0.013524-1.7474e-08j), power=0.0067619)\n"
     ]
    }
   ],
   "source": [
    "print(ideal_dipole_data.power_budget)\n",
    "print(ideal_dipole_data.average_gain)\n",
    "print(ideal_dipole_data.input_and_impedance)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "2f29f2e2-3578-4a86-9c46-71d4517e6ed2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dipole gain found to be 2.04 dBi by simulation, should have been 2.15 dBi.\n"
     ]
    }
   ],
   "source": [
    "best_gain = max((ray.power_gain_total for ray in ideal_dipole_data.radiation_pattern.rays))\n",
    "\n",
    "print(f\"Dipole gain found to be {best_gain:.2f} dBi by simulation, should have been 2.15 dBi.\")\n",
    "\n",
    "# with open(\"dipole.out\", \"w\") as dipol_f:\n",
    "#     dipol_f.write(result.raw_output)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "da87692e-ab1b-46a4-a70b-bce72bb5a6c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.1464363689712047"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "adjusted_best_gain = best_gain + \\\n",
    "    10 * math.log(1 / ideal_dipole_data.average_gain.average_power_gain) / math.log(10)\n",
    "adjusted_best_gain"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "d273b856-e3cf-4314-95a7-b2712e6183c3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6107 simulations in 565.065895 s, so 92.52757409530047 ms/simulation\n"
     ]
    }
   ],
   "source": [
    "end_time = datetime.now(UTC)\n",
    "end_time.strftime(\"%Y-%m-%d %H:%M:%S UTC\")\n",
    "duration = (end_time - start_time).total_seconds()\n",
    "print(\n",
    "    f\"{antenna_simulation_count} simulations in {duration} s, \"\n",
    "    f\"so {duration*1e3 / antenna_simulation_count} ms/simulation\"\n",
    ")"
   ]
  }
 ],
 "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.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
