source: inundation/wiki/future_directions.txt @ 1739

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

Recovered comments from 18 Aug

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