Software for integrating ODEs
Example
Consider the pair of differential equations (covered in a class on 11 February): <rst> <rst-options: 'toc' = False/> <rst-options: 'reset-figures' = False/> .. math::
\dfrac{dX}{dW} &= \dfrac{-r_A'}{F_{A0}} \ \dfrac{dy}{dW} &= -\dfrac{\alpha}{2y}\left(1 + \varepsilon X\right)
Some terminology (recap from your pre-requisite math courses)
* The independent variable is
Since there are two dependent variables, we require initial conditions for each variable. In this case:
* :math:`X(0) = 0.0` * :math:`y(0) = 1.0`
We also need to specify initial **and final conditions** for the independent variable:
* :math:`W` initially is 0.0 at the reactor entrance * :math:`W` finally is 20.0 kg at the reactor exit
But there are a few other unknowns we must first specify:
* :math:`r_A' = -k' \dfrac{(1-X)y}{(1+\varepsilon*X)}` * :math:`q = \dfrac{(1 + \varepsilon X)}{y}` * :math:`F_{A0} = 0.1362\,\text{mol.s}^{-1}` * :math:`k' = 0.0074\,\text{mol.s}^{-1}\text{.(kg catalyst)}^{-1}` * :math:`\alpha = 0.0367\,\text{kg}^{-1}` * :math:`\varepsilon = -0.15` </rst>
Polymath
Download and install Polymath from the CD/DVD included with your course textbook (Windows only; sorry Mac and Linux versions are not available).
Enter the following Polymath code (as demonstrated in class on 11 February. Check the video out for a detailed explanation of the code.
# Differential equations
d(y) / d(W) = -alpha/(2*y) * (1+eps*X)
y(0) = 1.0
d(X) / d(W) = -rAdash / FA0
X(0) = 0
# Constants
FA0 = 0.1362 # [mol/s]
kdash = 0.0074 # [mol/(kg catalyst . s)]
alpha = 0.0367 # [1/kg]
eps = -0.15 # [-]
# Algebraic equations
rAdash = -kdash * (1-X)/(1+eps*X) * y
flow_ratio = (1 + eps*X)/y
# Initial and final values for independent variable:
W(0) = 0
W(f) = 20
Python
Mac computers
- Start the built-in Mac program called Terminal
- Type the following commands:
# first install "easy install"
sudo easy_install ipython
sudo easy_install readline
sudo easy_install numpy
# Download and install "gfortran-4.2.3.dmg"
sudo easy_install scipy
ipython
and you should some something like:
Kevins-MacBook-Pro:~ kevin$ ipython
Python 2.7.2 (default, Jun 20 2012, 16:23:33)
Type "copyright", "credits" or "license" for more information.
IPython 0.13.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: