improve cmp

This commit is contained in:
matthias@quintern.xyz 2025-02-23 09:54:17 +01:00
parent 6944f7160b
commit 16aacd72d8
24 changed files with 656 additions and 369 deletions

View File

@ -4,6 +4,8 @@ from scipy.constants import gas_constant, Avogadro, elementary_charge
Faraday = Avogadro * elementary_charge Faraday = Avogadro * elementary_charge
# BUTLER VOLMER / TAFEL
@np.vectorize @np.vectorize
def fbutler_volmer_anode(ac, z, eta, T): def fbutler_volmer_anode(ac, z, eta, T):
return np.exp((1-ac)*z*Faraday*eta/(gas_constant*T)) return np.exp((1-ac)*z*Faraday*eta/(gas_constant*T))
@ -73,8 +75,119 @@ def tafel():
ax.grid() ax.grid()
return fig return fig
# NYQUIST
@np.vectorize
def fZ_ohm(R, omega):
return R
@np.vectorize
def fZ_cap(C, omega):
return 1/(1j*omega*C)
@np.vectorize
def fZ_ind(L, omega):
return (1j*omega*L)
def nyquist():
fig, ax = plt.subplots(figsize=(full/2, full/3))
split_z = lambda Z: (Z.real, -Z.imag)
ax.grid()
ax.set_xlabel("$\\text{Re}(Z)$ [\\si{\\ohm}]")
ax.set_ylabel("$-\\text{Im}(Z)$ [\\si{\\ohm}]")
# ax.scatter(*split_z(Z_series), label="series")
R1 = 20
R2 = 5
RS = 7.5
C1 = 1e-4
C2 = 1e-6
ws1 = np.power(10, np.linspace(1, 8, 1000))
Z_ohm1 = fZ_ohm(R1, ws1)
Z_ohm2 = fZ_ohm(R2, ws1)
Z_ohmS = fZ_ohm(RS, ws1)
Z_cap1 = fZ_cap(C1, ws1)
Z_cap2 = fZ_cap(C2, ws1)
Z_parallel1 = 1/(1/Z_ohm1 + 1/Z_cap1)
Z_parallel2 = 1/(1/Z_ohm2 + 1/Z_cap2)
Z_cell = Z_parallel1 + Z_parallel2 + Z_ohmS
ax.scatter(*split_z(Z_parallel1), label="Parallel $C_1,R_1$")
ax.scatter(*split_z(Z_parallel2), label="Parallel $C_2,R_2$")
ax.scatter(*split_z(Z_cell), label="P1 + $R_3$ + P2")
ax.scatter(*split_z(Z_cap1), label=f"$C_1=\\SI{{{C1:.0e}}}{{\\farad}}$")
ax.scatter(*split_z(Z_ohm1), label=f"$R_1 = \\SI{{{R1}}}{{\\ohm}}$")
# wmax1 = 1/(R1 * C1)
# ZatWmax1 = Z_parallel1[np.argmin(ws1 - wmax1)]
# print(ws1[0], ws1[-1])
# print(wmax1, ZatWmax1)
# ax.scatter(*split_z(ZatWmax1), color="red")
# ax.scatter(*split_z(Z_cell1), label="cell")
# ax.scatter(*split_z(Z_ohm2), label="ohmic")
# ax.scatter(*split_z(Z_cell2), label="cell")
ax.axis('equal')
ax.set_ylim(0,R1*1.1)
ax.legend()
return fig
def fZ_tlm(Rel, Rion, Rct, Cct, ws, N):
Zion = fZ_ohm(Rion, ws)
Zel = fZ_ohm(Rel, ws)
Zct = 1/(1/fZ_ohm(Rct, ws) + 1/fZ_cap(Cct, ws))
Z = Zct
for _ in range(N):
Z = Zion + 1/(1/Zct + 1/Z)
Z += Zel
return Z
def nyquist_tlm():
fig, ax = plt.subplots(figsize=(full/2, full/4))
split_z = lambda Z: (Z.real, -Z.imag)
ax.grid()
ax.set_xlabel("$\\text{Re}(Z)$ [\\si{\\ohm}]")
ax.set_ylabel("$-\\text{Im}(Z)$ [\\si{\\ohm}]")
Rct1 = 300
Rct2 = 100
Rion = 10
ws = np.power(10, np.linspace(1e-6, 5, 1000))
Z1 = fZ_tlm(0, Rion, Rct1, 1e-4, ws, 100)
Z2 = fZ_tlm(0, Rion, Rct2, 1e-4, ws, 100)
ax.scatter(*split_z(Z1), label=f"$R_\\text{{ct}} = \\SI{{{Rct1}}}{{\\ohm}}$", marker=".")
ax.scatter(*split_z(Z2), label=f"$R_\\text{{ct}} = \\SI{{{Rct2}}}{{\\ohm}}$", marker=".")
ax.axis('equal')
# ax.set_ylim(0,R1*1.1)
ax.legend()
return fig
def fkohlrausch(L0, K, c):
return L0 - K*np.sqrt(c)
def kohlrausch():
fig, ax = plt.subplots(figsize=(full/4, full/4))
ax.grid()
ax.set_xlabel("$c_\\text{salt}$")
ax.set_ylabel("$\\Lambda_\\text{M}$")
L0 = 10
K1 = 1
K2 = 2
cs = np.linspace(0, 10)
L1 = fkohlrausch(L0, K1, cs)
L2 = fkohlrausch(L0, K2, cs)
ax.plot(cs, L1, label=f"$K={K1}$")
ax.plot(cs, L2, label=f"$K={K2}$")
ax.legend()
return fig
if __name__ == '__main__': if __name__ == '__main__':
export(butler_volmer(), "ch_butler_volmer") export(butler_volmer(), "ch_butler_volmer")
export(tafel(), "ch_tafel") export(tafel(), "ch_tafel")
export(nyquist(), "ch_nyquist")
export(nyquist_tlm(), "ch_nyquist_tlm")
export(kohlrausch(), "ch_kohlrausch")

View File

@ -24,12 +24,12 @@ import util.colorschemes as cs
from util.gen_tex_colorscheme import generate_latex_colorscheme from util.gen_tex_colorscheme import generate_latex_colorscheme
# SET THE COLORSCHEME # SET THE COLORSCHEME
# hard white and black # hard white and black
# cs.p_gruvbox["fg0"] = "#000000" cs.p_gruvbox["fg0-hard"] = "#000000"
# cs.p_gruvbox["bg0"] = "#ffffff" cs.p_gruvbox["bg0-hard"] = "#ffffff"
# COLORSCHEME = cs.gruvbox_light() COLORSCHEME = cs.gruvbox_light()
# COLORSCHEME = cs.gruvbox_dark() # COLORSCHEME = cs.gruvbox_dark()
# cs.p_tum["fg0"] = cs.p_tum["alt-blue"] # cs.p_tum["fg0"] = cs.p_tum["alt-blue"]
COLORSCHEME = cs.tum() # COLORSCHEME = cs.tum()
# COLORSCHEME = cs.legacy() # COLORSCHEME = cs.legacy()
tex_src_path = "../src/" tex_src_path = "../src/"

View File

@ -152,6 +152,7 @@ def tum():
for n,c in p_tum.items(): for n,c in p_tum.items():
n2 = n.replace("light", "bg").replace("dark", "fg") n2 = n.replace("light", "bg").replace("dark", "fg")
TUM[n2] = c TUM[n2] = c
TUM["fg-blue"] = p_tum["alt-blue"] # dark blue is too black
return TUM return TUM
# #

View File

@ -64,33 +64,33 @@
\pgfmathsetmacro{\H}{3} \pgfmathsetmacro{\H}{3}
\pgfmathsetmacro{\elW}{\W/20} \pgfmathsetmacro{\elW}{\W/20}
\pgfmathsetmacro{\CEx}{1/6*\W} \pgfmathsetmacro{\REx}{1/6*\W}
\pgfmathsetmacro{\WEx}{3/6*\W} \pgfmathsetmacro{\WEx}{3/6*\W}
\pgfmathsetmacro{\REx}{5/6*\W} \pgfmathsetmacro{\CEx}{5/6*\W}
\fill[bg-blue] (0,0) rectangle (\W, \H/2); \fill[bg-blue] (0,0) rectangle (\W, \H/2);
\draw[ultra thick] (0,0) rectangle (\W,\H); \draw[ultra thick] (0,0) rectangle (\W,\H);
% Electrodes % Electrodes
\draw[thick, fill=bg-gray] (\CEx-\elW,\H/5) rectangle (\CEx+\elW,\H); \draw[thick, fill=bg-gray] (\REx-\elW,\H/5) rectangle (\REx+\elW,\H);
\draw[thick, fill=bg-purple] (\WEx-\elW,\H/5) rectangle (\WEx+\elW,\H); \draw[thick, fill=bg-purple] (\WEx-\elW,\H/5) rectangle (\WEx+\elW,\H);
\draw[thick, fill=bg-yellow] (\REx-\elW,\H/5) rectangle (\REx+\elW,\H); \draw[thick, fill=bg-yellow] (\CEx-\elW,\H/5) rectangle (\CEx+\elW,\H);
\node at (\CEx,3*\H/5) {C};
\node at (\WEx,3*\H/5) {W};
\node at (\REx,3*\H/5) {R}; \node at (\REx,3*\H/5) {R};
\node at (\WEx,3*\H/5) {W};
\node at (\CEx,3*\H/5) {C};
% potentiostat % potentiostat
\pgfmathsetmacro{\potH}{\H+0.5+2} \pgfmathsetmacro{\potH}{\H+0.5+2}
\pgfmathsetmacro{\potM}{\H+0.5+1} \pgfmathsetmacro{\potM}{\H+0.5+1}
\draw[thick] (0,\H+0.5) rectangle (\W,\potH); \draw[thick] (0,\H+0.5) rectangle (\W,\potH);
% Wires % Wires
\draw (\CEx,\H) -- (\CEx,\potM) to[voltmeter,-o] (\WEx,\potM) to[european voltage source] (\WEx+1/6*\W,\potM) to[ammeter] (\REx,\potM); \draw (\REx,\H) -- (\REx,\potM) to[voltmeter,-o] (\WEx,\potM) to[european voltage source] (\WEx+1/6*\W,\potM) to[ammeter] (\CEx,\potM);
\draw (\WEx,\H) -- (\WEx,\H+1.5); \draw (\WEx,\H) -- (\WEx,\H+1.5);
\draw (\REx,\H) -- (\REx,\H+1.5); \draw (\CEx,\H) -- (\CEx,\H+1.5);
% labels % labels
\node[anchor=west, align=left] at (\W+0.2, 1*\H/4) {{\color{bg-gray} \blacksquare} \GT{counter_electrode}}; \node[anchor=west, align=left] at (\W+0.2, 1*\H/4) {{\color{bg-gray} \blacksquare} \GT{reference_electrode}};
\node[anchor=west, align=left] at (\W+0.2, 2*\H/4) {{\color{bg-purple}\blacksquare} \GT{working_electrode}}; \node[anchor=west, align=left] at (\W+0.2, 2*\H/4) {{\color{bg-purple}\blacksquare} \GT{working_electrode}};
\node[anchor=west, align=left] at (\W+0.2, 3*\H/4) {{\color{bg-yellow}\blacksquare} \GT{reference_electrode}}; \node[anchor=west, align=left] at (\W+0.2, 3*\H/4) {{\color{bg-yellow}\blacksquare} \GT{counter_electrode}};
\node[anchor=west, align=left] at (\W+0.2, \potM) {\GT{potentiostat}}; \node[anchor=west, align=left] at (\W+0.2, \potM) {\GT{potentiostat}};
\end{tikzpicture} \end{tikzpicture}
\end{formula} \end{formula}
@ -189,19 +189,6 @@
\eq{ i_\text{conv} = \sum_i -z_i F \, c_i \, v_i^\text{flow} } \eq{ i_\text{conv} = \sum_i -z_i F \, c_i \, v_i^\text{flow} }
\end{formula} \end{formula}
\begin{formula}{ionic_conductivity}
\desc{Ionic conductivity}{}{\ConstRef{faraday}, $z_i$, $c_i$, $\mu_i$ charge number, \qtyRef{concentration} and \qtyRef{mobility} of the positive (+) and negative (-) ions}
\desc[german]{Ionische Leitfähigkeit}{}{\ConstRef{faraday}, $z_i$, $c_i$, $\mu_i$ Ladungszahl, \qtyRef{concentration} und \qtyRef{mobility} der positiv (+) und negativ geladenen Ionen}
\quantity{\kappa}{\per\ohm\cm=\siemens\per\cm}{}
\eq{\kappa = F^2 \left(z_+^2 \, c_+ \, \mu_+ + z_-^2 \, c_- \, \mu_-\right)}
\end{formula}
\begin{formula}{ionic_resistance}
\desc{Ohmic resistance of ionic current flow}{}{$L$ \qtyRef{length}, $A$ \qtyRef{area}, \QtyRef{ionic_conductivity}}
\desc[german]{Ohmscher Widerstand für Ionen-Strom}{}{}
\eq{R_\Omega = \frac{L}{A\,\kappa}}
\end{formula}
\begin{formula}{ionic_mobility} \begin{formula}{ionic_mobility}
\desc{Ionic mobility}{}{$v_\pm$ steady state drift \qtyRef{velocity}, $\phi$ \qtyRef{electric_scalar_potential}, $z$ \qtyRef{charge_number}, \ConstRef{faraday}, \ConstRef{charge}, \QtyRef{viscosity}, $r_\pm$ ion radius} \desc{Ionic mobility}{}{$v_\pm$ steady state drift \qtyRef{velocity}, $\phi$ \qtyRef{electric_scalar_potential}, $z$ \qtyRef{charge_number}, \ConstRef{faraday}, \ConstRef{charge}, \QtyRef{viscosity}, $r_\pm$ ion radius}
\desc[german]{Ionische Moblilität}{}{} \desc[german]{Ionische Moblilität}{}{}
@ -215,6 +202,20 @@
\eq{F_\txR = 6\pi\,r \eta v} \eq{F_\txR = 6\pi\,r \eta v}
\end{formula} \end{formula}
\begin{formula}{ionic_conductivity}
\desc{Ionic conductivity}{}{\ConstRef{faraday}, $z_i$, $c_i$, $u_i$ charge number, \qtyRef{concentration} and \qtyRef{ionic_mobility} of the positive (+) and negative (-) ions}
\desc[german]{Ionische Leitfähigkeit}{}{\ConstRef{faraday}, $z_i$, $c_i$, $u_i$ Ladungszahl, \qtyRef{concentration} und \qtyRef{ionic_mobility} der positiv (+) und negativ geladenen Ionen}
\quantity{\kappa}{\per\ohm\cm=\siemens\per\cm}{}
\eq{\kappa = F^2 \left(z_+^2 \, c_+ \, u_+ + z_-^2 \, c_- \, u_-\right)}
\end{formula}
\begin{formula}{ionic_resistance}
\desc{Ohmic resistance of ionic current flow}{}{$L$ \qtyRef{length}, $A$ \qtyRef{area}, \QtyRef{ionic_conductivity}}
\desc[german]{Ohmscher Widerstand für Ionen-Strom}{}{}
\eq{R_\Omega = \frac{L}{A\,\kappa}}
\end{formula}
\begin{formula}{transference} \begin{formula}{transference}
\desc{Transference number}{Ion transport number \\Fraction of the current carried by positive / negative ions}{$i_{+/-}$ current through positive/negative charges} \desc{Transference number}{Ion transport number \\Fraction of the current carried by positive / negative ions}{$i_{+/-}$ current through positive/negative charges}
\desc[german]{Überführungszahl}{Anteil der positiv / negativ geladenen Ionen am Gesamtstrom}{$i_{+/-}$ Strom durch positive / negative Ladungn} \desc[german]{Überführungszahl}{Anteil der positiv / negativ geladenen Ionen am Gesamtstrom}{$i_{+/-}$ Strom durch positive / negative Ladungn}
@ -231,29 +232,30 @@
\end{formula} \end{formula}
\begin{formula}{kohlrausch_law} \begin{formula}{kohlrausch_law}
\desc{Kohlrausch's law}{}{$\Lambda_\txM^0$ \qtyRef{molar_conductivity} at infinite dilution, $c_\text{salt}$ \gt{csalt}, $K$ \GT{constant}} \desc{Kohlrausch's law}{For strong electrolytes}{$\Lambda_\txM^0$ \qtyRef{molar_conductivity} at infinite dilution, $c_\text{salt}$ \gt{csalt}, $K$ \GT{constant}}
\desc[german]{}{}{$\Lambda_\txM^0$ \qtyRef{molar_conductivity} bei unendlicher Verdünnung, $\text{salt}$ \gt{csalt} $K$ \GT{constant}} \desc[german]{}{}{$\Lambda_\txM^0$ \qtyRef{molar_conductivity} bei unendlicher Verdünnung, $\text{salt}$ \gt{csalt},$K$ \GT{constant}}
\eq{\Lambda_\txM = \Lambda_\txM^0 - K \sqrt{c_\text{salt}}} \eq{\Lambda_\txM = \Lambda_\txM^0 - K \sqrt{c_\text{salt}}}
\fig{img/ch_kohlrausch.pdf}
\end{formula} \end{formula}
% Electrolyte conductivity % Electrolyte conductivity
\begin{formula}{molality} \begin{formula}{molality}
\desc{Molality}{}{\QtyRef{amount} of the solute, \QtyRef{mass} of the solvent} \desc{Molality}{Amount per mass}{\QtyRef{amount} of the solute, \QtyRef{mass} of the solvent}
\desc[german]{Molalität}{}{\QtyRef{amount} des gelösten Stoffs, \QtyRef{mass} des Lösungsmittels} \desc[german]{Molalität}{Stoffmenge pro Masse}{\QtyRef{amount} des gelösten Stoffs, \QtyRef{mass} des Lösungsmittels}
\quantity{b}{\mol\per\kg}{} \quantity{b}{\mol\per\kg}{}
\eq{b = \frac{n}{m}} \eq{b = \frac{n}{m}}
\end{formula} \end{formula}
\begin{formula}{molarity} \begin{formula}{molarity}
\desc{Molarity}{\GT{see} \qtyRef{concentration}}{\QtyRef{amount} of the solute, \QtyRef{volume} of the solvent} \desc{Molarity}{Amount per volume\\\qtyRef{concentration}}{\QtyRef{amount} of the solute, \QtyRef{volume} of the solvent}
\desc[german]{Molarität}{}{\QtyRef{amount} des gelösten Stoffs, \QtyRef{volume} des Lösungsmittels} \desc[german]{Molarität}{Stoffmenge pro Volumen\\\qtyRef{concentration}}{\QtyRef{amount} des gelösten Stoffs, \QtyRef{volume} des Lösungsmittels}
\quantity{c}{\mol\per\litre}{} \quantity{c}{\mol\per\litre}{}
\eq{c = \frac{n}{V}} \eq{c = \frac{n}{V}}
\end{formula} \end{formula}
\begin{formula}{ionic_strength} \begin{formula}{ionic_strength}
\desc{Ionic strength}{Measure of the electric field in a solution through solved ions}{\QtyRef{molality}, \QtyRef{molarity}, $z$ \qtyRef{charge_number}} \desc{Ionic strength}{Measure of the electric field in a solution through solved ions}{\QtyRef{molality}, \QtyRef{molarity}, $z$ \qtyRef{charge_number}}
\desc[german]{Ionenstärke}{Maß eienr Lösung für die elektrische Feldstärke durch gelöste Ionen}{} \desc[german]{Ionenstärke}{Maß einer Lösung für die elektrische Feldstärke durch gelöste Ionen}{}
\quantity{I}{\mol\per\kg;\mol\per\litre}{} \quantity{I}{\mol\per\kg;\mol\per\litre}{}
\eq{I_b &= \frac{1}{2} \sum_i b_i z_i^2 \\ I_c &= \frac{1}{2} \sum_i c_i z_i^2} \eq{I_b &= \frac{1}{2} \sum_i b_i z_i^2 \\ I_c &= \frac{1}{2} \sum_i c_i z_i^2}
\end{formula} \end{formula}
@ -265,10 +267,11 @@
\end{formula} \end{formula}
\begin{formula}{mean_ionic_activity} \begin{formula}{mean_ionic_activity}
\desc{Mean ionic activity coefficient}{Accounts for decreased reactivity because ions must divest themselves of their ion cloud before reacting}{} \desc{Mean ionic activity coefficient}{Accounts for decreased reactivity because ions must divest themselves of their ion cloud before reacting}{\QtyRef{activity}, $m_i$ \qtyRef{molality}, $m_0 = \SI{1}{\mol\per\kg}$}
\desc[german]{Mittlerer ionischer Aktivitätskoeffizient}{Berücksichtigt dass Ionen sich erst von ihrer Ionenwolke lösen müssen, bevor sie reagieren können}{} \desc[german]{Mittlerer ionischer Aktivitätskoeffizient}{Berücksichtigt dass Ionen sich erst von ihrer Ionenwolke lösen müssen, bevor sie reagieren können}{}
\quantity{\gamma}{}{s} \quantity{\gamma}{}{s}
\eq{\gamma_\pm = \left(\gamma_+^{\nu_+} \, \gamma_-^{\nu_-}\right)^{\frac{1}{\nu_+ + \nu_-}}} \eq{\gamma_\pm = \left(\gamma_+^{\nu_+} \, \gamma_-^{\nu_-}\right)^{\frac{1}{\nu_+ + \nu_-}}}
\eq{a_i \equiv \gamma_i \frac{m_i}{m^0}}
\end{formula} \end{formula}
\begin{formula}{debye_hueckel_law} \begin{formula}{debye_hueckel_law}
@ -324,40 +327,94 @@
\eq{\eta_\text{diff} = \frac{RT}{nF} \Ln{\frac{j_\infty}{j_\infty - j_\text{meas}}}} \eq{\eta_\text{diff} = \frac{RT}{nF} \Ln{\frac{j_\infty}{j_\infty - j_\text{meas}}}}
\end{formula} \end{formula}
% 1: ion radius
% 2: ion color
% 3: ion label
% 4: N solvents, leave empty for none
% 5: solvent radius 6: solvent color
% 7:position
\newcommand{\drawIon}[7]{%
\fill[#2] (#7) circle[radius=#1] node[fg0] {#3};
\ifstrempty{#4}{}{
\foreach \j in {1,...,#4} {
\pgfmathsetmacro{\angle}{\j * 360/#4}
\fill[#6] (#7) ++(\angle:#1 + #5) circle[radius=#5];
}
}
}
\newcommand{\drawAnion}[1]{\drawIon{\Ranion}{bg-blue}{-}{}{}{}{#1}}
\newcommand{\drawCation}[1]{\drawIon{\Rcation}{bg-red}{+}{}{}{}{#1}}
\newcommand{\drawAnionSolved}[1]{\drawIon{\Ranion}{bg-blue}{-}{6}{\Rsolvent}{fg-blue!50!bg2}{#1}}
\Eng[electrode]{Electrode}
\Ger[electrode]{Elektrode}
\Eng[nernst_layer]{Nernst layer}
\Ger[nernst_layer]{Nernst-Schicht}
\Eng[electrolyte]{Electrolyte}
\Ger[electrolyte]{Elektrolyt}
\Eng[c_surface]{surface \qtyRef{concentration}}
\Eng[c_bulk]{bulk \qtyRef{concentration}}
\Ger[c_surface]{Oberflächen-\qtyRef{concentration}}
\Ger[c_bulk]{Bulk-\qtyRef{concentration}}
\begin{formula}{diffusion_layer} \begin{formula}{diffusion_layer}
\desc{Cell layers}{}{} \desc{Cell layers}{}{IHP/OHP inner/outer Helmholtz-plane, $c^0$ \GT{c_bulk}, $c^\txS$ \GT{c_surface}}
\desc[german]{Zellschichten}{}{} \desc[german]{Zellschichten}{}{IHP/OHP innere/äußere Helmholtzschicht, $c^0$ \GT{c_bulk}, $c^\txS$ \GT{c_surface}}
\begin{tikzpicture} \begin{tikzpicture}
\tikzset{ \tikzset{
label/.style={color=fg1,anchor=center,rotate=90}, label/.style={color=fg1,anchor=center,rotate=90},
} }
\pgfmathsetmacro{\Ranion}{0.15}
\pgfmathsetmacro{\Rcation}{0.2}
\pgfmathsetmacro{\Rsolvent}{0.06}
\pgfmathsetmacro{\tkW}{8} % Total width \pgfmathsetmacro{\tkW}{8} % Total width
\pgfmathsetmacro{\tkH}{4} % Total height \pgfmathsetmacro{\tkH}{4} % Total height
\pgfmathsetmacro{\edW}{1} % electrode width \pgfmathsetmacro{\edW}{1} % electrode width
\pgfmathsetmacro{\hhW}{1} % helmholtz width \pgfmathsetmacro{\hhW}{4*\Rsolvent+2*\Ranion} % helmholtz width
\pgfmathsetmacro{\ndW}{2} % nernst diffusion with \pgfmathsetmacro{\ndW}{3} % nernst diffusion with
\pgfmathsetmacro{\eyW}{\tkW-\edW-\hhW-\ndW} % electrolyte width \pgfmathsetmacro{\eyW}{\tkW-\edW-\hhW-\ndW} % electrolyte width
\pgfmathsetmacro{\edX}{0} % electrode width \pgfmathsetmacro{\edX}{0} % electrode width
\pgfmathsetmacro{\hhX}{\edW} % helmholtz width \pgfmathsetmacro{\hhX}{\edW} % helmholtz width
\pgfmathsetmacro{\ndX}{\edW+\hhW} % nernst diffusion with \pgfmathsetmacro{\ndX}{\edW+\hhW} % nernst diffusion with
\pgfmathsetmacro{\eyX}{\tkW-\eyW} % electrolyte width \pgfmathsetmacro{\eyX}{\tkW-\eyW} % electrolyte width
\path[fill=bg-orange] (\edX,0) rectangle (\edX+\edW,\tkH); \node[label] at (\edX+\edW/2,\tkH/2) {\GT{electrode}}; \path[fill=bg-orange] (\edX,0) rectangle (\edX+\edW,\tkH);
\path[fill=bg-green!90!bg0] (\hhX,0) rectangle (\hhX+\hhW,\tkH); \node[label] at (\hhX+\hhW/2,\tkH/2) {\GT{helmholtz_layer}}; \path[fill=bg-green!90!bg0] (\hhX,0) rectangle (\hhX+\hhW,\tkH);
\path[fill=bg-green!60!bg0] (\ndX,0) rectangle (\ndX+\ndW,\tkH); \node[label] at (\ndX+\ndW/2,\tkH/2) {\GT{nernst_layer}}; \path[fill=bg-green!60!bg0] (\ndX,0) rectangle (\ndX+\ndW,\tkH);
\path[fill=bg-green!20!bg0] (\eyX,0) rectangle (\eyX+\eyW,\tkH); \node[label] at (\eyX+\eyW/2,\tkH/2) {\GT{electrolyte}}; \path[fill=bg-green!20!bg0] (\eyX,0) rectangle (\eyX+\eyW,\tkH);
\draw (\hhX,2) -- (\ndX,3) -- (\tkW,3); \draw (\ndX,2) -- (\eyX,3) -- (\tkW,3);
% axes % axes
\draw[->] (0,0) -- (\tkW+0.2,0) node[anchor=north] {$x$}; \draw[->] (0,0) -- (\tkW+0.2,0) node[anchor=north] {$x$};
\draw[->] (0,0) -- (0,\tkH+0.2) node[anchor=east] {$c$}; \draw[->] (0,0) -- (0,\tkH+0.2) node[anchor=east] {$c$};
\tkYTick{2}{$c^\txS$}; \tkYTick{2}{$c^\txS$};
\tkYTick{3}{$c^0$}; \tkYTick{3}{$c^0$};
\foreach \i in {1,...,5} {
\drawCation{\edW-\Ranion, \tkH * \i /6}
\drawAnionSolved{\edW+\Rcation+2*\Rsolvent, \tkH * \i /6}
}
\drawCation{\ndX+\ndW * 0.1, \tkH * 2/10}
\drawCation{\ndX+\ndW * 0.15, \tkH * 4/10}
\drawCation{\ndX+\ndW * 0.1, \tkH * 6/10}
\drawCation{\ndX+\ndW * 0.1, \tkH * 9/10}
\drawAnion{ \ndX+\ndW * 0.2, \tkH * 7/10}
\drawAnion{ \ndX+\ndW * 0.4, \tkH * 4/10}
\drawAnion{ \ndX+\ndW * 0.3, \tkH * 3/10}
\drawAnion{ \ndX+\ndW * 0.5, \tkH * 6/10}
\drawAnion{ \ndX+\ndW * 0.8, \tkH * 3/10}
\drawAnion{ \ndX+\ndW * 0.3, \tkH * 1/10}
\drawAnion{ \ndX+\ndW * 0.4, \tkH * 9/10}
\drawAnion{ \ndX+\ndW * 0.6, \tkH * 7/10}
\drawCation{\ndX+\ndW * 0.3, \tkH * 3/10}
\drawCation{\ndX+\ndW * 0.6, \tkH * 8/10}
\draw (\edX+\Rcation, 0) -- ++(0, -0.5) node[anchor=west,rotate=-45] {\GT{electrode}};
\draw (\edX+\edW-\Rcation, 0) -- ++(0, -0.5) node[anchor=west,rotate=-45] {{IHP}};
\draw (\hhX+\hhW/2, 0) -- ++(0, -0.5) node[anchor=west,rotate=-45] {{OHP}};
\draw (\ndX+\ndW/2, 0) -- ++(0, -0.5) node[anchor=west,rotate=-45] {\GT{nernst_layer}};
\draw (\eyX+\eyW/2, 0) -- ++(0, -0.5) node[anchor=west,rotate=-45] {\GT{electrolyte}};
% TODO
\end{tikzpicture} \end{tikzpicture}
\end{formula} \end{formula}
\Eng[c_surface]{surface \qtyRef{concentration}}
\Eng[c_bulk]{bulk \qtyRef{concentration}}
\Ger[c_surface]{Oberflächen-\qtyRef{concentration}}
\Ger[c_bulk]{Bulk-\qtyRef{concentration}}
\begin{formula}{diffusion_layer_thickness} \begin{formula}{diffusion_layer_thickness}
@ -458,8 +515,8 @@
\desc{Reversible hydrogen electrode (RHE)}{RHE Potential does not change with the pH value}{$E^0\equiv \SI{0}{\volt}$, \QtyRef{activity}, \QtyRef{pressure}, \GT{see} \fqEqRef{ch:el:cell:nernst_equation}} \desc{Reversible hydrogen electrode (RHE)}{RHE Potential does not change with the pH value}{$E^0\equiv \SI{0}{\volt}$, \QtyRef{activity}, \QtyRef{pressure}, \GT{see} \fqEqRef{ch:el:cell:nernst_equation}}
\desc[german]{Reversible Wasserstoffelektrode (RHE)}{Potential ändert sich nicht mit dem pH-Wert}{} \desc[german]{Reversible Wasserstoffelektrode (RHE)}{Potential ändert sich nicht mit dem pH-Wert}{}
\eq{ \eq{
E_\text{RHE} &= E^0 + \frac{RT}{F} \Ln{\frac{a_{\ce{H^+}}}{p_{\ce{H2}}}} \\ E_\text{RHE} &= E^0 + \frac{RT}{F} \Ln{\frac{a_{\ce{H^+}}}{p_{\ce{H2}}}}
&= \SI{0}{\volt} - \SI{0.059}{\volt} % \\ &= \SI{0}{\volt} - \SI{0.059}{\volt}
} }
\end{formula} \end{formula}
@ -532,9 +589,15 @@
\end{minipage} \end{minipage}
\end{bigformula} \end{bigformula}
\begin{formula}{charge}
\desc{Charge}{Area under the curve}{$v$ \qtyRef{scan_rate}}
\desc[german]{Ladung}{Fläche unter der Kurve}{}
\eq{q = \frac{1}{v} \int_{E_1}^{E_2}j\,\d E}
\end{formula}
\begin{formula}{peak_current} \begin{formula}{peak_current}
\desc{Randles-Sevcik equation}{For reversible reaction.\\Peak current depends on square root of the scan rate}{$n$ \qtyRef{charge_number}, \ConstRef{faraday}, $A$ electrode surface area, $c^0$ bulk \qtyRef{concentration}, $v$ \qtyRef{scan_rate}, $D_\text{ox}$ \qtyRef{diffusion_coefficient} of oxidized analyte, \ConstRef{universal_gas}, \QtyRef{temperature}} \desc{Randles-Sevcik equation}{For reversible faradaic reaction.\\Peak current depends on square root of the scan rate}{$n$ \qtyRef{charge_number}, \ConstRef{faraday}, $A$ electrode surface area, $c^0$ bulk \qtyRef{concentration}, $v$ \qtyRef{scan_rate}, $D_\text{ox}$ \qtyRef{diffusion_coefficient} of oxidized analyte, \ConstRef{universal_gas}, \QtyRef{temperature}}
\desc[german]{Randles-Sevcik Gleichung}{Spitzenstrom}{} \desc[german]{Randles-Sevcik Gleichung}{Für eine reversible, faradäische Reaktion\\Spitzenstrom hängt von der Wurzel der Scanrate ab}{}
\eq{i_\text{peak} = 0.446\,nFAc^0 \sqrt{\frac{nFvD_\text{ox}}{RT}}} \eq{i_\text{peak} = 0.446\,nFAc^0 \sqrt{\frac{nFvD_\text{ox}}{RT}}}
\end{formula} \end{formula}
@ -570,7 +633,7 @@
\begin{formula}{diffusion_layer_thickness} \begin{formula}{diffusion_layer_thickness}
\desc{Diffusion layer thickness}{\TODO{Where does 1.61 come from}}{$D$ \qtyRef{diffusion_coefficient}, $\nu$ \qtyRef{kinematic_viscosity}, \QtyRef{angular_frequency}} \desc{Diffusion layer thickness}{\TODO{Where does 1.61 come from}}{$D$ \qtyRef{diffusion_coefficient}, $\nu$ \qtyRef{kinematic_viscosity}, \QtyRef{angular_frequency}}
\desc[german]{Diffusionsshichtdicke}{}{} \desc[german]{Diffusionsschichtdicke}{}{}
\eq{\delta_\text{diff}= 1.61 D{^\frac{1}{3}} \nu^{\frac{1}{6}} \omega^{-\frac{1}{2}}} \eq{\delta_\text{diff}= 1.61 D{^\frac{1}{3}} \nu^{\frac{1}{6}} \omega^{-\frac{1}{2}}}
\end{formula} \end{formula}
@ -580,4 +643,40 @@
\eq{j_\infty = nFD \frac{c^0}{\delta_\text{diff}} = \frac{1}{1.61} nFD^{\frac{2}{3}} v^{\frac{-1}{6}} c^0 \sqrt{\omega}} \eq{j_\infty = nFD \frac{c^0}{\delta_\text{diff}} = \frac{1}{1.61} nFD^{\frac{2}{3}} v^{\frac{-1}{6}} c^0 \sqrt{\omega}}
\end{formula} \end{formula}
\Subsubsection[
\eng{AC-Impedance}
\ger{AC-Impedanz}
]{ac}
\begin{formula}{nyquist}
\desc{Nyquist diagram}{Real and imaginary parts of \qtyRef{impedance} while varying the frequency}{}
\desc[german]{Nyquist-Diagram}{Real und Imaginaärteil der \qtyRef{impedance} während die Frequenz variiert wird}{}
\fig{img/ch_nyquist.pdf}
\end{formula}
\begin{formula}{tlm}
\desc{Transmission line model}{Model of porous electrodes as many slices}{$R_\text{ion}$ ion conduction resistance in electrode slice, $R$ / $C$ resistance / capacitance of electode slice}
% \desc[german]{}{}{}
\ctikzsubcircuitdef{rcpair}{in, out}{%
coordinate(#1-in)
(#1-in) -- ++(0, -\rcpairH)
-- ++(\rcpairW, 0) to[R, l=$R$] ++(0,-\rcpairL) -- ++(-\rcpairW, 0)
-- ++(0,-\rcpairH) coordinate (#1-out) ++(0,\rcpairH)
-- ++(-\rcpairW, 0) to[C, l=$C$] ++(0,\rcpairL) -- ++(\rcpairW,0)
(#1-out)
}
\pgfmathsetmacro{\rcpairH}{0.5}
\pgfmathsetmacro{\rcpairW}{0.5}
\pgfmathsetmacro{\rcpairL}{1.8}
\ctikzsubcircuitactivate{rcpair}
\pgfmathsetmacro{\rcpairD}{3.0} % distance
\centering
\begin{circuitikz}[/tikz/circuitikz/bipoles/length=1cm,scale=0.7]
\draw (0,0) to[R,l=$R_\text{electrolyte}$] ++(2,0) -- ++(1,0)
\rcpair{rc1}{} (rc1-in) to[R,l=$R_\text{ion}$] ++(\rcpairD,0) \rcpair{rc2}{} (rc2-in) to[R,l=$R_\text{ion}$] ++(\rcpairD,0) ++(\rcpairD,0) \rcpair{rc3}{};
\draw[dashed] (rc2-in) ++(\rcpairD,0) -- (rc3-in) (rc2-out) ++(\rcpairD,0) -- (rc3-out);
\draw (rc1-out) -- (rc2-out) -- ++(\rcpairD,0) (rc3-out) -- ++(\rcpairD/2,0);
\end{circuitikz}
\fig{img/ch_nyquist_tlm.pdf}
\end{formula}

View File

@ -3,7 +3,7 @@
\ger{Thermoelektrizität} \ger{Thermoelektrizität}
]{thermo} ]{thermo}
\begin{formula}{seebeck} \begin{formula}{seebeck}
\desc{Seebeck coefficient}{}{$V$ voltage, \QtyRef{temperature}} \desc{Seebeck coefficient}{Thermopower}{$V$ voltage, \QtyRef{temperature}}
\desc[german]{Seebeck-Koeffizient}{}{} \desc[german]{Seebeck-Koeffizient}{}{}
\quantity{S}{\micro\volt\per\kelvin}{s} \quantity{S}{\micro\volt\per\kelvin}{s}
\eq{S = -\frac{\Delta V}{\Delta T}} \eq{S = -\frac{\Delta V}{\Delta T}}
@ -23,15 +23,15 @@
\end{formula} \end{formula}
\begin{formula}{wiedemann-franz} \begin{formula}{wiedemann-franz}
\desc{Wiedemann-Franz law}{}{Electric \QtyRef{thermal_conductivity}, $L$ in \si{\watt\ohm\per\kelvin} Lorentz number, \QtyRef{conductivity}} \desc{Wiedemann-Franz law}{}{$\kappa$ Electric \qtyRef{thermal_conductivity}, $L$ in \si{\watt\ohm\per\kelvin} Lorentz number, \QtyRef{conductivity}}
\desc[german]{Wiedemann-Franz Gesetz}{}{Elektrische \QtyRef{thermal_conductivity}, $L$ in \si{\watt\ohm\per\kelvin} Lorentzzahl, \QtyRef{conductivity}} \desc[german]{Wiedemann-Franz Gesetz}{}{$\kappa$ Elektrische \qtyRef{thermal_conductivity}, $L$ in \si{\watt\ohm\per\kelvin} Lorentzzahl, \QtyRef{conductivity}}
\eq{\kappa = L\sigma T} \eq{\kappa = L\sigma T}
\end{formula} \end{formula}
\begin{formula}{zt} \begin{formula}{zt}
\desc{Thermoelectric figure of merit}{Dimensionless quantity for comparing different materials}{\QtyRef{seebeck}, \QtyRef{conductivity}, } \desc{Thermoelectric figure of merit}{Dimensionless quantity for comparing different materials}{\QtyRef{seebeck}, \QtyRef{conductivity}, $\kappa$ \qtyRef{thermal_conductivity}, \QtyRef{temperature}}
\desc[german]{Thermoelektrische Gütezahl}{Dimensionsoser Wert zum Vergleichen von Materialien}{} \desc[german]{Thermoelektrische Gütezahl}{Dimensionsoser Wert zum Vergleichen von Materialien}{}
\eq{zT = \frac{S^2\sigma}{\lambda} T} \eq{zT = \frac{S^2\sigma}{\kappa} T}
\end{formula} \end{formula}
@ -93,6 +93,7 @@
\begin{formula}{common_chemicals} \begin{formula}{common_chemicals}
\desc{Common chemicals}{}{} \desc{Common chemicals}{}{}
\desc[german]{Häufige Chemikalien}{}{} \desc[german]{Häufige Chemikalien}{}{}
\centering
\begin{tabular}{l|c} \begin{tabular}{l|c}
\GT{name} & \GT{formula} \\ \hline\hline \GT{name} & \GT{formula} \\ \hline\hline
\begin{ttext}[cyanide]\eng{Cyanide}\ger{Zyanid}\end{ttext} & \ce{CN} \\ \hline \begin{ttext}[cyanide]\eng{Cyanide}\ger{Zyanid}\end{ttext} & \ce{CN} \\ \hline

View File

@ -28,26 +28,38 @@
\begin{formula}{dispersion_1atom_basis} \begin{formula}{dispersion_1atom_basis}
\desc{Phonon dispersion of a lattice with a one-atom basis}{same as the dispersion of a linear chain}{$C_n$ force constants between layer $s$ and $s+n$, $M$ \qtyRef{mass} of the reference atom, $a$ \qtyRef{lattice_constant}, $q$ phonon \qtyRef{wavevector}, $u$ Ansatz for the atom displacement} \desc{Phonon dispersion of a lattice with a one-atom basis}{same as the dispersion of a linear chain}{$C_n$ force constants between layer $s$ and $s+n$, $M$ \qtyRef{mass} of the reference atom, $a$ \qtyRef{lattice_constant}, $q$ phonon \qtyRef{wavevector}, $u$ Ansatz for the atom displacement}
\desc[german]{Phonondispersion eines Gitters mit zweiatomiger Basis}{gleich der Dispersion einer linearen Kette}{$C_n$ Kraftkonstanten zwischen Ebene $s$ und $s+n$, $M$ \qtyRef{mass} des Referenzatoms, $a$ \qtyRef{lattice_constant}, $q$ Phonon \qtyRef{wavevector}, $u$ Ansatz für die Atomauslenkung} \desc[german]{Phonondispersion eines Gitters mit zweiatomiger Basis}{gleich der Dispersion einer linearen Kette}{$C_n$ Kraftkonstanten zwischen Ebene $s$ und $s+n$, $M$ \qtyRef{mass} des Referenzatoms, $a$ \qtyRef{lattice_constant}, $q$ Phonon \qtyRef{wavevector}, $u$ Ansatz für die Atomauslenkung}
\eq{ \begin{gather}
\omega^2 = \frac{4C_1}{M}\left[\sin^2 \left(\frac{qa}{2}\right) + \frac{C2}{C1} \sin^2(qa)\right] \\ \omega^2 = \frac{4C_1}{M}\left[\sin^2 \left(\frac{qa}{2}\right) + \frac{C2}{C1} \sin^2(qa)\right] \\
\intertext{\GT{with}} \intertext{\GT{with}}
u_{s+n} = U\e^{-i \left[\omega t - q(s+n)a \right]} u_{s+n} = U\e^{-i \left[\omega t - q(s+n)a \right]}
} \end{gather}
\fig{img/cm_phonon_dispersion_one_atom_basis.pdf} \fig{img/cm_phonon_dispersion_one_atom_basis.pdf}
\end{formula} \end{formula}
\TODO{Plots} \TODO{Plots}
\begin{formula}{dispersion_2atom_basis} \begin{formula}{dispersion_2atom_basis}
\desc{Phonon dispersion of a lattice with a two-atom basis}{}{$C$ force constant between layers, $M_i$ \qtyRef{mass} of the basis atoms, $a$ \qtyRef{lattice_constant}, $q$ phonon \qtyRef{wavevector}, $u, v$ Ansatz for the displacement of basis atom 1 and 2, respectively} \desc{Phonon dispersion of a lattice with a two-atom basis}{}{$C$ force constant between layers, $M_i$ \qtyRef{mass} of the basis atoms, $a$ \qtyRef{lattice_constant}, $q$ phonon \qtyRef{wavevector}, $u, v$ Ansatz for the displacement of basis atom 1 and 2, respectively}
\desc[german]{Phonondispersion eines Gitters mit einatomiger Basis}{}{$C$ Kraftkonstanten zwischen Ebene $s$ und $s+n$, $M_i$ \qtyRef{mass} der Basisatome, $a$ \qtyRef{lattice_constant}, $q$ Phonon \qtyRef{wavevector}, $u, v$ jeweils Ansatz für die Atomauslenkung des Basisatoms 1 und 2} \desc[german]{Phonondispersion eines Gitters mit einatomiger Basis}{}{$C$ Kraftkonstanten zwischen Ebene $s$ und $s+n$, $M_i$ \qtyRef{mass} der Basisatome, $a$ \qtyRef{lattice_constant}, $q$ Phonon \qtyRef{wavevector}, $u, v$ jeweils Ansatz für die Atomauslenkung des Basisatoms 1 und 2}
\eq{ \begin{gather}
\omega^2_{\txa,\txo} = C \left(\frac{1}{M_1}+\frac{1}{M_2}\right) \mp C \sqrt{\left(\frac{1}{M_1}+\frac{1}{M_2}\right)^2 - \frac{4}{M_1M_2} \sin^2 \left(\frac{qa}{2}\right)} \omega^2_{\txa,\txo} = C \left(\frac{1}{M_1}+\frac{1}{M_2}\right) \mp C \sqrt{\left(\frac{1}{M_1}+\frac{1}{M_2}\right)^2 - \frac{4}{M_1M_2} \sin^2 \left(\frac{qa}{2}\right)}
\intertext{\GT{with}} \intertext{\GT{with}}
u_{s} = U\e^{-i \left(\omega t - qsa \right)}, \quad u_{s} = U\e^{-i \left(\omega t - qsa \right)}, \quad
v_{s} = V\e^{-i \left(\omega t - qsa \right)} v_{s} = V\e^{-i \left(\omega t - qsa \right)}
} \end{gather}
\fig{img/cm_phonon_dispersion_two_atom_basis.pdf} \fig{img/cm_phonon_dispersion_two_atom_basis.pdf}
\end{formula} \end{formula}
\begin{formula}{branches}
\desc{Vibration branches}{}{}
\desc[german]{Vibrationsmoden}{}{}
\ttxt{\eng{
\textbf{Acoustic}: 3 modes (1 longitudinal, 2 transversal), the two basis atoms oscillate in phase.
\\\textbf{Optical}: 3 modes, the two basis atoms oscillate in opposition. A dipole moment is created that can couple to photons.
}\ger{
\textbf{Akustisch}: 3 Moden (1 longitudinal, 2 transversal), die zwei Basisatome schwingen in Phase.
\\ \textbf{Optisch}: 3 Moden, die zwei Basisatome schwingen gegenphasig. Das dadurch entstehende Dipolmoment erlaubt die Wechselwirkung mit Photonen.
}}
\end{formula}
\Subsection[ \Subsection[
\eng{Debye model} \eng{Debye model}
\ger{Debye-Modell} \ger{Debye-Modell}

View File

@ -281,7 +281,7 @@
\item Use empirical interaction potential instead of electronic structure \item Use empirical interaction potential instead of electronic structure
\baditem Force fields need to be fitted for specific material \Rightarrow not transferable \baditem Force fields need to be fitted for specific material \Rightarrow not transferable
\gooditem Faster than \abbrRef{bomd} \gooditem Faster than \abbrRef{bomd}
\item Example: \absRef{lennard_jones} \item Example: \absRef[Lennard-Jones]{lennard_jones}
\end{itemize} \end{itemize}
}} }}
\end{formula} \end{formula}
@ -309,8 +309,8 @@
\end{formula} \end{formula}
\begin{formula}{verlet} \begin{formula}{verlet}
\desc{Verlet integration}{Preverses time reversibility, does not require velocity updates}{} \desc{Verlet integration}{Preverses time reversibility, does not require velocity updates. Integration in 2nd order}{}
\desc[german]{Verlet-Algorithmus}{Zeitumkehr-symmetrisch}{} \desc[german]{Verlet-Algorithmus}{Zeitumkehr-symmetrisch. Interation in zweiter Ordnung}{}
\eq{ \eq{
\vecR(t+\Delta t) = 2\vecR(t) -\vecR(t-\Delta t) + \veca(t) \Delta t^2 + \Order{\Delta t^4} \vecR(t+\Delta t) = 2\vecR(t) -\vecR(t-\Delta t) + \veca(t) \Delta t^2 + \Order{\Delta t^4}
} }
@ -325,7 +325,14 @@
} }
\end{formula} \end{formula}
\TODO{leapfrog} \begin{formula}{leapfrog}
\desc{Leapfrog}{Integration in 2nd order}{}
\desc[german]{Leapfrog}{Integration in zweiter Ordnung}{}
\eq{
x_{i+1} &= x_i + v_{i+1/2} \Delta t_i \\
v_{i+1/2} &= v_{i-1/2} + a_{i} \Delta t_i
}
\end{formula}
\Subsubsection[ \Subsubsection[
\eng{Thermostats and barostats} \eng{Thermostats and barostats}

View File

@ -77,12 +77,14 @@
$\hat{T}$ kinetic electron energy, $\hat{T}$ kinetic electron energy,
$\hat{V}_{\text{en}}$ electron-nucleus attraction, $\hat{V}_{\text{en}}$ electron-nucleus attraction,
$\hat{V}_{\text{HF}}$ \fqEqRef{comp:dft:hf:potential}, $\hat{V}_{\text{HF}}$ \fqEqRef{comp:dft:hf:potential},
$x = \vecr,\sigma$ position and spin
} }
\desc[german]{Hartree-Fock Gleichung}{}{ \desc[german]{Hartree-Fock Gleichung}{}{
$\varphi_\xi$ ein-Teilchen Wellenfunktion des $\xi$-ten Orbitals, $\varphi_\xi$ ein-Teilchen Wellenfunktion des $\xi$-ten Orbitals,
$\hat{T}$ kinetische Energie der Elektronen, $\hat{T}$ kinetische Energie der Elektronen,
$\hat{V}_{\text{en}}$ Electron-Kern Anziehung, $\hat{V}_{\text{en}}$ Electron-Kern Anziehung,
$\hat{V}_{\text{HF}}$ \fqEqRef{comp:dft:hf:potential} $\hat{V}_{\text{HF}}$ \fqEqRef{comp:dft:hf:potential},
$x = \vecr,\sigma$ Position and Spin
} }
\eq{ \eq{
\left(\hat{T} + \hat{V}_{\text{en}} + \hat{V}_{\text{HF}}^\xi\right)\varphi_\xi(x) = \epsilon_\xi \varphi_\xi(x) \left(\hat{T} + \hat{V}_{\text{en}} + \hat{V}_{\text{HF}}^\xi\right)\varphi_\xi(x) = \epsilon_\xi \varphi_\xi(x)
@ -107,9 +109,9 @@
\ttxt{ \ttxt{
\eng{ \eng{
\begin{enumerate} \begin{enumerate}
\item Initial guess for $\psi$ \item Initial guess for $\varphi$
\item Solve SG for each particle \item Solve SG for each particle
\item Make new guess for $\psi$ \item Make new guess for $\varphi$
\end{enumerate} \end{enumerate}
} }
} }
@ -131,7 +133,7 @@
\desc{Hohenberg-Kohn theorem (HK2)}{}{} \desc{Hohenberg-Kohn theorem (HK2)}{}{}
\desc[german]{Hohenberg-Kohn Theorem (HK2)}{}{} \desc[german]{Hohenberg-Kohn Theorem (HK2)}{}{}
\ttxt{ \ttxt{
\eng{Given the energy functional $E[n(\vecr)]$, the ground state density and energy can be obtained variationally. The density that minimizes the total energy is the ecxact ground state density. } \eng{Given the energy functional $E[n(\vecr)]$, the ground state density and energy can be obtained variationally. The density that minimizes the total energy is the exact ground state density. }
\ger{Für ein Energiefunktional $E[n(\vecr)]$ kann die Grundzustandsdichte und Energie durch systematische Variation bestimmt werden. Die Dichte, welche die Gesamtenergie minimiert ist die exakte Grundzustandsichte. } \ger{Für ein Energiefunktional $E[n(\vecr)]$ kann die Grundzustandsdichte und Energie durch systematische Variation bestimmt werden. Die Dichte, welche die Gesamtenergie minimiert ist die exakte Grundzustandsichte. }
} }
\end{formula} \end{formula}
@ -232,7 +234,6 @@
\ttxt{\eng{ \ttxt{\eng{
Include \hyperref[f:comp:dft:hf:potential]{Fock term} (exact exchange) in other functional, like \abbrRef{gga}. Computationally expensive Include \hyperref[f:comp:dft:hf:potential]{Fock term} (exact exchange) in other functional, like \abbrRef{gga}. Computationally expensive
}} }}
\end{formula} \end{formula}
@ -250,16 +251,123 @@
}} }}
\end{formula} \end{formula}
\begin{formula}{comparison} \begin{bigformula}{comparison}
\desc{Comparison of DFT functionals}{}{} \desc{Comparison of DFT functionals}{}{}
\desc[german]{Vergleich von DFT Funktionalen}{}{} \desc[german]{Vergleich von DFT Funktionalen}{}{}
\begin{tabular}{l|c} % \begin{tabular}{l|c}
\hyperref[f:comp:est:dft:hf:potential]{Hartree-Fock} & only exchange, no correlation \Rightarrow upper bound of GS energy \\ % \hyperref[f:comp:est:dft:hf:potential]{Hartree-Fock} & only exchange, no correlation \Rightarrow upper bound of GS energy \\
\abbrRef{lda} & understimates e repulsion \Rightarrow Overbinding \\ % \abbrRef{lda} & understimates e repulsion \Rightarrow Overbinding \\
\abbrRef{gga} & underestimate band gap \\ % \abbrRef{gga} & underestimate band gap \\
hybrid & underestimate band gap % hybrid & underestimate band gap
\end{tabular} % \end{tabular}
\end{formula}
\TODO{HFtotal energy: upper boundary for GS density $n$}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
% \begin{tabular}{|P{0.15\textwidth}|P{0.2\textwidth}|P{0.1\textwidth}|P{0.2\textwidth}|P{0.1\textwidth}|P{0.1\textwidth}|P{0.15\textwidth}|}
% \hline
% \textbf{Method} & \textbf{Description} & \textbf{Mean Absolute Error (eV)} & \textbf{Band Gap Accuracy} & \textbf{Computational Cost} & \textbf{Usage} & \textbf{Other Notes} \\
% \hline
% Hartree-Fock (HF) &
% $E_C \sim E_C^{HF\text{theory}}$
% $E_X \sim E_X^{FOCK}$
% & 3.1 (Underbinding) & \tabitem no SIE \tabitem correct long-range behaviour \tabitem nonlinear chemical potential (missing DD) \tabitem positive correlation effects & High & Reference for exact exchange, useful for small molecules. & Self-interaction free, but lacks correlation. \\
% \hline
% Local Density Approximation (LDA) &
% $E_x \sim n(r)$
% $E_c \sim n(r)$
% & 1.3 (Overbinding) & \tabitem SIE \tabitem wrong long-range behaviour \tabitem nonlinear chemical potential (missing DD) & Low & Basic solids and metallic systems, where accuracy is not critical. & Simple and computationally cheap. \\
% \hline
% Generalised Gradient Approximation (GGA) &
% $E_x \sim n(r), \nabla n(r)$
% $E_c \sim n(r), \nabla n(r)$
% & 0.3 (Mostly overbinding) & \tabitem SIE \tabitem wrong long-range behaviour \tabitem nonlinear chemical potential (missing DD) & Moderate & More accurate for molecules and chemical bonding studies. & Better than LDA for chemical bonding. \\
% \hline
% Hybrid Functionals &
% $E_x = E_x^{GGA}$
% $E_x = (1-\alpha)E_x^{GGA} + \alpha E_X^{FOCK}$
% \tabitem Add expensive non-local Fock term to reduce self-interaction
% & Lower than GGA (Improved balance) & \tabitem reduced SIE \tabitem wrong long-range behaviour \tabitem nonlinear chemical potential (missing DD) & Higher & Molecular chemistry, solid-state physics requiring better accuracy. & Balances accuracy and cost. \\
% \hline
% Range-Separated Hybrid (RSH) &
% $E_x = E_x^{GGA}$
% $E_{X,SR} = (1-\alpha)E_x^{GGA} + \alpha E_X^{FOCK}$
% $E_{X,LR} = E_x^{GGA}$
% \tabitem Mix-in expensive Fock term only for short-range interactions $\rightarrow$ since for LR the Coulomb interaction gets screening in dielectric substances ($\epsilon > 1$), such as crystalline materials.
% & Lower than Hybrid (Even better balance) & \tabitem reduced SIE \tabitem wrong long-range behaviour \tabitem nonlinear chemical potential (missing DD) & Very High & Semiconductors, materials with screened Coulomb interactions. & Used for dielectric materials. \\
% \hline
% Optimally Tuned RSH (OT-RSH) &
% $E_x = E_x^{GGA}$
% $E_{X,SR} = E_x^{GGA}$ and $E_X^{FOCK}$
% $E_{X,LR} = E_x^{GGA}$ and $E_X^{FOCK}$
% \tabitem More advanced tuning between Fock and GGA. So that set also have the correct asymptotic behaviour of $1/r$ (Coulomb e.g. Fock) instead of $e^{-r}$ from GGA
% & Lowest & \tabitem reduced SIE \tabitem better long-range behaviour \tabitem /+ better chemical potential - they include non-multiplicative, orbital dependent terms. Hence, in principle they allow for including a DD. & Extremely High & Precise calculations for band gap predictions and electronic properties. & Most flexible but computationally expensive. \\
% \hline
% \end{tabular}
% \begin{tabularx}{\textwidth}{lXlllll}
% \toprule
% \textbf{Method} & \textbf{Description} & \textbf{Mean Absolute Error (eV)} & \textbf{Band Gap Accuracy} & \textbf{Computational Cost} & \textbf{Usage} & \textbf{Other Notes} \\
% \midrule
% Hartree-Fock (HF) & $E_C \sim E_C^{HF\text{theory}}$ $E_X \sim E_X^{FOCK}$ & 3.1 (Underbinding) & Overestimates
% \tabitem no SIE
% \tabitem correct long-range behaviour
% \tabitem nonlinear chemical potential (missing DD)
% \tabitem positive correlation effects
% & High & Reference for exact exchange, useful for small molecules. & Self-interaction free, but lacks correlation. \\
% \midrule
% Local Density Approximation (LDA) &
% $E_x \sim n(r)$
% $E_c \sim n(r)$
% & 1.3 (Overbinding) & Underestimates
% \tabitem SIE
% \tabitem wrong long-range behaviour
% \tabitem nonlinear chemical potential (missing DD)
% & Low & Basic solids and metallic systems, where accuracy is not critical. & Simple and computationally cheap. \\
% \midrule
% Generalised Gradient Approximation (GGA) &
% $E_x \sim n(r), \nabla n(r)$
% $E_c \sim n(r), \nabla n(r)$
% & 0.3 (Mostly overbinding) & Improved over LDA
% \tabitem SIE
% \tabitem wrong long-range behaviour
% \tabitem nonlinear chemical potential (missing DD)
% & Moderate & More accurate for molecules and chemical bonding studies. & Better than LDA for chemical bonding. \\
% \midrule
% Hybrid Functionals &
% $E_x = E_x^{GGA}$
% $E_x = (1-\alpha)E_x^{GGA} + \alpha E_X^{FOCK}$
% \tabitem Add expensive non-local Fock term to reduce self-interaction
% & Lower than GGA (Improved balance) & Better than GGA
% \tabitem reduced SIE
% \tabitem wrong long-range behaviour
% \tabitem nonlinear chemical potential (missing DD)
% & Higher & Molecular chemistry, solid-state physics requiring better accuracy. & Balances accuracy and cost. \\
% \midrule
% Range-Separated Hybrid (RSH) &
% $E_x = E_x^{GGA}$
% $E_{X,SR} = (1-\alpha)E_x^{GGA} + \alpha E_X^{FOCK}$
% $E_{X,LR} = E_x^{GGA}$
% \tabitem Mix-in expensive Fock term only for short-range interactions $\rightarrow$ since for LR the Coulomb interaction gets screening in dielectric substances ($\epsilon > 1$), such as crystalline materials.
% & Lower than Hybrid (Even better balance) & Strongly underestimates
% \tabitem reduced SIE
% \tabitem wrong long-range behaviour
% \tabitem nonlinear chemical potential (missing DD)
% & Very High & Semiconductors, materials with screened Coulomb interactions. & Used for dielectric materials. \\
% \midrule
% Optimally Tuned RSH (OT-RSH) &
% $E_x = E_x^{GGA}$
% $E_{X,SR} = E_x^{GGA}$ and $E_X^{FOCK}$
% $E_{X,LR} = E_x^{GGA}$ and $E_X^{FOCK}$
% \tabitem More advanced tuning between Fock and GGA. So that set also have the correct asymptotic behaviour of $1/r$ (Coulomb e.g. Fock) instead of $e^{-r}$ from GGA
% & Lowest & Most accurate
% \tabitem reduced SIE
% \tabitem better long-range behaviour
% \tabitem /+ better chemical potential - they include non-multiplicative, orbital dependent terms. Hence, in principle they allow for including a DD.
% & Extremely High & Precise calculations for band gap predictions and electronic properties. & Most flexible but computationally expensive. \\
% \bottomrule
% \end{tabularx}
\end{bigformula}
\Subsubsection[ \Subsubsection[
\eng{Basis sets} \eng{Basis sets}

View File

@ -21,14 +21,20 @@
\desc[german]{Genauigkeit}{}{} \desc[german]{Genauigkeit}{}{}
\eq{a = \frac{\tgt{cp}}{\tgt{fp} + \tgt{cp}}} \eq{a = \frac{\tgt{cp}}{\tgt{fp} + \tgt{cp}}}
\end{formula} \end{formula}
\TODO{is $n$ the nuber of predictions or the number of output features?} \eng{n_desc}{Number of data points}
\ger{n_desc}{Anzahl der Datenpunkte}
\begin{formula}{mean_abs_error} \begin{formula}{mean_abs_error}
\desc{Mean absolute error (MAE)}{}{$y$ \gt{y}, $\hat{y}$ \gt{yhat}, $n$ ?} \desc{Mean absolute error (MAE)}{}{$y$ \gt{y}, $\hat{y}$ \gt{yhat}, $n$ \gt{n_desc}}
\desc[german]{Mittlerer absoluter Fehler (MAE)}{}{} \desc[german]{Mittlerer absoluter Fehler (MAE)}{}{}
\eq{\text{MAE} = \frac{1}{n} \sum_{i=1}^n \abs{y_i - \hat{y}_i}} \eq{\text{MAE} = \frac{1}{n} \sum_{i=1}^n \abs{y_i - \hat{y}_i}}
\end{formula} \end{formula}
\begin{formula}{mean_square_error}
\desc{Mean squared error (MSE)}{}{$y$ \gt{y}, $\hat{y}$ \gt{yhat}, $n$ \gt{n_desc}}
\desc[german]{Methode der kleinsten Quadrate (MSE)}{Quadratwurzel des mittleren quadratischen Fehlers (SME)}{}
\eq{\text{MSE} = \frac{1}{n} \sum_{i=1}^n \left(y_i - \hat{y}_i\right)^2}
\end{formula}
\begin{formula}{root_mean_square_error} \begin{formula}{root_mean_square_error}
\desc{Root mean squared error (RMSE)}{}{$y$ \gt{y}, $\hat{y}$ \gt{yhat}, $n$ ?} \desc{Root mean squared error (RMSE)}{}{$y$ \gt{y}, $\hat{y}$ \gt{yhat}, $n$ \gt{n_desc}}
\desc[german]{Standardfehler der Regression}{Quadratwurzel des mittleren quadratischen Fehlers (RSME)}{} \desc[german]{Standardfehler der Regression}{Quadratwurzel des mittleren quadratischen Fehlers (RSME)}{}
\eq{\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^n \left(y_i - \hat{y}_i\right)^2}} \eq{\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^n \left(y_i - \hat{y}_i\right)^2}}
\end{formula} \end{formula}
@ -42,40 +48,128 @@
\ger{Lineare Regression} \ger{Lineare Regression}
]{linear} ]{linear}
\begin{formula}{eq} \begin{formula}{eq}
\desc{Linear regression}{Fits the data under the assumption of \hyperref[f:math:pt:distributions:cont:normal]{normally distributed errors}}{$\mat{x}\in\R^{N\times M}$ input data, $\mat{y}\in\R^{N\times L}$ output data, $\mat{b}$ bias, $\vec{W}$ weights, $N$ samples, $M$ features, $L$ output variables} \desc{Linear regression}{Fits the data under the assumption of \hyperref[f:math:pt:distributions:cont:normal]{normally distributed errors}}{$\mat{x}\in\R^{N\times M}$ input data, $\mat{y}\in\R^{N\times L}$ output data, $\mat{b}$ bias, $\vec{\beta}$ weights, $N$ samples, $M$ features, $L$ output variables}
\desc[german]{Lineare Regression}{Fitted Daten unter der Annahme \hyperref[f:math:pt:distributions:cont:normal]{normalverteilter Fehler}}{} \desc[german]{Lineare Regression}{Fitted Daten unter der Annahme \hyperref[f:math:pt:distributions:cont:normal]{normalverteilter Fehler}}{}
\eq{\mat{y} = \mat{b} + \mat{x} \cdot \vec{W}} \eq{\mat{y} = \mat{\epsilon} + \mat{x} \cdot \vec{\beta}}
\end{formula} \end{formula}
\begin{formula}{design_matrix} \begin{formula}{design_matrix}
\desc{Design matrix}{Stack column of ones to the feature vector\\Useful when $b$ is scalar}{$x_{ij}$ feature $j$ of sample $i$} \desc{Design matrix}{Stack column of ones to the feature vector\\Useful when $\epsilon$ is scalar}{$x_{ij}$ feature $j$ of sample $i$}
\desc[german]{Designmatrix Ansatz}{}{} \desc[german]{Designmatrix Ansatz}{}{}
\eq{ \eq{
\mat{X} = \begin{pmatrix} 1 & x_{11} & \ldots & x_{1M} \\ \vdots & \vdots & \vdots & \vdots \\ 1 & x_{N1} & \ldots & x_{NM} \end{pmatrix} \mat{X} = \begin{pmatrix} 1 & x_{11} & \ldots & x_{1M} \\ \vdots & \vdots & \vdots & \vdots \\ 1 & x_{N1} & \ldots & x_{NM} \end{pmatrix}
} }
\end{formula} \end{formula}
\begin{formula}{scalar_bias} \begin{formula}{scalar_bias}
\desc{Linear regression with scalar bias}{Using the design matrix, the scalar is absorbed into the weight vector}{$\mat{y}$ output data, $\mat{X}$ \fqEqRef{comp:ml:reg:design_matrix}, $\vec{W}$ weights} \desc{Linear regression with scalar bias}{Using the design matrix, the scalar is absorbed into the weight vector}{$\mat{y}$ output data, $\mat{X}$ \fqEqRef{comp:ml:reg:design_matrix}, $\vec{\beta}$ weights}
\desc[german]{Lineare Regression mit skalarem Bias}{Durch die Designmatrix wird der Bias in den Gewichtsvektor absorbiert}{} \desc[german]{Lineare Regression mit skalarem Bias}{Durch die Designmatrix wird der Bias in den Gewichtsvektor absorbiert}{}
\eq{\mat{y} = \mat{X} \cdot \vec{W}} \eq{\mat{y} = \mat{X} \cdot \vec{\beta}}
\end{formula} \end{formula}
\begin{formula}{normal_equation} \begin{formula}{normal_equation}
\desc{Normal equation}{Solves \fqEqRef{comp:ml:reg:linear:scalar_bias}}{$\mat{y}$ output data, $\mat{X}$ \fqEqRef{comp:ml:reg:linear:design_matrix}, $\vec{W}$ weights} \desc{Normal equation}{Solves \fqEqRef{comp:ml:reg:linear:scalar_bias} with \fqEqRef{comp:ml:performance:mse}}{$\mat{y}$ output data, $\mat{X}$ \fqEqRef{comp:ml:reg:linear:design_matrix}, $\vec{\beta}$ weights}
\desc[german]{Normalengleichung}{Löst \fqEqRef{comp:ml:reg:linear:scalar_bias}}{} \desc[german]{Normalengleichung}{Löst \fqEqRef{comp:ml:reg:linear:scalar_bias} mit \fqEqRef{comp:ml:performance:mse}}{}
\eq{\vec{W} = \left(\mat{X}^\T \mat{X}\right)^{-1} \mat{X}^T \mat{y}} \eq{\vec{\beta} = \left(\mat{X}^\T \mat{X}\right)^{-1} \mat{X}^T \mat{y}}
\end{formula} \end{formula}
\Subsubsection[ \Subsubsection[
\eng{Ridge regression} \eng{Kernel method}
\ger{Ridge Regression} \ger{Kernelmethode}
]{ridge} ]{kernel}
\TODO{ridge reg, Kernel ridge reg, gaussian process reg} \begin{formula}{kernel_trick}
% \Subsection[ \desc{Kernel trick}{}{$\vecx_i \in \R^{M_1}$ input vectors, $M_1$ dimension of data vector space, $M_2$ dimension of feature space}
% \eng{Bayesian probability theory} % \desc[german]{}{}{}
% % \ger{} \ttxt{\eng{
% ]{bayesian} Useful when transforming the input data $x$ into a much higher dimensional space ($M_2 \gg M_1$) $\Phi: \R^{M_1} \mapsto \R^{M_2},\quad \vecx \to \Phi(\vecx)$
and only the dot product of this transformed data $\Phi(x)^\T\Phi(x)$ is required.
Then the dot product can be replaced by a suitable kernel function $\kappa$.
}}
\eq{
k(\vecx_i,\vecx_j) \equiv \Phi(\vecx_i)^{\T} \Phi(\vecx_j)
}
\end{formula}
\begin{formula}{common_kernels}
\desc{Common kernels}{}{}
% \desc[german]{}{}{}
% \eq{}
\ttxt{\eng{
Linear, Polynomial, Sigmoid, Laplacian, radial basis funciton (RBF)
}}
\end{formula}
\begin{formula}{radial_basis_function}
\abbrLabel{RBF}
\desc{Radial basis function kernel (RBF)}{RBF = Real function of which the value only depends on the distance of the input}{}
\desc[german]{Radiale Basisfunktion-Kernel (RBF)}{RBF = Reelle Funktion, deren Wert nur vom Abstand zum Ursprung abängt}{}
\eq{k(\vecx_i, \vecx_j) = \Exp{-\frac{\norm{\vecx_i - \vecx_j}_2^2}{\sigma}}}
\end{formula}
\Subsubsection[
\eng{Bayesian regression}
\ger{Bayes'sche Regression}
]{bayes}
\begin{formula}{linear_regression}
\desc{Bayesian linear regression}{}{}
\desc[german]{Bayes'sche lineare Regression}{}{}
\ttxt{\eng{
Assume a \fqEqRef{math:pt:bayesian:prior} distribution over the weights.
Offers uncertainties in addition to the predictions.
}}
\end{formula}
\begin{formula}{ridge}
\desc{Ridge regression}{Regularization method}{}
\desc[german]{Ridge Regression}{}{}
\ttxt{\eng{
Applies a L2 norm penalty on the weights.
This ensures unimportant features are less regarded and do not encode noise.
\\Corresponds to assuming a \fqEqRef{math:pt:bayesian:prior} \absRef{multivariate_normal_distribution} with $\vec{mu} = 0$ and independent components ($\mat{\Sigma}$) for the weights.
}\ger{
Reduziert Gewichte mit der L2-Norm.
Dadurch werden unwichtige Features nicht berücksichtigt (kleines Gewicht) und enkodieren nicht Noise.
\\Entspricht der Annahme einer \absRef[Normalverteilung]{multivariate_normal_distribution} mit $\vec{mu}=0$ und unanhängingen Komponenten ($\mat{Sigma}$ diagonaol) der die Gewichte als \fqEqRef{math:pt:bayesian:prior}.
}}
\end{formula}
\begin{formula}{ridge_weights}
\desc{Optimal weights}{for ridge regression}{$\lambda = \frac{\sigma^2}{\xi^2}$ shrinkage parameter, $\xi$ \absRef{variance} of the gaussian \fqEqRef{math:pt:bayesian:prior}, $\sigma$ \absRef{variance} of the gaussian likelihood of the data}
\desc[german]{Optimale Gewichte}{für Ridge Regression}{}
\eq{\vec{\beta} = \left(\mat{X}^\T \mat{X} + \lambda \mathcal{1} \right)^{-1} \mat{X}^\T \vecy}
\TODO{Does this only work for gaussian data?}
\end{formula}
\begin{formula}{lasso}
\desc{Lasso regression}{Least absolute shrinkage and selection operator\\Regularization method}{}
\desc[german]{Lasso Regression}{}{}
\ttxt{\eng{
Applies a L1 norm penalty on the weights, which means features can be disregarded entirely.
\\Corresponds to assuming a \absRef{laplace_distribution} for the weights as \fqEqRef{math:pt:bayesian:prior}.
}\ger{
Reduziert Gewichte mit der L1-Norm.
Unwichtige Features werden reduziert und können auch ganz vernachlässigt werden und enkodieren nicht Noise.
\\Entspricht der Annahme einer \absRef[Laplace-Verteilung]{laplace_distribution} der die Gewichte als \fqEqRef{math:pt:bayesian:prior}.
}}
\end{formula}
\begin{formula}{gaussion_process_regression}
\desc{Gaussian process regression (GPR)}{}{}
% \desc[german]{}{}{}
\ttxt{\eng{
Gaussian process: A distribtuion over functions that produce jointly gaussian distribution.
Multivariate normal distribution like \secEqRef{bayesian}, except that $\vec{\mu}$ and $\mat{\Sigma}$ are functions.
GPR: non-parametric Bayesion regressor, does not assume fixed functional form for the underlying data, instead, the data determines the functional shape,
with predictions governed by the covariance structure defined by the kernel (often \abbrRef{radial_basis_function}).
Offers uncertainties in addition to the predictions.
\TODO{cleanup}
}}
\end{formula}
\TODO{soap}
\Subsection[ \Subsection[
\eng{Gradient descent} \eng{Gradient descent}
\ger{Gradientenverfahren} \ger{Gradientenverfahren}

View File

@ -52,3 +52,11 @@
\val{1.602176634\xE{-19}}{\coulomb} \val{1.602176634\xE{-19}}{\coulomb}
} }
\end{formula} \end{formula}
\begin{formula}{atomic_mass_unit}
\desc{Atomic mass unit}{}{}
\desc[german]{Atomare Massneinheit}{}{}
\constant{u}{exp}{
\val{1.66053906892(52)\xE{-27}}{\kg}
}
\end{formula}

View File

@ -2,7 +2,7 @@
% (for vimtex) % (for vimtex)
\documentclass[11pt, a4paper]{article} \documentclass[11pt, a4paper]{article}
% SET LANGUAGE HERE % SET LANGUAGE HERE
\usepackage[german]{babel} \usepackage[english]{babel}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry} \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
% ENVIRONMENTS etc % ENVIRONMENTS etc
\usepackage{adjustbox} \usepackage{adjustbox}
@ -87,10 +87,6 @@
\newcommand{\TODO}[1]{{\color{fg-red}TODO:#1}} \newcommand{\TODO}[1]{{\color{fg-red}TODO:#1}}
\newcommand{\ts}{\textsuperscript} \newcommand{\ts}{\textsuperscript}
% \usepackage{xstring}
% Create a text file with relevant labels for vim-completion % Create a text file with relevant labels for vim-completion
\newwrite\labelsFile \newwrite\labelsFile
\immediate\openout\labelsFile=\jobname.labels.txt \immediate\openout\labelsFile=\jobname.labels.txt
@ -101,6 +97,7 @@
\input{circuit.tex} \input{circuit.tex}
\input{util/macros.tex} \input{util/macros.tex}
\input{util/math-macros.tex}
\input{util/environments.tex} % requires util/translation.tex to be loaded first \input{util/environments.tex} % requires util/translation.tex to be loaded first
\usepackage{pkg/mqlua} \usepackage{pkg/mqlua}
\usepackage{pkg/mqfqname} \usepackage{pkg/mqfqname}
@ -115,26 +112,11 @@
\usepackage{pkg/mqformula} \usepackage{pkg/mqformula}
\usepackage{pkg/mqperiodictable} \usepackage{pkg/mqperiodictable}
% INPUT
% 1: starting pattern of files to input using the Input command. All other files are ignored
\newcommand\InputOnly[1]{\edef\inputOnlyFile{#1}}
\edef\inputOnlyFile{all}
\newcommand\Input[1]{
% yes this could surely be done in tex
\directlua{
if '\luaescapestring{\inputOnlyFile}' == 'all' or string.startswith('\luaescapestring{#1}', '\luaescapestring{\inputOnlyFile}') then
tex.print("\\input{\luaescapestring{#1}}")
end
}
}
\title{Formelsammlung} \title{Formelsammlung}
\author{Matthias Quintern} \author{Matthias Quintern}
\date{\today} \date{\today}
\begin{document} \begin{document}
\IfFileExists{\jobname.translations.aux}{%
\input{\jobname.translations.aux}
}{}
\makeatletter\let\percentchar\@percentchar\makeatother \makeatletter\let\percentchar\@percentchar\makeatother
@ -145,7 +127,7 @@
\input{util/translations.tex} \input{util/translations.tex}
% \InputOnly{ch} % \InputOnly{comp}
\Input{math/math} \Input{math/math}
\Input{math/linalg} \Input{math/linalg}

View File

@ -143,9 +143,9 @@
\end{formula} \end{formula}
\begin{formula}{delta_of_function} \begin{formula}{delta_of_function}
\desc{Dirac-Delta of a function}{}{$g(x_0) = 0$} \desc{Dirac-Delta of a function}{}{$f(x_i) = 0$}
\desc[german]{Dirac-Delta einer Funktion}{}{} \desc[german]{Dirac-Delta einer Funktion}{}{}
\eq{\delta(f(x)) = \frac{\delta(x-x_0)}{\abs{g^\prime(x_0)}}} \eq{\delta(f(x)) = \sum_i \frac{\delta(x-x_i)}{\abs{f^\prime(x_i)}}}
\end{formula} \end{formula}
\begin{formula}{geometric_series} \begin{formula}{geometric_series}
@ -208,6 +208,12 @@
\eq{\Grad^2 = \laplace = \frac{1}{r^2} \pdv{}{r} \left(r^2 \pdv{}{r}\right)} \eq{\Grad^2 = \laplace = \frac{1}{r^2} \pdv{}{r} \left(r^2 \pdv{}{r}\right)}
\end{formula} \end{formula}
\begin{formula}{p-norm}
\desc{$p$-norm}{}{}
\desc[german]{$p$-Norm}{}{}
\eq{\norm{\vecx}_p \equiv \left(\sum_{i=1}^{n} \abs{x_i}^p\right)^\frac{1}{p}}
\end{formula}
\Subsection[ \Subsection[
\eng{Integrals} \eng{Integrals}
@ -317,5 +323,3 @@
\TODO{differential equation solutions} \TODO{differential equation solutions}

View File

@ -108,6 +108,12 @@
} }
\end{formula} \end{formula}
\begin{formula}{woodbury_matrix_identity}
\desc{Woodbury matrix identity}{Inverse of a rank-$k$ correction}{$\matA\,n\times n$, $\matU\,n\times k$, $\matC\,k\times k$, $\matV \, k\times n$}
\desc[german]{Woodbury-Matrix-Identität}{Inverse einer Rang-$k$-Korrektur}{}
\eq{(\matA + \matU + \matC + \matV){-1} = \matA^{-1}-\matA^{-1} \matU(\matC^{-1} + \matV \matA^{-1} \matU)^{-1} \matV \matA^{-1}}
\end{formula}
\begin{formula}{inverse_2x2} \begin{formula}{inverse_2x2}
\desc{Inverse $2\times 2$ matrix}{}{} \desc{Inverse $2\times 2$ matrix}{}{}

View File

@ -4,6 +4,7 @@
]{pt} ]{pt}
\begin{formula}{mean} \begin{formula}{mean}
\absLabel
\desc{Mean}{Expectation value}{} \desc{Mean}{Expectation value}{}
\desc[german]{Mittelwert}{Erwartungswert}{} \desc[german]{Mittelwert}{Erwartungswert}{}
\eq{\braket{x} = \int w(x)\, x\, \d x} \eq{\braket{x} = \int w(x)\, x\, \d x}
@ -11,18 +12,21 @@
\begin{formula}{variance} \begin{formula}{variance}
\absLabel
\desc{Variance}{Square of the \fqEqRef{math:pt:std-deviation}}{} \desc{Variance}{Square of the \fqEqRef{math:pt:std-deviation}}{}
\desc[german]{Varianz}{Quadrat der\fqEqRef{math:pt:std-deviation}}{} \desc[german]{Varianz}{Quadrat der\fqEqRef{math:pt:std-deviation}}{}
\eq{\sigma^2 = (\Delta \hat{x})^2 = \Braket{\hat{x}^2} - \braket{\hat{x}}^2 = \braket{(x - \braket{x})^2}} \eq{\sigma^2 = (\Delta \hat{x})^2 = \Braket{\hat{x}^2} - \braket{\hat{x}}^2 = \braket{(x - \braket{x})^2}}
\end{formula} \end{formula}
\begin{formula}{covariance} \begin{formula}{covariance}
\absLabel
\desc{Covariance}{}{} \desc{Covariance}{}{}
\desc[german]{Kovarianz}{}{} \desc[german]{Kovarianz}{}{}
\eq{\cov(x,y) = \sigma(x,y) = \sigma_{XY} = \Braket{(x-\braket{x})\,(y-\braket{y})}} \eq{\cov(x,y) = \sigma(x,y) = \sigma_{XY} = \Braket{(x-\braket{x})\,(y-\braket{y})}}
\end{formula} \end{formula}
\begin{formula}{std-deviation} \begin{formula}{std-deviation}
\absLabel
\desc{Standard deviation}{}{} \desc{Standard deviation}{}{}
\desc[german]{Standardabweichung}{}{} \desc[german]{Standardabweichung}{}{}
\eq{\sigma = \sqrt{\sigma^2} = \sqrt{(\Delta x)^2}} \eq{\sigma = \sqrt{\sigma^2} = \sqrt{(\Delta x)^2}}
@ -75,6 +79,7 @@
\ger{Kontinuierliche Wahrscheinlichkeitsverteilungen} \ger{Kontinuierliche Wahrscheinlichkeitsverteilungen}
]{cont} ]{cont}
\begin{bigformula}{normal} \begin{bigformula}{normal}
\absLabel[normal_distribution]
\desc{Gauß/Normal distribution}{}{} \desc{Gauß/Normal distribution}{}{}
\desc[german]{Gauß/Normal-Verteilung}{}{} \desc[german]{Gauß/Normal-Verteilung}{}{}
\begin{minipage}{\distleftwidth} \begin{minipage}{\distleftwidth}
@ -94,13 +99,36 @@
\end{distribution} \end{distribution}
\end{bigformula} \end{bigformula}
\begin{formula}{standard_normal_distribution} \begin{formula}{standard_normal}
\absLabel[standard_normal_distribution]
\desc{Density function of the standard normal distribution}{$\mu = 0$, $\sigma = 1$}{} \desc{Density function of the standard normal distribution}{$\mu = 0$, $\sigma = 1$}{}
\desc[german]{Dichtefunktion der Standard-Normalverteilung}{$\mu = 0$, $\sigma = 1$}{} \desc[german]{Dichtefunktion der Standard-Normalverteilung}{$\mu = 0$, $\sigma = 1$}{}
\eq{\varphi(x) = \frac{1}{\sqrt{2\pi}} \e^{-\frac{1}{2}x^2}} \eq{\varphi(x) = \frac{1}{\sqrt{2\pi}} \e^{-\frac{1}{2}x^2}}
\end{formula} \end{formula}
\begin{bigformula}{multivariate_normal}
\absLabel[multivariate_normal_distribution]
\desc{Multivariate normal distribution}{Multivariate Gaussian distribution}{$\vec{mu}$ \absRef{mean}, $\mat{\Sigma}$ \absRef{covariance}}
\desc[german]{Mehrdimensionale Normalverteilung}{Multivariate Normalverteilung}{}
\begin{distribution}
\disteq{parameters}{\vec{\mu} \in \R^k,+\quad \mat{\Sigma} \in \R^{k\times k}}
\disteq{support}{\vec{x} \in \vec{\mu} + \text{span}(\mat{\Sigma})}
\disteq{pdf}{\mathcal{N}(\vec{mu}, \mat{\Sigma}) = \frac{1}{(2\pi)^{k/2}} \frac{1}{\sqrt{\det{\Sigma}}} \Exp{-\frac{1}{2} \left(\vecx-\vec{\mu}\right)^\T \mat{\Sigma}^{-1} \left(\vecx-\vec{\mu}\right)}}
\disteq{mean}{\vec{\mu}}
\disteq{variance}{\mat{\Sigma}}
\end{distribution}
\TODO{k-variate normal plot}
\end{bigformula}
\begin{formula}{laplace}
\absLabel[laplace_distribution]
\desc{Laplace-distribution}{}{}
\desc[german]{Laplace-Verteilung}{}{}
\TODO{TODO}
\end{formula}
\begin{bigformula}{cauchy} \begin{bigformula}{cauchy}
\absLabel[lorentz_distribution]
\desc{Cauchys / Lorentz distribution}{Also known as Cauchy-Lorentz distribution, Lorentz(ian) function, Breit-Wigner distribution.}{} \desc{Cauchys / Lorentz distribution}{Also known as Cauchy-Lorentz distribution, Lorentz(ian) function, Breit-Wigner distribution.}{}
\desc[german]{Cauchy / Lorentz-Verteilung}{Auch bekannt als Cauchy-Lorentz Verteilung, Lorentz Funktion, Breit-Wigner Verteilung.}{} \desc[german]{Cauchy / Lorentz-Verteilung}{Auch bekannt als Cauchy-Lorentz Verteilung, Lorentz Funktion, Breit-Wigner Verteilung.}{}
\begin{minipage}{\distleftwidth} \begin{minipage}{\distleftwidth}
@ -121,6 +149,7 @@
\end{bigformula} \end{bigformula}
\begin{bigformula}{maxwell-boltzmann} \begin{bigformula}{maxwell-boltzmann}
\absLabel[maxwell-boltzmann_distribution]
\desc{Maxwell-Boltzmann distribution}{}{} \desc{Maxwell-Boltzmann distribution}{}{}
\desc[german]{Maxwell-Boltzmann Verteilung}{}{} \desc[german]{Maxwell-Boltzmann Verteilung}{}{}
\begin{minipage}{\distleftwidth} \begin{minipage}{\distleftwidth}
@ -142,6 +171,7 @@
\begin{bigformula}{gamma} \begin{bigformula}{gamma}
\absLabel[gamma_distribution]
\desc{Gamma Distribution}{with $\lambda$ parameter}{$\Gamma$ \fqEqRef{math:cal:integral:list:gamma}, $\gamma$ \fqEqRef{math:cal:integral:list:lower_incomplete_gamma_function}} \desc{Gamma Distribution}{with $\lambda$ parameter}{$\Gamma$ \fqEqRef{math:cal:integral:list:gamma}, $\gamma$ \fqEqRef{math:cal:integral:list:lower_incomplete_gamma_function}}
\desc[german]{Gamma Verteilung}{mit $\lambda$ Parameter}{} \desc[german]{Gamma Verteilung}{mit $\lambda$ Parameter}{}
\begin{minipage}{\distleftwidth} \begin{minipage}{\distleftwidth}
@ -305,8 +335,8 @@
\eq{L:\Theta \rightarrow [0,1], \quad \theta \mapsto \rho(x|\theta)} \eq{L:\Theta \rightarrow [0,1], \quad \theta \mapsto \rho(x|\theta)}
\end{formula} \end{formula}
\begin{formula}{likelihood_independant} \begin{formula}{likelihood_independant}
\desc{Likelihood function}{for independent and identically distributed random variables}{$x_i$ $n$ random variables, $\rho$ \fqEqRef{math:pt:pdf} $x\mapsto \rho(x|\theta)$ depending on parameter $\theta$} \desc{Likelihood function}{for independent and identically distributed random variables}{$x_i$ $n$ random variables, $\rho$ \fqEqRef{math:pt:pdf} $x\mapsto f(x|\theta)$ depending on parameter $\theta$}
\desc[german]{Likelihood function}{für unabhängig und identisch verteilte Zufallsvariablen}{$x_i$ $n$ Zufallsvariablen$\rho$ \fqEqRef{math:pt:pdf} $x\mapsto \rho(x|\theta)$ hängt ab von Parameter $\theta$} \desc[german]{Likelihood function}{für unabhängig und identisch verteilte Zufallsvariablen}{$x_i$ $n$ Zufallsvariablen$\rho$ \fqEqRef{math:pt:pdf} $x\mapsto f(x|\theta)$ hängt ab von Parameter $\theta$}
\eq{L(\theta) = \prod_{i=1}^n f(x_i;\theta)} \eq{L(\theta) = \prod_{i=1}^n f(x_i;\theta)}
\end{formula} \end{formula}
\begin{formula}{maximum_likelihood_estimate} \begin{formula}{maximum_likelihood_estimate}

View File

@ -118,10 +118,10 @@
##2% ##2%
\end{alignat} \end{alignat}
} }
\newcommand{\fig}[2][1.0]{ \newcommand{\fig}[1]{
\newFormulaEntry \newFormulaEntry
\centering \centering
\includegraphics[width=##1\textwidth]{##2} \includegraphics{##1}
} }
% 1: content for the ttext environment % 1: content for the ttext environment
\newcommand{\ttxt}[2][#1:desc]{ \newcommand{\ttxt}[2][#1:desc]{
@ -163,7 +163,7 @@
\begingroup \begingroup
\label{f:\fqname:#1} \label{f:\fqname:#1}
\storeLabel{\fqname:#1} \storeLabel{\fqname:#1} % write label witout type prefix to aux file
\par\noindent\ignorespaces \par\noindent\ignorespaces
% \textcolor{gray}{\hrule} % \textcolor{gray}{\hrule}
% \vspace{0.5\baselineskip} % \vspace{0.5\baselineskip}
@ -189,6 +189,7 @@
\par\noindent \par\noindent
\begin{minipage}{\textwidth} % using a minipage to now allow line breaks within the bigformula \begin{minipage}{\textwidth} % using a minipage to now allow line breaks within the bigformula
\label{f:\fqname:#1} \label{f:\fqname:#1}
\storeLabel{\fqname:#1} % write label witout type prefix to aux file
\par\noindent\ignorespaces \par\noindent\ignorespaces
% \textcolor{gray}{\hrule} % \textcolor{gray}{\hrule}
% \vspace{0.5\baselineskip} % \vspace{0.5\baselineskip}

View File

@ -132,7 +132,7 @@
% <symbol> % <symbol>
\newrobustcmd{\qtyRef}[1]{% \newrobustcmd{\qtyRef}[1]{%
\edef\tempname{\luaDoubleFieldValue{quantities}{"#1"}{"linkto"}}% \edef\tempname{\luaDoubleFieldValue{quantities}{"#1"}{"linkto"}}%
\hyperref[qty:#1]{\expandafter\GT\expandafter{\tempname:#1}}% \hyperref[qty:#1]{\GT{\tempname:#1}}%
} }
% <symbol> <name> % <symbol> <name>
\newrobustcmd{\QtyRef}[1]{% \newrobustcmd{\QtyRef}[1]{%
@ -142,7 +142,7 @@
% <name> % <name>
\newrobustcmd{\constRef}[1]{% \newrobustcmd{\constRef}[1]{%
\edef\tempname{\luaDoubleFieldValue{constants}{"#1"}{"linkto"}}% \edef\tempname{\luaDoubleFieldValue{constants}{"#1"}{"linkto"}}%
\hyperref[const:#1]{\expandafter\GT\expandafter{\tempname:#1}}% \hyperref[const:#1]{\GT{\tempname:#1}}%
} }
% <symbol> <name> % <symbol> <name>
\newrobustcmd{\ConstRef}[1]{% \newrobustcmd{\ConstRef}[1]{%
@ -184,11 +184,12 @@
abbrLabels["#2"]["fqname"] = [[#1]] abbrLabels["#2"]["fqname"] = [[#1]]
} }
} }
% [1]: % [1]: text
% 2: key
\newrobustcmd{\absRef}[2][\relax]{% \newrobustcmd{\absRef}[2][\relax]{%
\directlua{ \directlua{
if absLabels["#2"] == nil then if absLabels["#2"] == nil then
tex.sprint("\\detokenize{#2}???") tex.sprint(string.sanitize(\luastring{#2}) .. "???")
else else
if "#1" == "" then %-- if [#1] is not given, use translation of key as text, else us given text if "#1" == "" then %-- if [#1] is not given, use translation of key as text, else us given text
tex.sprint("\\hyperref[" .. absLabels["#2"] .. "]{\\GT{" .. absLabels["#2"] .. "}}") tex.sprint("\\hyperref[" .. absLabels["#2"] .. "]{\\GT{" .. absLabels["#2"] .. "}}")
@ -201,7 +202,7 @@
\newrobustcmd{\abbrRef}[1]{% \newrobustcmd{\abbrRef}[1]{%
\directlua{ \directlua{
if abbrLabels["#1"] == nil then if abbrLabels["#1"] == nil then
tex.sprint("\\detokenize{#1}???") tex.sprint(string.sanitize(\luastring{#1}) .. "???")
else else
tex.sprint("\\hyperref[" .. abbrLabels["#1"]["fqname"] .. "]{" .. abbrLabels["#1"]["abbr"] .. "}") tex.sprint("\\hyperref[" .. abbrLabels["#1"]["fqname"] .. "]{" .. abbrLabels["#1"]["abbr"] .. "}")
end end

View File

@ -3,9 +3,7 @@
\RequirePackage{etoolbox} \RequirePackage{etoolbox}
\directLuaAux{ \directLuaAux{
if quantities == nil then quantities = quantities or {}
quantities = {}
end
} }
% [1]: label to point to % [1]: label to point to
@ -31,13 +29,13 @@
\newcommand\quantity@print[1]{ \newcommand\quantity@print[1]{
\begingroup % for label \begingroup % for label
Symbol: $\luavar{quantities["#1"]["symbol"]}$ Symbol: $\luavar{quantities["#1"]["symbol"]}$
\\Unit: $\directlua{split_and_print_units(quantities["#1"]["units"])}$ \hfill Unit: $\directlua{split_and_print_units(quantities["#1"]["units"])}$ %
% label it only once % label it only once
\directlua{ \directlua{
if quantities["#1"]["labeled"] == nil then if quantities["#1"]["labeled"] == nil then
quantities["#1"]["labeled"] = true quantities["#1"]["labeled"] = true
tex.print("\\label{qty:#1}") tex.print("\\label{qty:#1}")
end end
} }%
\endgroup \endgroup%
} }

View File

@ -11,10 +11,11 @@
-- string to append to missing translations -- string to append to missing translations
-- unknownTranslation = "???" -- unknownTranslation = "???"
unknownTranslation = "" unknownTranslation = ""
-- language that is set in usepackage[<lang>]{babel}
language = "\languagename" language = "\languagename"
fallbackLanguage = "english" fallbackLanguage = "english"
-- using additional .aux extension because vimtex wouldnt stop compiling otherwise -- using additional extension because vimtex wouldnt stop compiling otherwise
translationsFilepath = OUTDIR .. "/translations.lua.aux" or "/tmp/translations.lua" translationsFilepath = OUTDIR .. "/translations.lua.txt" or "/tmp/translations.lua.txt"
function tlAdd(language, key, value) function tlAdd(language, key, value)
if value == "" then if value == "" then

View File

@ -218,6 +218,16 @@
} }
\end{formula} \end{formula}
\begin{formula}{variational_principle}
\desc{Variational principle}{}{}
\desc[german]{Variationsprinzip}{}{}
\ttxt{\eng{
If $\hat{H}\psi = E\psi$, then $E_0 \le E = \Braket{\psi|\hat{H}|\psi}$. The ground state can thus be found by varying $\psi$ until $E$ is minimized.
}\ger{
Wenn $\hat{H}\psi = E\psi$, dann ist $E_0 \le E = \Braket{\psi|\hat{H}|\psi}$. Der Grundzustand kann daher gefunden werden, indem $\psi$ variiert wird bis die Energie minimiert ist.
}}
\end{formula}
\Subsection[ \Subsection[
\eng{Time evolution} \eng{Time evolution}
\ger{Zeitentwicklug} \ger{Zeitentwicklug}

View File

@ -85,7 +85,7 @@
\begin{formula}{pressure} \begin{formula}{pressure}
\desc{Pressure}{}{} \desc{Pressure}{}{}
\desc[german]{Druck}{}{} \desc[german]{Druck}{}{}
\quantity{p}{\newtone\per\m^2}{} \quantity{p}{\newton\per\m^2}{}
\end{formula} \end{formula}

View File

@ -526,8 +526,8 @@
\begin{formula}{maxwell_velocity} \begin{formula}{maxwell_velocity}
\desc{Maxwell velocity distribution}{See also \ref{sec:pt:distributions::maxwell-boltzmann}}{} \desc{Maxwell velocity distribution}{See \absRef{maxwell-boltzmann_distribution}}{}
\desc[german]{Maxwellsche Geschwindigkeitsverteilung}{Siehe auch \ref{sec:pt:distributions::maxwell-boltzmann}}{} \desc[german]{Maxwellsche Geschwindigkeitsverteilung}{Siehe auch \absRef{maxwell-boltzmann_distribution}}{}
\eq{w(v) \d v = 4\pi \left(\frac{\beta m}{2\pi}\right)^\frac{3}{2} v^2 \e^{-\frac{\beta m v^2}{2}} \d v} \eq{w(v) \d v = 4\pi \left(\frac{\beta m}{2\pi}\right)^\frac{3}{2} v^2 \e^{-\frac{\beta m v^2}{2}} \d v}
\end{formula} \end{formula}
@ -612,10 +612,11 @@
% b - \frac{a}{\kB T}} % b - \frac{a}{\kB T}}
\end{formula} \end{formula}
\begin{formula}{lennard_jones} \absLabel \begin{formula}{lennard_jones}
\absLabel
\desc{Lennard-Jones potential}{Potential between two molecules. Attractive for $r > \sigma$, repulsive for $r < \sigma$.\\ In condensed matter: Attraction due to Landau Dispersion \TODO{verify} and repulsion due to Pauli exclusion principle.}{} \desc{Lennard-Jones potential}{Potential between two molecules. Attractive for $r > \sigma$, repulsive for $r < \sigma$.\\ In condensed matter: Attraction due to Landau Dispersion \TODO{verify} and repulsion due to Pauli exclusion principle.}{}
\desc[german]{Lennard-Jones-Potential}{Potential zwischen zwei Molekülen. Attraktiv für $r > \sigma$, repulsiv für $r < \sigma$.\\ In Festkörpern: Anziehung durch Landau-Dispersion und Abstoßung durch Pauli-Prinzip.}{} \desc[german]{Lennard-Jones-Potential}{Potential zwischen zwei Molekülen. Attraktiv für $r > \sigma$, repulsiv für $r < \sigma$.\\ In Festkörpern: Anziehung durch Landau-Dispersion und Abstoßung durch Pauli-Prinzip.}{}
\fig[0.7]{img/potential_lennard_jones.pdf} \fig{img/potential_lennard_jones.pdf}
\eq{V(r) = 4\epsilon \left[\left(\frac{\sigma}{r}\right)^{12} - \left(\frac{\sigma}{r}\right)^{6}\right]} \eq{V(r) = 4\epsilon \left[\left(\frac{\sigma}{r}\right)^{12} - \left(\frac{\sigma}{r}\right)^{6}\right]}
\end{formula} \end{formula}
@ -688,7 +689,7 @@
\begin{formula}{occupation_number} \begin{formula}{occupation_number}
\desc{Occupation number}{}{\bosfer} \desc{Occupation number}{}{\bosfer}
\desc[german]{Besetzungszahl}{}{\bosfer} \desc[german]{Besetzungszahl}{}{\bosfer}
\fig[0.7]{img/td_id_qgas_distributions.pdf} \fig{img/td_id_qgas_distributions.pdf}
\eq{ \eq{
\braket{n(\epsilon)} &= \frac{1}{\e^{\beta(\epsilon - \mu)} \mp 1} \\ \braket{n(\epsilon)} &= \frac{1}{\e^{\beta(\epsilon - \mu)} \mp 1} \\
\shortintertext{\GT{for} $\epsilon - \mu \gg \kB T$} \shortintertext{\GT{for} $\epsilon - \mu \gg \kB T$}
@ -760,7 +761,7 @@
\begin{formula}{occupation} \begin{formula}{occupation}
\desc{Occupation number}{Fermi-Dirac distribution. At $T=0$ \textit{Fermi edge} at $\epsilon=\mu$}{} \desc{Occupation number}{Fermi-Dirac distribution. At $T=0$ \textit{Fermi edge} at $\epsilon=\mu$}{}
\desc[german]{Besetzungszahl}{Fermi-Dirac Verteilung}{Bei $T=0$ \textit{Fermi-Kante} bei $\epsilon=\mu$} \desc[german]{Besetzungszahl}{Fermi-Dirac Verteilung}{Bei $T=0$ \textit{Fermi-Kante} bei $\epsilon=\mu$}
\fig[0.7]{img/td_fermi_occupation.pdf} \fig{img/td_fermi_occupation.pdf}
\eq{\braket{n_p} = \frac{1}{\e^{\beta(\epsilon-\mu)}+1}} \eq{\braket{n_p} = \frac{1}{\e^{\beta(\epsilon-\mu)}+1}}
\end{formula} \end{formula}
@ -827,7 +828,7 @@
\begin{formula}{heat_cap} \begin{formula}{heat_cap}
\desc{Heat capacity}{\gt{low_temps}}{differs from \fqEqRef{td:TODO:petit_dulong}} \desc{Heat capacity}{\gt{low_temps}}{differs from \fqEqRef{td:TODO:petit_dulong}}
\desc[german]{Wärmecapacity}{\gt{low_temps}}{weicht ab vom \fqEqRef{td:TODO:petit_dulong}} \desc[german]{Wärmecapacity}{\gt{low_temps}}{weicht ab vom \fqEqRef{td:TODO:petit_dulong}}
\fig[0.7]{img/td_fermi_heat_capacity.pdf} \fig{img/td_fermi_heat_capacity.pdf}
\eq{C_V = \pdv{E}{T}_V = N\kB \frac{\pi}{2} \left(\frac{T}{T_\text{F}}\right)} \eq{C_V = \pdv{E}{T}_V = N\kB \frac{\pi}{2} \left(\frac{T}{T_\text{F}}\right)}
\end{formula} \end{formula}

View File

@ -1,38 +1,28 @@
% This file was generated by scripts/formulary.py % This file was generated by scripts/formulary.py
% Do not edit it directly, changes will be overwritten % Do not edit it directly, changes will be overwritten
\definecolor{fg-blue}{HTML}{072140}
\definecolor{bg-blue}{HTML}{5E94D4}
\definecolor{alt-blue}{HTML}{3070B3}
\definecolor{bg-yellow}{HTML}{FED702}
\definecolor{fg-yellow}{HTML}{CBAB01}
\definecolor{alt-yellow}{HTML}{FEDE34}
\definecolor{bg-orange}{HTML}{F7811E}
\definecolor{fg-orange}{HTML}{D99208}
\definecolor{alt-orange}{HTML}{F9BF4E}
\definecolor{bg-purple}{HTML}{B55CA5}
\definecolor{fg-purple}{HTML}{9B468D}
\definecolor{alt-purple}{HTML}{C680BB}
\definecolor{bg-red}{HTML}{EA7237}
\definecolor{fg-red}{HTML}{D95117}
\definecolor{alt-red}{HTML}{EF9067}
\definecolor{bg-green}{HTML}{9FBA36}
\definecolor{fg-green}{HTML}{7D922A}
\definecolor{alt-green}{HTML}{B6CE55}
\definecolor{bg-gray}{HTML}{475058}
\definecolor{fg-gray}{HTML}{20252A}
\definecolor{alt-gray}{HTML}{333A41}
\definecolor{bg-aqua}{HTML}{689d6a}
\definecolor{fg-aqua}{HTML}{427b58}
\definecolor{fg0-hard}{HTML}{000000}
\definecolor{fg0}{HTML}{000000} \definecolor{fg0}{HTML}{000000}
\definecolor{fg0-soft}{HTML}{20252A} \definecolor{bg0}{HTML}{ffffff}
\definecolor{fg1}{HTML}{072140} \definecolor{fg1}{HTML}{3c3836}
\definecolor{fg2}{HTML}{333A41} \definecolor{fg2}{HTML}{504945}
\definecolor{fg3}{HTML}{475058} \definecolor{fg3}{HTML}{665c54}
\definecolor{fg4}{HTML}{6A757E} \definecolor{fg4}{HTML}{7c6f64}
\definecolor{bg0-hard}{HTML}{FFFFFF} \definecolor{bg1}{HTML}{ebdbb2}
\definecolor{bg0}{HTML}{FBF9FA} \definecolor{bg2}{HTML}{d5c4a1}
\definecolor{bg0-soft}{HTML}{EBECEF} \definecolor{bg3}{HTML}{bdae93}
\definecolor{bg1}{HTML}{DDE2E6} \definecolor{bg4}{HTML}{a89984}
\definecolor{bg2}{HTML}{E3EEFA} \definecolor{fg-red}{HTML}{9d0006}
\definecolor{bg3}{HTML}{F0F5FA} \definecolor{fg-orange}{HTML}{af3a03}
\definecolor{fg-yellow}{HTML}{b57614}
\definecolor{fg-green}{HTML}{79740e}
\definecolor{fg-aqua}{HTML}{427b58}
\definecolor{fg-blue}{HTML}{076678}
\definecolor{fg-purple}{HTML}{8f3f71}
\definecolor{fg-gray}{HTML}{7c6f64}
\definecolor{bg-red}{HTML}{fb4934}
\definecolor{bg-orange}{HTML}{f38019}
\definecolor{bg-yellow}{HTML}{fabd2f}
\definecolor{bg-green}{HTML}{b8bb26}
\definecolor{bg-aqua}{HTML}{8ec07c}
\definecolor{bg-blue}{HTML}{83a598}
\definecolor{bg-purple}{HTML}{d3869b}
\definecolor{bg-gray}{HTML}{a89984}

View File

@ -1,180 +0,0 @@
% Everything related to referencing stuff
\newcommand\printFqName{\expandafter\detokenize\expandafter{\fqname}}
% SECTIONING
% start <section>, get heading from translation, set label
% secFqname is the fully qualified name of sections: the keys of all previous sections joined with a ':'
% fqname is secFqname:<key> where <key> is the key/id of some environment, like formula
% [1]: code to run after setting \fqname, but before the \part, \section etc
% 2: key
\newcommand{\Part}[2][desc]{
\newpage
\def\partName{#2}
\def\sectionName{}
\def\subsectionName{}
\def\subsubsectionName{}
\edef\fqname{\partName}
\edef\secFqname{\fqname}
#1
\edef\fqnameText{\expandafter\GetTranslation\expandafter{\fqname}}
\part{\fqnameText}
\label{sec:\fqname}
}
\newcommand{\Section}[2][]{
\def\sectionName{#2}
\def\subsectionName{}
\def\subsubsectionName{}
\edef\fqname{\partName:\sectionName}
\edef\secFqname{\fqname}
#1
% this is necessary so that \section takes the fully expanded string. Otherwise the pdf toc will have just the fqname
\edef\fqnameText{\expandafter\GetTranslation\expandafter{\fqname}}
\section{\fqnameText}
\label{sec:\fqname}
}
% \newcommand{\Subsection}[1]{\Subsection{#1}{}}
\newcommand{\Subsection}[2][]{
\def\subsectionName{#2}
\def\subsubsectionName{}
\edef\fqname{\partName:\sectionName:\subsectionName}
\edef\secFqname{\fqname}
#1
\edef\fqnameText{\expandafter\GetTranslation\expandafter{\fqname}}
\subsection{\fqnameText}
\label{sec:\fqname}
}
\newcommand{\Subsubsection}[2][]{
\def\subsubsectionName{#2}
\edef\fqname{\partName:\sectionName:\subsectionName:\subsubsectionName}
\edef\secFqname{\fqname}
#1
\edef\fqnameText{\expandafter\GetTranslation\expandafter{\fqname}}
\subsubsection{\fqnameText}
\label{sec:\fqname}
}
\edef\fqname{NULL}
\newcommand\luaDoubleFieldValue[3]{%
\directlua{
if #1 \string~= nil and #1[#2] \string~= nil and #1[#2][#3] \string~= nil then
tex.sprint(#1[#2][#3])
return
end
luatexbase.module_warning('luaDoubleFieldValue', 'Invalid indices to `#1`: `#2` and `#3`');
tex.sprint("???")
}%
}
% REFERENCES
% All xyzRef commands link to the key using the translated name
% Uppercase (XyzRef) commands have different link texts, but the same link target
% 1: key/fully qualified name (without qty/eq/sec/const/el... prefix)
% Equations/Formulas
% \newrobustcmd{\fqEqRef}[1]{%
\newrobustcmd{\fqEqRef}[1]{%
% \edef\fqeqrefname{\GT{#1}}
% \hyperref[eq:#1]{\fqeqrefname}
\hyperref[f:#1]{\GT{#1}}%
}
% Formula in the current section
\newrobustcmd{\secEqRef}[1]{%
% \edef\fqeqrefname{\GT{#1}}
% \hyperref[eq:#1]{\fqeqrefname}
\hyperref[f:\secFqname:#1]{\GT{\secFqname:#1}}%
}
% Section
% <name>
\newrobustcmd{\fqSecRef}[1]{%
\hyperref[sec:#1]{\GT{#1}}%
}
% Quantities
% <symbol>
\newrobustcmd{\qtyRef}[1]{%
\edef\tempname{\luaDoubleFieldValue{quantities}{"#1"}{"fqname"}}%
\hyperref[qty:#1]{\expandafter\GT\expandafter{\tempname:#1}}%
}
% <symbol> <name>
\newrobustcmd{\QtyRef}[1]{%
$\luaDoubleFieldValue{quantities}{"#1"}{"symbol"}$ \qtyRef{#1}%
}
% Constants
% <name>
\newrobustcmd{\constRef}[1]{%
\edef\tempname{\luaDoubleFieldValue{constants}{"#1"}{"fqname"}}%
\hyperref[const:#1]{\expandafter\GT\expandafter{\tempname:#1}}%
}
% <symbol> <name>
\newrobustcmd{\ConstRef}[1]{%
$\luaDoubleFieldValue{constants}{"#1"}{"symbol"}$ \constRef{#1}%
}
% Element from periodic table
% <symbol>
\newrobustcmd{\elRef}[1]{%
\hyperref[el:#1]{{\color{fg0}#1}}%
}
% <name>
\newrobustcmd{\ElRef}[1]{%
\hyperref[el:#1]{\GT{el:#1}}%
}
% "LABELS"
% These currently do not place a label,
% instead they provide an alternative way to reference an existing label
\directLuaAux{
if absLabels == nil then
absLabels = {}
end
}
% [1]: target (fqname to point to)
% 2: key
\newcommand{\absLink}[2][sec:\fqname]{
\directLuaAuxExpand{
absLabels["#2"] = [[#1]]
}
}
\directLuaAux{
if abbrLabels == nil then
abbrLabels = {}
end
}
% [1]: target (fqname to point to)
% 2: key
% 3: label (abbreviation)
\newcommand{\abbrLink}[3][sec:\fqname]{
\directLuaAuxExpand{
abbrLabels["#2"] = {}
abbrLabels["#2"]["abbr"] = [[#3]]
abbrLabels["#2"]["fqname"] = [[#1]]
}
}
% [1]:
\newrobustcmd{\absRef}[2][\relax]{%
\directlua{
if absLabels["#2"] == nil then
tex.sprint("\\detokenize{#2}???")
else
if "#1" == "" then %-- if [#1] is not given, use translation of key as text, else us given text
tex.sprint("\\hyperref[" .. absLabels["#2"] .. "]{\\GT{" .. absLabels["#2"] .. "}}")
else
tex.sprint("\\hyperref[" .. absLabels["#2"] .. "]{\luaescapestring{#1}}")
end
end
}
}
\newrobustcmd{\abbrRef}[1]{%
\directlua{
if abbrLabels["#1"] == nil then
tex.sprint("\\detokenize{#1}???")
else
tex.sprint("\\hyperref[" .. abbrLabels["#1"]["fqname"] .. "]{" .. abbrLabels["#1"]["abbr"] .. "}")
end
}
}