[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