MicrostripLineParams#

class simpleEMS.microstrip_line.MicrostripLineParams(min_freq: float, max_freq: float, target_freq: float, elec_length_deg: int = 90, *, substrate_eps_r: float, substrate_tand: float, substrate_thickness_mm: float, substrate_cells: int = 7, unit: float = 0.001, num_points: int = 1000, backend_engine: str = 'FDTD', simulation_box: ndarray[tuple[Any, ...], dtype[_ScalarT]] | None = None, FEM_num_solve_points: int = 10, FEM_max_solve_points: int | None = None, FEM_boundary: str = 'silver_muller', FEM_symmetry: tuple | None = None, FEM_fe_order: int = 1, FEM_air_pad_frac: float = 0.25, FEM_air_pad_mm: float | tuple | None = None, FEM_elems_per_wavelength: float = 16.0, FEM_mesh_freq: float | None = None, FEM_mesh_fine_scale: float = 1.0, FEM_min_layers: int = 3, FEM_port_type: str = 'lumpedport', FEM_port_mode_modes: int = 6, FEM_port_mode_index: int = 0, FEM_port_mode_zc: float | None = None, FEM_port_mode_eps_eff: float | None = None, FEM_waveport_width_mm: float | None = None, FEM_waveport_height_mm: float | None = None, FDTD_timestep: int = 90000000, FDTD_end_criteria: float = 0.0001, FDTD_mesh_resolution_factor: int = 10, FDTD_metal_mesh_resolution_factor: int = 40, copper_thickness_mm: float = 0.035, min_trace_width_mm: float = 0.1, min_trace_spacing_mm: float = 0.089, fp_precision: int = 3, charac_imp: float = 50)#

Bases: SimParams

Parameters for a microstrip transmission line. This class extends SimParams and computes derived geometric parameters required for microstrip line layout and simulation.

Parameters:
  • min_freq (float) – Minimum frequency of the simulation range in Hz.

  • max_freq (float) – Maximum frequency of the simulation range in Hz.

  • target_freq (float) – Target frequency used to compute the microstrip dimensions in Hz.

  • elec_length_deg (int, optional) – Electrical length (in degrees) used to compute the microstrip phase shift length. Default is 90.

microstrip_width_mm#

Computed width of the microstrip trace in millimeters.

Type:

float

microstrip_length_mm#

Computed length of the microstrip trace in millimeters.

Type:

float

substrate_width_mm#

Substrate width including a 6 x thickness edge margin.

Type:

float

substrate_length_mm#

Substrate length, equal to the trace length.

Type:

float

Attributes Summary

Attributes Documentation

FDTD_end_criteria: float = 0.0001#
FDTD_mesh_resolution_factor: int = 10#
FDTD_metal_mesh_resolution_factor: int = 40#
FDTD_timestep: int = 90000000#
FEM_air_pad_frac: float = 0.25#
FEM_air_pad_mm: float | tuple | None = None#
FEM_boundary: str = 'silver_muller'#
FEM_elems_per_wavelength: float = 16.0#
FEM_fe_order: int = 1#
FEM_max_solve_points: int | None = None#
FEM_mesh_fine_scale: float = 1.0#
FEM_mesh_freq: float | None = None#
FEM_min_layers: int = 3#
FEM_num_solve_points: int = 10#
FEM_port_mode_eps_eff: float | None = None#
FEM_port_mode_index: int = 0#
FEM_port_mode_modes: int = 6#
FEM_port_mode_zc: float | None = None#
FEM_port_type: str = 'lumpedport'#
FEM_symmetry: tuple | None = None#
FEM_waveport_height_mm: float | None = None#
FEM_waveport_width_mm: float | None = None#
backend_engine: str = 'FDTD'#
charac_imp: float = 50#
copper_thickness_mm: float = 0.035#
elec_length_deg: int = 90#
fem_options#

Bundle the flat FEM_* fields into a FEMOptions instance.

fp_precision: int = 3#
freq_range#

Return the simulation frequency range.

Returns:

(min_freq, max_freq) in Hz.

Return type:

tuple[float, float]

main_freq#

Return the primary frequency of interest for analysis.

Returns:

The target frequency for the microstrip line simulation.

Return type:

float

min_trace_spacing_mm: float = 0.089#
min_trace_width_mm: float = 0.1#
num_points: int = 1000#
simulation_bounds#

Return simulation_box as per-axis [min, max] bounds.

A (3,) box of sizes is centred on the origin.

Returns:

Array of shape (3, 2), [[xmin, xmax], [ymin, ymax], [zmin, zmax]] in mm, or None when no simulation box is defined.

Return type:

NDArray or None

simulation_box: ndarray[tuple[Any, ...], dtype[_ScalarT]] | None = None#
substrate_cells: int = 7#
substrate_length_mm#

Return the substrate length, which the trace spans end to end.

Both ports sit on the trace ends, so the board stops there and the connectors land on its edges.

Returns:

Substrate length in mm.

Return type:

float

substrate_width_mm#

Return the substrate width including the board-edge margin.

The board extends 6 substrate thicknesses beyond each edge of the trace, far enough to contain the fringing fields.

Returns:

Substrate width in mm.

Return type:

float

unit: float = 0.001#