[cig-commits] r17954 - in short/3D/PyLith/branches/pylith-scecdynrup: . doc/developer libsrc/faults libsrc/meshio libsrc/topology libsrc/utils pylith/feassemble unittests/libtests/faults unittests/libtests/feassemble unittests/libtests/meshio unittests/libtests/topology unittests/pytests/feassemble

brad at geodynamics.org brad at geodynamics.org
Tue Feb 22 21:45:14 PST 2011


Author: brad
Date: 2011-02-22 21:45:13 -0800 (Tue, 22 Feb 2011)
New Revision: 17954

Modified:
   short/3D/PyLith/branches/pylith-scecdynrup/TODO
   short/3D/PyLith/branches/pylith-scecdynrup/doc/developer/howto_mergefromstable.txt
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/CohesiveTopology.cc
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/CohesiveTopology.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesive.cc
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesive.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesiveDyn.cc
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesiveLagrange.cc
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/TopologyOps.cc
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/TopologyOps.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/MeshBuilder.cc
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/MeshBuilder.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/UCDFaultFile.cc
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/UCDFaultFile.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/Mesh.cc
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/Mesh.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshOrder.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshRefiner.cc
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshRefiner.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineEdges2.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineFace4Edges2.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineVol8Face4Edges2.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/topologyfwd.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/utils/sievefwd.hh
   short/3D/PyLith/branches/pylith-scecdynrup/libsrc/utils/sievetypes.hh
   short/3D/PyLith/branches/pylith-scecdynrup/pylith/feassemble/FIATLagrange.py
   short/3D/PyLith/branches/pylith-scecdynrup/pylith/feassemble/FIATSimplex.py
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestBruneSlipFn.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestConstRateSlipFn.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestEqKinSrc.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestLiuCosSlipFn.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestStepSlipFn.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestTimeHistorySlipFn.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicit.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityImplicit.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestQuadrature.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/meshio/TestMeshIO.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestFieldMesh.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestFieldSubMesh.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestSubMesh.cc
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/pytests/feassemble/TestFIATLagrange.py
   short/3D/PyLith/branches/pylith-scecdynrup/unittests/pytests/feassemble/TestFIATSimplex.py
Log:
Merge from trunk.

Modified: short/3D/PyLith/branches/pylith-scecdynrup/TODO
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/TODO	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/TODO	2011-02-23 05:45:13 UTC (rev 17954)
@@ -2,6 +2,8 @@
 CURRENT ISSUES/PRIORITIES (1.6.0)
 ======================================================================
 
+* Check for FIAT during configure.
+
 * GenMaxwellQpQs
 
   How to define viscosity and combinations?????

Modified: short/3D/PyLith/branches/pylith-scecdynrup/doc/developer/howto_mergefromstable.txt
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/doc/developer/howto_mergefromstable.txt	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/doc/developer/howto_mergefromstable.txt	2011-02-23 05:45:13 UTC (rev 17954)
@@ -8,3 +8,13 @@
 
 # Merge from stable branch.
 svn merge -r REV_FROM_LAST_MERGE:HEAD svn+ssh://svn@geodynamics.org/cig/short/3D/PyLith/branches/v1.5-stable .
+
+
+
+
+# ======================================================================
+# Create patch to merge trunk back to branch.
+# in trunk
+svn diff -r REVISION > rNUM.diff
+# in stable
+patch -p0 < ../pylith/rNUM.diff

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/CohesiveTopology.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/CohesiveTopology.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -41,7 +41,7 @@
 // ----------------------------------------------------------------------
 void
 pylith::faults::CohesiveTopology::createFault(topology::SubMesh* faultMesh,
-                                              ALE::Obj<ALE::Mesh>& faultBoundary,
+                                              ALE::Obj<FlexMesh>& faultBoundary,
                                               const topology::Mesh& mesh,
                                               const ALE::Obj<topology::Mesh::IntSection>& groupField,
 					      const bool flipFault)
@@ -66,11 +66,11 @@
   const ALE::Obj<SieveSubMesh::sieve_type> ifaultSieve = 
     new SieveMesh::sieve_type(sieve->comm(), sieve->debug());
   assert(!ifaultSieve.isNull());
-  ALE::Obj<ALE::Mesh> fault =
-    new ALE::Mesh(mesh.comm(), mesh.dimension()-1, mesh.debug());
+  ALE::Obj<FlexMesh> fault =
+    new FlexMesh(mesh.comm(), mesh.dimension()-1, mesh.debug());
   assert(!fault.isNull());
-  ALE::Obj<ALE::Mesh::sieve_type> faultSieve  =
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<FlexMesh::sieve_type> faultSieve  =
+    new FlexMesh::sieve_type(sieve->comm(), sieve->debug());
   assert(!faultSieve.isNull());
   const int debug = mesh.debug();
 
@@ -105,7 +105,7 @@
   if (debug)
     fault->view("Fault mesh");
 
-  faultBoundary = ALE::Selection<ALE::Mesh>::boundary(fault);
+  faultBoundary = ALE::Selection<FlexMesh>::boundary(fault);
   if (debug)
     faultBoundary->view("Fault boundary mesh");
 
@@ -126,7 +126,7 @@
 void
 pylith::faults::CohesiveTopology::create(topology::Mesh* mesh,
                                          const topology::SubMesh& faultMesh,
-                                         const ALE::Obj<ALE::Mesh>& faultBoundary,
+                                         const ALE::Obj<FlexMesh>& faultBoundary,
                                          const ALE::Obj<topology::Mesh::IntSection>& groupField,
                                          const int materialId,
                                          int& firstFaultVertex,
@@ -138,8 +138,8 @@
   assert(!faultBoundary.isNull());
   assert(!groupField.isNull());
 
-  typedef ALE::SieveAlg<ALE::Mesh> sieveAlg;
-  typedef ALE::Selection<ALE::Mesh> selection;
+  typedef ALE::SieveAlg<FlexMesh> sieveAlg;
+  typedef ALE::Selection<FlexMesh> selection;
 
   // Memory logging
   ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
@@ -260,7 +260,7 @@
   assert(!faces.isNull());
   const SieveSubMesh::label_sequence::const_iterator facesBegin = faces->begin();
   const SieveSubMesh::label_sequence::const_iterator facesEnd = faces->end();
-  const ALE::Obj<Mesh::label_type>& material = 
+  const ALE::Obj<SieveFlexMesh::label_type>& material = 
     sieveMesh->getLabel("material-id");
   assert(!material.isNull());
   const int firstCohesiveCell = firstFaultCell;
@@ -269,7 +269,7 @@
   TopologyOps::PointSet replaceVertices;
   ALE::ISieveVisitor::PointRetriever<SieveMesh::sieve_type> sV2(std::max(1, ifaultSieve->getMaxSupportSize()));
   ALE::ISieveVisitor::NConeRetriever<SieveMesh::sieve_type> cV2(*ifaultSieve, (size_t) pow(std::max(1, ifaultSieve->getMaxConeSize()), faultSieveMesh->depth()));
-  std::set<Mesh::point_type> faceSet;
+  std::set<SieveFlexMesh::point_type> faceSet;
 
   for(SieveSubMesh::label_sequence::iterator f_iter = facesBegin;
       f_iter != facesEnd;
@@ -303,7 +303,7 @@
       std::cout << "  firstCohesiveCell " << firstCohesiveCell << " firstFaultCell " 
 		<< firstFaultCell << " numFaces " << faces->size() << std::endl;
       std::cout << "  faceSet:" << std::endl;
-      for(std::set<Mesh::point_type>::const_iterator p_iter = faceSet.begin();
+      for(std::set<SieveFlexMesh::point_type>::const_iterator p_iter = faceSet.begin();
 	  p_iter != faceSet.end();
 	  ++p_iter) {
         std::cout << "    " << *p_iter << std::endl;
@@ -424,7 +424,7 @@
   // This completes the set of cells scheduled to be replaced
   TopologyOps::PointSet replaceCellsBase(replaceCells);
 
-  const ALE::Obj<ALE::Mesh::label_sequence>& faultBdVerts =
+  const ALE::Obj<FlexMesh::label_sequence>& faultBdVerts =
     faultBoundary->depthStratum(0);
   assert(!faultBdVerts.isNull());
   TopologyOps::PointSet faultBdVertices;
@@ -571,7 +571,7 @@
       } // if/else
     } // if/else
   } // for
-  ReplaceVisitor<SieveMesh::sieve_type,std::map<Mesh::point_type,Mesh::point_type> > rVc(vertexRenumber, std::max(1, sieve->getMaxConeSize()), debug);
+  ReplaceVisitor<SieveMesh::sieve_type,std::map<SieveMesh::point_type,SieveMesh::point_type> > rVc(vertexRenumber, std::max(1, sieve->getMaxConeSize()), debug);
   
   rCellsEnd = replaceCells.end();
   for (TopologyOps::PointSet::const_iterator c_iter = replaceCells.begin();
@@ -585,7 +585,7 @@
     } // if
     rVc.clear();
   } // for
-  ReplaceVisitor<SieveMesh::sieve_type,std::map<Mesh::point_type,Mesh::point_type> > rVs(cellRenumber, std::max(1, sieve->getMaxSupportSize()), debug);
+  ReplaceVisitor<SieveMesh::sieve_type,std::map<SieveMesh::point_type,SieveMesh::point_type> > rVs(cellRenumber, std::max(1, sieve->getMaxSupportSize()), debug);
 
   rVerticesEnd = replaceVertices.end();
   for (TopologyOps::PointSet::const_iterator v_iter = replaceVertices.begin();
@@ -614,13 +614,13 @@
   const std::string labelName("censored depth");
 
   if (!sieveMesh->hasLabel(labelName)) {
-    const ALE::Obj<Mesh::label_type>& label = sieveMesh->createLabel(labelName);
+    const ALE::Obj<SieveMesh::label_type>& label = sieveMesh->createLabel(labelName);
     assert(!label.isNull());
 
     TopologyOps::computeCensoredDepth(label, sieveMesh->getSieve(), firstFaultVertex);
   } else {
     // Insert new shadow vertices into existing label
-    const ALE::Obj<Mesh::label_type>& label = sieveMesh->getLabel(labelName);
+    const ALE::Obj<SieveMesh::label_type>& label = sieveMesh->getLabel(labelName);
     assert(!label.isNull());
 
     const std::map<int,int>::const_iterator vRenumberEnd = vertexRenumber.end();
@@ -701,11 +701,11 @@
   const ALE::Obj<SieveMesh::sieve_type> ifaultSieve =
     new SieveMesh::sieve_type(sieve->comm(), sieve->debug());
   assert(!ifaultSieve.isNull());
-  ALE::Obj<ALE::Mesh> fault = 
-    new ALE::Mesh(mesh.comm(), mesh.dimension()-1, mesh.debug());
+  ALE::Obj<FlexMesh> fault = 
+    new FlexMesh(mesh.comm(), mesh.dimension()-1, mesh.debug());
   assert(!fault.isNull());
-  ALE::Obj<ALE::Mesh::sieve_type> faultSieve =
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> faultSieve =
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   assert(!faultSieve.isNull());
 
   const ALE::Obj<SieveMesh::label_sequence>& cohesiveCells =
@@ -732,7 +732,7 @@
       ++c_iter) {
     sieve->cone(*c_iter, cV);
     const int coneSize = cV.getSize();
-    const Mesh::point_type *cone = cV.getPoints();
+    const SieveMesh::point_type *cone = cV.getPoints();
     int color = 0;
 
     if (!constraintCell) {

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/CohesiveTopology.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/CohesiveTopology.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/CohesiveTopology.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -37,6 +37,7 @@
 
 private :
   typedef pylith::topology::Mesh::SieveMesh::point_type point_type;
+  typedef ALE::Mesh<PetscInt,PetscScalar> FlexMesh;
 
   // PUBLIC METHODS /////////////////////////////////////////////////////
 public :
@@ -53,7 +54,7 @@
    */
   static
   void createFault(topology::SubMesh* faultMesh,
-		   ALE::Obj<ALE::Mesh>& faultBoundary,
+		   ALE::Obj<FlexMesh>& faultBoundary,
 		   const topology::Mesh& mesh,
 		   const ALE::Obj<topology::Mesh::IntSection>& groupField,
 		   const bool flipFault =false);
@@ -75,7 +76,7 @@
   static
   void create(topology::Mesh* mesh,
 	      const topology::SubMesh& faultMesh,
-              const ALE::Obj<ALE::Mesh>& faultBoundary,
+              const ALE::Obj<FlexMesh>& faultBoundary,
               const ALE::Obj<topology::Mesh::IntSection>& groupField,
               const int materialId,
               int& firstFaultVertex,

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesive.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesive.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesive.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -120,7 +120,7 @@
   assert(std::string("") != label());
   
   topology::SubMesh faultMesh;
-  ALE::Obj<ALE::Mesh> faultBoundary;
+  ALE::Obj<FlexMesh> faultBoundary;
   
   // Get group of vertices associated with fault
   const ALE::Obj<topology::Mesh::SieveMesh>& sieveMesh = mesh->sieveMesh();

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesive.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesive.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesive.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -38,6 +38,7 @@
 				      public feassemble::Integrator<feassemble::Quadrature<topology::SubMesh> >
 { // class FaultCohesive
   friend class TestFaultCohesive; // unit testing
+  typedef ALE::Mesh<PetscInt,PetscScalar> FlexMesh;
 
   // PUBLIC METHODS /////////////////////////////////////////////////////
 public :

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesiveDyn.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesiveDyn.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -1653,7 +1653,7 @@
 								 *c_iter, ncV);
     const int coneSize = ncV.getSize();
     assert(coneSize == 3*numBasis);
-    const Mesh::point_type *cohesiveCone = ncV.getPoints();
+    const SieveMesh::point_type *cohesiveCone = ncV.getPoints();
     assert(0 != cohesiveCone);
 
     const SieveMesh::point_type c_fault = _cohesiveToFault[*c_iter];

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesiveLagrange.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesiveLagrange.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/FaultCohesiveLagrange.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -1446,7 +1446,7 @@
   assert(!faultCells.isNull());
   SieveSubMesh::label_sequence::iterator f_iter = faultCells->begin();
 
-  SubMesh::renumbering_type& renumbering = faultSieveMesh->getRenumbering();
+  SieveSubMesh::renumbering_type& renumbering = faultSieveMesh->getRenumbering();
   const SieveSubMesh::renumbering_type::const_iterator renumberingEnd =
     renumbering.end();
   const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
@@ -1474,7 +1474,7 @@
     ALE::ISieveTraversal<SieveMesh::sieve_type>::orientedClosure(*sieve, *c_iter, ncV);
     const int coneSize = ncV.getSize();
     assert(coneSize == numCorners);
-    const Mesh::point_type *cone = ncV.getPoints();
+    const SieveMesh::point_type *cone = ncV.getPoints();
     assert(0 != cone);
 
     for (int iConstraint = 0; iConstraint < numConstraintVert; ++iConstraint) {
@@ -1635,7 +1635,7 @@
     ALE::ISieveTraversal<SieveSubMesh::sieve_type>::orientedClosure(*sieve,
       *c_iter, ncV);
     const int coneSize = ncV.getSize();
-    const Mesh::point_type *cone = ncV.getPoints();
+    const SieveSubMesh::point_type *cone = ncV.getPoints();
 
     for (int v = 0; v < coneSize; ++v) {
       // Compute Jacobian and determinant of Jacobian at vertex

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/TopologyOps.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/TopologyOps.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/TopologyOps.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -129,11 +129,11 @@
                                                                const int firstCell,
                                                                const PointSet& faultVertices,
                                                                const ALE::Obj<SieveMesh>& mesh,
-                                                               const ALE::Obj<ALE::Mesh::arrow_section_type>& orientation,
-                                                               const ALE::Obj<ALE::Mesh::sieve_type>& faultSieve,
+                                                               const ALE::Obj<FlexMesh::arrow_section_type>& orientation,
+                                                               const ALE::Obj<FlexMesh::sieve_type>& faultSieve,
 							       const bool flipFault)
 {
-  typedef ALE::Selection<ALE::Mesh> selection;
+  typedef ALE::Selection<FlexMesh> selection;
   const ALE::Obj<SieveMesh::sieve_type>& sieve = mesh->getSieve();
   const PointSet::const_iterator fvBegin    = faultVertices.begin();
   const PointSet::const_iterator fvEnd      = faultVertices.end();
@@ -141,7 +141,7 @@
   int                            curVertex  = 0;
   int                            newElement = curCell + dim*faultVertices.size();
   int                            o          = 1;
-  ALE::Mesh::point_type          f          = firstCell;
+  FlexMesh::point_type          f          = firstCell;
   const int                      debug      = mesh->debug();
   ALE::Obj<PointSet>                  face       = new PointSet();
   int                            numCorners = 0;    // The number of vertices in a mesh cell
@@ -232,26 +232,26 @@
 
           if (2 == dim && 4 == faceSize){
             if (debug) std::cout << "  Adding hex face " << f << std::endl;
-            ALE::SieveBuilder<ALE::Mesh>::buildHexFaces(
+            ALE::SieveBuilder<FlexMesh>::buildHexFaces(
 		     faultSieve, orientation, dim, curElement, 
 		     bdVertices, oFaultFaces, f, o);
           } else if ((1 == dim && 3 == faceSize) ||
 		     (2 == dim && 9 == faceSize)){
             if (debug) std::cout << "  Adding quadratic hex face " << f
 				 << std::endl;
-            ALE::SieveBuilder<ALE::Mesh>::buildQuadraticHexFaces(
+            ALE::SieveBuilder<FlexMesh>::buildQuadraticHexFaces(
 		     faultSieve, orientation, dim, curElement, 
 		     bdVertices, oFaultFaces, f, o);
           } else if ((1 == dim && 3 == faceSize) ||
 		     (2 == dim && 6 == faceSize)){
             if (debug) std::cout << "  Adding quadratic tri face " << f
 				 << std::endl;
-            ALE::SieveBuilder<ALE::Mesh>::buildQuadraticTetFaces(
+            ALE::SieveBuilder<FlexMesh>::buildQuadraticTetFaces(
 		     faultSieve, orientation, dim, curElement, 
 		     bdVertices, oFaultFaces, f, o);
           } else {
             if (debug) std::cout << "  Adding simplicial face " << f << std::endl;
-            ALE::SieveBuilder<ALE::Mesh>::buildFaces(
+            ALE::SieveBuilder<FlexMesh>::buildFaces(
 		     faultSieve, orientation, dim, curElement,
 		     bdVertices, oFaultFaces, f, o);
           }
@@ -276,10 +276,10 @@
                                                             const int faultVertices[],
                                                             const int faultCells[],
                                                             const ALE::Obj<SieveMesh>& mesh,
-                                                            const ALE::Obj<ALE::Mesh::arrow_section_type>& orientation,
-                                                            const ALE::Obj<ALE::Mesh::sieve_type>& faultSieve)
+                                                            const ALE::Obj<FlexMesh::arrow_section_type>& orientation,
+                                                            const ALE::Obj<FlexMesh::sieve_type>& faultSieve)
 {
-  typedef ALE::Selection<ALE::Mesh> selection;
+  typedef ALE::Selection<FlexMesh> selection;
   int                       faceSize   = 0; // The number of vertices in a mesh face
   int                       curCell    = firstCell;
   int                       curVertex  = 0;
@@ -312,10 +312,10 @@
     // Create face
     if (faceSize != dim+1) {
       if (debug) std::cout << "  Adding hex face " << f << std::endl;
-      ALE::SieveBuilder<ALE::Mesh>::buildHexFaces(faultSieve, orientation, dim, curElement, bdVertices, oFaultFaces, f, o);
+      ALE::SieveBuilder<FlexMesh>::buildHexFaces(faultSieve, orientation, dim, curElement, bdVertices, oFaultFaces, f, o);
     } else {
       if (debug) std::cout << "  Adding simplicial face " << f << std::endl;
-      ALE::SieveBuilder<ALE::Mesh>::buildFaces(faultSieve, orientation, dim, curElement, bdVertices, oFaultFaces, f, o);
+      ALE::SieveBuilder<FlexMesh>::buildFaces(faultSieve, orientation, dim, curElement, bdVertices, oFaultFaces, f, o);
     }
     // Add arrow to cells
     faultSieve->addArrow(face, faultCells[face*2+0]);
@@ -327,21 +327,21 @@
 void
 pylith::faults::TopologyOps::orientFaultSieve(const int dim,
                                                    const ALE::Obj<SieveMesh>& mesh,
-                                                   const ALE::Obj<ALE::Mesh::arrow_section_type>& orientation,
-                                                   const ALE::Obj<ALE::Mesh>& fault)
+                                                   const ALE::Obj<FlexMesh::arrow_section_type>& orientation,
+                                                   const ALE::Obj<FlexMesh>& fault)
 {
   assert(!mesh.isNull());
   assert(!orientation.isNull());
   assert(!fault.isNull());
 
-  typedef ALE::Selection<ALE::Mesh> selection;
+  typedef ALE::Selection<FlexMesh> selection;
 
   // Must check the orientation here
-  const ALE::Obj<ALE::Mesh::sieve_type>& faultSieve = fault->getSieve();
+  const ALE::Obj<FlexMesh::sieve_type>& faultSieve = fault->getSieve();
   assert(!faultSieve.isNull());
   const SieveMesh::point_type firstFaultCell  = 
     *fault->heightStratum(1)->begin();
-  const ALE::Obj<ALE::Mesh::label_sequence>& fFaces = fault->heightStratum(2);
+  const ALE::Obj<FlexMesh::label_sequence>& fFaces = fault->heightStratum(2);
   assert(!fFaces.isNull());
   const int numFaultFaces = fFaces->size();
   const int faultDepth = fault->depth()-1; // Depth of fault cells
@@ -392,21 +392,21 @@
     // Loop over new cells
     for(PointSet::iterator c_iter = loopCells->begin(); c_iter != loopCells->end(); ++c_iter) {
       // Loop over edges of this cell
-      const ALE::Obj<ALE::Mesh::sieve_type::traits::coneSequence>&     cone   = faultSieve->cone(*c_iter);
-      const ALE::Mesh::sieve_type::traits::coneSequence::iterator eBegin = cone->begin();
-      const ALE::Mesh::sieve_type::traits::coneSequence::iterator eEnd   = cone->end();
+      const ALE::Obj<FlexMesh::sieve_type::traits::coneSequence>&     cone   = faultSieve->cone(*c_iter);
+      const FlexMesh::sieve_type::traits::coneSequence::iterator eBegin = cone->begin();
+      const FlexMesh::sieve_type::traits::coneSequence::iterator eEnd   = cone->end();
 
-      for(ALE::Mesh::sieve_type::traits::coneSequence::iterator e_iter = eBegin; e_iter != eEnd; ++e_iter) {
+      for(FlexMesh::sieve_type::traits::coneSequence::iterator e_iter = eBegin; e_iter != eEnd; ++e_iter) {
         if (facesSeen.find(*e_iter) != facesSeen.end()) continue;
         facesSeen.insert(*e_iter);
         if (debug) std::cout << "  Checking orientation of fault face " << *e_iter << std::endl;
-        const ALE::Obj<ALE::Mesh::sieve_type::traits::supportSequence>& support = faultSieve->support(*e_iter);
-        ALE::Mesh::sieve_type::traits::supportSequence::iterator   s_iter  = support->begin();
+        const ALE::Obj<FlexMesh::sieve_type::traits::supportSequence>& support = faultSieve->support(*e_iter);
+        FlexMesh::sieve_type::traits::supportSequence::iterator   s_iter  = support->begin();
 
         // Throw out boundary fault faces
         if (support->size() < 2) continue;
-        ALE::Mesh::point_type cellA = *s_iter; ++s_iter;
-        ALE::Mesh::point_type cellB = *s_iter;
+        FlexMesh::point_type cellA = *s_iter; ++s_iter;
+        FlexMesh::point_type cellB = *s_iter;
         bool flippedA = (flippedCells.find(cellA) != flippedCells.end());
         bool flippedB = (flippedCells.find(cellB) != flippedCells.end());
         bool seenA    = (cellsSeen.find(cellA) != cellsSeen.end());
@@ -417,10 +417,10 @@
         if (debug) std::cout << "    neighboring cells " << cellA << " and " << cellB << std::endl;
         // In 1D, just check that vertices match
         if (dim == 1) {
-          const ALE::Obj<ALE::Mesh::sieve_type::traits::coneSequence>& coneA = faultSieve->cone(cellA);
-          ALE::Mesh::sieve_type::traits::coneSequence::iterator   iterA = coneA->begin();
-          const ALE::Obj<ALE::Mesh::sieve_type::traits::coneSequence>& coneB = faultSieve->cone(cellB);
-          ALE::Mesh::sieve_type::traits::coneSequence::iterator   iterB = coneB->begin();
+          const ALE::Obj<FlexMesh::sieve_type::traits::coneSequence>& coneA = faultSieve->cone(cellA);
+          FlexMesh::sieve_type::traits::coneSequence::iterator   iterA = coneA->begin();
+          const ALE::Obj<FlexMesh::sieve_type::traits::coneSequence>& coneB = faultSieve->cone(cellB);
+          FlexMesh::sieve_type::traits::coneSequence::iterator   iterB = coneB->begin();
           int posA, posB;
 
           for(posA = 0; posA < 2; ++posA, ++iterA) if (*iterA == *e_iter) break;
@@ -444,9 +444,9 @@
           }
         } else if (dim == 2) {
           // Check orientation
-          ALE::MinimalArrow<ALE::Mesh::sieve_type::point_type,ALE::Mesh::sieve_type::point_type> arrowA(*e_iter, cellA);
+          ALE::MinimalArrow<FlexMesh::sieve_type::point_type,FlexMesh::sieve_type::point_type> arrowA(*e_iter, cellA);
           const int oA = orientation->restrictPoint(arrowA)[0];
-          ALE::MinimalArrow<ALE::Mesh::sieve_type::point_type,ALE::Mesh::sieve_type::point_type> arrowB(*e_iter, cellB);
+          ALE::MinimalArrow<FlexMesh::sieve_type::point_type,FlexMesh::sieve_type::point_type> arrowB(*e_iter, cellB);
           const int oB = orientation->restrictPoint(arrowB)[0];
           const bool mismatch = (oA == oB);
 
@@ -484,8 +484,8 @@
   for(PointSet::const_iterator f_iter = flippedCells.begin(); f_iter != flippedCells.end(); ++f_iter) {
     if (debug) std::cout << "  Reversing fault face " << *f_iter << std::endl;
     faceVertices.clear();
-    const ALE::Obj<ALE::Mesh::sieve_type::traits::coneSequence>& cone = faultSieve->cone(*f_iter);
-    for(ALE::Mesh::sieve_type::traits::coneSequence::iterator v_iter = cone->begin(); v_iter != cone->end(); ++v_iter) {
+    const ALE::Obj<FlexMesh::sieve_type::traits::coneSequence>& cone = faultSieve->cone(*f_iter);
+    for(FlexMesh::sieve_type::traits::coneSequence::iterator v_iter = cone->begin(); v_iter != cone->end(); ++v_iter) {
       faceVertices.insert(faceVertices.begin(), *v_iter);
     }
     faultSieve->clearCone(*f_iter);
@@ -497,7 +497,7 @@
     if (dim > 1) {
       // Here, they are edges, not vertices
       for(PointArray::const_iterator e_iter = faceVertices.begin(); e_iter != faceVertices.end(); ++e_iter) {
-        ALE::MinimalArrow<ALE::Mesh::sieve_type::point_type,ALE::Mesh::sieve_type::point_type> arrow(*e_iter, *f_iter);
+        ALE::MinimalArrow<FlexMesh::sieve_type::point_type,FlexMesh::sieve_type::point_type> arrow(*e_iter, *f_iter);
         int o = orientation->restrictPoint(arrow)[0];
 
         if (debug) std::cout << "    Reversing orientation of " << *e_iter <<"-->"<<*f_iter << " from " << o << " to " << -(o+1) << std::endl;
@@ -507,26 +507,26 @@
     }
   }
   flippedCells.clear();
-  const ALE::Mesh::label_sequence::iterator fFacesBegin = fFaces->begin();
-  const ALE::Mesh::label_sequence::iterator fFacesEnd = fFaces->end();
-  for(ALE::Mesh::label_sequence::iterator e_iter = fFacesBegin; e_iter != fFacesEnd; ++e_iter) {
+  const FlexMesh::label_sequence::iterator fFacesBegin = fFaces->begin();
+  const FlexMesh::label_sequence::iterator fFacesEnd = fFaces->end();
+  for(FlexMesh::label_sequence::iterator e_iter = fFacesBegin; e_iter != fFacesEnd; ++e_iter) {
     if (debug) std::cout << "  Checking orientation of fault face " << *e_iter << std::endl;
     // for each face get the support (2 fault cells)
-    const ALE::Obj<ALE::Mesh::sieve_type::traits::supportSequence>& support = faultSieve->support(*e_iter);
-    ALE::Mesh::sieve_type::traits::supportSequence::iterator   s_iter  = support->begin();
+    const ALE::Obj<FlexMesh::sieve_type::traits::supportSequence>& support = faultSieve->support(*e_iter);
+    FlexMesh::sieve_type::traits::supportSequence::iterator   s_iter  = support->begin();
 
     // Throw out boundary fault faces
     if (support->size() > 1) {
-      ALE::Mesh::point_type cellA = *s_iter; ++s_iter;
-      ALE::Mesh::point_type cellB = *s_iter;
+      FlexMesh::point_type cellA = *s_iter; ++s_iter;
+      FlexMesh::point_type cellB = *s_iter;
 
       if (debug) std::cout << "    neighboring cells " << cellA << " and " << cellB << std::endl;
       // In 1D, just check that vertices match
       if (dim == 1) {
-        const ALE::Obj<ALE::Mesh::sieve_type::traits::coneSequence>& coneA = faultSieve->cone(cellA);
-        ALE::Mesh::sieve_type::traits::coneSequence::iterator   iterA = coneA->begin();
-        const ALE::Obj<ALE::Mesh::sieve_type::traits::coneSequence>& coneB = faultSieve->cone(cellB);
-        ALE::Mesh::sieve_type::traits::coneSequence::iterator   iterB = coneB->begin();
+        const ALE::Obj<FlexMesh::sieve_type::traits::coneSequence>& coneA = faultSieve->cone(cellA);
+        FlexMesh::sieve_type::traits::coneSequence::iterator   iterA = coneA->begin();
+        const ALE::Obj<FlexMesh::sieve_type::traits::coneSequence>& coneB = faultSieve->cone(cellB);
+        FlexMesh::sieve_type::traits::coneSequence::iterator   iterB = coneB->begin();
         int posA, posB;
 
         for(posA = 0; posA < 2; ++posA, ++iterA) if (*iterA == *e_iter) break;
@@ -540,9 +540,9 @@
         }
       } else {
         // Check orientation
-        ALE::MinimalArrow<ALE::Mesh::sieve_type::point_type,ALE::Mesh::sieve_type::point_type> arrowA(*e_iter, cellA);
+        ALE::MinimalArrow<FlexMesh::sieve_type::point_type,FlexMesh::sieve_type::point_type> arrowA(*e_iter, cellA);
         const int oA = orientation->restrictPoint(arrowA)[0];
-        ALE::MinimalArrow<ALE::Mesh::sieve_type::point_type,ALE::Mesh::sieve_type::point_type> arrowB(*e_iter, cellB);
+        ALE::MinimalArrow<FlexMesh::sieve_type::point_type,FlexMesh::sieve_type::point_type> arrowB(*e_iter, cellB);
         const int oB = orientation->restrictPoint(arrowB)[0];
 
         if (oA == oB) {

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/TopologyOps.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/TopologyOps.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/faults/TopologyOps.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -41,6 +41,7 @@
   typedef std::vector<SieveMesh::sieve_type::point_type> PointArray;
   typedef std::pair<SieveMesh::sieve_type::point_type, int> oPoint_type;
   typedef std::vector<oPoint_type>  oPointArray;
+  typedef ALE::Mesh<PetscInt,PetscScalar> FlexMesh;
 
   // PUBLIC METHODS /////////////////////////////////////////////////////
 public :
@@ -79,8 +80,8 @@
 				    const int firstCell,
 				    const PointSet& faultVertices,
 				    const ALE::Obj<SieveMesh>& mesh,
-				    const ALE::Obj<ALE::Mesh::arrow_section_type>& orientation,
-				    const ALE::Obj<ALE::Mesh::sieve_type>& faultSieve,
+                    const ALE::Obj<FlexMesh::arrow_section_type>& orientation,
+				    const ALE::Obj<FlexMesh::sieve_type>& faultSieve,
 				    const bool flipFault);
   
   static
@@ -90,14 +91,14 @@
 				 const int faultVertices[],
 				 const int faultCells[],
 				 const ALE::Obj<SieveMesh>& mesh,
-				 const ALE::Obj<ALE::Mesh::arrow_section_type>& orientation,
-				 const ALE::Obj<ALE::Mesh::sieve_type>& faultSieve);
+				 const ALE::Obj<FlexMesh::arrow_section_type>& orientation,
+				 const ALE::Obj<FlexMesh::sieve_type>& faultSieve);
 
   static
   void orientFaultSieve(const int dim,
 			const ALE::Obj<SieveMesh>& mesh,
-			const ALE::Obj<ALE::Mesh::arrow_section_type>& orientation,
-			const ALE::Obj<ALE::Mesh>& fault);
+			const ALE::Obj<FlexMesh::arrow_section_type>& orientation,
+			const ALE::Obj<FlexMesh>& fault);
 }; // class CohesiveTopology
 
 #endif // pylith_faults_cohesivetopology_hh

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/MeshBuilder.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/MeshBuilder.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/MeshBuilder.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -118,16 +118,16 @@
       sieve->symmetrize();
     } else {
       // Same old thing
-      ALE::Obj<ALE::Mesh::sieve_type> s =
-	new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+      ALE::Obj<FlexMesh::sieve_type> s =
+	new FlexMesh::sieve_type(sieve->comm(), sieve->debug());
 
-      ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, meshDim, 
+      ALE::SieveBuilder<FlexMesh>::buildTopology(s, meshDim, 
                                                   numCells, 
                                                   const_cast<int*>(&cells[0]), 
                                                   numVertices, 
                                                   interpolate,
                                                   numCorners);
-      std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+      std::map<FlexMesh::point_type,FlexMesh::point_type> renumbering;
       ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
     } // if/else
     logger.stagePop();
@@ -192,7 +192,7 @@
 // Set vertices and cells for fault mesh.
 void
 pylith::meshio::MeshBuilder::buildFaultMesh(const ALE::Obj<SieveMesh>& fault,
-					    ALE::Obj<ALE::Mesh>& faultBd,
+					    ALE::Obj<FlexMesh>& faultBd,
 					    const double_array& coordinates,
 					    const int numVertices,
 					    const int spaceDim,
@@ -223,10 +223,10 @@
   if (0 == rank) {
     assert(coordinates.size() == numVertices*spaceDim);
     assert(cells.size() == numCells*numCorners);
-    ALE::Obj<ALE::Mesh::sieve_type> s = 
-      new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+    ALE::Obj<FlexMesh::sieve_type> s = 
+      new FlexMesh::sieve_type(sieve->comm(), sieve->debug());
     
-    ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, meshDim, 
+    ALE::SieveBuilder<FlexMesh>::buildTopology(s, meshDim, 
 						numCells, 
 						const_cast<int*>(&cells[0]), 
 						numVertices, 
@@ -242,23 +242,23 @@
       s->addArrow(c+firstCell, faceCells[c*2+1]);
     } // for
     
-    ALE::Mesh::renumbering_type& renumbering = fault->getRenumbering();
+    FlexMesh::renumbering_type& renumbering = fault->getRenumbering();
     ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering, false);
     ALE::ISieveConverter::convertOrientation(*s, *sieve, renumbering,
 				fault->getArrowSection("orientation").ptr());
     
-    Obj<ALE::Mesh> tmpMesh = 
-      new ALE::Mesh(fault->comm(), dim, fault->debug());
-    faultBd = ALE::Selection<ALE::Mesh>::boundary(tmpMesh);
+    Obj<FlexMesh> tmpMesh = 
+      new FlexMesh(fault->comm(), dim, fault->debug());
+    faultBd = ALE::Selection<FlexMesh>::boundary(tmpMesh);
 
     logger.stagePop();
     logger.stagePush("FaultStratification");
     fault->stratify();
     logger.stagePop();
   } else {
-    Obj<ALE::Mesh> tmpMesh = 
-      new ALE::Mesh(fault->comm(), dim, fault->debug());
-    faultBd = ALE::Selection<ALE::Mesh>::boundary(tmpMesh);
+    Obj<FlexMesh> tmpMesh = 
+      new FlexMesh(fault->comm(), dim, fault->debug());
+    faultBd = ALE::Selection<FlexMesh>::boundary(tmpMesh);
 
     logger.stagePop();
     logger.stagePush("FaultStratification");

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/MeshBuilder.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/MeshBuilder.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/MeshBuilder.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -40,6 +40,10 @@
 class pylith::meshio::MeshBuilder
 { // MeshBuilder
 
+  // PUBLIC TYPEDEFS ////////////////////////////////////////////////////
+public :
+  typedef ALE::Mesh<PetscInt,PetscScalar> FlexMesh;
+
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public :
 
@@ -88,7 +92,7 @@
    */
   static
   void buildFaultMesh(const ALE::Obj<topology::Mesh::SieveMesh>& fault,
-		      ALE::Obj<ALE::Mesh>& faultBd,
+		      ALE::Obj<FlexMesh>& faultBd,
 		      const double_array& coordinates,
 		      const int numVertices,
 		      const int spaceDim,

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/UCDFaultFile.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/UCDFaultFile.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/UCDFaultFile.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -63,7 +63,7 @@
 void
 pylith::meshio::UCDFaultFile::read(const char* filename,
 				   topology::SubMesh* faultMesh,
-				   ALE::Obj<ALE::Mesh>& faultBoundary,
+				   ALE::Obj<FlexMesh>& faultBoundary,
 				   const topology::Mesh& mesh)
 { // read
   assert(0 != faultMesh);

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/UCDFaultFile.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/UCDFaultFile.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/meshio/UCDFaultFile.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -44,6 +44,7 @@
 class pylith::meshio::UCDFaultFile
 { // UCDFaultFile
   friend class TestUCDFaultFile; // unit testing
+  typedef ALE::Mesh<PetscInt,PetscScalar> FlexMesh;
 
 // PUBLIC METHODS ///////////////////////////////////////////////////////
 public :
@@ -70,7 +71,7 @@
   static
   void read(const char* filename,
 	    topology::SubMesh* faultMesh,
-	    ALE::Obj<ALE::Mesh>& faultBoundary,
+	    ALE::Obj<FlexMesh>& faultBoundary,
 	    const topology::Mesh& mesh);
 
 }; // UCDFaultFile

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/Mesh.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/Mesh.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/Mesh.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -65,7 +65,7 @@
 pylith::topology::Mesh::deallocate(void)
 { // deallocate
   delete _coordsys; _coordsys = 0;
-  _mesh.destroy();
+  _mesh.destroy(); // check refCnt, ALE::setVerbosity()
 } // deallocate
   
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/Mesh.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/Mesh.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/Mesh.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -32,7 +32,7 @@
 
 #include "ISectionSpaces.hh" // USES ISectionSpaces
 
-#include <petscmesh.hh> // HASA ALE::IMesh
+#include "pylith/utils/sievetypes.hh" // HASA pylith::SieveMesh
 
 // Mesh -----------------------------------------------------------------
 /** @brief PyLith finite-element mesh.
@@ -58,12 +58,16 @@
    *   (1) SieveSubMesh - SubMesh object
    */
   //@{
-  typedef ALE::IMesh<> SieveMesh;
-  typedef ALE::IMesh<ALE::LabelSifter<int, SieveMesh::point_type> > SieveSubMesh;
+  typedef pylith::SieveMesh SieveMesh;
+  typedef pylith::SieveSubMesh SieveSubMesh;
 
-  typedef SieveMesh::int_section_type IntSection;
   typedef SieveMesh::real_section_type RealSection;
   typedef ISectionSpaces<SieveMesh::point_type, double> RealUniformSection;
+  typedef SieveMesh::int_section_type IntSection;
+  typedef ALE::ISieveVisitor::RestrictVisitor<RealSection> RestrictVisitor;
+  typedef ALE::ISieveVisitor::UpdateAddVisitor<RealSection> UpdateAddVisitor;
+  typedef ALE::ISieveVisitor::UpdateAllVisitor<RealSection> UpdateAllVisitor;
+  typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PetscInt> IndicesVisitor;
   //@}
 
 

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshOrder.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshOrder.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshOrder.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -37,7 +37,7 @@
 class ALE::MeshOrder
 { // MeshOrder
   typedef int point_type;
-  typedef ALE::IMesh<> mesh_type;
+  typedef ALE::IMesh<PetscInt,PetscScalar> mesh_type;
 
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public :

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshRefiner.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshRefiner.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshRefiner.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -425,7 +425,7 @@
   _createLabels(newMesh, mesh, refiner);
 
   // Create sensored depth
-  const ALE::Obj<Mesh::label_type>& censoredLabel = newMesh->createLabel("censored depth");
+  const ALE::Obj<FlexMesh::label_type>& censoredLabel = newMesh->createLabel("censored depth");
   assert(!censoredLabel.isNull());
 
   mesh_type::DepthVisitor depthVisitor(*newSieve, _orderNewMesh->verticesCensored().min(), *censoredLabel);

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshRefiner.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshRefiner.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/MeshRefiner.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -33,8 +33,9 @@
 template<typename cellrefiner_type>
 class ALE::MeshRefiner
 { // MeshRefiner
-  typedef IMesh<> mesh_type;
+  typedef IMesh<PetscInt,PetscScalar> mesh_type;
   typedef mesh_type::point_type point_type;
+  typedef ALE::Mesh<PetscInt,PetscScalar> FlexMesh;
 
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public :

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineEdges2.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineEdges2.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineEdges2.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -37,7 +37,7 @@
 { // RefineEdges2
 protected:
 
-  typedef IMesh<> mesh_type;
+  typedef ALE::IMesh<PetscInt,PetscScalar> mesh_type;
   typedef mesh_type::point_type point_type;
 
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineFace4Edges2.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineFace4Edges2.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineFace4Edges2.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -37,7 +37,7 @@
 { // RefineFace4Edges2
 protected:
 
-  typedef IMesh<> mesh_type;
+  typedef IMesh<PetscInt,PetscScalar> mesh_type;
   typedef mesh_type::point_type point_type;
 
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineVol8Face4Edges2.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineVol8Face4Edges2.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/RefineVol8Face4Edges2.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -38,7 +38,7 @@
 { // RefineVol8Face4Edges2
 protected:
 
-  typedef IMesh<> mesh_type;
+  typedef IMesh<PetscInt,PetscScalar> mesh_type;
   typedef mesh_type::point_type point_type;
 
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/topologyfwd.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/topologyfwd.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/topology/topologyfwd.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -57,7 +57,7 @@
 
     class FieldBase;
     template<typename mesh_type, 
-	     typename section_type =ALE::IGeneralSection<pylith::Mesh::point_type, double> > class Field;
+	     typename section_type =ALE::IGeneralSection<pylith::SieveMesh::point_type, double> > class Field;
     template<typename field_type> class Fields;
     template<typename mesh_type> class FieldsNew;
 

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/utils/sievefwd.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/utils/sievefwd.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/utils/sievefwd.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -30,7 +30,7 @@
 namespace ALE {
  
   /// PETSc mesh
-  class Mesh;
+  template class Mesh<PetscInt,PetscScalar>;
 } // ALE
 
 #endif // pylith_utils_sievefwd_hh

Modified: short/3D/PyLith/branches/pylith-scecdynrup/libsrc/utils/sievetypes.hh
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/libsrc/utils/sievetypes.hh	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/libsrc/utils/sievetypes.hh	2011-02-23 05:45:13 UTC (rev 17954)
@@ -29,11 +29,14 @@
 
 namespace pylith {
 
-  /// Sieve mesh.
-  typedef ALE::IMesh<> Mesh;
+  /// Sieve mesh (default, fast access with set sizes).
+  typedef ALE::IMesh<PetscInt,PetscScalar> SieveMesh;
 
+  /// Sieve mesh (flexible, slower access without set sizes).
+  typedef ALE::Mesh<PetscInt,PetscScalar> SieveFlexMesh;
+
   /// Sieve submesh.
-  typedef ALE::IMesh<ALE::LabelSifter<int, Mesh::point_type> > SubMesh;
+  typedef ALE::IMesh<PetscInt,PetscScalar,ALE::LabelSifter<int, SieveMesh::point_type> > SieveSubMesh;
 
 } // pylith
 

Modified: short/3D/PyLith/branches/pylith-scecdynrup/pylith/feassemble/FIATLagrange.py
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/pylith/feassemble/FIATLagrange.py	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/pylith/feassemble/FIATLagrange.py	2011-02-23 05:45:13 UTC (rev 17954)
@@ -96,18 +96,19 @@
       dim = self.cellDim
     
       # Get coordinates of vertices (dual basis)
-      vertices = numpy.array(self._setupVertices(element))
+      vertices = numpy.array(self._setupVertices(element), dtype=numpy.float64)
 
       # Evaluate basis functions at quadrature points
-      quadpts = numpy.array(quadrature.get_points())
-      quadwts = numpy.array(quadrature.get_weights())
+      from FIAT.polynomial_set import mis
+      quadpts    = numpy.array(quadrature.get_points(), dtype=numpy.float64)
+      quadwts    = numpy.array(quadrature.get_weights(), dtype=numpy.float64)
       numQuadPts = len(quadpts)
-      basis = numpy.array(element.function_space().tabulate(quadrature.get_points())).transpose()
-      numBasis = len(element.function_space())
+      evals      = element.get_nodal_basis().tabulate(quadrature.get_points(), 1)
+      basis      = numpy.array(evals[mis(1, 0)[0]], dtype=numpy.float64).transpose()
+      numBasis   = element.get_nodal_basis().get_num_members()
 
       # Evaluate derivatives of basis functions at quadrature points
-      basisDeriv = numpy.array([element.function_space().deriv_all(d).tabulate(quadrature.get_points()) \
-                                for d in range(1)]).transpose()
+      basisDeriv = numpy.array([evals[alpha] for alpha in mis(1, 1)], dtype=numpy.float64).transpose()
 
       self.numQuadPts = numQuadPts**dim
       self.numCorners = numBasis**dim
@@ -378,10 +379,10 @@
       self.cellDim = 0
       self.numCorners = 1
       self.numQuadPts = 1
-      self.basis = numpy.array([1.0])
-      self.basisDeriv = numpy.array([1.0])
-      self.quadPts = numpy.array([0.0])
-      self.quadWts = numpy.array([1.0])
+      self.basis = numpy.array([1.0], dtype=numpy.float64)
+      self.basisDeriv = numpy.array([1.0], dtype=numpy.float64)
+      self.quadPts = numpy.array([0.0], dtype=numpy.float64)
+      self.quadWts = numpy.array([1.0], dtype=numpy.float64)
 
     self._info.line("Cell geometry: ")
     self._info.line(self.geometry)
@@ -405,15 +406,13 @@
     """
     Set members based using inventory.
     """
-    import FIAT.shapes
-
     ReferenceCell._configure(self)
     self.cellDim = self.inventory.dimension
     self.degree = self.inventory.degree
     self.order = self.inventory.order
 
     if self.order == -1:
-      self.order = 2*self.degree+1
+      self.order = self.degree+1
     return
 
 
@@ -455,25 +454,25 @@
     """
     Setup quadrature rule for reference cell.
     """
-    import FIAT.quadrature
-    import FIAT.shapes
-    return FIAT.quadrature.make_quadrature_by_degree(FIAT.shapes.LINE, self.order)
+    from FIAT.quadrature import make_quadrature
+    from FIAT.reference_element import default_simplex
+    return make_quadrature(default_simplex(1), self.order)
 
 
   def _setupElement(self):
     """
     Setup the finite element for reference cell.
     """
-    import FIAT.Lagrange
-    import FIAT.shapes
-    return FIAT.Lagrange.Lagrange(FIAT.shapes.LINE, self.degree)
+    from FIAT.lagrange import Lagrange
+    from FIAT.reference_element import default_simplex
+    return Lagrange(default_simplex(1), self.degree)
 
 
   def _setupVertices(self, element):
     """
     Setup evaluation functional points for reference cell.
     """
-    return element.Udual.pts
+    return [n.get_point_dict().keys()[0] for n in element.dual.get_nodes()]
 
 
 # FACTORIES ////////////////////////////////////////////////////////////

Modified: short/3D/PyLith/branches/pylith-scecdynrup/pylith/feassemble/FIATSimplex.py
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/pylith/feassemble/FIATSimplex.py	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/pylith/feassemble/FIATSimplex.py	2011-02-23 05:45:13 UTC (rev 17954)
@@ -98,11 +98,11 @@
       self.cellDim = 0
       self.numCorners = 1
       self.numQuadPts = 1
-      self.basis = numpy.array([[1.0]])
-      self.basisDeriv = numpy.array([[[1.0]]])
-      self.quadPts = numpy.array([[0.0]])
-      self.quadWts = numpy.array([1.0])
-      self.vertices = numpy.array([[0.0]])
+      self.basis = numpy.array([[1.0]], dtype=numpy.float64)
+      self.basisDeriv = numpy.array([[[1.0]]], dtype=numpy.float64)
+      self.quadPts = numpy.array([[0.0]], dtype=numpy.float64)
+      self.quadWts = numpy.array([1.0], dtype=numpy.float64)
+      self.vertices = numpy.array([[0.0]], dtype=numpy.float64)
     else:
       quadrature = self._setupQuadrature()
       basisFns = self._setupBasisFns()
@@ -111,17 +111,17 @@
       vertices = numpy.array(self._setupVertices(), dtype=numpy.float64)
 
       # Evaluate basis functions at quadrature points
+      from FIAT.polynomial_set import mis
       quadpts = quadrature.get_points()
-      basis = numpy.array(basisFns.tabulate(quadpts)).transpose()
+      dim     = basisFns.ref_el.get_spatial_dimension()
+      evals   = basisFns.tabulate(quadpts, 1)
+      basis   = numpy.array(evals[mis(dim, 0)[0]], dtype=numpy.float64).transpose()
 
       # Evaluate derivatives of basis functions at quadrature points
-      import FIAT.shapes
-      dim = FIAT.shapes.dimension(basisFns.base.shape)
-      basisDeriv = numpy.array([basisFns.deriv_all(d).tabulate(quadpts) \
-                                for d in range(dim)]).transpose()
+      basisDeriv = numpy.array([evals[alpha] for alpha in mis(dim, 1)], dtype=numpy.float64).transpose()
 
       self.cellDim = dim
-      self.numCorners = len(basisFns)
+      self.numCorners = basisFns.get_num_members()
       self.numQuadPts = len(quadrature.get_weights())
 
       # Permute from FIAT order to Sieve order
@@ -132,8 +132,8 @@
                                       basisDeriv.shape)
 
       # No permutation in order of quadrature points
-      self.quadPts = numpy.array(quadrature.get_points())
-      self.quadWts = numpy.array(quadrature.get_weights())
+      self.quadPts = numpy.array(quadrature.get_points(), dtype=numpy.float64)
+      self.quadWts = numpy.array(quadrature.get_weights(), dtype=numpy.float64)
 
 
     self._info.line("Cell geometry: ")
@@ -175,11 +175,9 @@
 
     Sieve: breadth search first (faces, edges, corners)
     """
-    import FIAT.shapes
-
-    basis = self.cell.function_space()
-    dim = FIAT.shapes.dimension(self._getShape())
-    ids = self.cell.Udual.entity_ids
+    basis = self.cell.get_nodal_basis()
+    dim = self._getShape().get_spatial_dimension()
+    ids = self.cell.dual.get_entity_ids()
     permutation = []
     if dim == 1:
       for vertex in ids[0]:
@@ -253,38 +251,37 @@
     """
     
     import FIAT.quadrature
-    return FIAT.quadrature.make_quadrature_by_degree(self._getShape(),
-                                                     self.order)
+    return FIAT.quadrature.make_quadrature(self._getShape(), self.order)
 
 
   def _setupBasisFns(self):
     """
     Setup basis functions for reference cell.
     """
-    from FIAT.Lagrange import Lagrange
+    from FIAT.lagrange import Lagrange
     self.cell = Lagrange(self._getShape(), self.degree)
-    return self.cell.function_space() 
+    return self.cell.get_nodal_basis() 
 
 
   def _setupVertices(self):
     """
     Setup evaluation functional points for reference cell.
     """
-    return self.cell.Udual.pts
+    return numpy.array([n.get_point_dict().keys()[0] for n in self.cell.dual.get_nodes()], dtype=numpy.float64)
 
 
   def _getShape(self):
     """
     Parse string into FIAT shape.
     """
-    import FIAT.shapes
+    from FIAT.reference_element import default_simplex
     name = self.shape.lower()
     if "tetrahedron" == name:
-      shape = FIAT.shapes.TETRAHEDRON
+      shape = default_simplex(3)
     elif "triangle" == name:
-      shape = FIAT.shapes.TRIANGLE
+      shape = default_simplex(2)
     elif "line" == name:
-      shape = FIAT.shapes.LINE
+      shape = default_simplex(1)
     elif "point" == name:
       shape = None
     else:

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestBruneSlipFn.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestBruneSlipFn.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestBruneSlipFn.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -411,7 +411,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(faultMesh, faultBoundary,
@@ -459,8 +459,6 @@
 void
 pylith::faults::TestBruneSlipFn::_testInitialize(const _TestBruneSlipFn::DataStruct& data)
 { // _testInitialize
-  typedef std::set<Mesh::point_type>::const_iterator vert_iterator;  
-
   // Setup mesh
   topology::Mesh mesh;
   meshio::MeshIOAscii meshIO;
@@ -485,7 +483,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(&faultMesh, faultBoundary,

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestConstRateSlipFn.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestConstRateSlipFn.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestConstRateSlipFn.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -330,7 +330,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(faultMesh, faultBoundary,
@@ -372,8 +372,6 @@
 void
 pylith::faults::TestConstRateSlipFn::_testInitialize(const _TestConstRateSlipFn::DataStruct& data)
 { // _testInitialize
-  typedef std::set<Mesh::point_type>::const_iterator vert_iterator;  
-
   // Setup mesh
   topology::Mesh mesh;
   meshio::MeshIOAscii meshIO;
@@ -398,7 +396,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(&faultMesh, faultBoundary,

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestEqKinSrc.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestEqKinSrc.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestEqKinSrc.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -250,7 +250,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(faultMesh, faultBoundary,

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestLiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestLiuCosSlipFn.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestLiuCosSlipFn.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -406,7 +406,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(faultMesh, faultBoundary,
@@ -453,8 +453,6 @@
 void
 pylith::faults::TestLiuCosSlipFn::_testInitialize(const _TestLiuCosSlipFn::DataStruct& data)
 { // _testInitialize
-  typedef std::set<Mesh::point_type>::const_iterator vert_iterator;  
-
   // Setup mesh
   topology::Mesh mesh;
   meshio::MeshIOAscii meshIO;
@@ -479,7 +477,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(&faultMesh, faultBoundary,

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestStepSlipFn.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestStepSlipFn.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestStepSlipFn.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -322,7 +322,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(faultMesh, faultBoundary,
@@ -364,8 +364,6 @@
 void
 pylith::faults::TestStepSlipFn::_testInitialize(const _TestStepSlipFn::DataStruct& data)
 { // _testInitialize
-  typedef std::set<SieveMesh::point_type>::const_iterator vert_iterator;  
-
   // Setup mesh
   topology::Mesh mesh;
   meshio::MeshIOAscii meshIO;
@@ -390,7 +388,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(&faultMesh, faultBoundary,

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestTimeHistorySlipFn.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestTimeHistorySlipFn.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/faults/TestTimeHistorySlipFn.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -355,7 +355,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(faultMesh, faultBoundary,
@@ -400,8 +400,6 @@
 void
 pylith::faults::TestTimeHistorySlipFn::_testInitialize(const _TestTimeHistorySlipFn::DataStruct& data)
 { // _testInitialize
-  typedef std::set<Mesh::point_type>::const_iterator vert_iterator;  
-
   // Setup mesh
   topology::Mesh mesh;
   meshio::MeshIOAscii meshIO;
@@ -426,7 +424,7 @@
   if (useLagrangeConstraints) {
     firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
   }
-  ALE::Obj<ALE::Mesh> faultBoundary = 0;
+  ALE::Obj<SieveFlexMesh> faultBoundary = 0;
   const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
   CPPUNIT_ASSERT(!sieveMesh.isNull());
   CohesiveTopology::createFault(&faultMesh, faultBoundary,

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicit.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicit.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -423,15 +423,15 @@
 
   // Cells and vertices
   const bool interpolate = false;
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, 
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, 
 					      _data->cellDim, _data->numCells,
                                               const_cast<int*>(_data->cells), 
 					      _data->numVertices,
                                               interpolate, _data->numBasis);
-  std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+  std::map<SieveFlexMesh::point_type,SieveFlexMesh::point_type> renumbering;
   ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
   sieveMesh->setSieve(sieve);
   sieveMesh->stratify();

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -328,15 +328,15 @@
 
   // Cells and vertices
   const bool interpolate = false;
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, 
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, 
 					      _data->cellDim, _data->numCells,
                                               const_cast<int*>(_data->cells), 
 					      _data->numVertices,
                                               interpolate, _data->numBasis);
-  std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+  std::map<SieveFlexMesh::point_type,SieveFlexMesh::point_type> renumbering;
   ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
   sieveMesh->setSieve(sieve);
   sieveMesh->stratify();

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitTet4.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -427,15 +427,15 @@
 
   // Cells and vertices
   const bool interpolate = false;
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, 
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, 
 					      _data->cellDim, _data->numCells,
                                               const_cast<int*>(_data->cells), 
 					      _data->numVertices,
                                               interpolate, _data->numBasis);
-  std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+  std::map<SieveFlexMesh::point_type,SieveFlexMesh::point_type> renumbering;
   ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
   sieveMesh->setSieve(sieve);
   sieveMesh->stratify();

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityExplicitTri3.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -427,15 +427,15 @@
 
   // Cells and vertices
   const bool interpolate = false;
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, 
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, 
 					      _data->cellDim, _data->numCells,
                                               const_cast<int*>(_data->cells), 
 					      _data->numVertices,
                                               interpolate, _data->numBasis);
-  std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+  std::map<SieveFlexMesh::point_type,SieveFlexMesh::point_type> renumbering;
   ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
   sieveMesh->setSieve(sieve);
   sieveMesh->stratify();

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityImplicit.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityImplicit.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -306,15 +306,15 @@
 
   // Cells and vertices
   const bool interpolate = false;
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, 
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, 
 					      _data->cellDim, _data->numCells,
                                               const_cast<int*>(_data->cells), 
 					      _data->numVertices,
                                               interpolate, _data->numBasis);
-  std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+  std::map<SieveFlexMesh::point_type,SieveFlexMesh::point_type> renumbering;
   ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
   sieveMesh->setSieve(sieve);
   sieveMesh->stratify();

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -232,15 +232,15 @@
 
   // Cells and vertices
   const bool interpolate = false;
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, 
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, 
 					      _data->cellDim, _data->numCells,
                                               const_cast<int*>(_data->cells), 
 					      _data->numVertices,
                                               interpolate, _data->numBasis);
-  std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+  std::map<SieveFlexMesh::point_type,SieveFlexMesh::point_type> renumbering;
   ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
   sieveMesh->setSieve(sieve);
   sieveMesh->stratify();

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestQuadrature.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestQuadrature.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/feassemble/TestQuadrature.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -205,14 +205,14 @@
 
   // Cells and vertices
   const bool interpolate = false;
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, cellDim, numCells,
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, cellDim, numCells,
                                               const_cast<int*>(data.cells), 
 					      data.numVertices,
                                               interpolate, numBasis);
-  std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+  std::map<SieveFlexMesh::point_type,SieveFlexMesh::point_type> renumbering;
   ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
   sieveMesh->setSieve(sieve);
   sieveMesh->stratify();
@@ -328,14 +328,14 @@
 
   // Cells and vertices
   const bool interpolate = false;
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, cellDim, numCells,
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, cellDim, numCells,
                                               const_cast<int*>(data.cells), 
 					      data.numVertices,
                                               interpolate, numBasis);
-  std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+  std::map<SieveFlexMesh::point_type,SieveFlexMesh::point_type> renumbering;
   ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
   sieveMesh->setSieve(sieve);
   sieveMesh->stratify();

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/meshio/TestMeshIO.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/meshio/TestMeshIO.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/meshio/TestMeshIO.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -65,14 +65,14 @@
 
   // Cells and vertices
   const bool interpolate = false;
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, data.cellDim, data.numCells,
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, data.cellDim, data.numCells,
                                               const_cast<int*>(data.cells), 
 					      data.numVertices,
                                               interpolate, data.numCorners);
-  std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+  std::map<SieveFlexMesh::point_type,SieveFlexMesh::point_type> renumbering;
   ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
   sieveMesh->setSieve(sieve);
   sieveMesh->stratify();

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestFieldMesh.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestFieldMesh.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestFieldMesh.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -1321,8 +1321,8 @@
     new Mesh::SieveMesh::sieve_type(sieveMesh->comm());
   CPPUNIT_ASSERT(!sieve.isNull());
 
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
   const int cellDim = _TestFieldMesh::cellDim;
   const int ncells = _TestFieldMesh::ncells;
@@ -1332,7 +1332,7 @@
   const int spaceDim = _TestFieldMesh::cellDim;
   const double* coordinates = _TestFieldMesh::coordinates;
   const bool interpolate = false;
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, cellDim, ncells, (int*) cells,
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, cellDim, ncells, (int*) cells,
 					      nvertices, interpolate, 
 					      ncorners);
   std::map<Mesh::SieveMesh::point_type,Mesh::SieveMesh::point_type> renumbering;

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestFieldSubMesh.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestFieldSubMesh.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestFieldSubMesh.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -972,8 +972,8 @@
     new Mesh::SieveMesh::sieve_type(sieveMesh->comm());
   CPPUNIT_ASSERT(!sieve.isNull());
 
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   CPPUNIT_ASSERT(!s.isNull());
   
   const int cellDim = _TestFieldSubMesh::cellDim;
@@ -984,7 +984,7 @@
   const int spaceDim = _TestFieldSubMesh::cellDim;
   const double* coordinates = _TestFieldSubMesh::coordinates;
   const bool interpolate = false;
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, cellDim, ncells, (int*) cells,
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, cellDim, ncells, (int*) cells,
 					      nvertices, interpolate, 
 					      ncorners);
   std::map<Mesh::SieveMesh::point_type,Mesh::SieveMesh::point_type> renumbering;

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestSubMesh.cc
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestSubMesh.cc	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/libtests/topology/TestSubMesh.cc	2011-02-23 05:45:13 UTC (rev 17954)
@@ -215,8 +215,8 @@
     new Mesh::SieveMesh::sieve_type(sieveMesh->comm());
   CPPUNIT_ASSERT(!sieve.isNull());
 
-  ALE::Obj<ALE::Mesh::sieve_type> s = 
-    new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+  ALE::Obj<SieveFlexMesh::sieve_type> s = 
+    new SieveFlexMesh::sieve_type(sieve->comm(), sieve->debug());
   
   const int cellDim = _TestSubMesh::cellDim;
   const int ncells = _TestSubMesh::ncells;
@@ -226,7 +226,7 @@
   const int spaceDim = _TestSubMesh::cellDim;
   const double* coordinates = _TestSubMesh::coordinates;
   const bool interpolate = false;
-  ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, cellDim, ncells, (int*) cells,
+  ALE::SieveBuilder<SieveFlexMesh>::buildTopology(s, cellDim, ncells, (int*) cells,
 					      nvertices, interpolate, 
 					      ncorners);
   std::map<Mesh::SieveMesh::point_type,Mesh::SieveMesh::point_type> renumbering;

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/pytests/feassemble/TestFIATLagrange.py
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/pytests/feassemble/TestFIATLagrange.py	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/pytests/feassemble/TestFIATLagrange.py	2011-02-23 05:45:13 UTC (rev 17954)
@@ -1057,7 +1057,7 @@
     cell = FIATLagrange()
     cell.inventory.dimension = 2
     cell.inventory.degree = 2
-    cell.inventory.order  = 5
+    cell.inventory.order  = 3
     cell._configure()
     cell.initialize(spaceDim=2)
 
@@ -1093,7 +1093,7 @@
     cell = FIATLagrange()
     cell.inventory.dimension = 3
     cell.inventory.degree = 2
-    cell.inventory.order  = 5
+    cell.inventory.order  = 3
     cell._configure()
     cell.initialize(spaceDim=3)
 

Modified: short/3D/PyLith/branches/pylith-scecdynrup/unittests/pytests/feassemble/TestFIATSimplex.py
===================================================================
--- short/3D/PyLith/branches/pylith-scecdynrup/unittests/pytests/feassemble/TestFIATSimplex.py	2011-02-23 05:13:41 UTC (rev 17953)
+++ short/3D/PyLith/branches/pylith-scecdynrup/unittests/pytests/feassemble/TestFIATSimplex.py	2011-02-23 05:45:13 UTC (rev 17954)
@@ -229,7 +229,6 @@
                            [self.N3p(q), self.N3q(q)],
                            [self.N4p(q), self.N4q(q)],
                            [self.N5p(q), self.N5q(q)]])
-      print deriv
       basisDeriv[iQuad] = deriv.reshape((6, 2))
       iQuad += 1
 
@@ -406,19 +405,19 @@
     """
     cell = FIATSimplex()
 
-    import FIAT.shapes
+    from FIAT.reference_element import default_simplex
 
     cell.shape = "line"
     shape = cell._getShape()
-    self.assertEqual(FIAT.shapes.LINE, shape)
+    self.assertEqual(default_simplex(1).get_shape(), shape.get_shape())
 
     cell.shape = "triangle"
     shape = cell._getShape()
-    self.assertEqual(FIAT.shapes.TRIANGLE, shape)
+    self.assertEqual(default_simplex(2).get_shape(), shape.get_shape())
 
     cell.shape = "tetrahedron"
     shape = cell._getShape()
-    self.assertEqual(FIAT.shapes.TETRAHEDRON, shape)
+    self.assertEqual(default_simplex(3).get_shape(), shape.get_shape())
     return
 
 



More information about the CIG-COMMITS mailing list