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
RevLine 
[1844]1###################################
2ALL INFORMATION IS NOW IN TRAC
3DON'T EDIT THIS FILE ANYMORE
4###################################
5       
6       
[1572]7ANUGA Future Directions (2005-2006)
8
9
[1844]10
[1572]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
[1739]30Mesh generation: (Duncan)
[1572]31    Through graphical generator
32    Through scripts
33    Alternative triangulators (Strang, ?.)
34    alpha-shapes
[1739]35   
[1572]36
[1739]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
[1572]42
[1739]43Pmesh (Duncan)
44    - from pmesh issues file:
45        Main issues  (TBA) 
46     
[1815]47- Better API for handling (scripted) meshes:
[1739]48        *Error messages
49        *Refined regions should be specified easily
50        *Ways of handling different point sets (e.g. 10m, 100m, 250m)
[1778]51         and populate according to refinement of mesh
52         (wavelets or other adaptive method)
[1739]53         
54     
[1572]55Georeferencing
[1841]56  Code works in UTM coordinates. Zone boundaries cannot be crossed:
57  Introduce nonstandard central meridians if necessary
[1744]58 
[1572]59  Could code be cast in terms of lat/lons?
[1739]60  make sure that georeferencing is used consistently (domain, pmesh, sww files, ...) (Duncan) 
[1815]61  Test that least_squares (and elsewhere) correctly reconciles different georefs. (See Karratha)
[1572]62
[1739]63Least_squares, (Duncan)
64        use of quad-tree may not use all datapoints
[1823]65        (currently fixed by expand search, need algorithm for searching neighbouring treenodes) (TRAC)
[1572]66
67        Give feedback when
68                points outside mesh
[1744]69                mesh outside points boundary  !
[1739]70                if mesh is corrupted (see lwru2.py and create_mesh.py in debug dir)
[1823]71                if segments are repeated (maybe in mesh.check_integrity) (TRAC)   
[1572]72
[1823]73        use sparse matrix (CSR) format in "build_interpolation_matrix_A" (TRAC)
[1739]74       
[1823]75        simplify geo-referencing (make sure that coordinate changes 'change_points' are
76        used everywhere) (TRAC)
77       
78        memory issue: !  (TRAC)
[1739]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
[1823]84                    no alpha needed
[1739]85               
86               
[1815]87               
[1739]88refactor interpolate_sww in terms of Interpolation_function (Ole or Duncan)
[1572]89
[1739]90               
[1572]91Checkpointing (largely done but needs to be revisited)
92
[1815]93
[1572]94Ability to create additional quantities and initialise arbitrarily
95 
96FIXMEs (TBA)
97
98
[1739]99File management (msh, pts, dem, ..) - introduce the notion of a project
[1572]100
[1739]101Reduce # of methods that read/write sww files (Yes)
102
[1572]103 
104-----------------
105Efficiency issues
106
[1739]107Parallelisation (First cut is done)
[1572]108
109Edgefluxes are currently computed twice (f01 = -f10)
[1739]110(This has been fixed by Matt Hardy in June 2005)
[1572]111
112Increase Timesteps (Implicit techniques?)
113
[1739]114Optimise creation and importing of domains (C-code and caching)  (Ole)
[1827]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.
[1572]118
119
[1842]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.
[1827]122
[1842]123
124
[1572]125------------
126Architecture
127
[1823]128Settle dataflows and formats (pts, dem, msh, sww, etc) (Ole)
[1572]129 
[1682]130finaltime to be renamed duration
[1572]131
132
133----
134API:
135
136Suggestion for set_quantity
137      set_quantity(name, X, location, region)
[1616]138      where
139      name: Name of quantity
[1572]140      X:
[1617]141              -Compatible list,
[1616]142                -compatible list or numeric array,
143                -constant
[1682]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)
[1572]145                -callable object (f: x, y -> z) where x,y,z are arrays
146                        - inline
147                        - file functions
148                        - polygon functions
[1616]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?)
[1682]153                - pts filename (use LS and caching) (how to select attribute?)
[1572]154                - general expression to be parsed   
155
156        location: Where values are to be stored.
[1617]157                Permissible options are: vertices, edges, centroid, unique_vertices
[1572]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
[1739]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             
[1778]173        Largely done.
174        Should create class Point_set representing points and attribute(s)
[1788]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       
[1823]179        (IN TRAC now)
180       
[1778]181             
[1739]182           
[1572]183Making methods private, using _private
184Or write the API in a separate module.
185
186
[1815]187Introduce create_quantity in domain.py: (Ole)
[1750]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
[1572]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
[1574]204Finally, reconcile the optimised gradient limiter of Matt's with the more general framework
[1572]205
[1574]206
207
[1750]208
[1739]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)     
[1682]213
[1739]214Make Steve's new boundary spatially dependent (Ole)
215
[1690]216Look at matplotlib's verbosity object.
[1682]217
[1815]218
[1572]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
[1739]228Generally separate file_format stuff from functionality (and work with a small number of formats)
[1572]229
[1739]230
231Have a .tms format for straight timeseries, use sww for f(t,x,y).
[1815]232Modify Interpolation function and file_function accordingly. (Use lwru2.py as test bed) (Ole)
[1739]233
234
[1572]235-------------
236Visualisation
237
238Swollen:
239        Export to movie
240        Use maps
241        Colourcoding
242        z-scale
243
244Matplotlib:
[1816]245        Realtime and 'post mortem' generation of colour coded maps with         contourlines.
246        Also useful for graphs
[1572]247
248Visual Python:
249        Steves new and improved tool
250
251
[1739]252       
253-----------
254Installation and setup
[1572]255
[1739]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.
[1841]260  Currently it seems one needs a full setup to use pmesh
[1739]261
262 
[1572]263-----------
264Development
265
[1739]266Restructuring and moving svn repository (Ole)
[1572]267
[1841]268Flatten directory structure (Ole or DUncan)
[1572]269
270Apply buildbot
271
272Use real bugtracking/project management tool
273(see http://www.generalconcepts.com/resources/tracking, plone, basecamp,?
[1816]274Try out TRAC which integrates into subversion (Ole and Kat 27/7/5) - Done
[1572]275
276Zeus?
277
[1816]278Install Matplotlib on nautilus
[1572]279
[1816]280
281
[1572]282--------------
283Documentation
284
285Hire technical writer to produce
286- Getting started
287- User guide
[1739]288- Reference manual - semi automated
[1572]289
290Mathematical model description  (Steve & Chris)
291
292
293-----------------
294Validation and QA
295
296Merimbula (Steve & Chris)
297PNG Landslide study or watertank data (Adrian?)
298BOM
[1654]299SMEC (Lex)
300CSIRO (Kathy)
[1816]301Watertank study (Okushiri) (Ole) Done
[1654]302Macca...
[1572]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.