413 lines
81 KiB
Plaintext
413 lines
81 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Explicit ODE Schemes"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# imports\n",
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Schemes"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Explicit Euler"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def explicit_euler(y0 : np.ndarray, t : float, f, dt : float):\n",
|
|
" return y0 + f(y0, t) * dt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Runge-Kutta 2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def runge_kutta_2(y0 : np.ndarray, t : float, f, dt : float):\n",
|
|
" k1 = f(y0, t)\n",
|
|
" k2 = f(y0 + k1 * dt, t + dt)\n",
|
|
" return y0 + (k1 + k2)/2 * dt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Runge-Kutta 4"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def runge_kutta_4(y0 : np.ndarray, t : float, f, dt : float):\n",
|
|
" k1 = f(y0, t)\n",
|
|
" k2 = f(y0 + k1/2 * dt, t + dt/2)\n",
|
|
" k3 = f(y0 + k2/2 * dt, t + dt/2)\n",
|
|
" k4 = f(y0 + k3 * dt, t + dt)\n",
|
|
" return y0 + (k1 + 2*k2 + 2*k3 + k4)/6 * dt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Leapfrog"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def leapfrog(y0 : np.ndarray, t : float, f, dt : float):\n",
|
|
" \n",
|
|
" # split y0 into position and velocity\n",
|
|
" r_0 = y0[:2]\n",
|
|
" v_0 = y0[2:]\n",
|
|
"\n",
|
|
" def f_v(r):\n",
|
|
" return f(np.concatenate((r, (0, 0))), t)[2:]\n",
|
|
"\n",
|
|
" # take the first leap for the velocity\n",
|
|
" v_1_div_2 = v_0 + f_v(r_0) * dt/2\n",
|
|
" r_1 = r_0 + v_1_div_2 * dt\n",
|
|
" v_1 = v_1_div_2 + f_v(r_1) * dt/2\n",
|
|
"\n",
|
|
" return np.concatenate((r_1, v_1))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Semi-implicit Euler"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def semi_implicit_euler(y0 : np.ndarray, t : float, f, dt : float):\n",
|
|
" \n",
|
|
" # split y0 into position and velocity\n",
|
|
" r_0 = y0[:2]\n",
|
|
" v_0 = y0[2:]\n",
|
|
"\n",
|
|
" # split the function into position and velocity parts\n",
|
|
" f_r = lambda v : f(np.concatenate(((0, 0), v)), t)[:2]\n",
|
|
" f_v = lambda r : f(np.concatenate((r, (0, 0))), t)[2:]\n",
|
|
"\n",
|
|
" # take the leaps\n",
|
|
" v_1 = v_0 + f_v(r_0) * dt\n",
|
|
" r_1 = r_0 + f_r(v_1) * dt\n",
|
|
"\n",
|
|
" return np.concatenate((r_1, v_1))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Wrapper"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"The user calls the wrapper function `integrate`, which, in turn, calls the appropriate scheme."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def integrate(y0 : np.ndarray, f, method : str, dt : float, t_end : float):\n",
|
|
" \"\"\"Integrate the ODE y' = f(y, t) up to t_end with timestep dt using the given method.\"\"\"\n",
|
|
" \n",
|
|
" t = np.arange(0, t_end, dt)\n",
|
|
" y = np.zeros((len(t), len(y0)))\n",
|
|
" y[0] = y0\n",
|
|
" \n",
|
|
" if method == \"explicit_euler\":\n",
|
|
" integrator = explicit_euler\n",
|
|
" \n",
|
|
" elif method == \"runge_kutta_2\":\n",
|
|
" integrator = runge_kutta_2\n",
|
|
"\n",
|
|
" elif method == \"runge_kutta_4\":\n",
|
|
" integrator = runge_kutta_4\n",
|
|
"\n",
|
|
" elif method == \"leapfrog\":\n",
|
|
" integrator = leapfrog\n",
|
|
"\n",
|
|
" elif method == \"semi_implicit_euler\":\n",
|
|
" integrator = semi_implicit_euler\n",
|
|
"\n",
|
|
" for i in range(1, len(t)):\n",
|
|
" y[i] = integrator(y0 = y[i-1], t = t[i], f = f, dt = dt)\n",
|
|
" \n",
|
|
" return t, y\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Example: Kepler Problem"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Initial conditions and setup"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Equations of motion: $\\ddot{\\vec{r}} = -\\frac{G M}{r^3} \\vec{r}$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"# inital conditions\n",
|
|
"# implicit: GM = 1\n",
|
|
"# star is at rest at the origin\n",
|
|
"\n",
|
|
"#planet\n",
|
|
"e = 0.5 # eccentricity\n",
|
|
"r0 = np.array([1, 0]) # planet's position\n",
|
|
"v0 = np.array([0, np.sqrt(1+e)]) # planet's velocity\n",
|
|
"\n",
|
|
"y0 = np.array([r0, v0]).flatten() # the flatten method converts the 2D array into a 1D array\n",
|
|
"\n",
|
|
"def f(y_vec, t):\n",
|
|
" x, y, vx, vy = y_vec\n",
|
|
" r_pow_3_div_2 = np.linalg.norm([x, y])**3\n",
|
|
" return np.array([vx, vy, - x / r_pow_3_div_2, - y / r_pow_3_div_2])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Integration"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"C:\\Users\\FLOORV~1\\AppData\\Local\\Temp/ipykernel_10040/3945168747.py:16: RuntimeWarning: invalid value encountered in double_scalars\n",
|
|
" return np.array([vx, vy, - x / r_pow_3_div_2, - y / r_pow_3_div_2])\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 720x720 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"t_orbit = 2*np.pi\n",
|
|
"dt = t_orbit/1000\n",
|
|
"t_end = 3*t_orbit\n",
|
|
"\n",
|
|
"t_ee, y_ee = integrate(y0 = y0, f = f, method = \"explicit_euler\", dt = dt, t_end = t_end)\n",
|
|
"t_rk2, y_rk2 = integrate(y0, f, \"runge_kutta_2\", dt = dt, t_end = t_end)\n",
|
|
"t_rk4, y_rk4 = integrate(y0, f, \"runge_kutta_4\", dt = dt, t_end = t_end)\n",
|
|
"t_leapfrog, y_leapfrog = integrate(y0, f, \"leapfrog\", dt = dt, t_end = t_end)\n",
|
|
"t_semi_implicit, y_semi_implicit = integrate(y0, f, \"semi_implicit_euler\", dt = dt, t_end = t_end)\n",
|
|
"\n",
|
|
"fig, ax = plt.subplots(figsize = (10,10))\n",
|
|
"ax.set_aspect(\"equal\")\n",
|
|
"ax.plot(y_ee[:,0], y_ee[:,1], label = \"Explicit Euler\")\n",
|
|
"ax.plot(y_rk2[:,0], y_rk2[:,1], label = \"Runge-Kutta 2\")\n",
|
|
"ax.plot(y_rk4[:,0], y_rk4[:,1], label = \"Runge-Kutta 4\")\n",
|
|
"ax.plot(y_leapfrog[:,0], y_leapfrog[:,1], label = \"Leapfrog\")\n",
|
|
"ax.plot(y_semi_implicit[:,0], y_semi_implicit[:,1], label = \"Semi-Implicit Euler\")\n",
|
|
"ax.set_title(\"Orbit of a planet around a star\")\n",
|
|
"ax.set_xlim(-4.2, 1.2)\n",
|
|
"ax.set_ylim(-3, 3)\n",
|
|
"ax.set_xlabel(\"x\")\n",
|
|
"ax.set_ylabel(\"y\")\n",
|
|
"ax.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Rebound example"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import rebound\n",
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"# Create a simulation\n",
|
|
"sim = rebound.Simulation()\n",
|
|
"\n",
|
|
"# Set simulation time\n",
|
|
"time = 1e3\n",
|
|
"\n",
|
|
"# Set units\n",
|
|
"sim.units = ('yr', 'AU', 'Msun')\n",
|
|
"\n",
|
|
"# Add particles: Sun and Jupiter\n",
|
|
"sim.add(m=1, hash=\"Sun\")\n",
|
|
"sim.add(m=1e-3, a=5.5, r=4.676e-4, hash=\"Jupiter\")\n",
|
|
"\n",
|
|
"# Move to the barycenter frame\n",
|
|
"sim.move_to_com()\n",
|
|
"\n",
|
|
"# Choose a valid integrator\n",
|
|
"sim.integrator = \"ias15\" # 'ias15' is a general-purpose, high-accuracy integrator\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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3LhxeO655wAAO3fuxAcffHDQMh566CF89913qFOnDnbu3HnQ9GXLlmHkyJGVHuvbty+WLVt24N+rVq3CnDlzkJGRgfHjx2PJkiX49NNPsWvXLvTu3bvSlnvt2rVx7733Ij8/H48//niiq6gSNnKiNFVaan4KC4GCAmDvXmDPHmDbNvPYvn1A3brA7t3Al1+2xJYtQOPGpq5ePSA7GzjkEKBOHaBhQ+DQQ4GsLCAjw+9XRmE3YsSIA3/eeOONUWu//vprfPXVVzj11FMBACUlJWjVqtWB6RdccEG1z+vZsycuvPBCnH322Tj77LMPmq6q1Z6AVvGx8847DxkV3vC//vWvUa9ePdSrVw+5ublYsGABevXqFTW/G9jIiVLE/v2m6X7+OTB/vmnImZnA5MlASUmic+/qRkT07g0MGADk5gLHHAN06ADUru3KrClGbmw5xyszMxOlpaUH/l31squKzdLpbG5VRffu3TF//vxqp9d0l7XZs2fjww8/xJtvvon77rsPy5YtQ2ZmeUvs3r078vPzcdZZZx14bOHChejWrVuN866aNVlXCPAYOVHILF4MXHQRIFL5p04doEkT4LTTgLvvBv76V2DiRDeauHu+/BKYMgU491ygSxeTuerr6NMHePxxYOPGYGUn97Rr1w7Lly/Hvn378NNPP+H999+vNL3s+PGMGTNwwgknHPT8Bg0aoKCgAADQpUsXbN269UAjLyoqqrT7uzqlpaVYv349cnNz8cgjj2Dnzp0oLCysVHPttddi6tSpWBQ5/rB9+3aMHTsWt956a43zfeONN7B3715s374deXl56NevX4253cQtcqKAKS0FNm8GZswAJkwAIuftpI0vvjA/119f+fGLLgIuvhho0QLo2tV8CaBwKS4uRp06ddC2bVucf/756NmzJzp37ozevXtXqtu3bx+OP/54lJaW4qWXXjpoPpdeeimuuuoq1KtXD/Pnz8fMmTNxww034KeffkJxcTHGjBmD7t2715ijpKQEF110EX766SeoKm688UY0bty4Uk2rVq0wbdo0XHnllSgoKICqYsyYMRg2bFiN8+3fvz+GDh2KdevW4c4770Tr1q2xdu3aA9Nzc3Px0EMPoVevXrj99ttr3O0fM1UNzU+fPn1UVXXevHlK0XEd2QnCevrhB9Vrr1UF+BPPz9FHq775puqePX7/JoPxfopm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\n",
|
|
"text/plain": [
|
|
"<Figure size 576x576 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Set up simulation time and time steps\n",
|
|
"time = 1e3 # Total time to simulate (years)\n",
|
|
"N_steps = 1000 # Number of steps for plotting\n",
|
|
"times = np.linspace(0, time, N_steps)\n",
|
|
"\n",
|
|
"# Arrays to store positions\n",
|
|
"x_jupiter = []\n",
|
|
"y_jupiter = []\n",
|
|
"\n",
|
|
"# Integrate while collecting data\n",
|
|
"for t in times:\n",
|
|
" sim.integrate(t)\n",
|
|
" jupiter = sim.particles[1]\n",
|
|
" x_jupiter.append(jupiter.x)\n",
|
|
" y_jupiter.append(jupiter.y)\n",
|
|
"\n",
|
|
"# Plot results\n",
|
|
"plt.figure(figsize=(8, 8))\n",
|
|
"plt.plot(x_jupiter, y_jupiter, label=\"Jupiter's Orbit\", color=\"blue\")\n",
|
|
"plt.scatter(0, 0, color=\"orange\", label=\"Sun\", s=100) # Sun at the origin\n",
|
|
"plt.xlabel(\"x (AU)\")\n",
|
|
"plt.ylabel(\"y (AU)\")\n",
|
|
"plt.title(\"Jupiter's Orbit Around the Sun\")\n",
|
|
"plt.axis(\"equal\")\n",
|
|
"plt.grid()\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.8.8"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|