- Notifications
You must be signed in to change notification settings - Fork160
FiPy is a Finite Volume PDE solver written in Python
License
usnistgov/fipy
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
.. only:: latex :term:`FiPy` is an object oriented, partial differential equation (PDE) solver, written in :term:`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 :term:`Python`, provides a tool that is extensible, powerful and freely available. A significant advantage to :term:`Python` is the existing suite of tools for array calculations, sparse matrices and data rendering.
The:term:`FiPy` framework includes terms for transient diffusion,convection and standard sources, enabling the solution of arbitrarycombinations of coupled elliptic, hyperbolic and parabolic PDEs. Currentlyimplemented models include phase field:cite:`BoettingerReview:2002`:cite:`ChenReview:2002`:cite:`McFaddenReview:2002` treatments of polycrystalline,dendritic, and electrochemical phase transformations, as well as drugeluting stents:cite:`Saylor:2011p2794`, reactive wetting:cite:`PhysRevE.82.051601`,photovoltaics:cite:`Hangarter:2011p2795` and a level set treatment of theelectrodeposition process:cite:`NIST:damascene:2001`.
.. only:: latex The latest information about :term:`FiPy` can be found at http://www.ctcms.nist.gov/fipy/. See the latest updates in the :ref:`CHANGELOG`.
...please read:ref:`INSTALLATION`,:ref:`USAGE` and:ref:`FAQ`, as wellas:mod:`examples.diffusion.mesh1D`.
Please refer to:ref:`INSTALLATION` for details on download andinstallation.:term:`FiPy` can be redistributed and/or modifiedfreely, provided that any derivative works bear some notice that theyare derived from it, and any modified versions bear some notice thatthey have been modified.
We offer several modes to communicate with the:term:`FiPy` developers andwith other users.
.. toctree:: CONTACT
We welcome collaborative efforts on this project.
:term:`FiPy` is driven by:term:`Python` script files than you can view or modify in anytext editor.:term:`FiPy` sessions are invoked from a command-line shell, suchas:command:`tcsh` or:command:`bash`.
Throughout, text to be typed at the keyboard will appearlike 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>>> a12>>> if a == 12:... print "a is twelve"...a is twelve
are intended to indicate an interactive session in the:term:`Python` interpreter.We will refer to these as "interactive sessions" or as "doctest blocks".The text ">>>
" at the beginning of a line denotes theprimary prompt,calling for input of a:term:`Python` command. The text "...
" denotes thesecondary prompt, which calls for input that continues from the lineabove, when required by:term:`Python` syntax. All remaining lines, which beginat the left margin, denote output from the:term:`Python` interpreter. In allcases, the prompt is supplied by the:term:`Python` interpreter and should not betyped by you.
Warning
:term:`Python` is sensitive to indentation and care should be taken to entertext exactly as it appears in the examples.
When references are made to file system paths, it is assumed that thecurrent working directory is the:term:`FiPy` distribution directory, referred toas 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 elementsseparated by "/
"). Any references of the form:
examples.diffusion.steadyState.mesh1D
are in the:term:`Python` module notation and correspond to the equivalent POSIXpath 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