{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Trajectoire d'un boulet de canon"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Nous allons intégrer les équations du mouvement pour un boulet de canon soumis à des forces de frottement \"turbulentes\" (non-linéaires):\n",
    "$$\n",
    "\\ddot{\\mathbf{r}} = \\mathbf{g} - \\frac{\\alpha}{m}v\\times\\mathbf{v}.\n",
    "$$\n",
    "\n",
    "Cette équation différentielle non-linéaire du 2nd ordre doit être réécrite sous la forme de deux équations différentielles couplées du 1er ordre:\n",
    "$$\n",
    "\\begin{cases}\n",
    "\\dot{\\mathbf{r}} &= \\mathbf{v} \\\\\n",
    "\\dot{\\mathbf{v}} &= \\mathbf{g} - \\frac{\\alpha}{m}v\\times\\mathbf{v}.\n",
    "\\end{cases}\n",
    "$$\n",
    "\n",
    "Il s'agit donc de résoudre *une seule* équation différentielle du 1er ordre en $\\mathbf{z} = (\\mathbf{r},\\mathbf{v})$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import numpy as N\n",
    "import scipy.integrate as SI\n",
    "import matplotlib.pyplot as P"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Valeurs numériques pour un boulet de canon de [36 livres](http://fr.wikipedia.org/wiki/Canon_de_36_livres):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Masse du boulet: 17.42 kg\n",
      "Coefficient de frottement par unité de masse: 0.000371899460424 S.I.\n"
     ]
    }
   ],
   "source": [
    "g = 9.81 # Pesanteur [m/s2]\n",
    "cx = 0.45 # Coefficient de frottement d'une sphère\n",
    "rhoAir = 1.2 # Masse volumique de l'air [kg/m3] au niveau de la mer, T=20°C\n",
    "rad = 0.1748/2 # Rayon du boulet [m]\n",
    "rho = 6.23e3 # Masse volumique du boulet [kg/m3]\n",
    "mass = 4./3.*N.pi*rad**3 * rho # Masse du boulet [kg]\n",
    "alpha = 0.5*cx*rhoAir*N.pi*rad**2 / mass # Coefficient de frottement par unité de masse\n",
    "print \"Masse du boulet: {:.2f} kg\".format(mass)\n",
    "print \"Coefficient de frottement par unité de masse: {} S.I.\".format(alpha)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Conditions initiales:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "v0 = 450. # Vitesse initiale [m/s]\n",
    "alt = 45. # Inclinaison du canon [deg]\n",
    "alt *= N.pi/180. # Inclinaison [rad]\n",
    "z0 = (0.,0.,v0*N.cos(alt),v0*N.sin(alt)) # (x0,y0,vx0,vy0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Temps caractéristique du système: $t = \\sqrt{\\frac{m}{g\\alpha}}$ (durée du régime transitoire). L'intégration des équations se fera sur un temps caractéristique, avec des pas de temps significativement plus petits."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Temps caractéristique: 69.1 s\n"
     ]
    }
   ],
   "source": [
    "tc = N.sqrt(mass/(g * alpha))\n",
    "print \"Temps caractéristique: {:.1f} s\".format(tc)\n",
    "t = N.linspace(0, tc, 100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Définition de la fonction $\\dot{\\mathbf{z}}$, avec $\\mathbf{z} = (\\mathbf{r},\\mathbf{v})$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def zdot(z, t):\n",
    "    \"\"\"Calcul de la dérivée de z=(x,y,vx,vy) à l'instant t.\"\"\"\n",
    "    \n",
    "    x,y,vx,vy = z\n",
    "    alphav = alpha * N.hypot(vx, vy)\n",
    "    \n",
    "    return (vx,vy,-alphav*vx,-g-alphav*vy) # dz/dt = (vx,vy,x..,y..)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Intégration numérique des équations du mouvement à l'aide de la fonction [scipy.integrate.odeint](http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "zs = SI.odeint(zdot, z0, t)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Le tableau `zs` contient les valeurs de $z$ à chaque instant $t$: il est donc de taille `(len(t),4)`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "temps de coll. t(y~0) = 36 s\n",
      "portée x(y~0) = 3966 m\n",
      "vitesse(y~0): 140 m/s\n"
     ]
    }
   ],
   "source": [
    "ypos = zs[:,1]>=0 # y>0? \n",
    "print \"temps de coll. t(y~0) = {:.0f} s\".format(t[ypos][-1]) # Dernier instant pour lequel y>0\n",
    "print \"portée x(y~0) = {:.0f} m\".format(zs[ypos,0][-1]) # Portée approximative du canon\n",
    "#print \"y(y~0) = {:.0f} m\".format(zs[ypos,1][-1]) # ~0\n",
    "print \"vitesse(y~0): {:.0f} m/s\".format(N.hypot(zs[ypos,2][-1],zs[ypos,3][-1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7fe8d8b06950>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe8d8b2fd10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = P.subplots()\n",
    "ax.plot(zs[ypos,0],zs[ypos,1], 'b.-')\n",
    "ax.set_xlabel(\"x [m]\")\n",
    "ax.set_ylabel(\"y [m]\")\n",
    "ax.set_title(\"Trajectoire du boulet\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
