{
  "title": "LossyMetalMedium",
  "public_path": "flex_rf.tidy3d.LossyMetalMedium",
  "lookup_path": "tidy3d.rf.LossyMetalMedium",
  "slug": "flex_rf/tidy3d/LossyMetalMedium",
  "public_url": "/rf/latest/autogenerated/flex_rf/tidy3d/lossymetalmedium/",
  "object_kind": "class",
  "introduction": "Lossy metal that can be modeled with a surface impedance boundary condition (SIBC).",
  "notes": "SIBC is most accurate when the skin depth is much smaller than the structure feature size.\nIf not the case, please use a regular medium instead, or set `simulation.subpixel.lossy_metal`\nto `td.VolumetricAveraging()` or `td.Staircasing()`.",
  "examples": "```python\nlossy_metal = LossyMetalMedium(conductivity=10, frequency_range=(9e9, 10e9))\n```",
  "references": "",
  "signature": "class LossyMetalMedium(Medium)",
  "source": {
    "path": "flex/public/tidy3d/tidy3d/components/medium.py",
    "url": "",
    "lineno": 5821,
    "endlineno": 6035
  },
  "bases": [
    "Medium"
  ],
  "parameter_rows": [
    {
      "name": "allow_gain",
      "annotation": "Literal[False]",
      "default": "False",
      "description": "Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where `allow_gain` is set to `True` will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.",
      "origin": "declared"
    },
    {
      "name": "permittivity",
      "annotation": "Literal[1.0]",
      "default": "1.0",
      "description": "Relative permittivity.",
      "origin": "declared"
    },
    {
      "name": "conductivity",
      "annotation": "PositiveFloat",
      "default": "",
      "description": "Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.",
      "origin": "declared"
    },
    {
      "name": "roughness",
      "annotation": "SurfaceRoughnessType | None",
      "default": "None",
      "description": "Surface roughness model that applies a frequency-dependent scaling factor to surface impedance.",
      "origin": "declared"
    },
    {
      "name": "thickness",
      "annotation": "PositiveFloat | None",
      "default": "None",
      "description": "When the thickness of the conductor is not much greater than skin depth, 1D transmission line model is applied to compute the surface impedance of the thin conductor.",
      "origin": "declared"
    },
    {
      "name": "frequency_range",
      "annotation": "FreqBound",
      "default": "",
      "description": "Frequency range of validity for the medium.",
      "origin": "declared"
    },
    {
      "name": "fit_param",
      "annotation": "SurfaceImpedanceFitterParam",
      "default": "factory: SurfaceImpedanceFitterParam",
      "description": "Parameters for fitting surface impedance divided by (-1j * omega) over the frequency range using pole-residue pair model.",
      "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 unique name for medium.",
      "origin": "inherited"
    },
    {
      "name": "nonlinear_spec",
      "annotation": "NonlinearSpec | NonlinearSusceptibility | None",
      "default": "None",
      "description": "Nonlinear spec applied on top of the base medium properties.",
      "origin": "inherited"
    },
    {
      "name": "modulation_spec",
      "annotation": "ModulationSpec | None",
      "default": "None",
      "description": "Modulation spec applied on top of the base medium properties.",
      "origin": "inherited"
    },
    {
      "name": "viz_spec",
      "annotation": "VisualizationSpec | None",
      "default": "None",
      "description": "Plotting specification for visualizing medium.",
      "origin": "inherited"
    },
    {
      "name": "heat_spec",
      "annotation": "ThermalSpecType | None",
      "default": "None",
      "description": "DEPRECATED: Use `MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the `HeatSimulation` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using `HeatSimulation` object, `Simulation.perturbed_mediums_copy()` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the `heat_spec` does not directly affect the running of an optical `Simulation`.",
      "origin": "inherited"
    }
  ],
  "members": [
    {
      "name": "eps_diagonal_numerical",
      "kind": "function",
      "signature": "eps_diagonal_numerical(frequency: float)",
      "description": "Main diagonal of the complex-valued permittivity tensor for numerical considerations such as meshing and runtime estimation."
    },
    {
      "name": "is_pec_like",
      "kind": "function",
      "signature": "is_pec_like()",
      "description": "Whether the medium is treated as a PEC medium in surface monitors."
    },
    {
      "name": "num_poles",
      "kind": "function",
      "signature": "num_poles()",
      "description": "Number of poles in the fitted model."
    },
    {
      "name": "plot",
      "kind": "function",
      "signature": "plot(ax: Ax = None)",
      "description": "Make plot of complex-valued surface imepdance model vs fitted model, at sampling frequencies. Parameters ---------- ax : matplotlib.axes._subplots.Axes = None Axes to plot the data on, if None, a new one is created. Returns ------- matplotlib.axis.Axes Matplotlib axis corresponding to plot."
    },
    {
      "name": "sampling_frequencies",
      "kind": "function",
      "signature": "sampling_frequencies()",
      "description": "Sampling frequencies used in fitting."
    },
    {
      "name": "scaled_surface_impedance_model",
      "kind": "function",
      "signature": "scaled_surface_impedance_model()",
      "description": "Fitted surface impedance divided by (-j \\omega) using pole-residue pair model within `frequency_range`."
    },
    {
      "name": "surface_impedance",
      "kind": "function",
      "signature": "surface_impedance(frequencies: ArrayFloat1D)",
      "description": "Computing surface impedance including surface roughness effects."
    }
  ],
  "group": "flex_rf.tidy3d"
}
