Path: blob/main/latex-templates/templates/astronomy/stellar_evolution.tex
51 views
unlisted
\documentclass[a4paper, 11pt]{article}1\usepackage[utf8]{inputenc}2\usepackage[T1]{fontenc}3\usepackage{amsmath, amssymb}4\usepackage{graphicx}5\usepackage{siunitx}6\usepackage{booktabs}7\usepackage{subcaption}8\usepackage[makestderr]{pythontex}910% Theorem environments11\newtheorem{definition}{Definition}12\newtheorem{theorem}{Theorem}13\newtheorem{example}{Example}14\newtheorem{remark}{Remark}1516\title{Stellar Evolution: From Main Sequence to Stellar Remnants\\17\large A Comprehensive Analysis of the HR Diagram and Nuclear Burning Stages}18\author{Stellar Astrophysics Division\\Computational Science Templates}19\date{\today}2021\begin{document}22\maketitle2324\begin{abstract}25This comprehensive analysis explores stellar structure and evolution through the Hertzsprung-Russell diagram. We derive the fundamental stellar relations including the mass-luminosity relation, main sequence lifetime, and Stefan-Boltzmann law. The analysis covers all major evolutionary phases from pre-main sequence contraction through hydrogen and helium burning to white dwarf, neutron star, and black hole endpoints. We generate synthetic stellar populations to visualize the main sequence, red giant branch, horizontal branch, and white dwarf cooling sequence, and explore the physics governing each evolutionary stage.26\end{abstract}2728\section{Introduction}2930The Hertzsprung-Russell (HR) diagram, independently developed by Ejnar Hertzsprung and Henry Norris Russell in the early 1900s, provides a powerful tool for understanding stellar populations and evolution. By plotting stellar luminosity against effective temperature (or equivalently, color or spectral type), the HR diagram reveals the fundamental relationships governing stellar structure.3132\begin{definition}[Hertzsprung-Russell Diagram]33A scatter plot of stellar luminosity $L$ versus effective temperature $T_{\text{eff}}$ (with temperature decreasing to the right), showing distinct regions occupied by different stellar types and evolutionary stages.34\end{definition}3536\section{Theoretical Framework}3738\subsection{Stellar Luminosity}3940The luminosity of a star is determined by its radius and effective temperature:4142\begin{theorem}[Stefan-Boltzmann Law]43\begin{equation}44L = 4\pi R^2 \sigma T_{\text{eff}}^445\end{equation}46where $\sigma = 5.67 \times 10^{-8}$ W m$^{-2}$ K$^{-4}$ is the Stefan-Boltzmann constant.47\end{theorem}4849\subsection{Mass-Luminosity Relation}5051For main sequence stars, luminosity scales strongly with mass:5253\begin{theorem}[Mass-Luminosity Relation]54\begin{equation}55\frac{L}{L_\odot} = \left(\frac{M}{M_\odot}\right)^\alpha56\end{equation}57where $\alpha \approx 3.5$ for stars with $0.5 < M/M_\odot < 20$, with variations at the extremes.58\end{theorem}5960\begin{remark}[Mass-Luminosity Variations]61\begin{itemize}62\item Low mass ($M < 0.5 M_\odot$): $\alpha \approx 2.3$63\item Intermediate mass: $\alpha \approx 4$64\item High mass ($M > 20 M_\odot$): $\alpha \approx 1$ (Eddington limit)65\end{itemize}66\end{remark}6768\subsection{Main Sequence Lifetime}6970Nuclear burning timescale depends on fuel supply and consumption rate:7172\begin{equation}73\tau_{\text{MS}} \approx \frac{M}{L} \propto M^{1-\alpha} \approx \frac{10^{10}}{(M/M_\odot)^{2.5}} \text{ years}74\end{equation}7576\subsection{Stellar Spectral Classification}7778\begin{definition}[Spectral Types]79The Harvard classification scheme orders stars by temperature:80\begin{center}81O - B - A - F - G - K - M82\end{center}83(``Oh Be A Fine Girl/Guy Kiss Me'')8485Temperature ranges: O ($>$30,000 K), B (10,000-30,000 K), A (7,500-10,000 K), F (6,000-7,500 K), G (5,200-6,000 K), K (3,700-5,200 K), M ($<$3,700 K)86\end{definition}8788\section{Computational Analysis}8990\begin{pycode}91import numpy as np92import matplotlib.pyplot as plt93from matplotlib.colors import LogNorm94plt.rc('text', usetex=True)95plt.rc('font', family='serif')9697np.random.seed(42)9899# Solar values100L_sun = 3.828e26 # W101T_sun = 5778 # K102R_sun = 6.96e8 # m103M_sun = 1.989e30 # kg104105# Main sequence population106n_ms = 800107# IMF-weighted mass distribution (Salpeter)108mass_exponent = -2.35109mass_ms = 10**np.random.uniform(-1, 1.7, n_ms) # 0.1 - 50 M_sun110111# Mass-luminosity relation with mass-dependent exponent112def mass_to_luminosity(M):113"""Mass-luminosity relation with mass-dependent exponent"""114L = np.zeros_like(M)115low = M < 0.43116mid_low = (M >= 0.43) & (M < 2)117mid_high = (M >= 2) & (M < 20)118high = M >= 20119120L[low] = 0.23 * M[low]**2.3121L[mid_low] = M[mid_low]**4122L[mid_high] = 1.5 * M[mid_high]**3.5123L[high] = 3200 * M[high]124return L125126L_ms = mass_to_luminosity(mass_ms)127128# Mass-temperature relation129def mass_to_temperature(M):130"""Main sequence temperature from mass"""131return T_sun * M**0.5132133T_ms = mass_to_temperature(mass_ms)134135# Add scatter136L_ms *= 10**np.random.normal(0, 0.08, n_ms)137T_ms *= 10**np.random.normal(0, 0.015, n_ms)138139# Calculate radii from Stefan-Boltzmann140R_ms = np.sqrt(L_ms * L_sun / (4 * np.pi * 5.67e-8 * T_ms**4)) / R_sun141142# Red Giant Branch143n_rgb = 200144T_rgb = np.random.uniform(3500, 5200, n_rgb)145L_rgb = 10**np.random.uniform(1.5, 3.5, n_rgb)146147# Horizontal Branch (helium burning)148n_hb = 100149T_hb = np.random.uniform(4500, 20000, n_hb)150L_hb = 10**np.random.uniform(1.5, 2.5, n_hb)151152# Asymptotic Giant Branch153n_agb = 80154T_agb = np.random.uniform(2800, 4000, n_agb)155L_agb = 10**np.random.uniform(3.0, 4.5, n_agb)156157# White Dwarfs (cooling sequence)158n_wd = 150159T_wd = 10**np.random.uniform(3.5, 5.0, n_wd) # 3000 - 100000 K160# WD cooling: L ~ T^4 * R^2, with R ~ 0.01 R_sun161R_wd = 0.01 # solar radii162L_wd = (R_wd)**2 * (T_wd/T_sun)**4 * 10**np.random.normal(0, 0.2, n_wd)163164# Supergiants165n_sg = 50166T_sg = np.random.uniform(3000, 30000, n_sg)167L_sg = 10**np.random.uniform(4, 6, n_sg)168169# Pre-main sequence (Hayashi track)170n_pms = 100171T_pms = np.random.uniform(3000, 5000, n_pms)172L_pms = 10**np.random.uniform(0, 2, n_pms)173174# Spectral classification175def spectral_class(T):176if T > 30000: return 'O'177elif T > 10000: return 'B'178elif T > 7500: return 'A'179elif T > 6000: return 'F'180elif T > 5200: return 'G'181elif T > 3700: return 'K'182else: return 'M'183184# Luminosity class185def luminosity_class(L, T):186if L > 1e4:187return 'I (Supergiant)'188elif L > 100:189return 'III (Giant)'190elif L > 10:191return 'IV (Subgiant)'192else:193return 'V (Main Seq.)'194195# Create comprehensive figure196fig = plt.figure(figsize=(14, 16))197198# Plot 1: Full HR diagram199ax1 = fig.add_subplot(3, 3, 1)200ax1.scatter(T_ms, L_ms, c='blue', s=3, alpha=0.4, label='Main Sequence')201ax1.scatter(T_rgb, L_rgb, c='red', s=10, alpha=0.5, label='RGB')202ax1.scatter(T_hb, L_hb, c='orange', s=8, alpha=0.5, label='HB')203ax1.scatter(T_agb, L_agb, c='darkred', s=15, alpha=0.5, label='AGB')204ax1.scatter(T_wd, L_wd, c='white', edgecolors='gray', s=8, alpha=0.6, label='WD')205ax1.scatter(T_sg, L_sg, c='yellow', edgecolors='black', s=25, alpha=0.7, label='Supergiant')206207ax1.set_xscale('log')208ax1.set_yscale('log')209ax1.set_xlim([50000, 2000])210ax1.set_ylim([1e-5, 1e7])211ax1.set_xlabel('Effective Temperature (K)')212ax1.set_ylabel('Luminosity ($L_\\odot$)')213ax1.set_title('Hertzsprung-Russell Diagram')214ax1.legend(fontsize=6, loc='lower left')215ax1.grid(True, alpha=0.3)216217# Plot 2: Main sequence only with constant radius lines218ax2 = fig.add_subplot(3, 3, 2)219ax2.scatter(T_ms, L_ms, c=np.log10(mass_ms), s=10, alpha=0.6, cmap='viridis')220221# Constant radius lines222T_line = np.logspace(3.5, 5, 100)223for R_val in [0.1, 1, 10, 100]:224L_R = (R_val)**2 * (T_line/T_sun)**4225ax2.plot(T_line, L_R, 'k--', alpha=0.4, linewidth=1)226ax2.text(T_line[-1]*0.8, L_R[-1]*1.5, f'{R_val}$R_\\odot$', fontsize=7)227228ax2.set_xscale('log')229ax2.set_yscale('log')230ax2.set_xlim([50000, 2500])231ax2.set_ylim([1e-4, 1e6])232ax2.set_xlabel('Temperature (K)')233ax2.set_ylabel('Luminosity ($L_\\odot$)')234ax2.set_title('Main Sequence (colored by mass)')235ax2.grid(True, alpha=0.3)236237# Plot 3: Mass-luminosity relation238ax3 = fig.add_subplot(3, 3, 3)239mass_plot = np.logspace(-1, 2, 100)240L_theory = mass_to_luminosity(mass_plot)241ax3.plot(mass_plot, L_theory, 'r-', linewidth=2, label='Theory')242ax3.scatter(mass_ms, L_ms, c='blue', s=5, alpha=0.3, label='Synthetic')243244ax3.set_xscale('log')245ax3.set_yscale('log')246ax3.set_xlabel('Mass ($M_\\odot$)')247ax3.set_ylabel('Luminosity ($L_\\odot$)')248ax3.set_title('Mass-Luminosity Relation')249ax3.legend(fontsize=8)250ax3.grid(True, alpha=0.3)251252# Plot 4: Main sequence lifetime253ax4 = fig.add_subplot(3, 3, 4)254tau_ms = 10e9 / mass_ms**2.5 # years255ax4.scatter(mass_ms, tau_ms/1e9, c='blue', s=10, alpha=0.5)256257# Reference points258ref_masses = [0.5, 1, 2, 5, 10, 25]259ref_tau = [10e9/m**2.5/1e9 for m in ref_masses]260for m, t in zip(ref_masses, ref_tau):261ax4.plot(m, t, 'ro', markersize=8)262263ax4.set_xscale('log')264ax4.set_yscale('log')265ax4.set_xlabel('Mass ($M_\\odot$)')266ax4.set_ylabel('MS Lifetime (Gyr)')267ax4.set_title('Main Sequence Lifetime')268ax4.grid(True, alpha=0.3)269270# Plot 5: Spectral type distribution271ax5 = fig.add_subplot(3, 3, 5)272all_T = np.concatenate([T_ms, T_rgb, T_hb, T_agb, T_wd, T_sg])273spectral_types = ['O', 'B', 'A', 'F', 'G', 'K', 'M']274spec_counts = [sum(1 for T in all_T if spectral_class(T) == s) for s in spectral_types]275colors = ['blue', 'cyan', 'white', 'lightyellow', 'yellow', 'orange', 'red']276277bars = ax5.bar(spectral_types, spec_counts, color=colors, edgecolor='black', alpha=0.8)278ax5.set_xlabel('Spectral Class')279ax5.set_ylabel('Count')280ax5.set_title('Spectral Type Distribution')281ax5.grid(True, alpha=0.3, axis='y')282283# Plot 6: Evolutionary track (1 solar mass)284ax6 = fig.add_subplot(3, 3, 6)285# Simplified evolutionary track for 1 M_sun286track_phases = {287'ZAMS': (5778, 1, 'o'),288'TO': (5900, 1.5, 's'),289'RGB': (4500, 100, '^'),290'HB': (5000, 50, 'D'),291'AGB': (3500, 1000, 'p'),292'PN': (100000, 100, '*'),293'WD': (10000, 0.01, 'v')294}295296for phase, (T, L, marker) in track_phases.items():297ax6.scatter([T], [L], marker=marker, s=100, label=phase, zorder=10)298299# Connect with line300T_track = [5778, 5900, 4500, 5000, 3500, 100000, 10000]301L_track = [1, 1.5, 100, 50, 1000, 100, 0.01]302ax6.plot(T_track, L_track, 'k--', alpha=0.5, linewidth=1)303304ax6.set_xscale('log')305ax6.set_yscale('log')306ax6.set_xlim([200000, 2500])307ax6.set_ylim([1e-3, 1e4])308ax6.set_xlabel('Temperature (K)')309ax6.set_ylabel('Luminosity ($L_\\odot$)')310ax6.set_title('1 $M_\\odot$ Evolutionary Track')311ax6.legend(fontsize=7, loc='lower left', ncol=2)312ax6.grid(True, alpha=0.3)313314# Plot 7: Stellar endpoints by mass315ax7 = fig.add_subplot(3, 3, 7)316mass_range = np.linspace(0.1, 50, 100)317remnant_mass = np.zeros_like(mass_range)318319for i, m in enumerate(mass_range):320if m < 8: # White dwarf321remnant_mass[i] = 0.5 + 0.1 * m322elif m < 25: # Neutron star323remnant_mass[i] = 1.4324else: # Black hole325remnant_mass[i] = 0.1 * m326327ax7.plot(mass_range, remnant_mass, 'b-', linewidth=2)328ax7.axvline(x=8, color='r', linestyle='--', alpha=0.7, label='WD/NS boundary')329ax7.axvline(x=25, color='purple', linestyle='--', alpha=0.7, label='NS/BH boundary')330ax7.set_xlabel('Initial Mass ($M_\\odot$)')331ax7.set_ylabel('Remnant Mass ($M_\\odot$)')332ax7.set_title('Stellar Remnant Masses')333ax7.legend(fontsize=8)334ax7.grid(True, alpha=0.3)335336# Plot 8: Nuclear burning stages337ax8 = fig.add_subplot(3, 3, 8)338burning_stages = ['H', 'He', 'C', 'Ne', 'O', 'Si']339temps = [1.5e7, 1e8, 5e8, 1.2e9, 1.5e9, 2.7e9] # K340durations_25 = [7e6, 5e5, 600, 1, 0.5, 0.001] # years for 25 M_sun341342ax8.barh(burning_stages, np.log10(durations_25), color='steelblue', alpha=0.7)343ax8.set_xlabel('$\\log_{10}$(Duration/yr)')344ax8.set_ylabel('Burning Stage')345ax8.set_title('Nuclear Burning (25 $M_\\odot$)')346ax8.grid(True, alpha=0.3, axis='x')347348# Plot 9: Color-magnitude diagram349ax9 = fig.add_subplot(3, 3, 9)350# B-V color index (simplified)351def T_to_BV(T):352return 7090/T - 0.71353354BV_ms = T_to_BV(T_ms)355BV_rgb = T_to_BV(T_rgb)356BV_wd = T_to_BV(T_wd)357358# Absolute magnitude359Mv_ms = 4.83 - 2.5*np.log10(L_ms)360Mv_rgb = 4.83 - 2.5*np.log10(L_rgb)361Mv_wd = 4.83 - 2.5*np.log10(L_wd)362363ax9.scatter(BV_ms, Mv_ms, c='blue', s=3, alpha=0.4, label='MS')364ax9.scatter(BV_rgb, Mv_rgb, c='red', s=8, alpha=0.5, label='RGB')365ax9.scatter(BV_wd, Mv_wd, c='gray', s=5, alpha=0.5, label='WD')366367ax9.set_xlim([-0.5, 2.5])368ax9.set_ylim([15, -10])369ax9.set_xlabel('B-V Color Index')370ax9.set_ylabel('Absolute Magnitude $M_V$')371ax9.set_title('Color-Magnitude Diagram')372ax9.legend(fontsize=8)373ax9.grid(True, alpha=0.3)374375plt.tight_layout()376plt.savefig('stellar_evolution_plot.pdf', bbox_inches='tight', dpi=150)377print(r'\begin{center}')378print(r'\includegraphics[width=\textwidth]{stellar_evolution_plot.pdf}')379print(r'\end{center}')380plt.close()381382# Statistics383total_stars = n_ms + n_rgb + n_hb + n_agb + n_wd + n_sg384ms_fraction = n_ms / total_stars * 100385\end{pycode}386387\section{Results and Analysis}388389\subsection{Stellar Population Statistics}390391\begin{pycode}392# Population statistics table393print(r'\begin{table}[h]')394print(r'\centering')395print(r'\caption{Synthetic Stellar Population Statistics}')396print(r'\begin{tabular}{lcc}')397print(r'\toprule')398print(r'Evolutionary Stage & Count & Fraction (\\%) \\')399print(r'\midrule')400stages = [('Main Sequence', n_ms), ('Red Giant Branch', n_rgb),401('Horizontal Branch', n_hb), ('AGB', n_agb),402('White Dwarf', n_wd), ('Supergiant', n_sg)]403for name, count in stages:404frac = count / total_stars * 100405print(f"{name} & {count} & {frac:.1f} \\\\")406print(r'\midrule')407print(f"Total & {total_stars} & 100 \\\\")408print(r'\bottomrule')409print(r'\end{tabular}')410print(r'\end{table}')411\end{pycode}412413\subsection{Main Sequence Properties}414415\begin{pycode}416# MS lifetime table417print(r'\begin{table}[h]')418print(r'\centering')419print(r'\caption{Main Sequence Lifetimes}')420print(r'\begin{tabular}{cccc}')421print(r'\toprule')422print(r'Mass ($M_\\odot$) & Luminosity ($L_\\odot$) & Temperature (K) & Lifetime (Gyr) \\')423print(r'\midrule')424ref_masses = [0.5, 1, 2, 5, 10, 25]425for m in ref_masses:426L = mass_to_luminosity(np.array([m]))[0]427T = mass_to_temperature(m)428tau = 10 / m**2.5429print(f"{m:.1f} & {L:.1f} & {T:.0f} & {tau:.2f} \\\\")430print(r'\bottomrule')431print(r'\end{tabular}')432print(r'\end{table}')433\end{pycode}434435\begin{example}[Solar Evolution]436The Sun is a G2V main sequence star with the following properties:437\begin{itemize}438\item Mass: $M = 1 M_\odot$439\item Luminosity: $L = 1 L_\odot = $ \py{f"{L_sun:.3e}"} W440\item Effective temperature: $T_{\text{eff}} = $ \py{f"{T_sun}"} K441\item Main sequence lifetime: $\tau_{\text{MS}} \approx 10$ Gyr442\item Current age: 4.6 Gyr (middle of MS phase)443\end{itemize}444\end{example}445446\section{Evolutionary Phases}447448\subsection{Pre-Main Sequence}449450Stars form from collapsing molecular clouds and contract along Hayashi tracks (nearly vertical in HR diagram) before reaching the main sequence.451452\subsection{Main Sequence}453454Core hydrogen burning via pp-chain (low mass) or CNO cycle (high mass). Stars spend $\sim$90\% of their lives on the main sequence.455456\subsection{Red Giant Branch}457458After core hydrogen exhaustion:459\begin{enumerate}460\item Hydrogen shell burning begins461\item Core contracts, envelope expands462\item Surface cools to $\sim$4000 K463\item Luminosity increases to $\sim$100-1000 $L_\odot$464\end{enumerate}465466\subsection{Helium Burning}467468\begin{remark}[Helium Flash]469In low-mass stars ($M < 2 M_\odot$), helium ignition is degenerate and occurs explosively (helium flash), though the energy is absorbed internally.470\end{remark}471472Stars on the Horizontal Branch burn helium in the core and hydrogen in a shell.473474\subsection{Asymptotic Giant Branch}475476Double-shell burning (H and He) produces thermal pulses and significant mass loss.477478\section{Stellar Endpoints}479480\subsection{White Dwarfs}481482Final state for $M < 8 M_\odot$:483\begin{itemize}484\item Supported by electron degeneracy pressure485\item Mass limit: Chandrasekhar mass $M_{Ch} = 1.4 M_\odot$486\item Cooling timescale: $\sim$10 Gyr487\end{itemize}488489\subsection{Neutron Stars}490491Core-collapse remnants for $8 < M/M_\odot < 25$:492\begin{itemize}493\item Supported by neutron degeneracy pressure494\item Typical mass: $1.4 M_\odot$495\item Radius: $\sim$10 km496\end{itemize}497498\subsection{Black Holes}499500For $M > 25 M_\odot$, no known physics can halt collapse.501502\section{Nuclear Burning Stages}503504\begin{pycode}505# Nuclear burning table506print(r'\begin{table}[h]')507print(r'\centering')508print(r'\caption{Nuclear Burning in Massive Stars (25 $M_\\odot$)}')509print(r'\begin{tabular}{lccc}')510print(r'\toprule')511print(r'Stage & Temperature (K) & Duration & Products \\')512print(r'\midrule')513print(r'H $\\rightarrow$ He & $1.5 \\times 10^7$ & 7 Myr & He \\')514print(r'He $\\rightarrow$ C,O & $1 \\times 10^8$ & 500 kyr & C, O \\')515print(r'C $\\rightarrow$ Ne,Mg & $5 \\times 10^8$ & 600 yr & Ne, Mg \\')516print(r'Ne $\\rightarrow$ O,Mg & $1.2 \\times 10^9$ & 1 yr & O, Mg \\')517print(r'O $\\rightarrow$ Si,S & $1.5 \\times 10^9$ & 6 months & Si, S \\')518print(r'Si $\\rightarrow$ Fe & $2.7 \\times 10^9$ & 1 day & Fe \\')519print(r'\bottomrule')520print(r'\end{tabular}')521print(r'\end{table}')522\end{pycode}523524\section{Limitations and Extensions}525526\subsection{Model Limitations}527\begin{enumerate}528\item \textbf{Single stars}: Binaries not included529\item \textbf{Solar metallicity}: Population II not modeled530\item \textbf{No rotation}: Rotating stars evolve differently531\item \textbf{Simplified tracks}: No detailed stellar models532\end{enumerate}533534\subsection{Possible Extensions}535\begin{itemize}536\item Binary evolution and mass transfer537\item Metallicity effects on evolution538\item Stellar rotation and magnetic fields539\item Detailed nucleosynthesis yields540\end{itemize}541542\section{Conclusion}543544This analysis demonstrates the power of the HR diagram for stellar astrophysics:545\begin{itemize}546\item Main sequence stars follow the mass-luminosity relation547\item MS lifetime: $\tau \propto M^{-2.5}$548\item Red giants: cool but luminous ($L \sim 100 L_\odot$, $T \sim 4000$ K)549\item White dwarfs: hot but dim ($L \sim 0.01 L_\odot$)550\item Stellar endpoints depend on initial mass551\end{itemize}552553\section*{Further Reading}554\begin{itemize}555\item Kippenhahn, R., Weigert, A., \& Weiss, A. (2012). \textit{Stellar Structure and Evolution}. Springer.556\item Prialnik, D. (2009). \textit{An Introduction to the Theory of Stellar Structure and Evolution}. Cambridge University Press.557\item Salaris, M. \& Cassisi, S. (2005). \textit{Evolution of Stars and Stellar Populations}. Wiley.558\end{itemize}559560\end{document}561562563