source: inundation/wiki/future_directions.txt @ 1750

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

Work towards new set_quantity API

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