Path: blob/main/latex-templates/templates/biomedical/biomechanics.tex
51 views
unlisted
\documentclass[11pt,a4paper]{article}1\usepackage[utf8]{inputenc}2\usepackage[T1]{fontenc}3\usepackage{amsmath,amssymb}4\usepackage{graphicx}5\usepackage{booktabs}6\usepackage{siunitx}7\usepackage{geometry}8\geometry{margin=1in}9\usepackage{pythontex}10\usepackage{hyperref}11\usepackage{float}1213\title{Biomechanics\\Tissue Mechanics and Viscoelasticity}14\author{Biomedical Engineering Department}15\date{\today}1617\begin{document}18\maketitle1920\begin{abstract}21Analysis of biological tissue mechanics including stress-strain relationships, viscoelasticity, and bone mechanics.22\end{abstract}232425\section{Introduction}2627Biomechanics applies mechanical principles to biological systems.2829\begin{pycode}30import numpy as np31import matplotlib.pyplot as plt32plt.rcParams['text.usetex'] = True33plt.rcParams['font.family'] = 'serif'34\end{pycode}3536\section{Stress-Strain Curves}3738\begin{pycode}39strain = np.linspace(0, 0.3, 100)4041# Different tissue types42bone_stress = 20e9 * strain * (strain < 0.02) + (20e9 * 0.02) * (strain >= 0.02)43tendon_stress = 1.5e9 * strain**1.544skin_stress = 1e6 * (np.exp(10*strain) - 1)4546fig, ax = plt.subplots(figsize=(10, 6))47ax.plot(strain * 100, bone_stress / 1e6, label='Bone', linewidth=1.5)48ax.plot(strain * 100, tendon_stress / 1e6, label='Tendon', linewidth=1.5)49ax.plot(strain * 100, skin_stress / 1e6, label='Skin', linewidth=1.5)50ax.set_xlabel('Strain (\\%)')51ax.set_ylabel('Stress (MPa)')52ax.set_title('Stress-Strain Curves for Biological Tissues')53ax.legend()54ax.grid(True, alpha=0.3)55ax.set_xlim([0, 30])56ax.set_ylim([0, 500])57plt.tight_layout()58plt.savefig('tissue_stress_strain.pdf', dpi=150, bbox_inches='tight')59plt.close()60\end{pycode}6162\begin{figure}[H]63\centering64\includegraphics[width=0.85\textwidth]{tissue_stress_strain.pdf}65\caption{Stress-strain behavior of different tissues.}66\end{figure}6768\section{Viscoelastic Models}6970Standard Linear Solid: $\sigma + \tau_\sigma \dot{\sigma} = E_R \epsilon + \tau_\epsilon E_R \dot{\epsilon}$7172\begin{pycode}73# Stress relaxation74t = np.linspace(0, 10, 100)75E_0 = 10 # Initial modulus76E_inf = 2 # Equilibrium modulus77tau = 2 # Relaxation time7879G_t = E_inf + (E_0 - E_inf) * np.exp(-t/tau)8081fig, ax = plt.subplots(figsize=(10, 6))82ax.plot(t, G_t, 'b-', linewidth=2)83ax.axhline(y=E_inf, color='r', linestyle='--', label='$E_\\infty$')84ax.set_xlabel('Time (s)')85ax.set_ylabel('Relaxation Modulus (MPa)')86ax.set_title('Stress Relaxation')87ax.legend()88ax.grid(True, alpha=0.3)89plt.tight_layout()90plt.savefig('stress_relaxation.pdf', dpi=150, bbox_inches='tight')91plt.close()92\end{pycode}9394\begin{figure}[H]95\centering96\includegraphics[width=0.85\textwidth]{stress_relaxation.pdf}97\caption{Viscoelastic stress relaxation.}98\end{figure}99100\section{Creep Response}101102\begin{pycode}103J_0 = 0.1 # Initial compliance104J_inf = 0.5 # Equilibrium compliance105106J_t = J_inf - (J_inf - J_0) * np.exp(-t/tau)107108fig, ax = plt.subplots(figsize=(10, 6))109ax.plot(t, J_t, 'b-', linewidth=2)110ax.set_xlabel('Time (s)')111ax.set_ylabel('Creep Compliance (1/MPa)')112ax.set_title('Creep Response')113ax.grid(True, alpha=0.3)114plt.tight_layout()115plt.savefig('creep_response.pdf', dpi=150, bbox_inches='tight')116plt.close()117\end{pycode}118119\begin{figure}[H]120\centering121\includegraphics[width=0.85\textwidth]{creep_response.pdf}122\caption{Viscoelastic creep compliance.}123\end{figure}124125\section{Dynamic Modulus}126127\begin{pycode}128omega = np.logspace(-2, 2, 100)129130# Storage and loss moduli131E_storage = E_inf + (E_0 - E_inf) * (omega * tau)**2 / (1 + (omega * tau)**2)132E_loss = (E_0 - E_inf) * omega * tau / (1 + (omega * tau)**2)133134fig, ax = plt.subplots(figsize=(10, 6))135ax.loglog(omega, E_storage, 'b-', linewidth=2, label="$E'$ (Storage)")136ax.loglog(omega, E_loss, 'r-', linewidth=2, label="$E''$ (Loss)")137ax.set_xlabel('Frequency (rad/s)')138ax.set_ylabel('Modulus (MPa)')139ax.set_title('Dynamic Mechanical Properties')140ax.legend()141ax.grid(True, alpha=0.3, which='both')142plt.tight_layout()143plt.savefig('dynamic_modulus.pdf', dpi=150, bbox_inches='tight')144plt.close()145\end{pycode}146147\begin{figure}[H]148\centering149\includegraphics[width=0.85\textwidth]{dynamic_modulus.pdf}150\caption{Storage and loss moduli vs frequency.}151\end{figure}152153\section{Bone Remodeling}154155\begin{pycode}156# Wolff's law simulation157rho_0 = 1500 # Initial density158stimulus = np.linspace(0, 2, 100) # Mechanical stimulus159160# Remodeling response161drho_dt = 0.1 * (stimulus - 1) * rho_0162163fig, ax = plt.subplots(figsize=(10, 6))164ax.plot(stimulus, drho_dt, 'b-', linewidth=2)165ax.axhline(y=0, color='k', linewidth=0.5)166ax.axvline(x=1, color='r', linestyle='--', label='Equilibrium')167ax.set_xlabel('Mechanical Stimulus (normalized)')168ax.set_ylabel('Remodeling Rate')169ax.set_title("Bone Remodeling (Wolff's Law)")170ax.legend()171ax.grid(True, alpha=0.3)172plt.tight_layout()173plt.savefig('bone_remodeling.pdf', dpi=150, bbox_inches='tight')174plt.close()175\end{pycode}176177\begin{figure}[H]178\centering179\includegraphics[width=0.85\textwidth]{bone_remodeling.pdf}180\caption{Bone remodeling rate vs mechanical stimulus.}181\end{figure}182183\section{Hyperelastic Model}184185\begin{pycode}186# Neo-Hookean model187lambda_stretch = np.linspace(1, 2, 100)188mu = 0.5 # Shear modulus (MPa)189190# Cauchy stress191sigma_nh = mu * (lambda_stretch - 1/lambda_stretch**2)192193fig, ax = plt.subplots(figsize=(10, 6))194ax.plot(lambda_stretch, sigma_nh, 'b-', linewidth=2)195ax.set_xlabel('Stretch Ratio $\\lambda$')196ax.set_ylabel('Cauchy Stress (MPa)')197ax.set_title('Neo-Hookean Hyperelastic Model')198ax.grid(True, alpha=0.3)199plt.tight_layout()200plt.savefig('hyperelastic.pdf', dpi=150, bbox_inches='tight')201plt.close()202\end{pycode}203204\begin{figure}[H]205\centering206\includegraphics[width=0.85\textwidth]{hyperelastic.pdf}207\caption{Neo-Hookean stress-stretch relationship.}208\end{figure}209210\section{Results}211212\begin{pycode}213print(r'\begin{table}[H]')214print(r'\centering')215print(r'\caption{Tissue Mechanical Properties}')216print(r'\begin{tabular}{@{}lcc@{}}')217print(r'\toprule')218print(r'Tissue & Elastic Modulus & Ultimate Stress \\')219print(r'\midrule')220print(r'Cortical Bone & 15-20 GPa & 100-150 MPa \\')221print(r'Tendon & 1-2 GPa & 50-100 MPa \\')222print(r'Articular Cartilage & 1-10 MPa & 10-40 MPa \\')223print(r'Skin & 0.1-1 MPa & 2-20 MPa \\')224print(r'\bottomrule')225print(r'\end{tabular}')226print(r'\end{table}')227\end{pycode}228229\section{Conclusions}230231Biological tissues exhibit complex nonlinear and time-dependent mechanical behavior.232233234\end{document}235236237