tidy3d.plugins.autograd.invdes.symmetrize_diagonal

tidy3d.plugins.autograd.invdes.symmetrize_diagonal#

class symmetrize_diagonal[source]#

Bases:

Symmetrizes the parameter array by averaging it with its transpose. Can symmetrize along the main diagonal or the anti-diagonal.

Parameters:
  • array (NDArray) – The input array to be symmetrized. Must be square.

  • anti (bool, optional) – If False (default), symmetrizes along the main diagonal (top-left to bottom-right). If True, symmetrizes along the anti-diagonal (top-right to bottom-left).

Returns:

The array after applying diagonal symmetrization.

Return type:

NDArray

Example

>>> import autograd.numpy as np
>>> from tidy3d.plugins.autograd.invdes.symmetries import symmetrize_diagonal
>>> arr = np.asarray([
...     [1, 2],
...     [4, 7],
... ])
>>> res = symmetrize_diagonal(arr)
>>> res_anti = symmetrize_diagonal(arr, anti=True)
>>> assert np.all(np.isclose(res, np.asarray([
...     [1, 3],
...     [3, 7]
... ])))
>>> assert np.all(np.isclose(res_anti, np.asarray([
...     [4, 2],
...     [4, 4]
... ])))

Inherited Common Usage