Skip to content
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

Frequency dispersion of impedance and dielectric constant is not used to compute the losses of microstripline #34

Open
mhuser opened this issue May 10, 2022 · 4 comments

Comments

@mhuser
Copy link

mhuser commented May 10, 2022

While the frequency dispersion of impedance and dielectric constant of the microstripline are computed, they are not used to compute the losses.

analyseDispersion (W, h, er, ZlEff, ErEff, frequency, DModel,
ZlEffFreq, ErEffFreq);
// analyse losses of line
analyseLoss (W, t, er, rho, D, tand, ZlEff, ZlEff, ErEff,
frequency, "Hammerstad", ac, ad);

However they are properly used to compute gamma.
// calculate propagation constants and reference impedance
zl = ZlEffFreq;
ereff = ErEffFreq;
alpha = ac + ad;
beta = qucs::sqrt (ErEffFreq) * 2 * pi * frequency / C0;

The original paper of Hammerstad and Jensen is ambiguous about this, as it used the same variable names for these values with or without dispersion.
On the other hand, it sounds strange to use the quasi-static constant value for losses and a frequency-dependant value for gamma. This eventually cause Qucs to have a small difference in simulated insertion loss if compared against Keysight ADS (using frequency invariant dielectric and kirschning models, but the loss computation is Hammerstad and Jensen).

@felix-salfelder
Copy link
Member

felix-salfelder commented May 11, 2022 via email

@mhuser
Copy link
Author

mhuser commented May 12, 2022

You are welcome. I will prepare some plots to illustrate the behaviour with/without the proposed modification compared to an ADS generated s-parameter file.

@mhuser
Copy link
Author

mhuser commented May 14, 2022

First let me introduce the context: I am contributing to scikit-rf a Python package that provide standard microwave network operations, such as reading/writing Touchstone files (.sNp files), connecting or de-embedding N-port networks, .... and advanced operations such as communication with Vector Network Analyzer (VNA) amongst other things that are interesting to automate in scripts without a graphical interface.

Of course, we are not rewriting this great tool that is QUCS in Python, instead we are using it to build networks out of its extensive component library and process later with the resulting s-parameters files.

At a point, it appeared it was useful to implement the msline model into the package to use Python optimizations to fit microstripline models on measurement, e.g. to determine relative permittivity of substrates. We inspired highly of qucsator qucs msline implementation because it is open and the equations are very-well documented.

We checked that our implementation follows qucsator, but during the process we had a chance to compare to ads mlin which is a closed commercial solution. We noticed a discrepancy in the insertion loss results and after looking at it, using the frequency-dispersed values for the loss computation significantly enhance the agreement. The original paper use the same variables names for quasi-static or frequency-dispersed values so there is an ambiguity, but it make sense to use frequency-dependant values here (they are used for propagation, which will also embed the losses).

qucs_vs_ads

image

@mhuser
Copy link
Author

mhuser commented May 14, 2022

This is our issue for reference:
scikit-rf/scikit-rf#647

There is also a difference between QUCS and ADS on the Return Loss. But ADS implementation is questionable there as they use a complex permittivity (ep_r - 1j ep_r * tand), which lead to characteristic of the line having a complex value. I think this is done to use their dielectric frequency-dispersion model (Svensson/Djordjecic wideband Debye) implementation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants