[cig-commits] r11270 - in cs/benchmark/cigma/trunk: . scratch/cg src

luis at geodynamics.org luis at geodynamics.org
Wed Feb 27 04:58:36 PST 2008


Author: luis
Date: 2008-02-27 04:58:36 -0800 (Wed, 27 Feb 2008)
New Revision: 11270

Added:
   cs/benchmark/cigma/trunk/scratch/cg/TODO
   cs/benchmark/cigma/trunk/src/TODO
Modified:
   cs/benchmark/cigma/trunk/TODO
Log:
Updated TODO files


Modified: cs/benchmark/cigma/trunk/TODO
===================================================================
--- cs/benchmark/cigma/trunk/TODO	2008-02-27 12:58:33 UTC (rev 11269)
+++ cs/benchmark/cigma/trunk/TODO	2008-02-27 12:58:36 UTC (rev 11270)
@@ -3,6 +3,7 @@
 Debug the crash in ~QuadraturePoints() destructor  -- (who is managing the data?)
 Switch to boost's smart_ptr, shared_ptr, weak_ptr for managing most array allocs/refs
 Add extent[6] member variable to MeshPart class (bounding box)
+Add configure flag --with-boost
 
 ---normal---------------------------------------------------------------------
 Write TestVtkXmlReader.cpp test case to make sure it works fine

Added: cs/benchmark/cigma/trunk/scratch/cg/TODO
===================================================================
--- cs/benchmark/cigma/trunk/scratch/cg/TODO	                        (rev 0)
+++ cs/benchmark/cigma/trunk/scratch/cg/TODO	2008-02-27 12:58:36 UTC (rev 11270)
@@ -0,0 +1,292 @@
+---normal-tasks---------------------------------------------------------------
+
+Implement the objects summarized in the notes below...
+
+
+---cg-objects-----------------------------------------------------------------
+
+Dataset -- array of (int, long, float, double) plus shape information -- use boost::shared_ptr and boost::weak_ptr
+Workspace -- collection of datasets
+VtkPipeline -- virtual class with 'void render(vtkRenderer*)' method
+
+
+---qt4-editors----------------------------------------------------------------
+
+Arrays should be represented by a table view widget
+Single values should be represented by a line edit widget
+Hierarchies should be represented by a tree view widget
+
+CellEditor
+    cellid -- workspace identifier for this cell
+    celltype -- tri3, quad4, tet4, hex8,
+    celldim -- can be either 2d or 3d depending on the cell type
+    (nno,celldim) -- shape of refverts array
+    (nno,3) -- shape of vertices array
+    refverts -- node vertices in reference coordinate system (stored in contiguous format)
+
+RuleEditor
+    ruleid -- workspace identifier for this quadrature rule
+    celltype -- conforming cell (tri3, ...)
+    (npts, dim) -- shape of points array
+    points -- quadrature point coordinates stored in contiguous format
+    weights -- array of npts elements
+
+MeshPartEditor
+    meshid -- workspace identifier for this mesh object
+    gridtype -- unstructured grid, structured grid, rectilinear grid
+    (nno,nsd) -- shape of coordinates array
+    (nel,ndofs) -- shape of connectivity array
+    unstructured grid table view
+        coords -- node coordinates
+        connect -- cell connectivity
+    structured grid
+        dims[3] -- dimensions along ijk directions
+        extent[6] -- bounding box coords in xyz order
+    rectilinear grid
+        dims[3] -- dimensions along ijk directions
+        xcoords -- array of x-coordinates
+        ycoords -- array of y-coordinates
+        zcoords -- array of z-coordinates
+
+
+FeFieldEditor
+    (dof_nno, dof_dim) -- shape for dofhandler dataset
+    dofhandler -- dataset for dofs
+    meshpart -- corresponding mesh part
+
+SelectMeshCell
+    meshpart -- selected mesh part
+    vertices -- vertices in global coordinate system (loaded from mesh -- stored in contiguous format)
+    
+SelectPoints
+    points -- array
+
+
+---qt4-dataset-table-view-----------------------------------------------------
+
+DatasetTableModel -- models access to dataset object
+DatasetTableView -- displays contents of dataset object
+
++---+--------------------------------------+
+| n |  x           y           z           |  node coordinates (points)
++---+--------------------------------------+
+| 0 |  0.00677301  0.00637808  0.00602881  |
+| 1 |  0.00659948  0.00621467  0.03149426  |
+| 2 |  0.00629476  0.00592772  0.07621362  |
+| 3 |  0.00587125  0.0055289   0.13836653  |
+|...|  ...                                 |
++---+--------------------------------------+
+
+
++-------+---------------------------------+
+|   e   |  n[0]    n[1]    n[2]    n[3]   |  connectivity for tet4 cells
++-------+---------------------------------+
+| ..... |  .....                          |
+| 49511 |  29888   27486   29839   29838  |
+| 49512 |  25102   25052   22700   25053  |
+| 49513 |  25053   25052   25003   27453  |
+| 49514 |  25051   25001   22649   25002  |
+| ..... |  .....                          |
++-------+---------------------------------+
+
++------+----------------------------------------------------------------+
+|  e   |  n[0]    n[1]    n[2]    n[3]    n[4]    n[5]    n[6]    n[7]  |  connectivity for hex8 cells
++------+----------------------------------------------------------------+
+| .... |  ....                                                          |
+| 2608 |  3240    3241    3228    3227    3071    3072    3059    3058  |
+| 2609 |  3241    3242    3229    3228    3072    3073    3060    3059  |
+| 2610 |  3242    3243    3230    3229    3073    3074    3061    3060  |
+| 2611 |  3243    3244    3231    3230    3074    3075    3062    3061  |
+| .... |  ....                                                          |
++------+----------------------------------------------------------------+
+
+
++---+--------------+
+| n |  d           | nodal degrees of freedom (scalar)
++---+--------------+
+| 0 |  3.00677301  |
+| 1 |  3.00659948  |
+| 2 |  3.00629476  |
+| 3 |  3.00587125  |
+|...|  ...         |
++---+--------------+
+
++---+--------------------------------------+
+| n |  d_x         d_y         d_z         | nodal degrees of freedom (vector)
++---+--------------------------------------+
+| 0 |  3.00677301  3.00637808  3.00602881  |
+| 1 |  3.00659948  3.00621467  3.03149426  |
+| 2 |  3.00629476  3.00592772  3.07621362  |
+| 3 |  3.00587125  3.0055289   3.13836653  |
+|...|  ...                                 |
++---+--------------------------------------+
+
+
++---+--------------+
+| n |  phi         | scalar function values at each point
++---+--------------+
+| 0 |  5.00677301  |
+| 1 |  5.00659948  |
+| 2 |  5.00629476  |
+| 3 |  5.00587125  |
+|...|  ...         |
++---+--------------+
+
++---+--------------------------------------+
+| n |  phi_x       phi_y       phi_z       | vector function values at each point
++---+--------------------------------------+
+| 0 |  5.00677301  5.00637808  5.00602881  |
+| 1 |  5.00659948  5.00621467  5.03149426  |
+| 2 |  5.00629476  5.00592772  5.07621362  |
+| 3 |  5.00587125  5.0055289   5.13836653  |
+|...|  ...                                 |
++---+--------------------------------------+
+
+
+---qt4-dataset-tree-view------------------------------------------------------
+
+FileTree -- display a collection of FileNodes
+FileNode -- represents a file (NODE_HDF5_FILE, NODE_VTK_FILE), and acts as container for GroupNodes
+GroupNode -- container for DataNodes or other GroupNodes
+DatasetNode -- wraps a pointer to a dataset (int, double, or float arrays)
+
+file.h5
+ |-- mesh
+ |   |-- [coordinates]
+ |   |-- [connectivity]
+ |   |-- part00
+ |   |   `-- [connectivity]
+ |   |-- part01
+ |   |   `-- [connectivity]
+ |   `-- ...
+ |-- variables
+ |   |-- temperature
+ |   |   `-- step
+ |   |       |-- [0000]
+ |   |       |-- [0001]
+ |   |       |-- [0002]
+ |   |       `-- ...
+ |   |-- displacement
+ |   |   `-- step
+ |   |       |-- [0000]
+ |   |       |-- [0001]
+ |   |       |-- [0002]
+ |   |       `-- ...
+ |   |-- velocity
+ |   |   `-- step
+ |   |       |-- [0000]
+ |   |       |-- [0001]
+ |   |       |-- [0002]
+ |   |       `-- ...
+ |   ` ...
+ |-- pointdata
+ |   |-- analytic_disloc3d_displacements
+ |   |   |-- [coordinates]
+ |   |   |-- displacements
+ |   |   |   `-- step
+ |   |   |       |-- [0000]
+ |   |   |       |-- [0001]
+ |   |   |       |-- [0002]
+ |   |   |       `-- ...
+ |   |   |-- velocities
+ |   |   |   `-- step
+ |   |   |       |-- [0000]
+ |   |   |       |-- [0001]
+ |   |   |       |-- [0002]
+ |   |   |       `-- ...
+ |   |   `-- ..
+ |   ` ...
+ |-- celldata
+ |   |-- displacement_residuals_a0500m_b0250m
+ |   |   `-- step
+ |   |       |-- [0000]
+ |   |       |-- [0001]
+ |   |       |-- [0002]
+ |   |       `-- ...
+ |   |-- displacement_residuals_a0250m_b0250m
+ |   |   `-- step
+ |   |       |-- [0000]
+ |   |       |-- [0001]
+ |   |       |-- [0002]
+ |   |       `-- ...
+ |   ` ...
+ `-- ...
+  
+file.vtk
+ |-- Points
+ |   `-- [coordinates]
+ |-- Cells
+ |   `-- [connectivity]
+ |-- PointData
+ |   |-- Scalars
+ |   |   |-- [temperature_t0000]
+ |   |   |-- [temperature_t0001]
+ |   |   |-- [temperature_t0002]
+ |   |   `-- ...
+ |   |-- Vectors
+ |   |   |-- [displacements_t0000]
+ |   |   |-- [displacements_t0001]
+ |   |   |-- [displacements_t0002]
+ |   |   `-- ...
+ |   `-- Tensors
+ |       `-- ...
+ |-- CellData
+ |   |-- Scalars
+ |   |   |-- [displacement_residuals_t0000]
+ |   |   |-- [displacement_residuals_t0001]
+ |   |   |-- [displacement_residuals_t0002]
+ |   |   `-- ...
+ |   |-- Vectors
+ |   |   |-- [displacement_pointwise_diff_t0000]
+ |   |   |-- [displacement_pointwise_diff_t0001]
+ |   |   |-- [displacement_pointwise_diff_t0002]
+ |   |   `-- ...
+ |   `-- Tensors
+ |       `-- ...
+ `...
+
+
+---vtk-pipelines--------------------------------------------------------------
+
+Design all these pipelines using VTK Designer 2
+
+How to compose these pipeline objects?
+How to delete a pipeline from the renderer?
+How to update source data in pipeline?
+
+Implement following RenderFoo functions as FooPipeline objects
+
+RenderHexahedron
+RenderTetrahedron
+RenderTriangle
+RenderQuadrangle
+
+RenderMeshPart  -- render entire mesh
+RenderElementPatch -- render local view of MeshPart
+
+Generic filters
+    Outline filter (draws bounding box)
+    Warp scalar (perturbs original mesh based on scalar values)
+    Warp vector (perturbs original mesh based on vector displacements)
+    Threshold (extracts cells based on scalar value range)
+
+Probes
+    line probe
+    spline probe
+    plane widget probe
+
+Pipelines for scalar point data
+    Surface maps
+    Contour surfaces
+    Volume rendering
+
+Pipelines for vector data
+    Glyphs on every node point
+    Glyphs on a given set of points
+    Hedgehog
+    Streamlines
+    
+Pipelines for tensor data
+    tensor glyphs
+    hyperstreamlines
+

Added: cs/benchmark/cigma/trunk/src/TODO
===================================================================
--- cs/benchmark/cigma/trunk/src/TODO	                        (rev 0)
+++ cs/benchmark/cigma/trunk/src/TODO	2008-02-27 12:58:36 UTC (rev 11270)
@@ -0,0 +1,206 @@
+---high-----------------------------------------------------------------------
+
+Refactor common functions into VtkReader
+Create VtkLegacyReader & VtkXmlReader subclasses of VtkReader
+
+Change points->num to points->npts
+Rename ResidualField to Residuals
+Rename Quadrature to QuadraturePoints
+Rename FE to FE_QR (since we subclassed QuadratureRule)
+    consists of:
+        a mesh to integrate over
+        a set of quadrature points for each cell type
+        a function to integrate
+
+Possible signatures
+    compare(Field, Field)
+    compare(PointField, Field)
+    compare(FE_Field, Field)
+    compare(FE_Field, QuadraturePoints)
+    compare(FE_Field, PointField)
+
+Detect --version in CommandSet::main(), like we do with --help
+Add --debug flag to Command class, to enable debug messages
+
+Remove initialize(MeshPart*) method from Locator class
+Rename AnnLocator to AnnCellLocator
+Create AnnPointLocator class
+
+Copy every VTK class necessary for I/O into own vtkio library
+
+Fix compiler warnings when running make
+
+Add --mesh-locator-option
+Change reader->open() to return error code
+Fix reader->close() -- wtf is wrong with vtk?
+Disable HDF5 traceback
+Assimilate functions from h5io into cigma I/O classes
+LoopTimer class (override << operator)
+PointValueField (implement eval() by picking value at nearest point)
+Compile ANN library with float coords (instead of double coords)
+Write UPDATE_FLOPS macro to keep track of number of floating point operations (global variable) -- add special configure flag
+Implement autoheader's HAVE_VTK_H for compiling vtk classes conditionally
+
+Command line behavior
+    When the --output option is not specified, the default output filename should be "comparison.vtk".
+    If the file "comparison.vtk" already exists, emit error explaining that a file with the default output filename
+    already exists, and that the user should specify the output filename through the --output option
+
+Work on the compare() main loops
+    eval, eval          -- looping over different meshes        (get rid of current ineficiency where we tabulate and still call eval)
+    tabulate, eval      -- looping over first field's mesh
+    tabulate, tabulate  -- looping over shared mesh
+
+add PointField class (from a cloud of points, interpolate an (x,y,z) to the value of the nearest neighbor point)
+    call it PointValueField (better name for this?)
+
+
+add "-Wl,--rpath -Wl,$HDF5_PREFIX/lib" flags to linker step
+    that way you don't add the path to LD_LIBRARY_PATH any more
+
+manual:
+    explain vtk input
+    explain vtk pipeline for visualization
+
+work on fiatproxy
+    helper script to dump desired .py module into a global const char[] array
+    load module from string (conditionally)
+
+work on ann indexing
+    subclass from Locator class
+
+generalize VtkReader
+work on TestHdfReader and TestHdfWriter
+delete VtkUgReader (replaced by VtkReader)
+delete VtkUgSimpleWriter (replaced by VtkWriter)
+
+vtkls
+vtktoh5
+txttoh5
+
+qt examples
+
+implement stuff from CommandUtils.cpp in Misc.cpp
+
+add enumeration types for subclasses of Reader/Writer
+    question to investigate: is RTTI a better approach here?
+
+Create Connectivity class (follow connectivity in vtk) -- necessary?
+    pro: we can reuse connectivity void pointer from vtk object...saving a lot of memory on large meshes
+    con: need to provide own indexing operations to skip first element
+    con: reading from hdf5 file becomes more complicated (need to read into a memory slice)
+
+Add ListCmd for examining data files (replacing vtkls and company...)
+    # for hdf5 format, have flags to include/exclude attribute data
+    # for vtk, have flags to display the vtk header
+    # for txt, make sure to skip comment lines at beginning of file
+    cigma list file.h5
+    cigma list file.vtk
+    cigma list dataset.txt
+
+Add MakeGroupCmd for creating groups recursively
+    cigma make-group file.h5:/path/to/some/possibly/non-existent/group
+
+Add ConvertCmd for converting entire hdf5 files to vtk files and viceversa
+    cigma convert file.vtk file.h5
+    cigma convert file.h5 file.vtk
+
+Add CopyCmd for importing/exporting datasets from txt,vtk,h5 formats
+    cigma copy <source-path> <destination-path>
+
+    # moving data from textfile to hdf5 file
+    cigma copy data.txt file.h5:/path/to/dataset
+
+    # dumpy data from hdf5 file to textfile
+    cigma copy file.h5:/path/to/dataset data.txt
+
+    # fail when moving data to vtk? (load into proper object, then save object to file...)
+    cigma copy file.h5:/path/to/dataset foo.vtk:dataset_name
+
+Add DumpCmd for dumping (slices?) of any hdf5/vtk dataset to a text file
+    CopyCmd alternative: Use - as an alias for stdout/stdin instead of implementing DumpCmd
+
+Add SetCmd/GetCmd/DelCmd for setting/getting/deleting attribute data on hdf5 objects
+    Keep in mind limit on metadata size (emit error or just a truncation warning if using --force cmdline argument)
+    Use string type by default (could also use)
+    cigma set --name=attribute-name --type=string --value=attribute-value --target=file.h5:/path/to/object
+
+    cigma del --name=attribute-name
+
+Add ProjectCmd for evaluating first order elements (equivalent to eval on the node points, for linear elts)
+
+Update CommandSet code to allow command aliases and a fixed sort order when displaying the help commands
+    keep list of aliases in Command object (initialized in constructor, along with the command's name, as before)
+    e.g.: mv => move, cp => copy, ls => list
+
+Update CommandSet to display the help commands in the order they were added
+    in corresponding set-method insert name into a sortOrder vector before inserting object into hash
+
+Downgrade cube command to its own executable?
+    problem: we to generate sample meshes for 3d,2d,1d (cube, square, and interval....i.e., not just a cube)
+    rename this command to something else? (e.g. cigma example [...args...])
+        cigma example --cube
+        cigma example --square
+        cigma example --interval
+        cigma example --nsd=3
+
+Fix ExternalField to load functions using dlopen/LoadLibrary/WhateverMacUsesToLoadSharedLibs into an appropriate Field class with callbacks
+Provide a directory location where people can add their own precompiled analytic fields
+
+Work on TestCell.cpp (testing Cell, Tet, & Hex objects)
+Create TestCell.vtk with sample data
+
+Write VtkMeshPart class (loads from VtkFile)
+Work on VtkMeshPart::find_cell(double *pts, int *e)
+
+Decide whether to split FiatProxy object
+    monkey-patch the modules to import fiatwrappers from a big string
+
+Write QuadratureRule virtual class
+Write MeshPart virtual class
+
+Write DofHandler class (done?)
+
+Write FEValues class (union of QuadratureRule & Cell) -- (called it FE instead...done?)
+
+Create Cell::Shape enumeration      (values: CELL_TRI, CELL_QUAD, CELL_TET, CELL_HEX, ...)
+Create Cell::FiatShape enumeration  (reuse Cell::ShapeType as above?)
+Create Cell::VtkShape enumeration   (accounting for quadratic elements?)
+
+---normal---------------------------------------------------------------------
+
+Python wrappers around the relevant C++ code
+
+Work on FiatProxy (use as namespace for python module)
+Work on FiatQuadrature class (uses FiatProxy class to communicate with fiat python module)
+Work on FiatTabulation class (uses FiatProxy)
+
+Work on FE_Field class (union of MeshPart & DofHandler)
+
+Work on hdf.m4
+Work on HdfMeshPart (using h5io as template)
+Decide whether to create a BaseMeshPart abstract class
+
+Replace cigma::Points by blitz::Array
+
+---low------------------------------------------------------------------------
+
+Implement "cigma version" or "cigma --version"
+Eliminate tabulation from Cell object (move this responsibility to FEValues) (done)
+
+Add functions from vtk.m4 to configure.ac
+Work on cigma::VtkCell classes (delegating work to vtk)
+Work on TestVtkCell.cpp
+
+Work on VtkSgReader, VtkSgXmlReader, VtkUgXmlReader (need VtkReader base class?)
+
+Repositories for cigma-portal / cigma-qt?
+
+
+---done-----------------------------------------------------------------------
+
+Split DataIO classes into readers and writers
+Start infrastructure for running commands
+Eliminated template MeshPart<CoordType,IndexType> for (double,int)
+
+



More information about the cig-commits mailing list