« home

QFT Propagators

physicsquantum field theoryMatsubaracausalityGreen's functionFeynmancetztikz

QFT Propagators

  Download

PNGPDFSVG

  Code

  LaTeX

qft-propagators.tex (33 lines)

\documentclass[tikz]{standalone}

\usepackage{mathtools}

\let\Im\relax
\DeclareMathOperator{\Im}{Im}
\let\Re\relax
\DeclareMathOperator{\Re}{Re}

\usetikzlibrary{decorations.pathmorphing}

\def\rerange{5}
\def\imrange{4}

\begin{document}
\begin{tikzpicture}[thick]

  % Axes
  \draw[->] [decorate, decoration={zigzag, segment length=4, amplitude=1, post=lineto, post length=2}] (-\rerange, 0) -- (\rerange, 0) node[below left] {$\Re(\omega)$};
  \draw[->] (0, -\imrange+1) -- (0, \imrange-1) node[below right] {$\Im(\omega)$};

  \foreach \n in {-\imrange, ..., \imrange}{%
      \node[circle, fill, inner sep=0, minimum size=5] (omega\n) at (0, 2/3*\n) {};}
  \node[left=2, align=left] (mf) at (omega3) {Matsubara\\frequencies};

  % Propagators
  \draw[red, dashed] (-\rerange, -1) -- (\rerange, -1) node[below, very near start] {advanced};
  \draw[blue, dashed] (-\rerange, 1) -- (\rerange, 1) node[above, very near start] {retarded};
  \draw[orange, dashed] (-\rerange, -1) -- (\rerange, 1) node[below right, very near end] {Feynman};

\end{tikzpicture}
\end{document}

  Typst

qft-propagators.typ (101 lines)

#import "@preview/cetz:0.3.2": canvas, draw, decorations
#import draw: line, content, circle

#set page(width: auto, height: auto, margin: 5pt)

#let re-range = 5
#let im-range = 4
#let arrow-style = (end: "stealth", fill: black, scale: 0.5)

#canvas({
  // Axes
  // Real axis with zigzag decoration
  // TODO: add arrow at the end, requireshttps://github.com/cetz-package/cetz/issues/446
  decorations.zigzag(
    line(
      (-re-range, 0),
      (re-range, 0),
    ),
    amplitude: 0.1,
    segment-length: 0.2,
    name: "x-axis",
    mark: arrow-style,
  )
  content(
    "x-axis.end",
    $"Re"(omega)$,
    anchor: "north-east",
    padding: (top: 5pt),
  )

  // Imaginary axis
  line(
    (0, -im-range + 1),
    (0, im-range - 1),
    mark: arrow-style,
    name: "y-axis",
  )
  content(
    "y-axis.end",
    $"Im"(omega)$,
    anchor: "north-west",
    padding: (left: 5pt),
  )

  // Matsubara frequencies
  for n in range(-im-range, im-range + 1) {
    circle(
      (0, 2 / 3 * n),
      radius: 0.05,
      fill: black,
      name: "omega" + str(n),
    )
  }
  content(
    (-1.1, 2),
    align(right)[Matsubara\ frequencies],
  )

  // Propagators
  // Advanced propagator (red)
  line(
    (-re-range, -1),
    (re-range, -1),
    stroke: (paint: red, dash: "dashed"),
    name: "advanced",
  )
  content(
    (rel: (0, -0.4), to: "advanced.start"),
    text(red)[advanced],
    anchor: "south-west",
    padding: (left: 5pt),
  )

  // Retarded propagator (blue)
  line(
    (-re-range, 1),
    (re-range, 1),
    stroke: (paint: blue, dash: "dashed"),
    name: "retarded",
  )
  content(
    "retarded.start",
    text(blue)[retarded],
    anchor: "south-west",
    padding: 2pt,
  )

  // Feynman propagator (orange)
  line(
    (-re-range, -1),
    (re-range, 1),
    stroke: (paint: orange, dash: "dashed"),
    name: "feynman",
  )
  content(
    (rel: (-0.7, -0.55), to: "feynman.end"),
    text(orange)[Feynman],
    padding: 2pt,
  )
})