{ "cells": [ { "cell_type": "markdown", "id": "5ed63800", "metadata": { "papermill": { "duration": 0.003751, "end_time": "2026-05-26T01:20:36.739475+00:00", "exception": false, "start_time": "2026-05-26T01:20:36.735724+00:00", "status": "completed" }, "tags": [] }, "source": [ "### Patch Antenna\n", "We now apply a refined mesh for the patch antenna. Because the electromagnetic fields change rapidly near the metallic patch and the substrate edges, we increase the mesh density in these areas to ensure high simulation accuracy for resonance and radiation patterns." ] }, { "cell_type": "code", "execution_count": 1, "id": "9437354e", "metadata": { "execution": { "iopub.execute_input": "2026-05-26T01:20:36.748666Z", "iopub.status.busy": "2026-05-26T01:20:36.748358Z", "iopub.status.idle": "2026-05-26T01:20:37.499637Z", "shell.execute_reply": "2026-05-26T01:20:37.498257Z" }, "papermill": { "duration": 0.757945, "end_time": "2026-05-26T01:20:37.500464+00:00", "exception": false, "start_time": "2026-05-26T01:20:36.742519+00:00", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import gmsh\n", "import math\n", "\n", "from palacetoolkit.plot_farfield import load_data, polar_plots, three_d_plot\n", "from palacetoolkit.postpro import s_params\n", "from palacetoolkit.simulation import generate_palace_config_from_entities\n", "from palacetoolkit.viz import view_mesh\n", "from palacetoolkit.mesh import (\n", " Entity, \n", " run_meshing_pipeline, \n", " generate_3d_mesh, \n", " refine_near_surfaces\n", ")" ] }, { "cell_type": "markdown", "id": "1d956d7d", "metadata": { "papermill": { "duration": 0.002165, "end_time": "2026-05-26T01:20:37.505287+00:00", "exception": false, "start_time": "2026-05-26T01:20:37.503122+00:00", "status": "completed" }, "tags": [] }, "source": [ "\n", "### Parameters:\n", "- l : Patch length along x-axis, specified as a scalar in meters.\n", "- w : Patch width along y-axis, specified as a scalar in meters.\n", "- h : Patch height along z-axis, specified as a scalar in meters. \n", "- l1 : Ground plane length along x-axis, specified as a scalar in meters\n", "- w1 : Ground plane width along y-axis, specified as a scalar in meters\n", "- l2 : Notch length along x-axis, specified as a scalar in meters. \n", "- w2 : Notch width along x-axis, specified as a scalar in meters. \n", "- w3 : Strip line width along y-axis, specified as a scalar in meters.\n", "- airsphere_radius : Air sphere radius, specified as a scalar in meters.\n", "- freq : Simulation frequency in GHz, specified as a scalar.\n", "- filename : Output mesh filename, specified as a string.\n", "- eps_r: relative permittivity of the substrate\n", "- loss_tan: loss tangent of the substrate\n", "- port_impedance: characteristic impedance of the lumped port (Ohms)" ] }, { "cell_type": "code", "execution_count": 2, "id": "4049c4db", "metadata": { "execution": { "iopub.execute_input": "2026-05-26T01:20:37.511184Z", "iopub.status.busy": "2026-05-26T01:20:37.510704Z", "iopub.status.idle": "2026-05-26T01:20:37.516809Z", "shell.execute_reply": "2026-05-26T01:20:37.515100Z" }, "papermill": { "duration": 0.010912, "end_time": "2026-05-26T01:20:37.518361+00:00", "exception": false, "start_time": "2026-05-26T01:20:37.507449+00:00", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "# Patch\n", "l: float = 0.030\n", "w: float = 0.029\n", "\n", "# Ground plane\n", "l1: float = 0.06\n", "w1: float = 0.06\n", "\n", "# Notch\n", "l2: float = 0.008\n", "w2: float = 0.003\n", "\n", "# Feed line\n", "w3: float = 0.002\n", "\n", "# Substrate\n", "h: float = 0.0013\n", "\n", "freq: float = 3.3\n", "eps_r: float = 2.2\n", "loss_tan: float = 0.0009\n", "mu_r = 1.0\n", "port_impedance: float = 50.0\n", "wavelength = 3e8 / (freq * 1e9)\n", "\n", "# Air sphere\n", "airsphere_radius: float = wavelength\n", "\n", "# Filename where the mesh is loadeds\n", "filename = \"patch_antenna.msh\"" ] }, { "cell_type": "markdown", "id": "6d496609", "metadata": { "papermill": { "duration": 0.002318, "end_time": "2026-05-26T01:20:37.523808+00:00", "exception": false, "start_time": "2026-05-26T01:20:37.521490+00:00", "status": "completed" }, "tags": [] }, "source": [ "### Initialize the model" ] }, { "cell_type": "code", "execution_count": 3, "id": "e6a08089", "metadata": { "execution": { "iopub.execute_input": "2026-05-26T01:20:37.530284Z", "iopub.status.busy": "2026-05-26T01:20:37.530065Z", "iopub.status.idle": "2026-05-26T01:20:37.535981Z", "shell.execute_reply": "2026-05-26T01:20:37.534750Z" }, "papermill": { "duration": 0.0107, "end_time": "2026-05-26T01:20:37.536897+00:00", "exception": false, "start_time": "2026-05-26T01:20:37.526197+00:00", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "gmsh.initialize()\n", "gmsh.model.add(\"patch_antenna\")\n", "kernel = gmsh.model.occ" ] }, { "cell_type": "markdown", "id": "783686ab", "metadata": { "papermill": { "duration": 0.002164, "end_time": "2026-05-26T01:20:37.541629+00:00", "exception": false, "start_time": "2026-05-26T01:20:37.539465+00:00", "status": "completed" }, "tags": [] }, "source": [ "### Geometry Construction\n", "In this step, we build the physical structure of the patch antenna. We define the substrate, the metallic ground plane, and the antenna patch itself.\n", "\n", "Patch Design: We combine the main patch and the feed line, including an inset to help with impedance matching.\n", "Excitation: A lumped port is created and positioned to feed the antenna.\n", "Domain Setup: We enclose the entire structure in an \"air sphere,\" which defines the simulation region (the radiation space).\n", "Finalizing: We use boolean operations (fragmenting) to ensure all components are properly connected and recognized as a single cohesive model by the solver." ] }, { "cell_type": "code", "execution_count": 4, "id": "474cc986", "metadata": { "execution": { "iopub.execute_input": "2026-05-26T01:20:37.548181Z", "iopub.status.busy": "2026-05-26T01:20:37.547931Z", "iopub.status.idle": "2026-05-26T01:20:37.562115Z", "shell.execute_reply": "2026-05-26T01:20:37.560500Z" }, "papermill": { "duration": 0.018833, "end_time": "2026-05-26T01:20:37.563257+00:00", "exception": false, "start_time": "2026-05-26T01:20:37.544424+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Info : Cannot bind existing OpenCASCADE surface 8 to second tag 9 \n", "Info : Could not preserve tag of 2D object 9 (->8)\n" ] } ], "source": [ "substrate = kernel.addBox(-l1/2, -w1/2, 0, l1, w1, h)\n", "\n", "# Ground plane\n", "ground_plane = kernel.addRectangle(-l1/2, -w1/2, 0, l1, w1)\n", "\n", "# Patch definition\n", "main_patch = kernel.addRectangle(-l/2, -w/2, h, l, w)\n", "inset = kernel.addRectangle(-l/2, -w2/2, h, l2, w2)\n", "\n", "patch_dimtags, _ = kernel.cut(\n", " [(2, main_patch)], \n", " [(2, inset)], \n", " removeObject=True, removeTool=True\n", ")\n", "kernel.synchronize()\n", "\n", "feed_length = (l1 - l)/2 + l2\n", "feed_line = kernel.addRectangle(-l1/2, -w3/2, h, feed_length, w3)\n", "\n", "# Our patch\n", "top_conductor, _ = kernel.fuse(\n", " patch_dimtags, [(2, feed_line)],\n", " removeObject=True, removeTool=True\n", ")\n", "kernel.synchronize()\n", "\n", "# Gap bewteen the gropund plane and the bottom of the lumped port.\n", "lumped_port = kernel.addRectangle(-l1/2, -w3/2, 0, h, w3)\n", "kernel.rotate([(2, lumped_port)], -l1/2, 0, 0, 0, 1, 0, -math.pi/2)\n", "kernel.synchronize()\n", "\n", "def create_air_sphere(airsphere_radius: float) -> int:\n", " return kernel.addSphere(0.0, 0.0, 0.0, airsphere_radius)\n", "\n", "air_sphere = create_air_sphere(airsphere_radius)\n", "kernel.synchronize()" ] }, { "cell_type": "markdown", "id": "12cb1ff3", "metadata": { "papermill": { "duration": 0.003324, "end_time": "2026-05-26T01:20:37.570657+00:00", "exception": false, "start_time": "2026-05-26T01:20:37.567333+00:00", "status": "completed" }, "tags": [] }, "source": [ "### Entities definition and mesh refinement." ] }, { "cell_type": "code", "execution_count": 5, "id": "fdbadb7b", "metadata": { "execution": { "iopub.execute_input": "2026-05-26T01:20:37.579929Z", "iopub.status.busy": "2026-05-26T01:20:37.579710Z", "iopub.status.idle": "2026-05-26T01:20:45.096905Z", "shell.execute_reply": "2026-05-26T01:20:45.095130Z" }, "papermill": { "duration": 7.521963, "end_time": "2026-05-26T01:20:45.097904+00:00", "exception": false, "start_time": "2026-05-26T01:20:37.575941+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Physical group 'air_sphere' (dim=3): pg=1, tags=[2] \n", " Physical group 'substrate' (dim=3): pg=2, tags=[1]\n", " Physical group 'top_conductor' (dim=2): pg=3, tags=[8]\n", " Physical group 'ground_plane' (dim=2): pg=4, tags=[7]\n", " Physical group 'lumped_port' (dim=2): pg=5, tags=[9]\n", " Physical group 'air_sphere__None' (dim=2): pg=6, tags=[16]\n", " Physical group 'air_sphere__substrate' (dim=2): pg=7, tags=[10, 11, 13, 15, 14, 12]\n", " ppw_near=400 ppw_far=5\n", " SizeMax=0.0182 transition=0.0227\n", " global: 15 curves, SizeMin=0.0002\n", "Info : Meshing 1D...\n", "Info : [ 0%] Meshing curve 45 (Line)\n", "Info : [ 10%] Meshing curve 46 (Line)\n", "Info : [ 10%] Meshing curve 47 (Line)\n", "Info : [ 10%] Meshing curve 48 (Line)\n", "Info : [ 20%] Meshing curve 49 (Line)\n", "Info : [ 20%] Meshing curve 50 (Line)\n", "Info : [ 20%] Meshing curve 51 (Line)\n", "Info : [ 30%] Meshing curve 52 (Line)\n", "Info : [ 30%] Meshing curve 53 (Line)\n", "Info : [ 30%] Meshing curve 54 (Line)\n", "Info : [ 40%] Meshing curve 55 (Line)\n", "Info : [ 40%] Meshing curve 56 (Line)\n", "Info : [ 40%] Meshing curve 57 (Line)\n", "Info : [ 50%] Meshing curve 58 (Line)\n", "Info : [ 50%] Meshing curve 59 (Line)\n", "Info : [ 50%] Meshing curve 60 (Line)\n", "Info : [ 60%] Meshing curve 61 (Line)\n", "Info : [ 60%] Meshing curve 62 (Line)\n", "Info : [ 60%] Meshing curve 63 (Line)\n", "Info : [ 60%] Meshing curve 64 (Line)\n", "Info : [ 70%] Meshing curve 65 (Line)\n", "Info : [ 70%] Meshing curve 66 (Line)\n", "Info : [ 70%] Meshing curve 67 (Line)\n", "Info : [ 80%] Meshing curve 68 (Line)\n", "Info : [ 80%] Meshing curve 69 (Line)\n", "Info : [ 80%] Meshing curve 70 (Line)\n", "Info : [ 90%] Meshing curve 71 (Line)\n", "Info : [ 90%] Meshing curve 72 (Line)\n", "Info : [100%] Meshing curve 74 (Circle)\n", "Info : [100%] Meshing curve 76 (Line)\n", "Info : Done meshing 1D (Wall 0.236431s, CPU 0.227489s)\n", "Info : Meshing 2D...\n", "Info : [ 0%] Meshing surface 7 (Plane, MeshAdapt)\n", "Info : [ 20%] Meshing surface 8 (Plane, MeshAdapt)\n", "Info : [ 30%] Meshing surface 9 (Plane, MeshAdapt)\n", "Info : [ 40%] Meshing surface 10 (Plane, MeshAdapt)\n", "Info : [ 50%] Meshing surface 11 (Plane, MeshAdapt)\n", "Info : [ 60%] Meshing surface 12 (Plane, MeshAdapt)\n", "Info : [ 70%] Meshing surface 13 (Plane, MeshAdapt)\n", "Info : [ 80%] Meshing surface 14 (Plane, MeshAdapt)\n", "Info : [ 90%] Meshing surface 15 (Plane, MeshAdapt)\n", "Info : [100%] Meshing surface 16 (Sphere, MeshAdapt)\n", "Info : Done meshing 2D (Wall 0.373643s, CPU 0.371467s)\n", "Info : Meshing 3D...\n", "Info : 3D Meshing 2 volumes with 1 connected component\n", "Info : Tetrahedrizing 3397 nodes...\n", "Info : Done tetrahedrizing 3405 nodes (Wall 0.0230094s, CPU 0.023024s)\n", "Info : Reconstructing mesh...\n", "Info : - Creating surface mesh\n", "Info : - Identifying boundary edges\n", "Info : - Recovering boundary\n", "Info : Done reconstructing mesh (Wall 0.0450368s, CPU 0.044711s)\n", "Info : Found volume 2\n", "Info : Found volume 1\n", "Info : It. 0 - 0 nodes created - worst tet radius 11.0285 (nodes removed 0 0)\n", "Info : It. 500 - 500 nodes created - worst tet radius 1.43714 (nodes removed 0 0)\n", "Info : It. 1000 - 1000 nodes created - worst tet radius 1.17669 (nodes removed 0 0)\n", "Info : It. 1500 - 1500 nodes created - worst tet radius 1.03815 (nodes removed 0 0)\n", "Info : 3D refinement terminated (5056 nodes total):\n", "Info : - 1 Delaunay cavities modified for star shapeness\n", "Info : - 0 nodes could not be inserted\n", "Info : - 28108 tetrahedra created in 0.102852 sec. (273286 tets/s)\n", "Info : 0 node relocations\n", "Info : Done meshing 3D (Wall 0.196644s, CPU 0.196658s)\n", "Info : Optimizing mesh...\n", "Info : Optimizing volume 1\n", "Info : Optimization starts (volume = 4.68e-06) with worst = 0.00812265 / average = 0.606544:\n", "Info : 0.00 < quality < 0.10 : 32 elements\n", "Info : 0.10 < quality < 0.20 : 103 elements\n", "Info : 0.20 < quality < 0.30 : 252 elements\n", "Info : 0.30 < quality < 0.40 : 666 elements\n", "Info : 0.40 < quality < 0.50 : 1737 elements\n", "Info : 0.50 < quality < 0.60 : 2185 elements\n", "Info : 0.60 < quality < 0.70 : 2006 elements\n", "Info : 0.70 < quality < 0.80 : 1616 elements\n", "Info : 0.80 < quality < 0.90 : 1061 elements\n", "Info : 0.90 < quality < 1.00 : 416 elements\n", "Info : 289 edge swaps, 11 node relocations (volume = 4.68e-06): worst = 0.146028 / average = 0.618471 (Wall 0.0025048s, CPU 0.002533s)\n", "Info : 304 edge swaps, 15 node relocations (volume = 4.68e-06): worst = 0.158684 / average = 0.618763 (Wall 0.00341546s, CPU 0.003466s)\n", "Info : 308 edge swaps, 17 node relocations (volume = 4.68e-06): worst = 0.158684 / average = 0.61881 (Wall 0.00427831s, CPU 0.00435s)\n", "Info : No ill-shaped tets in the mesh :-)\n", "Info : 0.00 < quality < 0.10 : 0 elements\n", "Info : 0.10 < quality < 0.20 : 6 elements\n", "Info : 0.20 < quality < 0.30 : 84 elements\n", "Info : 0.30 < quality < 0.40 : 712 elements\n", "Info : 0.40 < quality < 0.50 : 1706 elements\n", "Info : 0.50 < quality < 0.60 : 2169 elements\n", "Info : 0.60 < quality < 0.70 : 2023 elements\n", "Info : 0.70 < quality < 0.80 : 1631 elements\n", "Info : 0.80 < quality < 0.90 : 1092 elements\n", "Info : 0.90 < quality < 1.00 : 409 elements\n", "Info : Optimizing volume 2\n", "Info : Optimization starts (volume = 0.00309809) with worst = 0.0111154 / average = 0.620966:\n", "Info : 0.00 < quality < 0.10 : 76 elements\n", "Info : 0.10 < quality < 0.20 : 294 elements\n", "Info : 0.20 < quality < 0.30 : 433 elements\n", "Info : 0.30 < quality < 0.40 : 1064 elements\n", "Info : 0.40 < quality < 0.50 : 2553 elements\n", "Info : 0.50 < quality < 0.60 : 3613 elements\n", "Info : 0.60 < quality < 0.70 : 3699 elements\n", "Info : 0.70 < quality < 0.80 : 3145 elements\n", "Info : 0.80 < quality < 0.90 : 2391 elements\n", "Info : 0.90 < quality < 1.00 : 766 elements\n", "Info : 673 edge swaps, 61 node relocations (volume = 0.00309809): worst = 0.0962665 / average = 0.637204 (Wall 0.00600244s, CPU 0.006037s)\n", "Info : 708 edge swaps, 74 node relocations (volume = 0.00309809): worst = 0.0962665 / average = 0.637422 (Wall 0.00803917s, CPU 0.00811s)\n", "Info : No ill-shaped tets in the mesh :-)\n", "Info : 0.00 < quality < 0.10 : 1 elements\n", "Info : 0.10 < quality < 0.20 : 33 elements\n", "Info : 0.20 < quality < 0.30 : 47 elements\n", "Info : 0.30 < quality < 0.40 : 1146 elements\n", "Info : 0.40 < quality < 0.50 : 2503 elements\n", "Info : 0.50 < quality < 0.60 : 3605 elements\n", "Info : 0.60 < quality < 0.70 : 3723 elements\n", "Info : 0.70 < quality < 0.80 : 3189 elements\n", "Info : 0.80 < quality < 0.90 : 2405 elements\n", "Info : 0.90 < quality < 1.00 : 769 elements\n", "Info : Done optimizing mesh (Wall 0.0239096s, CPU 0.024129s)\n", "Info : 5056 nodes 35023 elements\n", "Info : Optimizing mesh (Netgen)...\n", "Info : Optimizing volume 1\n", "Info : CalcLocalH: 3265 Points 9839 Elements 5952 Surface Elements \n", "Info : Remove Illegal Elements \n", "Info : 188 illegal tets \n", "Info : SplitImprove \n", "Info : badmax = 193.075 \n", "Info : 25 splits performed \n", "Info : SwapImprove \n", "Info : 23 swaps performed \n", "Info : SwapImprove2 \n", "Info : 0 swaps performed \n", "Info : 150 illegal tets \n", "Info : SplitImprove \n", "Info : badmax = 193.075 \n", "Info : 29 splits performed \n", "Info : SwapImprove \n", "Info : 9 swaps performed \n", "Info : SwapImprove2 \n", "Info : 3 swaps performed \n", "Info : 86 illegal tets \n", "Info : SplitImprove \n", "Info : badmax = 3349.48 \n", "Info : 24 splits performed \n", "Info : SwapImprove \n", "Info : 5 swaps performed \n", "Info : SwapImprove2 \n", "Info : 2 swaps performed \n", "Info : 26 illegal tets \n", "Info : SplitImprove \n", "Info : badmax = 1865.02 \n", "Info : 9 splits performed \n", "Info : SwapImprove \n", "Info : 2 swaps performed \n", "Info : SwapImprove2 \n", "Info : 1 swaps performed \n", "Info : 8 illegal tets \n", "Info : SplitImprove \n", "Info : badmax = 411.944 \n", "Info : 3 splits performed \n", "Info : SwapImprove \n", "Info : 0 swaps performed \n", "Info : SwapImprove2 \n", "Info : 0 swaps performed \n", "Info : 0 illegal tets \n", "Info : Volume Optimization \n", "Info : CombineImprove \n", "Info : 27 elements combined \n", "Info : ImproveMesh \n", "Info : Total badness = 21659.3 \n", "Info : Total badness = 19580.3 \n", "Info : SplitImprove \n", "Info : badmax = 135.164 \n", "Info : 1 splits performed \n", "Info : ImproveMesh \n", "Info : Total badness = 19588.1 \n", "Info : Total badness = 19505.8 \n", "Info : SwapImprove \n", "Info : 477 swaps performed \n", "Info : SwapImprove2 \n", "Info : 0 swaps performed \n", "Info : ImproveMesh \n", "Info : Total badness = 18595.8 \n", "Info : Total badness = 18407.6 \n", "Info : CombineImprove \n", "Info : 1 elements combined \n", "Info : ImproveMesh \n", "Info : Total badness = 18398 \n", "Info : Total badness = 18389.7 \n", "Info : SplitImprove \n", "Info : badmax = 85.9383 \n", "Info : 2 splits performed \n", "Info : ImproveMesh \n", "Info : Total badness = 18404.5 \n", "Info : Total badness = 18403.9 \n", "Info : SwapImprove \n", "Info : 124 swaps performed \n", "Info : SwapImprove2 \n", "Info : 0 swaps performed \n", "Info : ImproveMesh \n", "Info : Total badness = 18282.4 \n", "Info : Total badness = 18197.2 \n", "Info : CombineImprove \n", "Info : 2 elements combined \n", "Info : ImproveMesh \n", "Info : Total badness = 18166.1 \n", "Info : Total badness = 18161 \n", "Info : SplitImprove \n", "Info : badmax = 85.934 \n", "Info : 0 splits performed \n", "Info : ImproveMesh \n", "Info : Total badness = 18161 \n", "Info : Total badness = 18160.6 \n", "Info : SwapImprove \n", "Info : 50 swaps performed \n", "Info : SwapImprove2 \n", "Info : 0 swaps performed \n", "Info : ImproveMesh \n", "Info : Total badness = 18098.4 \n", "Info : Total badness = 18061.9 \n", "Info : Optimizing volume 2\n", "Info : CalcLocalH: 4769 Points 17490 Elements 6786 Surface Elements \n", "Info : Remove Illegal Elements \n", "Info : 0 illegal tets \n", "Info : Volume Optimization \n", "Info : CombineImprove \n", "Info : 27 elements combined \n", "Info : ImproveMesh \n", "Info : Total badness = 33185.9 \n", "Info : Total badness = 29557.2 \n", "Info : SplitImprove \n", "Info : badmax = 107.923 \n", "Info : 4 splits performed \n", "Info : ImproveMesh \n", "Info : Total badness = 29588.9 \n", "Info : Total badness = 29195.3 \n", "Info : SwapImprove \n", "Info : 934 swaps performed \n", "Info : SwapImprove2 \n", "Info : 0 swaps performed \n", "Info : ImproveMesh \n", "Info : Total badness = 27513.4 \n", "Info : Total badness = 26943.9 \n", "Info : CombineImprove \n", "Info : 3 elements combined \n", "Info : ImproveMesh \n", "Info : Total badness = 26896.8 \n", "Info : Total badness = 26860.6 \n", "Info : SplitImprove \n", "Info : badmax = 64.8656 \n", "Info : 1 splits performed \n", "Info : ImproveMesh \n", "Info : Total badness = 26867.1 \n", "Info : Total badness = 26859.8 \n", "Info : SwapImprove \n", "Info : 280 swaps performed \n", "Info : SwapImprove2 \n", "Info : 0 swaps performed \n", "Info : ImproveMesh \n", "Info : Total badness = 26625.8 \n", "Info : Total badness = 26454.3 \n", "Info : CombineImprove \n", "Info : 0 elements combined \n", "Info : ImproveMesh \n", "Info : Total badness = 26454.3 \n", "Info : Total badness = 26446.7 \n", "Info : SplitImprove \n", "Info : badmax = 60.9791 \n", "Info : 0 splits performed \n", "Info : ImproveMesh \n", "Info : Total badness = 26446.7 \n", "Info : Total badness = 26445.9 \n", "Info : SwapImprove \n", "Info : 105 swaps performed \n", "Info : SwapImprove2 \n", "Info : 0 swaps performed \n", "Info : ImproveMesh \n", "Info : Total badness = 26368.2 \n", "Info : Total badness = 26301.2 \n", "Info : Done optimizing mesh (Wall 0.859175s, CPU 0.860999s)\n", "Info : Writing 'patch_antenna.msh'...\n", "Mesh saved to patch_antenna.mshInfo : Done writing 'patch_antenna.msh'\n", "\n", " Nodes: 5094\n", " Elements: 34488\n", "Info : Writing 'patch_antenna.msh'...\n", "Info : Done writing 'patch_antenna.msh'\n" ] } ], "source": [ "# Define the entities which later will become the physical groups.\n", "entities = [\n", " Entity(\"air_sphere\", dim = 3, mesh_order = 2, btype = \"dielectric\", tags = [air_sphere], loss_tan = 0.0, eps_r = 1.0, mu_r = 1.0),\n", " Entity(\"substrate\", dim = 3, mesh_order = 1, btype = \"dielectric\", tags = [substrate], loss_tan = loss_tan, eps_r = eps_r, mu_r = mu_r),\n", " Entity(\"top_conductor\", dim = 2, mesh_order= 1, btype = \"pec\", tags = [top_conductor[0][1]]),\n", " Entity(\"ground_plane\", dim = 2, mesh_order = 1, btype = \"pec\", tags = [ground_plane]),\n", " Entity(\"lumped_port\", dim = 2, mesh_order = 0, btype = \"lumped_port\", tags = [lumped_port], R = port_impedance, direction = '+Z', excitation = True)\n", "]\n", "\n", "# Boolean operations to guarantee a nice mesh, algo it returns the\n", "# physical group map.\n", "pg_map = run_meshing_pipeline(entities)\n", "\n", "# Refine near the top conductor and locally the lumped port\n", "refine_near_surfaces(entities[2].dimtags + entities[-1].dimtags, \n", " wavelength, \n", " ppw_near=400, \n", " ppw_far=5, \n", " transition_distance=wavelength/4,\n", " set_as_background=True)\n", "\n", "# # Mesh sizes\n", "# mesh_sizes = {\n", "# \"substrate\": wavelength / 12,\n", "# \"air_sphere\": wavelength / 4,\n", "# \"lumped_port\": wavelength / 150,\n", "# \"ground_plane\" : wavelength / 10,\n", "# \"top_conductor\": wavelength / 50\n", "# }\n", "\n", "generate_3d_mesh(entities, output_file=filename, optimize=True)\n", "gmsh.option.setNumber(\"Mesh.MshFileVersion\", 2.2)\n", "gmsh.write(filename)\n", "gmsh.finalize()" ] }, { "cell_type": "markdown", "id": "a77751bc", "metadata": { "papermill": { "duration": 0.00395, "end_time": "2026-05-26T01:20:45.106818+00:00", "exception": false, "start_time": "2026-05-26T01:20:45.102868+00:00", "status": "completed" }, "tags": [] }, "source": [ "### Mesh visualization" ] }, { "cell_type": "code", "execution_count": 6, "id": "3c212d13", "metadata": { "execution": { "iopub.execute_input": "2026-05-26T01:20:45.116938Z", "iopub.status.busy": "2026-05-26T01:20:45.116647Z", "iopub.status.idle": "2026-05-26T01:20:46.530121Z", "shell.execute_reply": "2026-05-26T01:20:46.528653Z" }, "papermill": { "duration": 1.42018, "end_time": "2026-05-26T01:20:46.531281+00:00", "exception": false, "start_time": "2026-05-26T01:20:45.111101+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading mesh file: patch_antenna.msh\n", "Groups to render transparent: air_sphere__None\n", "\n", "Mesh loaded successfully with 2 cell blocks\n", "Found 6786 triangles total\n", "Physical group tags in mesh: {3: 'top_conductor', 4: 'ground_plane', 5: 'lumped_port', 6: 'air_sphere__None', 7: 'air_sphere__substrate'}\n" ] }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "view_mesh(filename, transparent_groups= \"air_sphere__None\")" ] }, { "cell_type": "markdown", "id": "cde1861e", "metadata": { "papermill": { "duration": 0.013798, "end_time": "2026-05-26T01:20:46.556423+00:00", "exception": false, "start_time": "2026-05-26T01:20:46.542625+00:00", "status": "completed" }, "tags": [] }, "source": [ "### Simulation Configuration\n", "We define the key parameters for the electromagnetic simulation here. These settings control the frequency sweep range, material properties (dielectric constant and loss tangent for the substrate), and solver-specific configurations like port impedance and mesh order.\n", "\n", "- output_file : output filename for the configuration JSON file\n", "- freq_min : minimum frequency for the simulation (GHz) \n", "- freq_max: maximum frequency for the simulation (GHz)\n", "- freq_step: frequency step for the simulation (GHz)\n", "- solver_order: order of the finite element basis functions for the simulation (e.g., 1 for linear, 2 for quadratic)" ] }, { "cell_type": "code", "execution_count": 7, "id": "8a378602", "metadata": { "execution": { "iopub.execute_input": "2026-05-26T01:20:46.584407Z", "iopub.status.busy": "2026-05-26T01:20:46.583981Z", "iopub.status.idle": "2026-05-26T01:20:46.590513Z", "shell.execute_reply": "2026-05-26T01:20:46.588792Z" }, "papermill": { "duration": 0.023486, "end_time": "2026-05-26T01:20:46.591719+00:00", "exception": false, "start_time": "2026-05-26T01:20:46.568233+00:00", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "output_file: str = \"patch_antenna.json\"\n", "# Sweep de simulación \n", "freq_min: float = 2.5\n", "freq_max: float = 4\n", "freq_step: float = 0.025\n", "\n", "solver_order: int = 2" ] }, { "cell_type": "markdown", "id": "a0161718", "metadata": { "papermill": { "duration": 0.012661, "end_time": "2026-05-26T01:20:46.618941+00:00", "exception": false, "start_time": "2026-05-26T01:20:46.606280+00:00", "status": "completed" }, "tags": [] }, "source": [ "### Generating the Palace Configuration File\n", "Finally, we assemble the simulation parameters into a JSON configuration ." ] }, { "cell_type": "code", "execution_count": 8, "id": "9d7b7f83", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Palace config written to patch.config\n" ] }, { "data": { "text/plain": [ "{'Problem': {'Type': 'Driven', 'Verbose': 2, 'Output': 'postpro/patch'},\n", " 'Model': {'Mesh': 'patch_antenna.msh', 'L0': 1.0, 'Refinement': {}},\n", " 'Domains': {'Materials': [{'Attributes': [1],\n", " 'Permeability': 1.0,\n", " 'Permittivity': 1.0,\n", " 'LossTan': 0.0},\n", " {'Attributes': [2],\n", " 'Permeability': 1.0,\n", " 'Permittivity': 2.2,\n", " 'LossTan': 0.0009}]},\n", " 'Boundaries': {'PEC': {'Attributes': [3, 4]},\n", " 'Absorbing': {'Attributes': [6], 'Order': 2},\n", " 'LumpedPort': [{'Index': 1,\n", " 'Attributes': [5],\n", " 'R': 50.0,\n", " 'Excitation': True,\n", " 'Direction': '+Z'}],\n", " 'Postprocessing': {'FarField': {'Attributes': [6], 'NSample': 16000}}},\n", " 'Solver': {'Order': 2,\n", " 'Device': 'CPU',\n", " 'Driven': {'MinFreq': 2.5,\n", " 'MaxFreq': 4,\n", " 'FreqStep': 0.025,\n", " 'SaveStep': 5,\n", " 'AdaptiveTol': 0.001},\n", " 'Linear': {'Type': 'Default',\n", " 'KSPType': 'GMRES',\n", " 'Tol': 1e-08,\n", " 'MaxIts': 500}}}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "generate_palace_config_from_entities(entity_defs = [e.to_dict() for e in entities],\n", " pg_map = pg_map,\n", " mesh_file = filename,\n", " output_file = 'patch.config',\n", " freq_min = freq_min,\n", " freq_max = freq_max,\n", " freq_step = freq_step ,\n", " L0 = 1.0,\n", " solver_order = solver_order,\n", " absorbing_order = 2,\n", " farfield=True)" ] }, { "cell_type": "markdown", "id": "baa4c3b0", "metadata": {}, "source": [ "### Running Palace" ] }, { "cell_type": "code", "execution_count": 9, "id": "b60b1c59", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Running: /home/martin/.cache/palacetoolkit/runtime/palace-cpu-v0.1.2/bin/palace -np 16 /home/martin/Desktop/PalaceToolkit/docs/examples/patch.config\n", ">> /usr/bin/mpirun -n 16 /home/martin/.cache/palacetoolkit/runtime/palace-cpu-v0.1.2/bin/palace-x86_64.bin /home/martin/Desktop/PalaceToolkit/docs/examples/patch.config\n", "\n", "_____________ _______\n", "_____ __ \\____ __ /____ ____________\n", "____ /_/ / __ ` / / __ ` / ___/ _ \\\n", "___ _____/ /_/ / / /_/ / /__/ ___/\n", " /__/ \\___,__/__/\\___,__/\\_____\\_____/\n", "\n", "\n", "\u001b[38;2;255;255;000m--> Warning!\u001b[0m\n", "Output folder is not empty; program will overwrite content! (postpro/patch)\n", "Git changeset ID: v0.16.1-51-g4f2e2d97\n", "Running with 16 MPI processes, 1 OpenMP thread\n", "Device configuration: omp,cpu\n", "Memory configuration: host-std\n", "libCEED backend: /cpu/self/xsmm/blocked\n", "\n", "Added 1324 duplicate vertices for interior boundaries in the mesh\n", "Added 3457 duplicate boundary elements for interior boundaries in the mesh\n", "\n", "Characteristic length and time scales:\n", " Lc = 1.818e-01 m, tc = 6.065e-01 ns\n", "Finished partitioning mesh into 16 subdomains\n", "\n", "Mesh curvature order: 1\n", "Mesh bounding box:\n", " (Xmin, Ymin, Zmin) = (-9.062e-02, -9.058e-02, -9.091e-02) m\n", " (Xmax, Ymax, Zmax) = (+9.091e-02, +9.067e-02, +9.091e-02) m\n", "\n", "Parallel Mesh Stats:\n", "\n", " minimum average maximum total\n", " vertices 312 401 457 6418\n", " edges 2047 2317 2478 37083\n", " faces 3362 3591 3738 57462\n", " elements 1625 1674 1724 26794\n", " neighbors 3 7 14\n", "\n", " minimum maximum\n", " h 0.000933774 0.172125\n", " kappa 1.09793 18.2995\n", "\n", "Estimated current per-rank memory usage is: Min. 51.0M, Max. 69.5M, Avg. 53.0M, Total 847.3M\n", "Estimated current per-node memory usage is: Min. 849.4M, Max. 849.4M, Avg. 849.4M, Total 849.4M\n", "\n", "Configuring Robin absorbing BC (order 2) at attributes:\n", " 6\n", "\n", "Configuring Robin impedance BC for lumped ports at attributes:\n", " 5: Rs = 7.692e+01 Ω/sq, n = (-1.0,+0.0,+0.0)\n", "\n", "Configuring lumped port circuit properties:\n", " Index = 1: R = 5.000e+01 Ω\n", "\n", "Configuring lumped port excitation source term at attributes:\n", " 5: Index = 1\n", "\n", "Configuring Dirichlet PEC BC at attributes:\n", " 3-4\n", "\n", "Computing adaptive fast frequency response for:\n", "Excitation with index 1 has contributions from:\n", " Lumped port 1\n", "\n", "Beginning PROM construction offline phase:\n", " 61 points for frequency sweep over [2.500e+00, 4.000e+00] GHz\n", "\n", "Assembling system matrices, number of global unknowns:\n", " H1 (p = 2): 43501, ND (p = 2): 189090, RT (p = 2): 252768\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): 37083 unknowns\n", " Level 1 (p = 2): 189090 unknowns\n", " Level 0 (auxiliary) (p = 1): 6418 unknowns\n", " Level 1 (auxiliary) (p = 2): 43501 unknowns\n", "\n", " Residual norms for GMRES solve\n", " 0 (restart 0) KSP residual norm 3.483989e+01\n", " 1 (restart 0) KSP residual norm 1.638033e+01\n", " 2 (restart 0) KSP residual norm 1.595283e+01\n", " 3 (restart 0) KSP residual norm 6.785846e+00\n", " 4 (restart 0) KSP residual norm 6.778450e+00\n", " 5 (restart 0) KSP residual norm 3.702500e+00\n", " 6 (restart 0) KSP residual norm 3.687719e+00\n", " 7 (restart 0) KSP residual norm 2.833579e+00\n", " 8 (restart 0) KSP residual norm 2.685200e+00\n", " 9 (restart 0) KSP residual norm 2.439460e+00\n", " 10 (restart 0) KSP residual norm 2.304808e+00\n", " 11 (restart 0) KSP residual norm 2.176711e+00\n", " 12 (restart 0) KSP residual norm 2.088950e+00\n", " 13 (restart 0) KSP residual norm 1.814150e+00\n", " 14 (restart 0) KSP residual norm 1.769837e+00\n", " 15 (restart 0) KSP residual norm 1.268215e+00\n", " 16 (restart 0) KSP residual norm 1.179278e+00\n", " 17 (restart 0) KSP residual norm 9.180005e-01\n", " 18 (restart 0) KSP residual norm 8.574307e-01\n", " 19 (restart 0) KSP residual norm 7.436316e-01\n", " 20 (restart 0) KSP residual norm 7.354207e-01\n", " 21 (restart 0) KSP residual norm 6.041496e-01\n", " 22 (restart 0) KSP residual norm 5.836149e-01\n", " 23 (restart 0) KSP residual norm 4.773363e-01\n", " 24 (restart 0) KSP residual norm 4.423789e-01\n", " 25 (restart 0) KSP residual norm 3.990211e-01\n", " 26 (restart 0) KSP residual norm 3.768231e-01\n", " 27 (restart 0) KSP residual norm 3.253256e-01\n", " 28 (restart 0) KSP residual norm 3.046586e-01\n", " 29 (restart 0) KSP residual norm 2.735369e-01\n", " 30 (restart 0) KSP residual norm 2.442329e-01\n", " 31 (restart 0) KSP residual norm 2.248002e-01\n", " 32 (restart 0) KSP residual norm 1.915834e-01\n", " 33 (restart 0) KSP residual norm 1.731497e-01\n", " 34 (restart 0) KSP residual norm 1.516500e-01\n", " 35 (restart 0) KSP residual norm 1.306338e-01\n", " 36 (restart 0) KSP residual norm 1.151003e-01\n", " 37 (restart 0) KSP residual norm 1.017698e-01\n", " 38 (restart 0) KSP residual norm 8.946518e-02\n", " 39 (restart 0) KSP residual norm 8.162207e-02\n", " 40 (restart 0) KSP residual norm 6.826053e-02\n", " 41 (restart 0) KSP residual norm 5.849272e-02\n", " 42 (restart 0) KSP residual norm 4.649408e-02\n", " 43 (restart 0) KSP residual norm 3.906652e-02\n", " 44 (restart 0) KSP residual norm 3.337561e-02\n", " 45 (restart 0) KSP residual norm 2.745105e-02\n", " 46 (restart 0) KSP residual norm 2.238034e-02\n", " 47 (restart 0) KSP residual norm 1.945662e-02\n", " 48 (restart 0) KSP residual norm 1.604033e-02\n", " 49 (restart 0) KSP residual norm 1.320134e-02\n", " 50 (restart 0) KSP residual norm 1.139103e-02\n", " 51 (restart 0) KSP residual norm 9.516884e-03\n", " 52 (restart 0) KSP residual norm 7.978735e-03\n", " 53 (restart 0) KSP residual norm 6.978859e-03\n", " 54 (restart 0) KSP residual norm 6.057595e-03\n", " 55 (restart 0) KSP residual norm 5.122472e-03\n", " 56 (restart 0) KSP residual norm 4.177217e-03\n", " 57 (restart 0) KSP residual norm 3.483511e-03\n", " 58 (restart 0) KSP residual norm 2.881101e-03\n", " 59 (restart 0) KSP residual norm 2.284306e-03\n", " 60 (restart 0) KSP residual norm 1.687449e-03\n", " 61 (restart 0) KSP residual norm 1.378651e-03\n", " 62 (restart 0) KSP residual norm 1.054077e-03\n", " 63 (restart 0) KSP residual norm 8.102737e-04\n", " 64 (restart 0) KSP residual norm 5.994272e-04\n", " 65 (restart 0) KSP residual norm 4.876721e-04\n", " 66 (restart 0) KSP residual norm 3.688129e-04\n", " 67 (restart 0) KSP residual norm 2.817588e-04\n", " 68 (restart 0) KSP residual norm 2.178700e-04\n", " 69 (restart 0) KSP residual norm 1.695158e-04\n", " 70 (restart 0) KSP residual norm 1.376695e-04\n", " 71 (restart 0) KSP residual norm 1.031975e-04\n", " 72 (restart 0) KSP residual norm 7.942367e-05\n", " 73 (restart 0) KSP residual norm 6.557393e-05\n", " 74 (restart 0) KSP residual norm 5.005595e-05\n", " 75 (restart 0) KSP residual norm 3.913512e-05\n", " 76 (restart 0) KSP residual norm 3.177019e-05\n", " 77 (restart 0) KSP residual norm 2.441544e-05\n", " 78 (restart 0) KSP residual norm 1.849384e-05\n", " 79 (restart 0) KSP residual norm 1.370196e-05\n", " 80 (restart 0) KSP residual norm 1.053222e-05\n", " 81 (restart 0) KSP residual norm 8.183339e-06\n", " 82 (restart 0) KSP residual norm 6.130604e-06\n", " 83 (restart 0) KSP residual norm 4.489035e-06\n", " 84 (restart 0) KSP residual norm 3.393996e-06\n", " 85 (restart 0) KSP residual norm 2.579677e-06\n", " 86 (restart 0) KSP residual norm 1.855782e-06\n", " 87 (restart 0) KSP residual norm 1.421381e-06\n", " 88 (restart 0) KSP residual norm 1.038339e-06\n", " 89 (restart 0) KSP residual norm 7.509084e-07\n", " 90 (restart 0) KSP residual norm 5.502241e-07\n", " 91 (restart 0) KSP residual norm 4.096127e-07\n", " 92 (restart 0) KSP residual norm 3.103170e-07\n", "GMRES solver converged in 92 iterations (avg. reduction factor: 8.175e-01)\n", " Field energy E (9.443e-11 J) + H (8.540e-11 J) = 1.798e-10 J\n", "\n", " Residual norms for GMRES solve\n", " 0 (restart 0) KSP residual norm 6.127287e+02\n", " 1 (restart 0) KSP residual norm 4.133755e+02\n", " 2 (restart 0) KSP residual norm 1.524727e+02\n", " 3 (restart 0) KSP residual norm 2.562884e+01\n", " 4 (restart 0) KSP residual norm 1.342230e+01\n", " 5 (restart 0) KSP residual norm 1.209925e+01\n", " 6 (restart 0) KSP residual norm 9.415011e+00\n", " 7 (restart 0) KSP residual norm 8.309334e+00\n", " 8 (restart 0) KSP residual norm 5.956349e+00\n", " 9 (restart 0) KSP residual norm 5.499117e+00\n", " 10 (restart 0) KSP residual norm 4.871423e+00\n", " 11 (restart 0) KSP residual norm 4.446807e+00\n", " 12 (restart 0) KSP residual norm 4.323772e+00\n", " 13 (restart 0) KSP residual norm 3.666343e+00\n", " 14 (restart 0) KSP residual norm 3.346962e+00\n", " 15 (restart 0) KSP residual norm 3.037226e+00\n", " 16 (restart 0) KSP residual norm 2.860766e+00\n", " 17 (restart 0) KSP residual norm 2.484136e+00\n", " 18 (restart 0) KSP residual norm 2.303107e+00\n", " 19 (restart 0) KSP residual norm 2.050596e+00\n", " 20 (restart 0) KSP residual norm 1.934924e+00\n", " 21 (restart 0) KSP residual norm 1.720610e+00\n", " 22 (restart 0) KSP residual norm 1.519782e+00\n", " 23 (restart 0) KSP residual norm 1.440875e+00\n", " 24 (restart 0) KSP residual norm 1.287882e+00\n", " 25 (restart 0) KSP residual norm 1.107643e+00\n", " 26 (restart 0) KSP residual norm 1.025571e+00\n", " 27 (restart 0) KSP residual norm 9.424809e-01\n", " 28 (restart 0) KSP residual norm 8.875850e-01\n", " 29 (restart 0) KSP residual norm 8.041387e-01\n", " 30 (restart 0) KSP residual norm 7.352586e-01\n", " 31 (restart 0) KSP residual norm 6.196269e-01\n", " 32 (restart 0) KSP residual norm 5.701512e-01\n", " 33 (restart 0) KSP residual norm 4.908969e-01\n", " 34 (restart 0) KSP residual norm 4.713662e-01\n", " 35 (restart 0) KSP residual norm 3.834599e-01\n", " 36 (restart 0) KSP residual norm 3.166544e-01\n", " 37 (restart 0) KSP residual norm 2.843801e-01\n", " 38 (restart 0) KSP residual norm 2.341915e-01\n", " 39 (restart 0) KSP residual norm 2.028657e-01\n", " 40 (restart 0) KSP residual norm 1.830838e-01\n", " 41 (restart 0) KSP residual norm 1.527841e-01\n", " 42 (restart 0) KSP residual norm 1.386398e-01\n", " 43 (restart 0) KSP residual norm 1.189579e-01\n", " 44 (restart 0) KSP residual norm 9.824002e-02\n", " 45 (restart 0) KSP residual norm 8.667564e-02\n", " 46 (restart 0) KSP residual norm 7.410323e-02\n", " 47 (restart 0) KSP residual norm 6.769035e-02\n", " 48 (restart 0) KSP residual norm 5.549277e-02\n", " 49 (restart 0) KSP residual norm 4.946804e-02\n", " 50 (restart 0) KSP residual norm 4.226992e-02\n", " 51 (restart 0) KSP residual norm 3.536169e-02\n", " 52 (restart 0) KSP residual norm 3.194277e-02\n", " 53 (restart 0) KSP residual norm 2.479068e-02\n", " 54 (restart 0) KSP residual norm 2.107365e-02\n", " 55 (restart 0) KSP residual norm 1.667650e-02\n", " 56 (restart 0) KSP residual norm 1.350032e-02\n", " 57 (restart 0) KSP residual norm 1.097500e-02\n", " 58 (restart 0) KSP residual norm 9.149061e-03\n", " 59 (restart 0) KSP residual norm 7.239501e-03\n", " 60 (restart 0) KSP residual norm 5.479457e-03\n", " 61 (restart 0) KSP residual norm 4.315327e-03\n", " 62 (restart 0) KSP residual norm 3.204613e-03\n", " 63 (restart 0) KSP residual norm 2.504098e-03\n", " 64 (restart 0) KSP residual norm 1.951110e-03\n", " 65 (restart 0) KSP residual norm 1.456591e-03\n", " 66 (restart 0) KSP residual norm 1.081992e-03\n", " 67 (restart 0) KSP residual norm 8.312153e-04\n", " 68 (restart 0) KSP residual norm 6.614283e-04\n", " 69 (restart 0) KSP residual norm 5.144312e-04\n", " 70 (restart 0) KSP residual norm 4.159172e-04\n", " 71 (restart 0) KSP residual norm 3.222218e-04\n", " 72 (restart 0) KSP residual norm 2.523205e-04\n", " 73 (restart 0) KSP residual norm 1.931220e-04\n", " 74 (restart 0) KSP residual norm 1.470466e-04\n", " 75 (restart 0) KSP residual norm 1.212632e-04\n", " 76 (restart 0) KSP residual norm 9.132374e-05\n", " 77 (restart 0) KSP residual norm 6.646041e-05\n", " 78 (restart 0) KSP residual norm 5.102816e-05\n", " 79 (restart 0) KSP residual norm 3.905517e-05\n", " 80 (restart 0) KSP residual norm 2.732811e-05\n", " 81 (restart 0) KSP residual norm 2.035191e-05\n", " 82 (restart 0) KSP residual norm 1.629701e-05\n", " 83 (restart 0) KSP residual norm 1.241005e-05\n", " 84 (restart 0) KSP residual norm 9.646276e-06\n", " 85 (restart 0) KSP residual norm 7.234284e-06\n", " 86 (restart 0) KSP residual norm 5.387659e-06\n", "GMRES solver converged in 86 iterations (avg. reduction factor: 8.060e-01)\n", " Field energy E (1.791e-10 J) + H (1.403e-10 J) = 3.194e-10 J\n", "\n", " Residual norms for GMRES solve\n", " 0 (restart 0) KSP residual norm 6.422833e+01\n", " 1 (restart 0) KSP residual norm 5.909908e+01\n", " 2 (restart 0) KSP residual norm 5.731930e+01\n", " 3 (restart 0) KSP residual norm 5.590266e+01\n", " 4 (restart 0) KSP residual norm 3.557516e+01\n", " 5 (restart 0) KSP residual norm 3.359920e+01\n", " 6 (restart 0) KSP residual norm 2.908714e+01\n", " 7 (restart 0) KSP residual norm 2.828656e+01\n", " 8 (restart 0) KSP residual norm 1.824952e+01\n", " 9 (restart 0) KSP residual norm 1.660275e+01\n", " 10 (restart 0) KSP residual norm 1.452791e+01\n", " 11 (restart 0) KSP residual norm 1.269428e+01\n", " 12 (restart 0) KSP residual norm 1.179351e+01\n", " 13 (restart 0) KSP residual norm 9.919147e+00\n", " 14 (restart 0) KSP residual norm 9.655951e+00\n", " 15 (restart 0) KSP residual norm 8.117533e+00\n", " 16 (restart 0) KSP residual norm 7.947305e+00\n", " 17 (restart 0) KSP residual norm 6.807874e+00\n", " 18 (restart 0) KSP residual norm 6.576186e+00\n", " 19 (restart 0) KSP residual norm 6.048569e+00\n", " 20 (restart 0) KSP residual norm 5.941768e+00\n", " 21 (restart 0) KSP residual norm 5.424400e+00\n", " 22 (restart 0) KSP residual norm 5.098727e+00\n", " 23 (restart 0) KSP residual norm 4.684337e+00\n", " 24 (restart 0) KSP residual norm 4.367407e+00\n", " 25 (restart 0) KSP residual norm 3.891868e+00\n", " 26 (restart 0) KSP residual norm 3.353459e+00\n", " 27 (restart 0) KSP residual norm 2.876110e+00\n", " 28 (restart 0) KSP residual norm 2.428272e+00\n", " 29 (restart 0) KSP residual norm 2.157620e+00\n", " 30 (restart 0) KSP residual norm 1.706710e+00\n", " 31 (restart 0) KSP residual norm 1.350227e+00\n", " 32 (restart 0) KSP residual norm 1.175448e+00\n", " 33 (restart 0) KSP residual norm 9.741625e-01\n", " 34 (restart 0) KSP residual norm 8.417918e-01\n", " 35 (restart 0) KSP residual norm 6.693608e-01\n", " 36 (restart 0) KSP residual norm 5.823043e-01\n", " 37 (restart 0) KSP residual norm 4.329445e-01\n", " 38 (restart 0) KSP residual norm 3.945657e-01\n", " 39 (restart 0) KSP residual norm 3.559011e-01\n", " 40 (restart 0) KSP residual norm 3.183543e-01\n", " 41 (restart 0) KSP residual norm 2.822484e-01\n", " 42 (restart 0) KSP residual norm 2.354904e-01\n", " 43 (restart 0) KSP residual norm 1.953934e-01\n", " 44 (restart 0) KSP residual norm 1.698437e-01\n", " 45 (restart 0) KSP residual norm 1.295485e-01\n", " 46 (restart 0) KSP residual norm 1.134569e-01\n", " 47 (restart 0) KSP residual norm 9.492531e-02\n", " 48 (restart 0) KSP residual norm 8.203244e-02\n", " 49 (restart 0) KSP residual norm 6.971183e-02\n", " 50 (restart 0) KSP residual norm 5.785595e-02\n", " 51 (restart 0) KSP residual norm 4.982094e-02\n", " 52 (restart 0) KSP residual norm 4.149603e-02\n", " 53 (restart 0) KSP residual norm 3.486490e-02\n", " 54 (restart 0) KSP residual norm 2.821372e-02\n", " 55 (restart 0) KSP residual norm 2.193128e-02\n", " 56 (restart 0) KSP residual norm 1.849151e-02\n", " 57 (restart 0) KSP residual norm 1.397141e-02\n", " 58 (restart 0) KSP residual norm 1.193903e-02\n", " 59 (restart 0) KSP residual norm 9.572595e-03\n", " 60 (restart 0) KSP residual norm 8.309780e-03\n", " 61 (restart 0) KSP residual norm 6.768526e-03\n", " 62 (restart 0) KSP residual norm 5.476860e-03\n", " 63 (restart 0) KSP residual norm 4.321610e-03\n", " 64 (restart 0) KSP residual norm 3.395052e-03\n", " 65 (restart 0) KSP residual norm 2.732107e-03\n", " 66 (restart 0) KSP residual norm 2.275156e-03\n", " 67 (restart 0) KSP residual norm 1.850842e-03\n", " 68 (restart 0) KSP residual norm 1.566182e-03\n", " 69 (restart 0) KSP residual norm 1.287659e-03\n", " 70 (restart 0) KSP residual norm 1.062755e-03\n", " 71 (restart 0) KSP residual norm 8.530118e-04\n", " 72 (restart 0) KSP residual norm 7.176268e-04\n", " 73 (restart 0) KSP residual norm 5.847050e-04\n", " 74 (restart 0) KSP residual norm 4.371709e-04\n", " 75 (restart 0) KSP residual norm 3.485502e-04\n", " 76 (restart 0) KSP residual norm 2.837566e-04\n", " 77 (restart 0) KSP residual norm 2.237954e-04\n", " 78 (restart 0) KSP residual norm 1.801038e-04\n", " 79 (restart 0) KSP residual norm 1.385508e-04\n", " 80 (restart 0) KSP residual norm 1.107846e-04\n", " 81 (restart 0) KSP residual norm 8.797957e-05\n", " 82 (restart 0) KSP residual norm 7.087791e-05\n", " 83 (restart 0) KSP residual norm 5.806354e-05\n", " 84 (restart 0) KSP residual norm 4.537038e-05\n", " 85 (restart 0) KSP residual norm 3.556853e-05\n", " 86 (restart 0) KSP residual norm 2.797601e-05\n", " 87 (restart 0) KSP residual norm 2.228275e-05\n", " 88 (restart 0) KSP residual norm 1.788914e-05\n", " 89 (restart 0) KSP residual norm 1.436337e-05\n", " 90 (restart 0) KSP residual norm 1.171775e-05\n", " 91 (restart 0) KSP residual norm 9.777471e-06\n", " 92 (restart 0) KSP residual norm 8.014507e-06\n", " 93 (restart 0) KSP residual norm 6.564083e-06\n", " 94 (restart 0) KSP residual norm 5.256535e-06\n", " 95 (restart 0) KSP residual norm 4.363411e-06\n", " 96 (restart 0) KSP residual norm 3.416353e-06\n", " 97 (restart 0) KSP residual norm 2.825313e-06\n", " 98 (restart 0) KSP residual norm 2.314622e-06\n", " 99 (restart 0) KSP residual norm 1.992927e-06\n", "100 (restart 0) KSP residual norm 1.682405e-06\n", "101 (restart 0) KSP residual norm 1.396012e-06\n", "102 (restart 0) KSP residual norm 1.110892e-06\n", "103 (restart 0) KSP residual norm 8.639034e-07\n", "104 (restart 0) KSP residual norm 6.714228e-07\n", "105 (restart 0) KSP residual norm 5.408358e-07\n", "GMRES solver converged in 105 iterations (avg. reduction factor: 8.377e-01)\n", "\n", "Greedy iteration 1 (n = 4): ω* = 3.433e+00 GHz (1.308e+01), error = 9.133e-01, memory = 0/2\n", " Field energy E (3.855e-10 J) + H (3.762e-10 J) = 7.617e-10 J\n", "\n", " Residual norms for GMRES solve\n", " 0 (restart 0) KSP residual norm 6.751877e+01\n", " 1 (restart 0) KSP residual norm 6.452576e+01\n", " 2 (restart 0) KSP residual norm 6.398192e+01\n", " 3 (restart 0) KSP residual norm 6.297234e+01\n", " 4 (restart 0) KSP residual norm 5.955310e+01\n", " 5 (restart 0) KSP residual norm 5.246780e+01\n", " 6 (restart 0) KSP residual norm 5.116704e+01\n", " 7 (restart 0) KSP residual norm 4.461565e+01\n", " 8 (restart 0) KSP residual norm 3.875282e+01\n", " 9 (restart 0) KSP residual norm 3.627986e+01\n", " 10 (restart 0) KSP residual norm 3.120721e+01\n", " 11 (restart 0) KSP residual norm 3.060050e+01\n", " 12 (restart 0) KSP residual norm 2.692292e+01\n", " 13 (restart 0) KSP residual norm 2.619024e+01\n", " 14 (restart 0) KSP residual norm 2.205613e+01\n", " 15 (restart 0) KSP residual norm 2.063419e+01\n", " 16 (restart 0) KSP residual norm 1.899624e+01\n", " 17 (restart 0) KSP residual norm 1.582685e+01\n", " 18 (restart 0) KSP residual norm 1.559804e+01\n", " 19 (restart 0) KSP residual norm 1.196281e+01\n", " 20 (restart 0) KSP residual norm 1.172514e+01\n", " 21 (restart 0) KSP residual norm 9.469576e+00\n", " 22 (restart 0) KSP residual norm 8.853273e+00\n", " 23 (restart 0) KSP residual norm 7.184457e+00\n", " 24 (restart 0) KSP residual norm 5.861032e+00\n", " 25 (restart 0) KSP residual norm 5.686578e+00\n", " 26 (restart 0) KSP residual norm 4.114097e+00\n", " 27 (restart 0) KSP residual norm 3.969076e+00\n", " 28 (restart 0) KSP residual norm 3.056252e+00\n", " 29 (restart 0) KSP residual norm 2.721980e+00\n", " 30 (restart 0) KSP residual norm 2.528253e+00\n", " 31 (restart 0) KSP residual norm 2.205267e+00\n", " 32 (restart 0) KSP residual norm 2.115015e+00\n", " 33 (restart 0) KSP residual norm 1.859324e+00\n", " 34 (restart 0) KSP residual norm 1.672388e+00\n", " 35 (restart 0) KSP residual norm 1.519707e+00\n", " 36 (restart 0) KSP residual norm 1.310987e+00\n", " 37 (restart 0) KSP residual norm 1.137148e+00\n", " 38 (restart 0) KSP residual norm 9.845613e-01\n", " 39 (restart 0) KSP residual norm 8.357532e-01\n", " 40 (restart 0) KSP residual norm 7.239113e-01\n", " 41 (restart 0) KSP residual norm 6.366858e-01\n", " 42 (restart 0) KSP residual norm 5.567867e-01\n", " 43 (restart 0) KSP residual norm 4.822652e-01\n", " 44 (restart 0) KSP residual norm 4.129331e-01\n", " 45 (restart 0) KSP residual norm 3.316254e-01\n", " 46 (restart 0) KSP residual norm 2.811233e-01\n", " 47 (restart 0) KSP residual norm 2.329883e-01\n", " 48 (restart 0) KSP residual norm 1.844688e-01\n", " 49 (restart 0) KSP residual norm 1.475320e-01\n", " 50 (restart 0) KSP residual norm 1.227750e-01\n", " 51 (restart 0) KSP residual norm 1.057340e-01\n", " 52 (restart 0) KSP residual norm 9.288955e-02\n", " 53 (restart 0) KSP residual norm 7.809988e-02\n", " 54 (restart 0) KSP residual norm 6.884301e-02\n", " 55 (restart 0) KSP residual norm 5.041672e-02\n", " 56 (restart 0) KSP residual norm 4.335446e-02\n", " 57 (restart 0) KSP residual norm 3.533921e-02\n", " 58 (restart 0) KSP residual norm 3.108481e-02\n", " 59 (restart 0) KSP residual norm 2.227216e-02\n", " 60 (restart 0) KSP residual norm 1.843009e-02\n", " 61 (restart 0) KSP residual norm 1.448048e-02\n", " 62 (restart 0) KSP residual norm 1.094719e-02\n", " 63 (restart 0) KSP residual norm 8.996505e-03\n", " 64 (restart 0) KSP residual norm 6.475258e-03\n", " 65 (restart 0) KSP residual norm 5.359283e-03\n", " 66 (restart 0) KSP residual norm 4.263527e-03\n", " 67 (restart 0) KSP residual norm 3.595564e-03\n", " 68 (restart 0) KSP residual norm 2.895906e-03\n", " 69 (restart 0) KSP residual norm 2.257061e-03\n", " 70 (restart 0) KSP residual norm 1.751555e-03\n", " 71 (restart 0) KSP residual norm 1.333477e-03\n", " 72 (restart 0) KSP residual norm 1.065507e-03\n", " 73 (restart 0) KSP residual norm 8.382675e-04\n", " 74 (restart 0) KSP residual norm 6.789414e-04\n", " 75 (restart 0) KSP residual norm 5.545764e-04\n", " 76 (restart 0) KSP residual norm 4.446536e-04\n", " 77 (restart 0) KSP residual norm 3.659269e-04\n", " 78 (restart 0) KSP residual norm 2.874459e-04\n", " 79 (restart 0) KSP residual norm 2.217447e-04\n", " 80 (restart 0) KSP residual norm 1.744376e-04\n", " 81 (restart 0) KSP residual norm 1.378919e-04\n", " 82 (restart 0) KSP residual norm 1.128298e-04\n", " 83 (restart 0) KSP residual norm 8.943913e-05\n", " 84 (restart 0) KSP residual norm 6.935279e-05\n", " 85 (restart 0) KSP residual norm 5.274236e-05\n", " 86 (restart 0) KSP residual norm 3.940963e-05\n", " 87 (restart 0) KSP residual norm 2.993260e-05\n", " 88 (restart 0) KSP residual norm 2.358713e-05\n", " 89 (restart 0) KSP residual norm 1.848710e-05\n", " 90 (restart 0) KSP residual norm 1.469989e-05\n", " 91 (restart 0) KSP residual norm 1.214209e-05\n", " 92 (restart 0) KSP residual norm 9.835470e-06\n", " 93 (restart 0) KSP residual norm 8.106071e-06\n", " 94 (restart 0) KSP residual norm 6.766851e-06\n", " 95 (restart 0) KSP residual norm 5.454406e-06\n", " 96 (restart 0) KSP residual norm 4.463527e-06\n", " 97 (restart 0) KSP residual norm 3.493510e-06\n", " 98 (restart 0) KSP residual norm 2.800834e-06\n", " 99 (restart 0) KSP residual norm 2.259994e-06\n", "100 (restart 0) KSP residual norm 1.801515e-06\n", "101 (restart 0) KSP residual norm 1.393576e-06\n", "102 (restart 0) KSP residual norm 1.111101e-06\n", "103 (restart 0) KSP residual norm 8.590819e-07\n", "104 (restart 0) KSP residual norm 6.587193e-07\n", "GMRES solver converged in 104 iterations (avg. reduction factor: 8.375e-01)\n", "\n", "Greedy iteration 2 (n = 6): ω* = 3.248e+00 GHz (1.238e+01), error = 2.433e-02, memory = 0/2\n", " Field energy E (1.295e-09 J) + H (1.296e-09 J) = 2.591e-09 J\n", "\n", " Residual norms for GMRES solve\n", " 0 (restart 0) KSP residual norm 9.177989e+01\n", " 1 (restart 0) KSP residual norm 9.152952e+01\n", " 2 (restart 0) KSP residual norm 7.869349e+01\n", " 3 (restart 0) KSP residual norm 7.424285e+01\n", " 4 (restart 0) KSP residual norm 4.169797e+01\n", " 5 (restart 0) KSP residual norm 1.598209e+01\n", " 6 (restart 0) KSP residual norm 7.376414e+00\n", " 7 (restart 0) KSP residual norm 6.229556e+00\n", " 8 (restart 0) KSP residual norm 5.932415e+00\n", " 9 (restart 0) KSP residual norm 5.135071e+00\n", " 10 (restart 0) KSP residual norm 4.850819e+00\n", " 11 (restart 0) KSP residual norm 4.568502e+00\n", " 12 (restart 0) KSP residual norm 4.091557e+00\n", " 13 (restart 0) KSP residual norm 3.834386e+00\n", " 14 (restart 0) KSP residual norm 3.181003e+00\n", " 15 (restart 0) KSP residual norm 2.959862e+00\n", " 16 (restart 0) KSP residual norm 2.657674e+00\n", " 17 (restart 0) KSP residual norm 2.428988e+00\n", " 18 (restart 0) KSP residual norm 2.149931e+00\n", " 19 (restart 0) KSP residual norm 1.900168e+00\n", " 20 (restart 0) KSP residual norm 1.703937e+00\n", " 21 (restart 0) KSP residual norm 1.592794e+00\n", " 22 (restart 0) KSP residual norm 1.311300e+00\n", " 23 (restart 0) KSP residual norm 1.237153e+00\n", " 24 (restart 0) KSP residual norm 1.008013e+00\n", " 25 (restart 0) KSP residual norm 9.098768e-01\n", " 26 (restart 0) KSP residual norm 8.476587e-01\n", " 27 (restart 0) KSP residual norm 7.151217e-01\n", " 28 (restart 0) KSP residual norm 6.442731e-01\n", " 29 (restart 0) KSP residual norm 5.336693e-01\n", " 30 (restart 0) KSP residual norm 4.878138e-01\n", " 31 (restart 0) KSP residual norm 4.065293e-01\n", " 32 (restart 0) KSP residual norm 3.789890e-01\n", " 33 (restart 0) KSP residual norm 3.092096e-01\n", " 34 (restart 0) KSP residual norm 2.952991e-01\n", " 35 (restart 0) KSP residual norm 2.565412e-01\n", " 36 (restart 0) KSP residual norm 2.431211e-01\n", " 37 (restart 0) KSP residual norm 2.101030e-01\n", " 38 (restart 0) KSP residual norm 1.977771e-01\n", " 39 (restart 0) KSP residual norm 1.786690e-01\n", " 40 (restart 0) KSP residual norm 1.638160e-01\n", " 41 (restart 0) KSP residual norm 1.493695e-01\n", " 42 (restart 0) KSP residual norm 1.337401e-01\n", " 43 (restart 0) KSP residual norm 1.225251e-01\n", " 44 (restart 0) KSP residual norm 1.081126e-01\n", " 45 (restart 0) KSP residual norm 9.973055e-02\n", " 46 (restart 0) KSP residual norm 8.744658e-02\n", " 47 (restart 0) KSP residual norm 7.199996e-02\n", " 48 (restart 0) KSP residual norm 6.361322e-02\n", " 49 (restart 0) KSP residual norm 5.272906e-02\n", " 50 (restart 0) KSP residual norm 4.331777e-02\n", " 51 (restart 0) KSP residual norm 3.485704e-02\n", " 52 (restart 0) KSP residual norm 2.680712e-02\n", " 53 (restart 0) KSP residual norm 2.252466e-02\n", " 54 (restart 0) KSP residual norm 1.844531e-02\n", " 55 (restart 0) KSP residual norm 1.534257e-02\n", " 56 (restart 0) KSP residual norm 1.193549e-02\n", " 57 (restart 0) KSP residual norm 1.020902e-02\n", " 58 (restart 0) KSP residual norm 8.386319e-03\n", " 59 (restart 0) KSP residual norm 6.919243e-03\n", " 60 (restart 0) KSP residual norm 5.730582e-03\n", " 61 (restart 0) KSP residual norm 4.833756e-03\n", " 62 (restart 0) KSP residual norm 3.986004e-03\n", " 63 (restart 0) KSP residual norm 3.130830e-03\n", " 64 (restart 0) KSP residual norm 2.569436e-03\n", " 65 (restart 0) KSP residual norm 2.007649e-03\n", " 66 (restart 0) KSP residual norm 1.603029e-03\n", " 67 (restart 0) KSP residual norm 1.319865e-03\n", " 68 (restart 0) KSP residual norm 1.093935e-03\n", " 69 (restart 0) KSP residual norm 9.393492e-04\n", " 70 (restart 0) KSP residual norm 8.067507e-04\n", " 71 (restart 0) KSP residual norm 6.841680e-04\n", " 72 (restart 0) KSP residual norm 5.682887e-04\n", " 73 (restart 0) KSP residual norm 4.560594e-04\n", " 74 (restart 0) KSP residual norm 3.691072e-04\n", " 75 (restart 0) KSP residual norm 3.072845e-04\n", " 76 (restart 0) KSP residual norm 2.590848e-04\n", " 77 (restart 0) KSP residual norm 2.211552e-04\n", " 78 (restart 0) KSP residual norm 1.850145e-04\n", " 79 (restart 0) KSP residual norm 1.570334e-04\n", " 80 (restart 0) KSP residual norm 1.356486e-04\n", " 81 (restart 0) KSP residual norm 1.119924e-04\n", " 82 (restart 0) KSP residual norm 9.190565e-05\n", " 83 (restart 0) KSP residual norm 7.025169e-05\n", " 84 (restart 0) KSP residual norm 5.594092e-05\n", " 85 (restart 0) KSP residual norm 4.305005e-05\n", " 86 (restart 0) KSP residual norm 3.489671e-05\n", " 87 (restart 0) KSP residual norm 2.882052e-05\n", " 88 (restart 0) KSP residual norm 2.376939e-05\n", " 89 (restart 0) KSP residual norm 1.997174e-05\n", " 90 (restart 0) KSP residual norm 1.648143e-05\n", " 91 (restart 0) KSP residual norm 1.284108e-05\n", " 92 (restart 0) KSP residual norm 9.620320e-06\n", " 93 (restart 0) KSP residual norm 7.278495e-06\n", " 94 (restart 0) KSP residual norm 5.806932e-06\n", " 95 (restart 0) KSP residual norm 4.891996e-06\n", " 96 (restart 0) KSP residual norm 4.221792e-06\n", " 97 (restart 0) KSP residual norm 3.448051e-06\n", " 98 (restart 0) KSP residual norm 2.803473e-06\n", " 99 (restart 0) KSP residual norm 2.230566e-06\n", "100 (restart 0) KSP residual norm 1.749352e-06\n", "101 (restart 0) KSP residual norm 1.476622e-06\n", "102 (restart 0) KSP residual norm 1.180482e-06\n", "103 (restart 0) KSP residual norm 9.567908e-07\n", "104 (restart 0) KSP residual norm 7.251037e-07\n", "GMRES solver converged in 104 iterations (avg. reduction factor: 8.358e-01)\n", "\n", "Greedy iteration 3 (n = 8): ω* = 2.924e+00 GHz (1.114e+01), error = 2.067e-02, memory = 0/2\n", " Field energy E (1.804e-10 J) + H (1.451e-10 J) = 3.254e-10 J\n", "\n", " Residual norms for GMRES solve\n", " 0 (restart 0) KSP residual norm 1.372959e+02\n", " 1 (restart 0) KSP residual norm 1.128715e+02\n", " 2 (restart 0) KSP residual norm 8.912722e+01\n", " 3 (restart 0) KSP residual norm 8.546913e+01\n", " 4 (restart 0) KSP residual norm 3.221686e+01\n", " 5 (restart 0) KSP residual norm 2.632163e+01\n", " 6 (restart 0) KSP residual norm 1.305538e+01\n", " 7 (restart 0) KSP residual norm 1.203742e+01\n", " 8 (restart 0) KSP residual norm 8.230779e+00\n", " 9 (restart 0) KSP residual norm 7.891549e+00\n", " 10 (restart 0) KSP residual norm 4.913623e+00\n", " 11 (restart 0) KSP residual norm 4.567958e+00\n", " 12 (restart 0) KSP residual norm 3.389194e+00\n", " 13 (restart 0) KSP residual norm 3.058161e+00\n", " 14 (restart 0) KSP residual norm 2.844429e+00\n", " 15 (restart 0) KSP residual norm 2.517300e+00\n", " 16 (restart 0) KSP residual norm 2.135186e+00\n", " 17 (restart 0) KSP residual norm 1.984746e+00\n", " 18 (restart 0) KSP residual norm 1.751728e+00\n", " 19 (restart 0) KSP residual norm 1.319259e+00\n", " 20 (restart 0) KSP residual norm 1.227137e+00\n", " 21 (restart 0) KSP residual norm 9.986861e-01\n", " 22 (restart 0) KSP residual norm 9.354465e-01\n", " 23 (restart 0) KSP residual norm 7.563072e-01\n", " 24 (restart 0) KSP residual norm 6.661308e-01\n", " 25 (restart 0) KSP residual norm 6.225457e-01\n", " 26 (restart 0) KSP residual norm 5.463842e-01\n", " 27 (restart 0) KSP residual norm 5.169146e-01\n", " 28 (restart 0) KSP residual norm 4.302804e-01\n", " 29 (restart 0) KSP residual norm 3.902731e-01\n", " 30 (restart 0) KSP residual norm 3.633307e-01\n", " 31 (restart 0) KSP residual norm 3.081742e-01\n", " 32 (restart 0) KSP residual norm 2.737887e-01\n", " 33 (restart 0) KSP residual norm 2.493960e-01\n", " 34 (restart 0) KSP residual norm 2.218964e-01\n", " 35 (restart 0) KSP residual norm 1.956791e-01\n", " 36 (restart 0) KSP residual norm 1.758013e-01\n", " 37 (restart 0) KSP residual norm 1.527805e-01\n", " 38 (restart 0) KSP residual norm 1.350639e-01\n", " 39 (restart 0) KSP residual norm 1.207223e-01\n", " 40 (restart 0) KSP residual norm 1.021419e-01\n", " 41 (restart 0) KSP residual norm 9.077256e-02\n", " 42 (restart 0) KSP residual norm 7.572173e-02\n", " 43 (restart 0) KSP residual norm 6.958446e-02\n", " 44 (restart 0) KSP residual norm 5.815937e-02\n", " 45 (restart 0) KSP residual norm 5.305829e-02\n", " 46 (restart 0) KSP residual norm 4.736470e-02\n", " 47 (restart 0) KSP residual norm 3.908551e-02\n", " 48 (restart 0) KSP residual norm 3.231361e-02\n", " 49 (restart 0) KSP residual norm 2.312278e-02\n", " 50 (restart 0) KSP residual norm 1.817625e-02\n", " 51 (restart 0) KSP residual norm 1.522597e-02\n", " 52 (restart 0) KSP residual norm 1.291029e-02\n", " 53 (restart 0) KSP residual norm 1.085184e-02\n", " 54 (restart 0) KSP residual norm 9.077214e-03\n", " 55 (restart 0) KSP residual norm 6.936694e-03\n", " 56 (restart 0) KSP residual norm 5.633346e-03\n", " 57 (restart 0) KSP residual norm 4.330025e-03\n", " 58 (restart 0) KSP residual norm 3.566413e-03\n", " 59 (restart 0) KSP residual norm 2.918939e-03\n", " 60 (restart 0) KSP residual norm 2.372077e-03\n", " 61 (restart 0) KSP residual norm 1.859969e-03\n", " 62 (restart 0) KSP residual norm 1.463097e-03\n", " 63 (restart 0) KSP residual norm 1.180329e-03\n", " 64 (restart 0) KSP residual norm 8.808573e-04\n", " 65 (restart 0) KSP residual norm 6.945934e-04\n", " 66 (restart 0) KSP residual norm 5.380736e-04\n", " 67 (restart 0) KSP residual norm 4.030670e-04\n", " 68 (restart 0) KSP residual norm 3.117366e-04\n", " 69 (restart 0) KSP residual norm 2.374652e-04\n", " 70 (restart 0) KSP residual norm 1.911764e-04\n", " 71 (restart 0) KSP residual norm 1.469482e-04\n", " 72 (restart 0) KSP residual norm 1.151719e-04\n", " 73 (restart 0) KSP residual norm 8.979172e-05\n", " 74 (restart 0) KSP residual norm 6.930527e-05\n", " 75 (restart 0) KSP residual norm 5.415952e-05\n", " 76 (restart 0) KSP residual norm 4.059719e-05\n", " 77 (restart 0) KSP residual norm 3.250670e-05\n", " 78 (restart 0) KSP residual norm 2.528496e-05\n", " 79 (restart 0) KSP residual norm 1.988229e-05\n", " 80 (restart 0) KSP residual norm 1.634029e-05\n", " 81 (restart 0) KSP residual norm 1.221817e-05\n", " 82 (restart 0) KSP residual norm 9.314199e-06\n", " 83 (restart 0) KSP residual norm 7.230490e-06\n", " 84 (restart 0) KSP residual norm 5.724798e-06\n", " 85 (restart 0) KSP residual norm 4.676204e-06\n", " 86 (restart 0) KSP residual norm 3.566226e-06\n", " 87 (restart 0) KSP residual norm 2.858742e-06\n", " 88 (restart 0) KSP residual norm 2.254506e-06\n", " 89 (restart 0) KSP residual norm 1.800814e-06\n", " 90 (restart 0) KSP residual norm 1.388366e-06\n", " 91 (restart 0) KSP residual norm 1.107893e-06\n", "GMRES solver converged in 91 iterations (avg. reduction factor: 8.148e-01)\n", "\n", "Greedy iteration 4 (n = 10): ω* = 3.809e+00 GHz (1.451e+01), error = 3.530e-03, memory = 0/2\n", " Field energy E (1.767e-10 J) + H (1.387e-10 J) = 3.154e-10 J\n", "\n", " Residual norms for GMRES solve\n", " 0 (restart 0) KSP residual norm 6.222085e+01\n", " 1 (restart 0) KSP residual norm 4.381337e+01\n", " 2 (restart 0) KSP residual norm 3.419550e+01\n", " 3 (restart 0) KSP residual norm 2.287002e+01\n", " 4 (restart 0) KSP residual norm 1.998795e+01\n", " 5 (restart 0) KSP residual norm 1.495055e+01\n", " 6 (restart 0) KSP residual norm 1.260422e+01\n", " 7 (restart 0) KSP residual norm 6.424551e+00\n", " 8 (restart 0) KSP residual norm 5.116454e+00\n", " 9 (restart 0) KSP residual norm 4.421058e+00\n", " 10 (restart 0) KSP residual norm 3.904571e+00\n", " 11 (restart 0) KSP residual norm 3.135637e+00\n", " 12 (restart 0) KSP residual norm 2.914152e+00\n", " 13 (restart 0) KSP residual norm 2.765510e+00\n", " 14 (restart 0) KSP residual norm 2.657584e+00\n", " 15 (restart 0) KSP residual norm 2.500346e+00\n", " 16 (restart 0) KSP residual norm 2.420276e+00\n", " 17 (restart 0) KSP residual norm 2.163025e+00\n", " 18 (restart 0) KSP residual norm 2.106579e+00\n", " 19 (restart 0) KSP residual norm 1.644889e+00\n", " 20 (restart 0) KSP residual norm 1.622478e+00\n", " 21 (restart 0) KSP residual norm 1.171059e+00\n", " 22 (restart 0) KSP residual norm 1.128753e+00\n", " 23 (restart 0) KSP residual norm 8.051986e-01\n", " 24 (restart 0) KSP residual norm 6.440209e-01\n", " 25 (restart 0) KSP residual norm 5.921281e-01\n", " 26 (restart 0) KSP residual norm 4.829806e-01\n", " 27 (restart 0) KSP residual norm 4.562400e-01\n", " 28 (restart 0) KSP residual norm 3.640074e-01\n", " 29 (restart 0) KSP residual norm 3.324961e-01\n", " 30 (restart 0) KSP residual norm 2.801600e-01\n", " 31 (restart 0) KSP residual norm 2.516290e-01\n", " 32 (restart 0) KSP residual norm 2.174024e-01\n", " 33 (restart 0) KSP residual norm 1.797887e-01\n", " 34 (restart 0) KSP residual norm 1.647001e-01\n", " 35 (restart 0) KSP residual norm 1.370087e-01\n", " 36 (restart 0) KSP residual norm 1.265886e-01\n", " 37 (restart 0) KSP residual norm 1.057798e-01\n", " 38 (restart 0) KSP residual norm 9.356038e-02\n", " 39 (restart 0) KSP residual norm 8.208251e-02\n", " 40 (restart 0) KSP residual norm 7.215524e-02\n", " 41 (restart 0) KSP residual norm 6.408075e-02\n", " 42 (restart 0) KSP residual norm 5.757803e-02\n", " 43 (restart 0) KSP residual norm 5.048022e-02\n", " 44 (restart 0) KSP residual norm 4.418607e-02\n", " 45 (restart 0) KSP residual norm 4.003496e-02\n", " 46 (restart 0) KSP residual norm 3.566512e-02\n", " 47 (restart 0) KSP residual norm 3.231030e-02\n", " 48 (restart 0) KSP residual norm 2.788927e-02\n", " 49 (restart 0) KSP residual norm 2.591259e-02\n", " 50 (restart 0) KSP residual norm 2.295406e-02\n", " 51 (restart 0) KSP residual norm 2.050630e-02\n", " 52 (restart 0) KSP residual norm 1.689337e-02\n", " 53 (restart 0) KSP residual norm 1.494613e-02\n", " 54 (restart 0) KSP residual norm 1.256695e-02\n", " 55 (restart 0) KSP residual norm 1.113618e-02\n", " 56 (restart 0) KSP residual norm 8.991409e-03\n", " 57 (restart 0) KSP residual norm 7.772763e-03\n", " 58 (restart 0) KSP residual norm 6.531004e-03\n", " 59 (restart 0) KSP residual norm 5.442527e-03\n", " 60 (restart 0) KSP residual norm 4.336628e-03\n", " 61 (restart 0) KSP residual norm 3.514321e-03\n", " 62 (restart 0) KSP residual norm 2.827697e-03\n", " 63 (restart 0) KSP residual norm 2.383514e-03\n", " 64 (restart 0) KSP residual norm 1.980419e-03\n", " 65 (restart 0) KSP residual norm 1.597098e-03\n", " 66 (restart 0) KSP residual norm 1.322080e-03\n", " 67 (restart 0) KSP residual norm 1.047992e-03\n", " 68 (restart 0) KSP residual norm 8.421180e-04\n", " 69 (restart 0) KSP residual norm 6.585459e-04\n", " 70 (restart 0) KSP residual norm 5.003593e-04\n", " 71 (restart 0) KSP residual norm 3.975060e-04\n", " 72 (restart 0) KSP residual norm 3.139329e-04\n", " 73 (restart 0) KSP residual norm 2.427717e-04\n", " 74 (restart 0) KSP residual norm 1.926201e-04\n", " 75 (restart 0) KSP residual norm 1.576160e-04\n", " 76 (restart 0) KSP residual norm 1.258398e-04\n", " 77 (restart 0) KSP residual norm 9.624037e-05\n", " 78 (restart 0) KSP residual norm 8.131621e-05\n", " 79 (restart 0) KSP residual norm 6.607089e-05\n", " 80 (restart 0) KSP residual norm 4.985662e-05\n", " 81 (restart 0) KSP residual norm 3.959006e-05\n", " 82 (restart 0) KSP residual norm 3.101511e-05\n", " 83 (restart 0) KSP residual norm 2.412430e-05\n", " 84 (restart 0) KSP residual norm 2.039786e-05\n", " 85 (restart 0) KSP residual norm 1.638222e-05\n", " 86 (restart 0) KSP residual norm 1.318017e-05\n", " 87 (restart 0) KSP residual norm 1.012080e-05\n", " 88 (restart 0) KSP residual norm 7.468368e-06\n", " 89 (restart 0) KSP residual norm 5.854505e-06\n", " 90 (restart 0) KSP residual norm 4.448338e-06\n", " 91 (restart 0) KSP residual norm 3.369989e-06\n", " 92 (restart 0) KSP residual norm 2.697929e-06\n", " 93 (restart 0) KSP residual norm 2.177307e-06\n", " 94 (restart 0) KSP residual norm 1.710142e-06\n", " 95 (restart 0) KSP residual norm 1.287683e-06\n", " 96 (restart 0) KSP residual norm 9.997472e-07\n", " 97 (restart 0) KSP residual norm 7.756246e-07\n", " 98 (restart 0) KSP residual norm 5.663468e-07\n", "GMRES solver converged in 98 iterations (avg. reduction factor: 8.278e-01)\n", "\n", "Greedy iteration 5 (n = 12): ω* = 2.663e+00 GHz (1.015e+01), error = 3.258e-03, memory = 0/2\n", " Field energy E (1.114e-10 J) + H (9.199e-11 J) = 2.034e-10 J\n", "\n", " Residual norms for GMRES solve\n", " 0 (restart 0) KSP residual norm 2.535874e+02\n", " 1 (restart 0) KSP residual norm 2.490783e+02\n", " 2 (restart 0) KSP residual norm 3.652298e+01\n", " 3 (restart 0) KSP residual norm 2.500372e+01\n", " 4 (restart 0) KSP residual norm 1.623279e+01\n", " 5 (restart 0) KSP residual norm 1.600993e+01\n", " 6 (restart 0) KSP residual norm 1.246772e+01\n", " 7 (restart 0) KSP residual norm 1.129512e+01\n", " 8 (restart 0) KSP residual norm 1.070943e+01\n", " 9 (restart 0) KSP residual norm 9.127092e+00\n", " 10 (restart 0) KSP residual norm 8.847800e+00\n", " 11 (restart 0) KSP residual norm 7.922787e+00\n", " 12 (restart 0) KSP residual norm 7.387119e+00\n", " 13 (restart 0) KSP residual norm 6.780079e+00\n", " 14 (restart 0) KSP residual norm 5.392184e+00\n", " 15 (restart 0) KSP residual norm 5.286355e+00\n", " 16 (restart 0) KSP residual norm 3.935810e+00\n", " 17 (restart 0) KSP residual norm 3.771180e+00\n", " 18 (restart 0) KSP residual norm 2.974326e+00\n", " 19 (restart 0) KSP residual norm 2.909686e+00\n", " 20 (restart 0) KSP residual norm 2.443514e+00\n", " 21 (restart 0) KSP residual norm 2.348887e+00\n", " 22 (restart 0) KSP residual norm 2.014583e+00\n", " 23 (restart 0) KSP residual norm 1.969284e+00\n", " 24 (restart 0) KSP residual norm 1.713132e+00\n", " 25 (restart 0) KSP residual norm 1.649370e+00\n", " 26 (restart 0) KSP residual norm 1.319584e+00\n", " 27 (restart 0) KSP residual norm 1.256733e+00\n", " 28 (restart 0) KSP residual norm 1.041676e+00\n", " 29 (restart 0) KSP residual norm 9.532907e-01\n", " 30 (restart 0) KSP residual norm 8.586915e-01\n", " 31 (restart 0) KSP residual norm 7.226973e-01\n", " 32 (restart 0) KSP residual norm 6.201188e-01\n", " 33 (restart 0) KSP residual norm 5.630776e-01\n", " 34 (restart 0) KSP residual norm 4.817622e-01\n", " 35 (restart 0) KSP residual norm 4.265927e-01\n", " 36 (restart 0) KSP residual norm 3.588622e-01\n", " 37 (restart 0) KSP residual norm 3.107969e-01\n", " 38 (restart 0) KSP residual norm 2.785809e-01\n", " 39 (restart 0) KSP residual norm 2.407726e-01\n", " 40 (restart 0) KSP residual norm 2.126014e-01\n", " 41 (restart 0) KSP residual norm 1.768253e-01\n", " 42 (restart 0) KSP residual norm 1.425849e-01\n", " 43 (restart 0) KSP residual norm 1.223558e-01\n", " 44 (restart 0) KSP residual norm 9.900582e-02\n", " 45 (restart 0) KSP residual norm 8.679791e-02\n", " 46 (restart 0) KSP residual norm 7.461620e-02\n", " 47 (restart 0) KSP residual norm 6.444422e-02\n", " 48 (restart 0) KSP residual norm 5.567814e-02\n", " 49 (restart 0) KSP residual norm 4.760342e-02\n", " 50 (restart 0) KSP residual norm 4.190164e-02\n", " 51 (restart 0) KSP residual norm 3.400770e-02\n", " 52 (restart 0) KSP residual norm 2.941075e-02\n", " 53 (restart 0) KSP residual norm 2.316184e-02\n", " 54 (restart 0) KSP residual norm 1.968001e-02\n", " 55 (restart 0) KSP residual norm 1.589984e-02\n", " 56 (restart 0) KSP residual norm 1.366496e-02\n", " 57 (restart 0) KSP residual norm 1.085874e-02\n", " 58 (restart 0) KSP residual norm 9.196070e-03\n", " 59 (restart 0) KSP residual norm 7.616862e-03\n", " 60 (restart 0) KSP residual norm 6.400661e-03\n", " 61 (restart 0) KSP residual norm 5.392925e-03\n", " 62 (restart 0) KSP residual norm 4.158556e-03\n", " 63 (restart 0) KSP residual norm 3.487808e-03\n", " 64 (restart 0) KSP residual norm 2.720670e-03\n", " 65 (restart 0) KSP residual norm 2.400893e-03\n", " 66 (restart 0) KSP residual norm 1.966862e-03\n", " 67 (restart 0) KSP residual norm 1.708589e-03\n", " 68 (restart 0) KSP residual norm 1.402091e-03\n", " 69 (restart 0) KSP residual norm 1.160595e-03\n", " 70 (restart 0) KSP residual norm 9.375729e-04\n", " 71 (restart 0) KSP residual norm 7.682539e-04\n", " 72 (restart 0) KSP residual norm 6.433656e-04\n", " 73 (restart 0) KSP residual norm 5.561198e-04\n", " 74 (restart 0) KSP residual norm 4.668754e-04\n", " 75 (restart 0) KSP residual norm 3.863634e-04\n", " 76 (restart 0) KSP residual norm 3.161325e-04\n", " 77 (restart 0) KSP residual norm 2.422457e-04\n", " 78 (restart 0) KSP residual norm 1.896312e-04\n", " 79 (restart 0) KSP residual norm 1.457312e-04\n", " 80 (restart 0) KSP residual norm 1.144688e-04\n", " 81 (restart 0) KSP residual norm 9.605358e-05\n", " 82 (restart 0) KSP residual norm 8.294798e-05\n", " 83 (restart 0) KSP residual norm 7.070766e-05\n", " 84 (restart 0) KSP residual norm 5.852022e-05\n", " 85 (restart 0) KSP residual norm 4.708698e-05\n", " 86 (restart 0) KSP residual norm 3.903079e-05\n", " 87 (restart 0) KSP residual norm 3.174705e-05\n", " 88 (restart 0) KSP residual norm 2.567829e-05\n", " 89 (restart 0) KSP residual norm 2.031271e-05\n", " 90 (restart 0) KSP residual norm 1.580737e-05\n", " 91 (restart 0) KSP residual norm 1.270921e-05\n", " 92 (restart 0) KSP residual norm 9.942090e-06\n", " 93 (restart 0) KSP residual norm 7.824863e-06\n", " 94 (restart 0) KSP residual norm 6.289548e-06\n", " 95 (restart 0) KSP residual norm 5.075182e-06\n", " 96 (restart 0) KSP residual norm 4.010277e-06\n", " 97 (restart 0) KSP residual norm 3.164513e-06\n", " 98 (restart 0) KSP residual norm 2.518475e-06\n", "GMRES solver converged in 98 iterations (avg. reduction factor: 8.286e-01)\n", "\n", "Greedy iteration 6 (n = 14): ω* = 3.025e+00 GHz (1.153e+01), error = 9.695e-04, memory = 1/2\n", " Field energy E (2.621e-10 J) + H (2.210e-10 J) = 4.831e-10 J\n", "\n", " Residual norms for GMRES solve\n", " 0 (restart 0) KSP residual norm 1.930300e+02\n", " 1 (restart 0) KSP residual norm 1.486121e+02\n", " 2 (restart 0) KSP residual norm 9.058308e+01\n", " 3 (restart 0) KSP residual norm 7.425036e+01\n", " 4 (restart 0) KSP residual norm 4.227448e+01\n", " 5 (restart 0) KSP residual norm 4.085673e+01\n", " 6 (restart 0) KSP residual norm 2.325765e+01\n", " 7 (restart 0) KSP residual norm 1.834803e+01\n", " 8 (restart 0) KSP residual norm 1.439011e+01\n", " 9 (restart 0) KSP residual norm 1.317514e+01\n", " 10 (restart 0) KSP residual norm 8.147007e+00\n", " 11 (restart 0) KSP residual norm 7.673532e+00\n", " 12 (restart 0) KSP residual norm 5.351121e+00\n", " 13 (restart 0) KSP residual norm 5.099402e+00\n", " 14 (restart 0) KSP residual norm 3.973760e+00\n", " 15 (restart 0) KSP residual norm 3.647087e+00\n", " 16 (restart 0) KSP residual norm 3.000290e+00\n", " 17 (restart 0) KSP residual norm 2.701561e+00\n", " 18 (restart 0) KSP residual norm 2.353383e+00\n", " 19 (restart 0) KSP residual norm 2.173996e+00\n", " 20 (restart 0) KSP residual norm 1.924804e+00\n", " 21 (restart 0) KSP residual norm 1.530308e+00\n", " 22 (restart 0) KSP residual norm 1.390681e+00\n", " 23 (restart 0) KSP residual norm 1.213257e+00\n", " 24 (restart 0) KSP residual norm 1.169319e+00\n", " 25 (restart 0) KSP residual norm 1.047080e+00\n", " 26 (restart 0) KSP residual norm 9.090855e-01\n", " 27 (restart 0) KSP residual norm 7.111096e-01\n", " 28 (restart 0) KSP residual norm 6.391407e-01\n", " 29 (restart 0) KSP residual norm 4.616208e-01\n", " 30 (restart 0) KSP residual norm 3.929084e-01\n", " 31 (restart 0) KSP residual norm 3.310419e-01\n", " 32 (restart 0) KSP residual norm 2.913446e-01\n", " 33 (restart 0) KSP residual norm 2.505471e-01\n", " 34 (restart 0) KSP residual norm 2.206247e-01\n", " 35 (restart 0) KSP residual norm 1.820965e-01\n", " 36 (restart 0) KSP residual norm 1.596558e-01\n", " 37 (restart 0) KSP residual norm 1.252252e-01\n", " 38 (restart 0) KSP residual norm 1.099865e-01\n", " 39 (restart 0) KSP residual norm 9.385903e-02\n", " 40 (restart 0) KSP residual norm 8.129578e-02\n", " 41 (restart 0) KSP residual norm 7.199896e-02\n", " 42 (restart 0) KSP residual norm 6.061779e-02\n", " 43 (restart 0) KSP residual norm 5.350946e-02\n", " 44 (restart 0) KSP residual norm 4.735193e-02\n", " 45 (restart 0) KSP residual norm 4.020791e-02\n", " 46 (restart 0) KSP residual norm 3.338069e-02\n", " 47 (restart 0) KSP residual norm 2.863165e-02\n", " 48 (restart 0) KSP residual norm 2.345198e-02\n", " 49 (restart 0) KSP residual norm 1.999858e-02\n", " 50 (restart 0) KSP residual norm 1.733930e-02\n", " 51 (restart 0) KSP residual norm 1.511007e-02\n", " 52 (restart 0) KSP residual norm 1.253086e-02\n", " 53 (restart 0) KSP residual norm 1.071864e-02\n", " 54 (restart 0) KSP residual norm 8.654238e-03\n", " 55 (restart 0) KSP residual norm 7.028552e-03\n", " 56 (restart 0) KSP residual norm 6.041806e-03\n", " 57 (restart 0) KSP residual norm 5.066366e-03\n", " 58 (restart 0) KSP residual norm 4.428582e-03\n", " 59 (restart 0) KSP residual norm 3.729887e-03\n", " 60 (restart 0) KSP residual norm 3.150696e-03\n", " 61 (restart 0) KSP residual norm 2.682870e-03\n", " 62 (restart 0) KSP residual norm 2.254940e-03\n", " 63 (restart 0) KSP residual norm 1.890621e-03\n", " 64 (restart 0) KSP residual norm 1.631501e-03\n", " 65 (restart 0) KSP residual norm 1.368213e-03\n", " 66 (restart 0) KSP residual norm 1.116512e-03\n", " 67 (restart 0) KSP residual norm 8.612473e-04\n", " 68 (restart 0) KSP residual norm 6.818560e-04\n", " 69 (restart 0) KSP residual norm 5.753370e-04\n", " 70 (restart 0) KSP residual norm 4.944585e-04\n", " 71 (restart 0) KSP residual norm 4.006294e-04\n", " 72 (restart 0) KSP residual norm 3.317791e-04\n", " 73 (restart 0) KSP residual norm 2.805047e-04\n", " 74 (restart 0) KSP residual norm 2.295977e-04\n", " 75 (restart 0) KSP residual norm 1.949779e-04\n", " 76 (restart 0) KSP residual norm 1.603829e-04\n", " 77 (restart 0) KSP residual norm 1.376361e-04\n", " 78 (restart 0) KSP residual norm 1.123122e-04\n", " 79 (restart 0) KSP residual norm 9.393307e-05\n", " 80 (restart 0) KSP residual norm 6.748733e-05\n", " 81 (restart 0) KSP residual norm 5.514348e-05\n", " 82 (restart 0) KSP residual norm 4.623780e-05\n", " 83 (restart 0) KSP residual norm 4.099595e-05\n", " 84 (restart 0) KSP residual norm 3.063596e-05\n", " 85 (restart 0) KSP residual norm 2.386411e-05\n", " 86 (restart 0) KSP residual norm 1.879529e-05\n", " 87 (restart 0) KSP residual norm 1.512025e-05\n", " 88 (restart 0) KSP residual norm 1.178537e-05\n", " 89 (restart 0) KSP residual norm 9.173912e-06\n", " 90 (restart 0) KSP residual norm 7.124294e-06\n", " 91 (restart 0) KSP residual norm 5.454701e-06\n", " 92 (restart 0) KSP residual norm 4.314241e-06\n", " 93 (restart 0) KSP residual norm 3.307069e-06\n", " 94 (restart 0) KSP residual norm 2.517918e-06\n", " 95 (restart 0) KSP residual norm 1.970565e-06\n", " 96 (restart 0) KSP residual norm 1.471577e-06\n", "GMRES solver converged in 96 iterations (avg. reduction factor: 8.231e-01)\n", "\n", "Greedy iteration 7 (n = 16): ω* = 3.640e+00 GHz (1.387e+01), error = 8.617e-05, memory = 2/2\n", " Field energy E (1.961e-10 J) + H (1.642e-10 J) = 3.603e-10 J\n", "\n", "Adaptive sampling converged with 9 frequency samples:\n", " n = 18, error = 8.617e-05, tol = 1.000e-03, memory = 2/2\n", " Sampled frequencies (GHz): 2.500e+00, 4.000e+00, 3.433e+00, 3.248e+00,\n", " 2.924e+00, 3.809e+00, 2.663e+00, 3.025e+00,\n", " 3.640e+00\n", " Sample errors: inf, inf, 9.133e-01, 2.433e-02, 2.067e-02,\n", " 3.530e-03, 3.258e-03, 9.695e-04, 8.617e-05\n", " Total offline phase elapsed time: 7.84e+01 s\n", "\n", "Beginning fast frequency sweep online phase\n", "\n", "It 1/61: ω/2π = 2.500e+00 GHz (total elapsed time = 7.84e+01 s)\n", "\n", " Sol. ||E|| = 3.127238e+01\n", " Field energy E (9.443e-11 J) + H (8.540e-11 J) = 1.798e-10 J\n", " S[1][1] = +9.831e-01-1.419e-01i, |S[1][1]| = -5.890e-02, arg(S[1][1]) = -8.211e+00\n", "\n", " Wrote fields to disk (Paraview) at step 1\n", "\n", "It 2/61: ω/2π = 2.525e+00 GHz (total elapsed time = 7.95e+01 s)\n", "\n", " Sol. ||E|| = 3.154322e+01\n", " Field energy E (9.654e-11 J) + H (8.587e-11 J) = 1.824e-10 J\n", " S[1][1] = +9.783e-01-1.693e-01i, |S[1][1]| = -6.264e-02, arg(S[1][1]) = -9.818e+00\n", "\n", "It 3/61: ω/2π = 2.550e+00 GHz (total elapsed time = 8.03e+01 s)\n", "\n", " Sol. ||E|| = 3.182459e+01\n", " Field energy E (9.880e-11 J) + H (8.650e-11 J) = 1.853e-10 J\n", " S[1][1] = +9.726e-01-1.970e-01i, |S[1][1]| = -6.676e-02, arg(S[1][1]) = -1.145e+01\n", "\n", "It 4/61: ω/2π = 2.575e+00 GHz (total elapsed time = 8.11e+01 s)\n", "\n", " Sol. ||E|| = 3.211780e+01\n", " Field energy E (1.012e-10 J) + H (8.732e-11 J) = 1.885e-10 J\n", " S[1][1] = +9.660e-01-2.249e-01i, |S[1][1]| = -7.132e-02, arg(S[1][1]) = -1.311e+01\n", "\n", "It 5/61: ω/2π = 2.600e+00 GHz (total elapsed time = 8.20e+01 s)\n", "\n", " Sol. ||E|| = 3.242431e+01\n", " Field energy E (1.038e-10 J) + H (8.834e-11 J) = 1.922e-10 J\n", " S[1][1] = +9.584e-01-2.531e-01i, |S[1][1]| = -7.638e-02, arg(S[1][1]) = -1.479e+01\n", "\n", "It 6/61: ω/2π = 2.625e+00 GHz (total elapsed time = 8.29e+01 s)\n", "\n", " Sol. ||E|| = 3.274585e+01\n", " Field energy E (1.067e-10 J) + H (8.958e-11 J) = 1.962e-10 J\n", " S[1][1] = +9.498e-01-2.815e-01i, |S[1][1]| = -8.202e-02, arg(S[1][1]) = -1.651e+01\n", "\n", " Wrote fields to disk (Paraview) at step 6\n", "\n", "It 7/61: ω/2π = 2.650e+00 GHz (total elapsed time = 8.42e+01 s)\n", "\n", " Sol. ||E|| = 3.308446e+01\n", " Field energy E (1.097e-10 J) + H (9.109e-11 J) = 2.008e-10 J\n", " S[1][1] = +9.400e-01-3.102e-01i, |S[1][1]| = -8.834e-02, arg(S[1][1]) = -1.826e+01\n", "\n", "It 8/61: ω/2π = 2.675e+00 GHz (total elapsed time = 8.52e+01 s)\n", "\n", " Sol. ||E|| = 3.344253e+01\n", " Field energy E (1.131e-10 J) + H (9.289e-11 J) = 2.060e-10 J\n", " S[1][1] = +9.291e-01-3.393e-01i, |S[1][1]| = -9.545e-02, arg(S[1][1]) = -2.006e+01\n", "\n", "It 9/61: ω/2π = 2.700e+00 GHz (total elapsed time = 8.63e+01 s)\n", "\n", " Sol. ||E|| = 3.382289e+01\n", " Field energy E (1.168e-10 J) + H (9.503e-11 J) = 2.118e-10 J\n", " S[1][1] = +9.168e-01-3.686e-01i, |S[1][1]| = -1.035e-01, arg(S[1][1]) = -2.190e+01\n", "\n", "It 10/61: ω/2π = 2.725e+00 GHz (total elapsed time = 8.74e+01 s)\n", "\n", " Sol. ||E|| = 3.422895e+01\n", " Field energy E (1.208e-10 J) + H (9.757e-11 J) = 2.184e-10 J\n", " S[1][1] = +9.032e-01-3.983e-01i, |S[1][1]| = -1.126e-01, arg(S[1][1]) = -2.380e+01\n", "\n", "It 11/61: ω/2π = 2.750e+00 GHz (total elapsed time = 8.85e+01 s)\n", "\n", " Sol. ||E|| = 3.466481e+01\n", " Field energy E (1.254e-10 J) + H (1.006e-10 J) = 2.259e-10 J\n", " S[1][1] = +8.880e-01-4.284e-01i, |S[1][1]| = -1.231e-01, arg(S[1][1]) = -2.576e+01\n", "\n", " Wrote fields to disk (Paraview) at step 11\n", "\n", "It 12/61: ω/2π = 2.775e+00 GHz (total elapsed time = 9.00e+01 s)\n", "\n", " Sol. ||E|| = 3.513547e+01\n", " Field energy E (1.304e-10 J) + H (1.041e-10 J) = 2.345e-10 J\n", " S[1][1] = +8.711e-01-4.589e-01i, |S[1][1]| = -1.351e-01, arg(S[1][1]) = -2.778e+01\n", "\n", "It 13/61: ω/2π = 2.800e+00 GHz (total elapsed time = 9.12e+01 s)\n", "\n", " Sol. ||E|| = 3.564703e+01\n", " Field energy E (1.362e-10 J) + H (1.083e-10 J) = 2.445e-10 J\n", " S[1][1] = +8.523e-01-4.898e-01i, |S[1][1]| = -1.490e-01, arg(S[1][1]) = -2.988e+01\n", "\n", "It 14/61: ω/2π = 2.825e+00 GHz (total elapsed time = 9.24e+01 s)\n", "\n", " Sol. ||E|| = 3.620704e+01\n", " Field energy E (1.427e-10 J) + H (1.133e-10 J) = 2.560e-10 J\n", " S[1][1] = +8.313e-01-5.211e-01i, |S[1][1]| = -1.654e-01, arg(S[1][1]) = -3.208e+01\n", "\n", "It 15/61: ω/2π = 2.850e+00 GHz (total elapsed time = 9.37e+01 s)\n", "\n", " Sol. ||E|| = 3.682492e+01\n", " Field energy E (1.501e-10 J) + H (1.193e-10 J) = 2.694e-10 J\n", " S[1][1] = +8.079e-01-5.528e-01i, |S[1][1]| = -1.846e-01, arg(S[1][1]) = -3.438e+01\n", "\n", "It 16/61: ω/2π = 2.875e+00 GHz (total elapsed time = 9.50e+01 s)\n", "\n", " Sol. ||E|| = 3.751249e+01\n", " Field energy E (1.588e-10 J) + H (1.264e-10 J) = 2.852e-10 J\n", " S[1][1] = +7.817e-01-5.850e-01i, |S[1][1]| = -2.074e-01, arg(S[1][1]) = -3.681e+01\n", "\n", " Wrote fields to disk (Paraview) at step 16\n", "\n", "It 17/61: ω/2π = 2.900e+00 GHz (total elapsed time = 9.67e+01 s)\n", "\n", " Sol. ||E|| = 3.828480e+01\n", " Field energy E (1.689e-10 J) + H (1.350e-10 J) = 3.040e-10 J\n", " S[1][1] = +7.523e-01-6.176e-01i, |S[1][1]| = -2.350e-01, arg(S[1][1]) = -3.939e+01\n", "\n", "It 18/61: ω/2π = 2.925e+00 GHz (total elapsed time = 9.82e+01 s)\n", "\n", " Sol. ||E|| = 3.916146e+01\n", " Field energy E (1.810e-10 J) + H (1.456e-10 J) = 3.265e-10 J\n", " S[1][1] = +7.189e-01-6.505e-01i, |S[1][1]| = -2.685e-01, arg(S[1][1]) = -4.214e+01\n", "\n", "It 19/61: ω/2π = 2.950e+00 GHz (total elapsed time = 9.96e+01 s)\n", "\n", " Sol. ||E|| = 4.016750e+01\n", " Field energy E (1.954e-10 J) + H (1.585e-10 J) = 3.539e-10 J\n", " S[1][1] = +6.810e-01-6.837e-01i, |S[1][1]| = -3.098e-01, arg(S[1][1]) = -4.511e+01\n", "\n", "It 20/61: ω/2π = 2.975e+00 GHz (total elapsed time = 1.01e+02 s)\n", "\n", " Sol. ||E|| = 4.133465e+01\n", " Field energy E (2.130e-10 J) + H (1.746e-10 J) = 3.876e-10 J\n", " S[1][1] = +6.375e-01-7.167e-01i, |S[1][1]| = -3.616e-01, arg(S[1][1]) = -4.835e+01\n", "\n", "It 21/61: ω/2π = 3.000e+00 GHz (total elapsed time = 1.03e+02 s)\n", "\n", " Sol. ||E|| = 4.270686e+01\n", " Field energy E (2.347e-10 J) + H (1.950e-10 J) = 4.297e-10 J\n", " S[1][1] = +5.872e-01-7.493e-01i, |S[1][1]| = -4.276e-01, arg(S[1][1]) = -5.192e+01\n", "\n", " Wrote fields to disk (Paraview) at step 21\n", "\n", "It 22/61: ω/2π = 3.025e+00 GHz (total elapsed time = 1.05e+02 s)\n", "\n", " Sol. ||E|| = 4.434163e+01\n", " Field energy E (2.621e-10 J) + H (2.210e-10 J) = 4.832e-10 J\n", " S[1][1] = +5.284e-01-7.806e-01i, |S[1][1]| = -5.135e-01, arg(S[1][1]) = -5.591e+01\n", "\n", "It 23/61: ω/2π = 3.050e+00 GHz (total elapsed time = 1.06e+02 s)\n", "\n", " Sol. ||E|| = 4.631569e+01\n", " Field energy E (2.972e-10 J) + H (2.549e-10 J) = 5.521e-10 J\n", " S[1][1] = +4.589e-01-8.092e-01i, |S[1][1]| = -6.278e-01, arg(S[1][1]) = -6.044e+01\n", "\n", "It 24/61: ω/2π = 3.075e+00 GHz (total elapsed time = 1.08e+02 s)\n", "\n", " Sol. ||E|| = 4.873113e+01\n", " Field energy E (3.429e-10 J) + H (2.998e-10 J) = 6.427e-10 J\n", " S[1][1] = +3.760e-01-8.328e-01i, |S[1][1]| = -7.838e-01, arg(S[1][1]) = -6.570e+01\n", "\n", "It 25/61: ω/2π = 3.100e+00 GHz (total elapsed time = 1.10e+02 s)\n", "\n", " Sol. ||E|| = 5.172111e+01\n", " Field energy E (4.038e-10 J) + H (3.603e-10 J) = 7.640e-10 J\n", " S[1][1] = +2.761e-01-8.470e-01i, |S[1][1]| = -1.004e+00, arg(S[1][1]) = -7.195e+01\n", "\n", "It 26/61: ω/2π = 3.125e+00 GHz (total elapsed time = 1.12e+02 s)\n", "\n", " Sol. ||E|| = 5.544988e+01\n", " Field energy E (4.860e-10 J) + H (4.430e-10 J) = 9.290e-10 J\n", " S[1][1] = +1.555e-01-8.445e-01i, |S[1][1]| = -1.324e+00, arg(S[1][1]) = -7.957e+01\n", "\n", " Wrote fields to disk (Paraview) at step 26\n", "\n", "It 27/61: ω/2π = 3.150e+00 GHz (total elapsed time = 1.14e+02 s)\n", "\n", " Sol. ||E|| = 6.009117e+01\n", " Field energy E (5.981e-10 J) + H (5.571e-10 J) = 1.155e-09 J\n", " S[1][1] = +1.151e-02-8.119e-01i, |S[1][1]| = -1.809e+00, arg(S[1][1]) = -8.919e+01\n", "\n", "It 28/61: ω/2π = 3.175e+00 GHz (total elapsed time = 1.16e+02 s)\n", "\n", " Sol. ||E|| = 6.574242e+01\n", " Field energy E (7.492e-10 J) + H (7.127e-10 J) = 1.462e-09 J\n", " S[1][1] = -1.524e-01-7.277e-01i, |S[1][1]| = -2.574e+00, arg(S[1][1]) = -1.018e+02\n", "\n", "It 29/61: ω/2π = 3.200e+00 GHz (total elapsed time = 1.17e+02 s)\n", "\n", " Sol. ||E|| = 7.218857e+01\n", " Field energy E (9.417e-10 J) + H (9.137e-10 J) = 1.855e-09 J\n", " S[1][1] = -3.152e-01-5.617e-01i, |S[1][1]| = -3.821e+00, arg(S[1][1]) = -1.193e+02\n", "\n", "It 30/61: ω/2π = 3.225e+00 GHz (total elapsed time = 1.19e+02 s)\n", "\n", " Sol. ||E|| = 7.844610e+01\n", " Field energy E (1.151e-09 J) + H (1.137e-09 J) = 2.288e-09 J\n", " S[1][1] = -4.198e-01-2.915e-01i, |S[1][1]| = -5.830e+00, arg(S[1][1]) = -1.452e+02\n", "\n", "It 31/61: ω/2π = 3.250e+00 GHz (total elapsed time = 1.21e+02 s)\n", "\n", " Sol. ||E|| = 8.244404e+01\n", " Field energy E (1.303e-09 J) + H (1.305e-09 J) = 2.608e-09 J\n", " S[1][1] = -3.766e-01+4.828e-02i, |S[1][1]| = -8.411e+00, arg(S[1][1]) = +1.727e+02\n", "\n", " Wrote fields to disk (Paraview) at step 31\n", "\n", "It 32/61: ω/2π = 3.275e+00 GHz (total elapsed time = 1.24e+02 s)\n", "\n", " Sol. ||E|| = 8.204990e+01\n", " Field energy E (1.305e-09 J) + H (1.321e-09 J) = 2.626e-09 J\n", " S[1][1] = -1.447e-01+3.319e-01i, |S[1][1]| = -8.825e+00, arg(S[1][1]) = +1.136e+02\n", "\n", "It 33/61: ω/2π = 3.300e+00 GHz (total elapsed time = 1.26e+02 s)\n", "\n", " Sol. ||E|| = 7.731434e+01\n", " Field energy E (1.155e-09 J) + H (1.176e-09 J) = 2.331e-09 J\n", " S[1][1] = +1.838e-01+4.414e-01i, |S[1][1]| = -6.409e+00, arg(S[1][1]) = +6.739e+01\n", "\n", "It 34/61: ω/2π = 3.325e+00 GHz (total elapsed time = 1.28e+02 s)\n", "\n", " Sol. ||E|| = 7.049695e+01\n", " Field energy E (9.430e-10 J) + H (9.616e-10 J) = 1.905e-09 J\n", " S[1][1] = +4.739e-01+3.874e-01i, |S[1][1]| = -4.264e+00, arg(S[1][1]) = +3.926e+01\n", "\n", "It 35/61: ω/2π = 3.350e+00 GHz (total elapsed time = 1.30e+02 s)\n", "\n", " Sol. ||E|| = 6.376662e+01\n", " Field energy E (7.481e-10 J) + H (7.601e-10 J) = 1.508e-09 J\n", " S[1][1] = +6.699e-01+2.525e-01i, |S[1][1]| = -2.903e+00, arg(S[1][1]) = +2.066e+01\n", "\n", "It 36/61: ω/2π = 3.375e+00 GHz (total elapsed time = 1.32e+02 s)\n", "\n", " Sol. ||E|| = 5.811103e+01\n", " Field energy E (5.964e-10 J) + H (6.011e-10 J) = 1.198e-09 J\n", " S[1][1] = +7.821e-01+1.002e-01i, |S[1][1]| = -2.064e+00, arg(S[1][1]) = +7.300e+00\n", "\n", " Wrote fields to disk (Paraview) at step 36\n", "\n", "It 37/61: ω/2π = 3.400e+00 GHz (total elapsed time = 1.35e+02 s)\n", "\n", " Sol. ||E|| = 5.369081e+01\n", " Field energy E (4.855e-10 J) + H (4.835e-10 J) = 9.691e-10 J\n", " S[1][1] = +8.372e-01-4.174e-02i, |S[1][1]| = -1.533e+00, arg(S[1][1]) = -2.854e+00\n", "\n", "It 38/61: ω/2π = 3.425e+00 GHz (total elapsed time = 1.37e+02 s)\n", "\n", " Sol. ||E|| = 5.034358e+01\n", " Field energy E (4.057e-10 J) + H (3.980e-10 J) = 8.037e-10 J\n", " S[1][1] = +8.570e-01-1.655e-01i, |S[1][1]| = -1.182e+00, arg(S[1][1]) = -1.093e+01\n", "\n", "It 39/61: ω/2π = 3.450e+00 GHz (total elapsed time = 1.39e+02 s)\n", "\n", " Sol. ||E|| = 4.784135e+01\n", " Field energy E (3.480e-10 J) + H (3.355e-10 J) = 6.835e-10 J\n", " S[1][1] = +8.553e-01-2.712e-01i, |S[1][1]| = -9.412e-01, arg(S[1][1]) = -1.759e+01\n", "\n", "It 40/61: ω/2π = 3.475e+00 GHz (total elapsed time = 1.41e+02 s)\n", "\n", " Sol. ||E|| = 4.598016e+01\n", " Field energy E (3.058e-10 J) + H (2.892e-10 J) = 5.950e-10 J\n", " S[1][1] = +8.407e-01-3.615e-01i, |S[1][1]| = -7.708e-01, arg(S[1][1]) = -2.327e+01\n", "\n", "It 41/61: ω/2π = 3.500e+00 GHz (total elapsed time = 1.44e+02 s)\n", "\n", " Sol. ||E|| = 4.459951e+01\n", " Field energy E (2.744e-10 J) + H (2.545e-10 J) = 5.289e-10 J\n", " S[1][1] = +8.179e-01-4.391e-01i, |S[1][1]| = -6.464e-01, arg(S[1][1]) = -2.823e+01\n", "\n", " Wrote fields to disk (Paraview) at step 41\n", "\n", "It 42/61: ω/2π = 3.525e+00 GHz (total elapsed time = 1.47e+02 s)\n", "\n", " Sol. ||E|| = 4.357915e+01\n", " Field energy E (2.509e-10 J) + H (2.280e-10 J) = 4.788e-10 J\n", " S[1][1] = +7.899e-01-5.064e-01i, |S[1][1]| = -5.534e-01, arg(S[1][1]) = -3.266e+01\n", "\n", "It 43/61: ω/2π = 3.550e+00 GHz (total elapsed time = 1.49e+02 s)\n", "\n", " Sol. ||E|| = 4.283053e+01\n", " Field energy E (2.329e-10 J) + H (2.076e-10 J) = 4.405e-10 J\n", " S[1][1] = +7.584e-01-5.654e-01i, |S[1][1]| = -4.823e-01, arg(S[1][1]) = -3.670e+01\n", "\n", "It 44/61: ω/2π = 3.575e+00 GHz (total elapsed time = 1.52e+02 s)\n", "\n", " Sol. ||E|| = 4.228870e+01\n", " Field energy E (2.191e-10 J) + H (1.916e-10 J) = 4.107e-10 J\n", " S[1][1] = +7.246e-01-6.175e-01i, |S[1][1]| = -4.271e-01, arg(S[1][1]) = -4.044e+01\n", "\n", "It 45/61: ω/2π = 3.600e+00 GHz (total elapsed time = 1.54e+02 s)\n", "\n", " Sol. ||E|| = 4.190578e+01\n", " Field energy E (2.084e-10 J) + H (1.791e-10 J) = 3.875e-10 J\n", " S[1][1] = +6.889e-01-6.640e-01i, |S[1][1]| = -3.836e-01, arg(S[1][1]) = -4.394e+01\n", "\n", "It 46/61: ω/2π = 3.625e+00 GHz (total elapsed time = 1.57e+02 s)\n", "\n", " Sol. ||E|| = 4.164629e+01\n", " Field energy E (2.001e-10 J) + H (1.691e-10 J) = 3.692e-10 J\n", " S[1][1] = +6.519e-01-7.056e-01i, |S[1][1]| = -3.489e-01, arg(S[1][1]) = -4.727e+01\n", "\n", " Wrote fields to disk (Paraview) at step 46\n", "\n", "It 47/61: ω/2π = 3.650e+00 GHz (total elapsed time = 1.60e+02 s)\n", "\n", " Sol. ||E|| = 4.148362e+01\n", " Field energy E (1.936e-10 J) + H (1.612e-10 J) = 3.548e-10 J\n", " S[1][1] = +6.137e-01-7.431e-01i, |S[1][1]| = -3.210e-01, arg(S[1][1]) = -5.045e+01\n", "\n", "It 48/61: ω/2π = 3.675e+00 GHz (total elapsed time = 1.63e+02 s)\n", "\n", " Sol. ||E|| = 4.139766e+01\n", " Field energy E (1.886e-10 J) + H (1.550e-10 J) = 3.436e-10 J\n", " S[1][1] = +5.745e-01-7.769e-01i, |S[1][1]| = -2.983e-01, arg(S[1][1]) = -5.352e+01\n", "\n", "It 49/61: ω/2π = 3.700e+00 GHz (total elapsed time = 1.65e+02 s)\n", "\n", " Sol. ||E|| = 4.137299e+01\n", " Field energy E (1.847e-10 J) + H (1.500e-10 J) = 3.347e-10 J\n", " S[1][1] = +5.344e-01-8.074e-01i, |S[1][1]| = -2.799e-01, arg(S[1][1]) = -5.650e+01\n", "\n", "It 50/61: ω/2π = 3.725e+00 GHz (total elapsed time = 1.68e+02 s)\n", "\n", " Sol. ||E|| = 4.139769e+01\n", " Field energy E (1.818e-10 J) + H (1.461e-10 J) = 3.279e-10 J\n", " S[1][1] = +4.935e-01-8.350e-01i, |S[1][1]| = -2.648e-01, arg(S[1][1]) = -5.942e+01\n", "\n", "It 51/61: ω/2π = 3.750e+00 GHz (total elapsed time = 1.71e+02 s)\n", "\n", " Sol. ||E|| = 4.146243e+01\n", " Field energy E (1.796e-10 J) + H (1.431e-10 J) = 3.227e-10 J\n", " S[1][1] = +4.518e-01-8.599e-01i, |S[1][1]| = -2.524e-01, arg(S[1][1]) = -6.228e+01\n", "\n", " Wrote fields to disk (Paraview) at step 51\n", "\n", "It 52/61: ω/2π = 3.775e+00 GHz (total elapsed time = 1.74e+02 s)\n", "\n", " Sol. ||E|| = 4.155978e+01\n", " Field energy E (1.780e-10 J) + H (1.408e-10 J) = 3.188e-10 J\n", " S[1][1] = +4.094e-01-8.821e-01i, |S[1][1]| = -2.422e-01, arg(S[1][1]) = -6.510e+01\n", "\n", "It 53/61: ω/2π = 3.800e+00 GHz (total elapsed time = 1.77e+02 s)\n", "\n", " Sol. ||E|| = 4.168380e+01\n", " Field energy E (1.769e-10 J) + H (1.392e-10 J) = 3.161e-10 J\n", " S[1][1] = +3.662e-01-9.019e-01i, |S[1][1]| = -2.339e-01, arg(S[1][1]) = -6.790e+01\n", "\n", "It 54/61: ω/2π = 3.825e+00 GHz (total elapsed time = 1.80e+02 s)\n", "\n", " Sol. ||E|| = 4.182965e+01\n", " Field energy E (1.763e-10 J) + H (1.380e-10 J) = 3.143e-10 J\n", " S[1][1] = +3.223e-01-9.193e-01i, |S[1][1]| = -2.272e-01, arg(S[1][1]) = -7.068e+01\n", "\n", "It 55/61: ω/2π = 3.850e+00 GHz (total elapsed time = 1.83e+02 s)\n", "\n", " Sol. ||E|| = 4.199333e+01\n", " Field energy E (1.760e-10 J) + H (1.374e-10 J) = 3.134e-10 J\n", " S[1][1] = +2.777e-01-9.344e-01i, |S[1][1]| = -2.218e-01, arg(S[1][1]) = -7.345e+01\n", "\n", "It 56/61: ω/2π = 3.875e+00 GHz (total elapsed time = 1.86e+02 s)\n", "\n", " Sol. ||E|| = 4.217152e+01\n", " Field energy E (1.760e-10 J) + H (1.371e-10 J) = 3.131e-10 J\n", " S[1][1] = +2.324e-01-9.472e-01i, |S[1][1]| = -2.175e-01, arg(S[1][1]) = -7.622e+01\n", "\n", " Wrote fields to disk (Paraview) at step 56\n", "\n", "It 57/61: ω/2π = 3.900e+00 GHz (total elapsed time = 1.89e+02 s)\n", "\n", " Sol. ||E|| = 4.236137e+01\n", " Field energy E (1.763e-10 J) + H (1.372e-10 J) = 3.135e-10 J\n", " S[1][1] = +1.865e-01-9.577e-01i, |S[1][1]| = -2.142e-01, arg(S[1][1]) = -7.898e+01\n", "\n", "It 58/61: ω/2π = 3.925e+00 GHz (total elapsed time = 1.92e+02 s)\n", "\n", " Sol. ||E|| = 4.256043e+01\n", " Field energy E (1.768e-10 J) + H (1.376e-10 J) = 3.144e-10 J\n", " S[1][1] = +1.400e-01-9.658e-01i, |S[1][1]| = -2.117e-01, arg(S[1][1]) = -8.175e+01\n", "\n", "It 59/61: ω/2π = 3.950e+00 GHz (total elapsed time = 1.95e+02 s)\n", "\n", " Sol. ||E|| = 4.276658e+01\n", " Field energy E (1.774e-10 J) + H (1.383e-10 J) = 3.157e-10 J\n", " S[1][1] = +9.293e-02-9.717e-01i, |S[1][1]| = -2.100e-01, arg(S[1][1]) = -8.454e+01\n", "\n", "It 60/61: ω/2π = 3.975e+00 GHz (total elapsed time = 1.98e+02 s)\n", "\n", " Sol. ||E|| = 4.297789e+01\n", " Field energy E (1.782e-10 J) + H (1.392e-10 J) = 3.174e-10 J\n", " S[1][1] = +4.541e-02-9.752e-01i, |S[1][1]| = -2.088e-01, arg(S[1][1]) = -8.733e+01\n", "\n", "It 61/61: ω/2π = 4.000e+00 GHz (total elapsed time = 2.02e+02 s)\n", "\n", " Sol. ||E|| = 4.319265e+01\n", " Field energy E (1.791e-10 J) + H (1.403e-10 J) = 3.194e-10 J\n", " S[1][1] = -2.519e-03-9.763e-01i, |S[1][1]| = -2.082e-01, arg(S[1][1]) = -9.015e+01\n", "\n", " Wrote fields to disk (Paraview) at step 61\n", "\n", "Completed 0 iterations of adaptive mesh refinement (AMR):\n", " Indicator norm = 1.328e-01, global unknowns = 189090\n", " Max. iterations = 0, tol. = 1.000e-02\n", "\n", "Estimated peak per-rank memory usage is: Min. 172.6M, Max. 682.4M, Avg. 209.3M, Total 3.3G\n", "Estimated peak per-node memory usage is: Min. 3.3G, Max. 3.3G, Avg. 3.3G, Total 3.3G\n", "\n", "Elapsed Time Report (s) Min. Max. Avg.\n", "==============================================================\n", "Initialization 0.035 0.116 0.109\n", " Mesh Preprocessing 0.067 0.141 0.071\n", "Operator Construction 0.450 60.657 56.887\n", "Linear Solve 8.382 8.548 8.413\n", " Setup 3.987 3.988 3.988\n", " Preconditioner 57.619 58.089 58.026\n", " Coarse Solve 4.493 4.822 4.534\n", "PROM Construction 0.142 0.147 0.143\n", "PROM Solve 0.011 0.012 0.011\n", "Estimation 0.047 0.052 0.050\n", " Construction 0.300 0.301 0.300\n", " Solve 3.153 3.156 3.154\n", "Postprocessing 0.454 76.883 5.232\n", " Far Fields 44.855 44.868 44.861\n", " Paraview 4.867 21.089 20.074\n", "Disk IO 0.081 0.082 0.082\n", "--------------------------------------------------------------\n", "Total 206.296 206.316 206.307\n", "\n", "Peak Memory Per-Node Total Total HWM\n", "==============================================================\n", "Initialization 76.8M 76.8M 76.8M\n", " Mesh Preprocessing 59.8M 59.8M 136.6M\n", "Operator Construction 150.9M 150.9M 287.6M\n", "Linear Solve 2.1M 2.1M 289.7M\n", " Setup 525.7M 525.7M 815.4M\n", " Preconditioner 13.9M 13.9M 829.3M\n", " Coarse Solve 1.1G 1.1G 1.9G\n", "PROM Construction 0.0K 0.0K 1.9G\n", "PROM Solve 520.0K 520.0K 1.9G\n", "Estimation 6.2M 6.2M 1.9G\n", " Construction 222.9M 222.9M 2.1G\n", " Solve 256.0K 256.0K 2.1G\n", "Postprocessing 495.1M 495.1M 2.6G\n", " Far Fields 0.0K 0.0K 2.6G\n", " Paraview 2.2M 2.2M 2.6G\n", "Disk IO 11.2M 11.2M 2.6G\n", "--------------------------------------------------------------\n", "Total 2.9G 2.9G 2.9G\n", "\n" ] } ], "source": [ "from palacetoolkit.simulation import set_palace_path, run_palace\n", "run_palace(config_file=\"patch.config\", num_procs=16)" ] }, { "cell_type": "markdown", "id": "125db9c5", "metadata": {}, "source": [ "### Post processing.\n", "\n", "We want to see the S parameters, H plane, E plane and the radiation pattern." ] }, { "cell_type": "code", "execution_count": 10, "id": "17031e58", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0wAAAIjCAYAAAAwSJuMAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAf1dJREFUeJzt3Xl4VNX9x/HPzGRfyUoChLDvIAiCIIqACBWptq4oCkqp4la3qv21FWjdcGm1VXG3VkWpdaUqgrK4oSD7vgbZEgIEkkBIMpm5vz/CDIRkkpkwyZ2ZvF/Pw/OYO2fu/eZknDvfOed8j8UwDEMAAAAAgGqsZgcAAAAAAIGKhAkAAAAAPCBhAgAAAAAPSJgAAAAAwAMSJgAAAADwgIQJAAAAADwgYQIAAAAAD0iYAAAAAMADEiYAAAAA8ICECQCAJmTq1KmyWCyNdj2LxaKpU6c22vUAwN9ImACgga1Zs0aXX365srOzFRUVpZYtW2rEiBH65z//aXZoAe+zzz7jw3YjeOSRR/TRRx+ZHQYABCSLYRiG2UEAQKj6/vvvNXToULVu3Vrjx49XRkaGdu3apR9++EHbtm3T1q1bzQ4xoN1222167rnnxK3KfyoqKlRRUaGoqCj3sbi4OF1++eX617/+5ffrWSwWTZkyhcQXQNAKMzsAAAhlDz/8sBITE7V06VI1a9asymP5+fnmBHWKiooKOZ1ORUREmB1KozAMQ6WlpYqOjjY7FFOEhYUpLIzbPwB4iyl5ANCAtm3bpu7du1dLliQpPT29zueff/756tGjh5YtW6ZBgwYpOjpabdu21QsvvFClXXl5uR588EH17dtXiYmJio2N1bnnnqsFCxZUabdjxw5ZLBY9+eSTevrpp9W+fXtFRkZq/fr19TrHc889p3bt2ikmJkYXXnihdu3aJcMw9Ne//lWtWrVSdHS0LrnkEhUUFFT73T7//HOde+65io2NVXx8vEaPHq1169a5H58wYYKee+45SZWjFK5/Lk6nU08//bS6d++uqKgoNW/eXDfddJMOHTpU5Tpt2rTRxRdfrC+++EL9+vVTdHS0XnzxRUnSvHnzNHjwYDVr1kxxcXHq3Lmz/u///q/Ov4vFYtFtt92m9957T926dVN0dLQGDhyoNWvWSJJefPFFdejQQVFRUTr//PO1Y8eOKs//5ptvdMUVV6h169aKjIxUVlaW7rrrLh07dqzatVzXiIqKUo8ePfThhx9qwoQJatOmTY1/k5deesn9dz3rrLO0dOnSKuc7dQ2TxWLR0aNH9cYbb7j7eMKECe6/wcnX8XQOSSorK9Ndd92ltLQ0xcfH65e//KV2795dY//t2bNHN954o5o3b67IyEh1795dr732mqfuBgBT8RUTADSg7OxsLV68WGvXrlWPHj3qdY5Dhw7poosu0pVXXqmxY8fqP//5jyZPnqyIiAjdeOONkqSioiK98sorGjt2rCZNmqTi4mK9+uqrGjlypJYsWaLevXtXOefrr7+u0tJS/fa3v1VkZKSSk5N9Psfbb7+t8vJy3X777SooKNDjjz+uK6+8UsOGDdPChQt1//33a+vWrfrnP/+pe++9t8oH4jfffFPjx4/XyJEjNX36dJWUlGjGjBkaPHiwVqxYoTZt2uimm27S3r17NW/ePL355pvV+uWmm27Sv/71L91www264447lJOTo2effVYrVqzQd999p/DwcHfbTZs2aezYsbrppps0adIkde7cWevWrdPFF1+sXr166S9/+YsiIyO1detWfffdd179Xb755ht98sknuvXWWyVJjz76qC6++GLdd999ev7553XLLbfo0KFDevzxx3XjjTdq/vz57ue+9957Kikp0eTJk5WSkqIlS5bon//8p3bv3q333nvP3e7TTz/VVVddpZ49e+rRRx/VoUOHNHHiRLVs2bLGmGbOnKni4mLddNNNslgsevzxx/XrX/9a27dvr9IfJ3vzzTf1m9/8Rv3799dvf/tbSVL79u296oOT/eY3v9Fbb72la665RoMGDdL8+fM1evToau327duns88+2510pqWl6fPPP9fEiRNVVFSkO++80+drA0CDMgAADWbu3LmGzWYzbDabMXDgQOO+++4zvvjiC6O8vNyr5w8ZMsSQZDz11FPuY2VlZUbv3r2N9PR093kqKiqMsrKyKs89dOiQ0bx5c+PGG290H8vJyTEkGQkJCUZ+fn6V9r6eIy0tzTh8+LD7+B/+8AdDknHGGWcYdrvdfXzs2LFGRESEUVpaahiGYRQXFxvNmjUzJk2aVOVaeXl5RmJiYpXjt956q1HTreqbb74xJBlvv/12leNz5sypdjw7O9uQZMyZM6dK27///e+GJGP//v3Vzl8XSUZkZKSRk5PjPvbiiy8akoyMjAyjqKjIfdzVLye3LSkpqXbORx991LBYLMbPP//sPtazZ0+jVatWRnFxsfvYwoULDUlGdna2+5jrb5KSkmIUFBS4j3/88ceGJGP27NnuY1OmTKnWp7Gxscb48eOrxTR+/Pgq1/F0jpUrVxqSjFtuuaVKu2uuucaQZEyZMsV9bOLEiUZmZqZx4MCBKm2vvvpqIzExsca+AQAzMSUPABrQiBEjtHjxYv3yl7/UqlWr9Pjjj2vkyJFq2bKlPvnkE6/OERYWpptuusn9c0REhG666Sbl5+dr2bJlkiSbzeZeg+R0OlVQUKCKigr169dPy5cvr3bOyy67TGlpaVWO+XqOK664QomJie6fBwwYIEkaN25clTUyAwYMUHl5ufbs2SOpchrc4cOHNXbsWB04cMD9z2azacCAAdWmANbkvffeU2JiokaMGFHlHH379lVcXFy1c7Rt21YjR46scsw1TfLjjz+W0+ms85qnGj58eJXpaq7f/7LLLlN8fHy149u3b3cfO3n91NGjR3XgwAENGjRIhmFoxYoVkqS9e/dqzZo1uv766xUXF+duP2TIEPXs2bPGmK666iolJSW5fz733HOrXbshfPbZZ5KkO+64o8rxU0eLDMPQ+++/rzFjxsgwjCp/u5EjR6qwsLDG1xoAmImECQAa2FlnnaUPPvhAhw4d0pIlS/SHP/xBxcXFuvzyy7V+/fo6n9+iRQvFxsZWOdapUydJqrI25o033lCvXr0UFRWllJQUpaWl6dNPP1VhYWG1c7Zt27bGa/lyjtatW1f52ZU8ZWVl1XjctbZoy5YtkqRhw4YpLS2tyr+5c+d6VQxjy5YtKiwsVHp6erVzHDlypNo5avp9r7rqKp1zzjn6zW9+o+bNm+vqq6/Wf/7zH6+Tp/r+/pK0c+dOTZgwQcnJyYqLi1NaWpqGDBkiSe6+/vnnnyVJHTp0qHbtmo7VFJMreTp1XZe//fzzz7JardWm8nXu3LnKz/v379fhw4f10ksvVfu73XDDDZICpxgKALiwhgkAGklERITOOussnXXWWerUqZNuuOEGvffee5oyZcppn/utt97ShAkTdOmll+r3v/+90tPTZbPZ9Oijj2rbtm3V2tdUIc7Xc9hsthpj8XTcOF4a3JWQvPnmm8rIyKjWzpsKbk6nU+np6Xr77bdrfPzU0bOaft/o6Gh9/fXXWrBggT799FPNmTNHs2bN0rBhwzR37lyPv4dLfX9/h8OhESNGqKCgQPfff7+6dOmi2NhY7dmzRxMmTKjXaJe31/aVpw1uHQ5Hvc7n+t3GjRun8ePH19imV69e9To3ADQUEiYAMEG/fv0kSbm5uXW23bt3r44ePVpllGnz5s2S5J4S9t///lft2rXTBx98UOVDri/JmD/O4Q3XKER6erouuOCCWtt6+sDevn17ffnllzrnnHNOqzy41WrV8OHDNXz4cP3tb3/TI488oj/+8Y9asGBBnbHV15o1a7R582a98cYbuv76693H582bV6Vddna2JNW4V5e/9+/y1M9JSUk6fPhwteOu0S+X7OxsOZ1Obdu2rcqo0qZNm6q0c1XQczgcDda/AOBvTMkDgAa0YMGCGr/dd635OHXKUk0qKircZbClyhLiL774otLS0tS3b19JJ0YWTr7Wjz/+qMWLF3sdqz/O4Y2RI0cqISFBjzzyiOx2e7XH9+/f7/5vV5J46of2K6+8Ug6HQ3/961+rPb+ioqLGD/mnqqnUuasSYFlZWZ3Pr6+a+tkwDD3zzDNV2rVo0UI9evTQv//9bx05csR9fNGiRe7y5f4SGxtbY5+1b99ehYWFWr16tftYbm6uPvzwwyrtfvGLX0iS/vGPf1Q5/vTTT1f52Waz6bLLLtP777+vtWvXVrveyX97AAgUjDABQAO6/fbbVVJSol/96lfq0qWLysvL9f3332vWrFlq06aNe91GbVq0aKHp06drx44d6tSpk2bNmqWVK1fqpZdecpeKvvjii/XBBx/oV7/6lUaPHq2cnBy98MIL6tatW5UP27Xxxzm8kZCQoBkzZui6667TmWeeqauvvlppaWnauXOnPv30U51zzjl69tlnJcmdEN5xxx0aOXKkbDabrr76ag0ZMkQ33XSTHn30Ua1cuVIXXnihwsPDtWXLFr333nt65plndPnll9cax1/+8hd9/fXXGj16tLKzs5Wfn6/nn39erVq10uDBg/32+56qS5cuat++ve69917t2bNHCQkJev/992tcZ/TII4/okksu0TnnnKMbbrhBhw4d0rPPPqsePXr49W/St29fffnll/rb3/6mFi1aqG3bthowYICuvvpq3X///frVr36lO+64w13+vVOnTlWKM/Tu3Vtjx47V888/r8LCQg0aNEhfffVVjSNhjz32mBYsWKABAwZo0qRJ6tatmwoKCrR8+XJ9+eWXNSayAGAqk6rzAUCT8Pnnnxs33nij0aVLFyMuLs6IiIgwOnToYNx+++3Gvn376nz+kCFDjO7duxs//fSTMXDgQCMqKsrIzs42nn322SrtnE6n8cgjjxjZ2dlGZGSk0adPH+N///tftbLQrvLTTzzxRLVrne45FixYYEgy3nvvvSrHX3/9dUOSsXTp0mrtR44caSQmJhpRUVFG+/btjQkTJhg//fSTu01FRYVx++23G2lpaYbFYqlWDvull14y+vbta0RHRxvx8fFGz549jfvuu8/Yu3evu012drYxevToar/vV199ZVxyySVGixYtjIiICKNFixbG2LFjjc2bN1dreypJxq233lrlmC/9sn79euOCCy4w4uLijNTUVGPSpEnGqlWrDEnG66+/XuX57777rtGlSxcjMjLS6NGjh/HJJ58Yl112mdGlS5c6r+2K9eSy3jWVFd+4caNx3nnnGdHR0YakKiXG586da/To0cOIiIgwOnfubLz11ls1nuPYsWPGHXfcYaSkpBixsbHGmDFjjF27dlW7vmEYxr59+4xbb73VyMrKMsLDw42MjAxj+PDhxksvvVQtfgAwm8Uw6rkSFADQ4M4//3wdOHCgxulLaLp69+6ttLS0auueAAD+xxomAAAClN1uV0VFRZVjCxcu1KpVq3T++eebExQANDGsYQIAIEDt2bNHF1xwgcaNG6cWLVpo48aNeuGFF5SRkaGbb77Z7PAAoEkgYQIAIEAlJSWpb9++euWVV7R//37FxsZq9OjReuyxx5SSkmJ2eADQJLCGCQAAAAA8YA0TAAAAAHhAwgQAAAAAHjSpNUxOp1N79+5VfHy8LBaL2eEAAAAAMIlhGCouLlaLFi1ktXoeR2pSCdPevXuVlZVldhgAAAAAAsSuXbvUqlUrj483qYQpPj5eUmWnJCQkmBxN8LLb7Zo7d64uvPBChYeHmx1Ok0G/m4N+Nwf9bg763Rz0uznod3MEUr8XFRUpKyvLnSN40qQSJtc0vISEBBKm02C32xUTE6OEhATTX+hNCf1uDvrdHPS7Oeh3c9Dv5qDfzRGI/V7XUh2KPgAAAACAByRMAAAAAOABCRMAAAAAeEDCBAAAAAAekDABAAAAgAckTAAAAADgAQkTAAAAAHhAwgQAAAAAHpAwAQAAAIAHJEwAAAAA4AEJEwAAAAB4EHQJ03PPPac2bdooKipKAwYM0JIlS8wOCQAAAECICqqEadasWbr77rs1ZcoULV++XGeccYZGjhyp/Px8s0MDAAAAEIKCKmH629/+pkmTJumGG25Qt27d9MILLygmJkavvfaa2aH5xOE0tHjbQX28co8Wbzsoh9PwW/uGPDcAAADQ1ISZHYC3ysvLtWzZMv3hD39wH7Narbrgggu0ePHiGp9TVlamsrIy989FRUWSJLvdLrvd3rABe/DFun166LONyis6EVdGQqT+dFEXjeze/LTaN+S5XRxOQz9s269lByxK3JKvs9unyWa1ePx9HU5DP/18SPnFZUqPj1S/7CSP7X1pW5/2wc71mjXrtdtU0e/moN/NQb+bg343B/1ujkDqd29jsBiGERRDCnv37lXLli31/fffa+DAge7j9913nxYtWqQff/yx2nOmTp2qadOmVTs+c+ZMxcTENGi8NVl10KLXNrsG9U7+YF/5J7ixk1NnpBj1at+Q5z75OR/ssOpw+Yn2zSIM/bpN9ba+tm/Ic7s4DWlbkUVFdikhXGqfYKi2/MrX9gAAAAgeJSUluuaaa1RYWKiEhASP7UI6YapphCkrK0sHDhyotVMagsNp6Pynvq4ymnOq5Nhw/ePKMxQRVpnITJ65UgePlnts3zwhUp/dNkhhNqtGPvOtx3NbJGUkRmrB3efJZrXUGcup7aXK0ajb312lU18srvzhn1efUWVUypf2DXnuk5/TkKNvjTE6ZrfbNW/ePI0YMULh4eG1toX/0O/moN/NQb+bg343B/1ujkDq96KiIqWmptaZMAXNlLzU1FTZbDbt27evyvF9+/YpIyOjxudERkYqMjKy2vHw8PBG/wP9tO1grcmSJBUctWvc6z95fc59RWXq+8iCOtsZknILy3T+U98oPipMpXZHrbG42t/09gq1aBYjm1X6cPmeagmKq60k/fHj9Sp3SJHhNtks0p8/WV9r+79+tlGDOqQrIsyqhz7b5LGtRdLDn2/SL3q1dCd7D3/ufXtJmrM2t8YEa19RmW5/d5VmjDtTo3pkuo/Xp/202euVW1jqPpaZGKUpY7pVaVff9lJlgrU8p0DLDliUsrtYAzukh/T0w0BkxvsG6Hez0O/moN/NQb+bIxD63dvrB03CFBERob59++qrr77SpZdeKklyOp366quvdNttt5kbnBfy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adBreLJjxw6vpruVl5erQ4cO+v777+s818qVK32K4YEHHtDtt9/u03MAoDbnd07XiG7NVeE0NOWTtVq9+7AkqdzubPD3dABA4CFh8qM5a3M1ePp8jX35B/3u3ZUa+/IPGjx9vuaszW3UOBYtWqRhw4YpOTlZMTEx6tixo8aPH6/y8nJJUmlpqSZMmKCePXsqLCxMl156abVz5Obm6pprrlGnTp1ktVp155131jueF154QW3bttWgQYO8fo4rgXL9i4iIUIcOHfTQQw/JME58YLn33nv1xhtvaPv27fWODwBO9efR3RRmtej7bQWav3G/JOm/y3eb8p4OADAXCZOfzFmbq8lvLVduYWmV43mFpZr81vJGu8GuX79eo0aNUr9+/fT1119rzZo1+uc//6mIiAg5HA5JlSXUo6Ojdccdd+iCCy6o8TxlZWVKS0vTn/70J51xxhn1jscwDD377LOaOHFivZ7/5ZdfKjc3V1u2bNG0adP08MMP67XXXnM/npqaqpEjR2rGjBn1jhEATrU+t1AVNYwmNfZ7OgDAfCRMHhiGoZLyCq/+FZfaNeWTdappoobr2NRP1qu41O7V+U4eQfHV3LlzlZGRoccff1w9evRQ+/btNWrUKL388svuPYliY2M1Y8YMTZo0SRkZGTWep02bNnrmmWd0/fXXKzExscY23li2bJm2bdum0aNHVzm+ZMkS9enTR1FRUerXr59WrFhR4/NTUlKUkZGh7OxsXXvttTrnnHO0fPnyKm3GjBmjd999t94xAsDJHE5D02avr/Ex17vztNnrmZ4HAE0EG9d6cMzuULcHv/DLuQxJeUWl6jl1rlft1/9lpGIi6venycjIUG5urr7++mudd9559TqHP33zzTfq1KmT4uPj3ceOHDmiiy++WCNGjNBbb72lnJwc/e53v6vzXD/99JOWLVum66+/vsrx/v37a/fu3dqxY4dp67kAhI4lOQXVZguczJCUW1iqJTkFGtiejc4BINSRMIWYK664Ql988YWGDBmijIwMnX322Ro+fLiuv/56JSQkNHo8P//8s1q0aFHl2MyZM+V0OvXqq68qKipK3bt31+7duzV58uRqzx80aJCsVqvKy8tlt9v129/+tlrC5Dr/zz//TMIE4LS5quL5qx0AILiRMHkQHW7T+r+M9KrtkpwCTXh9aZ3t/nXDWerfNtmra9eX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cOFCjR07VgsWLNDixYuVlZWlCy+8UHv27GnkyIObr/3usmPHDt17770699xzGynS0OJrv3NP9Q9f+517qn8tXbpUL774onr16lVru6C5rxpALfLz8w1JxqJFizy2mTFjhtGuXTujvLy8ESMLbd70+6233moMGzasyrG7777bOOeccxo6vJCWlJRkvPLKKzU+duWVVxqjR4+ucmzAgAHGTTfd1BihhbTa+v1UFRUVRnx8vPHGG280cFShr65+r6ioMAYNGmS88sorxvjx441LLrmk8YILYbX1O/fUhlNbv3NP9Z/i4mKjY8eOxrx584whQ4YYv/vd7zy2DZb7KiNMqFVhYaEkKTk52WObTz75RAMHDtStt96q5s2bq0ePHnrkkUfkcDgaK8yQ402/Dxo0SMuWLXNPTdq+fbs+++wzXXTRRY0SY6hxOBx69913dfToUQ0cOLDGNosXL9YFF1xQ5djIkSO1ePHixggxJHnT76cqKSmR3W6v9f8P1M7bfv/LX/6i9PR0TZw4sRGjC13e9Dv3VP/zpt+5p/rPrbfeqtGjR1e7X9YkWO6rYWYHgMDldDp155136pxzzlGPHj08ttu+fbvmz5+va6+9Vp999pm2bt2qW265RXa7XVOmTGnEiEODt/1+zTXX6MCBAxo8eLAMw1BFRYVuvvlmpg/4aM2aNRo4cKBKS0sVFxenDz/8UN26dauxbV5enpo3b17lWPPmzZWXl9cYoYYUX/r9VPfff79atGjh1c0YVfnS799++61effVVrVy5snGDDEG+9Dv3VP/xpd+5p/rHu+++q+XLl2vp0qVetQ+a+6rZQ1wIXDfffLORnZ1t7Nq1q9Z2HTt2NLKysoyKigr3saeeesrIyMho6BBDkrf9vmDBAqN58+bGyy+/bKxevdr44IMPjKysLOMvf/lLI0UaGsrKyowtW7YYP/30k/HAAw8Yqampxrp162psGx4ebsycObPKseeee85IT09vjFBDii/9frJHH33USEpKMlatWtUIUYYeb/u9qKjIaNOmjfHZZ5+5jzElr/58eb1zT/UfX/qde+rp27lzp5Genl7l/bmuKXnBcl8lYUKNbr31VqNVq1bG9u3b62x73nnnGcOHD69y7LPPPjMkGWVlZQ0VYkjypd8HDx5s3HvvvVWOvfnmm0Z0dLThcDgaKsSQN3z4cOO3v/1tjY9lZWUZf//736sce/DBB41evXo1QmShrbZ+d3niiSeMxMREY+nSpY0UVejz1O8rVqwwJBk2m839z2KxGBaLxbDZbMbWrVtNiDZ01PZ6557acGrrd+6pp+/DDz+s9r4hyf2+cfKXAC7Bcl9lDROqMAxDt912mz788EPNnz9fbdu2rfM555xzjrZu3Sqn0+k+tnnzZmVmZioiIqIhww0Z9en3kpISWa1V/xe22Wzu86F+nE6nysrKanxs4MCB+uqrr6ocmzdvntdrb+BZbf0uSY8//rj++te/as6cOerXr18jRhbaPPV7ly5dtGbNGq1cudL975e//KWGDh2qlStXKisry4RoQ0dtr3fuqQ2ntn7nnnr6hg8fXu19o1+/frr22mu1cuVKd3+eLGjuq+bmawg0kydPNhITE42FCxcaubm57n8lJSXuNtddd53xwAMPuH/euXOnER8fb9x2223Gpk2bjP/9739Genq68dBDD5nxKwSl+vT7lClTjPj4eOOdd94xtm/fbsydO9do3769ceWVV5rxKwSlBx54wFi0aJGRk5NjrF692njggQcMi8VizJ071zCM6n3+3XffGWFhYcaTTz5pbNiwwZgyZYoRHh5urFmzxqxfISj52u+PPfaYERERYfz3v/+t8v9HcXGxWb9CUPK130/FlLz68bXfuaf6h6/9zj21YZw6JS9Y76skTKhCUo3/Xn/9dXebIUOGGOPHj6/yvO+//94YMGCAERkZabRr1854+OGHaxx6Rc3q0+92u92YOnWq0b59eyMqKsrIysoybrnlFuPQoUONHn+wuvHGG43s7GwjIiLCSEtLM4YPH+6+mRpGza/1//znP0anTp2MiIgIo3v37sann37ayFEHP1/7PTs7u8b/P6ZMmdL4wQex+rzeT0bCVD/16XfuqafP137nntowTk2YgvW+ajEMxhkBAAAAoCasYQIAAAAAD0iYAAAAAMADEiYAAAAA8ICECQAAAAA8IGECAAAAAA9ImAAAAADAAxImAAAAAPCAhAkAAAAAPCBhAgA0eVOnTlXv3r1P+zzl5eXq0KGDvv/++9MPqp4eeOAB3X777aZdHwBCDQkTAMBtwoQJslgs1f5t3brV7NAa1L333quvvvrqtM/zwgsvqG3btho0aFCV4wsWLNDFF1+stLQ0RUVFqX379rrqqqv09ddfu9ssXLhQFotFhw8frnbeNm3a6Omnn/YqhnvvvVdvvPGGtm/ffjq/CgDgOBImAEAVo0aNUm5ubpV/bdu2rdauvLzchOgaRlxcnFJSUk7rHIZh6Nlnn9XEiROrHH/++ec1fPhwpaSkaNasWdq0aZM+/PBDDRo0SHfddddpXbMmqampGjlypGbMmOH3cwNAU0TCBACoIjIyUhkZGVX+2Ww2nX/++brtttt05513uj+US9LatWv1i1/8QnFxcWrevLmuu+46HThwwH0+p9Opxx9/XB06dFBkZKRat26thx9+WFLNoyorV66UxWLRjh073Me+/fZbnXvuuYqOjlZWVpbuuOMOHT161P14mzZt9Mgjj+jGG29UfHy8WrdurZdeeqnK77V7926NHTtWycnJio2NVb9+/fTjjz9Kqj4lb+nSpRoxYoRSU1OVmJioIUOGaPny5bX227Jly7Rt2zaNHj3afWznzp268847deedd+qNN97QsGHDlJ2drV69eul3v/udfvrpJ+/+KCf517/+VeMo4NSpU91txowZo3fffdfncwMAqiNhAgB47Y033lBERIS+++47vfDCCzp8+LCGDRumPn366KefftKcOXO0b98+XXnlle7n/OEPf9Bjjz2mP//5z1q/fr1mzpyp5s2be33Nbdu2adSoUbrsssu0evVqzZo1S99++61uu+22Ku2eeuop9evXTytWrNAtt9yiyZMna9OmTZKkI0eOaMiQIdqzZ48++eQTrVq1Svfdd5+cTmeN1ywuLtb48eP17bff6ocfflDHjh110UUXqbi42GOc33zzjTp16qT4+Hj3sffff192u1333Xdfjc+xWCxe94PLVVddVWX075133lFYWJjOOeccd5v+/ftr9+7dVZJOAEA9GQAAHDd+/HjDZrMZsbGx7n+XX365YRiGMWTIEKNPnz5V2v/1r381LrzwwirHdu3aZUgyNm3aZBQVFRmRkZHGyy+/XOP1FixYYEgyDh065D62YsUKQ5KRk5NjGIZhTJw40fjtb39b5XnffPONYbVajWPHjhmGYRjZ2dnGuHHj3I87nU4jPT3dmDFjhmEYhvHiiy8a8fHxxsGDB2uMY8qUKcYZZ5zhsV8cDocRHx9vzJ4922Ob3/3ud8awYcOqHLv55puNhISEKsf++9//Vunf1atXV+mLkx9z/bNYLMbf//73atfcunWrkZycbDz++ONVjhcWFhqSjIULF3qMFwDgnTBTszUAQMAZOnRolfUvsbGx7v/u27dvlbarVq3SggULFBcXV+0827Zt0+HDh1VWVqbhw4fXO55Vq1Zp9erVevvtt93HDMOQ0+lUTk6OunbtKknq1auX+3GLxaKMjAzl5+dLqpzm16dPHyUnJ3t1zX379ulPf/qTFi5cqPz8fDkcDpWUlGjnzp0en3Ps2DFFRUVVO37qKNLIkSO1cuVK7dmzR+eff74cDkeVx7/55psqo1SSdP7551c7b2FhoS6++GKNHj1av//976s8Fh0dLUkqKSmp9fcEANSNhAkAUEVsbKw6dOjg8bGTHTlyRGPGjNH06dOrtc3MzKyzUpvVWjkz3DAM9zG73V7tGjfddJPuuOOOas9v3bq1+7/Dw8OrPGaxWNxT7lwJhLfGjx+vgwcP6plnnlF2drYiIyM1cODAWgtdpKamas2aNVWOdezYUYWFhcrLy1NGRoakygITHTp0UFhYzbfgtm3bqlmzZlWOndrW4XDoqquuUkJCQrW1WpJUUFAgSUpLS6vzdwUA1I41TACAejvzzDO1bt06tWnTRh06dKjyLzY2Vh07dlR0dLTHkt2uD/S5ubnuYytXrqx2jfXr11c7f4cOHRQREeFVnL169dLKlSvdiURdvvvuO91xxx266KKL1L17d0VGRlYpZFGTPn36aOPGjVWSv8svv1zh4eE1JpSn46677tKaNWv00Ucf1TiqtXbtWoWHh6t79+5+vS4ANEUkTACAerv11ltVUFCgsWPHaunSpdq2bZu++OIL3XDDDXI4HIqKitL999+v++67T//+97+1bds2/fDDD3r11VclSR06dFBWVpamTp2qLVu26NNPP9VTTz1V5Rr333+/vv/+e912221auXKltmzZoo8//rha0YfajB07VhkZGbr00kv13Xffafv27Xr//fe1ePHiGtt37NhRb775pjZs2KAff/xR1157bZ2jVEOHDtWRI0e0bt0697HWrVvrqaee0jPPPKPx48drwYIF2rFjh5YvX65//OMfkiSbzeb17yFJr7/+up5//nm98MILslgsysvLU15eno4cOeJu880337irCgIATg8JEwCg3lq0aKHvvvtODodDF154oXr27Kk777xTzZo1c0+3+/Of/6x77rlHDz74oLp27aqrrrrKvbYoPDxc77zzjjZu3KhevXpp+vTpeuihh6pco1evXlq0aJE2b96sc889V3369NGDDz6oFi1aeB1nRESE5s6dq/T0dF100UXq2bOnHnvsMY/JyquvvqpDhw7pzDPP1HXXXac77rhD6enptV4jJSVFv/rVr6qstZKk22+/XXPnztX+/ft1+eWXuyvu5eTkaM6cOerZs6fXv4ckLVq0SA6HQ7/85S+VmZnp/vfkk0+627z77ruaNGmST+cFANTMYpw8dwAAANTb6tWrNWLECG3btq3GQhiN4fPPP9c999yj1atXe1wnBQDwHiNMAAD4iWuULCcnx7QYjh49qtdff51kCQD8hBEmAAAAAPCAESYAAAAA8ICECQAAAAA8IGECAAAAAA9ImAAAAADAAxImAAAAAPCAhAkAAAAAPCBhAgAAAAAPSJgAAAAAwAMSJgAAAADw4P8Bh5VNHjEZWzoAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# S parameters. Return the frequency where the minimum is reached.\n", "from pathlib import Path\n", "\n", "notebook_dir = Path().resolve()\n", "postpro_dir = notebook_dir / \"postpro\" / \"patch\"\n", "\n", "f = s_params(str(postpro_dir / \"port-S.csv\"))" ] }, { "cell_type": "markdown", "id": "1a31fe60", "metadata": {}, "source": [ "### Additional Field Visualizations at Resonant Frequency f\n", "\n", "The next two views use the new VTU workflow:\n", "\n", "- Surface-current-oriented view over antenna conductors.\n", "- A z-slice in the air region above the patch to inspect forward propagation." ] }, { "cell_type": "code", "execution_count": 22, "id": "0568918b", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0721e14e80444fb09260a6d85ac8ba4c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Widget(value='