source: inundation/wiki/future_directions.txt @ 2113

Last change on this file since 2113 was 1844, checked in by ole, 19 years ago

Moved everything into TRAC

File size: 8.7 KB
Line 
1###################################
2ALL INFORMATION IS NOW IN TRAC
3DON'T EDIT THIS FILE ANYMORE
4###################################
5       
6       
7ANUGA Future Directions (2005-2006)
8
9
10
11--------------------------------------------------
12Draft of known issues regarding the ANUGA software
13--------------------------------------------------
14
15
16----------------
17Numerical issues
18
19CFL condition (centroid-midpt distances versus inscribed circle ? or error estimator)
20Gradient limiters
21Forcing terms:
22    Friction of Mud
23    Viscosity
24
25
26
27--------------------
28Functionality issues
29
30Mesh generation: (Duncan)
31    Through graphical generator
32    Through scripts
33    Alternative triangulators (Strang, ?.)
34    alpha-shapes
35   
36
37   refactoring triangle interface
38   outputting a "triangle" readable file (from pmesh?)
39   
40   simple method in mesh factory that will convert regularly gridded data to mesh using
41   points as vertices
42
43Pmesh (Duncan)
44    - from pmesh issues file:
45        Main issues  (TBA) 
46     
47- Better API for handling (scripted) meshes:
48        *Error messages
49        *Refined regions should be specified easily
50        *Ways of handling different point sets (e.g. 10m, 100m, 250m)
51         and populate according to refinement of mesh
52         (wavelets or other adaptive method)
53         
54     
55Georeferencing
56  Code works in UTM coordinates. Zone boundaries cannot be crossed:
57  Introduce nonstandard central meridians if necessary
58 
59  Could code be cast in terms of lat/lons?
60  make sure that georeferencing is used consistently (domain, pmesh, sww files, ...) (Duncan) 
61  Test that least_squares (and elsewhere) correctly reconciles different georefs. (See Karratha)
62
63Least_squares, (Duncan)
64        use of quad-tree may not use all datapoints
65        (currently fixed by expand search, need algorithm for searching neighbouring treenodes) (TRAC)
66
67        Give feedback when
68                points outside mesh
69                mesh outside points boundary  !
70                if mesh is corrupted (see lwru2.py and create_mesh.py in debug dir)
71                if segments are repeated (maybe in mesh.check_integrity) (TRAC)   
72
73        use sparse matrix (CSR) format in "build_interpolation_matrix_A" (TRAC)
74       
75        simplify geo-referencing (make sure that coordinate changes 'change_points' are
76        used everywhere) (TRAC)
77       
78        memory issue: !  (TRAC)
79                If LS is used for fitting
80                    compute self.Atz and self AtA directly and avoid self.A.
81                    need alpha
82                If LS is to be used for interpolation
83                    compute self.A
84                    no alpha needed
85               
86               
87               
88refactor interpolate_sww in terms of Interpolation_function (Ole or Duncan)
89
90               
91Checkpointing (largely done but needs to be revisited)
92
93
94Ability to create additional quantities and initialise arbitrarily
95 
96FIXMEs (TBA)
97
98
99File management (msh, pts, dem, ..) - introduce the notion of a project
100
101Reduce # of methods that read/write sww files (Yes)
102
103 
104-----------------
105Efficiency issues
106
107Parallelisation (First cut is done)
108
109Edgefluxes are currently computed twice (f01 = -f10)
110(This has been fixed by Matt Hardy in June 2005)
111
112Increase Timesteps (Implicit techniques?)
113
114Optimise creation and importing of domains (C-code and caching)  (Ole)
115Caching needs optional arguments: bypass_args and bypass_kwargs.
116These should be passed onto the function when it is evaluated but not participate in the hashing.
117Rationale: Some arguments such as classes change their signature at every run and thus cause the functin to be evaluated every time, defeating the purpose of caching.
118
119
120NetCDF can't deal with files > 2GB except on cyclone.
121It is possible to write netCDF files that exceed 2 GiByte on platforms that have "Large File Support" (LFS). Such files are platform-independent to other LFS platforms, but trying to open them on an older platform without LFS yields a "file too large" error.
122
123
124
125------------
126Architecture
127
128Settle dataflows and formats (pts, dem, msh, sww, etc) (Ole)
129 
130finaltime to be renamed duration
131
132
133----
134API:
135
136Suggestion for set_quantity
137      set_quantity(name, X, location, region)
138      where
139      name: Name of quantity
140      X:
141              -Compatible list,
142                -compatible list or numeric array,
143                -constant
144                -list of points or array with attribute values (use LS) (How to distinguish this from a numeric array? - perhaps use keyword arguments for everything)
145                -callable object (f: x, y -> z) where x,y,z are arrays
146                        - inline
147                        - file functions
148                        - polygon functions
149                -another quantity Q or an expression of the form
150                   a*Q+b*R+c, where       
151                   a,b,c are scalars, arrays or quantities
152                   Q,R are quantities (or 1?)
153                - pts filename (use LS and caching) (how to select attribute?)
154                - general expression to be parsed   
155
156        location: Where values are to be stored.
157                Permissible options are: vertices, edges, centroid, unique_vertices
158        region: Identify subset of triangles. Permissible values are
159                  - tag name (refers to tagged region)
160                    - indices (refers to specific triangles)
161                    - polygon (identifies region)
162                (incorporate uniqueness/non-uniqueness)
163           
164
165        IDEA for set_quantity:
166              Use keywords and call underlying specific method, e.g.
167             
168              if filename is not None:
169                 vertex_values = caching( fitfunc, filename, dependencies = ...)
170                 set_quantity(..., ..., vertex_values)
171              elif:
172             
173        Largely done.
174        Should create class Point_set representing points and attribute(s)
175        Include filename too? Yep (and selected attributes)
176        This could also facilitate use of multiple point sources
177        (e.g. at different resolutions)
178       
179        (IN TRAC now)
180       
181             
182           
183Making methods private, using _private
184Or write the API in a separate module.
185
186
187Introduce create_quantity in domain.py: (Ole)
188  It will make a new named instance and populate it by calling set_quantity
189  if desired.
190  Create_quantity would be called automatically by shallow_water.         
191 
192
193Make stage appear as any other quantity:
194Either
195   1: Make stage a subclass of quantity having knowledge of elevation and a special 
196       limiter (or more limiters)
197Or
198   2: Equip each quantity with a limiter class
199      (Con: A limiter for stage should never be applied to any other quantity)
200
201
202Also, investigate if Quantity and Conserved_quantity should be one class (Steve).
203
204Finally, reconcile the optimised gradient limiter of Matt's with the more general framework
205
206
207
208
209Boundary (Dirichlet): Think about specifying values by quantity name (and having defaults)
210     Dirichlet(stage = 1.0, ymomentum = 0.2)
211     
212Finish MOST2SWW with bathymetry(Trevor)     
213
214Make Steve's new boundary spatially dependent (Ole)
215
216Look at matplotlib's verbosity object.
217
218
219------
220Other:
221
222Should we remove Python code superseded by C-extensions?
223  Pros:   Leaner code and no risk
224  Cons:  Less readable algorithms
225
226Move py code into files such as quantity_ext.py and have python wrappers with doc strings for all functions. Name the code in extensions _ext and conditional import as usual.
227
228Generally separate file_format stuff from functionality (and work with a small number of formats)
229
230
231Have a .tms format for straight timeseries, use sww for f(t,x,y).
232Modify Interpolation function and file_function accordingly. (Use lwru2.py as test bed) (Ole)
233
234
235-------------
236Visualisation
237
238Swollen:
239        Export to movie
240        Use maps
241        Colourcoding
242        z-scale
243
244Matplotlib:
245        Realtime and 'post mortem' generation of colour coded maps with         contourlines.
246        Also useful for graphs
247
248Visual Python:
249        Steves new and improved tool
250
251
252       
253-----------
254Installation and setup
255
256- Assume that root dir for AnuGA is on Pythonpath. That way the same code can work with
257  sandpits and final installation
258- need installers for all modules       
259- pmesh needs a compile.py that will compile triangle whan used from a sandpit.
260  Currently it seems one needs a full setup to use pmesh
261
262 
263-----------
264Development
265
266Restructuring and moving svn repository (Ole)
267
268Flatten directory structure (Ole or DUncan)
269
270Apply buildbot
271
272Use real bugtracking/project management tool
273(see http://www.generalconcepts.com/resources/tracking, plone, basecamp,?
274Try out TRAC which integrates into subversion (Ole and Kat 27/7/5) - Done
275
276Zeus?
277
278Install Matplotlib on nautilus
279
280
281
282--------------
283Documentation
284
285Hire technical writer to produce
286- Getting started
287- User guide
288- Reference manual - semi automated
289
290Mathematical model description  (Steve & Chris)
291
292
293-----------------
294Validation and QA
295
296Merimbula (Steve & Chris)
297PNG Landslide study or watertank data (Adrian?)
298BOM
299SMEC (Lex)
300CSIRO (Kathy)
301Watertank study (Okushiri) (Ole) Done
302Macca...
303
304
305--------
306Naming
307
308The collection as well as individual modules may benefit from better names.
309
310
311--------
312Release
313
314Search for appropriate procedure for OSS release (Ole is onto that with AGIMO)
315
316
317
Note: See TracBrowser for help on using the repository browser.