Waveguide material parameter extraction

43 views
Skip to first unread message

Kevin

unread,
Dec 12, 2025, 11:09:25 AM12/12/25
to VNA Tools
Hello,

Has anyone used the waveguide material parameter extraction feature? I tested it out with a simulated short waveguide section (no material, just air), and the calculated relative permittivity was not 1. Also tried with PTFE, and results were also way off. I am giving it S-parameters, length, and cutoff frequency.

Any help would be greatly appreciated.

Thanks,
Kevin

Michael Wollensack METAS

unread,
Dec 16, 2025, 6:25:41 AM12/16/25
to VNA Tools
Hi,

can you provide a minimum example (simulation data and the expectation you have).

Regards
Michael

Kevin

unread,
Dec 20, 2025, 9:22:01 PM12/20/25
to VNA Tools
Hi Michael,
Thank you for your response.
Attached is one .s2p file I'm working with. It's 5 mm of WR-90, with nothing inside (relative permittivity & permeability = 1).
The plots below from METAS VNA Tools are using the NRW algorithm (black) and Direct algorithm (red).
Screenshot 2025-12-20 205525.png
Screenshot 2025-12-20 205611.png
As you can see, the NRW option is miscalculating both parameters. Direct is working in this most basic case, but becomes inaccurate when I test with a material with εr = 2,  µr = 1.

Best Regards,
Kevin
wr90shim_empty.s2p

Michael Wollensack METAS

unread,
Jan 5, 2026, 6:51:14 AMJan 5
to VNA Tools
Hi Kevin,

if I take a look at your simulation data, it seems that the phase of S21 and S12 is 180° at the lower frequencies. It should be 0°.

Regards
Michael

Michael Wollensack METAS

unread,
Jan 5, 2026, 7:02:42 AMJan 5
to VNA Tools
Hi Kevin,

with the following script you can generate simulation data within VNA Tools:

# Michael Wollensack METAS - 05.01.2026

import clr
clr.AddReference('System.Windows.Forms')
clr.AddReference('Metas.Vna.Tools')
clr.AddReference('Metas.Vna.Data')
clr.AddReference('Metas.UncLib.Core')
clr.AddReference('Metas.UncLib.LinProp')
from System import Array
from System import Double
from System.IO import File
from System.IO import FileInfo
from System.Threading import Thread
from System.Windows.Forms import MessageBox
from Metas.Vna.Tools import Script
from Metas.Vna.Data import SParamData
from Metas.Vna.Data import SParamTools
from Metas.Vna.Data.MaterialParameters import MaterialParamData
from Metas.Vna.Data.MaterialParameters import MaterialParamTools
from Metas.UncLib.Core import Complex
from Metas.UncLib.Core import NumLib
from Metas.UncLib.LinProp import UncNumber

s = Script(RootPath)

def CreateMaterialParamData(freq, er_real, er_imag, ur_real, ur_imag):
    m = MaterialParamData[UncNumber](freq)
    n = freq.Length;
    for i in range(n):
        er2 = Complex[UncNumber]()
        er2.InitDblReIm(er_real[i], er_imag[i])
        ur2 = Complex[UncNumber]()
        ur2.InitDblReIm(ur_real[i], ur_imag[i])
        m.RelativePermittivity[i] = er2
        m.RelativePermeability[i] = ur2
    return m
   
def CreateSParamData(freq, er_real, er_imag, ur_real, ur_imag, l, fc):
    m = CreateMaterialParamData(freq, er_real, er_imag, ur_real, ur_imag)
    zero = UncNumber()
    zero.InitDbl(0)
    l2 = UncNumber()
    l2.InitDbl(l)
    sdata = MaterialParamTools.MaterialParamDataToSParamData[UncNumber](m, zero, l2, zero, fc, 1)
    return sdata
   
def CreateExampleData(freq, er_real, er_imag, ur_real, ur_imag, l, fc, name):
    sdata = CreateSParamData(freq, er_real, er_imag, ur_real, ur_imag, l, fc)
    s.SaveSParamData(name, sdata)

def CreateExampleData2(freq_start, freq_stop, er_real_start, er_real_stop, er_imag_start, er_imag_stop, ur_real_start, ur_real_stop, ur_imag_start, ur_imag_stop, n, l, fc, name):
    freq = NumLib.Linspace(freq_start, freq_stop, n)
    er_real = NumLib.Linspace(er_real_start, er_real_stop, n)
    er_imag = NumLib.Linspace(er_imag_start, er_imag_stop, n)
    ur_real = NumLib.Linspace(ur_real_start, ur_real_stop, n)
    ur_imag = NumLib.Linspace(ur_imag_start, ur_imag_stop, n)
    CreateExampleData(freq, er_real, er_imag, ur_real, ur_imag, l, fc, name)
   
n = 43
CreateExampleData2(8.2e9, 12.4e9, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, n, 5e-3, 0, 'Example_Data_G1_er_2.0_ur_1.0_l_5.0.sdatb')
CreateExampleData2(8.2e9, 12.4e9, 4.0, 4.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, n, 5e-3, 0, 'Example_Data_G1_er_4.0_ur_1.0_l_5.0.sdatb')
CreateExampleData2(8.2e9, 12.4e9, 8.0, 8.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, n, 5e-3, 0, 'Example_Data_G1_er_8.0_ur_1.0_l_5.0.sdatb')


Regards
Michael

Kevin

unread,
Jan 7, 2026, 4:24:47 PMJan 7
to VNA Tools
Thanks for looking into this! You're completely right, about the phase being off by 180. One of my ports was flipped in my simulation. All good now.

Best regards,
Kevin

Michael Wollensack METAS

unread,
Jan 8, 2026, 2:13:00 AMJan 8
to VNA Tools
Hi Kevin,

thanks for reporting back.

Regards
Michael

Reply all
Reply to author
Forward
0 new messages