\documentclass[a4paper,11pt]{article}

\usepackage[portrait,margin=0.5in,top=0.5in,bottom=0.5in]{geometry}
\usepackage{amsmath,multicol,siunitx,amsfonts,adjustbox}
\usepackage[tiny]{titlesec}
\usepackage[version=4]{mhchem}
\usepackage[overload]{abraces}
\usepackage{mathtools}
\usepackage{physics}
\usepackage{bbm}
\usepackage{enumitem}
\usepackage{bm}

\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\titlespacing{\section}{0pt}{5pt}{0pt}
\titlespacing{\subsection}{0pt}{5pt}{0pt}
\titlespacing{\subsubsection}{0pt}{5pt}{0pt}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.55em}
\pagenumbering{gobble}
\setlength{\columnseprule}{1pt}

\newcommand{\forceindent}{\leavevmode{\parindent=1em\indent}}

\title{\vspace{-1em} Formulari final Física Atòmica i Radiació}
\author{Adrià Vilanova Martínez}
\date{}

\everymath{\displaystyle}
\def\hrulefilll{\leavevmode\leaders\hrule height 1.4pt\hfill\kern 0pt}
\def\hrulefillll{\leavevmode\leaders\hrule height 2.1pt\hfill\kern 0pt}
\newcommand*{\pcdot}{\makebox[1ex]{\textbf{$\cdot$}}}%
\newcommand*{\Ha}{\mathcal{H}}%

\setlist[itemize]{noitemsep, topsep=0pt}
\setlist[enumerate]{noitemsep, topsep=0pt}

\begin{document}
  \maketitle

  \begin{multicols*}{2}
    \section{Unitats atòmiques}

    $m_e = e = \hbar = 1 \, \text{(u.a.)}, \quad \mu = e = \hbar = 1 \, \text{(u.a. gen.)}$.

    $a_0 = \frac{\hbar^2}{m_e e^2}$ (\underline{radi de Bohr}).

    $E_h = \frac{m_e e^4}{\hbar^2} \approx \SI{27.211386}{\eV}$ (\underline{energia de Hartree}).

    $\alpha := \frac{e^2}{\hbar c} \approx \frac{1}{137}$ (\underline{constant d'estructura fina (FS)}).

    $t_0 = \frac{\hbar^3}{m_e e^4}, \quad v_0 = \frac{e^2}{\hbar}$ (\underline{velocidad de Bohr}).

    \hrulefilll

    \section{Estructura grossa d'àtoms hidrogenoides}

    {\small Nucli ($Q = Ze$, $M \approx Z m_p + N m_n \approx A m_p$) interaccionant electrostàticament amb electró ($Q = -e$, $m_e$).}

    $\frac{1}{\mu} = \frac{1}{m_1} + \frac{1}{m_2} \implies \mu = \frac{m_1 m_2}{m_1 + m_2}$.

    \hrulefill

    $\Ha \psi(\mathbf{r}) = E \psi(\mathbf{r}), \quad \boxed{\Ha = - \frac{\hbar^2}{2 \mu} \laplacian_{\mathbf{r}} - \frac{Z e^2}{r}}$, \\[0.25em]
    on $\laplacian_\mathbf{r} = \frac{1}{r} \frac{\partial^2}{\partial r^2} (r \pcdot) - \frac{\mathbf{L}^2}{r^2}, \quad \mathbf{L} := - i \mathbf{r} \times \grad$.

    $\psi(\mathbf{r}, \sigma) = \ket{n \, l \, m_l \, m_s} \frac{P_{nl}(r)}{r} Y_{lm}(\theta, \phi) (\chi_{m_s} (\sigma))$.

    $\bra{n' \, l' \, m_l' \, m_s'}\ket{n \, l \, m_l \, m_s} = \delta_{n' n} \, \delta_{l' l} \, \delta_{m_l' m_l} \, (\delta_{m_s' m_s}) =$ \\
    ${}\quad = \int_0^\infty dr \, P_{n' \, l'}(r) P_{n \, l}(r) \int_{4 \pi} d\Omega \, Y^*_{l' \, m'}(\hat{r}) Y_{l m}(\hat{r}) \times$ \\
    ${}\quad \times \left( \sum_\sigma \chi^*_{m_s'}(\sigma) \chi_{m_s}(\sigma) \right). \quad (d\mathbf{r} = r^2 \, dr \, \sin \theta \, d\theta \, d\phi)$.

    $\psi_{n l m}^{(Z)}(\mathbf{r}) = Z^{3/2} \psi_{n l m}^{(Z = 1)}(Z \mathbf{r})$.

    {\small $P_{nl}(r)$ satisfà l'EdS radial amb un potencial efectiu:}
    $U_l(r) := \underbrace{- \frac{Z e^2}{r}}_{V(r)} + \underbrace{\frac{\hbar^2}{2 \mu} \frac{l(l + 1)}{r^2}}_\text{part radial de T}$.

    $\left[ \smash[b]{\underbrace{- \frac{\hbar^2}{2 \mu} \frac{d^2}{dr^2}}_\text{part de T}} + U_l(r) \right] P_{nl}(r) = E_n P_{nl}(r)$ \\[0.5em]

    $Y_{l m}(\theta, \phi) = (-1)^l \, Y_{l m}(\pi - \theta, \pi + \phi)$, per tant: \\
    $F(\mathbf{r}) := f(r) Y_{l m}(\mathbf{r}) \implies F(- \mathbf{r}) = (-1)^l F(\mathbf{r})$.

    $[\mathbf{L}^2, \Ha] = [L_z, \Ha] = [L_i, \mathcal{P}] = [\mathcal{P}, \Ha] = 0$.

    $\int_0^\infty P(r) \frac{d^2 P(r)}{dr^2} \, dr = - \int_0^\infty \left[ \frac{dP(r)}{dr} \right]^2 \, dr$

    \hrulefill

    $\Ha \psi(\mathbf{r}) = E \psi(\mathbf{r}), \quad \mathbf{L}^2 \psi(\mathbf{r}) = l(l + 1) \psi(\mathbf{r})$, \\
    $L_z \psi(\mathbf{r}) = m \psi(\mathbf{r}), \quad \mathcal{P}^2 \psi(\mathbf{r}) = p \psi(\mathbf{r}) \quad (p \in \{-1, 1\})$.

    \hrulefill

    \underline{Energia sist. hidrogenoide (no relativista)} $g = (2)n^2$:

    $\boxed{E_n = - \frac{1}{2} \frac{Z^2}{n^2} E_h, \; E_n = - \frac{1}{2} \frac{Z^2}{n^2} E_\mu, \; E_\mu = \frac{\mu}{m_e} E_h < E_h.}$

    {\small $E_n(M) - E_n(M = \infty) = - \frac{m_e}{m_e + M} E_n(M = \infty) > 0$.}

    \underline{Th. Virial}: $V \propto \mathbf{r}^s \Rightarrow 2 \expval{T} = s \expval{V}$ {\small (Coulomb: $s = -1$).}

    \underline{Efecte Lamb (volum nuclear finit)}: \\[0.2em]
    $\Delta E_{n \, l}^{\text{vnf}} \approx \frac{2}{5} \frac{Z^4}{n^3} \delta_{l 0} \left( \frac{R_N}{a_0} \right)^2 \left( \frac{\mu}{m_e} \right)^3 E_h \geq 0$, \\[0.4em]
    {\small $R_N \approx 2.3 \cdot 10^{-5} a_0 A^{1/3}$. (trenca $l$, creix ràpidament amb $Z$).}

    \hrulefilll

    \section{Estructura fina (FS) d'àtoms hidrogenoides}\vspace{-.5em}

    { \small Té en compte spin i efectes relativistes, a ordre $\beta^2 \equiv \left(\frac{v}{c}\right)^2$ (amb potencial Coulombià). }

    \underline{Magnetó de Bohr}: $\mu_B := \frac{e \hbar}{2 m_e c}$.

    \underline{Moment dipolar magnètic orbital}: $\mathbf{M}_L = - g_L \mu_B \mathbf{L}$, amb $g_L = 1$.

    \underline{Moment dipolar magnètic d'espí}: $\mathbf{M}_S = - g_S \mu_B \mathbf{S}$, amb $g_S = 2$.

    $\boxed{\Ha_\text{fs} = \Ha_P + \Ha', \quad \Ha' = \Ha_\text{m} + \Ha_\text{so} + \Ha_\text{Darwin}},$ \\
    $\Ha_{so} = \xi(r) \, \mathbf{L} \cdot \mathbf{S}$, {\small on $\xi(r) := \frac{1}{2} \frac{\hbar^2 e^2}{m_e^2 c^2} Z \frac{1}{r^3}$.}

    Els $\ket{n \, l \, s \, j \, m}$ (\underline{base acoblada}) són VEPs de $\Ha'$.

    $E_{nlj} = E_n + \Delta E_{nlj}, \quad \Delta E_{nlj} = \expval{\Ha_\text{m}} + \expval{\Ha_\text{SO}} + \expval{\Ha_\text{DW}}$.

    {\small $\expval{\Ha_\text{SO}} = - E_n \frac{(\alpha Z)^2}{2n} \frac{j(j + 1) - l(l + 1) - \frac{3}{4}}{l\left(l + \frac{1}{2}\right)(l + 1)} (1 - \delta_{l0})$, \\
    $\expval{\Ha_\text{m}} = - E_n \left( \frac{\alpha Z}{n} \right)^2 \left( \frac{3}{4} - \frac{n}{l + \frac{1}{2}} \right) \leq 0$, \\
    $\expval{\Ha_\text{DW}} = - E_n \frac{(\alpha Z)^2}{n} \delta_{l0} \geq 0$.}

    $\Delta E_{nj} = E_n \left( \frac{\alpha Z}{n} \right)^2 \left[ \frac{n}{j + \frac{1}{2}} - \frac{3}{4} \right] < 0$.

    $E_{nj} = E_n + \Delta E_{nj}, \quad g = \begin{cases}
      2(2j + 1), & j < n - 1/2, \\
      2j + 1, & j = n - 1/2.
    \end{cases}$

    {\small Donat $n$, els $n$ nivells $j \in \left\{ \frac{1}{2}, \ldots, n - \frac{1}{2} \right\}$ són multiplet f.s.}

    \hrulefilll

    \section{Àtoms multielectrònics}
    \subsection{Aproximació electrostàtica}

    $N$ electrons lligats al nucli ($M, Ze$).

    Considerem $E_\text{kin}$ no relativista de $e^-$'s i nucli, i l'ener. potencial d'interacció electrostàtica de $e^-$'s i nucli, i els $e^-$'s entre ells.

    \underline{Pr. de simetrització}: A un sist. de part. idèntiques, $[P, \Ha] = 0 \quad \forall P \in \mathcal{S}_n$.

    \underline{F. compl. simètrica}: $P \psi_S = \psi_S \quad \forall P \in \mathcal{S}_n$. \\
    \underline{F. compl. antisimètrica}: $P \psi_S = (-1)^P \psi_S \quad \forall P \in \mathcal{S}_n$. \\

    \underline{Simetritzador}: $S_N := \frac{1}{N!} \sum_{P \in \mathcal{S}_n} P$. \\
    \underline{Antisimetritzador}: $A_N := \frac{1}{N!} \sum_{P \in \mathcal{S}_n} (-1)^P P$. \\

    Estats d'spin enter (bosons) són compl. simètrics. \\
    Estats d'spin semienter (fermions) són compl. antisim.

    \subsection{Aproximació de partícules independents}
    $r_{ij} \sim R$, $r_i \sim R$. Suposant $N \ll Z$ ($\implies v_\text{ee} \ll |v_\text{en}|$): \\
    $\Ha_\text{Aprox. e.s.} = \Ha_\text{Aprox. P.I.} + \Ha'$. $\Ha_\text{API}$ separable $\implies \Psi(q_1, \ldots, q_N)$ separable. Perquè sigui antisimètrica:
    $\Psi(q_1, \ldots, q_N) = C \frac{1}{N!} \det \{ \psi_i(q_j) \}$, $C = \sqrt{N!}$.

    \hrulefill

    \underline{Regles de Slater-Condon}: Siguin $\ket{\Phi}$, $\ket{\Psi}$ determinants d'Slater normalitzats. Aleshores: $\bra{\Phi}\ket{\Psi} = \mathbbm{1}(\Phi = \Psi)$.

    Operador a 1 cos. Si $F(x_1, \ldots, x_N) = \sum_{i = 1}^N f(x_i)$: \\
    \forceindent $\bra{\Phi}F\ket{\Phi} = \sum_{i = 1}^N \underbrace{\int \phi_i(x) f(x) \phi_i(x) \, dx}_{= \bra{i}f\ket{i}}$ \\
    \forceindent Si difereixen en 1 orbital d'spin (el $k$-èssim): $\bra{\Phi}F\ket{\Psi} = \bra{\phi_k}f\ket{\psi_k}$. \\
    \forceindent Si difereixen en 2+ orbitals d'spin: $\bra{\Phi}F\ket{\Psi} = 0$ (ortogonalitat).

    Operador a 2 cossos. Si $G(x_1, \ldots, x_N) = \sum_{i < j} g(x_i, x_j)$: \\
    \forceindent $\bra{\Phi}G\ket{\Phi} = \sum_{i < j} \left\{ \underbrace{\bra{ij}g\ket{ij}}_{J_{ij} \text{(int. directa)}} - \underbrace{\bra{ij}g\ket{ji}}_{K_{ij} (int. d'intercanvi)} \right\}$
    \forceindent Si difereixen en 1 orbital d'spin (el $k$-èssim): $\bra{\Phi}G\ket{\Psi} = \sum_{i \neq k} \left\{ \bra{\phi_i \phi_k}g\ket{\phi_i \psi_k} - \bra{\phi_i \phi_k}k\ket{\psi_k \phi_i} \right\}$. \\
    \forceindent Si difereixen en 2 orbitals d'spin ($k$ i $l$): \\
    $\bra{\Phi}G\ket{\Psi} = \bra{\phi_k \phi_l}g\ket{\psi_k \psi_l} - \bra{\phi_k \phi_l}g\ket{\psi_l \psi_k}$. \\
    \forceindent Si difereixen en 3+ orbitals d'spin: $\bra{\Phi}G\ket{\Psi} = 0$ (ortogonalitat).

    \subsection{Aproximació del camp central}

    $\Ha_{CF} = \sum_i \left( - \frac{\hbar^2}{2 m_e} \laplacian_{\mathbf{r}_i} + V_\text{eff}(r_i) \right)$.

    Els orbitals monoparticulars depenen de $n$ o $l$.

    \underline{Capa}: $n$ i $l$ fixa.

    Nombre d'$e^-$ a una capa: $0 \leq N_{nl} \leq 2(2l+1)$. \\
    Energia de l'àtom: $E = \sum_{n, l} N_{nl} \varepsilon_{nl}$.

    Conf. electrònica $\gamma$: determina la capa de cada $e^-$, i té degeneració $D_\gamma = \prod_{n, l \text{ obertes}} {2(2l + 1) \choose N_{nl}}$ i paritat $P_\gamma = (-1)^{\sum_{i = 1}^N l_i}$.

    Densitat radial de l'àtom: $4 \pi r^2 \rho(r) := \sum_{n, l} N_{nl} P_{nl}^2(r)$.

    \subsection{Estructura grossa en acoblament LS}

    Degeneració de les confs. desapareix si intdoduïm: $\Ha_1' := H_\text{EA} - H_\text{CF}$ (interacció electrostàtica residual) i $\Ha_2' := \sum_i \xi(r_i) \mathbf{L}_i \cdot \mathbf{S}_i$ (interaccions spin-òrbita), on $\xi(r_i) = \frac{\hbar^2}{2 m_e^2 c^2} \frac{1}{r} \frac{d V_\text{eff}(r)}{dr}$. Cada configuració dona diversos termes.

    Nosaltres farem acoblament LS (vàlid per àtoms petits), en què $\Ha_1' \gg \Ha_2'$.

    Siguin $\mathbf{L} := \sum_i \mathbf{L}_i$, $\mathbf{S} = \sum_i \mathbf{S}_i$. Aleshores \\
    $[\Ha_\text{EA}, \mathbf{S}] = [\Ha_\text{EA}, \mathbf{L}] = 0$.

    Per tant les funcions d'ona seran: $\ket{\gamma \, L \, S \, M_L \, M_S}$.

    $\Delta E(\prescript{2S + 1}{}{L}) = \bra{L \, S \, M_L \, M_S}\Ha_\text{EA}'\ket{L \, S \, M_L \, M_S}$.

    \underline{Terme}: $\prescript{2S+1}{}{L}$, degeneració $D_{\gamma L S} = (2L + 1)(2S + 1)$. $2S+1$ és la \underline{multiplicitat} del terme (singlet, doblet, triplet, ...).
    \begin{enumerate}
      \item \textbf{Capes tancades}. $L = S = 0$. Únic terme $\prescript{1}{}{S}$.
      \item \textbf{Un $e^-$ fora de capes tancades}: $L = l$, $S = \frac{1}{2}$. Termes són doblets $\prescript{2}{}{S}, \prescript{2}{}{P}, \ldots$
      \item \textbf{Dos $e^-$ no equiv. ($n_1 \neq n_2$ o $l_1 \neq l_2$) fora de capes tancades}: Pr. exc. Pauli es compleix automàticament. $L = |l_1 - l_2|, \ldots l_1 + l_2$ i $S = 0, 1$. Termes són singlets i triplets.
      \item \textbf{3+ $e^-$ no equiv. fora de capes tancades}. S'han d'acoplar moments angulars orbitals i d'espí 2 a 2 com abans.
      \item \textbf{$e^-$ equiv. en capes obertes}: Alguns valors de $L$ i $S$ són incompatibles pel pr. exc. Pauli. Es verifica $L + S \equiv 0 (2)$ (cond. necessària i suficient).
    \end{enumerate}
    \underline{Regles de Hund}: Donada $\gamma$, $S \downarrow \implies E \uparrow$. I donades $\gamma, S$; $L \downarrow \implies E \uparrow$.

    \subsection{Estructura fina en acoblament LS}

    En la base acoblada, $\ket{\gamma \, L \, S \, J \, M}$, $\Delta E_J = \expval{\Ha_2'}$, \\
    $\boxed{\Delta E_J = \frac{1}{2}T_{LS} [J(J + 1) - L(L + 1) - S(S + 1)].}$ \\
    $E(\prescript{2S + 1}{}{L}_J) = E(\prescript{2S + 1}{}{L}) + \Delta E_J$.

    Els termes es desdoblen en nivells de f.s \\
    ($2S + 1$ si $S \leq L$, $2L + 1$ si $L \geq S$).

    \underline{Regla de l'interval de Lambdé}: \\
    $E(\prescript{2S + 1}{}{L}_J) - E(\prescript{2S + 1}{}{L}_{J - 1}) = T_{LS} J$. \\
    Els àtoms que la compleixen s'anomenen \underline{regulars} (i els que no, \underline{irregulars}).

    Si $T_{LS} > 0$, és un \underline{multiplet normal} ($J \uparrow \implies E \uparrow$). \\
    Si $T_{LS} < 0$, és un \underline{multiplet invertit} ($J \uparrow \implies E \downarrow$).

    Si $\gamma$ \textbf{només} té 1 capa oberta: és multiplet normal si l'ocupen menys de la meitat d'$e^-$. Si no, serà invertit.

    Centre de gravetat del multiplet és l'energia del terme: $\sum_{J = |L - S|}^{L + S} (2J + 1) \Delta E_J = 0$. \\
    Equivalentment: $E(\prescript{2S + 1}{}{L}) = \frac{\sum_J (2J + 1) \prescript{2S + 1}{}{L}_J}{\sum_J (2J + 1)}$.

    \hrulefilll

    \section{Àtoms i ions amb 2 electrons}

    Massa $M = \infty$, càrrega $Ze$ i 2 electrons.

    $\Ha_\text{EA} = - \frac{\hbar^2}{2 m_e} \laplacian_{\mathbf{r}_1} - \frac{\hbar^2}{2 m_e} \laplacian_{\mathbf{r}_2} - \frac{Z e^2}{r_1} - \frac{Z e^2}{r_2} + \frac{e^2}{r_{12}}$.

    $\Ha_\text{EA}$ no depèn de l'spin $\implies \Psi(q_1, q_2) = \psi(\mathbf{r}_1, \mathbf{r}_2) \chi(1, 2).$

    ($\alpha = \uparrow, \beta = \downarrow$)

    Base no acoblada (pròpia de $S_1^2, S_{1z}, S_2^2, S_{2z}$): \\
    $\alpha(1)\alpha(2)$, $\alpha(1)\beta(2)$, $\beta(1)\alpha(2)$, $\beta(1)\beta(2)$.

    Base acoblada (pròpia de $S_1^2$, $S_2^2$, $S^2$, $S_z$): \\
    $\begin{array}{l}
      \chi_{0, 0} = \frac{1}{\sqrt{2}} [\alpha(1)\beta(2) - \beta(1)\alpha(2)], \quad \text{(singlet)} \\
      \left. \begin{array}{l}
        \chi_{1, +1} = \alpha(1)\alpha(2), \\
        \chi_{1, 0} = \frac{1}{\sqrt{2}}[\alpha(1)\beta(2) + \beta(1)\alpha(2)], \\
        \chi_{1, -1} = \beta(1)\beta(2).
      \end{array} \right\} \, \text{(triplet)}
    \end{array}$

    La funció d'ona ha de ser antisimètrica, així que tenim: \\
    \forceindent \underline{Paraheli}: singlet (antisim.) + part espacial sim. \\
    \forceindent \underline{Ortoheli}: triplet (sim.) + part espacial antisim.

    Termes e.g.: $n_1 l_1 n_2 l_2 \prescript{2S + 1}{}{L}$, $L \in \{ |l_1 - l_2, \ldots, l_1 + l_2 \}, S \in \{ 0, 1 \}$.

    Abús de notació: $1 s \, n l \prescript{2S + 1}{}{L} \equiv n \prescript{2S + 1}{}{l}$.

    \subsection{Models de partícules independients}

    $\Ha_\text{EA} = H_0 + H'$, $H_0 = \sum_{i = 1}^2 h(r_i)$, $h(r) = - \frac{\hbar^2}{2 m_e} \laplacian_{\mathbf{r}} - \frac{Z_\text{eff}(r) e^2}{r}$.

    De nou, la funció d'ona és determinant d'Slater.

    Triplets: $\mathbf{r}_1 = \mathbf{r}_2 \implies \Psi_-(\mathbf{r}_1, \mathbf{r}_2) = 0$, \\
    Singlets: $\mathbf{r}_1 = \mathbf{r}_2 \implies \Psi_+(\mathbf{r}_1, \mathbf{r}_2) \neq 0$.

    Repulsió entre $e^-$ és positiva $\implies$ major quan $r_1 \approx r_2 \implies$ esperaríem $E_\text{trip} < E_\text{sing}$ pq $e^-$ estan un pél més separats (d'acord amb 1a regla Hund).

    Escollint $Z_\text{eff} = Z$: \\
    $E^{(0)}(n_1 l_1 \, n_2 l_2) = - \frac{1}{2} Z^2 \left( \frac{1}{n_1^2} + \frac{1}{n_2^2} \right) E_h$.

    \underline{Estat fonamental}: ($1s^2 \, \prescript{1}{}{S}_0$) $\boxed{E_{Z_\text{eff}} = - \left( Z - \frac{5}{16} \right)^2 E_h}$.
    Cada $e^-$ 1s apantalla a l'altre $\approx 5/16$.

    \underline{Estats excitats}: mètode variacional millor que pertorbatiu. Ordre dels termes de menor a major energia: $\prescript{3}{}{S}, \prescript{1}{}{S}, \prescript{3}{}{P}, \prescript{1}{}{P}$.

    \hrulefilll

    \section{Efecte Stark}

    $\bm{\varepsilon} \equiv \varepsilon \hat{z}$, $\varphi(\mathbf{r}) = - \varepsilon z, \mathbf{A}(\mathbf{r}) = 0$. \\
    $\Ha_\varepsilon' = \sum_{i = 1}^N [-e \varphi(\mathbf{r}_i)] = e \varepsilon \sum_{i = 1}^N z_i$.

    $z = r \cos \theta = r \sqrt{\frac{4 \pi}{3}} Y_{10}(\hat{r}) =: r \cdot c_{10}(\hat{r})$.

    \underline{Àtoms hidrogenoides}: \\
    {\small Suposem $\bm{\varepsilon}$ prou intens per només haver de considerar estructura grossa.}

    \forceindent \underline{Estat fonamental}: ignorant l'spin, hi ha 1 estat no degenerat. No es veu afectat per l'efecte Stark lineal (1r ordre). A 2n ordre, $E_1^{(2)} = - \frac{9}{4} \frac{a_0^3}{Z^4} \varepsilon^2$.

    \forceindent \underline{Nivells excitats}: hem de diag. $\bra{n \, l' \, m_l'}\Ha_\varepsilon'\ket{n \, l \, m_l}$. \\
    És 0 si $l - l' \equiv 0 (2)$ o si $m_l' \neq m_l$. \\
    Ordenem la base per fer-la diagonal per caixes. \\
    És útil: $\bra{n, l - 1}r\ket{n l} = \int_0^\infty dr \, P_{n, l - 1}(r) r P_{n l}(r) = - \frac{3n}{2Z}\sqrt{n^2 - l^2} a_0$.

    \underline{Àtoms multielectrònics}: \\
    {\small Sigui $\gamma$ la seva conf. electrònica. Acceptem acoblament LS.}
    \begin{itemize}
      \item \underline{1r ordre de pertorbacions}:
      \begin{itemize}
        \item Camp elèctric intens ($\Ha_\text{SO} \ll \Ha_\varepsilon' \ll \Ha_\text{EA}$): no hi ha Stark lineal.
        \item Camp elèctric feble ($\Ha_\varepsilon' \ll \Ha_\text{SO} \ll \Ha_\text{EA}$): no hi ha Stark lineal.
      \end{itemize}
      \item \underline{2n ordre de pertorbacions}:
      \begin{itemize}
        \item $\varepsilon$ feble: sí. $E^{(2)}_{\gamma L S J} = \varepsilon^2 (A_{\gamma L S J} + B_{\gamma L S J} M_J^2)$.
      \end{itemize}
    \end{itemize}

    \underline{Polarizabilitat atòmica}: \\
    $\mathbf{D} = \sum_{i = 1}^N (- e \mathbf{r}_i)$. \\
    \begin{itemize}
      \item Sense $\varepsilon$ extern: $\expval{\mathbf{D}} = \bra{n l m}-e \mathbf{r}\ket{n l m} = 0$ (paritat).
      \item Amb $\varepsilon$ extern (no massa intern): $\expval{D_z} = - \frac{2}{\varepsilon} \Delta E_0^{(2)} =: \alpha_d \varepsilon$. \\
        $\alpha_d$ és la polaritzabilitat dipolar atòmica estàtica.
    \end{itemize}

    $\alpha_d \approx - \frac{2}{3} \frac{e^2}{E_0^{(0)}} N \bar{r^2}$.

    \section{Efecte Zeeman}

    $\mathbf{B} = B \hat{z}, \varphi(\mathbf{r}) = 0, \mathbf{A}(\mathbf{r}) = \frac{1}{2} \mathbf{B} \times \mathbf{r}$.

    \underline{Àtoms hidrogenoides}: $H_P = \frac{1}{2 m_e} \left( \mathbf{p} + \frac{e}{c}\mathbf{A} \right)^2 + \frac{e \hbar}{2 m_e c}\bm{\sigma} \cdot (\curl \mathbf{A}) + V(\mathbf{r})$.

    Tindrem $H_P = H_0 + H_B' + H_B''$ (ignorem darrer terme). \\
    $H_0 = - \frac{\hbar^2}{2m_e} \laplacian - \frac{Ze^2}{r}$, $H_B' = \mu_B \mathbf{B} \cdot (\mathbf{L} + 2 \mathbf{S}) = \mu_B B_z (L_z + 2 S_z)$.

    \begin{itemize}
      \item \underline{Efecte Paschen-Back ($H_B' \gg H_\text{SO}$)}: $B \gg Z^4 \si{\tesla}$. \\
        $E_{n m_l m_s} = E_n + \mu_B B (m_l + 2m_s)$. \\
        Incorporant efecte s.o.: $E(B) = E_n + \mu_BB(m_l + 2m_s) - E_n \frac{(\alpha Z)^2}{n} \frac{m_l m_s}{l(l + 1/2)(l + 1)}(1 - \delta_{l0})$.
      \item \underline{Efecte Zeeman anòmal ($H_B' \ll H_\text{SO}$)}: funcions pròpies $\ket{nljm_j}$. \\
        $E(B) = E_{nlj} + g_J \mu_B B m_j$, on \\
        $g_J = 1 + \frac{j(j + 1) + s(s + 1) - l(l + 1)}{2j(j + 1)} = \frac{2j + 1}{2l + 1}$.
      \item \underline{Camp intermig ($H_B' \sim H_\text{SO}$)}.
    \end{itemize}

    \underline{Àtoms multielectrònics}: Tractarem $H_B' + H_\text{SO}$ com una pertorbació sobre $H_\text{EA}$, on $H'_\text{SO} = T_{\gamma LS} \mathbf{L} \cdot \mathbf{S}$.
    \begin{itemize}
      \item \underline{Efecte Paschen-Back ($H_B' \gg H_\text{SO}$)}: \\
        $\Delta E = \mu_B B (M_L + 2 M_S) + T_{\gamma L S} M_L M_S$.
      \item \underline{Efecte Zeeman anòmal ($H_B' \ll H_\text{SO}$)}: Tractem els efectes sobre nivells de f.s. $\Delta E = g_J \mu_B B M_J$.
    \end{itemize}

    \section{Radiació electromagnètica}

    $b_\lambda^\dagger \ket{\ldots, n_\lambda, \ldots} = \sqrt{n_\lambda + 1} \ket{\ldots, n_\lambda + 1, \ldots}$. \\
    $b_\lambda \ket{\ldots, n_\lambda, \ldots} = \sqrt{n_\lambda} \ket{\ldots, n_\lambda - 1, \ldots}$. \\
    $N_\lambda = b_\lambda^\dagger b_\lambda$, $\Ha_F = \sum_\lambda \hbar \omega_\lambda N_\lambda$.

    \underline{Emissió/absorció d'un fotó en aprox. E1} \\
    $\Ha_\text{E1}' = L^{-3/2} \frac{e}{m_e c} \sum_{j = 1}^N \sum_\lambda \sqrt{\frac{2 \pi \hbar c^2}{\omega_\lambda}} \hat{\bm{\pi}}_\lambda \cdot \mathbf{p}_j (b_\lambda + b_\lambda^\dagger)$. \\
    $M_{fi} = \bra{f} H_\text{E1}'\ket{i}$. $\Delta E = \pm \hbar \omega$. \\
    $M_{fi} = L^{-3/2} \frac{e}{m_e c} \sqrt{\frac{2 \pi \hbar c^2}{\omega_\lambda}} \bra{\Psi_f} \sum_{j = 1}^N \hat{\bm{\pi}}_\lambda \cdot \mathbf{p}_j \ket{\Psi_i} (F_\lambda^{(-)} + F_\lambda^{(+)})$,
    $F_\lambda^{(-)} := \bra{\ldots, n_\lambda', \ldots}b_\lambda\ket{\ldots, n_\lambda, \ldots}$, \\
    $F_\lambda^{(+)} := \bra{\ldots, n_\lambda', \ldots}b_\lambda^\dagger\ket{\ldots, n_\lambda, \ldots}$.
    $W_{i \rightarrow f} = L^{-3} 4 \pi^2 \frac{e^2}{\hbar^2} \frac{(\varepsilon_f - \varepsilon_i)^2}{\omega_\lambda} |\hat{\bm{\pi}} \cdot \bm{r}_{fi}|^2 (F_\lambda^{(-)} + F_\lambda^{(+)})^2 \rho_L(E_f)$.

    \underline{Emissió espontània}: $W_{i \rightarrow f} = \frac{4}{3} \frac{\alpha}{c^2} \omega_{fi}^3 |\bm{r}_{fi}|^2$. \\
    Vida mitja d'un estat: $\tau_i = W_i^{-1}$. $W_i = \sum_{f: \, \varepsilon_f < \varepsilon_i} W_{i \rightarrow f}$. \\
    Vida mitja d'un nivell $\tau_I$; $\tau_I^{-1} = \frac{1}{D_I} \sum_{i \in I} \tau_i^{-1}$. \\
    Amplada natural del nivell: $\Gamma_I := \hbar/\tau_I$.

    \underline{Emissió estimulada}: $W_{i \rightarrow f} = \frac{4 \pi^2}{3} \frac{e^2}{\hbar^2} |\bm{r}_{fi}|^2 I(\omega)$.

    \underline{Absorció}: $\sigma(E) = \frac{W_{i \rightarrow f}}{(n_\lambda/L^3) c} = 4 \pi^2 \alpha E |\hat{\bm{\pi}}_\lambda \cdot \bm{r}_{fi}|^2 \delta(\varepsilon_f - (\varepsilon_i + E))$

    \subsection{Regles de selecció}
    \underline{Àtom hidrogenoide}: $j' \in \{ j, j \pm 1 \}$, $m' \in \{ m, m \pm 1 \}$, $l' \in \{ l \pm 1 \}$. \\
    \underline{Àtom multielectrònic}: $J' \in \{ J, J \pm 1 \} (0 \not\leftrightarrow 0)$, $M' \in \{ M, M \pm 1 \}$, $(-1)^{\sum_i l_i'} \neq (-1)^{\sum_i l_i}$. \\
    Si acoplament LS vàlid: $S' = S$, $L' \in \{ L, L \pm 1 \} (0 \not\leftrightarrow 0)$, $M_L' \in \{ M_L, M_L \pm 1 \}$.

    $W_{i \rightarrow f}^\text{se,E1} = \frac{4}{3} \frac{\alpha}{c^2} \omega_{fi}^3 \sum_{q = -1}^{+1} |\bra{f}r_q\ket{i}|^2$, \\
    $\bra{n' l' m_l' m_s'}r_q\ket{n l m_l m_s} = $ \\
    $\bra{n' l'}r\ket{n l} [c^1(l', m_l'; l, m_l) \delta_{q, m_l' - m_l}] \delta_{m_s', m_s}$, \\
    $c^1(l', m_l'; l, m_l) \delta_{q, m_l' - m_l} = $ \\
    $\sqrt{\frac{2l + 1}{2l' + 1}} \bra{l100}\ket{l'0} \bra{l1m_l,m_l' - m_l}\ket{l'm_l'}$.

    \hrulefilll

    \section{Miscel·lània}

    {\small $\int_0^\infty x^n e^{-ax} \, dx = \frac{\Gamma(n + 1)}{a^{n + 1}}$, on $\Gamma(n + 1) = n!$ si $n \in \mathbb{N}$.

    \underline{Coordenades esfèriques}: $\begin{cases}
      x = r \sin \theta \cos \phi, \\
      y = r \sin \theta \sin \phi, \\
      z = r \cos \theta.
    \end{cases}$

    \underline{Capes}: K ($n = 1$), L ($n = 2$), M ($n = 3$), N ($n = 4$), ...

  \underline{Subcapes}: s ($l = 0$), p ($l = 1$), d ($l = 2$), f ($l = 3$), ...}

    $c_{LM} (\hat{r}) := \sqrt{\frac{4\pi}{2L + 1}} Y_{LM} (\hat{r})$. $\bra{l-1, m}c_{10}\ket{l, m} = c^1(l-1; m; l; m) = \sqrt{\frac{l^2 - m^2}{(2l - 1)(2l + 1)}}$
  \end{multicols*}
\end{document}
