{
  "title": "RectangularAntennaArrayCalculator",
  "public_path": "flex_rf.tidy3d.RectangularAntennaArrayCalculator",
  "lookup_path": "tidy3d.rf.RectangularAntennaArrayCalculator",
  "slug": "flex_rf/tidy3d/RectangularAntennaArrayCalculator",
  "public_url": "/rf/latest/autogenerated/flex_rf/tidy3d/rectangularantennaarraycalculator/",
  "object_kind": "class",
  "introduction": "This class provides methods to calculate the array factor and far-field radiation patterns\nfor rectangular phased antenna arrays. It handles arrays with arbitrary size, spacing,\nphase shifts, and amplitude tapering in x, y, and z directions.",
  "notes": "The array factor is calculated using the standard array factor formula for rectangular arrays,\nwhich accounts for the spatial distribution of antennas and their relative phases and amplitudes.\nThis can be used to analyze beam steering, sidelobe levels, and other array characteristics.\n\nIn addition, this class provides a convenience method to create an antenna array simulation\nfrom a single antenna simulation. This can be used to compute the behavior (near-field and/or\nfar-field) of the full antenna array directly without any approximations. Such a simulation setup\ncan be obtained by directly calling the `make_antenna_array` function, or by accessing the field `.simulation`\nof the `SimulationData` object returned by the `simulation_data_from_array_factor` method.\n\nExample:\n--------\n>>> array_calculator = RectangularAntennaArrayCalculator(\n...    array_size=(3, 4, 5),\n...    spacings=(0.5, 0.5, 0.5),\n...    phase_shifts=(0, 0, 0),\n... )",
  "examples": "",
  "references": "",
  "signature": "class RectangularAntennaArrayCalculator(AbstractAntennaArrayCalculator)",
  "source": {
    "path": "flex/public/tidy3d/tidy3d/plugins/microwave/array_factor.py",
    "url": "",
    "lineno": 723,
    "endlineno": 930
  },
  "bases": [
    "AbstractAntennaArrayCalculator"
  ],
  "parameter_rows": [
    {
      "name": "array_size",
      "annotation": "tuple[PositiveInt, PositiveInt, PositiveInt]",
      "default": "",
      "description": "Number of antennas along x, y, and z directions.",
      "origin": "declared"
    },
    {
      "name": "spacings",
      "annotation": "tuple[NonNegativeFloat, NonNegativeFloat, NonNegativeFloat]",
      "default": "",
      "description": "Center-to-center spacings between antennas along x, y, and z directions.",
      "origin": "declared"
    },
    {
      "name": "phase_shifts",
      "annotation": "tuple[float, float, float]",
      "default": "(0, 0, 0)",
      "description": "Phase-shifts between antennas along x, y, and z directions.",
      "origin": "declared"
    },
    {
      "name": "amp_multipliers",
      "annotation": "tuple[ArrayLike | None, ArrayLike | None, ArrayLike | None]",
      "default": "(None, None, None)",
      "description": "Amplitude multipliers spatially distributed along x, y, and z directions.",
      "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": "taper",
      "annotation": "RectangularTaper | RadialTaper | None",
      "default": "None",
      "description": "Amplitude weighting of array elements to control main lobe width and suppress side lobes.",
      "origin": "inherited"
    }
  ],
  "members": [
    {
      "name": "array_factor",
      "kind": "function",
      "signature": "array_factor(theta: float | ArrayLike, phi: float | ArrayLike, frequency: NonNegativeFloat | ArrayLike, medium: MediumType3D = Undefined)",
      "description": "Compute the array factor for a 3D antenna array."
    }
  ],
  "group": "flex_rf.tidy3d"
}
