[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