Inductor with Quality Factor

This example demonstrates the InductorQ component, which models an inductor with frequency-dependent losses characterized by a quality factor Q.

using CircuitSim
using GLMakie

# Create circuit for S-parameter analysis
circ = Circuit()

# Two-port configuration: Port1 -> InductorQ -> Port2
port1 = ACPowerSource("P1", port_num=1, impedance=50.0)
port2 = ACPowerSource("P2", port_num=2, impedance=50.0)
add_component!(circ, port1)
add_component!(circ, port2)

ind_q = InductorQ("L1", inductance=100e-9, q=100.0, freq=100e6)
add_component!(circ, ind_q)

# Ground
gnd = Ground("GND")
add_component!(circ, gnd)
Ground("GND", 0)

Connect the inductor in series between the two ports.

# Series connection: Port1 -> Inductor -> Port2
@connect circ port1.nplus ind_q.n1
@connect circ ind_q.n2 port2.nplus

# Ground connections
@connect circ port1.nminus gnd
@connect circ port2.nminus gnd

S-Parameter Analysis

Run S-parameter analysis from 1 MHz to 1000 MHz to characterize the inductor's frequency response.

# S-parameter analysis
sparam = SParameterAnalysis(start=1e6, stop=1000e6, points=1000,
    sweep_type="linear",
    z0=50.0
)

# Run simulation
sp_result = simulate_qucsator(circ, sparam)
SParameterResult([1.0e6, 2.0e6, 3.0e6, 4.0e6, 5.0e6, 6.0e6, 7.0e6, 8.0e6, 9.0e6, 1.0e7  …  9.91e8, 9.92e8, 9.93e8, 9.94e8, 9.95e8, 9.96e8, 9.97e8, 9.98e8, 9.99e8, 1.0e9], 2, Dict{Tuple{Int64, Int64}, Vector{ComplexF64}}((1, 2) => [0.9937173045982329 - 0.006204724533716375im, 0.9936010966882256 - 0.012407997873885255im, 0.9934074772249238 - 0.018608369958114553im, 0.9931365367142794 - 0.024804392984471974im, 0.9927884017165629 - 0.03099462253709243im, 0.9923632346986896 - 0.037177618706253024im, 0.9918612338449039 - 0.04335194720109566im, 0.9912826328262343 - 0.049516180453197556im, 0.9906277005292201 - 0.055668898709216035im, 0.9898967407444913 - 0.0618086911108637im  …  0.025293913578741566 - 0.15651261130385535im, 0.02524423827443876 - 0.15636285639884512im, 0.02519470789781508 - 0.15621337974048724im, 0.025145321890648085 - 0.1560641805789449im, 0.025096079697375703 - 0.1559152581669673im, 0.025046980765081186 - 0.15576661175987952im, 0.024998024543478162 - 0.1556182406155715im, 0.02494921048489581 - 0.1554701439944881im, 0.024900538044264023 - 0.15532232115961828im, 0.024852006679098808 - 0.1551747713764849im], (1, 1) => [0.006282695401767062 + 0.006204724533716376im, 0.006398903311774406 + 0.012407997873885256im, 0.006592522775076143 + 0.018608369958114553im, 0.006863463285720551 + 0.024804392984471978im, 0.007211598283436996 + 0.030994622537092432im, 0.007636765301310338 + 0.037177618706253024im, 0.00813876615509616 + 0.04335194720109566im, 0.008717367173765565 + 0.04951618045319756im, 0.009372299470779827 + 0.055668898709216035im, 0.010103259255508552 + 0.061808691110863706im  …  0.9747060864212584 + 0.15651261130385535im, 0.9747557617255613 + 0.15636285639884512im, 0.9748052921021848 + 0.15621337974048724im, 0.9748546781093519 + 0.1560641805789449im, 0.9749039203026243 + 0.1559152581669673im, 0.9749530192349188 + 0.15576661175987952im, 0.9750019754565218 + 0.1556182406155715im, 0.975050789515104 + 0.1554701439944881im, 0.975099461955736 + 0.15532232115961828im, 0.9751479933209013 + 0.1551747713764849im], (2, 2) => [0.006282695401767062 + 0.006204724533716376im, 0.006398903311774406 + 0.012407997873885256im, 0.006592522775076143 + 0.018608369958114553im, 0.006863463285720551 + 0.024804392984471978im, 0.007211598283436996 + 0.030994622537092432im, 0.007636765301310338 + 0.037177618706253024im, 0.00813876615509616 + 0.04335194720109566im, 0.008717367173765565 + 0.04951618045319756im, 0.009372299470779827 + 0.055668898709216035im, 0.010103259255508552 + 0.061808691110863706im  …  0.9747060864212584 + 0.15651261130385535im, 0.9747557617255613 + 0.15636285639884512im, 0.9748052921021848 + 0.15621337974048724im, 0.9748546781093519 + 0.1560641805789449im, 0.9749039203026243 + 0.1559152581669673im, 0.9749530192349188 + 0.15576661175987952im, 0.9750019754565218 + 0.1556182406155715im, 0.975050789515104 + 0.1554701439944881im, 0.975099461955736 + 0.15532232115961828im, 0.9751479933209013 + 0.1551747713764849im], (2, 1) => [0.9937173045982329 - 0.006204724533716375im, 0.9936010966882256 - 0.012407997873885255im, 0.9934074772249238 - 0.018608369958114553im, 0.9931365367142794 - 0.024804392984471974im, 0.9927884017165629 - 0.03099462253709243im, 0.9923632346986896 - 0.037177618706253024im, 0.9918612338449039 - 0.04335194720109566im, 0.9912826328262343 - 0.049516180453197556im, 0.9906277005292201 - 0.055668898709216035im, 0.9898967407444913 - 0.0618086911108637im  …  0.025293913578741566 - 0.15651261130385535im, 0.02524423827443876 - 0.15636285639884512im, 0.02519470789781508 - 0.15621337974048724im, 0.025145321890648085 - 0.1560641805789449im, 0.025096079697375703 - 0.1559152581669673im, 0.025046980765081186 - 0.15576661175987952im, 0.024998024543478162 - 0.1556182406155715im, 0.02494921048489581 - 0.1554701439944881im, 0.024900538044264023 - 0.15532232115961828im, 0.024852006679098808 - 0.1551747713764849im]), 50.0, nothing, nothing, nothing, nothing)