{ "cells": [ { "cell_type": "markdown", "id": "64b3392e", "metadata": { "papermill": { "duration": 0.002102, "end_time": "2026-08-04T14:28:46.546845+00:00", "exception": false, "start_time": "2026-08-04T14:28:46.544743+00:00", "status": "completed" }, "tags": [] }, "source": [ "# Coaxial Cable\n", "\n", "A coaxial waveguide: an annular dielectric region (outer cylinder with inner cylinder removed). The cylinder walls (inner and outer conductors) are PEC, and the top and bottom annular faces are waveports.\n", "\n", "We build the geometry with a boolean cut, use **selectors** to pick the two end faces, define entities for the dielectric volume and the two waveport surfaces, then generate the mesh, write the Palace config, run the simulation, and plot the S parameters." ] }, { "cell_type": "code", "execution_count": 1, "id": "6e0056ab", "metadata": { "execution": { "iopub.execute_input": "2026-08-04T14:28:46.741692Z", "iopub.status.busy": "2026-08-04T14:28:46.741486Z", "iopub.status.idle": "2026-08-04T14:28:47.301869Z", "shell.execute_reply": "2026-08-04T14:28:47.301290Z" }, "papermill": { "duration": 0.754396, "end_time": "2026-08-04T14:28:47.302932+00:00", "exception": false, "start_time": "2026-08-04T14:28:46.548536+00:00", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import gmsh\n", "\n", "from palacetoolkit.geometry import Selector\n", "from palacetoolkit.mesh import (\n", " Entity,\n", " run_entity_pipeline,\n", " create_graded_mesh,\n", " generate_3d_mesh,\n", ")\n", "from palacetoolkit.simulation import (\n", " generate_palace_config_from_entities,\n", " run_palace,\n", ")\n", "from palacetoolkit.postpro import s_params\n", "from palacetoolkit.viz import view_mesh" ] }, { "cell_type": "markdown", "id": "f1e8f011", "metadata": { "papermill": { "duration": 0.001592, "end_time": "2026-08-04T14:28:47.306380+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.304788+00:00", "status": "completed" }, "tags": [] }, "source": [ "## Geometry parameters\n", "\n", "A short coaxial cable segment. The inner conductor radius `r_inner`, outer conductor radius `r_outer`, and length `length` define the annular dielectric region." ] }, { "cell_type": "code", "execution_count": 2, "id": "88f3a33d", "metadata": { "execution": { "iopub.execute_input": "2026-08-04T14:28:47.310500Z", "iopub.status.busy": "2026-08-04T14:28:47.310271Z", "iopub.status.idle": "2026-08-04T14:28:47.313230Z", "shell.execute_reply": "2026-08-04T14:28:47.312646Z" }, "papermill": { "duration": 0.006019, "end_time": "2026-08-04T14:28:47.313977+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.307958+00:00", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "r_inner = 0.5e-3 # inner conductor radius [m]\n", "r_outer = 1.5e-3 # outer conductor radius [m]\n", "length = 20.0e-3 # coax length along z [m]\n", "\n", "# Frequency sweep\n", "freq_min = 0.1e9 # 0.1 GHz\n", "freq_max = 5.0e9 # 5 GHz\n", "freq_step = 0.1e9 # 100 MHz steps" ] }, { "cell_type": "markdown", "id": "74ea6cc0", "metadata": { "papermill": { "duration": 0.001531, "end_time": "2026-08-04T14:28:47.317209+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.315678+00:00", "status": "completed" }, "tags": [] }, "source": [ "## Build the annular geometry\n", "\n", "Create the outer cylinder and cut the inner cylinder from it to produce the annular dielectric region." ] }, { "cell_type": "code", "execution_count": 3, "id": "f1f466d5", "metadata": { "execution": { "iopub.execute_input": "2026-08-04T14:28:47.321102Z", "iopub.status.busy": "2026-08-04T14:28:47.320966Z", "iopub.status.idle": "2026-08-04T14:28:47.329183Z", "shell.execute_reply": "2026-08-04T14:28:47.328644Z" }, "papermill": { "duration": 0.010959, "end_time": "2026-08-04T14:28:47.329742+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.318783+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Info : [ 0%] Difference \r", "Info : [ 10%] Difference \r", "Info : [ 20%] Difference \r", "Info : [ 30%] Difference \r", "Info : [ 40%] Difference \r", "Info : [ 50%] Difference \r", "Info : [ 60%] Difference \r", "Info : [ 70%] Difference - Filling splits of edges \r", "Info : [ 80%] Difference - Making faces \r", "Info : [ 90%] Difference - Classify solids \r", "Annular volume tags: [1]\n" ] } ], "source": [ "gmsh.initialize()\n", "gmsh.option.setNumber(\"General.Terminal\", 1)\n", "gmsh.model.add(\"coax\")\n", "\n", "# Outer and inner cylinders\n", "outer = gmsh.model.occ.addCylinder(0, 0, 0, 0, 0, length, r_outer)\n", "inner = gmsh.model.occ.addCylinder(0, 0, 0, 0, 0, length, r_inner)\n", "\n", "# Cut: outer minus inner → annular volume\n", "annular, _ = gmsh.model.occ.cut([(3, outer)], [(3, inner)], removeObject=True, removeTool=True)\n", "gmsh.model.occ.synchronize()\n", "\n", "annular_tags = [t for d, t in annular if d == 3]\n", "print(f\"Annular volume tags: {annular_tags}\")" ] }, { "cell_type": "markdown", "id": "406b0c2f", "metadata": { "papermill": { "duration": 0.001697, "end_time": "2026-08-04T14:28:47.333234+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.331537+00:00", "status": "completed" }, "tags": [] }, "source": [ "## Select the two waveport faces\n", "\n", "Using the `Selector` API bound to the annular volume — pick the faces at `z=0` and `z=length`. Each end face is an annulus (a ring-shaped surface)." ] }, { "cell_type": "code", "execution_count": 4, "id": "3bf5f9fe", "metadata": { "execution": { "iopub.execute_input": "2026-08-04T14:28:47.337347Z", "iopub.status.busy": "2026-08-04T14:28:47.337204Z", "iopub.status.idle": "2026-08-04T14:28:47.341621Z", "shell.execute_reply": "2026-08-04T14:28:47.341006Z" }, "papermill": { "duration": 0.007351, "end_time": "2026-08-04T14:28:47.342239+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.334888+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Port 1 (z=0): tags=[7]\n", "Port 2 (z=length): tags=[6]\n" ] } ], "source": [ "# Bind the selector to the annular volume — only its boundary faces are considered.\n", "# This mirrors build123d/cadquery where selectors operate on a specific shape.\n", "sel = Selector((3, annular_tags[0]))\n", "\n", "# cadquery-style: faces at a given coordinate\n", "# The seam split may fragment the end faces into multiple pieces, so we\n", "# collect all faces at each z and combine their tags.\n", "port1_faces = sel.faces_at_z(0.0)\n", "port2_faces = sel.faces_at_z(length)\n", "\n", "assert len(port1_faces) >= 1, f\"Expected faces at z=0, got {len(port1_faces)}\"\n", "assert len(port2_faces) >= 1, f\"Expected faces at z=length, got {len(port2_faces)}\"\n", "\n", "port1_tags = [f.tag for f in port1_faces]\n", "port2_tags = [f.tag for f in port2_faces]\n", "\n", "print(f\"Port 1 (z=0): tags={port1_tags}\")\n", "print(f\"Port 2 (z=length): tags={port2_tags}\")" ] }, { "cell_type": "markdown", "id": "f5c72ae7", "metadata": { "papermill": { "duration": 0.001698, "end_time": "2026-08-04T14:28:47.345722+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.344024+00:00", "status": "completed" }, "tags": [] }, "source": [ "## Define entities\n", "\n", "The annular volume is a **dielectric** (vacuum, εᵣ=1). The two end faces are waveports. The remaining exterior surfaces (inner and outer cylinder walls) are PEC — they appear as `dielectric__None` in the physical group map and must be explicitly claimed." ] }, { "cell_type": "code", "execution_count": 5, "id": "11022e99", "metadata": { "execution": { "iopub.execute_input": "2026-08-04T14:28:47.349944Z", "iopub.status.busy": "2026-08-04T14:28:47.349803Z", "iopub.status.idle": "2026-08-04T14:28:47.355904Z", "shell.execute_reply": "2026-08-04T14:28:47.355352Z" }, "papermill": { "duration": 0.009095, "end_time": "2026-08-04T14:28:47.356595+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.347500+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Physical group 'dielectric' (dim=3): pg=1, tags=[1]\n", " Physical group 'waveport_1' (dim=2): pg=2, tags=[7]\n", " Physical group 'waveport_2' (dim=2): pg=3, tags=[6]\n", " Physical group 'dielectric__None' (dim=2): pg=4, tags=[5, 4]\n", "Physical group map: {'waveport_1': 2, 'waveport_2': 3, 'dielectric__None': 4, 'dielectric': 1}\n" ] } ], "source": [ "entities = [\n", " Entity(\n", " name=\"dielectric\",\n", " dim=3,\n", " btype=\"dielectric\",\n", " mesh_order=0,\n", " tags=annular_tags,\n", " eps_r=1.0,\n", " mu_r=1.0,\n", " loss_tan=0.0,\n", " ),\n", " Entity(\n", " name=\"waveport_1\",\n", " dim=2,\n", " btype=\"waveport\",\n", " mesh_order=1,\n", " tags=port1_tags,\n", " mode=1,\n", " excitation=True,\n", " ),\n", " Entity(\n", " name=\"waveport_2\",\n", " dim=2,\n", " btype=\"waveport\",\n", " mesh_order=2,\n", " tags=port2_tags,\n", " mode=1,\n", " excitation=False,\n", " ),\n", " # PEC walls — the exterior surfaces of the dielectric (inner & outer conductors)\n", " Entity(\n", " name=\"dielectric__None\",\n", " dim=2,\n", " btype=\"pec\",\n", " mesh_order=3,\n", " tags=[],\n", " ),\n", "]\n", "\n", "pg_map = run_entity_pipeline(entities)\n", "print(\"Physical group map:\", pg_map)" ] }, { "cell_type": "markdown", "id": "3363ea1d", "metadata": { "papermill": { "duration": 0.001767, "end_time": "2026-08-04T14:28:47.360250+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.358483+00:00", "status": "completed" }, "tags": [] }, "source": [ "## Mesh generation" ] }, { "cell_type": "code", "execution_count": 6, "id": "8f7c9081", "metadata": { "execution": { "iopub.execute_input": "2026-08-04T14:28:47.364807Z", "iopub.status.busy": "2026-08-04T14:28:47.364665Z", "iopub.status.idle": "2026-08-04T14:28:48.172994Z", "shell.execute_reply": "2026-08-04T14:28:48.172380Z" }, "papermill": { "duration": 0.811634, "end_time": "2026-08-04T14:28:48.173839+00:00", "exception": false, "start_time": "2026-08-04T14:28:47.362205+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " global: 6 curves, SizeMin=0.0100\n", " ppw_near=6 ppw_far=3\n", " SizeMax=0.0200 transition=0.0150\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Mesh saved to coax.msh\n", " Nodes: 344\n", " Elements: 1798\n", "Mesh written to coax.msh\n" ] } ], "source": [ "mesh_file = \"coax.msh\"\n", "\n", "# Operating wavelength at the highest frequency (5 GHz)\n", "c = 3e8\n", "wavelength = c / freq_max\n", "\n", "# Graded mesh: refine near geometric curves\n", "create_graded_mesh(\n", " wavelength=wavelength,\n", " ppw_near=6,\n", " ppw_far=3,\n", ")\n", "\n", "# OCC cylinders have a seam at theta=0 that produces duplicated facets.\n", "# Override the background-mesh options to use boundary-extended sizing\n", "# and Delaunay 3D (no reconstruction) to avoid the \"overlapping facets\" error.\n", "gmsh.option.setNumber(\"Mesh.MeshSizeExtendFromBoundary\", 1)\n", "gmsh.option.setNumber(\"Mesh.MeshSizeFromPoints\", 1)\n", "gmsh.option.setNumber(\"Mesh.MeshSizeFromCurvature\", 1)\n", "gmsh.option.setNumber(\"Mesh.Algorithm3D\", 7)\n", "\n", "generate_3d_mesh(entities, output_file=mesh_file)\n", "gmsh.finalize()\n", "print(f\"Mesh written to {mesh_file}\")" ] }, { "cell_type": "code", "execution_count": 7, "id": "62000e17", "metadata": { "execution": { "iopub.execute_input": "2026-08-04T14:28:48.179011Z", "iopub.status.busy": "2026-08-04T14:28:48.178693Z", "iopub.status.idle": "2026-08-04T14:28:49.260608Z", "shell.execute_reply": "2026-08-04T14:28:49.259800Z" }, "papermill": { "duration": 1.085164, "end_time": "2026-08-04T14:28:49.261201+00:00", "exception": false, "start_time": "2026-08-04T14:28:48.176037+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading mesh file: coax.msh\n", "Groups to render transparent: ['air_none', 'air_plastic_enclosure']\n", "\n", "Mesh loaded successfully with 2 cell blocks\n", "Found 514 triangles total\n", "Physical group tags in mesh: {2: 'waveport_1', 3: 'waveport_2', 4: 'dielectric__None'}\n" ] }, { "data": { "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "view_mesh(mesh_file)" ] }, { "cell_type": "markdown", "id": "79879482", "metadata": { "papermill": { "duration": 0.002386, "end_time": "2026-08-04T14:28:49.266183+00:00", "exception": false, "start_time": "2026-08-04T14:28:49.263797+00:00", "status": "completed" }, "tags": [] }, "source": [ "## Palace configuration & simulation\n", "\n", "Build the Palace JSON config from the entity definitions and run the driven simulation." ] }, { "cell_type": "code", "execution_count": 8, "id": "d57df280", "metadata": { "execution": { "iopub.execute_input": "2026-08-04T14:28:49.272024Z", "iopub.status.busy": "2026-08-04T14:28:49.271830Z", "iopub.status.idle": "2026-08-04T14:29:10.328664Z", "shell.execute_reply": "2026-08-04T14:29:10.327946Z" }, "papermill": { "duration": 21.060833, "end_time": "2026-08-04T14:29:10.329313+00:00", "exception": false, "start_time": "2026-08-04T14:28:49.268480+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Palace config written to coax.json\n" ] }, { "data": { "text/html": [ "
Palace simulation output
  Running: /home/runner/.cache/palacetoolkit/runtime/palace-cpu-v0.17.0/bin/palace --serial /home/runner/work/PalaceToolkit/PalaceToolkit/docs/examples/coax.json\n",
       ">> /home/runner/.cache/palacetoolkit/runtime/palace-cpu-v0.17.0/bin/palace-x86_64.bin /home/runner/work/PalaceToolkit/PalaceToolkit/docs/examples/coax.json\n",
       "\n",
       "_____________     _______\n",
       "_____   __   \\____ __   /____ ____________\n",
       "____   /_/  /  __ ` /  /  __ ` /  ___/  _ \\\n",
       "___   _____/  /_/  /  /  /_/  /  /__/  ___/\n",
       "  /__/     \\___,__/__/\\___,__/\\_____\\_____/\n",
       "\n",
       "Git changeset ID: v0.17.0-272-gb22f654ab\n",
       "Running with 1 MPI process, 1 OpenMP thread\n",
       "Device configuration: omp,cpu\n",
       "Memory configuration: host-std\n",
       "libCEED backend: /cpu/self/xsmm/blocked\n",
       "\n",
       "\n",
       "Characteristic length and time scales:\n",
       " Lc = 2.000e-05 m, tc = 6.671e-05 ns\n",
       "Finished partitioning mesh into 1 subdomain\n",
       "\n",
       "Mesh curvature order: 1\n",
       "Mesh bounding box:\n",
       " (Xmin, Ymin, Zmin) = (-1.499e-06, -1.495e-06, +0.000e+00) m\n",
       " (Xmax, Ymax, Zmax) = (+1.500e-06, +1.490e-06, +2.000e-05) m\n",
       "\n",
       "Parallel Mesh Stats:\n",
       "\n",
       "                minimum     average     maximum       total\n",
       " vertices           344         344         344         344\n",
       " edges             1833        1833        1833        1833\n",
       " faces             2721        2721        2721        2721\n",
       " elements          1232        1232        1232        1232\n",
       " neighbors            0           0           0\n",
       "\n",
       "            minimum     maximum\n",
       " h        0.0175757   0.0789467\n",
       " kappa      1.10695     8.14122\n",
       "\n",
       "Estimated current per-rank memory usage is: Min. 44.7M, Max. 44.7M, Avg. 44.7M, Total 44.7M\n",
       "Estimated current per-node memory usage is: Min. 44.7M, Max. 44.7M, Avg. 44.7M, Total 44.7M\n",
       "\n",
       "Configuring Robin impedance BC for wave ports at attributes:\n",
       " 2: Index = 1, mode = 1, d = 0.000e+00 m,  n = (+0.0,+0.0,-1.0)\n",
       " 3: Index = 2, mode = 1, d = 0.000e+00 m,  n = (+0.0,+0.0,+1.0)\n",
       "\n",
       "Configuring wave port excitation source term at attributes:\n",
       " 2: Index = 1\n",
       "\n",
       "Configuring Dirichlet PEC BC at attributes:\n",
       " 4\n",
       "\n",
       "Computing adaptive fast frequency response for:\n",
       "Excitation with index 1 has contributions from:\n",
       " Wave port  1\n",
       "\n",
       "Beginning PROM construction offline phase:\n",
       " 50 points for frequency sweep over [1.000e+08, 5.000e+09] GHz\n",
       "\n",
       "Assembling system matrices, number of global unknowns:\n",
       " H1 (p = 2): 2177, ND (p = 2): 9108, RT (p = 2): 11859\n",
       " Operator assembly level: Partial\n",
       " Mesh geometries:\n",
       "  Tetrahedron: P = 20, Q = 14 (quadrature order = 4)\n",
       "\n",
       "Assembling multigrid hierarchy:\n",
       " Level 0 (p = 1): 1833 unknowns\n",
       " Level 1 (p = 2): 9108 unknowns\n",
       " Level 0 (auxiliary) (p = 1): 344 unknowns\n",
       " Level 1 (auxiliary) (p = 2): 2177 unknowns\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 3.406356e-02\n",
       "  1 (restart 0) KSP residual norm 5.377904e-03\n",
       "  2 (restart 0) KSP residual norm 1.274965e-03\n",
       "  3 (restart 0) KSP residual norm 2.870531e-04\n",
       "  4 (restart 0) KSP residual norm 7.801464e-05\n",
       "  5 (restart 0) KSP residual norm 2.280843e-05\n",
       "  6 (restart 0) KSP residual norm 6.159283e-06\n",
       "  7 (restart 0) KSP residual norm 1.977927e-06\n",
       "  8 (restart 0) KSP residual norm 5.527713e-07\n",
       "  9 (restart 0) KSP residual norm 1.614381e-07\n",
       " 10 (restart 0) KSP residual norm 4.698656e-08\n",
       " 11 (restart 0) KSP residual norm 1.429613e-08\n",
       " 12 (restart 0) KSP residual norm 4.443578e-09\n",
       " 13 (restart 0) KSP residual norm 1.374425e-09\n",
       " 14 (restart 0) KSP residual norm 4.659826e-10\n",
       " 15 (restart 0) KSP residual norm 1.555289e-10\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.780e-01)\n",
       " Field energy E (2.606e-20 J) + H (9.837e-25 J) = 2.607e-20 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 6.477486e-04\n",
       "  1 (restart 0) KSP residual norm 1.042446e-04\n",
       "  2 (restart 0) KSP residual norm 2.429762e-05\n",
       "  3 (restart 0) KSP residual norm 5.833124e-06\n",
       "  4 (restart 0) KSP residual norm 1.646606e-06\n",
       "  5 (restart 0) KSP residual norm 4.761620e-07\n",
       "  6 (restart 0) KSP residual norm 1.315666e-07\n",
       "  7 (restart 0) KSP residual norm 4.184216e-08\n",
       "  8 (restart 0) KSP residual norm 1.097043e-08\n",
       "  9 (restart 0) KSP residual norm 3.246492e-09\n",
       " 10 (restart 0) KSP residual norm 9.927254e-10\n",
       " 11 (restart 0) KSP residual norm 2.912471e-10\n",
       " 12 (restart 0) KSP residual norm 9.010342e-11\n",
       " 13 (restart 0) KSP residual norm 2.704989e-11\n",
       " 14 (restart 0) KSP residual norm 8.721939e-12\n",
       " 15 (restart 0) KSP residual norm 2.842942e-12\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.772e-01)\n",
       " Field energy E (1.017e-23 J) + H (1.579e-31 J) = 1.017e-23 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 1.291966e-03\n",
       "  1 (restart 0) KSP residual norm 2.078893e-04\n",
       "  2 (restart 0) KSP residual norm 4.848153e-05\n",
       "  3 (restart 0) KSP residual norm 1.162178e-05\n",
       "  4 (restart 0) KSP residual norm 3.280839e-06\n",
       "  5 (restart 0) KSP residual norm 9.491080e-07\n",
       "  6 (restart 0) KSP residual norm 2.624544e-07\n",
       "  7 (restart 0) KSP residual norm 8.352962e-08\n",
       "  8 (restart 0) KSP residual norm 2.192863e-08\n",
       "  9 (restart 0) KSP residual norm 6.483661e-09\n",
       " 10 (restart 0) KSP residual norm 1.980363e-09\n",
       " 11 (restart 0) KSP residual norm 5.815128e-10\n",
       " 12 (restart 0) KSP residual norm 1.800926e-10\n",
       " 13 (restart 0) KSP residual norm 5.414473e-11\n",
       " 14 (restart 0) KSP residual norm 1.750020e-11\n",
       " 15 (restart 0) KSP residual norm 5.717477e-12\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.774e-01)\n",
       "\n",
       "Greedy iteration 1 (n = 4): ω* = 2.508e+09 GHz (1.051e+06), error = 9.450e-03, memory = 0/2\n",
       " Field energy E (4.042e-23 J) + H (2.492e-30 J) = 4.042e-23 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 8.589526e-03\n",
       "  1 (restart 0) KSP residual norm 1.389133e-03\n",
       "  2 (restart 0) KSP residual norm 3.269304e-04\n",
       "  3 (restart 0) KSP residual norm 7.644454e-05\n",
       "  4 (restart 0) KSP residual norm 2.158921e-05\n",
       "  5 (restart 0) KSP residual norm 6.326304e-06\n",
       "  6 (restart 0) KSP residual norm 1.764160e-06\n",
       "  7 (restart 0) KSP residual norm 5.622444e-07\n",
       "  8 (restart 0) KSP residual norm 1.504320e-07\n",
       "  9 (restart 0) KSP residual norm 4.392427e-08\n",
       " 10 (restart 0) KSP residual norm 1.321766e-08\n",
       " 11 (restart 0) KSP residual norm 3.989935e-09\n",
       " 12 (restart 0) KSP residual norm 1.246503e-09\n",
       " 13 (restart 0) KSP residual norm 3.786435e-10\n",
       " 14 (restart 0) KSP residual norm 1.269019e-10\n",
       " 15 (restart 0) KSP residual norm 4.231475e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.794e-01)\n",
       "\n",
       "Greedy iteration 2 (n = 6): ω* = 3.781e+08 GHz (1.585e+05), error = 5.083e-02, memory = 0/2\n",
       " Field energy E (1.773e-21 J) + H (4.773e-27 J) = 1.773e-21 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 2.321491e-02\n",
       "  1 (restart 0) KSP residual norm 3.797156e-03\n",
       "  2 (restart 0) KSP residual norm 8.685248e-04\n",
       "  3 (restart 0) KSP residual norm 2.058336e-04\n",
       "  4 (restart 0) KSP residual norm 5.916463e-05\n",
       "  5 (restart 0) KSP residual norm 1.769028e-05\n",
       "  6 (restart 0) KSP residual norm 5.033822e-06\n",
       "  7 (restart 0) KSP residual norm 1.390467e-06\n",
       "  8 (restart 0) KSP residual norm 3.697077e-07\n",
       "  9 (restart 0) KSP residual norm 1.090740e-07\n",
       " 10 (restart 0) KSP residual norm 3.463475e-08\n",
       " 11 (restart 0) KSP residual norm 1.227062e-08\n",
       " 12 (restart 0) KSP residual norm 3.591990e-09\n",
       " 13 (restart 0) KSP residual norm 1.030211e-09\n",
       " 14 (restart 0) KSP residual norm 3.377128e-10\n",
       " 15 (restart 0) KSP residual norm 1.026132e-10\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.774e-01)\n",
       "\n",
       "Greedy iteration 3 (n = 8): ω* = 1.471e+08 GHz (6.168e+04), error = 9.207e-01, memory = 0/2\n",
       " Field energy E (1.201e-20 J) + H (2.055e-25 J) = 1.201e-20 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 2.217611e-02\n",
       "  1 (restart 0) KSP residual norm 3.627840e-03\n",
       "  2 (restart 0) KSP residual norm 8.301932e-04\n",
       "  3 (restart 0) KSP residual norm 1.967249e-04\n",
       "  4 (restart 0) KSP residual norm 5.654493e-05\n",
       "  5 (restart 0) KSP residual norm 1.691695e-05\n",
       "  6 (restart 0) KSP residual norm 4.812545e-06\n",
       "  7 (restart 0) KSP residual norm 1.328877e-06\n",
       "  8 (restart 0) KSP residual norm 3.532873e-07\n",
       "  9 (restart 0) KSP residual norm 1.042504e-07\n",
       " 10 (restart 0) KSP residual norm 3.311030e-08\n",
       " 11 (restart 0) KSP residual norm 1.172509e-08\n",
       " 12 (restart 0) KSP residual norm 3.432192e-09\n",
       " 13 (restart 0) KSP residual norm 9.846555e-10\n",
       " 14 (restart 0) KSP residual norm 3.228184e-10\n",
       " 15 (restart 0) KSP residual norm 9.813752e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.774e-01)\n",
       "\n",
       "Greedy iteration 4 (n = 10): ω* = 1.541e+08 GHz (6.458e+04), error = 2.312e-03, memory = 0/2\n",
       " Field energy E (1.096e-20 J) + H (1.712e-25 J) = 1.096e-20 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 3.085741e-03\n",
       "  1 (restart 0) KSP residual norm 4.297977e-04\n",
       "  2 (restart 0) KSP residual norm 1.304508e-04\n",
       "  3 (restart 0) KSP residual norm 2.737680e-05\n",
       "  4 (restart 0) KSP residual norm 7.523828e-06\n",
       "  5 (restart 0) KSP residual norm 2.427310e-06\n",
       "  6 (restart 0) KSP residual norm 6.206433e-07\n",
       "  7 (restart 0) KSP residual norm 1.773452e-07\n",
       "  8 (restart 0) KSP residual norm 5.196661e-08\n",
       "  9 (restart 0) KSP residual norm 1.535836e-08\n",
       " 10 (restart 0) KSP residual norm 4.947127e-09\n",
       " 11 (restart 0) KSP residual norm 1.668020e-09\n",
       " 12 (restart 0) KSP residual norm 4.715210e-10\n",
       " 13 (restart 0) KSP residual norm 1.550062e-10\n",
       " 14 (restart 0) KSP residual norm 5.413027e-11\n",
       " 15 (restart 0) KSP residual norm 1.833514e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.829e-01)\n",
       "\n",
       "Greedy iteration 5 (n = 12): ω* = 9.242e+08 GHz (3.874e+05), error = 2.757e-01, memory = 0/2\n",
       " Field energy E (2.357e-22 J) + H (2.272e-28 J) = 2.357e-22 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 3.324031e-02\n",
       "  1 (restart 0) KSP residual norm 5.248691e-03\n",
       "  2 (restart 0) KSP residual norm 1.244039e-03\n",
       "  3 (restart 0) KSP residual norm 2.801188e-04\n",
       "  4 (restart 0) KSP residual norm 7.614225e-05\n",
       "  5 (restart 0) KSP residual norm 2.226387e-05\n",
       "  6 (restart 0) KSP residual norm 6.011926e-06\n",
       "  7 (restart 0) KSP residual norm 1.930473e-06\n",
       "  8 (restart 0) KSP residual norm 5.394471e-07\n",
       "  9 (restart 0) KSP residual norm 1.575413e-07\n",
       " 10 (restart 0) KSP residual norm 4.585098e-08\n",
       " 11 (restart 0) KSP residual norm 1.395260e-08\n",
       " 12 (restart 0) KSP residual norm 4.337396e-09\n",
       " 13 (restart 0) KSP residual norm 1.341189e-09\n",
       " 14 (restart 0) KSP residual norm 4.546844e-10\n",
       " 15 (restart 0) KSP residual norm 1.517686e-10\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.780e-01)\n",
       "\n",
       "Greedy iteration 6 (n = 14): ω* = 1.025e+08 GHz (4.295e+04), error = 2.829e-04, memory = 1/2\n",
       " Field energy E (2.482e-20 J) + H (8.923e-25 J) = 2.483e-20 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 4.944732e-03\n",
       "  1 (restart 0) KSP residual norm 8.004786e-04\n",
       "  2 (restart 0) KSP residual norm 1.883621e-04\n",
       "  3 (restart 0) KSP residual norm 4.403357e-05\n",
       "  4 (restart 0) KSP residual norm 1.241593e-05\n",
       "  5 (restart 0) KSP residual norm 3.642369e-06\n",
       "  6 (restart 0) KSP residual norm 1.016228e-06\n",
       "  7 (restart 0) KSP residual norm 3.239786e-07\n",
       "  8 (restart 0) KSP residual norm 8.682943e-08\n",
       "  9 (restart 0) KSP residual norm 2.534104e-08\n",
       " 10 (restart 0) KSP residual norm 7.611869e-09\n",
       " 11 (restart 0) KSP residual norm 2.299630e-09\n",
       " 12 (restart 0) KSP residual norm 7.192548e-10\n",
       " 13 (restart 0) KSP residual norm 2.188930e-10\n",
       " 14 (restart 0) KSP residual norm 7.345398e-11\n",
       " 15 (restart 0) KSP residual norm 2.454355e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.795e-01)\n",
       "\n",
       "Greedy iteration 7 (n = 16): ω* = 6.559e+08 GHz (2.749e+05), error = 1.941e-03, memory = 0/2\n",
       " Field energy E (5.885e-22 J) + H (5.264e-28 J) = 5.885e-22 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 6.658615e-03\n",
       "  1 (restart 0) KSP residual norm 1.079797e-03\n",
       "  2 (restart 0) KSP residual norm 2.542701e-04\n",
       "  3 (restart 0) KSP residual norm 5.945282e-05\n",
       "  4 (restart 0) KSP residual norm 1.674528e-05\n",
       "  5 (restart 0) KSP residual norm 4.910994e-06\n",
       "  6 (restart 0) KSP residual norm 1.370025e-06\n",
       "  7 (restart 0) KSP residual norm 4.365398e-07\n",
       "  8 (restart 0) KSP residual norm 1.170160e-07\n",
       "  9 (restart 0) KSP residual norm 3.421259e-08\n",
       " 10 (restart 0) KSP residual norm 1.028646e-08\n",
       " 11 (restart 0) KSP residual norm 3.105295e-09\n",
       " 12 (restart 0) KSP residual norm 9.705149e-10\n",
       " 13 (restart 0) KSP residual norm 2.951663e-10\n",
       " 14 (restart 0) KSP residual norm 9.893597e-11\n",
       " 15 (restart 0) KSP residual norm 3.306664e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.795e-01)\n",
       "\n",
       "Greedy iteration 8 (n = 18): ω* = 4.865e+08 GHz (2.039e+05), error = 7.173e-04, memory = 1/2\n",
       " Field energy E (1.069e-21 J) + H (1.737e-27 J) = 1.069e-21 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 3.161325e-03\n",
       "  1 (restart 0) KSP residual norm 5.078547e-04\n",
       "  2 (restart 0) KSP residual norm 1.193031e-04\n",
       "  3 (restart 0) KSP residual norm 2.779399e-05\n",
       "  4 (restart 0) KSP residual norm 7.893344e-06\n",
       "  5 (restart 0) KSP residual norm 2.317864e-06\n",
       "  6 (restart 0) KSP residual norm 6.403803e-07\n",
       "  7 (restart 0) KSP residual norm 2.037597e-07\n",
       "  8 (restart 0) KSP residual norm 5.459378e-08\n",
       "  9 (restart 0) KSP residual norm 1.596461e-08\n",
       " 10 (restart 0) KSP residual norm 4.802898e-09\n",
       " 11 (restart 0) KSP residual norm 1.455956e-09\n",
       " 12 (restart 0) KSP residual norm 4.534182e-10\n",
       " 13 (restart 0) KSP residual norm 1.368298e-10\n",
       " 14 (restart 0) KSP residual norm 4.600283e-11\n",
       " 15 (restart 0) KSP residual norm 1.539817e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.792e-01)\n",
       "\n",
       "Greedy iteration 9 (n = 20): ω* = 1.049e+09 GHz (4.396e+05), error = 1.402e-02, memory = 0/2\n",
       " Field energy E (2.333e-22 J) + H (8.112e-29 J) = 2.333e-22 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 3.390659e-03\n",
       "  1 (restart 0) KSP residual norm 5.649379e-04\n",
       "  2 (restart 0) KSP residual norm 1.362767e-04\n",
       "  3 (restart 0) KSP residual norm 3.224814e-05\n",
       "  4 (restart 0) KSP residual norm 8.762497e-06\n",
       "  5 (restart 0) KSP residual norm 2.649698e-06\n",
       "  6 (restart 0) KSP residual norm 7.327218e-07\n",
       "  7 (restart 0) KSP residual norm 2.270568e-07\n",
       "  8 (restart 0) KSP residual norm 6.234927e-08\n",
       "  9 (restart 0) KSP residual norm 1.880698e-08\n",
       " 10 (restart 0) KSP residual norm 5.697282e-09\n",
       " 11 (restart 0) KSP residual norm 1.762269e-09\n",
       " 12 (restart 0) KSP residual norm 5.440863e-10\n",
       " 13 (restart 0) KSP residual norm 1.657790e-10\n",
       " 14 (restart 0) KSP residual norm 5.618661e-11\n",
       " 15 (restart 0) KSP residual norm 1.947515e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.822e-01)\n",
       "\n",
       "Greedy iteration 10 (n = 22): ω* = 9.023e+08 GHz (3.782e+05), error = 1.915e-03, memory = 0/2\n",
       " Field energy E (2.952e-22 J) + H (1.519e-28 J) = 2.952e-22 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 3.980381e-03\n",
       "  1 (restart 0) KSP residual norm 6.302270e-04\n",
       "  2 (restart 0) KSP residual norm 1.475784e-04\n",
       "  3 (restart 0) KSP residual norm 3.663891e-05\n",
       "  4 (restart 0) KSP residual norm 1.044444e-05\n",
       "  5 (restart 0) KSP residual norm 3.037727e-06\n",
       "  6 (restart 0) KSP residual norm 8.079626e-07\n",
       "  7 (restart 0) KSP residual norm 2.500474e-07\n",
       "  8 (restart 0) KSP residual norm 6.249828e-08\n",
       "  9 (restart 0) KSP residual norm 1.850549e-08\n",
       " 10 (restart 0) KSP residual norm 5.753719e-09\n",
       " 11 (restart 0) KSP residual norm 1.709090e-09\n",
       " 12 (restart 0) KSP residual norm 5.147738e-10\n",
       " 13 (restart 0) KSP residual norm 1.496474e-10\n",
       " 14 (restart 0) KSP residual norm 4.694470e-11\n",
       " 15 (restart 0) KSP residual norm 1.415019e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.734e-01)\n",
       "\n",
       "Greedy iteration 11 (n = 24): ω* = 8.052e+08 GHz (3.375e+05), error = 2.978e-03, memory = 0/2\n",
       " Field energy E (3.922e-22 J) + H (2.609e-28 J) = 3.922e-22 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 1.517726e-02\n",
       "  1 (restart 0) KSP residual norm 2.401170e-03\n",
       "  2 (restart 0) KSP residual norm 5.685956e-04\n",
       "  3 (restart 0) KSP residual norm 1.283583e-04\n",
       "  4 (restart 0) KSP residual norm 3.502500e-05\n",
       "  5 (restart 0) KSP residual norm 1.026028e-05\n",
       "  6 (restart 0) KSP residual norm 2.774066e-06\n",
       "  7 (restart 0) KSP residual norm 8.900681e-07\n",
       "  8 (restart 0) KSP residual norm 2.479926e-07\n",
       "  9 (restart 0) KSP residual norm 7.239098e-08\n",
       " 10 (restart 0) KSP residual norm 2.112602e-08\n",
       " 11 (restart 0) KSP residual norm 6.425430e-09\n",
       " 12 (restart 0) KSP residual norm 1.999899e-09\n",
       " 13 (restart 0) KSP residual norm 6.169388e-10\n",
       " 14 (restart 0) KSP residual norm 2.090354e-10\n",
       " 15 (restart 0) KSP residual norm 6.979465e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.781e-01)\n",
       "\n",
       "Greedy iteration 12 (n = 26): ω* = 2.240e+08 GHz (9.391e+04), error = 6.759e-04, memory = 1/2\n",
       " Field energy E (5.189e-21 J) + H (3.909e-26 J) = 5.189e-21 J\n",
       "\n",
       "  Residual norms for GMRES solve\n",
       "  0 (restart 0) KSP residual norm 1.310843e-02\n",
       "  1 (restart 0) KSP residual norm 2.071291e-03\n",
       "  2 (restart 0) KSP residual norm 4.908662e-04\n",
       "  3 (restart 0) KSP residual norm 1.105118e-04\n",
       "  4 (restart 0) KSP residual norm 3.002711e-05\n",
       "  5 (restart 0) KSP residual norm 8.777256e-06\n",
       "  6 (restart 0) KSP residual norm 2.369992e-06\n",
       "  7 (restart 0) KSP residual norm 7.611967e-07\n",
       "  8 (restart 0) KSP residual norm 2.126860e-07\n",
       "  9 (restart 0) KSP residual norm 6.212132e-08\n",
       " 10 (restart 0) KSP residual norm 1.808337e-08\n",
       " 11 (restart 0) KSP residual norm 5.499813e-09\n",
       " 12 (restart 0) KSP residual norm 1.709764e-09\n",
       " 13 (restart 0) KSP residual norm 5.287516e-10\n",
       " 14 (restart 0) KSP residual norm 1.792702e-10\n",
       " 15 (restart 0) KSP residual norm 5.982246e-11\n",
       "GMRES solver converged in 15 iterations (avg. reduction factor: 2.779e-01)\n",
       "\n",
       "Greedy iteration 13 (n = 28): ω* = 2.598e+08 GHz (1.089e+05), error = 2.557e-05, memory = 2/2\n",
       " Field energy E (3.862e-21 J) + H (2.160e-26 J) = 3.862e-21 J\n",
       "\n",
       "Adaptive sampling converged with 15 frequency samples:\n",
       " n = 30, error = 2.557e-05, tol = 1.000e-03, memory = 2/2\n",
       " Sampled frequencies (GHz): 1.000e+08, 5.000e+09, 2.508e+09, 3.781e+08,\n",
       "                            1.471e+08, 1.541e+08, 9.242e+08, 1.025e+08,\n",
       "                            6.559e+08, 4.865e+08, 1.049e+09, 9.023e+08,\n",
       "                            8.052e+08, 2.240e+08, 2.598e+08\n",
       " Sample errors: inf, inf, 9.450e-03, 5.083e-02, 9.207e-01,\n",
       "                2.312e-03, 2.757e-01, 2.829e-04, 1.941e-03, 7.173e-04,\n",
       "                1.402e-02, 1.915e-03, 2.978e-03, 6.759e-04, 2.557e-05\n",
       " Total offline phase elapsed time: 1.63e+01 s\n",
       "\n",
       "Beginning fast frequency sweep online phase\n",
       "\n",
       "It 1/50: ω/2π = 1.000e+08 GHz (total elapsed time = 1.63e+01 s)\n",
       "\n",
       " Sol. ||E|| = 4.654870e-02\n",
       " Field energy E (2.606e-20 J) + H (9.837e-25 J) = 2.607e-20 J\n",
       " S[1][1] = -9.999e-01-1.638e-02i, |S[1][1]| = -6.177e-05, arg(S[1][1]) = -1.791e+02\n",
       " S[2][1] = -2.181e-25-4.932e-25i, |S[2][1]| = -4.854e+02, arg(S[2][1]) = -1.139e+02\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 1\n",
       "\n",
       "It 2/50: ω/2π = 2.000e+08 GHz (total elapsed time = 1.67e+01 s)\n",
       "\n",
       " Sol. ||E|| = 2.312662e-02\n",
       " Field energy E (6.494e-21 J) + H (6.166e-26 J) = 6.494e-21 J\n",
       " S[1][1] = -1.000e+00-8.160e-03i, |S[1][1]| = -1.565e-05, arg(S[1][1]) = -1.795e+02\n",
       " S[2][1] = -6.188e-26-1.690e-25i, |S[2][1]| = -4.949e+02, arg(S[2][1]) = -1.101e+02\n",
       "\n",
       "It 3/50: ω/2π = 3.000e+08 GHz (total elapsed time = 1.67e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.550626e-02\n",
       " Field energy E (2.895e-21 J) + H (1.214e-26 J) = 2.895e-21 J\n",
       " S[1][1] = -1.000e+00-5.457e-03i, |S[1][1]| = -6.863e-06, arg(S[1][1]) = -1.797e+02\n",
       " S[2][1] = -1.575e-24-6.457e-24i, |S[2][1]| = -4.635e+02, arg(S[2][1]) = -1.037e+02\n",
       "\n",
       "It 4/50: ω/2π = 4.000e+08 GHz (total elapsed time = 1.67e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.108176e-02\n",
       " Field energy E (1.584e-21 J) + H (3.808e-27 J) = 1.584e-21 J\n",
       " S[1][1] = -1.000e+00-3.981e-03i, |S[1][1]| = -4.587e-06, arg(S[1][1]) = -1.798e+02\n",
       " S[2][1] = +1.181e-24-5.241e-24i, |S[2][1]| = -4.654e+02, arg(S[2][1]) = -7.731e+01\n",
       "\n",
       "It 5/50: ω/2π = 5.000e+08 GHz (total elapsed time = 1.67e+01 s)\n",
       "\n",
       " Sol. ||E|| = 8.836765e-03\n",
       " Field energy E (1.011e-21 J) + H (1.555e-27 J) = 1.011e-21 J\n",
       " S[1][1] = -1.000e+00-3.176e-03i, |S[1][1]| = -2.980e-06, arg(S[1][1]) = -1.798e+02\n",
       " S[2][1] = +1.210e-24-4.208e-24i, |S[2][1]| = -4.672e+02, arg(S[2][1]) = -7.396e+01\n",
       "\n",
       "It 6/50: ω/2π = 6.000e+08 GHz (total elapsed time = 1.67e+01 s)\n",
       "\n",
       " Sol. ||E|| = 7.362979e-03\n",
       " Field energy E (7.022e-22 J) + H (7.502e-28 J) = 7.022e-22 J\n",
       " S[1][1] = -1.000e+00-2.647e-03i, |S[1][1]| = -2.069e-06, arg(S[1][1]) = -1.798e+02\n",
       " S[2][1] = +1.277e-24-3.467e-24i, |S[2][1]| = -4.686e+02, arg(S[2][1]) = -6.977e+01\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 6\n",
       "\n",
       "It 7/50: ω/2π = 7.000e+08 GHz (total elapsed time = 1.71e+01 s)\n",
       "\n",
       " Sol. ||E|| = 6.308666e-03\n",
       " Field energy E (5.161e-22 J) + H (4.049e-28 J) = 5.161e-22 J\n",
       " S[1][1] = -1.000e+00-2.270e-03i, |S[1][1]| = -1.522e-06, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = -6.192e-26-2.234e-24i, |S[2][1]| = -4.730e+02, arg(S[2][1]) = -9.159e+01\n",
       "\n",
       "It 8/50: ω/2π = 8.000e+08 GHz (total elapsed time = 1.71e+01 s)\n",
       "\n",
       " Sol. ||E|| = 5.425996e-03\n",
       " Field energy E (4.001e-22 J) + H (2.509e-28 J) = 4.001e-22 J\n",
       " S[1][1] = -1.000e+00-2.011e-03i, |S[1][1]| = -1.259e-06, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = +4.303e-28-2.628e-24i, |S[2][1]| = -4.716e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 9/50: ω/2π = 9.000e+08 GHz (total elapsed time = 1.71e+01 s)\n",
       "\n",
       " Sol. ||E|| = 5.042555e-03\n",
       " Field energy E (3.173e-22 J) + H (1.502e-28 J) = 3.173e-22 J\n",
       " S[1][1] = -1.000e+00-1.794e-03i, |S[1][1]| = -8.323e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = -7.684e-28-2.015e-24i, |S[2][1]| = -4.739e+02, arg(S[2][1]) = -9.002e+01\n",
       "\n",
       "It 10/50: ω/2π = 1.000e+09 GHz (total elapsed time = 1.71e+01 s)\n",
       "\n",
       " Sol. ||E|| = 4.379527e-03\n",
       " Field energy E (2.560e-22 J) + H (1.020e-28 J) = 2.560e-22 J\n",
       " S[1][1] = -1.000e+00-1.609e-03i, |S[1][1]| = -7.844e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = +7.058e-28-2.130e-24i, |S[2][1]| = -4.734e+02, arg(S[2][1]) = -8.998e+01\n",
       "\n",
       "It 11/50: ω/2π = 1.100e+09 GHz (total elapsed time = 1.72e+01 s)\n",
       "\n",
       " Sol. ||E|| = 3.967303e-03\n",
       " Field energy E (2.065e-22 J) + H (6.630e-29 J) = 2.065e-22 J\n",
       " S[1][1] = -1.000e+00-1.427e-03i, |S[1][1]| = -6.408e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = +1.383e-25-1.608e-24i, |S[2][1]| = -4.758e+02, arg(S[2][1]) = -8.509e+01\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 11\n",
       "\n",
       "It 12/50: ω/2π = 1.200e+09 GHz (total elapsed time = 1.75e+01 s)\n",
       "\n",
       " Sol. ||E|| = 3.599522e-03\n",
       " Field energy E (1.768e-22 J) + H (4.840e-29 J) = 1.768e-22 J\n",
       " S[1][1] = -1.000e+00-1.333e-03i, |S[1][1]| = -5.763e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = +3.983e-28-1.767e-24i, |S[2][1]| = -4.751e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 13/50: ω/2π = 1.300e+09 GHz (total elapsed time = 1.75e+01 s)\n",
       "\n",
       " Sol. ||E|| = 3.363511e-03\n",
       " Field energy E (1.482e-22 J) + H (3.386e-29 J) = 1.482e-22 J\n",
       " S[1][1] = -1.000e+00-1.210e-03i, |S[1][1]| = -4.657e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = -8.014e-26-1.613e-24i, |S[2][1]| = -4.758e+02, arg(S[2][1]) = -9.284e+01\n",
       "\n",
       "It 14/50: ω/2π = 1.400e+09 GHz (total elapsed time = 1.76e+01 s)\n",
       "\n",
       " Sol. ||E|| = 3.131516e-03\n",
       " Field energy E (1.296e-22 J) + H (2.560e-29 J) = 1.296e-22 J\n",
       " S[1][1] = -1.000e+00-1.140e-03i, |S[1][1]| = -4.014e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = +2.330e-28-1.616e-24i, |S[2][1]| = -4.758e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 15/50: ω/2π = 1.500e+09 GHz (total elapsed time = 1.76e+01 s)\n",
       "\n",
       " Sol. ||E|| = 2.917629e-03\n",
       " Field energy E (1.130e-22 J) + H (1.949e-29 J) = 1.130e-22 J\n",
       " S[1][1] = -1.000e+00-1.065e-03i, |S[1][1]| = -3.520e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = +2.249e-28-1.516e-24i, |S[2][1]| = -4.764e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 16/50: ω/2π = 1.600e+09 GHz (total elapsed time = 1.76e+01 s)\n",
       "\n",
       " Sol. ||E|| = 2.745706e-03\n",
       " Field energy E (9.916e-23 J) + H (1.497e-29 J) = 9.916e-23 J\n",
       " S[1][1] = -1.000e+00-9.969e-04i, |S[1][1]| = -3.045e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = +1.829e-28-1.450e-24i, |S[2][1]| = -4.768e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 16\n",
       "\n",
       "It 17/50: ω/2π = 1.700e+09 GHz (total elapsed time = 1.79e+01 s)\n",
       "\n",
       " Sol. ||E|| = 2.571554e-03\n",
       " Field energy E (8.804e-23 J) + H (1.185e-29 J) = 8.804e-23 J\n",
       " S[1][1] = -1.000e+00-9.404e-04i, |S[1][1]| = -2.752e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = +1.725e-28-1.322e-24i, |S[2][1]| = -4.776e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 18/50: ω/2π = 1.800e+09 GHz (total elapsed time = 1.80e+01 s)\n",
       "\n",
       " Sol. ||E|| = 2.432450e-03\n",
       " Field energy E (7.846e-23 J) + H (9.396e-30 J) = 7.846e-23 J\n",
       " S[1][1] = -1.000e+00-8.874e-04i, |S[1][1]| = -2.441e-07, arg(S[1][1]) = -1.799e+02\n",
       " S[2][1] = +1.640e-28-1.270e-24i, |S[2][1]| = -4.779e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 19/50: ω/2π = 1.900e+09 GHz (total elapsed time = 1.80e+01 s)\n",
       "\n",
       " Sol. ||E|| = 2.310298e-03\n",
       " Field energy E (7.032e-23 J) + H (7.531e-30 J) = 7.032e-23 J\n",
       " S[1][1] = -1.000e+00-8.395e-04i, |S[1][1]| = -2.168e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +1.300e-28-1.213e-24i, |S[2][1]| = -4.783e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 20/50: ω/2π = 2.000e+09 GHz (total elapsed time = 1.80e+01 s)\n",
       "\n",
       " Sol. ||E|| = 2.188618e-03\n",
       " Field energy E (6.358e-23 J) + H (6.173e-30 J) = 6.358e-23 J\n",
       " S[1][1] = -1.000e+00-7.990e-04i, |S[1][1]| = -1.978e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +1.150e-28-1.135e-24i, |S[2][1]| = -4.789e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 21/50: ω/2π = 2.100e+09 GHz (total elapsed time = 1.80e+01 s)\n",
       "\n",
       " Sol. ||E|| = 2.089052e-03\n",
       " Field energy E (5.768e-23 J) + H (5.074e-30 J) = 5.768e-23 J\n",
       " S[1][1] = -1.000e+00-7.610e-04i, |S[1][1]| = -1.778e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +1.095e-28-1.085e-24i, |S[2][1]| = -4.793e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 21\n",
       "\n",
       "It 22/50: ω/2π = 2.200e+09 GHz (total elapsed time = 1.84e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.993935e-03\n",
       " Field energy E (5.249e-23 J) + H (4.198e-30 J) = 5.249e-23 J\n",
       " S[1][1] = -1.000e+00-7.256e-04i, |S[1][1]| = -1.622e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +1.077e-28-1.035e-24i, |S[2][1]| = -4.797e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 23/50: ω/2π = 2.300e+09 GHz (total elapsed time = 1.84e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.905875e-03\n",
       " Field energy E (4.801e-23 J) + H (3.512e-30 J) = 4.801e-23 J\n",
       " S[1][1] = -1.000e+00-6.937e-04i, |S[1][1]| = -1.490e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +8.571e-29-9.839e-25i, |S[2][1]| = -4.801e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 24/50: ω/2π = 2.400e+09 GHz (total elapsed time = 1.84e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.825102e-03\n",
       " Field energy E (4.415e-23 J) + H (2.975e-30 J) = 4.415e-23 J\n",
       " S[1][1] = -1.000e+00-6.658e-04i, |S[1][1]| = -1.370e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +6.816e-29-9.470e-25i, |S[2][1]| = -4.805e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 25/50: ω/2π = 2.500e+09 GHz (total elapsed time = 1.84e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.752179e-03\n",
       " Field energy E (4.070e-23 J) + H (2.530e-30 J) = 4.070e-23 J\n",
       " S[1][1] = -1.000e+00-6.394e-04i, |S[1][1]| = -1.263e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +9.148e-29-9.177e-25i, |S[2][1]| = -4.807e+02, arg(S[2][1]) = -8.999e+01\n",
       "\n",
       "It 26/50: ω/2π = 2.600e+09 GHz (total elapsed time = 1.84e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.691674e-03\n",
       " Field energy E (3.753e-23 J) + H (2.144e-30 J) = 3.753e-23 J\n",
       " S[1][1] = -1.000e+00-6.131e-04i, |S[1][1]| = -1.145e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +6.777e-29-8.916e-25i, |S[2][1]| = -4.810e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 26\n",
       "\n",
       "It 27/50: ω/2π = 2.700e+09 GHz (total elapsed time = 1.88e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.636322e-03\n",
       " Field energy E (3.474e-23 J) + H (1.835e-30 J) = 3.474e-23 J\n",
       " S[1][1] = -1.000e+00-5.894e-04i, |S[1][1]| = -1.041e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +6.420e-29-8.616e-25i, |S[2][1]| = -4.813e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 28/50: ω/2π = 2.800e+09 GHz (total elapsed time = 1.88e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.563825e-03\n",
       " Field energy E (3.243e-23 J) + H (1.605e-30 J) = 3.243e-23 J\n",
       " S[1][1] = -1.000e+00-5.705e-04i, |S[1][1]| = -1.008e-07, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +6.366e-29-8.131e-25i, |S[2][1]| = -4.818e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 29/50: ω/2π = 2.900e+09 GHz (total elapsed time = 1.88e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.517705e-03\n",
       " Field energy E (3.017e-23 J) + H (1.385e-30 J) = 3.017e-23 J\n",
       " S[1][1] = -1.000e+00-5.497e-04i, |S[1][1]| = -9.181e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +5.617e-29-7.949e-25i, |S[2][1]| = -4.820e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 30/50: ω/2π = 3.000e+09 GHz (total elapsed time = 1.88e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.463246e-03\n",
       " Field energy E (2.824e-23 J) + H (1.216e-30 J) = 2.824e-23 J\n",
       " S[1][1] = -1.000e+00-5.324e-04i, |S[1][1]| = -8.688e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +5.077e-29-7.660e-25i, |S[2][1]| = -4.823e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 31/50: ω/2π = 3.100e+09 GHz (total elapsed time = 1.88e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.416504e-03\n",
       " Field energy E (2.642e-23 J) + H (1.063e-30 J) = 2.642e-23 J\n",
       " S[1][1] = -1.000e+00-5.147e-04i, |S[1][1]| = -8.142e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +5.237e-29-7.398e-25i, |S[2][1]| = -4.826e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 31\n",
       "\n",
       "It 32/50: ω/2π = 3.200e+09 GHz (total elapsed time = 1.92e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.373495e-03\n",
       " Field energy E (2.482e-23 J) + H (9.382e-31 J) = 2.482e-23 J\n",
       " S[1][1] = -1.000e+00-4.990e-04i, |S[1][1]| = -7.598e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +4.806e-29-7.244e-25i, |S[2][1]| = -4.828e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 33/50: ω/2π = 3.300e+09 GHz (total elapsed time = 1.92e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.329072e-03\n",
       " Field energy E (2.333e-23 J) + H (8.293e-31 J) = 2.333e-23 J\n",
       " S[1][1] = -1.000e+00-4.837e-04i, |S[1][1]| = -7.211e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +4.581e-29-6.928e-25i, |S[2][1]| = -4.832e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 34/50: ω/2π = 3.400e+09 GHz (total elapsed time = 1.92e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.287557e-03\n",
       " Field energy E (2.199e-23 J) + H (7.381e-31 J) = 2.199e-23 J\n",
       " S[1][1] = -1.000e+00-4.698e-04i, |S[1][1]| = -6.844e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +4.685e-29-6.720e-25i, |S[2][1]| = -4.835e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 35/50: ω/2π = 3.500e+09 GHz (total elapsed time = 1.92e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.250694e-03\n",
       " Field energy E (2.077e-23 J) + H (6.591e-31 J) = 2.077e-23 J\n",
       " S[1][1] = -1.000e+00-4.568e-04i, |S[1][1]| = -6.454e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +4.147e-29-6.448e-25i, |S[2][1]| = -4.838e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 36/50: ω/2π = 3.600e+09 GHz (total elapsed time = 1.93e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.218900e-03\n",
       " Field energy E (1.962e-23 J) + H (5.871e-31 J) = 1.962e-23 J\n",
       " S[1][1] = -1.000e+00-4.439e-04i, |S[1][1]| = -6.045e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +3.968e-29-6.310e-25i, |S[2][1]| = -4.840e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 36\n",
       "\n",
       "It 37/50: ω/2π = 3.700e+09 GHz (total elapsed time = 1.96e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.183732e-03\n",
       " Field energy E (1.858e-23 J) + H (5.273e-31 J) = 1.858e-23 J\n",
       " S[1][1] = -1.000e+00-4.320e-04i, |S[1][1]| = -5.766e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +3.583e-29-6.136e-25i, |S[2][1]| = -4.842e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 38/50: ω/2π = 3.800e+09 GHz (total elapsed time = 1.96e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.153931e-03\n",
       " Field energy E (1.759e-23 J) + H (4.718e-31 J) = 1.759e-23 J\n",
       " S[1][1] = -1.000e+00-4.201e-04i, |S[1][1]| = -5.448e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +3.497e-29-5.974e-25i, |S[2][1]| = -4.845e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 39/50: ω/2π = 3.900e+09 GHz (total elapsed time = 1.97e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.123109e-03\n",
       " Field energy E (1.672e-23 J) + H (4.264e-31 J) = 1.672e-23 J\n",
       " S[1][1] = -1.000e+00-4.096e-04i, |S[1][1]| = -5.189e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +3.216e-29-5.815e-25i, |S[2][1]| = -4.847e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 40/50: ω/2π = 4.000e+09 GHz (total elapsed time = 1.97e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.094609e-03\n",
       " Field energy E (1.589e-23 J) + H (3.852e-31 J) = 1.589e-23 J\n",
       " S[1][1] = -1.000e+00-3.993e-04i, |S[1][1]| = -4.944e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +3.488e-29-5.673e-25i, |S[2][1]| = -4.849e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 41/50: ω/2π = 4.100e+09 GHz (total elapsed time = 1.97e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.068361e-03\n",
       " Field energy E (1.512e-23 J) + H (3.486e-31 J) = 1.512e-23 J\n",
       " S[1][1] = -1.000e+00-3.894e-04i, |S[1][1]| = -4.699e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +2.629e-29-5.510e-25i, |S[2][1]| = -4.852e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 41\n",
       "\n",
       "It 42/50: ω/2π = 4.200e+09 GHz (total elapsed time = 2.00e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.047089e-03\n",
       " Field energy E (1.439e-23 J) + H (3.149e-31 J) = 1.439e-23 J\n",
       " S[1][1] = -1.000e+00-3.796e-04i, |S[1][1]| = -4.401e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +2.427e-29-5.459e-25i, |S[2][1]| = -4.853e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 43/50: ω/2π = 4.300e+09 GHz (total elapsed time = 2.01e+01 s)\n",
       "\n",
       " Sol. ||E|| = 1.020236e-03\n",
       " Field energy E (1.374e-23 J) + H (2.877e-31 J) = 1.374e-23 J\n",
       " S[1][1] = -1.000e+00-3.713e-04i, |S[1][1]| = -4.243e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +2.568e-29-5.342e-25i, |S[2][1]| = -4.854e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 44/50: ω/2π = 4.400e+09 GHz (total elapsed time = 2.01e+01 s)\n",
       "\n",
       " Sol. ||E|| = 9.950989e-04\n",
       " Field energy E (1.313e-23 J) + H (2.632e-31 J) = 1.313e-23 J\n",
       " S[1][1] = -1.000e+00-3.631e-04i, |S[1][1]| = -4.085e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +2.696e-29-5.170e-25i, |S[2][1]| = -4.857e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 45/50: ω/2π = 4.500e+09 GHz (total elapsed time = 2.01e+01 s)\n",
       "\n",
       " Sol. ||E|| = 9.733517e-04\n",
       " Field energy E (1.255e-23 J) + H (2.403e-31 J) = 1.255e-23 J\n",
       " S[1][1] = -1.000e+00-3.549e-04i, |S[1][1]| = -3.900e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +2.408e-29-5.087e-25i, |S[2][1]| = -4.859e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 46/50: ω/2π = 4.600e+09 GHz (total elapsed time = 2.01e+01 s)\n",
       "\n",
       " Sol. ||E|| = 9.603041e-04\n",
       " Field energy E (1.195e-23 J) + H (2.176e-31 J) = 1.195e-23 J\n",
       " S[1][1] = -1.000e+00-3.454e-04i, |S[1][1]| = -3.570e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +1.796e-29-5.018e-25i, |S[2][1]| = -4.860e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       " Wrote fields to disk (Paraview) at step 46\n",
       "\n",
       "It 47/50: ω/2π = 4.700e+09 GHz (total elapsed time = 2.05e+01 s)\n",
       "\n",
       " Sol. ||E|| = 9.349203e-04\n",
       " Field energy E (1.148e-23 J) + H (2.004e-31 J) = 1.148e-23 J\n",
       " S[1][1] = -1.000e+00-3.389e-04i, |S[1][1]| = -3.529e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +1.455e-29-4.781e-25i, |S[2][1]| = -4.864e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 48/50: ω/2π = 4.800e+09 GHz (total elapsed time = 2.05e+01 s)\n",
       "\n",
       " Sol. ||E|| = 9.133253e-04\n",
       " Field energy E (1.104e-23 J) + H (1.860e-31 J) = 1.104e-23 J\n",
       " S[1][1] = -1.000e+00-3.330e-04i, |S[1][1]| = -3.410e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +2.151e-29-4.708e-25i, |S[2][1]| = -4.865e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 49/50: ω/2π = 4.900e+09 GHz (total elapsed time = 2.05e+01 s)\n",
       "\n",
       " Sol. ||E|| = 8.934038e-04\n",
       " Field energy E (1.059e-23 J) + H (1.712e-31 J) = 1.059e-23 J\n",
       " S[1][1] = -1.000e+00-3.260e-04i, |S[1][1]| = -3.292e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +2.159e-29-4.702e-25i, |S[2][1]| = -4.866e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "It 50/50: ω/2π = 5.000e+09 GHz (total elapsed time = 2.05e+01 s)\n",
       "\n",
       " Sol. ||E|| = 8.752254e-04\n",
       " Field energy E (1.017e-23 J) + H (1.579e-31 J) = 1.017e-23 J\n",
       " S[1][1] = -1.000e+00-3.195e-04i, |S[1][1]| = -3.170e-08, arg(S[1][1]) = -1.800e+02\n",
       " S[2][1] = +2.180e-29-4.563e-25i, |S[2][1]| = -4.868e+02, arg(S[2][1]) = -9.000e+01\n",
       "\n",
       "Completed 0 iterations of adaptive mesh refinement (AMR):\n",
       " Indicator norm = 6.337e-01, global unknowns = 9108\n",
       " Max. iterations = 0, tol. = 1.000e-02\n",
       "\n",
       "Estimated peak per-rank memory usage is: Min. 134.2M, Max. 134.2M, Avg. 134.2M, Total 134.2M\n",
       "Estimated peak per-node memory usage is: Min. 134.2M, Max. 134.2M, Avg. 134.2M, Total 134.2M\n",
       "\n",
       "Elapsed Time Report (s)           Min.        Max.        Avg.\n",
       "==============================================================\n",
       "Initialization                   0.005       0.005       0.005\n",
       "  Mesh Preprocessing             0.012       0.012       0.012\n",
       "Operator Construction            0.406       0.406       0.406\n",
       "  Wave Ports                     0.312       0.312       0.312\n",
       "Linear Solve                     0.589       0.589       0.589\n",
       "  Setup                          3.065       3.065       3.065\n",
       "  Preconditioner                10.544      10.544      10.544\n",
       "  Coarse Solve                   0.184       0.184       0.184\n",
       "PROM Construction                0.294       0.294       0.294\n",
       "PROM Solve                       0.014       0.014       0.014\n",
       "Estimation                       0.031       0.031       0.031\n",
       "  Construction                   0.064       0.064       0.064\n",
       "  Solve                          1.419       1.419       1.419\n",
       "Postprocessing                   0.256       0.256       0.256\n",
       "  Paraview                       3.441       3.441       3.441\n",
       "Disk IO                          0.004       0.004       0.004\n",
       "--------------------------------------------------------------\n",
       "Total                           20.972      20.972      20.972\n",
       "\n",
       "Peak Memory                   Per-Node       Total   Total HWM\n",
       "==============================================================\n",
       "Initialization                    2.6M        2.6M        2.6M\n",
       "  Mesh Preprocessing              1.8M        1.8M        4.4M\n",
       "Operator Construction            20.1M       20.1M       24.5M\n",
       "  Wave Ports                      2.0M        2.0M       26.5M\n",
       "Linear Solve                      4.6M        4.6M       31.1M\n",
       "  Setup                          26.6M       26.6M       57.6M\n",
       "  Preconditioner                  3.6M        3.6M       61.2M\n",
       "  Coarse Solve                   17.0M       17.0M       78.2M\n",
       "PROM Construction               256.0K      256.0K       78.4M\n",
       "PROM Solve                        0.0K        0.0K       78.4M\n",
       "Estimation                      640.0K      640.0K       79.0M\n",
       "  Construction                   15.0M       15.0M       94.1M\n",
       "  Solve                           0.0K        0.0K       94.1M\n",
       "Postprocessing                  256.0K      256.0K       94.3M\n",
       "  Paraview                        0.0K        0.0K       94.3M\n",
       "Disk IO                           2.1M        2.1M       96.5M\n",
       "--------------------------------------------------------------\n",
       "Total                           108.8M      108.8M      108.8M
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "config_path = \"coax.json\"\n", "\n", "config = generate_palace_config_from_entities(\n", " entity_defs=[e.to_dict() for e in entities],\n", " pg_map=pg_map,\n", " mesh_file=mesh_file,\n", " output_file=config_path,\n", " sim_type=\"driven\",\n", " freq_min=freq_min,\n", " freq_max=freq_max,\n", " freq_step=freq_step,\n", " L0=1e-3,\n", " solver_order=2,\n", ")\n", "\n", "run_palace(config_path)" ] }, { "cell_type": "markdown", "id": "587441fd", "metadata": { "papermill": { "duration": 0.002748, "end_time": "2026-08-04T14:29:10.335167+00:00", "exception": false, "start_time": "2026-08-04T14:29:10.332419+00:00", "status": "completed" }, "tags": [] }, "source": [ "## S parameters" ] }, { "cell_type": "code", "execution_count": 9, "id": "d4d8c594", "metadata": { "execution": { "iopub.execute_input": "2026-08-04T14:29:10.398260Z", "iopub.status.busy": "2026-08-04T14:29:10.398044Z", "iopub.status.idle": "2026-08-04T14:29:10.412566Z", "shell.execute_reply": "2026-08-04T14:29:10.411601Z" }, "papermill": { "duration": 0.019072, "end_time": "2026-08-04T14:29:10.413174+00:00", "exception": false, "start_time": "2026-08-04T14:29:10.394102+00:00", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "from pathlib import Path\n", "\n", "notebook_dir = Path().resolve()\n", "csv_file = str(notebook_dir / \"postpro\" / \"coax\" / \"port-S.csv\")\n", "\n", "fig, ax = s_params(csv_file)" ] } ], "metadata": { "kernelspec": { "display_name": ".venv (3.12.3.final.0)", "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.12.13" }, "papermill": { "default_parameters": {}, "duration": 25.323847, "end_time": "2026-08-04T14:29:10.830865+00:00", "environment_variables": {}, "exception": null, "input_path": "docs/examples/coax.ipynb", "output_path": "docs/examples/coax.ipynb", "parameters": {}, "start_time": "2026-08-04T14:28:45.507018+00:00", "version": "2.7.0" } }, "nbformat": 4, "nbformat_minor": 5 }