Skip to content

RF Mode Analysis

MicrowaveModeSpec extends the standard mode specification with characteristic impedance calculation. It is useful for RF and microwave transmission lines where Z0 is a key result.

Unlike a standard mode spec, MicrowaveModeSpec includes impedance_specs, which defines how voltage and current path integrals are computed for each mode.

from flex_rf.tidy3d import AutoImpedanceSpec, MicrowaveModeMonitor, MicrowaveModeSpec
mode_spec = MicrowaveModeSpec(
num_modes=2,
target_neff=1.5,
impedance_specs=AutoImpedanceSpec(),
)
monitor = MicrowaveModeMonitor(
center=(0, 0, 0),
size=(2, 2, 0),
freqs=[1e9, 2e9, 3e9],
mode_spec=mode_spec,
name="mode_monitor",
)

AutoImpedanceSpec automatically determines voltage and current integration paths from the mode field distribution. This is the recommended starting point.

from flex_rf.tidy3d import AutoImpedanceSpec, MicrowaveModeSpec
mode_spec_auto = MicrowaveModeSpec(
num_modes=1,
impedance_specs=AutoImpedanceSpec(),
)

Use CustomImpedanceSpec when you need precise control over voltage and current path placement.

from flex_rf.tidy3d import (
AxisAlignedCurrentIntegralSpec,
AxisAlignedVoltageIntegralSpec,
CustomImpedanceSpec,
MicrowaveModeSpec,
)
voltage_spec = AxisAlignedVoltageIntegralSpec(
center=(0, 0, 0),
size=(0, 0, 1),
sign="+",
)
current_spec = AxisAlignedCurrentIntegralSpec(
center=(0, 0, 0),
size=(2, 1, 0),
sign="+",
)
custom_impedance = CustomImpedanceSpec(
voltage_spec=voltage_spec,
current_spec=current_spec,
)
mode_spec_custom = MicrowaveModeSpec(
num_modes=1,
impedance_specs=custom_impedance,
)

Provide one impedance specification per mode, or provide a single specification that is applied to all modes.

mode_spec_multi = MicrowaveModeSpec(
num_modes=2,
impedance_specs=(
AutoImpedanceSpec(),
custom_impedance,
),
)
mode_spec_shared = MicrowaveModeSpec(
num_modes=2,
impedance_specs=AutoImpedanceSpec(),
)
MonitorUse
MicrowaveModeMonitorRecords mode amplitudes and transmission-line parameters during a full 3D simulation.
MicrowaveModeSolverMonitorStores complete 2D mode field profiles from a standalone mode solver calculation.
from flex_rf.tidy3d import MicrowaveModeMonitor, MicrowaveModeSolverMonitor
mode_monitor = MicrowaveModeMonitor(
center=(0, 0, 0),
size=(2, 2, 0),
freqs=[1e9, 2e9],
mode_spec=mode_spec,
name="mode_monitor",
)
mode_solver_monitor = MicrowaveModeSolverMonitor(
center=(0, 0, 0),
size=(2, 2, 0),
freqs=[1e9, 2e9],
mode_spec=mode_spec,
name="mode_solver_monitor",
)

Use ModeSimulation to solve modes without a full 3D FDTD run.

from flex_rf import web
from flex_rf.tidy3d import GridSpec, ModeSimulation
mode_sim = ModeSimulation(
size=(10, 10, 0),
grid_spec=GridSpec.auto(wavelength=0.3),
structures=[...],
mode_spec=mode_spec,
freqs=[1e9, 2e9, 3e9],
)
mode_sim_data = web.run(mode_sim, task_name="mode_analysis")
z0 = mode_sim_data.modes.transmission_line_data.Z0
PageWhy open it
Path IntegralsDefine voltage and current paths used by impedance specs.
Impedance CalculatorCalculate impedance from mode or field data after a run.
Wave PortsUse microwave mode specs in modal RF ports.