1 | ----------- |
---|
2 | Future Work |
---|
3 | ----------- |
---|
4 | |
---|
5 | Long term Goals |
---|
6 | --------------- |
---|
7 | |
---|
8 | - Turn off sourceforge tracker |
---|
9 | |
---|
10 | - Different tracker items in Trac |
---|
11 | |
---|
12 | - Tarball of the repository |
---|
13 | |
---|
14 | - Get a decent dendritic simulation working. Figure out why out dendrite doesn't look |
---|
15 | as cool as Jim's. Why do we have thin little arms and interface splitting? |
---|
16 | |
---|
17 | - Allow some keyword parameters to be passed to the plot() methods of viewers |
---|
18 | |
---|
19 | - Update Mayavi viewers to use TVTK (much better according to Prabhu) instead of PyVTK. |
---|
20 | Should be able to remove all uses of PyVTK. |
---|
21 | |
---|
22 | - Add axi-symmetric test case |
---|
23 | |
---|
24 | - Add dendrite pic |
---|
25 | |
---|
26 | - include dophyn comparison in efficiency discussion |
---|
27 | |
---|
28 | - multipy a term by a CellVariable or constant. |
---|
29 | |
---|
30 | - Boundary conditions should be able to take CellVariables or FaceVariables as values and pull out the correct values. |
---|
31 | |
---|
32 | - Level set |
---|
33 | |
---|
34 | * refactor to use basic types, make level set code work independently of FiPy |
---|
35 | * unstructured grids |
---|
36 | * 3D grids |
---|
37 | * input files should not refer to equation objects |
---|
38 | * Superfill manual |
---|
39 | |
---|
40 | - other stuff |
---|
41 | |
---|
42 | * clean up variable-vector-numerix-physicalfield interactions |
---|
43 | |
---|
44 | - merge fipy.tools.variable into numerix. |
---|
45 | - merge phsycial field and variable |
---|
46 | - get rid of most references to Numeric function in the code |
---|
47 | - maybe even get rid of many explicit calls to Numeric function calls in numerix. |
---|
48 | |
---|
49 | * e.g. looks in numerix, no sin function |
---|
50 | * numerix then passes Numeric's sin function to Variable's apply method and hey presto |
---|
51 | a new variable is returned. Sounds like science fiction...... |
---|
52 | * is there a way to do this automagically??? (using __array__ or something) |
---|
53 | |
---|
54 | - Definetly most of these functions need not be in Variable and numerix |
---|
55 | |
---|
56 | * Reduce run time |
---|
57 | |
---|
58 | - Choose external references |
---|
59 | |
---|
60 | * Ryo's code |
---|
61 | * Spectral MATLAB CH problem |
---|
62 | * DOLFIN (has similar python objects) |
---|
63 | * Dolfyn |
---|
64 | |
---|
65 | - Functionlity |
---|
66 | |
---|
67 | * Flow solver using Dolfyn comparison |
---|
68 | |
---|
69 | - Get better results compared with Dolfyn |
---|
70 | |
---|
71 | * Higher order Implicit Diffusion |
---|
72 | * Higher order explicit diffusion |
---|
73 | * Wall boundary condition |
---|
74 | * Improved mass flux evaluation |
---|
75 | * Extrapolation of cell values to boundaries using gradients |
---|
76 | |
---|
77 | - Add convection term to Navier-Stokes and compare with Dolfyn |
---|
78 | - Add transient term and compare with Dolfyn |
---|
79 | - Efficieny tests of Dolfyn against FiPy |
---|
80 | |
---|
81 | - Implement some PETC solvers |
---|
82 | |
---|
83 | - Investiagte using VISION for some simple FiPy examples. |
---|
84 | |
---|
85 | - Improve BC doc, make clear no internal BCs |
---|
86 | |
---|
87 | - The reference manual should have a 'returns' section similar to 'parameters' for methods and functions. |
---|
88 | |
---|
89 | - Include some examples on the web page. |
---|
90 | |
---|
91 | - Dimensions are semi-broken, e.g., |
---|
92 | examples/elphf/diffusion/input1Ddimensional.py |
---|
93 | Also, numerix inverse trig operations should return an angular |
---|
94 | quantity, rather than a raw number. |
---|
95 | |
---|
96 | - Automatic conversion of dimensionless PhysicalField to simple |
---|
97 | number or array should be done in `__array__` method, not in |
---|
98 | `__mul__` and __div__. |
---|
99 | |
---|
100 | - make ConvectionTerm -> BaseConvectionTerm, PowerLawConvectionTerm -> ConvectionTerm |
---|
101 | |
---|
102 | - make eqns auto generate their Peclet numbers |
---|
103 | |
---|
104 | - Documentation: |
---|
105 | |
---|
106 | * Examples: |
---|
107 | |
---|
108 | - 1000*1000 example for efficiency discussion. |
---|
109 | |
---|
110 | - Distribution |
---|
111 | |
---|
112 | * freeze or py2exe for CEAC stand-alone |
---|
113 | |
---|
114 | - viewer? GPL or GLL for gnuplot? |
---|
115 | |
---|
116 | - Functionality: |
---|
117 | |
---|
118 | * Multigrid method. |
---|
119 | * Cell centered FVM. |
---|
120 | * Multilevel preconditioners |
---|
121 | * Adaptive meshing. |
---|
122 | * Linear Algebra: |
---|
123 | |
---|
124 | - Petc. |
---|
125 | - SciPy. |
---|
126 | - matpy |
---|
127 | |
---|
128 | * Look into pyrex as an alternative to inlining. |
---|
129 | * Laminar Fluid Flow module. |
---|
130 | * DX viewer. |
---|
131 | * Pass ``PhysicalField`` back to `Konrad Hinsen`_. |
---|
132 | * Found group of solvers from sandia called Trilionos |
---|
133 | http://software.sandia.gov/trilinos |
---|
134 | * As a stop gap measure for 4th and 6th order terms, |
---|
135 | find an implementation of incomplete cholesky factorization. |
---|
136 | |
---|
137 | - Refactoring: |
---|
138 | |
---|
139 | * Use an array module rather than Numeric and switch to numarray. |
---|
140 | |
---|
141 | * Global approach to phase field equations. |
---|
142 | |
---|
143 | * Make the ``build_docs`` just update the files that have changed since |
---|
144 | the last build. |
---|
145 | |
---|
146 | * Merge ``term`` and ``equation`` objects into one object: |
---|
147 | |
---|
148 | - Boundary conditions should just be terms. |
---|
149 | |
---|
150 | * Reconcile variable operators and terms |
---|
151 | |
---|
152 | - Apply boundary conditions to variables instead of terms |
---|
153 | - Equations should be stated in terms of variable operators. |
---|
154 | - For example a DiffusionTerm is represented by var.getGrad().getDiv() |
---|
155 | - getGrad() and getDiv() should calculate matrices and then use the matrices |
---|
156 | either as part of the solution scheme or explicitly if one just requires the value. |
---|
157 | - The convection term would have a special operator |
---|
158 | - One problem is that terms are really volume integrals while operators |
---|
159 | are just differences. Thus all operators would be volume integrals |
---|
160 | and then divide through be the volume when asked by getValue() |
---|
161 | - The first step would be to make operators use the terms to evaluate themselves. |
---|
162 | i.e.:: |
---|
163 | |
---|
164 | DivGradVariable(CellVariable): |
---|
165 | def __init__(self, var) |
---|
166 | self.var = var |
---|
167 | self.matrix = ImplicitDiffusionTerm.getMatrix() |
---|
168 | |
---|
169 | def getMatrix(self, ...): |
---|
170 | return self.matrix |
---|
171 | |
---|
172 | def getValue(self) |
---|
173 | return ImplicitDiffusionTerm.getMatrix() * self.var.getValue() / self.mesh.getCellVolumes() |
---|
174 | |
---|
175 | - Next step would be to move the terms to the operator variables. |
---|
176 | - We are now moving terms into variables and that may have hidden benefits. |
---|
177 | - This philosophy should apply to all terms including transient terms. |
---|
178 | - Basicly terms are being abandoned in favor of variable objects. |
---|
179 | |
---|
180 | * Use ``doctest`` exclusively. |
---|
181 | |
---|
182 | * Major mesh refactor: |
---|
183 | |
---|
184 | - Remove separate ``nummesh`` and ``pymesh`` structure |
---|
185 | - Think about the ``mesh`` hierarchy as it stands: |
---|
186 | |
---|
187 | * Many branches at present. |
---|
188 | * Consolidate functionality (``__add__`` etc). |
---|
189 | * How does Gmsh fit in? |
---|
190 | |
---|
191 | - Lazy mesh array evaluations. |
---|
192 | - support for meshes in higher spaces. |
---|
193 | |
---|
194 | * Viewers: |
---|
195 | |
---|
196 | - Use viewers in scipy that are similar to gist and remove gist (?). |
---|
197 | |
---|
198 | - Documentation: |
---|
199 | |
---|
200 | * Write a paper on FiPy. |
---|
201 | * Better documentation in Reference.pdf |
---|
202 | |
---|
203 | - Efficiency |
---|
204 | |
---|
205 | * Automatic inlining |
---|
206 | * Cache mesh calculations |
---|
207 | * Caching/building sparse matrices? |
---|
208 | * NthOrderDiffusionTerm |
---|
209 | |
---|
210 | - recursive stencil vs. recursive matrix? |
---|
211 | - special case lower orders? |
---|
212 | - compare/merge n=2 to ImplicitDiffusionTerm |
---|
213 | |
---|
214 | * Track down general inefficiencies |
---|
215 | |
---|
216 | - len(get.xxx()) vs. getNumXXX() |
---|
217 | - array conversions |
---|
218 | |
---|
219 | * SciPy linear algebra vs. PySparse |
---|
220 | |
---|
221 | - solution efficiency |
---|
222 | - matrix manipulation efficiency |
---|
223 | |
---|
224 | * NumArray vs Numeric |
---|
225 | |
---|
226 | - encapsulate array class |
---|
227 | |
---|
228 | .. _SourceForge CVS repository: http://www.nist.gov/cgi-bin/exit_nist.cgi?url=http://cvs.sourceforge.net/viewcvs.py/fipy/ |
---|
229 | .. _Steve: mailto:slanger@nist.gov |
---|
230 | .. _Konrad Hinsen: mailto:hinsen@cnrs-orleans.fr |
---|
231 | .. _Roman Geus: http://www.nist.gov/cgi-bin/exit_nist.cgi?url=http://people.web.psi.ch/geus/ |
---|
232 | |
---|