@@ -133,7 +133,7 @@ def test_port_absorbers_simulations():
133
133
td .InternalAbsorber (
134
134
size = (0.4 , 0.5 , 0 ),
135
135
direction = "-" ,
136
- boundary_spec = td .ModeABCBoundary (plane = td .Box (size = (1 , 1 , 0 )), frequency = freq0 ),
136
+ boundary_spec = td .ModeABCBoundary (plane = td .Box (size = (1 , 1 , 0 )), freq_spec = freq0 ),
137
137
)
138
138
],
139
139
)
@@ -207,31 +207,31 @@ def test_abc_boundaries_alone():
207
207
plane = td .Box (size = (1 , 1 , 0 )),
208
208
mode_spec = td .ModeSpec (num_modes = 2 ),
209
209
mode_index = 1 ,
210
- frequency = freq0 ,
210
+ freq_spec = freq0 ,
211
211
)
212
212
213
213
with pytest .raises (pydantic .ValidationError ):
214
214
_ = td .ModeABCBoundary (
215
215
plane = td .Box (size = (1 , 1 , 0 )),
216
216
mode_spec = td .ModeSpec (num_modes = 2 ),
217
217
mode_index = 1 ,
218
- frequency = - 1 ,
218
+ freq_spec = - 1 ,
219
219
)
220
220
221
221
with pytest .raises (pydantic .ValidationError ):
222
222
_ = td .ModeABCBoundary (
223
223
plane = td .Box (size = (1 , 1 , 0 )),
224
224
mode_spec = td .ModeSpec (num_modes = 2 ),
225
225
mode_index = - 1 ,
226
- frequency = freq0 ,
226
+ freq_spec = freq0 ,
227
227
)
228
228
229
229
with pytest .raises (pydantic .ValidationError ):
230
230
_ = td .ModeABCBoundary (
231
231
plane = td .Box (size = (1 , 1 , 1 )),
232
232
mode_spec = td .ModeSpec (num_modes = 2 ),
233
233
mode_index = 0 ,
234
- frequency = freq0 ,
234
+ freq_spec = freq0 ,
235
235
)
236
236
237
237
# from mode source
@@ -250,7 +250,7 @@ def test_abc_boundaries_alone():
250
250
size = (1 , 1 , 0 ), mode_spec = td .ModeSpec (num_modes = 2 ), freqs = [freq0 ], name = "mnt"
251
251
)
252
252
mode_abc_from_monitor = td .ModeABCBoundary .from_monitor (
253
- mode_monitor , mode_index = 1 , frequency = freq0
253
+ mode_monitor , mode_index = 1 , freq_spec = freq0
254
254
)
255
255
assert mode_abc == mode_abc_from_monitor
256
256
@@ -263,11 +263,11 @@ def test_abc_boundaries_alone():
263
263
plane = td .Box (size = (1 , 1 , 0 )),
264
264
mode_spec = td .ModeSpec (num_modes = 2 ),
265
265
mode_index = 1 ,
266
- frequency = freq0 ,
266
+ freq_spec = freq0 ,
267
267
)
268
268
abc_boundary_from_source = td .Boundary .mode_abc_from_source (mode_source )
269
269
abc_boundary_from_monitor = td .Boundary .mode_abc_from_monitor (
270
- mode_monitor , mode_index = 1 , frequency = freq0
270
+ mode_monitor , mode_index = 1 , freq_spec = freq0
271
271
)
272
272
assert abc_boundary == abc_boundary_from_source
273
273
assert abc_boundary == abc_boundary_from_monitor
@@ -430,7 +430,7 @@ def test_abc_boundaries_simulations():
430
430
sources = [],
431
431
run_time = 1e-20 ,
432
432
boundary_spec = td .BoundarySpec .all_sides (
433
- td .ModeABCBoundary (plane = td .Box (size = (1 , 1 , 0 )), frequency = freq0 )
433
+ td .ModeABCBoundary (plane = td .Box (size = (1 , 1 , 0 )), freq_spec = freq0 )
434
434
),
435
435
)
436
436
# or at least one source
@@ -533,3 +533,50 @@ def test_abc_boundaries_simulations():
533
533
td .ABCBoundary (permittivity = 2 , conductivity = 1e-5 )
534
534
),
535
535
)
536
+
537
+
538
+ def test_abc_boundaries_broadband ():
539
+ # test broadband fitter params
540
+ fitter_params = td .BroadbandModeABCFitterParam (
541
+ max_num_poles = 10 , tolerance_rms = 1e-4 , frequency_sampling_points = 10
542
+ )
543
+
544
+ # test max num poles > 0
545
+ with pytest .raises (pydantic .ValidationError ):
546
+ _ = td .BroadbandModeABCFitterParam (max_num_poles = 0 )
547
+ # test max num poles <= 10
548
+ with pytest .raises (pydantic .ValidationError ):
549
+ _ = td .BroadbandModeABCFitterParam (max_num_poles = 11 )
550
+
551
+ # test tolerance rms >= 0
552
+ with pytest .raises (pydantic .ValidationError ):
553
+ _ = td .BroadbandModeABCFitterParam (tolerance_rms = - 1 )
554
+
555
+ # test frequency sampling points > 0
556
+ with pytest .raises (pydantic .ValidationError ):
557
+ _ = td .BroadbandModeABCFitterParam (frequency_sampling_points = 0 )
558
+ # test frequency sampling points <= 21
559
+ with pytest .raises (pydantic .ValidationError ):
560
+ _ = td .BroadbandModeABCFitterParam (frequency_sampling_points = 22 )
561
+
562
+ # test basic instance
563
+ fmin = 100e12
564
+ fmax = 200e12
565
+ abc_boundary = td .BroadbandModeABCSpec (frequency_range = (fmin , fmax ))
566
+
567
+ # test max frequency > min frequency
568
+ with pytest .raises (pydantic .ValidationError ):
569
+ _ = td .BroadbandModeABCSpec (frequency_range = (fmax , fmin ))
570
+
571
+ # test min frequency > 0
572
+ with pytest .raises (pydantic .ValidationError ):
573
+ _ = td .BroadbandModeABCSpec (frequency_range = (0 , fmax ))
574
+
575
+ # test from_wavelength_range
576
+ wvl_min = td .C_0 / fmax
577
+ wvl_max = td .C_0 / fmin
578
+ abc_boundary = td .BroadbandModeABCSpec .from_wavelength_range (
579
+ wavelength_range = (wvl_min , wvl_max ), fit_param = fitter_params
580
+ )
581
+ assert abc_boundary .frequency_range == (fmin , fmax )
582
+ assert abc_boundary .fit_param == fitter_params
0 commit comments