Path: blob/main/latex-templates/templates/geophysics/seismic_waves.tex
51 views
unlisted
% Seismic Wave Propagation Template1% Topics: P-waves, S-waves, travel times, Earth structure, ray tracing2% Style: Technical report with observational data analysis34\documentclass[a4paper, 11pt]{article}5\usepackage[utf8]{inputenc}6\usepackage[T1]{fontenc}7\usepackage{amsmath, amssymb}8\usepackage{graphicx}9\usepackage{siunitx}10\usepackage{booktabs}11\usepackage{subcaption}12\usepackage[makestderr]{pythontex}1314% Theorem environments15\newtheorem{definition}{Definition}[section]16\newtheorem{theorem}{Theorem}[section]17\newtheorem{example}{Example}[section]18\newtheorem{remark}{Remark}[section]1920\title{Seismic Wave Propagation: Earth Structure and Travel Time Analysis}21\author{Geophysical Observatory}22\date{\today}2324\begin{document}25\maketitle2627\begin{abstract}28This technical report presents a comprehensive analysis of seismic wave propagation29through Earth's interior. We examine P-wave and S-wave velocities in different Earth30layers, compute travel times using ray theory, and analyze seismograms to determine31Earth structure. The analysis includes velocity-depth profiles based on the PREM model,32Snell's law for ray tracing, and the interpretation of seismic shadow zones that reveal33Earth's liquid outer core.34\end{abstract}3536\section{Introduction}3738Seismic waves generated by earthquakes provide the primary means of probing Earth's39deep interior. The velocity and attenuation of these waves depend on the elastic40properties and density of the materials through which they propagate.4142\begin{definition}[Seismic Wave Types]43The two main body wave types are:44\begin{itemize}45\item \textbf{P-waves} (Primary): Compressional waves with particle motion parallel to propagation46\item \textbf{S-waves} (Secondary): Shear waves with particle motion perpendicular to propagation47\end{itemize}48S-waves cannot propagate through liquids (zero shear modulus).49\end{definition}5051\section{Theoretical Framework}5253\subsection{Wave Velocities}5455\begin{theorem}[Seismic Velocities]56For an isotropic elastic medium with bulk modulus $K$, shear modulus $\mu$, and density $\rho$:57\begin{align}58V_P &= \sqrt{\frac{K + \frac{4}{3}\mu}{\rho}} \\59V_S &= \sqrt{\frac{\mu}{\rho}}60\end{align}61The ratio $V_P/V_S = \sqrt{(K/\mu + 4/3)} \approx 1.7$ for typical rocks.62\end{theorem}6364\begin{definition}[Poisson's Ratio]65Poisson's ratio relates to seismic velocities:66\begin{equation}67\nu = \frac{V_P^2 - 2V_S^2}{2(V_P^2 - V_S^2)}68\end{equation}69For fluids, $\nu = 0.5$; for typical rocks, $\nu \approx 0.25$.70\end{definition}7172\subsection{Ray Theory}7374\begin{theorem}[Snell's Law for Seismic Rays]75At an interface between layers with velocities $V_1$ and $V_2$:76\begin{equation}77\frac{\sin i_1}{V_1} = \frac{\sin i_2}{V_2} = p78\end{equation}79where $p$ is the ray parameter (constant along a ray path).80\end{theorem}8182\begin{remark}[Critical Angle]83When $V_2 > V_1$, a critical angle $i_c = \arcsin(V_1/V_2)$ exists. For incidence84angles greater than $i_c$, total internal reflection occurs.85\end{remark}8687\subsection{Travel Time Equations}8889\begin{theorem}[Travel Time for Constant Velocity Layer]90For a horizontal layer of thickness $h$ and velocity $V$:91\begin{equation}92T(x) = \frac{1}{V}\sqrt{x^2 + 4h^2}93\end{equation}94where $x$ is the horizontal distance (epicentral distance).95\end{theorem}9697\section{Computational Analysis}9899\begin{pycode}100import numpy as np101import matplotlib.pyplot as plt102from scipy.integrate import odeint103104np.random.seed(42)105106# PREM-like Earth model (Preliminary Reference Earth Model)107def prem_velocities(depth):108"""Return Vp, Vs (km/s) for given depth (km)."""109if depth < 15: # Upper crust110return 5.8, 3.2111elif depth < 35: # Lower crust112return 6.8, 3.9113elif depth < 220: # Lithosphere/Upper mantle114return 8.0, 4.4115elif depth < 400: # Upper mantle116return 8.5, 4.6117elif depth < 670: # Transition zone118return 9.9, 5.4119elif depth < 2891: # Lower mantle120return 13.0 - (depth - 670) * 0.001, 7.0 - (depth - 670) * 0.0005121elif depth < 5150: # Outer core (liquid)122return 10.0 + (depth - 2891) * 0.0004, 0.0123else: # Inner core124return 11.0, 3.5125126# Create velocity profile127depths = np.linspace(0, 6371, 1000)128Vp = np.array([prem_velocities(d)[0] for d in depths])129Vs = np.array([prem_velocities(d)[1] for d in depths])130131# Density profile (simplified)132def prem_density(depth):133if depth < 35:134return 2.7135elif depth < 670:136return 3.4 + depth * 0.0005137elif depth < 2891:138return 4.4 + (depth - 670) * 0.001139elif depth < 5150:140return 10.0 + (depth - 2891) * 0.001141else:142return 13.0143144rho = np.array([prem_density(d) for d in depths])145146# Travel time calculation (simplified ray tracing)147def travel_time(distance_deg, wave_type='P'):148"""Calculate travel time for given epicentral distance."""149# Simplified: average velocity approximation150distance_km = distance_deg * 111.19151if wave_type == 'P':152# P-wave average velocity varies with distance153if distance_deg < 100:154v_avg = 8.5 + distance_deg * 0.02155else:156v_avg = 13.0 # Core phases157return distance_km / v_avg158else: # S-wave159if distance_deg < 100:160v_avg = 4.8 + distance_deg * 0.01161return distance_km / v_avg162else:163return np.nan # S-wave shadow zone164165# Calculate travel times166distances = np.linspace(0, 180, 181)167tt_P = np.array([travel_time(d, 'P') for d in distances])168tt_S = np.array([travel_time(d, 'S') for d in distances])169170# Generate synthetic seismogram171def synthetic_seismogram(distance_deg, duration=600):172t = np.linspace(0, duration, duration * 10)173signal = np.zeros_like(t)174175# P-wave arrival176t_p = travel_time(distance_deg, 'P')177if not np.isnan(t_p):178idx_p = int(t_p * 10)179if idx_p < len(signal) - 50:180signal[idx_p:idx_p+50] = np.sin(2*np.pi*np.arange(50)/10) * np.exp(-np.arange(50)/15)181182# S-wave arrival183t_s = travel_time(distance_deg, 'S')184if not np.isnan(t_s):185idx_s = int(t_s * 10)186if idx_s < len(signal) - 100:187signal[idx_s:idx_s+100] = 1.5 * np.sin(2*np.pi*np.arange(100)/15) * np.exp(-np.arange(100)/25)188189# Add noise190signal += 0.05 * np.random.randn(len(t))191return t, signal192193# Calculate Poisson's ratio194nu = np.zeros_like(depths)195for i in range(len(depths)):196if Vs[i] > 0:197nu[i] = (Vp[i]**2 - 2*Vs[i]**2) / (2*(Vp[i]**2 - Vs[i]**2))198else:199nu[i] = 0.5 # Liquid200201# Vp/Vs ratio202Vp_Vs = np.where(Vs > 0, Vp / Vs, np.nan)203204# Ray parameter calculation205def ray_parameter(takeoff_angle, v_surface=6.0):206return np.sin(np.radians(takeoff_angle)) / v_surface207208# Impedance contrast209impedance = rho * Vp210211# Create figure212fig = plt.figure(figsize=(14, 12))213214# Plot 1: Velocity profile215ax1 = fig.add_subplot(3, 3, 1)216ax1.plot(Vp, depths, 'b-', linewidth=2, label='$V_P$')217ax1.plot(Vs, depths, 'r-', linewidth=2, label='$V_S$')218ax1.axhline(y=2891, color='gray', linestyle='--', alpha=0.7, label='CMB')219ax1.axhline(y=5150, color='gray', linestyle=':', alpha=0.7, label='ICB')220ax1.set_xlabel('Velocity (km/s)')221ax1.set_ylabel('Depth (km)')222ax1.set_title('PREM Velocity Profile')223ax1.legend(fontsize=8)224ax1.invert_yaxis()225226# Plot 2: Travel time curves227ax2 = fig.add_subplot(3, 3, 2)228ax2.plot(distances, tt_P, 'b-', linewidth=2, label='P-wave')229ax2.plot(distances, tt_S, 'r-', linewidth=2, label='S-wave')230ax2.axvline(x=103, color='gray', linestyle='--', alpha=0.7)231ax2.axvline(x=143, color='gray', linestyle=':', alpha=0.7)232ax2.set_xlabel('Epicentral Distance (deg)')233ax2.set_ylabel('Travel Time (s)')234ax2.set_title('Travel Time Curves')235ax2.legend(fontsize=8)236ax2.text(115, 800, 'Shadow\nZone', fontsize=8, ha='center')237238# Plot 3: Synthetic seismogram239ax3 = fig.add_subplot(3, 3, 3)240t_seis, signal = synthetic_seismogram(60)241ax3.plot(t_seis, signal, 'k-', linewidth=0.5)242t_p_60 = travel_time(60, 'P')243t_s_60 = travel_time(60, 'S')244ax3.axvline(x=t_p_60, color='blue', linestyle='--', label=f'P: {t_p_60:.0f}s')245ax3.axvline(x=t_s_60, color='red', linestyle='--', label=f'S: {t_s_60:.0f}s')246ax3.set_xlabel('Time (s)')247ax3.set_ylabel('Amplitude')248ax3.set_title('Synthetic Seismogram (60 deg)')249ax3.legend(fontsize=8)250ax3.set_xlim([0, 600])251252# Plot 4: Poisson's ratio253ax4 = fig.add_subplot(3, 3, 4)254ax4.plot(nu, depths, 'g-', linewidth=2)255ax4.axhline(y=2891, color='gray', linestyle='--', alpha=0.7)256ax4.axvline(x=0.5, color='red', linestyle=':', alpha=0.7, label='Liquid')257ax4.set_xlabel("Poisson's Ratio")258ax4.set_ylabel('Depth (km)')259ax4.set_title("Poisson's Ratio Profile")260ax4.invert_yaxis()261ax4.set_xlim([0.2, 0.52])262ax4.legend(fontsize=8)263264# Plot 5: Vp/Vs ratio265ax5 = fig.add_subplot(3, 3, 5)266ax5.plot(Vp_Vs, depths, 'purple', linewidth=2)267ax5.axhline(y=2891, color='gray', linestyle='--', alpha=0.7)268ax5.set_xlabel('$V_P/V_S$')269ax5.set_ylabel('Depth (km)')270ax5.set_title('Velocity Ratio Profile')271ax5.invert_yaxis()272ax5.set_xlim([1.5, 2.5])273274# Plot 6: Density profile275ax6 = fig.add_subplot(3, 3, 6)276ax6.plot(rho, depths, 'brown', linewidth=2)277ax6.axhline(y=2891, color='gray', linestyle='--', alpha=0.7)278ax6.set_xlabel('Density (g/cm$^3$)')279ax6.set_ylabel('Depth (km)')280ax6.set_title('Density Profile')281ax6.invert_yaxis()282283# Plot 7: S-P time difference284ax7 = fig.add_subplot(3, 3, 7)285ts_tp = tt_S - tt_P286ax7.plot(distances[:100], ts_tp[:100], 'purple', linewidth=2)287ax7.set_xlabel('Epicentral Distance (deg)')288ax7.set_ylabel('S-P Time (s)')289ax7.set_title('S-P Time Difference')290291# Plot 8: Record section292ax8 = fig.add_subplot(3, 3, 8)293for i, dist in enumerate(range(20, 100, 10)):294t_rec, sig = synthetic_seismogram(dist, 500)295ax8.plot(t_rec, sig * 0.3 + dist, 'k-', linewidth=0.5)296ax8.set_xlabel('Time (s)')297ax8.set_ylabel('Distance (deg)')298ax8.set_title('Record Section')299ax8.set_xlim([0, 500])300301# Plot 9: Impedance contrast302ax9 = fig.add_subplot(3, 3, 9)303ax9.plot(impedance, depths, 'orange', linewidth=2)304ax9.axhline(y=2891, color='gray', linestyle='--', alpha=0.7)305ax9.axhline(y=35, color='blue', linestyle=':', alpha=0.7, label='Moho')306ax9.set_xlabel('Impedance (kg/m$^2$/s)')307ax9.set_ylabel('Depth (km)')308ax9.set_title('Acoustic Impedance')309ax9.invert_yaxis()310ax9.legend(fontsize=8)311312plt.tight_layout()313plt.savefig('seismic_waves_analysis.pdf', dpi=150, bbox_inches='tight')314plt.close()315316# Key values317Vp_mantle = 8.0318Vs_mantle = 4.4319Vp_Vs_mantle = Vp_mantle / Vs_mantle320CMB_depth = 2891321\end{pycode}322323\begin{figure}[htbp]324\centering325\includegraphics[width=\textwidth]{seismic_waves_analysis.pdf}326\caption{Seismic wave analysis: (a) PREM velocity profile; (b) Travel time curves showing327shadow zone; (c) Synthetic seismogram at 60 degrees; (d) Poisson's ratio showing liquid328outer core; (e) $V_P/V_S$ ratio; (f) Density profile; (g) S-P time difference for329earthquake location; (h) Record section; (i) Acoustic impedance contrasts.}330\label{fig:seismic}331\end{figure}332333\section{Results}334335\subsection{Earth Structure}336337\begin{pycode}338print(r"\begin{table}[htbp]")339print(r"\centering")340print(r"\caption{Earth Layer Properties from PREM}")341print(r"\begin{tabular}{lcccc}")342print(r"\toprule")343print(r"Layer & Depth (km) & $V_P$ (km/s) & $V_S$ (km/s) & $\rho$ (g/cm$^3$) \\")344print(r"\midrule")345print(r"Upper Crust & 0--15 & 5.8 & 3.2 & 2.7 \\")346print(r"Lower Crust & 15--35 & 6.8 & 3.9 & 2.9 \\")347print(r"Upper Mantle & 35--670 & 8.0--9.9 & 4.4--5.4 & 3.4--4.4 \\")348print(r"Lower Mantle & 670--2891 & 13.0 & 7.0 & 4.4--5.6 \\")349print(r"Outer Core & 2891--5150 & 10.0 & 0 & 10.0--12.2 \\")350print(r"Inner Core & 5150--6371 & 11.0 & 3.5 & 13.0 \\")351print(r"\bottomrule")352print(r"\end{tabular}")353print(r"\label{tab:layers}")354print(r"\end{table}")355\end{pycode}356357\section{Discussion}358359\begin{example}[S-Wave Shadow Zone]360The absence of S-waves between 103 and 180 degrees epicentral distance proves361that Earth's outer core is liquid:362\begin{itemize}363\item S-waves require shear strength to propagate364\item Liquids have zero shear modulus365\item P-waves are refracted through the core, creating a separate shadow zone366\end{itemize}367\end{example}368369\begin{remark}[Earthquake Location]370The S-P time difference is used to estimate distance to an earthquake:371\begin{equation}372\Delta t_{S-P} = D \left(\frac{1}{V_S} - \frac{1}{V_P}\right)373\end{equation}374With three or more stations, the epicenter can be triangulated.375\end{remark}376377\begin{example}[Moho Discontinuity]378The Mohorovicic discontinuity marks the crust-mantle boundary:379\begin{itemize}380\item Sharp velocity increase: $V_P$ from 6.8 to 8.0 km/s381\item Depth varies: 35 km (continents), 7 km (oceans)382\item Reflection coefficient depends on impedance contrast383\end{itemize}384\end{example}385386\section{Conclusions}387388This seismic wave analysis demonstrates:389\begin{enumerate}390\item Upper mantle velocities: $V_P = \py{f"{Vp_mantle}"}$ km/s, $V_S = \py{f"{Vs_mantle}"}$ km/s391\item $V_P/V_S$ ratio: $\py{f"{Vp_Vs_mantle:.2f}"}$ (typical of silicate rocks)392\item Core-mantle boundary at $\py{f"{CMB_depth}"}$ km depth393\item S-wave shadow zone beyond 103 degrees proves liquid outer core394\item Seismic tomography can map 3D velocity variations395\end{enumerate}396397\section*{Further Reading}398399\begin{itemize}400\item Stein, S. \& Wysession, M. \textit{An Introduction to Seismology, Earthquakes, and Earth Structure}. Blackwell, 2003.401\item Shearer, P.M. \textit{Introduction to Seismology}, 3rd ed. Cambridge, 2019.402\item Dziewonski, A.M. \& Anderson, D.L. Preliminary reference Earth model. \textit{Phys. Earth Planet. Inter.} 25, 297--356, 1981.403\end{itemize}404405\end{document}406407408