[cig-commits] r6565 - in short/3D/PyLith/trunk/unittests/libtests/meshio: . data

brad at geodynamics.org brad at geodynamics.org
Fri Apr 13 11:44:49 PDT 2007


Author: brad
Date: 2007-04-13 11:44:49 -0700 (Fri, 13 Apr 2007)
New Revision: 6565

Modified:
   short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.hh
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.cc
   short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.hh
Log:
Updated MeshIO tests to include tests on groups of vertices and cells.

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestMeshIO.cc	2007-04-13 18:44:49 UTC (rev 6565)
@@ -20,6 +20,9 @@
 
 #include "data/MeshData.hh"
 
+#include <strings.h> // USES strcasecmp()
+#include <stdexcept> // USES std::logic_error
+
 // ----------------------------------------------------------------------
 // Get simple mesh for testing I/O.
 ALE::Obj<ALE::Mesh>*
@@ -28,45 +31,68 @@
   // buildTopology() requires zero based index
   CPPUNIT_ASSERT(true == data.useIndexZero);
 
-  const int cellDim = data.cellDim;
-  const int numCorners = data.numCorners;
-  const int spaceDim = data.spaceDim;
-  const int numVertices = data.numVertices;
-  const int numCells = data.numCells;
-  const double* vertCoords = data.vertices;
-  const int* cells = data.cells;
-  const int* materialIds = data.materialIds;
-  CPPUNIT_ASSERT(0 != vertCoords);
-  CPPUNIT_ASSERT(0 != cells);
-  CPPUNIT_ASSERT(0 != materialIds);
+  CPPUNIT_ASSERT(0 != data.vertices);
+  CPPUNIT_ASSERT(0 != data.cells);
+  CPPUNIT_ASSERT(0 != data.materialIds);
+  if (data.numGroups > 0) {
+    CPPUNIT_ASSERT(0 != data.groups);
+    CPPUNIT_ASSERT(0 != data.groupSizes);
+    CPPUNIT_ASSERT(0 != data.groupNames);
+    CPPUNIT_ASSERT(0 != data.groupTypes);
+  } // if
 
-  ALE::Obj<Mesh>* meshHandle = new ALE::Obj<Mesh>;
-  *meshHandle = new Mesh(PETSC_COMM_WORLD, cellDim);
-  ALE::Obj<Mesh> mesh = *meshHandle;
-  mesh.addRef();
-  ALE::Obj<sieve_type> sieve = new sieve_type(mesh->comm());
+  ALE::Obj<Mesh>* mesh = new ALE::Obj<Mesh>;
+  CPPUNIT_ASSERT(0 != mesh);
+  *mesh = new Mesh(PETSC_COMM_WORLD, data.cellDim);
+  CPPUNIT_ASSERT(!mesh->isNull());
+  ALE::Obj<sieve_type> sieve = new sieve_type((*mesh)->comm());
+  CPPUNIT_ASSERT(!sieve.isNull());
 
+  // Cells and vertices
   const bool interpolate = false;
-  ALE::SieveBuilder<Mesh>::buildTopology(sieve, cellDim, numCells,
-					 const_cast<int*>(cells), numVertices,
-					 interpolate, numCorners);
-  mesh->setSieve(sieve);
-  mesh->stratify();
-  ALE::SieveBuilder<Mesh>::buildCoordinates(mesh, spaceDim, vertCoords);
+  ALE::SieveBuilder<Mesh>::buildTopology(sieve, data.cellDim, data.numCells,
+			      const_cast<int*>(data.cells), data.numVertices,
+					 interpolate, data.numCorners);
+  (*mesh)->setSieve(sieve);
+  (*mesh)->stratify();
+  ALE::SieveBuilder<Mesh>::buildCoordinates(*mesh, data.spaceDim, 
+					    data.vertices);
 
-  const ALE::Obj<Mesh::label_sequence>& cellsMesh = mesh->heightStratum(0);
-
+  // Material ids
+  const ALE::Obj<Mesh::label_sequence>& cells = (*mesh)->heightStratum(0);
+  CPPUNIT_ASSERT(!cells.isNull());
   const ALE::Obj<Mesh::label_type>& labelMaterials = 
-    mesh->createLabel("material-id");
-  
+    (*mesh)->createLabel("material-id");
+  CPPUNIT_ASSERT(!labelMaterials.isNull());
   int i = 0;
-  for(Mesh::label_sequence::iterator e_iter = 
-	cellsMesh->begin();
-      e_iter != cellsMesh->end();
+  for(Mesh::label_sequence::iterator e_iter=cells->begin(); 
+      e_iter != cells->end();
       ++e_iter)
-    mesh->setValue(labelMaterials, *e_iter, materialIds[i++]);
+    (*mesh)->setValue(labelMaterials, *e_iter, data.materialIds[i++]);
 
-  return meshHandle;
+  // Groups
+  for (int iGroup=0, index=0; iGroup < data.numGroups; ++iGroup) {
+    const ALE::Obj<int_section_type>& groupField = 
+      (*mesh)->getIntSection(data.groupNames[iGroup]);
+    CPPUNIT_ASSERT(!groupField.isNull());
+
+    MeshIO::GroupPtType type;
+    const int numPoints = data.groupSizes[iGroup];
+    if (0 == strcasecmp("cell", data.groupTypes[iGroup])) {
+      type = MeshIO::CELL;
+      for(int i=0; i < numPoints; ++i)
+	groupField->setFiberDimension(data.groups[index++], 1);
+    } else if (0 == strcasecmp("vertex", data.groupTypes[iGroup])) {
+      type = MeshIO::VERTEX;
+      const int numCells = (*mesh)->heightStratum(0)->size();
+      for(int i=0; i < numPoints; ++i)
+	groupField->setFiberDimension(data.groups[index++]+numCells, 1);
+    } else
+      throw std::logic_error("Could not parse group type.");
+    (*mesh)->allocate(groupField);
+  } // for
+
+  return mesh;
 } // createMesh
 
 // ----------------------------------------------------------------------
@@ -136,7 +162,6 @@
   const ALE::Obj<Mesh::label_type>& labelMaterials = 
     mesh->getLabel("material-id");
   const int idDefault = -999;
-
   const int size = numCells;
   int_array materialIds(size);
   i = 0;
@@ -148,7 +173,43 @@
   for (int iCell=0; iCell < numCells; ++iCell)
     CPPUNIT_ASSERT_EQUAL(data.materialIds[iCell], materialIds[iCell]);
 
-  // :TODO: Check groups of vertices
+  // Check groups
+  const ALE::Obj<std::set<std::string> >& groupNames = 
+    mesh->getIntSections();
+  int iGroup = 0;
+  int index = 0;
+  for (std::set<std::string>::const_iterator name=groupNames->begin();
+       name != groupNames->end();
+       ++name, ++iGroup) {
+    const ALE::Obj<int_section_type>& groupField = mesh->getIntSection(*name);
+    CPPUNIT_ASSERT(!groupField.isNull());
+    const int_section_type::chart_type& chart = groupField->getChart();
+    const Mesh::point_type firstPoint = *chart.begin();
+    ALE::Obj<Mesh::numbering_type> numbering;
+    std::string groupType = "";
+    if (mesh->height(firstPoint) == 0) {
+      groupType = "cell";
+      numbering = mesh->getFactory()->getNumbering(mesh, mesh->depth());
+    } else {
+      groupType = "vertex";
+      numbering = mesh->getFactory()->getNumbering(mesh, 0);
+    } // if/else
+    const int numPoints = chart.size();
+    int_array points(numPoints);
+    int i = 0;
+    for(int_section_type::chart_type::iterator c_iter = chart.begin();
+	c_iter != chart.end();
+	++c_iter) {
+      CPPUNIT_ASSERT(!numbering.isNull());
+      points[i++] = numbering->getIndex(*c_iter);
+    } // for
+    
+    CPPUNIT_ASSERT_EQUAL(std::string(data.groupNames[iGroup]), *name);
+    CPPUNIT_ASSERT_EQUAL(std::string(data.groupTypes[iGroup]), groupType);
+    CPPUNIT_ASSERT_EQUAL(data.groupSizes[iGroup], numPoints);
+    for (int i=0; i < numPoints; ++i)
+      CPPUNIT_ASSERT_EQUAL(data.groups[index++], points[i]);
+  } // for
 } // checkVals
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.cc	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.cc	2007-04-13 18:44:49 UTC (rev 6565)
@@ -23,6 +23,11 @@
   vertices(0),
   cells(0),
   materialIds(0),
+  groups(0),
+  groupSizes(0),
+  groupNames(0),
+  groupTypes(0),
+  numGroups(0),
   useIndexZero(true)
 { // constructor
 } // constructor
@@ -33,4 +38,5 @@
 { // destructor
 } // destructor
 
+
 // End of file

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.hh	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData.hh	2007-04-13 18:44:49 UTC (rev 6565)
@@ -44,11 +44,14 @@
   int* cells; ///< Pointer to indices of vertices in cells
   int* materialIds; ///< Pointer to cell material identifiers
 
+  int* groups; ///< Array of pointers to indices of points in groups
+  int* groupSizes; ///< Array of sizes of each group
+  char** groupNames; ///< Array of group names
+  char** groupTypes; ///< Array of group types
+  int numGroups; ///< Number of groups
+
   bool useIndexZero; ///< Indices start with 0 if true, 1 if false
 
-  // :TODO:
-  // Add groups of vertices
-
 };
 
 #endif // pylith_meshio_meshdata_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.cc	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.cc	2007-04-13 18:44:49 UTC (rev 6565)
@@ -37,6 +37,25 @@
   2,  1
 };
 
+const int pylith::meshio::MeshData1D::_numGroups = 3;
+
+const int pylith::meshio::MeshData1D::_groupSizes[] = 
+  { 1, 1, 2 };
+
+const int pylith::meshio::MeshData1D::_groups[] = {
+  1,
+  0,
+  0, 1
+};
+
+const char* pylith::meshio::MeshData1D::_groupNames[] = {
+  "group A", "group B", "group C"
+};
+
+const char* pylith::meshio::MeshData1D::_groupTypes[] = {
+  "vertex", "cell", "vertex"
+};
+
 const bool pylith::meshio::MeshData1D::_useIndexZero = true;
 
 pylith::meshio::MeshData1D::MeshData1D(void)
@@ -49,6 +68,11 @@
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
+  groups = const_cast<int*>(_groups);
+  groupSizes = const_cast<int*>(_groupSizes);
+  groupNames = const_cast<char**>(_groupNames);
+  groupTypes = const_cast<char**>(_groupTypes);
+  numGroups = _numGroups;
   useIndexZero = _useIndexZero;
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.hh	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1D.hh	2007-04-13 18:44:49 UTC (rev 6565)
@@ -46,6 +46,12 @@
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 
+  static const int _groups[]; ///< Groups of points
+  static const int _groupSizes[]; ///< Sizes of groups
+  static const char* _groupNames[]; ///< Array of group names
+  static const char* _groupTypes[]; ///< Array of group types
+  static const int _numGroups; ///< Number of groups
+
   static const bool _useIndexZero; ///< First vertex is 0 if true, 1 if false
 
 };

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.cc	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.cc	2007-04-13 18:44:49 UTC (rev 6565)
@@ -38,6 +38,24 @@
   1, 0, 1
 };
 
+const int pylith::meshio::MeshData1Din2D::_numGroups = 2;
+
+const int pylith::meshio::MeshData1Din2D::_groupSizes[] = 
+  { 2, 3 };
+
+const int pylith::meshio::MeshData1Din2D::_groups[] = {
+  0, 2,
+  0, 1, 3
+};
+
+const char* pylith::meshio::MeshData1Din2D::_groupNames[] = {
+  "group A", "group B"
+};
+
+const char* pylith::meshio::MeshData1Din2D::_groupTypes[] = {
+  "cell", "vertex"
+};
+
 const bool pylith::meshio::MeshData1Din2D::_useIndexZero = true;
 
 pylith::meshio::MeshData1Din2D::MeshData1Din2D(void)
@@ -50,6 +68,11 @@
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
+  groups = const_cast<int*>(_groups);
+  groupSizes = const_cast<int*>(_groupSizes);
+  groupNames = const_cast<char**>(_groupNames);
+  groupTypes = const_cast<char**>(_groupTypes);
+  numGroups = _numGroups;
   useIndexZero = _useIndexZero;
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.hh	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din2D.hh	2007-04-13 18:44:49 UTC (rev 6565)
@@ -46,6 +46,12 @@
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 
+  static const int _groups[]; ///< Groups of points
+  static const int _groupSizes[]; ///< Sizes of groups
+  static const char* _groupNames[]; ///< Array of group names
+  static const char* _groupTypes[]; ///< Array of group types
+  static const int _numGroups; ///< Number of groups
+
   static const bool _useIndexZero; ///< First vertex is 0 if true, 1 if false
 
 };

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.cc	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.cc	2007-04-13 18:44:49 UTC (rev 6565)
@@ -38,6 +38,24 @@
   1, 1, 0
 };
 
+const int pylith::meshio::MeshData1Din3D::_numGroups = 2;
+
+const int pylith::meshio::MeshData1Din3D::_groupSizes[] = 
+  { 1, 1 };
+
+const int pylith::meshio::MeshData1Din3D::_groups[] = {
+  2,
+  1
+};
+
+const char* pylith::meshio::MeshData1Din3D::_groupNames[] = {
+  "group A", "group B"
+};
+
+const char* pylith::meshio::MeshData1Din3D::_groupTypes[] = {
+  "vertex", "cell"
+};
+
 const bool pylith::meshio::MeshData1Din3D::_useIndexZero = true;
 
 pylith::meshio::MeshData1Din3D::MeshData1Din3D(void)
@@ -50,6 +68,11 @@
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
+  groups = const_cast<int*>(_groups);
+  groupSizes = const_cast<int*>(_groupSizes);
+  groupNames = const_cast<char**>(_groupNames);
+  groupTypes = const_cast<char**>(_groupTypes);
+  numGroups = _numGroups;
   useIndexZero = _useIndexZero;
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.hh	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData1Din3D.hh	2007-04-13 18:44:49 UTC (rev 6565)
@@ -46,6 +46,12 @@
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 
+  static const int _groups[]; ///< Groups of points
+  static const int _groupSizes[]; ///< Sizes of groups
+  static const char* _groupNames[]; ///< Array of group names
+  static const char* _groupTypes[]; ///< Array of group types
+  static const int _numGroups; ///< Number of groups
+
   static const bool _useIndexZero; ///< First vertex is 0 if true, 1 if false
 
 };

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.cc	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.cc	2007-04-13 18:44:49 UTC (rev 6565)
@@ -43,6 +43,25 @@
   1, 0, 1
 };
 
+const int pylith::meshio::MeshData2D::_numGroups = 3;
+
+const int pylith::meshio::MeshData2D::_groupSizes[] = 
+  { 5, 3, 2 };
+
+const int pylith::meshio::MeshData2D::_groups[] = {
+  0, 2, 4, 6, 8,
+  1, 4, 7,
+  0, 2
+};
+
+const char* pylith::meshio::MeshData2D::_groupNames[] = {
+  "group A", "group B", "group C"
+};
+
+const char* pylith::meshio::MeshData2D::_groupTypes[] = {
+  "vertex", "vertex", "cell"
+};
+
 const bool pylith::meshio::MeshData2D::_useIndexZero = true;
 
 pylith::meshio::MeshData2D::MeshData2D(void)
@@ -55,6 +74,11 @@
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
+  groups = const_cast<int*>(_groups);
+  groupSizes = const_cast<int*>(_groupSizes);
+  groupNames = const_cast<char**>(_groupNames);
+  groupTypes = const_cast<char**>(_groupTypes);
+  numGroups = _numGroups;
   useIndexZero = _useIndexZero;
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.hh	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2D.hh	2007-04-13 18:44:49 UTC (rev 6565)
@@ -46,6 +46,12 @@
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 
+  static const int _groups[]; ///< Groups of points
+  static const int _groupSizes[]; ///< Sizes of groups
+  static const char* _groupNames[]; ///< Array of group names
+  static const char* _groupTypes[]; ///< Array of group types
+  static const int _numGroups; ///< Number of groups
+
   static const bool _useIndexZero; ///< First vertex is 0 if true, 1 if false
 
 };

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.cc	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.cc	2007-04-13 18:44:49 UTC (rev 6565)
@@ -43,6 +43,23 @@
   0, 1, 0
 };
 
+const int pylith::meshio::MeshData2Din3D::_numGroups = 1;
+
+const int pylith::meshio::MeshData2Din3D::_groupSizes[] = 
+  { 3 };
+
+const int pylith::meshio::MeshData2Din3D::_groups[] = {
+  0, 3, 6
+};
+
+const char* pylith::meshio::MeshData2Din3D::_groupNames[] = {
+  "group A"
+};
+
+const char* pylith::meshio::MeshData2Din3D::_groupTypes[] = {
+  "vertex"
+};
+
 const bool pylith::meshio::MeshData2Din3D::_useIndexZero = true;
 
 pylith::meshio::MeshData2Din3D::MeshData2Din3D(void)
@@ -55,6 +72,11 @@
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
+  groups = const_cast<int*>(_groups);
+  groupSizes = const_cast<int*>(_groupSizes);
+  groupNames = const_cast<char**>(_groupNames);
+  groupTypes = const_cast<char**>(_groupTypes);
+  numGroups = _numGroups;
   useIndexZero = _useIndexZero;
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.hh	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData2Din3D.hh	2007-04-13 18:44:49 UTC (rev 6565)
@@ -46,6 +46,12 @@
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 
+  static const int _groups[]; ///< Groups of points
+  static const int _groupSizes[]; ///< Sizes of groups
+  static const char* _groupNames[]; ///< Array of group names
+  static const char* _groupTypes[]; ///< Array of group types
+  static const int _numGroups; ///< Number of groups
+
   static const bool _useIndexZero; ///< First vertex is 0 if true, 1 if false
 
 };

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.cc	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.cc	2007-04-13 18:44:49 UTC (rev 6565)
@@ -47,6 +47,25 @@
   1, 0
 };
 
+const int pylith::meshio::MeshData3D::_numGroups = 2;
+
+const int pylith::meshio::MeshData3D::_groupSizes[] = 
+  { 5, 2, 4 };
+
+const int pylith::meshio::MeshData3D::_groups[] = {
+  0, 4, 6, 7, 10,
+  0, 1,
+  0, 4, 12, 13
+};
+
+const char* pylith::meshio::MeshData3D::_groupNames[] = {
+  "group A", "group B", "group C"
+};
+
+const char* pylith::meshio::MeshData3D::_groupTypes[] = {
+  "vertex", "cell", "vertex"
+};
+
 const bool pylith::meshio::MeshData3D::_useIndexZero = true;
 
 pylith::meshio::MeshData3D::MeshData3D(void)
@@ -59,6 +78,11 @@
   vertices = const_cast<double*>(_vertices);
   cells = const_cast<int*>(_cells);
   materialIds = const_cast<int*>(_materialIds);
+  groups = const_cast<int*>(_groups);
+  groupSizes = const_cast<int*>(_groupSizes);
+  groupNames = const_cast<char**>(_groupNames);
+  groupTypes = const_cast<char**>(_groupTypes);
+  numGroups = _numGroups;
   useIndexZero = _useIndexZero;
 } // constructor
 

Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.hh	2007-04-13 16:11:03 UTC (rev 6564)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/MeshData3D.hh	2007-04-13 18:44:49 UTC (rev 6565)
@@ -46,6 +46,12 @@
   static const int _cells[]; ///< Pointer to indices of vertices in cells
   static const int _materialIds[]; ///< Pointer to cell material identifiers
 
+  static const int _groups[]; ///< Groups of points
+  static const int _groupSizes[]; ///< Sizes of groups
+  static const char* _groupNames[]; ///< Array of group names
+  static const char* _groupTypes[]; ///< Array of group types
+  static const int _numGroups; ///< Number of groups
+
   static const bool _useIndexZero; ///< First vertex is 0 if true, 1 if false
 
 };



More information about the cig-commits mailing list