source: inundation/wiki/future_directions.txt @ 1778

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

Docu and planning

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