-
Notifications
You must be signed in to change notification settings - Fork 63
ABC broadband #2721
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: daniil/murs-1st
Are you sure you want to change the base?
ABC broadband #2721
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
7 files reviewed, 1 comment
|
||
Notes | ||
----- | ||
The number of poles and frequency sampling points are constrained to be within the range [1, 10] and [1, 21] respectively. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
syntax: Documentation says range is [1, 21] for frequency sampling points but MAX_BROADBAND_MODE_ABC_NUM_FREQS = 101, creating inconsistency
The number of poles and frequency sampling points are constrained to be within the range [1, 10] and [1, 21] respectively. | |
The number of poles and frequency sampling points are constrained to be within the range [1, 10] and [1, 101] respectively. |
39af17b
to
3824b7b
Compare
Implements python interface to broadband ABC boundary conditions. overall structure and implementation is similar to
LossyMetalMedium
. Specifically:BroadbandModeABCSpec(frequency_range=...)
to specify range in which absorption is desired. It can be passed as argumentfreq_spec
(previously,frequency
) inModeABCBoundary(..., freq_spec=...)
BroadbandModeABCFitterParam
to control max number of poles, number of frequency points, and fit tolerance, it is passed asfit_param
inBroadbandModeABCSpec
Greptile Summary
This PR introduces broadband absorbing boundary conditions (ABC) for electromagnetic simulations in Tidy3D. The implementation extends the existing single-frequency mode absorption capabilities to work over frequency ranges, following a similar design pattern to the existing
LossyMetalMedium
functionality.The core changes involve:
New Classes: Introduction of
BroadbandModeABCFitterParam
andBroadbandModeABCSpec
classes that define broadband absorption behavior using pole-residue fitting to approximate mode propagation index over frequency ranges.API Evolution: The
ModeABCBoundary
class has been updated to replace thefrequency
field withfreq_spec
, which accepts either a single frequency (float) or aBroadbandModeABCSpec
object for broadband operation.Enhanced Wave Port Support: Wave ports now support custom boundary conditions through an expanded
absorber
field that accepts boolean values,ABCBoundary
, orModeABCBoundary
objects.Backward Compatibility: The changes maintain full backward compatibility - existing code using single-frequency absorption continues to work unchanged, while new broadband capabilities are available through the updated API.
The broadband functionality uses pole-residue pairs to model frequency-dependent absorption characteristics, which is a standard electromagnetics approach for approximating complex frequency-dependent material properties. The implementation includes proper parameter validation, frequency range constraints, and utilities for converting between wavelength and frequency specifications. This enhancement allows users to achieve effective absorption across entire simulation frequency ranges rather than being limited to single frequency points, which is particularly valuable for broadband electromagnetic simulations.
Important Files Changed
Files Changed
BroadbandModeABCFitterParam
andBroadbandModeABCSpec
classes and updatesModeABCBoundary
to usefreq_spec
instead offrequency
__all__
additionsfreq_spec
parameter and adds comprehensive tests for broadband ABC functionalityfreq_spec
field instead of deprecatedfrequency
fieldConfidence score: 4/5
tidy3d/components/boundary.py
andtidy3d/plugins/smatrix/ports/wave.py
for the core broadband implementation logicSequence Diagram