[cig-commits] r20817 - short/3D/PyLith/trunk/unittests/libtests/topology

knepley at geodynamics.org knepley at geodynamics.org
Wed Oct 10 05:03:45 PDT 2012


Author: knepley
Date: 2012-10-10 05:03:44 -0700 (Wed, 10 Oct 2012)
New Revision: 20817

Modified:
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsNewMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc
   short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.hh
   short/3D/PyLith/trunk/unittests/libtests/topology/TestSolutionFields.cc
Log:
All topology tests pass except splitting which does not work that way anymore

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsMesh.cc	2012-10-10 02:15:08 UTC (rev 20816)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsMesh.cc	2012-10-10 12:03:44 UTC (rev 20817)
@@ -83,6 +83,12 @@
 
   CPPUNIT_ASSERT(0 != _mesh);
   FieldsMesh fields(*_mesh);
+  DM dmMesh = _mesh->dmMesh();
+  PetscErrorCode err;
+  CPPUNIT_ASSERT(dmMesh);
+
+  PetscInt       vStart, vEnd;
+  err = DMComplexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
   
   const char* label = "field";
   fields.add(label, "velocity", Field<Mesh>::VERTICES_FIELD, fiberDim);
@@ -90,18 +96,14 @@
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
 
   Field<Mesh>& field = fields.get(label);
-  const ALE::Obj<RealSection>& section = field.section();
-  CPPUNIT_ASSERT(!section.isNull());
-  const ALE::Obj<SieveMesh>& sieveMesh = _mesh->sieveMesh();
-  CPPUNIT_ASSERT(!sieveMesh.isNull());
-  const ALE::Obj<SieveMesh::label_sequence>& vertices = 
-    sieveMesh->depthStratum(0);
-  CPPUNIT_ASSERT(!vertices.isNull());
   field.allocate();
-  for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
-       v_iter != vertices->end();
-       ++v_iter)
-    CPPUNIT_ASSERT_EQUAL(fiberDim, section->getFiberDimension(*v_iter));
+  PetscSection section = field.petscSection();
+  CPPUNIT_ASSERT(section);
+  for(PetscInt v = vStart; v < vEnd; ++v) {
+    PetscInt dof;
+    err = PetscSectionGetDof(section, v, &dof);CHECK_PETSC_ERROR(err);
+    CPPUNIT_ASSERT_EQUAL(fiberDim, dof);
+  }
 } // testAddDomain
 
 // ----------------------------------------------------------------------
@@ -187,7 +189,13 @@
 
   CPPUNIT_ASSERT(0 != _mesh);
   FieldsMesh fields(*_mesh);
-  
+  DM dmMesh = _mesh->dmMesh();
+  PetscErrorCode err;
+  CPPUNIT_ASSERT(dmMesh);
+
+  PetscInt       vStart, vEnd;
+  err = DMComplexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+
   const char* labelA = "field A";
   fields.add(labelA, "displacement", Field<Mesh>::VERTICES_FIELD, fiberDim);
 
@@ -201,17 +209,13 @@
   const size_t size = 2;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
   const Field<Mesh>& field = fields.get(labelB);
-  const ALE::Obj<RealSection>& section = field.section();
-  CPPUNIT_ASSERT(!section.isNull());
-  const ALE::Obj<SieveMesh>& sieveMesh = _mesh->sieveMesh();
-  CPPUNIT_ASSERT(!sieveMesh.isNull());
-  const ALE::Obj<SieveMesh::label_sequence>& vertices
-    = sieveMesh->depthStratum(0);
-  CPPUNIT_ASSERT(!vertices.isNull());
-  for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
-       v_iter != vertices->end();
-       ++v_iter)
-    CPPUNIT_ASSERT_EQUAL(fiberDim, section->getFiberDimension(*v_iter));
+  PetscSection section = field.petscSection();
+  CPPUNIT_ASSERT(section);
+  for(PetscInt v = vStart; v < vEnd; ++v) {
+    PetscInt dof;
+    err = PetscSectionGetDof(section, v, &dof);CHECK_PETSC_ERROR(err);
+    CPPUNIT_ASSERT_EQUAL(fiberDim, dof);
+  }
 } // testCopyLayout
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsNewMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsNewMesh.cc	2012-10-10 02:15:08 UTC (rev 20816)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsNewMesh.cc	2012-10-10 12:03:44 UTC (rev 20817)
@@ -208,21 +208,17 @@
 { // testGet
   CPPUNIT_ASSERT(0 != _mesh);
   FieldsNewMesh fields(*_mesh);
+  DM dmMesh = _mesh->dmMesh();
+  PetscErrorCode err;
+  CPPUNIT_ASSERT(dmMesh);
 
+  PetscInt       vStart, vEnd;
+  err = DMComplexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+
   fields.add("field A", "velocity", 3, FieldBase::VECTOR);
   fields.add("field B", "displacement", 4, FieldBase::OTHER, 2.0, true);
   fields.allocate(FieldBase::VERTICES_FIELD);
 
-  const ALE::Obj<Mesh::SieveMesh>& sieveMesh = _mesh->sieveMesh();
-  CPPUNIT_ASSERT(!sieveMesh.isNull());
-  const ALE::Obj<Mesh::SieveMesh::label_sequence>& vertices = 
-    sieveMesh->depthStratum(0);
-  CPPUNIT_ASSERT(!vertices.isNull());
-  const Mesh::SieveMesh::label_sequence::iterator verticesBegin =
-    vertices->begin();
-  const Mesh::SieveMesh::label_sequence::iterator verticesEnd =
-    vertices->end();
-
   // Check field A
   Field<Mesh>& fieldA = fields.get("field A");
   CPPUNIT_ASSERT_EQUAL(std::string("velocity"), std::string(fieldA.label()));
@@ -231,18 +227,14 @@
   CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), fieldA.scale());
   CPPUNIT_ASSERT_EQUAL(false, fieldA.addDimensionOkay());
 
-  const ALE::Obj<Mesh::RealSection>& sectionA = fieldA.section();
-  CPPUNIT_ASSERT(!sectionA.isNull());
-  for(Mesh::SieveMesh::label_sequence::iterator v_iter = verticesBegin;
-      v_iter != verticesEnd;
-      ++v_iter) {
-    const int fiberDim = sectionA->getFiberDimension(*v_iter);
-    CPPUNIT_ASSERT_EQUAL(3, fiberDim);
-    const PylithScalar* values = sectionA->restrictPoint(*v_iter);
-    CPPUNIT_ASSERT(values);
-  } // for
+  PetscSection sectionA = fieldA.petscSection();
+  CPPUNIT_ASSERT(sectionA);
+  for(PetscInt v = vStart; v < vEnd; ++v) {
+    PetscInt dof;
+    err = PetscSectionGetDof(sectionA, v, &dof);CHECK_PETSC_ERROR(err);
+    CPPUNIT_ASSERT_EQUAL(3, dof);
+  }
 
-
   // Check field B
   Field<Mesh>& fieldB = fields.get("field B");
   CPPUNIT_ASSERT_EQUAL(std::string("displacement"), 
@@ -252,16 +244,13 @@
   CPPUNIT_ASSERT_EQUAL(PylithScalar(2.0), fieldB.scale());
   CPPUNIT_ASSERT_EQUAL(true, fieldB.addDimensionOkay());
 
-  const ALE::Obj<Mesh::RealSection>& sectionB = fieldB.section();
-  CPPUNIT_ASSERT(!sectionB.isNull());
-  for(Mesh::SieveMesh::label_sequence::iterator v_iter = verticesBegin;
-      v_iter != verticesEnd;
-      ++v_iter) {
-    const int fiberDim = sectionB->getFiberDimension(*v_iter);
-    CPPUNIT_ASSERT_EQUAL(4, fiberDim);
-    const PylithScalar* values = sectionB->restrictPoint(*v_iter);
-    CPPUNIT_ASSERT(values);
-  } // for
+  PetscSection sectionB = fieldB.petscSection();
+  CPPUNIT_ASSERT(sectionB);
+  for(PetscInt v = vStart; v < vEnd; ++v) {
+    PetscInt dof;
+    err = PetscSectionGetDof(sectionB, v, &dof);CHECK_PETSC_ERROR(err);
+    CPPUNIT_ASSERT_EQUAL(4, dof);
+  }
 
   // Make sure we can clone field B
   Field<Mesh> fieldC(*_mesh);
@@ -276,21 +265,17 @@
 { // testGetConst
   CPPUNIT_ASSERT(0 != _mesh);
   FieldsNewMesh fields(*_mesh);
+  DM dmMesh = _mesh->dmMesh();
+  PetscErrorCode err;
+  CPPUNIT_ASSERT(dmMesh);
 
+  PetscInt       vStart, vEnd;
+  err = DMComplexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+
   fields.add("field A", "velocity", 3, FieldBase::VECTOR);
   fields.add("field B", "displacement", 4, FieldBase::OTHER, 2.0, true);
   fields.allocate(FieldBase::VERTICES_FIELD);
 
-  const ALE::Obj<Mesh::SieveMesh>& sieveMesh = _mesh->sieveMesh();
-  CPPUNIT_ASSERT(!sieveMesh.isNull());
-  const ALE::Obj<Mesh::SieveMesh::label_sequence>& vertices = 
-    sieveMesh->depthStratum(0);
-  CPPUNIT_ASSERT(!vertices.isNull());
-  const Mesh::SieveMesh::label_sequence::iterator verticesBegin =
-    vertices->begin();
-  const Mesh::SieveMesh::label_sequence::iterator verticesEnd =
-    vertices->end();
-
   // Check field A
   const Field<Mesh>& fieldA = fields.get("field A");
   CPPUNIT_ASSERT_EQUAL(std::string("velocity"), std::string(fieldA.label()));
@@ -299,16 +284,14 @@
   CPPUNIT_ASSERT_EQUAL(PylithScalar(1.0), fieldA.scale());
   CPPUNIT_ASSERT_EQUAL(false, fieldA.addDimensionOkay());
 
-  const ALE::Obj<Mesh::RealSection>& sectionA = fieldA.section();
-  CPPUNIT_ASSERT(!sectionA.isNull());
-  for(Mesh::SieveMesh::label_sequence::iterator v_iter = verticesBegin;
-      v_iter != verticesEnd;
-      ++v_iter) {
-    const int fiberDim = sectionA->getFiberDimension(*v_iter);
-    CPPUNIT_ASSERT_EQUAL(3, fiberDim);
-  } // for
+  PetscSection sectionA = fieldA.petscSection();
+  CPPUNIT_ASSERT(sectionA);
+  for(PetscInt v = vStart; v < vEnd; ++v) {
+    PetscInt dof;
+    err = PetscSectionGetDof(sectionA, v, &dof);CHECK_PETSC_ERROR(err);
+    CPPUNIT_ASSERT_EQUAL(3, dof);
+  }
 
-
   // Check field B
   const Field<Mesh>& fieldB = fields.get("field B");
   CPPUNIT_ASSERT_EQUAL(std::string("displacement"), 
@@ -318,14 +301,13 @@
   CPPUNIT_ASSERT_EQUAL(PylithScalar(2.0), fieldB.scale());
   CPPUNIT_ASSERT_EQUAL(true, fieldB.addDimensionOkay());
 
-  const ALE::Obj<Mesh::RealSection>& sectionB = fieldB.section();
-  CPPUNIT_ASSERT(!sectionB.isNull());
-  for(Mesh::SieveMesh::label_sequence::iterator v_iter = verticesBegin;
-      v_iter != verticesEnd;
-      ++v_iter) {
-    const int fiberDim = sectionB->getFiberDimension(*v_iter);
-    CPPUNIT_ASSERT_EQUAL(4, fiberDim);
-  } // for
+  PetscSection sectionB = fieldB.petscSection();
+  CPPUNIT_ASSERT(sectionB);
+  for(PetscInt v = vStart; v < vEnd; ++v) {
+    PetscInt dof;
+    err = PetscSectionGetDof(sectionB, v, &dof);CHECK_PETSC_ERROR(err);
+    CPPUNIT_ASSERT_EQUAL(4, dof);
+  }
 } // testGetConst
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc	2012-10-10 02:15:08 UTC (rev 20816)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestFieldsSubMesh.cc	2012-10-10 12:03:44 UTC (rev 20817)
@@ -86,6 +86,12 @@
 
   CPPUNIT_ASSERT(0 != _submesh);
   FieldsSubMesh fields(*_submesh);
+  DM dmMesh = _submesh->dmMesh();
+  PetscErrorCode err;
+  CPPUNIT_ASSERT(dmMesh);
+
+  PetscInt       vStart, vEnd;
+  err = DMComplexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
   
   const char* label = "field";
   fields.add(label, "velocity", Field<SubMesh>::VERTICES_FIELD, fiberDim);
@@ -93,18 +99,14 @@
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
 
   Field<SubMesh>& field = fields.get(label);
-  const ALE::Obj<RealSection>& section = field.section();
-  CPPUNIT_ASSERT(!section.isNull());
-  const ALE::Obj<SieveMesh>& sieveMesh = _submesh->sieveMesh();
-  CPPUNIT_ASSERT(!sieveMesh.isNull());
-  const ALE::Obj<SieveMesh::label_sequence>& vertices = 
-    sieveMesh->depthStratum(0);
-  CPPUNIT_ASSERT(!vertices.isNull());
   field.allocate();
-  for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
-       v_iter != vertices->end();
-       ++v_iter)
-    CPPUNIT_ASSERT_EQUAL(fiberDim, section->getFiberDimension(*v_iter));
+  PetscSection section = field.petscSection();
+  CPPUNIT_ASSERT(section);
+  for(PetscInt v = vStart; v < vEnd; ++v) {
+    PetscInt dof;
+    err = PetscSectionGetDof(section, v, &dof);CHECK_PETSC_ERROR(err);
+    CPPUNIT_ASSERT_EQUAL(fiberDim, dof);
+  }
 } // testAddDomain
 
 // ----------------------------------------------------------------------
@@ -189,6 +191,12 @@
 
   CPPUNIT_ASSERT(0 != _submesh);
   FieldsSubMesh fields(*_submesh);
+  DM dmMesh = _submesh->dmMesh();
+  PetscErrorCode err;
+  CPPUNIT_ASSERT(dmMesh);
+
+  PetscInt       vStart, vEnd;
+  err = DMComplexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
   
   const char* labelA = "field A";
   fields.add(labelA, "velocity", Field<SubMesh>::VERTICES_FIELD, fiberDim);
@@ -203,17 +211,13 @@
   const size_t size = 2;
   CPPUNIT_ASSERT_EQUAL(size, fields._fields.size());
   const Field<SubMesh>& field = fields.get(labelB);
-  const ALE::Obj<RealSection>& section = field.section();
-  CPPUNIT_ASSERT(!section.isNull());
-  const ALE::Obj<SieveMesh>& sieveMesh = _submesh->sieveMesh();
-  CPPUNIT_ASSERT(!sieveMesh.isNull());
-  const ALE::Obj<SieveMesh::label_sequence>& vertices
-    = sieveMesh->depthStratum(0);
-  CPPUNIT_ASSERT(!vertices.isNull());
-  for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
-       v_iter != vertices->end();
-       ++v_iter)
-    CPPUNIT_ASSERT_EQUAL(fiberDim, section->getFiberDimension(*v_iter));
+  PetscSection section = field.petscSection();
+  CPPUNIT_ASSERT(section);
+  for(PetscInt v = vStart; v < vEnd; ++v) {
+    PetscInt dof;
+    err = PetscSectionGetDof(section, v, &dof);CHECK_PETSC_ERROR(err);
+    CPPUNIT_ASSERT_EQUAL(fiberDim, dof);
+  }
 } // testCopyLayout
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc	2012-10-10 02:15:08 UTC (rev 20816)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.cc	2012-10-10 12:03:44 UTC (rev 20817)
@@ -38,8 +38,9 @@
 pylith::topology::TestJacobian::testConstructor(void)
 { // testConstructor
   Mesh mesh;
+  _initializeMesh(&mesh);
   Field<Mesh> field(mesh);
-  _initialize(&mesh, &field);
+  _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
   Jacobian jacobianB(field, "baij");
@@ -54,8 +55,9 @@
 pylith::topology::TestJacobian::testConstructorSubDomain(void)
 { // testConstructorSubDomain
   Mesh mesh;
+  _initializeMesh(&mesh);
   Field<Mesh> field(mesh);
-  _initialize(&mesh, &field);
+  _initializeField(&mesh, &field);
 
   SubMesh submesh(mesh, "bc");
   Field<SubMesh> subfield(submesh);
@@ -72,8 +74,9 @@
 pylith::topology::TestJacobian::testMatrix(void)
 { // testMatrix
   Mesh mesh;
+  _initializeMesh(&mesh);
   Field<Mesh> field(mesh);
-  _initialize(&mesh, &field);
+  _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
   const PetscMat matrix = jacobian.matrix();
@@ -86,8 +89,9 @@
 pylith::topology::TestJacobian::testAssemble(void)
 { // testAssemble
   Mesh mesh;
+  _initializeMesh(&mesh);
   Field<Mesh> field(mesh);
-  _initialize(&mesh, &field);
+  _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
   jacobian.assemble("flush_assembly");
@@ -100,8 +104,9 @@
 pylith::topology::TestJacobian::testZero(void)
 { // testZero
   Mesh mesh;
+  _initializeMesh(&mesh);
   Field<Mesh> field(mesh);
-  _initialize(&mesh, &field);
+  _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
   jacobian.zero();
@@ -113,8 +118,9 @@
 pylith::topology::TestJacobian::testView(void)
 { // testView
   Mesh mesh;
+  _initializeMesh(&mesh);
   Field<Mesh> field(mesh);
-  _initialize(&mesh, &field);
+  _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
   jacobian.assemble("final_assembly");
@@ -128,8 +134,9 @@
 pylith::topology::TestJacobian::testWrite(void)
 { // testWrite
   Mesh mesh;
+  _initializeMesh(&mesh);
   Field<Mesh> field(mesh);
-  _initialize(&mesh, &field);
+  _initializeField(&mesh, &field);
   Jacobian jacobian(field);
 
   jacobian.assemble("final_assembly");
@@ -139,20 +146,25 @@
 
 // ----------------------------------------------------------------------
 void
-pylith::topology::TestJacobian::_initialize(Mesh* mesh,
-                                            Field<Mesh>* field) const
+pylith::topology::TestJacobian::_initializeMesh(Mesh* mesh) const
 { // _initialize
   CPPUNIT_ASSERT(0 != mesh);
-  CPPUNIT_ASSERT(0 != field);
 
   meshio::MeshIOAscii iohandler;
   iohandler.filename("data/tri3.mesh");
   iohandler.read(mesh);
+} // _initializeMesh
 
+void
+pylith::topology::TestJacobian::_initializeField(Mesh* mesh,
+                                                 Field<Mesh>* field) const
+{ // _initialize
+  CPPUNIT_ASSERT(0 != mesh);
+  CPPUNIT_ASSERT(0 != field);
+
   field->newSection(FieldBase::VERTICES_FIELD, mesh->dimension());
   field->allocate();
   field->zero();
-} // _initialize
+} // _initializeField
 
-
 // End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.hh	2012-10-10 02:15:08 UTC (rev 20816)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestJacobian.hh	2012-10-10 12:03:44 UTC (rev 20817)
@@ -87,9 +87,16 @@
    * @param mesh Finite-element mesh.
    * @param field Solution field.
    */
-  void _initialize(Mesh* mesh,
-                   Field<Mesh>* field) const;
+  void _initializeMesh(Mesh* mesh) const;
 
+  /** Initialize field for Jacobian.
+   *
+   * @param mesh Finite-element mesh.
+   * @param field Solution field.
+   */
+  void _initializeField(Mesh* mesh,
+                        Field<Mesh>* field) const;
+
 }; // class TestJacobian
 
 #endif // pylith_topology_jacobian_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/topology/TestSolutionFields.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/topology/TestSolutionFields.cc	2012-10-10 02:15:08 UTC (rev 20816)
+++ short/3D/PyLith/trunk/unittests/libtests/topology/TestSolutionFields.cc	2012-10-10 12:03:44 UTC (rev 20817)
@@ -60,7 +60,13 @@
   Mesh mesh;
   _initialize(&mesh);
   SolutionFields manager(mesh);
+  DM dmMesh = mesh.dmMesh();
+  PetscErrorCode err;
+  CPPUNIT_ASSERT(dmMesh);
 
+  PetscInt       vStart, vEnd;
+  err = DMComplexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+
   const char* labels[] = { "field A", "field B", "field C" };
   const int size = 3;
   const int fiberDimA = 2;
@@ -70,22 +76,21 @@
   for (int i=0; i < size; ++i)
     manager.add(labels[i], "displacement");
 
-  const ALE::Obj<Mesh::SieveMesh>& sieveMesh = mesh.sieveMesh();
-  const ALE::Obj<Mesh::SieveMesh::label_sequence>& vertices = 
-    sieveMesh->depthStratum(0);
   Field<Mesh>& fieldA = manager.get(labels[0]);
   Field<Mesh>& fieldB = manager.get(labels[1]);
   Field<Mesh>& fieldC = manager.get(labels[2]);
-  fieldA.newSection(vertices, fiberDimA);
+  fieldA.newSection(FieldBase::VERTICES_FIELD, fiberDimA);
 
   fieldB.newSection(fieldA, fiberDimB);
   fieldC.newSection(fieldB, fiberDimC);
 
   manager.solutionName(labels[1]);
   const Field<Mesh>& solution = manager.solution();
-  const ALE::Obj<Mesh::RealSection>& sectionSoln = solution.section();
-  CPPUNIT_ASSERT_EQUAL(fiberDimB,
-		       sectionSoln->getFiberDimension(*(vertices->begin())));
+  PetscSection section = solution.petscSection();
+  CPPUNIT_ASSERT(section);
+  PetscInt dof;
+  err = PetscSectionGetDof(section, vStart, &dof);CHECK_PETSC_ERROR(err);
+  CPPUNIT_ASSERT_EQUAL(fiberDimB, dof);
 } // testSolution
 
 // ----------------------------------------------------------------------



More information about the CIG-COMMITS mailing list