Skip to content

Conversation

@George-Guryev-flxcmp
Copy link
Contributor

@George-Guryev-flxcmp George-Guryev-flxcmp commented Sep 11, 2025

Summary

Adds a notebook example of a dipole antenna with array factor and tapering.

Details

The notebook demonstrates:

  • Building an array antenna simulation from a single antenna simulation using RectangularAntennaArrayCalculator
  • Generating approximate radiation patterns via the array factor
  • Applying array tapering to achieve beam-shaping in antenna array simulations

@George-Guryev-flxcmp George-Guryev-flxcmp force-pushed the george/dipole_antenna_w_taper branch from 1304f64 to 57cdeea Compare September 11, 2025 03:10
@github-actions
Copy link
Contributor

github-actions bot commented Sep 11, 2025

Spell Check Report

DipoleAntennaTaper.ipynb:

Cell 31, Line 1: 'RectangularAntennaArrayCalculator'
  > # set up RectangularAntennaArrayCalculator
Cell 39, Line 5: 'pyplot'
  > # create a new pyplot figure and
Cell 42, Line 5: 'RectangularTaper'
  > # set up a RectangularTaper with the same taper applied along all axes
Cell 42, Line 12: 'CircularTaper'
  > # Finally, one may also want to use a ``CircularTaper``.
Cell 42, Line 13: 'TaylorWindow'
  > # This type of taper requires specification of only one window and currently supports only ``TaylorWindow``
Cell 43, Line 1: 'RectangularAntennaArrayCalculator'
  > ``RectangularAntennaArrayCalculator``  supports amplitude scaling via ``amp_multipliers`` or ``taper`` fields. If a valid ``taper`` is specified, it overrides user-specified ``amp_multipliers`` with amplitudes drawn from the taper kernel provided.
Cell 44, Line 1: 'RectangularAntennaArrayCalculator'
  > # specify RectangularAntennaArrayCalculator with isotropic taper
Cell 44, Line 6: 'RectangularAntennaArrayCalculator'
  > # alternatively, one get the same result by extracting weights from taper and passing them to RectangularAntennaArrayCalculator directly
Cell 49, Line 5: 'pyplot'
  > # create a new pyplot figure and

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

@George-Guryev-flxcmp George-Guryev-flxcmp force-pushed the george/dipole_antenna_w_taper branch from da422d6 to a31e499 Compare September 11, 2025 03:40
@tomflexcompute
Copy link
Contributor

@George-Guryev-flxcmp please edit the corresponding rst file (docs/case_studies/microwave.rst I assume?) and notebook metadata (following instructions here).

Could you prepare a thumbnail image for the notebook? @yuanshen-flexcompute and I can prepare one for you as well if needed.

Copy link
Contributor

@yuanshen-flexcompute yuanshen-flexcompute left a comment

Choose a reason for hiding this comment

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

@George-Guryev-flxcmp Very cool demo! The automatic simulation creation feature for arrays would potentially save users a lot of work.

Notebook comments:

  • Text above cell 15 refers to warnings, which are not present because they are suppressed (until they are improved for RF). Could probably remove that reference.
  • Overall, the flow is clear and simple, very appropriate for a tutorial notebook. There are a few spots where I would recommend adding a bit more explanation:
    • In the preamble, the motivation and application of antenna array factor could be explained a bit more. Could also include a link to the Intro to Antenna tutorial notebook, pointing users there if they are completely new.
    • The usage of RectangularAntennaArrayCalculator and its related functions. Here, users could benefit from a more detailed breakdown of how it works, what theory it is based on, and what are some of its assumptions and limitations etc. Feel free to include some equations (e.g. the array factor) to clarify the point.
    • Tapering section: same comment as above, users could use a more detailed explanation of the tapering functionality and background theory.

Aside from the notebook, I noticed that the array calculator works with Simulation instances rather than TerminalComponentModeler instances. In particular, the user first defines a Simulation, then a TerminalComponentModeler, but then awkwardly has to re-reference the Simulation as in
sim_unit = list(modeler.sim_dict.values())[0]
This sim_unit is then used in the unit cell simulation as well as the array calculator.

Is there a way we could refactor the array calculator so that the user primarily interacts with the TerminalComponentModeler rather than Simulation? Right now, the former feels like an afterthought, which can confuse users used to the RF workflow. This is very much outside the scope of the tutorial notebook, but just thought I'd bring it up anyways.

Thanks!

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