$Id: TODO,v 1.59 2007-05-23 15:35:33 geuzaine Exp $

********************************************************************

add cleanup fct to remove duplicate elements in
GModel->checkMeshCoherence

********************************************************************

add function to deform MESH with displacement post-pro view

********************************************************************

3D Delaunay: precompute non-connected volumes and apply algo to each
non-connected aggregate. This will improve mesh quality and speed for
close non-connected objects.

********************************************************************

right-clicking of the X/Y/Z fields in the bottom of the OpenGL could
have the same effect as shift-clicking.

********************************************************************

interface duplicate entity removal from opencascade

********************************************************************

add support for Patran mesh files

********************************************************************

reinterface Triangle for plane surfaces

********************************************************************

Bug: need to better understand how Netgen deals with charact. lengths:
a larger geometry (with appropriately scaled lcs) leads to a larger
mesh!

********************************************************************

interface GModel in surface creation in the parser

********************************************************************

add linear lc progression in 1D transfinite generator

********************************************************************

add parameter to geo transforms to copy the meshes--this would allow
us to do symmetries and periodic meshes

********************************************************************

add transformations on volumes

********************************************************************

when we mesh->edit->delete elements (or maybe when we save meshes)
we should delete any unused vertices [for akash]

********************************************************************

introduce Right/Left/Alternate for extruded meshes

********************************************************************

recode full-quad recombine algo + add full-hexa recombine by simply
doing barycentric subdivision on tets

********************************************************************

bug: quads orientation is wrong after recombine + quads wrong in some
cases

********************************************************************

recode BDS::extract edges

********************************************************************

recode BDS::remesh (for STL remeshing)

********************************************************************

create pyramids on quad surfaces inside unstructured volume before
tetrahedralizing (to enable hex/tet hybrid grids)

********************************************************************

physical groups->add->line/surface: pressing '-' after/while selecting 
a surface should add it with reverse orientation?

********************************************************************

fill transfinite_vertices in meshGFaceExtrude/meshGRegionExtrude when
it makes sense (so that we can use extruded+recombined surfaces to
create Transfinite Volumes, or use the P3D output format)

********************************************************************

parse CORDxx entries in Nastran files to get coordinate system
definitions and use them when reading GRID + parse GRIDxx for axisym
points

********************************************************************

add Mesh>Edit>Change orientation>Lines & Surfaces

********************************************************************

add option to fl_beep() when mesh is done

********************************************************************

add warning+error counter/buffer (display counter/buffer on Exit())

********************************************************************

implement better algo to determine which axes to draw
(cf. mathematica)

********************************************************************

extrude along a given function or along a parametric curve

********************************************************************

Custom range on "filled iso" 3D views produces ugly plots, where one
sees inside the cut elements. (In the meantime, one can use
Plugin(CutMap) with "ExtractVolume" set to 1 (or -1): this will
generate a new view with an actual "cut" on the front (an
"iso-volume"). Then one could use Plugin(Skin) to extract the outer
surface.)

********************************************************************

add a min_recursion option for adaptve views (to force at least a 
certain number of subdivisions)

********************************************************************

add option to cutmesh to cap the mesh instead of displaying "whole"
elements

********************************************************************

add option to draw "filled isos" using 1D textures?

********************************************************************

add GUI for translate+rotate extrusions and for mesh extrusion (layer
stuff)

********************************************************************

Labels:
- add dynamic variables? E.g., if a string contains %string.string,
replace it dynamically in Draw_Text2D/3D by calling
Get_OptionsCategory/Get_OptionValue. (provide a global option to
disable all replacements)
- position with the mouse
- select/move once positioned?
- add ability to add arrows

********************************************************************

Add a "bitmap" object in the views, e.g. to add a logo. Maybe would
be good enough to add another mode in the "background gradient" stuff
to display an image in the background

********************************************************************

Add a way to draw arrows in annotations?

********************************************************************

keep a table (stack) with the N last file positions when add_infile()
is called; we could then easily implement a simple (but real) UNDO
strategy

********************************************************************

template the view handling/drawing routines so that we can actually
use post-pro files with float values (50% file savings can be nice
for very large maps; would bring the format up to par with an 
index-based format)

********************************************************************

add/restore Parametric curve type (use MathEval!)

********************************************************************

add ternary operator and <,>,<=,>=,== tests in MathEval

********************************************************************

on Macs, datasets with a bounding box < 1.e-06 don't display properly
(probably because all the OpenGL stuff is done internally in single
precision...). Rescale?

********************************************************************

find a better way to display the time/timestep in the scale... (would
be solved if we had dynamic labels?)

********************************************************************

rewrite the View and ColorTable interface in C++

********************************************************************

post-processing file format:
- add an integer per simplex (region num)?
- add a format similar to the msh format (node list + simplex list)?
- add a structured format?
...or implement one of the "industry-standard" formats?

********************************************************************

create "Volume visualization" range type? (interpolate on regular grid
+ create cut planes // to viewpoint with transparency; can be done in
a straightforward way or using 3D textures)

********************************************************************

"first order" quad/hexa/prism/pyramid mesh visu can actually be wrong,
as we assume the faces are plane--which they don't have to be. We
should subdivide in 2 triangles. And remove the va_quad vertex array
altogether! (ps: should be careful about element boundary drawing;
should then be done like we do it for 2nd order elements)

********************************************************************

Yves Krahenbuhl wrote:

> Lors de la creation des elements du 2eme ordre, et selon la courbure
> du contour exterieur, le jacobien de l'element peut devenir negatif.
> Cependant le programme genere le maillage sans protester. Il
> faudrait peut-etre faire apparaitre un message d'erreurs / ou se
> restreindre (automatiquement ou non) a une interpolation lineaire
> entre les points en question.

********************************************************************

Pb avec View->Reload si plusieurs vues dans le meme fichier

> > Hmm, je viens de tester sous Linux et je n'arrive pas a reproduire le
> > bug. A moins que... Aurais-tu toutes tes vues stockees dans le meme
> > fichier ? Car 'reload' relit simplement le fichier duquel provient la
> > vue (et il le relit entierement).
> 
> Tout a fait, toutes les vues sont dans un fichier unique.

C'est de la que vient le probleme. Le 'reload' recharge en fait le
fichier duquel provient la vue, en *forcant* sa position dans la liste
des vues chargees. Si le fichier contient plusieurs vues, il va
recharger la premiere, lui affecter la position de celle que tu veux
recharger, puis la deuxieme, en lui affectant le meme position, et
ainsi de suite. Ca fait donc un supeeer memory leak : tu recharges
bien toutes les vues, mais tu ne sais acceder qu'a la derniere... Pour
corriger ca, il faudrait que l'on garde comme info supplementaire dans
chaque vue quelle etait sa position dans le fichier.
