{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Copyright statement?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# A New 'Transition'\n",
    "Welcome back! At this point in the course you are all likley aces at numerical analysis, expecially after 5 modules ranging from Diffusion, to Convection, to Conduction, in 1 or 2D, with various Neumann and Dirichlet Boundary conditions! \n",
    "\n",
    "But now it's time for a new \"phase\". In this lesson we begin looking at what happens when your nice rigid boundary conditions decide to start moving on you, essentially creating a moving boundary interface! \n",
    "\n",
    "A moving boundary interface is represented by numerous physical behaviors in real-world applications, from the polar ice caps melting, to the phase transformations of metal alloys, to the varying oxygen content of  muscles near a clotted bloodvessel [2]."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Image](Examples1.jpg)\n",
    " #### Real World Applications of a Moving Boundary Interface"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### The Stefan Problem\n",
    "This new type of problem is known as the \"Stefan Problem\" as it was first studied by Slovene physicist Jozef Stefan around 1890 [3]. Though his focus was primarily on the analysis of ice formations, nowadays his name is synonymous with the particular type of boundary value problem for PDEs where the boundary can move with time.  Since the classic Stefan problem concentrated on the temperature distribution of a homogeneous material undergoing a phase transition, one of the most commonly studied Stefan problems today is the melting of Ice to Water!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "![Image](Picture2.jpg)\n",
    " #### Jozef Stefan pioneered work into phase transitions of materials (ie Ice)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## A Review: 1D Heat Conduction"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Recall from both Modules 2 and 4 we took a loook at the Diffusion equation in 1D:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "$$\\begin{equation}\n",
    "\\frac{\\partial U}{\\partial t} = \\alpha \\frac{\\partial^2U}{\\partial x^2}\n",
    "\\end{equation}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Where we have the temperature distribution $U(x,t)$ and the thermal diffusivity $\\alpha$. While before we looked at the conduction of heat through a graphite rod of length 1 meter, in this scenario we will analyze heat conduction though a 1D rod of ice.  Let's first list some basic coefficients associated with the new material:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "##### Thermal Properties of Ice at ~$0^{\\circ}C$:\n",
    "Thermal Conductivity: $k = 2.22 \\frac{W}{mK}$\n",
    "\n",
    "Density: $\\rho \\approx 1000 \\frac{kg}{m^3}$\n",
    "\n",
    "Specific Heat: $c_{p}= 2.05x10^{-3} \\frac{J}{kgK}$\n",
    "\n",
    "and lastly, Thermal Diffusivity: $\\alpha = \\frac{k_{ice}}{\\rho_{ice}c_{p_{ice}}} = 1.083x10^{-6} \\frac{m^2}{sec}$\n",
    "\n",
    "Melting Temperature of Ice is: $T_{melt}=0^{\\circ}C$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Okay! With that out of the way, let's look at the temperature distribution across the a rod of ice of length 1m with some basic initial and boundary conditions. For this first scenario, we will not take into account phase transition if temperatures hit $T_{melt}$, and will therefore assume a static boundary condition."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Problem Setup\n",
    "Governing Equation: $$\\begin{equation}\n",
    "\\frac{\\partial U}{\\partial t} = \\alpha \\frac{\\partial^2U}{\\partial x^2}\n",
    "\\end{equation}$$\n",
    "\n",
    "Boundary Conditions: \n",
    "\n",
    "LHS: $\\frac{\\partial U}{\\partial x} = -e^{\\beta t}$,   @x=0, t>0, time-dependant (increasing) heat flux in \n",
    "\n",
    "RHS: $\\frac{\\partial U}{\\partial x} = 0$,  @x=L, t>0,   Insulated end, no heat flux in/out. \n",
    "\n",
    "\n",
    "Initial Conditions:\n",
    "\n",
    "$U(x,t) = -10^{\\circ}C$, for 0<x<L, t=0\n",
    "\n",
    "Lets start coding!!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy\n",
    "from matplotlib import pyplot\n",
    "%matplotlib inline\n",
    "from matplotlib import rcParams\n",
    "rcParams['font.family']= 'serif'\n",
    "rcParams['font.size']=16\n",
    "from IPython.display import Image"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's define a function to run the governing equations using the Forward-Time/Central-Difference Method discretization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def FTCS(U, nt, dt, dx, alpha, beta):\n",
    "    \n",
    "    for n in range(nt):\n",
    "        \n",
    "        Un=U.copy()\n",
    "        U[1:-1] = Un[1:-1] + alpha*(dt/dx**2)*(Un[2:]-2*Un[1:-1]+Un[0:-2])\n",
    "        \n",
    "        #Boundary Conditions \n",
    "        \n",
    "        U[-1]=U[-2]                  #RHS Insulated BC\n",
    "        \n",
    "        t=n*dt                                    #Increasing time = n*timestep(dt)\n",
    "        U[0]=numpy.exp(beta*t)     #LHS Time dependant heat input in, BC\n",
    "        \n",
    "    return U"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#Basic Parameters and Initialization\n",
    "\n",
    "# Temperature scale: Celsius \n",
    "# Length scale: meters\n",
    "# Mass scale: kg\n",
    "# Time scale: seconds\n",
    "# Energy scale: Joules\n",
    "# Power scale: Watts\n",
    "\n",
    "L = 1                                                         # Length of my ice rod\n",
    "nt = 40000                                                  # Number of timesteps\n",
    "nx = 51                                                     # Number of grid space steps\n",
    "alpha = 1.083e-6                                    # Thermal Diffusivity\n",
    "dx = L/(nx-1)                                           # grid spacing in \"x\" \n",
    "Ui = numpy.ones(nx)*(-10)                    # initialized Temperature array\n",
    "beta = 0.001                                               #Growth Factor of my Temperature input\n",
    "\n",
    "sigma = 1/2                                             # Stability*\n",
    "dt=0.1                                                      # Timestep chosen to be 0.1 seconds*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A word on Stability:\n",
    "\n",
    "Recall from module 2 we had the Courant-Friedrichs-Lewy (CFL) Stability condition for the FTCS Diffusion equation in the form:\n",
    "$$\\sigma = \\alpha \\frac{\\Delta t}{\\Delta x^{2}} \\leq \\frac{1}{2} $$\n",
    "\n",
    "re-arranging to determine the upper limit for a time-step (dt) we have:\n",
    "$$\\Delta t \\leq \\frac{\\sigma \\Delta x^{2}}{\\alpha} \\approx 923 seconds$$\n",
    "\n",
    "As you can see, chosing a time-step (dt) equal to $0.1$ seconds, we more than satisfy this CFL Stability condition.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initial ice rod temperature distribution\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x62b51d0>"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x64cedd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = numpy.linspace(0, 1, nx)\n",
    "print('Initial ice rod temperature distribution')\n",
    "pyplot.plot(x, Ui, color = '#003366', ls = '-', lw =4)\n",
    "pyplot.ylim(-20, 60)\n",
    "pyplot.xlabel('Length of Domain')\n",
    "pyplot.ylabel('Temperature')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total elapsed time is  4000.0 seconds, or 66.66666666666667 minutes\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x657b128>"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x612eb00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "U = FTCS(Ui.copy(), nt, dt, dx, alpha, beta)\n",
    "print('Total elapsed time is ', nt*dt, 'seconds, or', nt*dt/60, 'minutes' )\n",
    "pyplot.plot(x, U, color = '#003366', ls = '-', lw =3)\n",
    "pyplot.ylim(-20, 60)\n",
    "pyplot.xlim(0, 1)\n",
    "pyplot.xlabel('Length of Domain')\n",
    "pyplot.ylabel('Temperature')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The above figure shows us the temperature distribution of the ice rod at a point in time approximately 1 hour into applying our heat source. Now this would be all well and good if ice didn't melt (and therefore change phase) at zero degrees. But it does!! \n",
    "\n",
    "Let's build a rudimentary function to see what portion of the rod should be water by now, and which part should still be ice:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def Phase_graph(U, x, nx):\n",
    "    phase=numpy.ones(nx)*(-100)\n",
    "    for n in range(nx):\n",
    "        if U[n]>0:\n",
    "            phase[n]=100\n",
    "    return phase    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x653a128>"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n8wEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x6565588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pyplot.plot(x, U, color = '#003366')\n",
    "pyplot.ylabel('Temperature', color ='#003366')\n",
    "Phase1=numpy.ones(nx)\n",
    "Phase=Phase_graph(U, x, nx)\n",
    "pyplot.plot(x, Phase, color = '#654321', ls = '-', lw =3)\n",
    "pyplot.ylim(-12, 10)\n",
    "pyplot.xlim(0, 0.3)\n",
    "pyplot.xlabel('Approx Water-Ice Interface', color = '#654321')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, the ice SHOULD have melted about 0.07 meters  (or 2.75 inches) into our rod. In reality, our boundary interface has moved from x=0 to the right as time elapsed.  Not only should our temperature distribution profile change due to the differences in properties ($\\rho, k, c_{p}$), but also the feedback from the moving boundary condition."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Solutions to the Dimensionless Stefan problem:\n",
    "### Analytical Solution:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Before we continue we need to make some simplfications:\n",
    "\n",
    "1) No convection, heat transfer is limited to conduction,\n",
    "\n",
    "2) Pressure is constant,\n",
    "\n",
    "3) Density does not change between the solid and liquid phase (Ice/Water), ie $\\rho_{ice}=\\rho_{water}\\approx 1000 \\frac{kg}{m^3}$,\n",
    "\n",
    "4) The phase change interface at $s(t)$ has no thickness \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looking closer at the problem at hand, we see that our temperature distribution must conform to the below figure:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Image](Picture3.jpg)\n",
    " #### Phase Change Domain"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  As you can see, our temperature distribution experiences a discontinuity at our solid-liquid interface at x=s(t). Furthermore, this boundary moves to the right as time elapses. If we wish to analyze the distribution in one region or the other, we need to take into account a growing or shrinking domain, and therefore, the boundary of the domain has to be found as part of the solution [2].  In the Melting Problem depicted above, a moving interface separates the liquid and solid phases. The displacement of the boundary interface (denoted as $\\dot{s}$) is driven by the heat transport through it [2]. The relationship  between the moving interface, s(t), and the temperature distribution through it was developed by and is known as the Stefan Condition (or Stefan Equation) and takes the form of the following boundary conditions:\n",
    "\n",
    "when x =s(t),\n",
    "######  [1, 3, 2]\n",
    "$$\\dot{s} = \\frac{ds}{dt} = -\\frac{\\partial U}{\\partial x}$$  \n",
    "$$U=0$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are many solution methods for the Stefan problem, for this lesson we will focus on finding the temperature distribution in the liquid region only (ie 0<x<s(t)). Critical parameters to track are both temperature, U(x,t), and the position of the interface, s(t). Let's first solve this problem analytically:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "To make our lives easier we want a simplified version of the Stefan Problem, In his paper, Crowley [4] presented that both Oleinik and Jerome demonstrated how using an appropriate dimensionless model, and appropriate boundary conditions, and initial conditions, not only could one determine a general solution for the diffusion equation with the Stefan condition, but also that an explicit finite difference scheme converges to this solution [4]. For our dimensionless model we will set $\\alpha=1, \\beta=1$ to get the following governing equations, and boundary conditions:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "#### Dimensionless Stefan Problem Equations"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\\frac{\\partial U}{\\partial t} = \\frac{\\partial^{2} U}{\\partial x^{2}}$$\n",
    "\n",
    "$$s(t)$$\n",
    "\n",
    "(1) $\\frac{\\partial U(x=0, t)}{\\partial x} = -e^{t}$, LHS BC (Heat input into the system)\n",
    "\n",
    "(2) $\\frac{\\partial U(x=s(t), t)}{\\partial x} = -\\frac{d s(t)}{d t}$, RHS BC, Stefan Condition\n",
    "\n",
    "(3) $U(x=s(t), t) = T_{melt}=0$, By definition of the Melting interface\n",
    "\n",
    "(4) s(t=0)=0, initial condition\n",
    "\n",
    "These equations set up the new below figure:\n",
    "![Image](Picture4.jpg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Because we want to be able to judge the accuracy of our numerical analysis (and thanks to Crowley, Oleinik, and Jerome!) we next find the general solution of this problem by means of Separation of Variables:\n",
    "\n",
    "SOV: $U(x,t)=X(x)T(t)$, gives us a general solution of the form:\n",
    "\n",
    "$$U(x,t) = c_{1}e^{c_{2}^{2}t-c_{2}x} +c_{3}$$\n",
    "\n",
    "from BC(1) we get $c_{2}=1, c_{1}=1, yielding: U(x,t) = e^{t-x} +c_{3}$\n",
    "\n",
    "from BC(2) we get:  $\\dot{s}=\\frac{\\partial s(t)}{\\partial t} = -\\frac{\\partial U(x=s(t), t)}{\\partial x}\\rightarrow -e^{t-s(t)}= \\frac{ds(t)}{d t}$, this yields that the only solution fo s(t) is: $$s(t)=t$$\n",
    "\n",
    "from BC(3) we get: $U(s(t),t) + c_{3} = 0, \\rightarrow e^{t-t} +c_{3}=0, \\rightarrow c_{3}=-1$, \n",
    "\n",
    "Finally we get an exact solution for the temperature distribution:\n",
    "\n",
    "$$U(x,t) = e^{t-x}-1$$,    $$s(t) = t$$\n",
    "\n",
    "and this satisfies the initial condition IC(4) that s(t=0)=0!!\n",
    "\n",
    "And now you see why we chose the heat input function to be a time-dependant exponential, if you don't believe me that the analytical solution would be much nastier if you had chosesn say, a constant heat input, give SOV a try and let me know how it goes! Let's graph this solution and see if it makes sense."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def Exact_Stefan( nt, dt, x):\n",
    "    U=numpy.ones(nx)\n",
    "    for n in range(nt):\n",
    "        U = numpy.exp(n*dt-x)-1\n",
    "    return U"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Analytically, this is our temperature profile after: 1.0 seconds\n",
      "The temperature at our LHS boundary is: 1.71285069774 degrees\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nfi9wHtDW3ZcnlSsxiUjJmLdgMW+MmcqR+3VhgyyW6yi5rjygMzA7TfkcYJc67FsJfJ5SPptfugZF\nRErSZhutx5lH9kyblFauquDIS+/nzn++yeSZ8yjEH+3FNFy8HbA0TfkSoJWZNXf3lTXsuzxNM2hJ\n+LxBjmIUEWlQzIwzj+zBG2Omct9z5axYWcGB3XfgyP06c/yBu9d+gHoopsSkvjURkQJr1rQJx/Tq\nyjG9gqX5PvvyW94cM5VPv8jfSkjFlJgWAunuFluX4BpTda2lxL6tbe2LR+uGz4tSd+jXr9/PP5eV\nlVFWVpZpvCIiDc42HTZkm+P3B6C8vJzy8vKcn6OYBj/8B9g+zeCHScBSd+9Rw75XADcDW7n750nl\n9wJ/ANbT4AcRkeyU4uCHF4AtzWzLREE4XHx7YEjyhmbW3sySK+dFgq7AXinH7AW8kZyUREQkWsWU\nmAYTzPQw0Mwam1kj4BZgFvBgYiMz6wl8BdyfKHP3GcAjwFVmtkG43ZlAR+CaQn0AERGpXdEkJnev\nAA4iGPY9NXysA/ROafEsBRYTJKdkFwHPAaPC7r9zgD7uPjHfsYuISN0VzTWmQtI1JhGRzJXiNSYR\nESkBSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIr\nSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwi\nIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIrSkwiIhIr\nSkwiIhIrSkwiIhIrRZWYzOxPZjbFzCaY2cdmdlQd9+tnZnPNbFzK4+58xywiIplpEnUAdWVmVwKX\nA93dfbaZHQi8ZmZHuvvwWnZ3oK+7P5n3QEVEJCtF0WIys7ZAX+B+d58N4O5vAW8At9f1MHkKT0RE\ncqgoEhNwCNASGJFSPgLY0cw6FT4kERHJh2JJTJ3D59kp5YnXu9ThGIeY2VtmNjG8PtXfzFrmLsSG\nqby8POoQYkN18QvVxS9UF7lXLImpXfi8NKV8Sfi8QS37LweWAce6e2fgbOBU4G0zK5rrbFHQf7pf\nqC5+obr4heoi9yJJTGZ2oJlV1eHxTi7O5+63ufu57r4kfD0euALYCzghF+cQEZHciKq1MArYvg7b\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x64fbe10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dt_A=0.002\n",
    "nt_A=500\n",
    "ExactS=Exact_Stefan(nt_A, dt_A, x)\n",
    "Max_tempA=max(ExactS)\n",
    "\n",
    "pyplot.plot(x, ExactS, color = '#003366', ls = '--', lw =1)\n",
    "pyplot.xlabel('Length of Domain')\n",
    "pyplot.ylabel('Temperature')\n",
    "print('Analytically, this is our temperature profile after:', nt_A*dt_A,'seconds')\n",
    "print('The temperature at our LHS boundary is:', Max_tempA, 'degrees')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Does the solution look right? YES! Remember, this temperature profile is \"Dimensionless\" so we can't compare it to our previous example (not only is the diffusivity constant vastly different, but we are looking 1 second into the diffusion vs 1 hr!). Also it accounts ONLY for the temperature distribution in the liquid, assuming an ever increasing domain due to an ever expanding RHS boundary. Not only did we expect temperature to be highest at the input side, but our moving boundary interface, s(t), moves to the right with time and always hits our melting temperature ($0^{\\circ} c$) at x=1, just as one would expect."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Numerical Solution: The Variable Grid Method"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What makes this problem unique is that we must now track the time-dependant moving boundary. Now, for previous numerical analysis in a 1D domain, you had a constant number of spatial intervals nx (or N) between your two boundaries x=0, and x=L. Thus your spatial grid steps dx were constant and defined as $dx = L/(nx-1)$. But now you have one fixed bounary and one moving boundary, and your domain increases as time passes. [1] \n",
    "\n",
    "![Image](Fixed Grid.jpg)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "\n",
    "One of the key tenements of the Variable Grid Method for solving the Stefan probem is that you keep the NUMBER of grid points (nx) fixed, thus your grid SIZE (dx) will increase as the domain increases. Your grid size now varies dependant on the location of the interaface front, dx = s(t)/N.\n",
    "\n",
    "$$dx = \\frac{L}{N-1}     \\longrightarrow      dx = \\frac{s(t)}{N}$$\n",
    "\n",
    "![Image](Variable Grid 1.jpg)\n",
    "\n",
    "Now, while one might be tempted to view the figure above as the new \"Variable Grid\" stencil, one must remember that the \"Y\"-axis is time, and therefore as you move up you are moving forward in time, therefore a more accurate depiction of the FTCS method in stencil form for the Variable Grid method would be: \n",
    "\n",
    "![Image](Variable Grid 2.jpg)\n",
    "\n",
    "and so it becomes clear - that the our spatial step ($dx$) will be depentant on our time step ($m$)!!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  Derivation of the new Governing Equation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "   Now let's set up the new governing equations to be discretized for our code. We know that the 1D Diffusion equation must be valid for all points on our spatial grid so we can re-write the LHS of equation:\n",
    "   $$\\frac{\\partial U}{\\partial t} = \\frac{\\partial^{2} U}{\\partial x^{2}}$$\n",
    "   to be $$ \\frac{\\partial U_{i}}{\\partial t} = \\frac{\\partial U_{@t}}{\\partial x}\\frac{dx_{i}}{dt} + \\frac{\\partial U_{@x}}{\\partial t}$$\n",
    "   \n",
    "  we can use the expression: $$\\frac{dx_{i}}{dt} = \\frac{x_{i}}{s(t)}\\frac{ds}{dt}$$   to track the movement of the node $i$.\n",
    "  \n",
    "  Substituting these into the diffusion equation (and droping the i,t, and x indices since they are constant) we obtain a new governing equation for diffusion: \n",
    "  \n",
    "  $$\\frac{\\partial U}{\\partial t} = \\frac{x_{i}}{s}\\frac{ds}{dt}\\frac{\\partial U}{\\partial x} + \\frac{\\partial^{2}U}{\\partial x^{2}}$$ \n",
    "  \n",
    "  This is subject to the boundary and initial conditions (BC1-BC3, IC4) as stated for the 1D dimensionless Stefan problem above."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "#### Discretization \n",
    "\n",
    "and now we seek to discretize the new governing equations. For this code we will implement an explicit, FTCS scheme, with parameters taking a Taylor expansion centered about the node ($x_{i}^{m}$), and time ($t_{m}$) just like before. In the above equations we discritized the time derivatives of U using forward time, and the spatial derivitaives using centered space. We re-write ds/dt as $\\dot{s}$ and leave it a variable for now. (EXERCISE: See if you can discretize this equation form memory!!) \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Taylor Expand and Discretize: (moving from left to right)\n",
    "\n",
    "$\\frac{\\partial U}{\\partial t} \\longrightarrow  \\frac{U_{i}^{m+1}-U_{i}^{m}}{\\Delta t}$,\n",
    "\n",
    "$\\frac{x_{i}}{s}  \\longrightarrow  \\frac{x_{i}^{m}}{s_{m}}$,\n",
    "\n",
    "$\\frac{ds}{dt} \\longrightarrow \\dot{s_{m}}$,\n",
    "\n",
    "$\\frac{\\partial U }{\\partial x} \\longrightarrow \\frac{U_{i+1}^{m}-U_{i-1}^{m}}{2\\Delta x^{m}}$,\n",
    "\n",
    "$\\frac{\\partial^{2}U}{\\partial x^{2}} \\longrightarrow \\frac{U_{i+1}^{m}-2U_{i}^{m}+U_{i-1}^{m}}{(\\Delta x^{m})^{2}}$\n",
    "\n",
    "And now we substitute, rearrange and solve for $U_{i}^{m+1}$ to get:\n",
    "\n",
    "$U_{i}^{m+1}=U_{i}^{m}+\\frac{\\Delta t x_{i}^{m} \\dot{s_{m}}}{2 \\Delta x^{m}s_{m}}(U_{i+1}^{m}-U_{i-1}^{m}) + \\frac{\\Delta t}{(\\Delta x^{m})^{2}}(U_{i+1}^{m}-2U_{i}^{m}+U_{i-1}^{m})$\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Great!! We're almost ready to start coding, but before we begin, do you notice a problem with this expression? What about if i=0? Plug it in and you will see that we have expressions of the form $U_{-1}^{m}$ in both right hand terms, but that can't be right, looking at our stencil we see that $i=-1$ is off our grid! This is where the boundary conditions come in!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Generate discretization expressions for the boundary conditions at x=0 (LHS) and x=s(t) (RHS). For the RHS and the temperature gradient across the moving boundary interface we will use a  three-term backward difference scheme:\n",
    "\n",
    "LHS:  $\\frac{\\partial U(x=0, t)}{\\partial x} = -e^{t} \\longrightarrow    \\frac{U_{i+1}^{m}(0,t)-U_{i-1}^{m}(0,t)}{2\\Delta x^{m}} = e^{t_{m}}$, and\n",
    "\n",
    "RHS: $\\frac{\\partial U(x=s(t), t)}{\\partial x} = -\\frac{d s(t)}{d t} \\longrightarrow \\frac{\\partial U(x=s(t),t)}{\\partial x} = \\frac{3U_{N}^{m}-4U_{N-1}^{m}+U_{N-2}^{m}}{2\\Delta x^{m}}  $\n",
    "\n",
    "from our LHS boundary condition expression, if we set $i=0$ and solve for $U_{-1}^{m}$ we get: $$U_{-1}^{m}=U_{1}^{m} + 2\\Delta x^{m} e^{t_{m}}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now combine this expression and substitute into the governing equation to get expressions for diffusion at  $i=0, i=1$ to $(N-1)$, and $i=N$:\n",
    "\n",
    "\n",
    "$U_{i}^{m+1}=(1-2\\frac{\\Delta t}{(\\Delta x^{m})^{2}})U_{i}^{m} + 2\\frac{\\Delta t}{(\\Delta x^{m})^{2}}U_{i+1}^{m} + (2\\frac{\\Delta t}{\\Delta x^{m}}-\\frac{\\Delta t x_{i}^{m}\\dot{s_{m}}}{s_{m}})e^{t_{m}}$\n",
    "\n",
    "\n",
    "$U_{i}^{m+1}=U_{i}^{m}+\\frac{\\Delta t x_{i}^{m} \\dot{s_{m}}}{2 \\Delta x^{m}s_{m}}(U_{i+1}^{m}-U_{i-1}^{m}) + \\frac{\\Delta t}{(\\Delta x^{m})^{2}}(U_{i+1}^{m}-2U_{i}^{m}+U_{i-1}^{m})$\n",
    "\n",
    "$U_{i}^{m}=0$, $i=N$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Phew!! Now that is one impressive looking set of discretization expressions. But, sorry, we aren't done yet..... In the above expressions what are we supposed to do about $\\dot{s_{m}}$ and $s_{m}$? \n",
    "\n",
    "Well luckily, that is where the Stefan condition comes in, remember:\n",
    "\n",
    "$\\dot{s_{m}} = \\frac{ds}{dt}= -\\frac{\\partial U_{@x=s}}{\\partial x} = -\\frac{3U_{N}^{m}-4U_{N-1}^{m}+U_{N-2}^{m}}{2\\Delta x^{m}} $, and as for $s_{m}$ that is just a Heat Balance equation:\n",
    "\n",
    "$s_{m+1} = s_{m}+\\dot{s_{m}}\\Delta t = s_{m} - \\frac{\\Delta t}{2\\Delta x^{m}}(3U_{N}^{m}-4U_{N-1}^{m}+U_{N-2}^{m})$, where $s_{0}=0$\n",
    "\n",
    "To make our lives easier, instead of inserting these expressions for $\\dot{s_{m}}$ and $s_{m}$ into our governing equations, lets keep them as coupled expressions to be calculated during the time loops and calculated at every grid point $i$.\n",
    "\n",
    "lastly, lets not forget that the updated interface location $s_{m+1}$ and grid size $\\Delta x^{m}$ are calculated at every timestep $m$, and have the relationship: \n",
    "\n",
    "$$\\Delta x^{m+1} = \\frac{s_{m+1}}{N}$$\n",
    "\n",
    "Don't worry, we are almost ready to code, I promise! There is just one more expression we need to consider, and that relates to Stability! Following the calculations of Caldwell and Savovic [5], for now, we will use something simple in order to limit the size of the timestep ($\\Delta t$), that is: $$\\frac{\\Delta t}{(\\Delta x^{m})^{2}} \\leq 1$$, or\n",
    "\n",
    "$$\\Delta t \\leq (\\Delta x^{m})^{2}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Let's Code!!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To summarize our governing equations we need to code these 7 coupled equations:\n",
    "\n",
    "(A) $u_{i}^{m+1}=(1-2\\frac{\\Delta t}{(\\Delta x^{m})^{2}})u_{i}^{m} + 2\\frac{\\Delta t}{(\\Delta x^{m})^{2}}u_{i+1}^{m} + (2\\frac{\\Delta t}{\\Delta x^{m}}-\\frac{\\Delta t x_{i}^{m}\\dot{s_{m}}}{s_{m}})e^{t_{m}}$\n",
    "\n",
    "\n",
    "(B) $u_{i}^{m+1}=u_{i}^{m}+\\frac{\\Delta t x_{i}^{m} \\dot{s_{m}}}{2 \\Delta x^{m}s_{m}}(u_{i+1}^{m}-u_{i-1}^{m}) + \\frac{\\Delta t}{(\\Delta x^{m})^{2}}(u_{i+1}^{m}-2u_{i}^{m}+u_{i-1}^{m})$\n",
    "\n",
    "(C) $u_{i}^{m}=0$, $i=N$\n",
    "\n",
    "(D) $\\dot{s_{m}} = \\frac{ds}{dt}= -\\frac{\\partial u_{@x=s}}{\\partial x} = -\\frac{3u_{N}^{m}-4u_{N-1}^{m}+u_{N-2}^{m}}{2\\Delta x^{m}} $\n",
    "\n",
    "(E) $s_{m+1} = s_{m}+\\dot{s_{m}}\\Delta t = s_{m} - \\frac{\\Delta t}{2\\Delta x^{m}}(3u_{N}^{m}-4u_{N-1}^{m}+u_{N-2}^{m}), s_{0}=0$\n",
    "\n",
    "(F) $\\Delta x^{m+1} = \\frac{s_{m+1}}{N}$\n",
    "\n",
    "(G) $\\Delta t \\leq (\\Delta x^{m})^{2}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initial Temperature Array: [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]\n",
      "Initial Position of the interface (So): 0.02\n",
      "Initial X_step(dx): 0.002\n",
      "Time Step (dt): 2e-06\n",
      "Initial speed of our moving interface (Sdot): 0.0\n"
     ]
    }
   ],
   "source": [
    "# First we set up some new initial parameters.These values differ from our first \n",
    "#example since we are now dealing with a new non-dimensionalized heat equation, \n",
    "#and new governing equations. \n",
    "\n",
    "#1.0 Numerical Solution Parameters:\n",
    "dt=2.0e-6              # Size of our Time-step, Set constant, Chosen in accordance \n",
    "                       # with Caldwell and Savovic [5]\n",
    "nt=500000              # Number of time steps, chosen so that elapsed solution will \n",
    "                       # determine heat diffusion after \n",
    "                       # (nt*dt= 1.0 seconds) Just like in our Analytical Solution.\n",
    "N = 10                 # Number of spatial grid points, Chosen, for now, in \n",
    "                       #accordance with Caldwell and Savovic [5]   \n",
    "\n",
    "#2.0 Array Creation and Initial Values:\n",
    "Uo=0                          #Initial Temperature input\n",
    "U0 = numpy.ones(N)*(Uo)\n",
    "s0=0.02                      #Initial Interface Position \n",
    "                             #(cannot chose zero or our expressions would blow up!)\n",
    "s=numpy.ones(nt)*(s0)\n",
    "dx=numpy.ones(nt)*(s[1]/N)\n",
    "sdot=(s[1]-s[0])/dt\n",
    "\n",
    "s[1]= s[0] - (dt/(2*dx[0]))*(3*U0[N-1]-4*U0[N-2]+U0[N-3])\n",
    "dx[0]=(s[1]/N)\n",
    "\n",
    "print('Initial Temperature Array:', U0)\n",
    "print('Initial Position of the interface (So):', s[0])\n",
    "print('Initial X_step(dx):', dx[0])\n",
    "print('Time Step (dt):', dt)\n",
    "print('Initial speed of our moving interface (Sdot):', sdot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 3.0 Application of the Stefan Problem Governing Equations\n",
    "\n",
    "for m in range(0, nt-1):\n",
    "    \n",
    "   \n",
    "    for i in range(0, N-1):\n",
    "        \n",
    "        #LHS BC (x=0, i=0)\n",
    "         if(i==0):\n",
    "                U0[i]= (1-2*(dt/dx[m]**2))*U0[i]+2*(dt/dx[m]**2)*U0[i+1] + \\\n",
    "                       (2*(dt/dx[m])-dt*(dx[m]*i)*sdot/s[m])*numpy.exp(m*dt) \n",
    "        \n",
    "        #Governing Equation (B)\n",
    "         else: \n",
    "                U0[i]= U0[i]+((dt*(dx[m]*i)*sdot)/(2*dx[m]*s[m]))*(U0[i+1]-U0[i-1]) \\\n",
    "                            +(dt/(dx[m]**2))*(U0[i+1]-2*U0[i]+U0[i-1]) \n",
    "        \n",
    "         #RHS BC (x=L, L=dx{m*N})\n",
    "         U0[N-1]=0  \n",
    "            \n",
    "    #Heat Balance Equation, (E)\n",
    "    \n",
    "    s[m+1]= s[m] - (dt/(2*dx[m]))*(3*U0[N-1]-4*U0[N-2]+U0[N-3]) \n",
    "    \n",
    "    sdot=(s[m+1]-s[m])/dt       #Updating Speed of Interface\n",
    "    dx[m+1]=(s[m+1]/N)          #Updating dx for each time step \n",
    "    \n",
    "    if (U0[i]>0):\n",
    "        Location=s[m]\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Results and Discussions\n",
    "\n",
    "Ok! Now lets see what we get, and more importantly, if it makes any sense:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This is our VGM temperature profile after: 1.0 seconds\n",
      "The temperature at our LHS boundary is: 1.67968665309 degrees\n",
      "Final position of our interface is: 1.05845810287\n",
      "The final speed of our interface is: 1.0670700693\n",
      "Our grid spaceing (dx) after 1.0 seconds is: 0.105845810287\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x654d550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "XX = numpy.linspace(0, 1, N)\n",
    "Max_tempVGM=max(U0)\n",
    "\n",
    "pyplot.plot(XX,U0, color = '#654322', ls = '--', lw =4)\n",
    "pyplot.xlabel('Length of Domain')\n",
    "pyplot.ylabel('Temperature')\n",
    "pyplot.ylim(-.5, 2)\n",
    "pyplot.xlim(0, 1.0)\n",
    "\n",
    "print('This is our VGM temperature profile after:', nt*dt, 'seconds')\n",
    "print('The temperature at our LHS boundary is:', Max_tempVGM, 'degrees')\n",
    "print('Final position of our interface is:', s[m])\n",
    "print('The final speed of our interface is:', sdot)\n",
    "print('Our grid spaceing (dx) after', nt*dt, 'seconds is:', dx[m] )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Hey now! That looks pretty good! Let's compare this result to our earlier Analytical (exact) solution to the 1D Dimensionless problem, for 1 second into the diffusion:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Max error (@x=0) is: 1.93619004241 percent\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x6241588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pyplot.figure(figsize=(12,10))\n",
    "pyplot.plot(XX,U0, color = '#654322', ls = '--',  lw =4, label = 'Variable Grid Method')\n",
    "pyplot.plot(x, ExactS, color = '#003366', ls = '--', lw =1, label='Analytical Solution')\n",
    "pyplot.xlabel('Length of Domain')\n",
    "pyplot.ylabel('Temperature')\n",
    "pyplot.ylim(0, 1.8)\n",
    "pyplot.xlim(0, 1.0)\n",
    "pyplot.legend();\n",
    "\n",
    "print('Max error (@x=0) is:',abs(Max_tempVGM - Max_tempA)*(100/Max_tempA),'percent')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Under 2% error is pretty good! What else should we verify? How about the change in the interface location s(t) and the size of our spatial grid (dx) over time?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nUtK8eXPZtWuXpKamSnx8vLi7u4tSSlauXJkl/qmnnpIePXrI1atXRUQkOjpaPDw8xMLCQvbs2ZPj\n+E899ZTodLo8z6/T6eTKlStZtiulZMaMGRIXFyciIhcvXpTu3btLrVq1JDw8PMdxGjZsKI0aNcr3\nekVE3n33XVFKyfTp0wsUr0UpJU2aNJFnn31Wrl27JiIiS5YsyZKD1rUnJSVJjx49xNbWVnbv3i0i\nIvfv35fp06dL69atRSklhw4dKlAOBw8eFKWUKKWkc+fOsnbtWomKisp3P2dn5xyvlbOzc473YOPG\njaKUkr59+2bZ/vrrr4tSSpYuXSrJycmSlJQka9asEQsLC5k2bVqBci9vCvq5kx5X9PqnOA5S2r8q\n6oc5EeXuUT4X3NFR86sk4kvSmTNnpFOnTsZf/EopqV+/vsycOVOOHTumuc+ECRNEKSVvvfVWlu1J\nSUlSt25dqVq1qty7d8+4fcqUKfL7779niU1JSRG9Xi9du3bNcfz8iryM82cvMLp06SJJSUlZtp0+\nfVqUUvLaa6/lOE5hirzp06eLUkrmzZtXoHgtSimxsrKSS5cuGbfdu3dPPvnkE+P3Wtf+8ccfi1JK\nXn755SzbU1JSxNnZuVBFnojIqlWrpEaNGsb3W6fTSdeuXWXBggW5Fnxar9Xs2bPl1q1bxu/Pnj0r\nVapUkbp162bZ/uuvv4pSSkaOHJnjuC+++KIopeT48eMFzr+8MHWRx9u1REQVTKtWrXDs2DEcPHgQ\nM2bMQMOGDREeHo5ly5ahc+fOmDx5csYfyDn069cvy/eWlpbo06cP4uLisHfvXuP21atXo0OHDlli\ndTodmjVrhpMnTxbbtRw5ciTH84OtWrUCgGI9j5YNGzYYb1dWr14d1apVw7Vr13LENW7cGM7Ozsbv\nq1evnu/gli+++AIAMGDAgCzbdTodevfuXehcp06diqtXr+Ljjz/GoEGDULlyZRw9ehQvv/wymjRp\ngt27dxfoOMHBwXB0dAQAxMfHY8SIEUhMTMTmzZuN2wHg008/BQA888wzOY7RuXNnAMBXX31V6Oug\nwildT9YSEZViK+W3UhVfVE899RSeeuopLFmyBCdPnsTatWuxfPlyrFu3Dt27d8ekSZNy7GMwGHJs\ny3jm6+LFi8Zt165dQ1BQEL7//ntERkYai8Y7d+4gOTm52K7h2LFjCA4OxvHjx3H79u0so0Tj4+OL\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x62212b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "Time=numpy.linspace(0,dt*nt,nt)\n",
    "pyplot.figure(figsize=(10,6))\n",
    "\n",
    "pyplot.plot(Time,dx, color = '#660033', ls = '--', lw =2, label='Spatial Grid Size')\n",
    "pyplot.plot(Time,s,color = '#222222', ls = '-', lw =4, label='Interface Position, s(t)')\n",
    "pyplot.xlabel('Time (Seconds)')\n",
    "pyplot.ylabel('Length')\n",
    "pyplot.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and so we see that both the spatial grid size, dx, and the interface location, s(t), increase with time over the course of 1 second. This is exactly what we would expect! Infact, remember back to our anayltical solution, we solved the interface function  to be: $s(t)=t$, which is exactly the graph that our numerical solution has given us! \n",
    "\n",
    "Well, then! That's a wrap! Looks like everything is all accounted for, right?. . . . . . . . . . . .  . .well, not exactly. There are still quite a few questions left unanswered, and now we must discuss the limitations in the Variable Grid Method of numerical implementation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Limitations of the Variable Grid Method\n",
    "\n",
    "A number of questions should be coming to mind, among those are:\n",
    "\n",
    "1) Why do we only analyze for 1 second of diffusion? \n",
    "\n",
    "2) Why is your VGM timestep (dt) so small at 2.0e-6?\n",
    "\n",
    "3) Why is your number of spatial grid points (N) only 10? \n",
    "\n",
    "\n",
    "These are all VERY good questions, do you already know the answer? Here is a hint: it all has to do with stability!\n",
    "\n",
    "You see, we have a relatively benign stability statement: $\\Delta t \\leq (\\Delta x^{m})^{2}$, but still, it is a crutial aspect of our numerical analysis. This statement limits the size of our timestep, dt, and is the key reason why we chose our initial, constant, dt to be 2.0e-6 (lets not also forget the fact that this dt and N were also chosen by Caldwell and Savovic [5]) . Remember, because we are using a Central Difference scheme, our stability criteria essentially comes from the CFL condition: \n",
    "\n",
    "$$\\frac{\\Delta t}{(\\Delta x^{m})^{2}} \\leq \\sigma = 1$$. \n",
    "\n",
    "The parameters dt and dx are not just arbitrarilty chosen. They determine the speed of your numerical solution. At all times you need the speed at which your solution progresses to be faster than the speed at which the problem (in this case, thermal diffusion) propagates. Afterall, how can you calculate the solution numerically when the solution is faster than the numerical analysis?!\n",
    "\n",
    "\n",
    "Here is a pertinent question for you: Which do you determine first: dt, nt, N, or L? Does it matter which one you chose first?\n",
    "The answer is normally, yes, we chose N and L which gives us dx, we then use a stability statement with dx (and $\\alpha$) to limit dt, we then choose our nt to determine the elapsed time into our solution in the form of (nt*dt) seconds, easy right?\n",
    "\n",
    "Well this is where we get to limitation #1 with the Variable Grid Method: \n",
    "\n",
    "Because the end of our domain \"L\" is in actuality the position of our interface, s(t), and our interface at time t=0 is approximately at the origin (x=0.02), then if we want a constant number of spatial grids N (say N=10), our initial dx is extremely small!. Remember governing equation (F) says: $\\Delta x^{m+1} = \\frac{s_{m+1}}{N}$, well at t=0 (m=0) s[0] is 0.02, meaning our initial dx, dx[0] is: 0.002. Plug this back into our stability statement and you see that dt must be smaller than or equal to 4e-6! That is VERY harsh criterion for a timestep dt. In essence, with SUCH a small time step, we would need hundreds of thousands of time loops, nt, in order to get just 1 second of data. Now you see why nt is chosen to be 500,000 in order to get just 1 second of data. If I had wanted more time elapsed, we would have needed iterations in the millions. (This is also why the analytical solution was calculated only for 1 second, we wanted to be able to compare results at the end!)\n",
    "\n",
    "Now limitation #2 of the Variable Grid Method: Because the interface starts at the origin, the initial spatial step is very small, and forces a very very small timestep, dt. Thus a very very large number of iterations is needed to get into the \"Seconds\" scale for simulations, this is a slow numerical process... \n",
    "\n",
    "Not only this, but we have limitation #3 of the Variable Grid Method: If we want a longer dimensional domain, we need to choose a larger N. This will give us a final domain of $L=N*dx_{final}$, but if N is larger, then going back to our governing equation (F),  $\\Delta x^{m+1} = \\frac{s_{m+1}}{N}$ this means that dx[0] is even smaller, which continues to force a much smaller dt. Thus for the Variable Grid Method, if you want a large domain, you need an even smaller timestep, which forces more time in your numerical calculation.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's test this out for ourselves, lets redo the VGM calculations but increase N to say, 14:\n",
    "(The cell below has the nt set to 500 since we didn't want it to slow you down the first time you ran this program. Notice the N is now 14, go ahead and run this below cellwith nt=500000 and see what happens)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Time Step dt is: 2e-06\n",
      "Initial spatial step, dx[0]^2 is: 2.04081632653e-06\n",
      "Max error (@x=0) is: 98.8645837051 Percent\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaYAAAEhCAYAAAA0xARjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4FOX2wPHvCRCqdEiCCIIi2GgidgmoKGBBVFRUFJWr\nXtu1VxCwXHvhqggqzZ9YsYFeFJDIVUFAaSIWpIhUCb0kpJzfHzOJm82mbHazM5ucz/PMs9l33pk5\nOyx7przzvqKqGGOMMX6R4HUAxhhjTCBLTMYYY3zFEpMxxhhfscRkjDHGVywxGWOM8RVLTMYYY3zF\nEpMxxhhfiZvEJCIdReRVEflJRJaIyDIReUFEGpdi2Woi8rCILBeRpSLyjYicFIu4jTHGhEfi5QFb\nEfkZWAoMVNV9ItIMmImTXDuoakYxy74CpAInqWq6iFwDjAROVNXF5R+9McaY0oqbMyYgF7hHVfcB\nqOp64CmgDdC7qIVEpC0wGHhcVdPdZV8HVgGPlnfQxhhjwhNPiam9qq4MKtvgvtYvZrnzAQFmBZXP\nAnqKSK0oxWeMMSYK4iYxqWp2iOLDAAVmF7NoeyAH+COofBVQFTgiKgEaY4yJirhJTMFEpApwDfCa\nqq4opmpjYK8Wvpm2031tVB7xGWOMKZu4TUzAECAT+JfXgRhjjImeql4HUBYiMgi4EEjNawxRjC1A\nbRGRoLOmuu5rennEaIwxpmziLjGJyBXA7UAPVd1SikUWA5cAB1HwPlMrIAv4KcQ24qMNvTHG+Iyq\nSqTriKtLeSJyOXA3cJqqbnbLzhaRwQF1kkQkcMd8iNNAonvQ6roDX6jq3lDbUlWbVHnooYc8j8Ev\nk+0L2xe2L4qfoiVuEpOIXAa8CozHaeZ9uZuozgGauXVOAtYDL+Utp6q/AmOA+0SkkVtvEM4Z0wOx\n/AzGGGNKFk+X8kYCiTgP1QZSYLj7925gG05yCnQz8BDwjYhk4bTI66mqS8ovXGOMMWURN4lJVUts\n1q1O90KF+s5T5xmoIe5kwpCamup1CL5h++Jvti/+Zvsi+uKmr7xYKtyAzxhjTElEBK1sjR+MMcZU\nfJaYjDHG+IolJmOMMb4SN40fjKkMCj6CZ4x/xPK+uyUmY3zGGt4Yv4n1AZNdyjPGGOMrlpiMMcb4\niiUmY4wxvmKJyRhjjK9YYjLGGOMrlpiMMcb4iiUmY4ynli1bRkpKCtWrVychIYH69etz9NFHh6zb\ntm1b6tevT2JiIs2aNWP58uX5877//nuuvfZa2rVrx4EHHkj9+vU58MAD6dGjBw8++CBff/11gab4\n5513HikpKVSpUoWEhATuvvvuEmPduHEjtWrVIiEhgaZNm9KsWbPId4ApzOuBpfw4ObvFmNirzN+9\n22+/XUVEb7zxxmLr/fOf/9Trr78+/31WVpbecsstWrNmTX388cd148aN+fPWrVunw4YN06pVq6qI\n6IwZMwqt7+CDD1YR0Tp16uiWLVuK3fZtt92mIqIJCQm6Zs2aMD9h/Crt99KtF/lvcDRWUtGmyvzj\nYLxVmb97S5cuVRHRBg0aaEZGRsg6+/bt0wYNGui8efPyy26++WYVEZ06dWqR63755ZdVRHTmzJmF\n5h188MHauXNnFRG99957i1zHpk2btHHjxnr44YeriFhiKrpexL/BdinPGOMLRx11FMcccwzbt2/n\ngw8+CFnnww8/pHnz5hx77LEAzJs3jxdffJEzzzyTPn36FLnua665hqZNm5KQEPon784776R69eq8\n9NJLbN26NWSdp556issuu4ykpKQwP5kJlyUmY4xvDBo0CIDXX3895PyxY8fm1wF45ZVXALjwwguL\nXW9iYiIbN24sclC/Zs2acfXVV7N7926eeeaZQvO3bNnCuHHjuPvuu/OuqphyZAMFhmADBRqvuAOt\nhbXMP04/JGT5mBm/R71+UXWiZfv27SQnJ5Odnc3vv/9Oy5Yt8+f98ccftG3blrVr19K4sTNQ9aGH\nHsrKlSuZO3cuXbt2LdM2W7VqxYQJEzj44INp06YNNWrUYPXq1TRo0CC/zn333ceOHTt4+eWXSU1N\nZfbs2axevZoWLVpE9oHjRGm/lzZQoDGmwqlfvz59+/YlNzeXcePGFZg3fvx4evfunZ+UANavX4+I\n0LBhw4i33aJFCwYOHMiuXbt47rnn8su3bt3KmDFjuPfeeyPehikdS0zGGF/Ju1Q3fvz4/KN0VWXC\nhAlcffXVYa2rT58+pKSkkJycTJ06dejdu3ex9e+77z6qVKnCyJEj2b59OwDPPvssffv2rTRnR35g\niakIE6bOsWvJxnigZ8+eNG/enD/++IMZM2YAkJaWxr59++jVq1eBus2aNUNVSU9PD7muTz/9lA0b\nNvDdd9+xd+9eMjIyit1269atufTSS9m5cyfPP/8827ZtY9SoUdx///3R+XCmVGw8piI8OfFzpn27\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x5c38d68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dt=2.0e-6        \n",
    "nt=500\n",
    "#nt=500000 \n",
    "\n",
    "N = 14  \n",
    "\n",
    "Uo=0       \n",
    "U0 = numpy.ones(N)*(Uo)\n",
    "s0=0.02       \n",
    "s=numpy.ones(nt)*(s0)\n",
    "dx=numpy.ones(nt)*(s[1]/N)\n",
    "sdot=(s[1]-s[0])/dt\n",
    "\n",
    "s[1]= s[0] - (dt/(2*dx[0]))*(3*U0[N-1]-4*U0[N-2]+U0[N-3])\n",
    "dx[0]=(s[1]/N)\n",
    "\n",
    "for m in range(0, nt-1):\n",
    "     for i in range(0, N-1):\n",
    "            if(i==0):\n",
    "                U0[i]= (1-2*(dt/dx[m]**2))*U0[i]+2*(dt/dx[m]**2)*U0[i+1] + \\\n",
    "                        (2*(dt/dx[m])-dt*(dx[m]*i)*sdot/s[m])*numpy.exp(m*dt) \n",
    "            else: \n",
    "                U0[i]= U0[i]+ ((dt*(dx[m]*i)*sdot)/(2*dx[m]*s[m]))*(U0[i+1]-U0[i-1])\\\n",
    "                             +(dt/(dx[m]**2))*(U0[i+1]-2*U0[i]+U0[i-1])\n",
    "                \n",
    "            U0[N-1]=0 \n",
    "            \n",
    "     s[m+1]= s[m] - (dt/(2*dx[m]))*(3*U0[N-1]-4*U0[N-2]+U0[N-3])\n",
    "     sdot=(s[m+1]-s[m])/dt\n",
    "     dx[m+1]=(s[m+1]/N) \n",
    "    \n",
    "XX = numpy.linspace(0, 1, N)\n",
    "Max_tempVGM=max(U0)\n",
    "pyplot.plot(XX,U0, color = '#654322', ls = '--', lw =4, label = 'VGM')\n",
    "pyplot.plot(x, ExactS, color = '#003366', ls = '--', lw =1, label='Analytical')\n",
    "pyplot.xlabel('Length of Domain')\n",
    "pyplot.ylabel('Temperature')\n",
    "pyplot.ylim(-.5, 2)\n",
    "pyplot.xlim(0, 1.0)\n",
    "pyplot.legend();\n",
    "print('Time Step dt is:', dt)\n",
    "print('Initial spatial step, dx[0]^2 is:', dx[0]**2 )\n",
    "print('Max error (@x=0) is:',abs(Max_tempVGM-Max_tempA)*(100/Max_tempA),'Percent')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see, our stability criteria is still met, since $\\Delta t \\leq (\\Delta x_{0})^{2}$. Infact, with a 40% larger N we see that we have less error as well! But what if we set N=15? \n",
    "(The cell below has the nt set to 500 since we didn't want it to slow you down the first time you ran this program. Notice the N is now 15, go ahead and run this below cellwith nt=500000 and see what happens THIS time...)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Time Step dt is: 2e-06\n",
      "Initial spatial step, dx[0]^2 is: 1.77777777778e-06\n",
      "Max error (@x=0) is: 23144125.7014 Percent\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x5d6de48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dt=2.0e-6        \n",
    "nt=500\n",
    "#nt=500000 \n",
    "\n",
    "N = 15 \n",
    "\n",
    "Uo=0       \n",
    "U0 = numpy.ones(N)*(Uo)\n",
    "s0=0.02       \n",
    "s=numpy.ones(nt)*(s0)\n",
    "dx=numpy.ones(nt)*(s[1]/N)\n",
    "sdot=(s[1]-s[0])/dt\n",
    "\n",
    "s[1]= s[0] - (dt/(2*dx[0]))*(3*U0[N-1]-4*U0[N-2]+U0[N-3])\n",
    "dx[0]=(s[1]/N)\n",
    "\n",
    "for m in range(0, nt-1):\n",
    "     for i in range(0, N-1):\n",
    "            if(i==0):U0[i]= (1-2*(dt/dx[m]**2))*U0[i]+2*(dt/dx[m]**2)*U0[i+1]\\\n",
    "                            +(2*(dt/dx[m])-dt*(dx[m]*i)*sdot/s[m])*numpy.exp(m*dt) \n",
    "            else: U0[i]= U0[i]+((dt*(dx[m]*i)*sdot)/(2*dx[m]*s[m]))*(U0[i+1]-U0[i-1])\\\n",
    "                              +(dt/(dx[m]**2))*(U0[i+1]-2*U0[i]+U0[i-1])\n",
    "                    \n",
    "            U0[N-1]=0 \n",
    "            \n",
    "     s[m+1]= s[m] - (dt/(2*dx[m]))*(3*U0[N-1]-4*U0[N-2]+U0[N-3]) \n",
    "     sdot=(s[m+1]-s[m])/dt\n",
    "     dx[m+1]=(s[m+1]/N)\n",
    "\n",
    "XX = numpy.linspace(0, 1, N)\n",
    "Max_tempVGM=max(U0)\n",
    "pyplot.plot(XX,U0, color = '#654322', ls = '--', lw =4, label = 'VGM')\n",
    "pyplot.plot(x, ExactS, color = '#003366', ls = '--', lw =1, label='Analytical')\n",
    "pyplot.xlabel('Length of Domain')\n",
    "pyplot.ylabel('Temperature')\n",
    "pyplot.ylim(-.5, 2)\n",
    "pyplot.xlim(0, 1.0)\n",
    "pyplot.legend();\n",
    "print('Time Step dt is:', dt)\n",
    "print('Initial spatial step, dx[0]^2 is:', dx[0]**2 )\n",
    "print('Max error (@x=0) is:',abs(Max_tempVGM-Max_tempA)*(100/Max_tempA),'Percent')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Wow! That blew up! Just as we expect it would now that with N=15 our time step is larger than our initial spatial step! "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Final Thoughts\n",
    "\n",
    "And now we know, that the Stefan Problem, a boundary value PDE with  a time-dependant moving boundary, CAN be solved. We have just demonstrated the solution for a 1D, Dimensionless Stefan Problem with specifically chosen (time-dependant) input heat flux in order to give us a simplified exact solution to compare with. You have also seen implementation of the Variable Grid Method, one of many ways inwhich one can numerical simulate the Stefan problem. But we have also seen the limitations, namely in small time-steps ($dt$), smaller numerical domain ($N\\cdot dx_{f}$), and large number of iterations ($nt$) for just a small amount of analytical time (t=$nt \\cdot dt$ seconds). Perhaps when it comes time for you to model the melting of the Polar Ice caps, you'll choose a more \"expedient\" method? Just make sure you get the answer BEFORE the caps melt...)\n",
    "\n",
    "EXERCISE #1: Can you implement the Variable Grid Method discretization governing equations to give us a solution faser? Can it handle millions of time iterations without putting us to sleep? (Hint: While governing equations (B) and (C) might be easy to re-write in array form, LHS BC and Moving Interface equations (A), (D), and (E) will not be!)\n",
    "\n",
    "EXERCISE #2: Can you write a stability condition statement that will maximize our time-step (dt) for a given N and still keep it constant?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# References"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. Kutluay S., The numerical solution of one-phase classical Stefan problem, Journal of Computational and Applied Mathematics 81 (1997) 135-144\n",
    "\n",
    "2. Javierre, E., A Comparison of Numeical Models for one-dimensional Stefan problems, Journal of Compuational and Applied Mathematics 192 (2006) 445-459\n",
    "\n",
    "3. Vuik, C., \"Some historical notes about the Stefan problem\". Nieuw Archief voor Wiskunde, 4e serie 11 (2): 157-167 (1993)\n",
    "\n",
    "4. Crowley, A. B., Numerical Solution of Stefan Problems, Brunel University, Department of Mathematics, TR/69 December 1976\n",
    "\n",
    "5. Caldwell, J., Numerical Solution of Stefan Problem By Variable Space Grid Method and Boundary Immodbilisation Method, Jour. of Mathematical Sciences, Vol. 13 No.1 (2002) 67-79."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:100,300,400,500,700,800,900,100italic,300italic,400italic,500italic,700italic,800italic,900italic' rel='stylesheet' type='text/css'>\n",
       "<link href='http://fonts.googleapis.com/css?family=Arvo:400,700,400italic' rel='stylesheet' type='text/css'>\n",
       "<link href='http://fonts.googleapis.com/css?family=PT+Mono' rel='stylesheet' type='text/css'>\n",
       "<link href='http://fonts.googleapis.com/css?family=Shadows+Into+Light' rel='stylesheet' type='text/css'>\n",
       "<link href='http://fonts.googleapis.com/css?family=Nixie+One' rel='stylesheet' type='text/css'>\n",
       "<style>\n",
       "\n",
       "@font-face {\n",
       "    font-family: \"Computer Modern\";\n",
       "    src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
       "}\n",
       "\n",
       "#notebook_panel { /* main background */\n",
       "    background: rgb(245,245,245);\n",
       "}\n",
       "\n",
       "div.cell { /* set cell width */\n",
       "    width: 750px;\n",
       "}\n",
       "\n",
       "div #notebook { /* centre the content */\n",
       "    background: #fff; /* white background for content */\n",
       "    width: 1000px;\n",
       "    margin: auto;\n",
       "    padding-left: 0em;\n",
       "}\n",
       "\n",
       "#notebook li { /* More space between bullet points */\n",
       "    margin-top:0.8em;\n",
       "}\n",
       "\n",
       "/* draw border around running cells */\n",
       "div.cell.border-box-sizing.code_cell.running { \n",
       "    border: 1px solid #111;\n",
       "}\n",
       "\n",
       "/* Put a solid color box around each cell and its output, visually linking them*/\n",
       "div.cell.code_cell {\n",
       "    background-color: rgb(256,256,256); \n",
       "    border-radius: 0px; \n",
       "    padding: 0.5em;\n",
       "    margin-left:1em;\n",
       "    margin-top: 1em;\n",
       "}\n",
       "\n",
       "div.text_cell_render{\n",
       "    font-family: 'Alegreya Sans' sans-serif;\n",
       "    line-height: 140%;\n",
       "    font-size: 125%;\n",
       "    font-weight: 400;\n",
       "    width:600px;\n",
       "    margin-left:auto;\n",
       "    margin-right:auto;\n",
       "}\n",
       "\n",
       "\n",
       "/* Formatting for header cells */\n",
       ".text_cell_render h1 {\n",
       "    font-family: 'Nixie One', serif;\n",
       "    font-style:regular;\n",
       "    font-weight: 400;    \n",
       "    font-size: 45pt;\n",
       "    line-height: 100%;\n",
       "    color: rgb(0,51,102);\n",
       "    margin-bottom: 0.5em;\n",
       "    margin-top: 0.5em;\n",
       "    display: block;\n",
       "}\n",
       "\n",
       ".text_cell_render h2 {\n",
       "    font-family: 'Nixie One', serif;\n",
       "    font-weight: 400;\n",
       "    font-size: 30pt;\n",
       "    line-height: 100%;\n",
       "    color: rgb(0,51,102);\n",
       "    margin-bottom: 0.1em;\n",
       "    margin-top: 0.3em;\n",
       "    display: block;\n",
       "}\t\n",
       "\n",
       ".text_cell_render h3 {\n",
       "    font-family: 'Nixie One', serif;\n",
       "    margin-top:16px;\n",
       "    font-size: 22pt;\n",
       "    font-weight: 600;\n",
       "    margin-bottom: 3px;\n",
       "    font-style: regular;\n",
       "    color: rgb(102,102,0);\n",
       "}\n",
       "\n",
       ".text_cell_render h4 {    /*Use this for captions*/\n",
       "    font-family: 'Nixie One', serif;\n",
       "    font-size: 14pt;\n",
       "    text-align: center;\n",
       "    margin-top: 0em;\n",
       "    margin-bottom: 2em;\n",
       "    font-style: regular;\n",
       "}\n",
       "\n",
       ".text_cell_render h5 {  /*Use this for small titles*/\n",
       "    font-family: 'Nixie One', sans-serif;\n",
       "    font-weight: 400;\n",
       "    font-size: 16pt;\n",
       "    color: rgb(163,0,0);\n",
       "    font-style: italic;\n",
       "    margin-bottom: .1em;\n",
       "    margin-top: 0.8em;\n",
       "    display: block;\n",
       "}\n",
       "\n",
       ".text_cell_render h6 { /*use this for copyright note*/\n",
       "    font-family: 'PT Mono', sans-serif;\n",
       "    font-weight: 300;\n",
       "    font-size: 9pt;\n",
       "    line-height: 100%;\n",
       "    color: grey;\n",
       "    margin-bottom: 1px;\n",
       "    margin-top: 1px;\n",
       "}\n",
       "\n",
       ".CodeMirror{\n",
       "    font-family: \"PT Mono\";\n",
       "    font-size: 90%;\n",
       "}\n",
       "\n",
       "</style>\n",
       "<script>\n",
       "    MathJax.Hub.Config({\n",
       "                        TeX: {\n",
       "                           extensions: [\"AMSmath.js\"],\n",
       "                           equationNumbers: { autoNumber: \"AMS\", useLabelIds: true}\n",
       "                           },\n",
       "                tex2jax: {\n",
       "                    inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
       "                    displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
       "                },\n",
       "                displayAlign: 'center', // Change this to 'center' to center equations.\n",
       "                \"HTML-CSS\": {\n",
       "                    styles: {'.MathJax_Display': {\"margin\": 4}}\n",
       "                }\n",
       "        });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Execute this cell to load the notebook's style sheet, then ignore it\n",
    "from IPython.core.display import HTML\n",
    "css_file ='numericalmoocstyle.css'\n",
    "HTML(open(css_file, \"r\").read())"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.4.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}