Skip to content

Commit e0f0136

Browse files
committed
feat: mode sort and filter specifications in ModeSpec
1 parent f9cf959 commit e0f0136

File tree

11 files changed

+606
-18
lines changed

11 files changed

+606
-18
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010

1111
### Added
1212
- Added support for `tidy3d-extras`, an optional plugin that enables more accurate local mode solving via subpixel averaging.
13+
- `ModeFilterSpec` in `ModeSpec` allows for fine-grained filtering and sorting of modes. This also deprecates `filter_pol`. The equivalent usage for example to `filter_pol="te"` is `filter_spec=ModeFilterSpec(filter_key="TE_polarization", filter_reference=0.5)`.
1314

1415
### Changed
1516
- Improved performance of antenna metrics calculation by utilizing cached wave amplitude calculations instead of recomputing wave amplitudes for each port excitation in the `TerminalComponentModelerData`.

schemas/EMESimulation.json

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4786,6 +4786,13 @@
47864786
],
47874787
"type": "string"
47884788
},
4789+
"filter_spec": {
4790+
"allOf": [
4791+
{
4792+
"$ref": "#/definitions/ModeFilterSpec"
4793+
}
4794+
]
4795+
},
47894796
"group_index_step": {
47904797
"anyOf": [
47914798
{
@@ -7484,6 +7491,7 @@
74847491
"bend_axis": null,
74857492
"bend_radius": null,
74867493
"filter_pol": null,
7494+
"filter_spec": null,
74877495
"group_index_step": false,
74887496
"num_modes": 1,
74897497
"num_pml": [
@@ -7519,6 +7527,70 @@
75197527
],
75207528
"type": "object"
75217529
},
7530+
"ModeFilterSpec": {
7531+
"additionalProperties": false,
7532+
"properties": {
7533+
"attrs": {
7534+
"default": {},
7535+
"type": "object"
7536+
},
7537+
"filter_key": {
7538+
"enum": [
7539+
"TE_fraction",
7540+
"TM_fraction",
7541+
"k_eff",
7542+
"mode_area",
7543+
"n_eff",
7544+
"wg_TE_fraction",
7545+
"wg_TM_fraction"
7546+
],
7547+
"type": "string"
7548+
},
7549+
"filter_order": {
7550+
"default": "over",
7551+
"enum": [
7552+
"over",
7553+
"under"
7554+
],
7555+
"type": "string"
7556+
},
7557+
"filter_reference": {
7558+
"default": 0.0,
7559+
"type": "number"
7560+
},
7561+
"sort_key": {
7562+
"enum": [
7563+
"TE_fraction",
7564+
"TM_fraction",
7565+
"k_eff",
7566+
"mode_area",
7567+
"n_eff",
7568+
"wg_TE_fraction",
7569+
"wg_TM_fraction"
7570+
],
7571+
"type": "string"
7572+
},
7573+
"sort_order": {
7574+
"default": "descending",
7575+
"enum": [
7576+
"ascending",
7577+
"descending"
7578+
],
7579+
"type": "string"
7580+
},
7581+
"sort_reference": {
7582+
"type": "number"
7583+
},
7584+
"type": {
7585+
"default": "ModeFilterSpec",
7586+
"enum": [
7587+
"ModeFilterSpec"
7588+
],
7589+
"type": "string"
7590+
}
7591+
},
7592+
"type": "object"
7593+
},
75227594
"ModeSolverMonitor": {
75237595
"additionalProperties": false,
75247596
"properties": {
@@ -7684,6 +7756,7 @@
76847756
"bend_axis": null,
76857757
"bend_radius": null,
76867758
"filter_pol": null,
7759+
"filter_spec": null,
76877760
"group_index_step": false,
76887761
"num_modes": 1,
76897762
"num_pml": [
@@ -7805,6 +7878,13 @@
78057878
],
78067879
"type": "string"
78077880
},
7881+
"filter_spec": {
7882+
"allOf": [
7883+
{
7884+
"$ref": "#/definitions/ModeFilterSpec"
7885+
}
7886+
]
7887+
},
78087888
"group_index_step": {
78097889
"anyOf": [
78107890
{

schemas/ModeSimulation.json

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6715,6 +6715,7 @@
67156715
"bend_axis": null,
67166716
"bend_radius": null,
67176717
"filter_pol": null,
6718+
"filter_spec": null,
67186719
"group_index_step": false,
67196720
"num_modes": 1,
67206721
"num_pml": [
@@ -6750,6 +6751,70 @@
67506751
],
67516752
"type": "object"
67526753
},
6754+
"ModeFilterSpec": {
6755+
"additionalProperties": false,
6756+
"properties": {
6757+
"attrs": {
6758+
"default": {},
6759+
"type": "object"
6760+
},
6761+
"filter_key": {
6762+
"enum": [
6763+
"TE_fraction",
6764+
"TM_fraction",
6765+
"k_eff",
6766+
"mode_area",
6767+
"n_eff",
6768+
"wg_TE_fraction",
6769+
"wg_TM_fraction"
6770+
],
6771+
"type": "string"
6772+
},
6773+
"filter_order": {
6774+
"default": "over",
6775+
"enum": [
6776+
"over",
6777+
"under"
6778+
],
6779+
"type": "string"
6780+
},
6781+
"filter_reference": {
6782+
"default": 0.0,
6783+
"type": "number"
6784+
},
6785+
"sort_key": {
6786+
"enum": [
6787+
"TE_fraction",
6788+
"TM_fraction",
6789+
"k_eff",
6790+
"mode_area",
6791+
"n_eff",
6792+
"wg_TE_fraction",
6793+
"wg_TM_fraction"
6794+
],
6795+
"type": "string"
6796+
},
6797+
"sort_order": {
6798+
"default": "descending",
6799+
"enum": [
6800+
"ascending",
6801+
"descending"
6802+
],
6803+
"type": "string"
6804+
},
6805+
"sort_reference": {
6806+
"type": "number"
6807+
},
6808+
"type": {
6809+
"default": "ModeFilterSpec",
6810+
"enum": [
6811+
"ModeFilterSpec"
6812+
],
6813+
"type": "string"
6814+
}
6815+
},
6816+
"type": "object"
6817+
},
67536818
"ModeMonitor": {
67546819
"additionalProperties": false,
67556820
"properties": {
@@ -6885,6 +6950,7 @@
68856950
"bend_axis": null,
68866951
"bend_radius": null,
68876952
"filter_pol": null,
6953+
"filter_spec": null,
68886954
"group_index_step": false,
68896955
"num_modes": 1,
68906956
"num_pml": [
@@ -7135,6 +7201,7 @@
71357201
"bend_axis": null,
71367202
"bend_radius": null,
71377203
"filter_pol": null,
7204+
"filter_spec": null,
71387205
"group_index_step": false,
71397206
"num_modes": 1,
71407207
"num_pml": [
@@ -7309,6 +7376,7 @@
73097376
"bend_axis": null,
73107377
"bend_radius": null,
73117378
"filter_pol": null,
7379+
"filter_spec": null,
73127380
"group_index_step": false,
73137381
"num_modes": 1,
73147382
"num_pml": [
@@ -7449,6 +7517,13 @@
74497517
],
74507518
"type": "string"
74517519
},
7520+
"filter_spec": {
7521+
"allOf": [
7522+
{
7523+
"$ref": "#/definitions/ModeFilterSpec"
7524+
}
7525+
]
7526+
},
74527527
"group_index_step": {
74537528
"anyOf": [
74547529
{

schemas/Simulation.json

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10199,6 +10199,7 @@
1019910199
"bend_axis": null,
1020010200
"bend_radius": null,
1020110201
"filter_pol": null,
10202+
"filter_spec": null,
1020210203
"group_index_step": false,
1020310204
"num_modes": 1,
1020410205
"num_pml": [
@@ -10234,6 +10235,70 @@
1023410235
],
1023510236
"type": "object"
1023610237
},
10238+
"ModeFilterSpec": {
10239+
"additionalProperties": false,
10240+
"properties": {
10241+
"attrs": {
10242+
"default": {},
10243+
"type": "object"
10244+
},
10245+
"filter_key": {
10246+
"enum": [
10247+
"TE_fraction",
10248+
"TM_fraction",
10249+
"k_eff",
10250+
"mode_area",
10251+
"n_eff",
10252+
"wg_TE_fraction",
10253+
"wg_TM_fraction"
10254+
],
10255+
"type": "string"
10256+
},
10257+
"filter_order": {
10258+
"default": "over",
10259+
"enum": [
10260+
"over",
10261+
"under"
10262+
],
10263+
"type": "string"
10264+
},
10265+
"filter_reference": {
10266+
"default": 0.0,
10267+
"type": "number"
10268+
},
10269+
"sort_key": {
10270+
"enum": [
10271+
"TE_fraction",
10272+
"TM_fraction",
10273+
"k_eff",
10274+
"mode_area",
10275+
"n_eff",
10276+
"wg_TE_fraction",
10277+
"wg_TM_fraction"
10278+
],
10279+
"type": "string"
10280+
},
10281+
"sort_order": {
10282+
"default": "descending",
10283+
"enum": [
10284+
"ascending",
10285+
"descending"
10286+
],
10287+
"type": "string"
10288+
},
10289+
"sort_reference": {
10290+
"type": "number"
10291+
},
10292+
"type": {
10293+
"default": "ModeFilterSpec",
10294+
"enum": [
10295+
"ModeFilterSpec"
10296+
],
10297+
"type": "string"
10298+
}
10299+
},
10300+
"type": "object"
10301+
},
1023710302
"ModeMonitor": {
1023810303
"additionalProperties": false,
1023910304
"properties": {
@@ -10369,6 +10434,7 @@
1036910434
"bend_axis": null,
1037010435
"bend_radius": null,
1037110436
"filter_pol": null,
10437+
"filter_spec": null,
1037210438
"group_index_step": false,
1037310439
"num_modes": 1,
1037410440
"num_pml": [
@@ -10619,6 +10685,7 @@
1061910685
"bend_axis": null,
1062010686
"bend_radius": null,
1062110687
"filter_pol": null,
10688+
"filter_spec": null,
1062210689
"group_index_step": false,
1062310690
"num_modes": 1,
1062410691
"num_pml": [
@@ -10793,6 +10860,7 @@
1079310860
"bend_axis": null,
1079410861
"bend_radius": null,
1079510862
"filter_pol": null,
10863+
"filter_spec": null,
1079610864
"group_index_step": false,
1079710865
"num_modes": 1,
1079810866
"num_pml": [
@@ -10933,6 +11001,13 @@
1093311001
],
1093411002
"type": "string"
1093511003
},
11004+
"filter_spec": {
11005+
"allOf": [
11006+
{
11007+
"$ref": "#/definitions/ModeFilterSpec"
11008+
}
11009+
]
11010+
},
1093611011
"group_index_step": {
1093711012
"anyOf": [
1093811013
{

0 commit comments

Comments
 (0)