triqs.gfs.backwd_compat.gf_imfreq.GfImFreq.is_gf_hermitian

GfImFreq.is_gf_hermitian(*args, **kw)

Dispatched C++ function(s).

[1] (g: Gf[MeshImFreq, 0], tolerance: float = 1e-12)
  -> bool

[2] (g: Gf[MeshImFreq, 2], tolerance: float = 1e-12)
  -> bool

[3] (g: Gf[MeshImFreq, 4], tolerance: float = 1e-12)
  -> bool

[4] (g: BlockGf[MeshImFreq, 0], tolerance: float = 1e-12)
  -> bool

[5] (g: BlockGf[MeshImFreq, 2], tolerance: float = 1e-12)
  -> bool

[6] (g: BlockGf[MeshImFreq, 4], tolerance: float = 1e-12)
  -> bool

[7] (g: Block2Gf[MeshImFreq, 0], tolerance: float = 1e-12)
  -> bool

[8] (g: Block2Gf[MeshImFreq, 2], tolerance: float = 1e-12)
  -> bool

[9] (g: Block2Gf[MeshImFreq, 4], tolerance: float = 1e-12)
  -> bool

[10] (g: Gf[MeshImTime, 0], tolerance: float = 1e-12)
  -> bool

[11] (g: Gf[MeshImTime, 2], tolerance: float = 1e-12)
  -> bool

[12] (g: Gf[MeshImTime, 4], tolerance: float = 1e-12)
  -> bool

[13] (g: BlockGf[MeshImTime, 0], tolerance: float = 1e-12)
  -> bool

[14] (g: BlockGf[MeshImTime, 2], tolerance: float = 1e-12)
  -> bool

[15] (g: BlockGf[MeshImTime, 4], tolerance: float = 1e-12)
  -> bool

[16] (g: Block2Gf[MeshImTime, 0], tolerance: float = 1e-12)
  -> bool

[17] (g: Block2Gf[MeshImTime, 2], tolerance: float = 1e-12)
  -> bool

[18] (g: Block2Gf[MeshImTime, 4], tolerance: float = 1e-12)
  -> bool

Test whether a Green’s function satisfies the hermitian symmetry up to a tolerance \(\epsilon\).

Depending on the mesh and target rank, one of the following relations is checked:

  • \(G(i\omega) \approx \frac{1}{2} [ G(i\omega) + G^*(-i\omega) ]\)

  • \(G(\tau) \approx \frac{1}{2} [ G(\tau) + G^*(\tau) ]\)

  • \(G_{i,j}(i\omega) \approx \frac{1}{2} [ G_{i,j}(i\omega) + G_{j,i}^*(i\omega) ]\)

  • \(G_{i,j}(\tau) \approx \frac{1}{2} [ G_{i,j}(\tau) + G_{j,i}^*(\tau) ]\)

  • \(G_{i,j,k,l}(i\omega) \approx \frac{1}{2} [ G_{i,j,k,l}(i\omega)] + G_{k,l,i,j}^*(i\omega) ]\)

  • \(G_{i,j,k,l}(\tau) \approx \frac{1}{2} [ G_{i,j,k,l}(\tau) + G_{k,l,i,j}(\tau) ]\)

For block Green’s functions, the check is applied block-wise.

Parameters:
gGf[MeshImFreq, 0], Gf[MeshImFreq, 2], Gf[MeshImFreq, 4], BlockGf[MeshImFreq, 0], BlockGf[MeshImFreq, 2], BlockGf[MeshImFreq, 4], Block2Gf[MeshImFreq, 0], Block2Gf[MeshImFreq, 2], Block2Gf[MeshImFreq, 4], Gf[MeshImTime, 0], Gf[MeshImTime, 2], Gf[MeshImTime, 4], BlockGf[MeshImTime, 0], BlockGf[MeshImTime, 2], BlockGf[MeshImTime, 4], Block2Gf[MeshImTime, 0], Block2Gf[MeshImTime, 2], Block2Gf[MeshImTime, 4]

The Green’s function to check.

tolerancefloat

Tolerance \(\epsilon\) for the check (default \(10^{-12}\)).

Returns:
bool

True if the property holds at every point of the mesh.