{
  "title": "AdmittanceNetwork",
  "public_path": "flex_rf.tidy3d.AdmittanceNetwork",
  "lookup_path": "tidy3d.rf.AdmittanceNetwork",
  "slug": "flex_rf/tidy3d/AdmittanceNetwork",
  "public_url": "/rf/latest/autogenerated/flex_rf/tidy3d/admittancenetwork/",
  "object_kind": "class",
  "introduction": "Class for representing a network consisting of an arbitrary number of resistors,\ncapacitors, and inductors. The network is represented in the Laplace domain\nas an admittance function. Provides additional functionality for representing the network\nas an equivalent medium.\n\n:::caution\nThis class may be renamed to `AdmittanceModel` in a future release. For building\nnetworks from SPICE files or component lists, use `CircuitImpedanceModel`\n(e.g. `from_spice`).\n:::",
  "notes": "The network is described by the supplied coefficients as an admittance function that relates\n    voltage to the current in the Laplace domain and is equivalent to a frequency-dependent\n    complex conductivity $$\\sigma(\\omega)$$.\n\n$$\nI(s) = Y(s)V(s)\n$$\n\n$$\nY(s) = \\frac{a_0 + a_1 s + \\dots + a_M s^M}{b_0 + b_1 s + \\dots + b_N s^N}\n$$\n\nAn equivalent `PoleResidue` medium is constructed using an equivalent frequency-dependent\ncomplex permittivity defined as\n\n$$\n\\epsilon(s) = \\epsilon_\\infty - \\frac{\\Delta}{\\epsilon_0 s}\n\\frac{a_0 + a_1 s + \\dots + a_M s^M}{b_0 + b_1 s + \\dots + b_N s^N}.\n$$\n\nThe admittance is scaled depending on the geometric properties of the lumped element by\nthe scaling factor $$\\Delta$$. Implementation is based on the equivalent medium introduced\nby [1].",
  "examples": "Recommended: build the same RC parallel network with `CircuitImpedanceModel` (no warning):\n\n```python\n>>> comps = (\n...     LumpedCircuitComponent(element_type=\"R\", node_plus=\"1\", node_minus=\"0\", value=50.0, name=\"R1\"),\n...     LumpedCircuitComponent(element_type=\"C\", node_plus=\"1\", node_minus=\"0\", value=1e-12, name=\"C1\"),\n... )\n>>> model = CircuitImpedanceModel(components=comps, freq_range=(1e9, 2e9))\n```\n\nLegacy (a, b) form; constructing `AdmittanceNetwork` emits a rename warning.\nTo suppress it, use `log.suppress_output()`:\n\n```python\n>>> with log.suppress_output():\n...     R, C = 50, 1e-12\n...     a = (1, R * C)  # RC parallel numerator\n...     b = (R, 0)      # denominator\n...     RC_parallel = AdmittanceNetwork(a=a, b=b)\n```",
  "references": "**[1]** J. A. Pereda, F. Alimenti, P. Mezzanotte, L. Roselli and R. Sorrentino, \"A new algorithm for the incorporation of arbitrary linear lumped networks into FDTD simulators,\" IEEE Trans. Microw. Theory Tech., vol. 47, no. 6, pp. 943-949, Jun. 1999.",
  "signature": "class AdmittanceNetwork(MicrowaveBaseModel)",
  "source": {
    "path": "flex/public/tidy3d/tidy3d/components/lumped_element.py",
    "url": "",
    "lineno": 945,
    "endlineno": 1049
  },
  "bases": [
    "MicrowaveBaseModel"
  ],
  "parameter_rows": [
    {
      "name": "a",
      "annotation": "tuple[NonNegativeFloat, ...]",
      "default": "",
      "description": "A `tuple` of floats describing the coefficients of the numerator polynomial. The length of the `tuple` is equal to the order of the network.",
      "origin": "declared"
    },
    {
      "name": "b",
      "annotation": "tuple[NonNegativeFloat, ...]",
      "default": "",
      "description": "A `tuple` of floats describing the coefficients of the denomiator polynomial. The length of the `tuple` is equal to the order of the network.",
      "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"
    }
  ],
  "members": [],
  "group": "flex_rf.tidy3d"
}
