Skip to content

Rhys314/fipy

 
 

Repository files navigation

Overview

latex

FiPy is an object oriented, partial differential equation (PDE) solver, written in Python, based on a standard finite volume (FV) approach. The framework has been developed in the Materials Science and Engineering Division (MSED) and Center for Theoretical and Computational Materials Science (CTCMS), in the Material Measurement Laboratory (MML) at the National Institute of Standards and Technology (NIST).

The solution of coupled sets of PDEs is ubiquitous to the numerical simulation of science problems. Numerous PDE solvers exist, using a variety of languages and numerical approaches. Many are proprietary, expensive and difficult to customize. As a result, scientists spend considerable resources repeatedly developing limited tools for specific problems. Our approach, combining the FV method and Python, provides a tool that is extensible, powerful and freely available. A significant advantage to Python is the existing suite of tools for array calculations, sparse matrices and data rendering.

The FiPy framework includes terms for transient diffusion, convection and standard sources, enabling the solution of arbitrary combinations of coupled elliptic, hyperbolic and parabolic PDEs. Currently implemented models include phase field BoettingerReview:2002 ChenReview:2002 McFaddenReview:2002 treatments of polycrystalline, dendritic, and electrochemical phase transformations, as well as drug eluting stents Saylor:2011p2794, reactive wetting PhysRevE.82.051601, photovoltaics Hangarter:2011p2795 and a level set treatment of the electrodeposition process NIST:damascene:2001.

latex

The latest information about FiPy can be found at http://www.ctcms.nist.gov/fipy/.

Even if you don't read manuals...

...please read INSTALLATION, USAGE and FAQ, as well as examples.diffusion.mesh1D.

What's new in version ?

The significant changes since version 3.0 are:

  • Level sets are now handled by LSMLIBDOC or SCIKITFMM solver libraries. These libraries are orders of magnitude faster than the original, Python-only prototype.
  • The Matplotlib streamplot() function can be used to display vector fields.
  • Version control was switched to the Git distributed version control system. This system should make it much easier for FiPy users to participate in development.

Tickets fixed in this release:

62  "Move 'ImplicitDiffusionTerm().solve(var) == 0' ""failure"" from examples.phase.simple to examples.diffusion.mesh1D?"
118 subscriber()._markStale() AttributeError
138 `numerix.dot` doesn't support tensors
143 "Trying to ""solve"" an integer `CellVariable` should raise an error"
195 broken arithmetic face to cell distance calculations
197 ~binOp doesn't work on branches/version-2_0
305 add rhie chow correction term in stokes cavity example
321 Windows interactive plotting mostly broken
324 --pysparse configuration should never attempt MPI imports
341 Fix fipy.terms._BinaryTerm test failure in parallel
365 Rename GridXD
368 Error adding meshes
370 Epetra Norm2 failure in parallel
383 move FiPy to distributed version control
385 `diffusionTerm._test()` requires PySparse
391 efficiency_test chokes on liquidVapor2D.py
432 LSMLIB refactor
441 Explicit convetion terms should fail when the equation has no TransientTerm (dt=None)
445 getFaceCenters() should return a FaceVariable
448 Gmsh2D does not respect background mesh
452 Gmsh background mesh doesn't work in parallel
453 faceValue as FaceCenters gives inline failures
454 Assorted errors
456 Web page links seem to be broken
457 Make the citation links go to the DOI links
460 Clean up interaction between dependencies and installation process
461 SvnToGit clean up
462 Fix for test failures on loki
465 sign issues for equation with transient, convection and implicit terms
466 "multiplying equation by ""x"" changes the solution"
469 text in source:trunk/examples/convection/source.py is out of date
470 Include mailing list activity frame on front page
473 Gmsh importer can't read mesh elements with no tags
475 getVersion() fails on Py3k
477 Update Ohloh to point at git repo
480 link to mailing list is wrong
481 constrain should return a handle to the constraint for later deletion
484 NIST CSS changed
486 Using `Popen('gmsh ...', shell=True)` rather than `shell=False` security danger
490 Parallel bug in non-uniform grids and conflicting mesh class and factory function names
491 Rename communicator instances
492 unOps can't be pickled
493 Change documentation to promote use of stackoverflow
494 Viewers don't inline well in IPython notebook
496 FIPY_DISPLAY_MATRIX is broken
497 examples/phase/binary.py has problems
513 convection problem with cylindrical grid
539 Bug with numpy 1.7.0
557 NumPy 1.7.0 doesn't have _formatInteger
564 VanLeerConvectionTerm MinMod slope limiter is broken
638 numpy 1.7.1 test failures with physicalField.py
639 Neumann boundary conditions not clearly documented
641 Add support for Matplotlib streamplot
648 Peclet inequalities have the wrong sign
650 CylindricalNonUniformGrid2D doesn't make a FaceVariable for exteriorFaces
652 Documentation change for Ubuntu install
653 enable google analytics
654 Switch to sphinxcontrib-bibtex
655 Home page needs out-of-NIST redirects

Warning

FiPy 3 brought unavoidable syntax changes from FiPy 2. Please see examples.updating.update2_0to3_0 for guidance on the changes that you will need to make to your FiPy 2.x scripts.

Download and Installation

Please refer to INSTALLATION for details on download and installation. FiPy can be redistributed and/or modified freely, provided that any derivative works bear some notice that they are derived from it, and any modified versions bear some notice that they have been modified.

Support

You can communicate with the FiPy developers and with other users via our mailing list and we welcome you to use the issue tracker for bugs, support requests, feature requests and patch submissions <https://github.com/usnistgov/fipy/issues>. We also monitor StackOverflow for questions tagged with "fipy". We welcome collaborative efforts on this project.

FiPy is a member of MatForge, a project of the Materials Digital Library Pathway. This National Science Foundation funded service provides a "wiki" space for public contributions of code snippets, discussions, and tutorials and hosts our testing framework.

documentation/MAIL

Conventions and Notation

FiPy is driven by Python script files than you can view or modify in any text editor. FiPy sessions are invoked from a command-line shell, such as tcsh or bash.

Throughout, text to be typed at the keyboard will appear like this. Commands to be issued from an interactive shell will appear:

$ like this

where you would enter the text ("like this") following the shell prompt, denoted by "$".

Text blocks of the form:

>>> a = 3 * 4
>>> a
12
>>> if a == 12:
...     print "a is twelve"
...
a is twelve

are intended to indicate an interactive session in the Python interpreter. We will refer to these as "interactive sessions" or as "doctest blocks". The text ">>>" at the beginning of a line denotes the primary prompt, calling for input of a Python command. The text "..." denotes the secondary prompt, which calls for input that continues from the line above, when required by Python syntax. All remaining lines, which begin at the left margin, denote output from the Python interpreter. In all cases, the prompt is supplied by the Python interpreter and should not be typed by you.

Warning

Python is sensitive to indentation and care should be taken to enter text exactly as it appears in the examples.

When references are made to file system paths, it is assumed that the current working directory is the FiPy distribution directory, refered to as the "base directory", such that:

examples/diffusion/steadyState/mesh1D.py

will correspond to, e.g.:

/some/where/FiPy-X.Y/examples/diffusion/steadyState/mesh1D.py

Paths will always be rendered using POSIX conventions (path elements separated by "/"). Any references of the form:

examples.diffusion.steadyState.mesh1D

are in the Python module notation and correspond to the equivalent POSIX path given above.

We may at times use a

Note

to indicate something that may be of interest

or a

Warning

to indicate something that could cause serious problems.

About

FiPy is a Finite Volume PDE solver written in Python

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%