@@ -149,10 +149,12 @@ class FastFitterData(AdvancedFastFitterParam):
149
149
title = "eps_inf" ,
150
150
description = "Value of ``eps_inf``." ,
151
151
)
152
- poles : ArrayComplex1D = Field (
152
+ poles : Optional [ ArrayComplex1D ] = Field (
153
153
None , title = "Pole frequencies in eV" , description = "Pole frequencies in eV"
154
154
)
155
- residues : ArrayComplex1D = Field (None , title = "Residues in eV" , description = "Residues in eV" )
155
+ residues : Optional [ArrayComplex1D ] = Field (
156
+ None , title = "Residues in eV" , description = "Residues in eV"
157
+ )
156
158
157
159
passivity_optimized : Optional [bool ] = Field (
158
160
False ,
@@ -188,7 +190,11 @@ def _generate_initial_poles(cls, val, values):
188
190
"""Generate initial poles."""
189
191
if val is not None :
190
192
return val
191
- if values ["logspacing" ] is None or values ["smooth" ] is None :
193
+ if (
194
+ values .get ("logspacing" ) is None
195
+ or values .get ("smooth" ) is None
196
+ or values .get ("num_poles" ) is None
197
+ ):
192
198
return None
193
199
omega = values ["omega" ]
194
200
num_poles = values ["num_poles" ]
@@ -211,7 +217,7 @@ def _generate_initial_residues(cls, val, values):
211
217
"""Generate initial residues."""
212
218
if val is not None :
213
219
return val
214
- poles = values [ "poles" ]
220
+ poles = values . get ( "poles" )
215
221
if poles is None :
216
222
return None
217
223
return np .zeros (len (poles ))
@@ -675,6 +681,11 @@ def fit(
675
681
Best fitting result: (dispersive medium, weighted RMS error).
676
682
"""
677
683
684
+ if max_num_poles < min_num_poles :
685
+ raise ValidationError (
686
+ "Dispersion fitter cannot have 'max_num_poles' less than 'min_num_poles'."
687
+ )
688
+
678
689
omega = PoleResidue .angular_freq_to_eV (PoleResidue .Hz_to_angular_freq (self .freqs [::- 1 ]))
679
690
eps = self .eps_data [::- 1 ]
680
691
0 commit comments