tidy3d.plugins.adjoint.JaxMedium#

class tidy3d.plugins.adjoint.JaxMedium#

A Medium registered with jax.

Parameters
  • name (Optional[str] = None) – Optional unique name for medium.

  • frequency_range (Optional[Tuple[float, float]] = None) – [units = (Hz, Hz)]. Optional range of validity for the medium.

  • permittivity (Union[float, ndarray, DeviceArray, JVPTracer] = 1.0) – Relative permittivity of the medium. May be a jax DeviceArray.

  • conductivity (ConstrainedFloatValue = 0.0) – [units = S/um]. Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.

Show JSON schema
{
   "title": "JaxMedium",
   "description": "Parameters\n----------\nname : Optional[str] = None\n    Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n    [units = (Hz, Hz)].  Optional range of validity for the medium.\npermittivity : Optional[Any] = None\n        conductivity : ConstrainedFloatValue = 0.0\n    [units = S/um].  Electric conductivity.  Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.",
   "type": "object",
   "properties": {
      "type": {
         "title": "Type",
         "default": "JaxMedium",
         "enum": [
            "JaxMedium"
         ],
         "type": "string"
      },
      "name": {
         "title": "Name",
         "description": "Optional unique name for medium.",
         "type": "string"
      },
      "frequency_range": {
         "title": "Frequency Range",
         "description": "Optional range of validity for the medium.",
         "units": [
            "Hz",
            "Hz"
         ],
         "type": "array",
         "minItems": 2,
         "maxItems": 2,
         "items": [
            {
               "type": "number"
            },
            {
               "type": "number"
            }
         ]
      },
      "permittivity": {
         "title": "Permittivity"
      },
      "conductivity": {
         "title": "Conductivity",
         "description": "Electric conductivity.  Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.",
         "default": 0.0,
         "minimum": 0.0,
         "units": "S/um",
         "type": "number"
      }
   },
   "additionalProperties": false
}

attribute permittivity: JaxFloat = 1.0#

Relative permittivity of the medium. May be a jax DeviceArray.

Validated by
  • sanitize_validator_fn

field_contribution(field: Literal['Ex', 'Ey', 'Ez'], grad_data_fwd: tidy3d.components.data.monitor_data.FieldData, grad_data_adj: tidy3d.components.data.monitor_data.FieldData, sim_bounds: Tuple[Tuple[float, float, float], Tuple[float, float, float]], wvl_mat: float) float#

Compute the contribution to the VJP from a given field component.

store_vjp(grad_data_fwd: tidy3d.components.data.monitor_data.FieldData, grad_data_adj: tidy3d.components.data.monitor_data.FieldData, sim_bounds: Tuple[Tuple[float, float, float], Tuple[float, float, float]], wvl_mat: float) tidy3d.plugins.adjoint.components.medium.JaxMedium#

Returns the gradient of the medium parameters given forward and adjoint field data.

to_medium() tidy3d.components.medium.Medium#

Convert JaxMedium instance to Medium