哈特里·福克·费曼图

哈特里·福克·费曼图

我正在尝试重现 Hartree-Fock 自能的费曼图,它由两个项(交换和库仑)组成,如下图所示:

在此处输入图片描述

我试过下面的代码,第二项没问题,但第一项还差一半就得到不错的结果了。为什么我不能将点 c 固定在与 ab 相同的轴上,将点 cd 固定在其正交轴上,如上图所示?

有人能建议如何将气泡放在正确的位置并在上面放置箭头吗?欢迎提出任何其他建议。

非常感谢

\documentclass{standalone}
\usepackage{tikz-feynman,contour}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\coordinate (a);
\coordinate[left=1cm of a] (b);
\coordinate[left=1cm of b] (c);
\coordinate[top=1.0cm of c] (d);
\diagram* {
a --[fermion] b[dot];
b --[photon] d;
b --[fermion] c;
};
\end{feynman}
\draw[arc arrow={to pos 0.1 with length 2mm}] (d) arc(0:360:0.5);
\end{tikzpicture}

\begin{tikzpicture}
\begin{feynman}
\coordinate (a);
\coordinate[left=1cm of a] (b);
\coordinate[left=2.0cm of b] (c);
\coordinate[left=4.0cm of a] (d);
\diagram* {
a -- b[dot] -- [photon, half left] c[dot] -- d,
b -- [fermion] c };
\end{feynman}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

基于塞巴斯蒂亚诺的回答这个答案,我可以得到更好但不完整的结果。 在此处输入图片描述 我不得不:

  • 使用 lulatex 进行编译
  • feynman从内部移除环境tikzpicture
  • 我定义了一种photon1/.style={decorate, decoration={snake}, draw=black}风格\tikzset(我试图修改波幅=0.3mm 和波数=10,但我无法使这些等于风格photon)。

我还需要:

  • 使两个光子看起来相同
  • 旋转气泡并将其与光子边缘的顶部对齐(我现在添加了另一个点e,可能只需使用正确的选项即可修复它d
  • 在气泡中添加两个箭头

下面是代码的更新版本。

谢谢

\documentclass{standalone}

\usepackage{tikz} 
\usetikzlibrary{shapes,arrows,positioning,automata,backgrounds,calc,er,patterns}
\usepackage{tikz-feynman}
\tikzfeynmanset{compat=1.1.0}

% adapted from https://tex.stackexchange.com/a/160358/21344; changed photon style
\tikzset{
  fermion/.style={draw=black, postaction={decorate},decoration={markings,mark=at position .55 with {\arrow{Latex}}}},
  vertex/.style={draw,shape=circle,fill=black,minimum size=2pt,inner sep=0pt},
  photon/.style={wavy semicircle,wave amplitude=0.3mm,wave count=10},
  photon1/.style={decorate, decoration={snake}, draw=black}
}

% adapted from https://tex.stackexchange.com/a/89003/21344; swapped atan args
\newif\ifmirrorsemicircle
\tikzset{
    wave amplitude/.initial=0.2cm,
    wave count/.initial=8,
    mirror semicircle/.is if=mirrorsemicircle,
    mirror semicircle=false,
    wavy semicircle/.style={
        to path={
            let \p1 = (\tikztostart),
            \p2 = (\tikztotarget),
            \n1 = {veclen(\y2-\y1,\x2-\x1)},
            \n2 = {atan2(\x2-\x1,\y2-\y1))} in
            plot [
                smooth,
                samples=(\pgfkeysvalueof{/tikz/wave count}+0.5)*8+1, % Calculate the number of samples needed, so the samples are in sync with the wave and fall on the extrema
                domain=0:1,
                shift={($(\p1)!0.5!(\p2)$)}
            ] ({ % Polar coordinates: Angle...
                (\x*180-\n2 + 180 + \ifmirrorsemicircle 1 \else -1 \fi * 90%
            }:{ % ... and radius
                (%
                    \n1/2+\pgfkeysvalueof{/tikz/wave amplitude} * %
                    sin(
                        \x * 360 * (\pgfkeysvalueof{/tikz/wave count} + 0.5%
                    )%
                )%
            })
        } (\tikztotarget)
    }
}


\begin{document}

\begin{tikzpicture}
\coordinate (i);
\coordinate[vertex, right=of i] (v1);
\coordinate[vertex, right=of v1] (v2);
\coordinate[right=of v2] (o);
\draw (i) -- (v1);
\draw[fermion] (v1) -- (v2);
\draw[photon] (v1) to (v2);
\draw (v2) -- (o);
\end{tikzpicture}
+
\begin{tikzpicture}
\coordinate (a);
\coordinate[vertex, right=of a] (b);
\coordinate[vertex, right=of b] (c);
\coordinate[vertex, above=of b] (d);
\coordinate[vertex, above=of d] (e);
\draw [fermion] (a) -- (b);
\draw [fermion] (b) -- (c);
\draw [photon1] (b) to (d);
\draw [arc arrow={to pos 0.0 with length 1mm}] (e) arc(0:360:0.4);
\end{tikzpicture}

\end{document}

答案2

这是半个答案:你的原始绘图是用feynMF包。 feynMF使用METAFONT(或METAPOST)。

这里您可以看到第 30 页的示例,其中有带箭头的相同循环。这是 1996 年的旧包装。

在此处输入图片描述

现在我建议看一下这个链接:Tikz,装饰品或者排版费曼图的包(“feynmp”和“tikz”的效率)其中它用于费曼图: TikZ-Feynman包。

附录:如果你喜欢用 flash 来绘制图像,可以使用费恩游戏Java 中绘制费曼图的工具,仅适用于 Linux 和 MacOS。

相关内容