NanoComp / meep

free finite-difference time-domain (FDTD) software for electromagnetic simulations
GNU General Public License v2.0
1.23k stars 625 forks source link

Svensson/Djordjevic Dispersion #1179

Closed Vinc0110 closed 4 years ago

Vinc0110 commented 4 years ago

Hi everyone,

For circuit board EM simulations below 100 GHz the substrate dispersion in other simulators is often modeled using a wideband Debye model (a.k.a Svensson/Djordjevic model). As that model is derived from an infinite series of resonances, I tried fitting a finite number of Lorentzian oscillators for the substrate susceptibility in Meep:

Figure_1

That implementation seems to work (if the Dourant factor is adjusted properly), but even a relatively small number of oscillators (6-8) already slows down the simulation significantly.

Now my question: Would it be a big effort to extend Meep and implement the Svensson/Djordjevic model? I'm not an expert here, but wouldn't that be more efficient than my poor-man's approach using all those Lorentzians?

The Djordjevic paper: https://doi.org/10.1109/15.974647

A nice presentation with some more background information, see slide 31 and above: https://www.simberian.com/Presentations/Tutorial_A_Material_World_Final.pdf

Regards, Vincent

smartalecH commented 4 years ago

Once #920 is fixed it can efficiently model any realistic susceptibility, including Debye poles.

smartalecH commented 4 years ago

Also keep in mind that what you've described is extremely broadband. Typically we can just fit a pseudo material to our band of interest. The more terms you add, the longer your simulation will take (and more memory consumption).

The IIR filter approach can efficiently model the response because you have flexibility (as many poles and zeros as you want). It's often still better to split your susceptibilities into multiple terms (i.e. multiple biquad filters) for stability's sake.

Once we have more time we can debug that last issue with the current PR.

stevengj commented 4 years ago

Can a single Meep simulation really cover 8 orders of magnitude in frequency? This would also entail 8 orders of magnitude in wavelength, which seems to imply an unreasonable cell size.

If you only fit ε(ω) for the specific bandwidth of a given simulation, the problem becomes much easier.

Vinc0110 commented 4 years ago

The huge bandwidth from 10 kHz to 1 THz is just a typical example for the validity range of the permittivity model, which I wanted to reproduce in a Meep simulation. I somehow assumed Meep would still only calculate the values that are actually required for the frequency sweep with a certain (much narrower) bandwidth.

For instance, a typical circuit board simulation might only cover 500 MHz to 10 GHz, which seems to work. I would use a Gaussian source at about 5 GHz with a width of almost 5 GHz, say 4.5 GHz width. In that case, I'd expect that Meep only calculates the permittivity for that frequency range. Of course, it would do so with the Lorentzians at higher and lower frequencies in my model, but it would not actually calculate the permittivity values at those out-of-band frequencies. Isn't that the case? Or are these calculations really that expensive?

As you suggested, I'm also trying to fit the wideband model using only in-band Lorentzians: Figure_2

The result is not exactly the same, but it might be good enough. I need to run a few more simulations to see how much this reduction is saving in the total simulation time.

Naively, I thought it would be just a matter of implementing the equation for the Svensson/Djordjevic model, just like the equation with the series of Lorentzian resonances has been implemented for the permittivity dispersion. I'm probably missing some insight into the details, as @smartalecH was mentioning IIR filters for this purpose.

stevengj commented 4 years ago

I somehow assumed Meep would still only calculate the values that are actually required for the frequency sweep with a certain (much narrower) bandwidth.

The solution of Maxwell's equations (and hence Meep) only depends on the permittivity values that are in the bandwidth that is actually used. But Meep doesn't calculate permittivity values explicitly — it is a time-domain simulation algorithm, which is why you need to fit permittivity data to some model that can be implemented efficiently in the time domain (as an FIR or IIR filter, a.k.a. an "auxiliary differential equation", a special case of which is a Lorentzian fit).

That's why you can't just supply an arbitrary permittivity model as-is, whether it be experimental data or the Svensson/Djordevic model (which contains a log-frequency function that does not have a nice representation in the time domain as far as I know).

920 will automate the fitting process to a certain extent — it will allow you to supply an arbitrary frequency dependence, a desired bandwidth, and an accuracy tolerance or frequency resolution, and then it will perform a fit. But even then some user judgement is required.

stevengj commented 4 years ago

Closing as this model does not seem implementable in the time domain.