Path: blob/main/latex-templates/templates/aerospace/atmospheric_reentry.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{algorithm2e}8\usepackage{subcaption}9\usepackage[makestderr]{pythontex}1011% Theorem environments for research paper style12\newtheorem{definition}{Definition}13\newtheorem{theorem}{Theorem}14\newtheorem{remark}{Remark}1516\title{Atmospheric Reentry Analysis: Heat Flux, Trajectory, and Ablation Modeling\\17\large A Comprehensive Study of Ballistic and Lifting Reentry Profiles}18\author{Aerospace Systems Division\\Computational Science Templates}19\date{\today}2021\begin{document}22\maketitle2324\begin{abstract}25This research paper presents a comprehensive analysis of atmospheric reentry dynamics for spacecraft vehicles. We develop and compare ballistic and lifting reentry trajectories, computing time histories of altitude, velocity, deceleration, and stagnation-point heat flux. The analysis includes an exponential atmospheric model, Sutton-Graves heat flux correlation, and a simplified ablation model for thermal protection system sizing. Multiple entry angles and ballistic coefficients are evaluated to determine optimal reentry profiles for human-rated and cargo vehicles.26\end{abstract}2728\section{Introduction}29Atmospheric reentry is one of the most challenging phases of space flight, subjecting vehicles to extreme thermal and mechanical loads. The kinetic energy of an orbiting spacecraft must be dissipated through aerodynamic drag and converted to heat, much of which is transferred to the vehicle surface. Understanding the physics of reentry is essential for thermal protection system (TPS) design and crew safety.3031\begin{definition}[Ballistic Coefficient]32The ballistic coefficient characterizes a vehicle's resistance to atmospheric drag:33\begin{equation}34\beta = \frac{m}{C_D A}35\end{equation}36where $m$ is vehicle mass, $C_D$ is drag coefficient, and $A$ is reference area. Higher $\beta$ results in faster descent and higher heating rates.37\end{definition}3839\section{Mathematical Framework}4041\subsection{Equations of Motion}42For planar reentry, the equations of motion in a rotating frame are:43\begin{align}44\frac{dV}{dt} &= -\frac{\rho V^2}{2\beta} - g\sin\gamma \label{eq:velocity}\\45\frac{d\gamma}{dt} &= \frac{1}{V}\left[\left(\frac{V^2}{r} - g\right)\cos\gamma + \frac{L}{m}\right] \label{eq:flight_path}\\46\frac{dh}{dt} &= V\sin\gamma \label{eq:altitude}\\47\frac{dr_d}{dt} &= \frac{V\cos\gamma \cdot R_E}{R_E + h} \label{eq:range}48\end{align}49where $V$ is velocity, $\gamma$ is flight path angle (negative for descent), $h$ is altitude, and $r_d$ is downrange distance.5051\subsection{Atmospheric Model}52We employ an exponential atmosphere:53\begin{equation}54\rho(h) = \rho_0 \exp\left(-\frac{h}{H}\right)55\end{equation}56with scale height $H \approx 8.5$ km for Earth's lower atmosphere.5758\subsection{Heating Relations}5960\begin{theorem}[Sutton-Graves Correlation]61The convective heat flux at the stagnation point of a blunt body is:62\begin{equation}63\dot{q}_s = C \sqrt{\frac{\rho}{r_n}} V^364\end{equation}65where $C = 1.83 \times 10^{-4}$ W$\cdot$m$^{-1.5}$/(kg$^{0.5}$m$^{-3}$s$^{-3}$) and $r_n$ is the nose radius.66\end{theorem}6768The total heat load is the integral over the trajectory:69\begin{equation}70Q = \int_0^{t_f} \dot{q}_s \, dt71\end{equation}7273\subsection{Ablation Model}74For ablative TPS, the surface recession rate is:75\begin{equation}76\dot{s} = \frac{\dot{q}_s - \sigma T_w^4}{H_{eff}}77\end{equation}78where $H_{eff}$ is the effective heat of ablation and $T_w$ is the wall temperature.7980\section{Computational Analysis}8182\begin{pycode}83import numpy as np84from scipy.integrate import odeint, cumtrapz85import matplotlib.pyplot as plt86plt.rc('text', usetex=True)87plt.rc('font', family='serif')8889np.random.seed(42)9091# Physical constants92g0 = 9.81 # Sea-level gravity (m/s^2)93R_earth = 6.371e6 # Earth radius (m)94rho_0 = 1.225 # Sea level density (kg/m^3)95H = 8500 # Scale height (m)96sigma = 5.67e-8 # Stefan-Boltzmann constant9798# Atmospheric density model99def density(h):100return rho_0 * np.exp(-np.maximum(0, h) / H)101102# Gravity model103def gravity(h):104return g0 * (R_earth / (R_earth + h))**2105106# Equations of motion for ballistic reentry107def reentry_dynamics(state, t, beta, L_D_ratio=0):108V, gamma, h, r_d = state109if h < 0 or V < 100:110return [0, 0, 0, 0]111112rho = density(h)113g = gravity(h)114r = R_earth + h115116# Aerodynamic forces117q_bar = 0.5 * rho * V**2 # Dynamic pressure118D_m = q_bar / beta # Drag acceleration119L_m = D_m * L_D_ratio # Lift acceleration120121# Derivatives122dVdt = -D_m - g * np.sin(gamma)123dgammadt = (1/V) * ((V**2/r - g) * np.cos(gamma) + L_m)124dhdt = V * np.sin(gamma)125dr_d_dt = V * np.cos(gamma) * R_earth / r126127return [dVdt, dgammadt, dhdt, dr_d_dt]128129# Heat flux calculation (Sutton-Graves)130def compute_heat_flux(rho, V, r_n):131C = 1.83e-4132return C * np.sqrt(rho / r_n) * V**3 / 1e6 # MW/m^2133134# Vehicle configurations135vehicles = {136'Capsule': {'m': 5000, 'Cd': 1.3, 'A': 12.0, 'r_n': 2.5, 'L_D': 0.3},137'Shuttle': {'m': 80000, 'Cd': 0.9, 'A': 250.0, 'r_n': 1.5, 'L_D': 1.2},138'Lifting Body': {'m': 8000, 'Cd': 0.4, 'A': 20.0, 'r_n': 0.5, 'L_D': 2.0}139}140141# Entry angles to study142entry_angles = [-1.0, -2.0, -3.0, -5.0] # degrees143144# Initial conditions145V0 = 7800 # m/s (orbital velocity)146h0 = 120000 # m (entry interface)147148# Time span149t = np.linspace(0, 800, 2000)150151# Store results152all_results = {}153154# Simulate for all vehicles (with nominal entry angle)155nominal_angle = -2.0156for name, params in vehicles.items():157beta = params['m'] / (params['Cd'] * params['A'])158gamma0 = np.deg2rad(nominal_angle)159state0 = [V0, gamma0, h0, 0]160161sol = odeint(reentry_dynamics, state0, t, args=(beta, params['L_D']))162V, gamma, h, r_d = sol.T163164# Compute derived quantities165rho = density(h)166decel = rho * V**2 / (2 * beta * g0) # in g's167q_dot = compute_heat_flux(rho, V, params['r_n'])168169# Total heat load170Q_total = np.trapz(q_dot * 1e6, t) # J/m^2171172# Find peaks173valid = h > 0174if np.any(valid):175peak_decel_idx = np.argmax(decel)176peak_heat_idx = np.argmax(q_dot)177else:178peak_decel_idx = peak_heat_idx = 0179180all_results[name] = {181'V': V, 'gamma': gamma, 'h': h, 'r_d': r_d,182'decel': decel, 'q_dot': q_dot, 'beta': beta,183'peak_decel': decel[peak_decel_idx],184'peak_decel_time': t[peak_decel_idx],185'peak_decel_alt': h[peak_decel_idx],186'peak_heat': q_dot[peak_heat_idx],187'peak_heat_time': t[peak_heat_idx],188'Q_total': Q_total / 1e6 # MJ/m^2189}190191# Entry angle comparison for capsule192capsule_params = vehicles['Capsule']193beta_capsule = capsule_params['m'] / (capsule_params['Cd'] * capsule_params['A'])194angle_results = {}195196for angle in entry_angles:197gamma0 = np.deg2rad(angle)198state0 = [V0, gamma0, h0, 0]199sol = odeint(reentry_dynamics, state0, t, args=(beta_capsule, capsule_params['L_D']))200V, gamma, h, r_d = sol.T201202rho = density(h)203decel = rho * V**2 / (2 * beta_capsule * g0)204q_dot = compute_heat_flux(rho, V, capsule_params['r_n'])205206angle_results[angle] = {207'h': h, 'decel': decel, 'q_dot': q_dot,208'peak_decel': np.max(decel),209'peak_heat': np.max(q_dot)210}211212# Create comprehensive visualization213fig = plt.figure(figsize=(14, 12))214215# Plot 1: Altitude profiles for different vehicles216ax1 = fig.add_subplot(2, 3, 1)217colors = plt.cm.Set1(np.linspace(0, 0.6, len(vehicles)))218for (name, res), color in zip(all_results.items(), colors):219valid = res['h'] > 0220ax1.plot(t[valid], res['h'][valid]/1000, linewidth=2, color=color, label=name)221ax1.set_xlabel('Time (s)')222ax1.set_ylabel('Altitude (km)')223ax1.set_title('Altitude Profiles')224ax1.legend(fontsize=8)225ax1.grid(True, alpha=0.3)226227# Plot 2: Velocity profiles228ax2 = fig.add_subplot(2, 3, 2)229for (name, res), color in zip(all_results.items(), colors):230valid = res['h'] > 0231ax2.plot(t[valid], res['V'][valid]/1000, linewidth=2, color=color, label=name)232ax2.set_xlabel('Time (s)')233ax2.set_ylabel('Velocity (km/s)')234ax2.set_title('Velocity Profiles')235ax2.legend(fontsize=8)236ax2.grid(True, alpha=0.3)237238# Plot 3: Deceleration profiles239ax3 = fig.add_subplot(2, 3, 3)240for (name, res), color in zip(all_results.items(), colors):241valid = res['h'] > 0242ax3.plot(t[valid], res['decel'][valid], linewidth=2, color=color, label=name)243ax3.set_xlabel('Time (s)')244ax3.set_ylabel('Deceleration (g)')245ax3.set_title('Deceleration Loads')246ax3.legend(fontsize=8)247ax3.grid(True, alpha=0.3)248249# Plot 4: Heat flux comparison250ax4 = fig.add_subplot(2, 3, 4)251for (name, res), color in zip(all_results.items(), colors):252valid = res['h'] > 0253ax4.plot(t[valid], res['q_dot'][valid], linewidth=2, color=color, label=name)254ax4.fill_between(t[valid], 0, res['q_dot'][valid], alpha=0.2, color=color)255ax4.set_xlabel('Time (s)')256ax4.set_ylabel(r'Heat Flux (MW/m$^2$)')257ax4.set_title('Stagnation Point Heating')258ax4.legend(fontsize=8)259ax4.grid(True, alpha=0.3)260261# Plot 5: Entry angle effects262ax5 = fig.add_subplot(2, 3, 5)263angle_colors = plt.cm.plasma(np.linspace(0.2, 0.8, len(entry_angles)))264for angle, color in zip(entry_angles, angle_colors):265res = angle_results[angle]266valid = res['h'] > 0267ax5.plot(t[valid], res['q_dot'][valid], linewidth=2, color=color,268label=f'$\\gamma_0 = {angle}^\\circ$')269ax5.set_xlabel('Time (s)')270ax5.set_ylabel(r'Heat Flux (MW/m$^2$)')271ax5.set_title('Entry Angle Effects (Capsule)')272ax5.legend(fontsize=8)273ax5.grid(True, alpha=0.3)274275# Plot 6: Performance summary276ax6 = fig.add_subplot(2, 3, 6)277names = list(all_results.keys())278peak_decels = [all_results[n]['peak_decel'] for n in names]279peak_heats = [all_results[n]['peak_heat'] for n in names]280281x = np.arange(len(names))282width = 0.35283284bars1 = ax6.bar(x - width/2, peak_decels, width, label='Peak Decel (g)',285color='steelblue', alpha=0.8)286ax6_twin = ax6.twinx()287bars2 = ax6_twin.bar(x + width/2, peak_heats, width,288label=r'Peak $\dot{q}$ (MW/m$^2$)', color='coral', alpha=0.8)289290ax6.set_xlabel('Vehicle Type')291ax6.set_ylabel('Peak Deceleration (g)', color='steelblue')292ax6_twin.set_ylabel(r'Peak Heat Flux (MW/m$^2$)', color='coral')293ax6.set_xticks(x)294ax6.set_xticklabels(names, rotation=15)295ax6.set_title('Peak Values Comparison')296ax6.legend(loc='upper left', fontsize=8)297ax6_twin.legend(loc='upper right', fontsize=8)298299plt.tight_layout()300plt.savefig('atmospheric_reentry_plot.pdf', bbox_inches='tight', dpi=150)301print(r'\begin{center}')302print(r'\includegraphics[width=\textwidth]{atmospheric_reentry_plot.pdf}')303print(r'\end{center}')304plt.close()305306# Best vehicle for human rating (lowest decel)307human_rated = min(all_results.items(), key=lambda x: x[1]['peak_decel'])308human_name = human_rated[0]309human_decel = human_rated[1]['peak_decel']310\end{pycode}311312\section{Computational Algorithm}313314\begin{algorithm}[H]315\SetAlgoLined316\KwIn{Initial state $[V_0, \gamma_0, h_0]$, vehicle parameters $\beta, r_n, L/D$}317\KwOut{Time histories of $V(t), h(t), \dot{q}(t)$, peak values}318Initialize state vector\;319\For{each time step}{320Compute atmospheric density $\rho(h)$\;321Compute gravity $g(h)$\;322\tcc{Aerodynamic accelerations}323$D/m \leftarrow \rho V^2 / (2\beta)$\;324$L/m \leftarrow (D/m) \cdot (L/D)$\;325\tcc{Equations of motion}326Integrate equations (\ref{eq:velocity})-(\ref{eq:range})\;327\tcc{Heat flux}328$\dot{q}_s \leftarrow C\sqrt{\rho/r_n} V^3$\;329Store results\;330}331Compute peak deceleration and heat flux\;332Compute total heat load $Q = \int \dot{q} \, dt$\;333\Return{Trajectory data, thermal loads}334\caption{Atmospheric Reentry Simulation}335\end{algorithm}336337\section{Results and Discussion}338339\subsection{Vehicle Comparison}340341\begin{pycode}342# Generate results table343print(r'\begin{table}[h]')344print(r'\centering')345print(r'\caption{Reentry Performance Comparison}')346print(r'\begin{tabular}{lccccc}')347print(r'\toprule')348print(r'Vehicle & $\beta$ & Peak Decel & Peak $\dot{q}$ & $t_{peak}$ & Total $Q$ \\')349print(r' & (kg/m$^2$) & (g) & (MW/m$^2$) & (s) & (MJ/m$^2$) \\')350print(r'\midrule')351for name in vehicles.keys():352res = all_results[name]353print(f"{name} & {res['beta']:.0f} & {res['peak_decel']:.1f} & {res['peak_heat']:.2f} & {res['peak_heat_time']:.0f} & {res['Q_total']:.1f} \\\\")354print(r'\bottomrule')355print(r'\end{tabular}')356print(r'\end{table}')357\end{pycode}358359\subsection{Key Observations}360361\begin{remark}[Vehicle Configuration Trade-offs]362The Shuttle configuration experiences the longest reentry duration due to its high L/D ratio, which reduces peak heating but increases total heat load. The capsule configuration experiences the highest peak deceleration but shortest heating duration.363\end{remark}364365The \py{human_name} configuration achieves the lowest peak deceleration of \py{f"{human_decel:.1f}"} g, making it most suitable for human-rated missions (typically requiring $<$ 10 g).366367\subsection{Entry Angle Sensitivity}368369\begin{pycode}370# Entry angle table371print(r'\begin{table}[h]')372print(r'\centering')373print(r'\caption{Entry Angle Effects on Capsule Performance}')374print(r'\begin{tabular}{ccc}')375print(r'\toprule')376print(r'Entry Angle & Peak Decel & Peak $\dot{q}$ \\')377print(r'(degrees) & (g) & (MW/m$^2$) \\')378print(r'\midrule')379for angle in entry_angles:380res = angle_results[angle]381print(f"{angle} & {res['peak_decel']:.1f} & {res['peak_heat']:.2f} \\\\")382print(r'\bottomrule')383print(r'\end{tabular}')384print(r'\end{table}')385\end{pycode}386387\begin{remark}[Entry Corridor]388Shallow entry angles reduce peak heating but extend the heating duration and increase total heat load. Steep entry angles cause excessive deceleration. The entry corridor is bounded by skip-out (too shallow) and structural limits (too steep).389\end{remark}390391\subsection{Thermal Protection Implications}392393For the capsule with $\gamma_0 = -2^\circ$:394\begin{itemize}395\item Peak heat flux: \py{f"{all_results['Capsule']['peak_heat']:.2f}"} MW/m$^2$396\item Peak heating occurs at $t = $ \py{f"{all_results['Capsule']['peak_heat_time']:.0f}"} s397\item Altitude at peak heating: \py{f"{all_results['Capsule']['peak_decel_alt']/1000:.1f}"} km398\item Total heat load: \py{f"{all_results['Capsule']['Q_total']:.1f}"} MJ/m$^2$399\end{itemize}400401\section{Ablation Analysis}402403For an ablative heat shield with $H_{eff} = 30$ MJ/kg and density $\rho_{TPS} = 1500$ kg/m$^3$:404\begin{equation}405\text{Minimum TPS thickness} = \frac{Q}{\rho_{TPS} \cdot H_{eff}}406\end{equation}407408\begin{pycode}409# TPS sizing410H_eff = 30e6 # J/kg411rho_TPS = 1500 # kg/m^3412Q_total = all_results['Capsule']['Q_total'] * 1e6 # J/m^2413thickness_min = Q_total / (rho_TPS * H_eff) * 1000 # mm414safety_factor = 2.0415thickness_design = thickness_min * safety_factor416\end{pycode}417418For the capsule configuration:419\begin{itemize}420\item Minimum ablator thickness: \py{f"{thickness_min:.1f}"} mm421\item Design thickness (SF = 2.0): \py{f"{thickness_design:.1f}"} mm422\end{itemize}423424\section{Limitations and Extensions}425426\subsection{Model Limitations}427\begin{enumerate}428\item \textbf{2D trajectory}: Neglects out-of-plane maneuvers and Earth rotation429\item \textbf{Exponential atmosphere}: Does not capture density variations with latitude/season430\item \textbf{Constant aerodynamics}: $C_D$ and $L/D$ vary with Mach and Reynolds numbers431\item \textbf{Simplified heating}: Neglects radiative heating and real-gas effects432\item \textbf{No ablation coupling}: Surface recession not coupled back to aerodynamics433\end{enumerate}434435\subsection{Possible Extensions}436\begin{itemize}437\item 6-DOF simulation with attitude dynamics438\item Knudsen number effects in rarefied upper atmosphere439\item Real-gas thermochemistry for shock layer440\item Coupled ablation-aerothermal analysis441\item Monte Carlo trajectory dispersion analysis442\end{itemize}443444\section{Conclusion}445This analysis demonstrates the critical trade-offs in atmospheric reentry vehicle design:446\begin{itemize}447\item Higher L/D ratios reduce peak g-loads but extend heating duration448\item Larger nose radii reduce peak heat flux (spreading over larger area)449\item Entry angle selection is constrained by the entry corridor450\item The \py{human_name} configuration with peak deceleration of \py{f"{human_decel:.1f}"} g is most suitable for crew return451\end{itemize}452453The computational methods provide a foundation for preliminary TPS sizing and mission design.454455\section*{Further Reading}456\begin{itemize}457\item Anderson, J. D. (2006). \textit{Hypersonic and High-Temperature Gas Dynamics}. AIAA.458\item Sutton, K., \& Graves, R. A. (1971). A general stagnation-point convective-heating equation for arbitrary gas mixtures. NASA TR R-376.459\item Tauber, M. E., \& Sutton, K. (1991). Stagnation-point radiative heating relations for Earth and Mars entries. Journal of Spacecraft and Rockets.460\end{itemize}461462\end{document}463464465