{
  "title": "MicrowaveTerminalSource",
  "public_path": "flex_rf.tidy3d.MicrowaveTerminalSource",
  "lookup_path": "tidy3d.rf.MicrowaveTerminalSource",
  "slug": "flex_rf/tidy3d/MicrowaveTerminalSource",
  "public_url": "/rf/latest/autogenerated/flex_rf/tidy3d/microwaveterminalsource/",
  "object_kind": "class",
  "introduction": "Injects current source to excite a specific terminal mode.",
  "notes": "",
  "examples": "```python\nfrom tidy3d import GaussianPulse, AxisAlignedCurrentIntegralSpec, CustomImpedanceSpec\npulse = GaussianPulse(freq0=10e9, fwidth=1e9)\n\n# Define impedance spec for terminal\ncurrent_spec = AxisAlignedCurrentIntegralSpec(\n    center=(0, 0, 0), size=(2, 1, 0), sign=\"+\"\n)\nimpedance_spec = CustomImpedanceSpec(current_spec=current_spec)\n\n# Create terminal mode spec\nterminal_spec = MicrowaveTerminalModeSpec(\n    num_modes=1,\n    impedance_specs={\"port1\": impedance_spec}\n)\n\n# Create terminal source\nterminal_source = MicrowaveTerminalSource(\n    size=(10, 10, 0),\n    source_time=pulse,\n    mode_spec=terminal_spec,\n    terminal_label=\"port1\",\n    direction='+'\n)\n```",
  "references": "",
  "signature": "class MicrowaveTerminalSource(AbstractModeSource)",
  "source": {
    "path": "flex/public/tidy3d/tidy3d/components/microwave/source.py",
    "url": "",
    "lineno": 16,
    "endlineno": 77
  },
  "bases": [
    "AbstractModeSource"
  ],
  "parameter_rows": [
    {
      "name": "mode_spec",
      "annotation": "MicrowaveTerminalModeSpec",
      "default": "...",
      "description": "Specification for terminal modes with explicit impedance definitions. Defines how voltage, current, and impedance are computed for each terminal.",
      "origin": "declared"
    },
    {
      "name": "terminal_label",
      "annotation": "str",
      "default": "...",
      "description": "String identifier for the terminal to excite. Must match the label of a terminal (single-ended or differential pair).",
      "origin": "declared"
    },
    {
      "name": "attrs",
      "annotation": "dict",
      "default": "factory: dict",
      "description": "Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, `attrs` are mutable. For example, the following is allowed for setting an `attr` `obj.attrs['foo'] = bar`. Also note that Tidy3D will raise a `TypeError` if `attrs` contain objects that can not be serialized. One can check if `attrs` are serializable by calling `obj.model_dump_json()`.",
      "origin": "inherited"
    },
    {
      "name": "name",
      "annotation": "str | None",
      "default": "None",
      "description": "Optional name for the source.",
      "origin": "inherited"
    },
    {
      "name": "center",
      "annotation": "TracedCoordinate",
      "default": "(0.0, 0.0, 0.0)",
      "description": "Center of object in x, y, and z.",
      "origin": "inherited"
    },
    {
      "name": "size",
      "annotation": "TracedSize",
      "default": "",
      "description": "Size in x, y, and z directions.",
      "origin": "inherited"
    },
    {
      "name": "source_time",
      "annotation": "SourceTimeType",
      "default": "",
      "description": "Specification of the source time-dependence.",
      "origin": "inherited"
    },
    {
      "name": "num_freqs",
      "annotation": "int",
      "default": "1",
      "description": "Number of points used to approximate the frequency dependence of the injected field. For 'chebyshev', a Chebyshev interpolation is used with 'num_freqs' terms (max 20). For 'pole_residue', the mode solver samples at 'num_freqs' uniform frequencies and fits ceil((num_freqs - 1) / 3) poles; higher values provide denser sampling and more poles for the fit (max 50).",
      "origin": "inherited"
    },
    {
      "name": "broadband_method",
      "annotation": "Literal['chebyshev', 'pole_residue']",
      "default": "'chebyshev'",
      "description": "Method for representing the frequency dependence of the injected field. 'chebyshev' uses Chebyshev polynomial interpolation (default). 'pole_residue' uses a pole-residue (vector fitting) decomposition with auxiliary differential equation (ADE) time stepping. The pole-residue method can be more accurate for highly dispersive modes and uses fewer broadband terms than frequency samples.",
      "origin": "inherited"
    },
    {
      "name": "use_colocated_integration",
      "annotation": "bool",
      "default": "True",
      "description": "If `True` (default), source power normalization uses fields interpolated to grid cell boundaries (colocated). If `False`, uses fields at native Yee grid positions (non-colocated). Should match the `use_colocated_integration` setting on monitors for consistent power normalization. Experimental feature that can give improved accuracy by avoiding interpolation of fields to Yee cell positions for integration.",
      "origin": "inherited"
    },
    {
      "name": "direction",
      "annotation": "Direction",
      "default": "",
      "description": "Specifies propagation in the positive or negative direction of the injection axis.",
      "origin": "inherited"
    },
    {
      "name": "frame",
      "annotation": "PECFrame | None",
      "default": "None",
      "description": "Add a thin frame around the source during the FDTD run to improve the injection quality. The frame is positioned along the primal grid lines so that it aligns with the boundaries of the mode solver used to obtain the source profile.",
      "origin": "inherited"
    }
  ],
  "members": [],
  "group": "flex_rf.tidy3d"
}
