forked from usnistgov/fipy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.txt
263 lines (215 loc) · 10.8 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
========
Overview
========
.. 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 arbitrary
combinations of coupled elliptic, hyperbolic and parabolic PDEs. Currently
implemented models include phase field :cite:`BoettingerReview:2002`
:cite:`ChenReview:2002` :cite:`McFaddenReview:2002` treatments of polycrystalline,
dendritic, and electrochemical phase transformations, as well as drug
eluting stents :cite:`Saylor:2011p2794`, reactive wetting :cite:`PhysRevE.82.051601`,
photovoltaics :cite:`Hangarter:2011p2795` and a level set treatment of the
electrodeposition process :cite:`NIST:damascene:2001`.
.. only:: latex
The latest information about :term:`FiPy` can be found at
http://www.ctcms.nist.gov/fipy/.
---------------------------------
Even if you don't read manuals...
---------------------------------
...please read :ref:`INSTALLATION`, :ref:`USAGE` and :ref:`FAQ`, as well
as :mod:`examples.diffusion.mesh1D`.
--------------------------------
What's new in version |release|?
--------------------------------
The bump in major version number reflects more on the substantial increase
in capabilities and ease of use than it does on a break in compatibility
with FiPy 2.x. Few, if any, changes to your existing scripts should be
necessary.
The significant changes since version 2.1 are:
- :ref:`CoupledEquations` are now supported.
- A more robust mechanism for specifying :ref:`BoundaryConditions` is now
used.
- Most :class:`~fipy.meshes.mesh.Mesh`\es can be partitioned by
:ref:`MeshingWithGmsh`.
- :ref:`PYAMG` and :ref:`SCIPY` have been added to the :ref:`SOLVERS`.
- FiPy is capable of :ref:`RunningUnderPython3`.
- "getter" and "setter" methods have been pervasively changed to Python
properties.
- The test suite now runs much faster.
- Tests can now be run on a full install using `fipy.test()`.
- The functions of the :mod:`~fipy.tools.numerix` module are no longer
included in the :mod:`fipy` namespace. See :mod:`examples.updating.update2_0to3_0`
for details.
- Equations containing a :class:`~fipy.terms.transientTerm.TransientTerm`,
must specify the timestep by passing a ``dt=`` argument when calling
:meth:`~fipy.terms.term.Term.solve` or :meth:`~fipy.terms.term.Term.sweep`.
Tickets fixed in this release::
45 Navier Stokes
85 CellVariable hasOld() should set self.old
101 Grids should take Lx, Ly, Lz arguments
145 tests should be run with fipy.tests()
177 remove ones and zeros from numerix.py
178 Default time steps should be infinite
291 term multiplication changes result
296 FAQ gives bad guidance for anisotropic diffusion
297 Use physical velocity in the manual/FAQ
298 mesh manipulation of periodic meshes leads to errors
299 Give helpfull error on - or / of meshes
301 wrong cell to cell normal in periodic meshes
302 gnuplot1d gives error on plot of facevariable
309 pypi is failing
312 Fresh FiPy gives ""ImportError: No viewers found"""
314 Absence of enthought.tvtk causes test failures
319 mesh in FiPy name space
324 --pysparse configuration should never attempt MPI imports
327 factoryMeshes.py not up to date with respect to keyword arguments
331 changed constraints don't propagate
332 anisotropic diffusion and constraints don't mix
333 `--Trilinos --no-pysparse` uses PySparse?!?
336 Profile and merge reconstrain branch
339 close out reconstrain branch
341 Fix fipy.terms._BinaryTerm test failure in parallel
343 diffusionTerm(var=var1).solver(var=var0) should fail sensibly
346 TeX is wrong in examples.phase.quaternary
348 Include Benny's improved interpolation patch
354 GmshExport is not tested and does not work
355 Introduce mesh.x as shorthand for mesh.cellCenters[0] etc
356 GmshImport should support all element types
357 GmshImport should read element colors
363 Reduce the run times for chemotaxis tests
366 tests take *too* long!!!
369 Make DiffusionTermNoCorrection the default
370 Epetra Norm2 failure in parallel
373 remove deprecated `steps=` from Solver
376 remove deprecated `diffusionTerm=` argument to ConvectionTerm
377 remove deprecated `NthOrderDiffusionTerm`
380 remove deprecated Variable.transpose()
381 remove deprecated viewers.make()
382 get running in Py3k
384 gmsh importer and gmsh tests don't clean up after themselves
385 `diffusionTerm._test()` requires PySparse
390 Improve test reporting to avoid inconsequential buildbot failures
391 efficiency_test chokes on liquidVapor2D.py
393 two `--scipy` failures
395 `--pysparse --inline` failures
417 Memory consumption growth with repeated meshing, especially with Gmsh
418 Viewers not working when plotting meshes with zero cells in parallel
419 examples/cahnHilliard/mesh2D.py broken with --trilinos
420 Epetra.PyComm() broken on Debian
421 cellVariable.min() broken in parallel
426 Add in parallel buildbot testing on more than 2 processors
427 Slow PyAMG solutions
434 Gmsh I/O
438 changes to gmshImport.py caused --inline problems
439 gmshImport tests fail on Windows due to shared file
441 Explicit convetion terms should fail when the equation has no TransientTerm (dt=None)
445 getFaceCenters() should return a FaceVariable
446 constraining values with ImplictSourceTerm not documented?
448 Gmsh2D does not respect background mesh
452 Gmsh background mesh doesn't work in parallel
453 faceValue as FaceCenters gives inline failures
454 Py3k and Windows test failures
.. warning::
:term:`FiPy` 3 brought unavoidable syntax changes from :term:`FiPy` 2.
Please see :mod:`examples.updating.update2_0to3_0` for guidance on the
changes that you will need to make to your :term:`FiPy` 2.x scripts.
-------------------------
Download and Installation
-------------------------
Please refer to :ref:`INSTALLATION` for details on download and
installation. :term:`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 :term:`FiPy` developers and with other
users via our `mailing list`_ and we welcome you to use the `tracking
system`_ for bugs, support requests, feature requests and patch
submissions <http://matforge.org/fipy/report>. We also monitor
StackOverflow_ for questions tagged with "fipy". We welcome
collaborative efforts on this project.
:term:`FiPy` is a member of MatForge_, a project of the `Materials
Digital Library Pathway`_. This National Science Foundation funded
service provides management of our public source code repository, our
bug tracking system, and a "wiki" space for public contributions of
code snippets, discussions, and tutorials.
.. toctree::
documentation/MAIL
------------------------
Conventions and Notation
------------------------
:term:`FiPy` is driven by :term:`Python` script files than you can view or modify in any
text editor. :term:`FiPy` sessions are invoked from a command-line shell, such
as :command:`tcsh` or :command:`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 :term:`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 :term:`Python` command. The text "``...``" denotes the
*secondary prompt*, which calls for input that continues from the line
above, when required by :term:`Python` syntax. All remaining lines, which begin
at the left margin, denote output from the :term:`Python` interpreter. In all
cases, the prompt is supplied by the :term:`Python` interpreter and should not be
typed by you.
.. warning::
:term:`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 :term:`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 :term:`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.
.. _MML: http://www.nist.gov/mml/
.. _CTCMS: http://www.ctcms.nist.gov/
.. _MSED: http://www.nist.gov/mml/msed/
.. _NIST: http://www.nist.gov/
.. _compressed archive: http://www.ctcms.nist.gov/fipy/download/FiPy-1.1.tar.gz
.. _tracking system: http://matforge.org/fipy/report
.. _mailing list: http://www.ctcms.nist.gov/fipy/documentation/MAIL.html
.. _Sourceforge: http://www.sourceforge.net/projects/fipy
.. _Materials Digital Library Pathway: http://matdl.org
.. _MatForge: http://matforge.org/
.. _StackOverflow: http://stackoverflow.com/questions/tagged/fipy