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    treatments of polycrystalline, dendritic, and electrochemical phase transformations, as well as drug eluting stents , reactive wetting , photovoltaics  and a level set treatment of the electrodeposition process .
Even if you don’t read manuals...¶
What’s new in version 3.1.3?¶
The significant changes since version 3.0 are:
- Level sets are now handled by LSMLIB or Scikit-fmm 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
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.
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.
Conventions and Notation¶
Throughout, text to be typed at the keyboard will appear
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.
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:
will correspond to, e.g.:
Paths will always be rendered using POSIX conventions (path elements
separated by “
/”). Any references of the form:
are in the Python module notation and correspond to the equivalent POSIX path given above.
We may at times use a
to indicate something that may be of interest
to indicate something that could cause serious problems.
Enter search terms or a module, class or function name.