From charlesreid1

(Created page with "Fipy is a finite-volume partial differential equation solver written in Python. =Installing Fipy= ==Installing FiPy with Pip== These instructions worked for Mountain Lion ...")
 
Line 110: Line 110:
[[Fipy/Surface Adsorption Equation]]
[[Fipy/Surface Adsorption Equation]]


My application was somewhat different - I wasn't so much interested in the evolution of the interface, as much as I was interested in the evolution of adsorbed surface species on a stationary catalyst surface. I've complied more notes on how to solve evolution of surface species on a (stationary) catalyst surface:
My application was somewhat different - I wasn't so much interested in the evolution of the interface, as much as I was interested in the evolution of adsorbed surface species on a stationary catalyst surface.  
 
[[Fipy/Catalyst Adsorption Equation]]
 





Revision as of 22:24, 20 December 2013

Fipy is a finite-volume partial differential equation solver written in Python.

Installing Fipy

Installing FiPy with Pip

These instructions worked for Mountain Lion and Maverick (OS X 10.7 and 10.8).

Numpy

Keep it simple:

pip install numpy

Pysparse

Both pip and easy_install are broken for pysparse:

$ pip install pysparse
Downloading/unpacking pysparse
  Could not find a version that satisfies the requirement pysparse (from versions: 1.1.1-dev, 1.2-dev, 1.2-dev202, 1.2-dev203, 1.2-dev213, 1.3-dev)
Cleaning up...
No distributions matching the version for pysparse
Storing complete log in /Users/charles/.pip/pip.log
$ easy_install pysparse

[...]

1 error generated.
error: Setup script exited with error: Command "/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -DLENFUNC_OK=1 -DNO_ATLAS_INFO=3 -I/private/var/folders/nw/1yytq18n06db0v8r1pvxf5rc0000gn/T/easy_install-dlFghq/pysparse-1.3-dev/pysparse/sparse/src -I/var/folders/nw/1yytq18n06db0v8r1pvxf5rc0000gn/T/easy_install-dlFghq/pysparse-1.3-dev/pysparse/include -I/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include -I/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/include -I/var/folders/nw/1yytq18n06db0v8r1pvxf5rc0000gn/T/easy_install-dlFghq/pysparse-1.3-dev/pysparse/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c /private/var/folders/nw/1yytq18n06db0v8r1pvxf5rc0000gn/T/easy_install-dlFghq/pysparse-1.3-dev/pysparse/sparse/src/spmatrixmodule.c -o build/temp.macosx-10.6-intel-2.7/private/var/folders/nw/1yytq18n06db0v8r1pvxf5rc0000gn/T/easy_install-dlFghq/pysparse-1.3-dev/pysparse/sparse/src/spmatrixmodule.o -msse3 -I/System/Library/Frameworks/vecLib.framework/Headers" failed with exit status 1

So I built it myself:

$ git clone git://pysparse.git.sourceforge.net/gitroot/pysparse/pysparse
$ cd pysparse
$ python setup.py build && python setup.py install

Fipy

Using pip:

$ pip install fipy

Installing Fipy from Source

I was able to mostly follow this guide on Matforge (the site that hosts Fipy source code): http://matforge.org/fipy/wiki/InstallFiPy/MacOSX/SnowLeopard

Here are the steps I took:

  • Skipped virtualenv (because I manage my Python distribution intelligently/carefully, I didn't need to bother with this step. See my Python page for more information.)
  • Already had Gfortran installed.
  • Installed the latest Cmake
  • Skipped FFTW
  • Skipped SparseSuite
    • I was able to skip both of these because my Numpy was working and using the system's LAPACK/BLAS without problems.
  • Already had Numpy installed
  • Already had Matplotlib installed
  • Installed Pysparse from source

Once I had all of these dependencies installed, I was able to download and install Fipy. Note that as of this writing (December 2013), the instructions on http://matforge.org/fipy/wiki/InstallFiPy/MacOSX/SnowLeopard are out of date, because it specifies that you should check out a copy of the source code via SVN. In fact, Fipy now uses git.

Either download the latest release from this page: http://www.ctcms.nist.gov/fipy/download/ or by cloning a copy with git:

$ git clone git://code.matforge.org/nist/fipy.git


Using Fipy

Using Fipy with Cantera

This section contains some notes on how to use Fipy with Cantera.

Fipy and Cantera

0D Reaction

I wanted to replicate some of Cantera's ODE solver capabilities, so I put together a Fipy script that will solve an ODE of the form:

$ \frac{d C_j }{dt} = \sum_{i=1}^{N_{rxns}} r_{ij} $

where the reaction source terms are, of course, computed by Cantera.

Fipy and Cantera/0D Reaction

1D Diffusion

You can solve a 1D diffusion problem with Fipy, where the diffusion coefficient is computed by Cantera. Because diffusion coefficients are a function of composition, composition is the quantity for which you are solving, you need to sweep over a solution. This page shows a script that illustrates how to do that.

Fipy and Cantera/1D Diffusion

Surface Adsorption Equation

One of the examples included with Fipy is a electrochemical level set example, which defines, among other things, a surface adsorption equation class. I have compiled some scattered notes on this class here:

Fipy/Surface Adsorption Equation

My application was somewhat different - I wasn't so much interested in the evolution of the interface, as much as I was interested in the evolution of adsorbed surface species on a stationary catalyst surface.