Skip to content

Conversation

yuanshen-flexcompute
Copy link
Contributor

A notebook demonstrating a full antenna array simulation of planar helical design. Key teaching focus includes how to generate radiation plots for different port feed amplitude/phase.

Copy link
Contributor

github-actions bot commented Sep 23, 2025

Spell Check Report

PlanarHelicalAntennaArray.ipynb:

Cell 2, Line 3: 'quasi-planar'
  > Although helical antennas are typically curved 3D structures, planar designs using vias have been proposed in literature. This notebook simulates such a quasi-planar design. The limited angular coverage of a single antenna is counteracted by introducing a phased array of 8 elements.
Cell 2, Line 5: 'Syrytsin'
  > The array demonstrated in this notebook is designed to operate near the 28 GHz 5G high band, based on the design proposed by Syrytsin et al. in [1].
Cell 20, Line 31: 'Btm'
  > # Btm
Cell 24, Line 3: 'geoemtries'
  > rbox_list_ant = []  # List of mesh refinement geoemtries
Cell 61, Line 6: 'zero-indexed'
  > # Note that port_in and port_out are zero-indexed (first port is number zero)
Cell 64, Line 1: 'off-diagonal'
  > Below, we visualize the S-matrix (dB) at the target frequency. Good isolation is observed between adjacent elements (off-diagonal matrix values).
Cell 74, Line 1: 'beamwidth'
  > Using the `LobeMeasurer` utility, we can obtain metrics for the main and side lobes, such as direction, magnitude, and -3 dB beamwidth. Below, we measure the main lobe and the two adjacent side lobes for each feed pattern and record their properties in a `pandas.DataFrame` table.
Cell 75, Line 13: 'beamwidth'
  > ["direction", "magnitude", "beamwidth"]
Cell 76, Line 4: 'Re-arrange'
  > # Re-arrange columns and convert units
Cell 76, Line 8: 'beamwidth'
  > lobe_data_table["beamwidth"] = lobe_data_table["beamwidth"] / np.pi * 180
Cell 76, Line 8: 'beamwidth'
  > lobe_data_table["beamwidth"] = lobe_data_table["beamwidth"] / np.pi * 180
Cell 76, Line 12: 'Mag'
  > "magnitude": "Mag.",
Cell 76, Line 13: 'beamwidth'
  > "beamwidth": "-3dB Beamwidth (deg)",
Cell 76, Line 13: 'Beamwidth'
  > "beamwidth": "-3dB Beamwidth (deg)",
Cell 87, Line 1: 'Gert', 'Shuai', 'Syrytsin'
  > [1] Syrytsin, Igor, Shuai Zhang, and Gert Fr. "Circularly polarized planar helix phased antenna array for 5G mobile terminals." In 2017 International Conference on Electromagnetics in Advanced Applications (ICEAA), pp. 1105-1108. IEEE, 2017.

Checked 1 notebook(s). Found spelling errors in 1 file(s).
Generated by GitHub Action run: https://github.com/flexcompute/tidy3d-notebooks/actions/runs/18102441444

Copy link

@athielens-fc athielens-fc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Yuanshen,

I love the notebook. This will be super instructive and I am sure many people will use it to analyze their arrays :)

My comments are the following:

-Intro:
“Helical antennas enable easier polarization matching, and thus a stronger received signal, without the need for potentially complicated and lossy polarization switching circuits. The phased array layout further expands the coverage angle of the device.”

I suggest to change it to:

““Helical antennas enable easier polarization matching, and thus a stronger received signal, than a combination of linearly polarized antennas, which typically need potentially complicated and lossy polarization switching circuits.

Helical antennas are typically 3D structures. However, planar designs using via’s have been proposed in literature. This notebook simulates such a quasi-planar design.

One downside of the design is that it has a limited coverage angle. A potential way of dealing with this is to use a phased array of planar helical antennas, which expands the coverage angle of the device. This array is demonstrated here”

-Key Parameters:
It could be useful to show a top view of one element before you define all the parameters, it would make it easier to understand

-I would delete: “which will suffice for demonstration purposes.”
-In [4]: results in “Output()”, which seems strange
-In [5]: it was to me not intuitively obvious what the “rounded” variable does. Perhaps add some context as a comment or in the text above the cell
-In [5]: I would clarify in the text above that you do not only return the trace geometry, but also the end point, which you need to create the next turn of the helix
-In [7] and [8]: I would reiterate with some short comments that the rboxes will be used for mesh refinement (similar to what you did in front of [9] where the array is created).
-I would put the array creation in a function too, since you used a function on all the other levels.

In [13]: I would say something about the minimal number of steps per wavelength
-In [19]: Do you know why it seems that the metal layer is in the middle of the substrate here?
-Under S-parameters: Can you provide more information on how the ports are numbered (which one is 1 , which one is N_ant)? Is this numbering from [0,N_ant-1] or [1,N_ant]? (I think it is the first one, but you use a conversion to the 2nd?)
-In the Sii plots: axis labels “S_{ii} [dB]” and “Frequency [GHz]”
-For the isolation, my suggestion is to plot a matrix of Sij at the target frequency (colums and rows are the antenna element) with a colorbar, then you can immediately see all the cross port S parameters at the frequency of interest
-To demonstrate the beamsteering: I would definitely include the zero phase shift case and show symmetrical values (-90,-60,-45,-30,-15,0,15,30,45,60,90). I would consider limiting the bottom to -10 dB, that way you will get a much nicer detail on the beams
-I would add something in terms of sidelobe amplitude versus the main lobe
-Some small example on how to characterize such a lobe (direction, 3dB angular bandwidth, energy/power in the main beam, maybe something else? ) would be good
-The scan pattern is awesome

Copy link
Contributor

@tomflexcompute tomflexcompute left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @yuanshen-flexcompute for another great example. I would suggest adding x and y labels in the S parameter plots.

@yuanshen-flexcompute
Copy link
Contributor Author

@athielens-fc The notebook is updated. Thanks again for the feedback.

@yuanshen-flexcompute yuanshen-flexcompute force-pushed the yuanshen/planar-helical-antenna-array branch from 8ae4424 to 95efb82 Compare September 29, 2025 15:35
@yuanshen-flexcompute yuanshen-flexcompute merged commit 9d1f8f6 into develop Sep 29, 2025
1 check passed
@yuanshen-flexcompute yuanshen-flexcompute deleted the yuanshen/planar-helical-antenna-array branch September 29, 2025 15:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants