[cig-commits] r21807 - short/3D/PyLith/trunk/unittests/libtests/meshio
brad at geodynamics.org
brad at geodynamics.org
Wed Apr 10 17:57:27 PDT 2013
Author: brad
Date: 2013-04-10 17:57:27 -0700 (Wed, 10 Apr 2013)
New Revision: 21807
Modified:
short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMeshCases.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMeshCases.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMeshCases.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc
Log:
Code cleanup.
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc 2013-04-11 00:02:17 UTC (rev 21806)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterBCMesh.cc 2013-04-11 00:57:27 UTC (rev 21807)
@@ -27,6 +27,8 @@
#include "pylith/topology/Mesh.hh" // USES Mesh
#include "pylith/topology/Field.hh" // USES Field
#include "pylith/topology/Fields.hh" // USES Fields
+#include "pylith/topology/Stratum.hh" // USES Stratum
+#include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
#include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
#include "pylith/meshio/DataWriter.hh" // USES DataWriter
#include "pylith/faults/FaultCohesiveKin.hh" // USES FaultCohesiveKin
@@ -41,10 +43,14 @@
void
pylith::meshio::TestDataWriterBCMesh::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
_data = 0;
_mesh = 0;
_submesh = 0;
_flipFault = false;
+
+ PYLITH_METHOD_END;
} // setUp
// ----------------------------------------------------------------------
@@ -52,9 +58,13 @@
void
pylith::meshio::TestDataWriterBCMesh::tearDown(void)
{ // tearDown
+ PYLITH_METHOD_BEGIN;
+
delete _data; _data = 0;
delete _mesh; _mesh = 0;
delete _submesh; _submesh = 0;
+
+ PYLITH_METHOD_END;
} // tearDown
// ----------------------------------------------------------------------
@@ -62,9 +72,11 @@
void
pylith::meshio::TestDataWriterBCMesh::_initialize(void)
{ // _initialize
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
- delete _mesh; _mesh = new topology::Mesh;
+ CPPUNIT_ASSERT(_data);
+
+ delete _mesh; _mesh = new topology::Mesh;CPPUNIT_ASSERT(_mesh);
MeshIOAscii iohandler;
iohandler.filename(_data->meshFilename);
iohandler.read(_mesh);
@@ -73,133 +85,116 @@
cs.setSpaceDim(_mesh->dimension());
_mesh->coordsys(&cs);
- if (0 != _data->faultLabel) {
+ if (_data->faultLabel) {
faults::FaultCohesiveKin fault;
- int firstFaultVertex = 0;
- int firstLagrangeVertex = _mesh->sieveMesh()->getIntSection(_data->faultLabel)->size();
- int firstFaultCell = _mesh->sieveMesh()->getIntSection(_data->faultLabel)->size();
- if (fault.useLagrangeConstraints()) {
- firstFaultCell += _mesh->sieveMesh()->getIntSection(_data->faultLabel)->size();
- }
+ const bool useLagrangeConstraints = true;
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex = 0, firstFaultCell = 0;
+ PetscErrorCode err = DMPlexGetStratumSize(_mesh->dmMesh(), _data->faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
+ if (useLagrangeConstraints) {
+ firstFaultCell += firstLagrangeVertex;
+ } // if
fault.label(_data->faultLabel);
fault.id(_data->faultId);
fault.adjustTopology(_mesh, &firstFaultVertex, &firstLagrangeVertex, &firstFaultCell, _flipFault);
} // if
- delete _submesh; _submesh = new topology::SubMesh(*_mesh, _data->bcLabel);
- const ALE::Obj<topology::Mesh::SieveMesh>& sieveMesh = _mesh->sieveMesh();
- assert(!sieveMesh.isNull());
- const ALE::Obj<topology::SubMesh::SieveMesh>& sieveSubMesh =
- _submesh->sieveMesh();
- assert(!sieveSubMesh.isNull());
- sieveSubMesh->setRealSection("coordinates",
- sieveMesh->getRealSection("coordinates"));
- //_mesh->view("BC mesh");
+ delete _submesh; _submesh = new topology::SubMesh(*_mesh, _data->bcLabel);CPPUNIT_ASSERT(_submesh);
+
+ PYLITH_METHOD_END;
} // _initialize
// ----------------------------------------------------------------------
// Create vertex fields.
void
-pylith::meshio::TestDataWriterBCMesh::_createVertexFields(
- topology::Fields<SubMeshField>* fields) const
+pylith::meshio::TestDataWriterBCMesh::_createVertexFields(topology::Fields<SubMeshField>* fields) const
{ // _createVertexFields
- CPPUNIT_ASSERT(0 != fields);
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
- try {
- const int nfields = _data->numVertexFields;
+ CPPUNIT_ASSERT(fields);
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
- DM dmMesh = _submesh->dmMesh();
- PetscInt vStart, vEnd;
- PetscErrorCode err;
+ const int nfields = _data->numVertexFields;
- CPPUNIT_ASSERT(dmMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ PetscDM dmMesh = _submesh->dmMesh();CPPUNIT_ASSERT(dmMesh);
+ topology::Stratum verticesStratum(dmMesh, topology::Stratum::DEPTH, 0);
+ const PetscInt vStart = verticesStratum.begin();
+ const PetscInt vEnd = verticesStratum.end();
+
+ // Set vertex fields
+ for (int i=0; i < nfields; ++i) {
+ const char* name = _data->vertexFieldsInfo[i].name;
+ const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
+ fields->add(name, name);
+ SubMeshField& field = fields->get(name);
+ field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
+ field.allocate();
+ field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);
- // Set vertex fields
- for (int i=0; i < nfields; ++i) {
- const char* name = _data->vertexFieldsInfo[i].name;
- const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
- fields->add(name, name);
- SubMeshField& field = fields->get(name);
- field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
- field.allocate();
- field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);
-
- PetscSection section = field.petscSection();
- Vec vec = field.localVector();
- PetscScalar *a;
- CPPUNIT_ASSERT(section);CPPUNIT_ASSERT(vec);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
- for(PetscInt v = vStart; v < vEnd; ++v) {
- PetscInt dof, off;
-
- err = PetscSectionGetDof(section, v, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, v, &off);CHECK_PETSC_ERROR(err);
- for(PetscInt d = 0; d < dof; ++d) {
- a[off+d] = _data->vertexFields[i][(v-vStart)*dof+d];
- }
+ topology::VecVisitorMesh fieldVisitor(field);
+ PetscScalar* fieldArray = fieldVisitor.localArray();CPPUNIT_ASSERT(fieldArray);
+
+ for(PetscInt v = vStart, index=0; v < vEnd; ++v) {
+ const PetscInt off = fieldVisitor.sectionOffset(v);
+ CPPUNIT_ASSERT_EQUAL(fiberDim, fieldVisitor.sectionDof(v));
+ for(PetscInt d = 0; d < fiberDim; ++d, ++index) {
+ fieldArray[off+d] = _data->vertexFields[i][index];
} // for
- err = VecRestoreArray(vec, &a);CHECK_PETSC_ERROR(err);
- CPPUNIT_ASSERT_EQUAL(_data->numVertices, vEnd-vStart);
} // for
- } catch (const ALE::Exception& err) {
- throw std::runtime_error(err.msg());
- } // catch
+ CPPUNIT_ASSERT_EQUAL(_data->numVertices, vEnd-vStart);
+ } // for
+
+ PYLITH_METHOD_END;
} // _createVertexFields
// ----------------------------------------------------------------------
// Create cell fields.
void
-pylith::meshio::TestDataWriterBCMesh::_createCellFields(
- topology::Fields<SubMeshField>* fields) const
+pylith::meshio::TestDataWriterBCMesh::_createCellFields(topology::Fields<SubMeshField>* fields) const
{ // _createCellFields
- CPPUNIT_ASSERT(0 != fields);
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
- try {
- const int nfields = _data->numCellFields;
+ CPPUNIT_ASSERT(fields);
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
- DM dmMesh = _submesh->dmMesh();
- PetscInt cStart, cEnd;
- const PetscInt height = 1;
- PetscErrorCode err;
+ const int nfields = _data->numCellFields;
- CPPUNIT_ASSERT(dmMesh);
- err = DMPlexGetHeightStratum(dmMesh, height, &cStart, &cEnd);CHECK_PETSC_ERROR(err);
+ const int height = 1;
+ PetscDM dmMesh = _submesh->dmMesh();CPPUNIT_ASSERT(dmMesh);
+ topology::Stratum cellsStratum(dmMesh, topology::Stratum::HEIGHT, height);
+ const PetscInt cStart = cellsStratum.begin();
+ const PetscInt cEnd = cellsStratum.end();
+ PetscInt numCells = cellsStratum.size();
- // Set cell fields
- for (int i=0; i < nfields; ++i) {
- const char* name = _data->cellFieldsInfo[i].name;
- const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
- fields->add(name, name);
- SubMeshField& field = fields->get(name);
- field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim, height);
- field.allocate();
- field.vectorFieldType(_data->cellFieldsInfo[i].field_type);
-
- PetscSection section = field.petscSection();
- Vec vec = field.localVector();
- PetscScalar *a;
- CPPUNIT_ASSERT(section);CPPUNIT_ASSERT(vec);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
- for(PetscInt c = cStart; c < cEnd; ++c) {
- PetscInt dof, off;
-
- err = PetscSectionGetDof(section, c, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, c, &off);CHECK_PETSC_ERROR(err);
- for(PetscInt d = 0; d < dof; ++d) {
- a[off+d] = _data->cellFields[i][(c-cStart)*dof+d];
- }
+ // Set cell fields
+ for (int i=0; i < nfields; ++i) {
+ const char* name = _data->cellFieldsInfo[i].name;
+ const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
+ fields->add(name, name);
+ SubMeshField& field = fields->get(name);
+ field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim, height);
+ field.allocate();
+ field.vectorFieldType(_data->cellFieldsInfo[i].field_type);
+
+ topology::VecVisitorMesh fieldVisitor(field);
+ PetscScalar* fieldArray = fieldVisitor.localArray();CPPUNIT_ASSERT(fieldArray);
+
+ for(PetscInt c = 0, index = 0; c < numCells; ++c) {
+ const PetscInt cell = c+cStart;
+
+ const PetscInt off = fieldVisitor.sectionOffset(cell);
+ CPPUNIT_ASSERT_EQUAL(fiberDim, fieldVisitor.sectionDof(cell));
+ for(PetscInt d = 0; d < fiberDim; ++d, ++index) {
+ fieldArray[off+d] = _data->cellFields[i][index];
} // for
- err = VecRestoreArray(vec, &a);CHECK_PETSC_ERROR(err);
- CPPUNIT_ASSERT_EQUAL(_data->numCells, cEnd-cStart);
} // for
- } catch (const ALE::Exception& err) {
- throw std::runtime_error(err.msg());
- } // catch
+ CPPUNIT_ASSERT_EQUAL(_data->numCells, numCells);
+ } // for
+
+ PYLITH_METHOD_END;
} // _createCellFields
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc 2013-04-11 00:02:17 UTC (rev 21806)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterSubMesh.cc 2013-04-11 00:57:27 UTC (rev 21807)
@@ -27,6 +27,8 @@
#include "pylith/topology/Mesh.hh" // USES Mesh
#include "pylith/topology/Field.hh" // USES Field
#include "pylith/topology/Fields.hh" // USES Fields
+#include "pylith/topology/Stratum.hh" // USES Stratum
+#include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
#include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
#include "pylith/meshio/DataWriter.hh" // USES DataWriter
#include "pylith/faults/FaultCohesiveKin.hh" // USES FaultCohesiveKin
@@ -42,10 +44,14 @@
void
pylith::meshio::TestDataWriterSubMesh::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
_data = 0;
_mesh = 0;
_submesh = 0;
_flipFault = false;
+
+ PYLITH_METHOD_END;
} // setUp
// ----------------------------------------------------------------------
@@ -53,9 +59,13 @@
void
pylith::meshio::TestDataWriterSubMesh::tearDown(void)
{ // tearDown
+ PYLITH_METHOD_BEGIN;
+
delete _data; _data = 0;
delete _mesh; _mesh = 0;
delete _submesh; _submesh = 0;
+
+ PYLITH_METHOD_END;
} // tearDown
// ----------------------------------------------------------------------
@@ -63,9 +73,11 @@
void
pylith::meshio::TestDataWriterSubMesh::_initialize(void)
{ // _initialize
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
- delete _mesh; _mesh = new topology::Mesh;
+ CPPUNIT_ASSERT(_data);
+
+ delete _mesh; _mesh = new topology::Mesh;CPPUNIT_ASSERT(_mesh);
MeshIOAscii iohandler;
iohandler.filename(_data->meshFilename);
iohandler.read(_mesh);
@@ -74,149 +86,116 @@
cs.setSpaceDim(_mesh->dimension());
_mesh->coordsys(&cs);
- if (0 != _data->faultLabel) {
+ if (_data->faultLabel) {
faults::FaultCohesiveKin fault;
- int firstFaultVertex = 0;
- int firstLagrangeVertex = _mesh->sieveMesh()->getIntSection(_data->faultLabel)->size();
- int firstFaultCell = _mesh->sieveMesh()->getIntSection(_data->faultLabel)->size();
- if (fault.useLagrangeConstraints()) {
- firstFaultCell += _mesh->sieveMesh()->getIntSection(_data->faultLabel)->size();
- }
+ const bool useLagrangeConstraints = true;
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex = 0, firstFaultCell = 0;
+ PetscErrorCode err = DMPlexGetStratumSize(_mesh->dmMesh(), _data->faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
+ if (useLagrangeConstraints) {
+ firstFaultCell += firstLagrangeVertex;
+ } // if
fault.label(_data->faultLabel);
fault.id(_data->faultId);
fault.adjustTopology(_mesh, &firstFaultVertex, &firstLagrangeVertex, &firstFaultCell, _flipFault);
} // if
- CPPUNIT_ASSERT(0 != _data->bcLabel);
- delete _submesh; _submesh = new topology::SubMesh(*_mesh, _data->bcLabel);
- const ALE::Obj<topology::Mesh::SieveMesh>& sieveMesh = _mesh->sieveMesh();
- assert(!sieveMesh.isNull());
- const ALE::Obj<topology::SubMesh::SieveMesh>& sieveSubMesh =
- _submesh->sieveMesh();
- assert(!sieveSubMesh.isNull());
- sieveSubMesh->setRealSection("coordinates",
- sieveMesh->getRealSection("coordinates"));
- //_mesh->view("BC mesh");
+ CPPUNIT_ASSERT(_data->bcLabel);
+ delete _submesh; _submesh = new topology::SubMesh(*_mesh, _data->bcLabel);CPPUNIT_ASSERT(_submesh);
+
+ PYLITH_METHOD_END;
} // _initialize
// ----------------------------------------------------------------------
// Create vertex fields.
void
-pylith::meshio::TestDataWriterSubMesh::_createVertexFields(
- topology::Fields<MeshField>* fields) const
+pylith::meshio::TestDataWriterSubMesh::_createVertexFields(topology::Fields<MeshField>* fields) const
{ // _createVertexFields
- CPPUNIT_ASSERT(0 != fields);
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
- try {
- const int nfields = _data->numVertexFields;
+ CPPUNIT_ASSERT(fields);
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
- DM dmMesh = _mesh->dmMesh();
- PetscInt vStart, vEnd;
- PetscErrorCode err;
+ const int nfields = _data->numVertexFields;
- CPPUNIT_ASSERT(dmMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
-#if 0
- DM dmSubmesh = _submesh->dmMesh();
- IS subpointIS;
- err = DMPlexCreateSubpointIS(dmSubmesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = ISGetIndices(subpointIS, &ind);CHECK_PETSC_ERROR(err);
- err = ISRestoreIndices(subpointIS, &ind);CHECK_PETSC_ERROR(err);
- err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
-#endif
+ PetscDM dmMesh = _mesh->dmMesh();CPPUNIT_ASSERT(dmMesh);
+ topology::Stratum verticesStratum(dmMesh, topology::Stratum::DEPTH, 0);
+ const PetscInt vStart = verticesStratum.begin();
+ const PetscInt vEnd = verticesStratum.end();
- // Set vertex fields
- for (int i=0; i < nfields; ++i) {
- const PetscInt *ind;
- const char* name = _data->vertexFieldsInfo[i].name;
- const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
- fields->add(name, name);
- MeshField& field = fields->get(name);
- field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
- field.allocate();
- field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);
-
- PetscSection section = field.petscSection();
- Vec vec = field.localVector();
- PetscScalar *a;
- CPPUNIT_ASSERT(section);CPPUNIT_ASSERT(vec);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
- for(PetscInt v = vStart; v < vEnd; ++v) {
- PetscInt dof, off;
-
- err =
- err = PetscSectionGetDof(section, v, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, v, &off);CHECK_PETSC_ERROR(err);
- for(PetscInt d = 0; d < dof; ++d) {
- a[off+d] = _data->vertexFields[i][(v-vStart)*dof+d];
- }
+ // Set vertex fields over entire mesh.
+ for (int i=0; i < nfields; ++i) {
+ const char* name = _data->vertexFieldsInfo[i].name;
+ const int fiberDim = _data->vertexFieldsInfo[i].fiber_dim;
+ fields->add(name, name);
+ MeshField& field = fields->get(name);
+ field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
+ field.allocate();
+ field.vectorFieldType(_data->vertexFieldsInfo[i].field_type);
+
+ topology::VecVisitorMesh fieldVisitor(field);
+ PetscScalar* fieldArray = fieldVisitor.localArray();CPPUNIT_ASSERT(fieldArray);
+
+ for(PetscInt v = vStart, index=0; v < vEnd; ++v) {
+ const PetscInt off = fieldVisitor.sectionOffset(v);
+ CPPUNIT_ASSERT_EQUAL(fiberDim, fieldVisitor.sectionDof(v));
+ for(PetscInt d = 0; d < fiberDim; ++d, ++index) {
+ fieldArray[off+d] = _data->vertexFields[i][index];
} // for
- err = VecRestoreArray(vec, &a);CHECK_PETSC_ERROR(err);
- CPPUNIT_ASSERT_EQUAL(_data->numVertices, vEnd-vStart);
} // for
- } catch (const ALE::Exception& err) {
- throw std::runtime_error(err.msg());
- } catch (...) {
- throw;
- } // catch
+ CPPUNIT_ASSERT_EQUAL(_data->numVertices, vEnd-vStart);
+ } // for
+
+ PYLITH_METHOD_END;
} // _createVertexFields
// ----------------------------------------------------------------------
// Create cell fields.
void
-pylith::meshio::TestDataWriterSubMesh::_createCellFields(
- topology::Fields<SubMeshField>* fields) const
+pylith::meshio::TestDataWriterSubMesh::_createCellFields(topology::Fields<SubMeshField>* fields) const
{ // _createCellFields
- CPPUNIT_ASSERT(0 != fields);
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
- try {
- const int nfields = _data->numCellFields;
+ CPPUNIT_ASSERT(fields);
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
- DM dmMesh = _submesh->dmMesh();
- PetscInt cStart, cEnd, numCells;
- PetscErrorCode err;
+ const int nfields = _data->numCellFields;
- CPPUNIT_ASSERT(dmMesh);
- err = DMPlexGetHeightStratum(dmMesh, 1, &cStart, &cEnd);CHECK_PETSC_ERROR(err);
- numCells = cEnd - cStart;
+ PetscDM dmMesh = _submesh->dmMesh();CPPUNIT_ASSERT(dmMesh);
+ topology::Stratum cellsStratum(dmMesh, topology::Stratum::HEIGHT, 1);
+ const PetscInt cStart = cellsStratum.begin();
+ const PetscInt cEnd = cellsStratum.end();
+ PetscInt numCells = cellsStratum.size();
- // Set cell fields
- for (int i=0; i < nfields; ++i) {
- const char* name = _data->cellFieldsInfo[i].name;
- const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
- fields->add(name, name);
- SubMeshField& field = fields->get(name);
- field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim, 1);
- field.allocate();
- field.vectorFieldType(_data->cellFieldsInfo[i].field_type);
+ // Set cell fields
+ for (int i=0; i < nfields; ++i) {
+ const char* name = _data->cellFieldsInfo[i].name;
+ const int fiberDim = _data->cellFieldsInfo[i].fiber_dim;
+ fields->add(name, name);
+ SubMeshField& field = fields->get(name);
+ field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim, 1);
+ field.allocate();
+ field.vectorFieldType(_data->cellFieldsInfo[i].field_type);
- PetscSection section = field.petscSection();
- Vec vec = field.localVector();
- PetscScalar *a;
- CPPUNIT_ASSERT(section);CPPUNIT_ASSERT(vec);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
- for(PetscInt c = 0; c < numCells; ++c) {
- const PetscInt cell = c+cStart;
- PetscInt dof, off;
+ topology::VecVisitorMesh fieldVisitor(field);
+ PetscScalar* fieldArray = fieldVisitor.localArray();CPPUNIT_ASSERT(fieldArray);
+
+ for(PetscInt c = 0, index = 0; c < numCells; ++c) {
+ const PetscInt cell = c+cStart;
- err = PetscSectionGetDof(section, cell, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, cell, &off);CHECK_PETSC_ERROR(err);
- for(PetscInt d = 0; d < dof; ++d) {
- a[off+d] = _data->cellFields[i][c*dof+d];
- }
+ const PetscInt off = fieldVisitor.sectionOffset(cell);
+ CPPUNIT_ASSERT_EQUAL(fiberDim, fieldVisitor.sectionDof(cell));
+ for(PetscInt d = 0; d < fiberDim; ++d, ++index) {
+ fieldArray[off+d] = _data->cellFields[i][index];
} // for
- err = VecRestoreArray(vec, &a);CHECK_PETSC_ERROR(err);
- CPPUNIT_ASSERT_EQUAL(_data->numCells, numCells);
} // for
- } catch (const ALE::Exception& err) {
- throw std::runtime_error(err.msg());
- } catch (...) {
- throw;
- } // catch
+ CPPUNIT_ASSERT_EQUAL(_data->numCells, numCells);
+ } // for
+
+ PYLITH_METHOD_END;
} // _createCellFields
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc 2013-04-11 00:02:17 UTC (rev 21806)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMesh.cc 2013-04-11 00:57:27 UTC (rev 21807)
@@ -40,7 +40,11 @@
void
pylith::meshio::TestDataWriterVTKBCMesh::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterBCMesh::setUp();
+
+ PYLITH_METHOD_END;
} // setUp
// ----------------------------------------------------------------------
@@ -48,7 +52,11 @@
void
pylith::meshio::TestDataWriterVTKBCMesh::tearDown(void)
{ // tearDown
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterBCMesh::tearDown();
+
+ PYLITH_METHOD_END;
} // tearDown
// ----------------------------------------------------------------------
@@ -56,11 +64,15 @@
void
pylith::meshio::TestDataWriterVTKBCMesh::testConstructor(void)
{ // testConstructor
+ PYLITH_METHOD_BEGIN;
+
DataWriterVTK<topology::SubMesh, SubMeshField> writer;
- CPPUNIT_ASSERT(0 == writer._viewer);
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT(!writer._viewer);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
+
+ PYLITH_METHOD_END;
} // testConstructor
// ----------------------------------------------------------------------
@@ -68,20 +80,22 @@
void
pylith::meshio::TestDataWriterVTKBCMesh::testTimeStep(void)
{ // testTimeStep
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
+
DataWriterVTK<topology::SubMesh, SubMeshField> writer;
writer.filename(_data->timestepFilename);
writer.timeFormat(_data->timeFormat);
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
const PylithScalar t = _data->time;
const int numTimeSteps = 1;
- if (0 == _data->cellsLabel) {
+ if (!_data->cellsLabel) {
writer.open(*_submesh, numTimeSteps);
writer.openTimeStep(t, *_submesh);
} else {
@@ -91,17 +105,18 @@
writer.openTimeStep(t, *_submesh, label, id);
} // else
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
writer.closeTimeStep();
writer.close();
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
- // We do not create empty VTK files anymore
- //checkFile(_data->timestepFilename, t, _data->timeFormat);
+ // Nothing to check. We do not create VTK files without fields anymore.
+
+ PYLITH_METHOD_END;
} // testTimeStep
// ----------------------------------------------------------------------
@@ -109,9 +124,11 @@
void
pylith::meshio::TestDataWriterVTKBCMesh::testWriteVertexField(void)
{ // testWriteVertexField
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
+
DataWriterVTK<topology::SubMesh, SubMeshField> writer;
topology::Fields<SubMeshField> vertexFields(*_submesh);
@@ -124,7 +141,7 @@
const PylithScalar t = _data->time;
const int numTimeSteps = 1;
- if (0 == _data->cellsLabel) {
+ if (!_data->cellsLabel) {
writer.open(*_submesh, numTimeSteps);
writer.openTimeStep(t, *_submesh);
} else {
@@ -137,14 +154,16 @@
SubMeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
writer.writeVertexField(t, field, *_submesh);
CPPUNIT_ASSERT(writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
} // for
writer.closeTimeStep();
writer.close();
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
checkFile(_data->vertexFilename, t, _data->timeFormat);
+
+ PYLITH_METHOD_END;
} // testWriteVertexField
// ----------------------------------------------------------------------
@@ -152,9 +171,11 @@
void
pylith::meshio::TestDataWriterVTKBCMesh::testWriteCellField(void)
{ // testWriteCellField
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
+
DataWriterVTK<topology::SubMesh, SubMeshField> writer;
topology::Fields<SubMeshField> cellFields(*_submesh);
@@ -167,13 +188,13 @@
const PylithScalar t = _data->time;
const int numTimeSteps = 1;
- if (0 == _data->cellsLabel) {
+ if (!_data->cellsLabel) {
writer.open(*_submesh, numTimeSteps);
writer.openTimeStep(t, *_submesh);
for (int i=0; i < nfields; ++i) {
SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
writer.writeCellField(t, field);
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
CPPUNIT_ASSERT(writer._wroteCellHeader);
} // for
} else {
@@ -184,16 +205,18 @@
for (int i=0; i < nfields; ++i) {
SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
writer.writeCellField(t, field, label, id);
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
CPPUNIT_ASSERT(writer._wroteCellHeader);
} // for
} // else
writer.closeTimeStep();
writer.close();
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
checkFile(_data->cellFilename, t, _data->timeFormat);
+
+ PYLITH_METHOD_END;
} // testWriteCellField
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMeshCases.cc 2013-04-11 00:02:17 UTC (rev 21806)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKBCMeshCases.cc 2013-04-11 00:57:27 UTC (rev 21807)
@@ -20,6 +20,8 @@
#include "TestDataWriterVTKBCMeshCases.hh" // Implementation of class methods
+#include "pylith/utils/petscerror.h" // USES PYLITH_METHOD_BEGIN/END
+
#include "data/DataWriterVTKDataBCMeshTri3.hh"
#include "data/DataWriterVTKDataBCMeshQuad4.hh"
#include "data/DataWriterVTKDataBCMeshTet4.hh"
@@ -38,10 +40,14 @@
void
pylith::meshio::TestDataWriterVTKBCMeshTri3::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKBCMesh::setUp();
_data = new DataWriterVTKDataBCMeshTri3;
_flipFault = true;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -50,10 +56,14 @@
void
pylith::meshio::TestDataWriterVTKBCMeshQuad4::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKBCMesh::setUp();
_data = new DataWriterVTKDataBCMeshQuad4;
_flipFault = false;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -62,10 +72,14 @@
void
pylith::meshio::TestDataWriterVTKBCMeshTet4::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKBCMesh::setUp();
_data = new DataWriterVTKDataBCMeshTet4;
_flipFault = false;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -74,10 +88,14 @@
void
pylith::meshio::TestDataWriterVTKBCMeshHex8::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKBCMesh::setUp();
_data = new DataWriterVTKDataBCMeshHex8;
_flipFault = true;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMeshCases.cc 2013-04-11 00:02:17 UTC (rev 21806)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMeshCases.cc 2013-04-11 00:57:27 UTC (rev 21807)
@@ -20,6 +20,8 @@
#include "TestDataWriterVTKMeshCases.hh" // Implementation of class methods
+#include "pylith/utils/petscerror.h" // USES PYLITH_METHOD_BEGIN/END
+
#include "data/DataWriterVTKDataMeshLine2.hh" // USES DataWriterVTKDataMeshLine2
#include "data/DataWriterVTKDataMeshTri3.hh" // USES DataWriterVTKDataMeshTri3
#include "data/DataWriterVTKDataMeshQuad4.hh" // USES DataWriterVTKDataMeshQuad4
@@ -40,10 +42,14 @@
void
pylith::meshio::TestDataWriterVTKMeshLine2::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKMesh::setUp();
_data = new DataWriterVTKDataMeshLine2;
_flipFault = false;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -52,10 +58,14 @@
void
pylith::meshio::TestDataWriterVTKMeshTri3::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKMesh::setUp();
_data = new DataWriterVTKDataMeshTri3;
_flipFault = true;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -64,10 +74,14 @@
void
pylith::meshio::TestDataWriterVTKMeshQuad4::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKMesh::setUp();
_data = new DataWriterVTKDataMeshQuad4;
_flipFault = false;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -76,10 +90,14 @@
void
pylith::meshio::TestDataWriterVTKMeshTet4::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKMesh::setUp();
_data = new DataWriterVTKDataMeshTet4;
_flipFault = false;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -88,10 +106,14 @@
void
pylith::meshio::TestDataWriterVTKMeshHex8::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKMesh::setUp();
_data = new DataWriterVTKDataMeshHex8;
_flipFault = true;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc 2013-04-11 00:02:17 UTC (rev 21806)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMesh.cc 2013-04-11 00:57:27 UTC (rev 21807)
@@ -41,7 +41,11 @@
void
pylith::meshio::TestDataWriterVTKSubMesh::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterSubMesh::setUp();
+
+ PYLITH_METHOD_END;
} // setUp
// ----------------------------------------------------------------------
@@ -49,7 +53,11 @@
void
pylith::meshio::TestDataWriterVTKSubMesh::tearDown(void)
{ // tearDown
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterSubMesh::tearDown();
+
+ PYLITH_METHOD_END;
} // tearDown
// ----------------------------------------------------------------------
@@ -57,11 +65,15 @@
void
pylith::meshio::TestDataWriterVTKSubMesh::testConstructor(void)
{ // testConstructor
+ PYLITH_METHOD_BEGIN;
+
DataWriterVTK<topology::SubMesh, MeshField> writer;
- CPPUNIT_ASSERT(0 == writer._viewer);
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT(!writer._viewer);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
+
+ PYLITH_METHOD_END;
} // testConstructor
// ----------------------------------------------------------------------
@@ -69,20 +81,22 @@
void
pylith::meshio::TestDataWriterVTKSubMesh::testTimeStep(void)
{ // testTimeStep
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
+
DataWriterVTK<topology::SubMesh, MeshField> writer;
writer.filename(_data->timestepFilename);
writer.timeFormat(_data->timeFormat);
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
const PylithScalar t = _data->time;
const int numTimeSteps = 1;
- if (0 == _data->cellsLabel) {
+ if (!_data->cellsLabel) {
writer.open(*_submesh, numTimeSteps);
writer.openTimeStep(t, *_submesh);
} else {
@@ -92,17 +106,18 @@
writer.openTimeStep(t, *_submesh, label, id);
} // else
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
writer.closeTimeStep();
writer.close();
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
- // We do not create empty VTK files anymore
- //checkFile(_data->timestepFilename, t, _data->timeFormat);
+ // Nothing to check. We do not create VTK files without fields anymore.
+
+ PYLITH_METHOD_END;
} // testTimeStep
// ----------------------------------------------------------------------
@@ -110,9 +125,11 @@
void
pylith::meshio::TestDataWriterVTKSubMesh::testWriteVertexField(void)
{ // testWriteVertexField
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
+
DataWriterVTK<topology::SubMesh, MeshField> writer;
topology::Fields<MeshField> vertexFields(*_mesh);
@@ -125,7 +142,7 @@
const PylithScalar t = _data->time;
const int numTimeSteps = 1;
- if (0 == _data->cellsLabel) {
+ if (!_data->cellsLabel) {
writer.open(*_submesh, numTimeSteps);
writer.openTimeStep(t, *_submesh);
} else {
@@ -138,14 +155,16 @@
MeshField& field = vertexFields.get(_data->vertexFieldsInfo[i].name);
writer.writeVertexField(t, field, *_submesh);
CPPUNIT_ASSERT(writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
} // for
writer.closeTimeStep();
writer.close();
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
checkFile(_data->vertexFilename, t, _data->timeFormat);
+
+ PYLITH_METHOD_END;
} // testWriteVertexField
// ----------------------------------------------------------------------
@@ -153,9 +172,11 @@
void
pylith::meshio::TestDataWriterVTKSubMesh::testWriteCellField(void)
{ // testWriteCellField
- CPPUNIT_ASSERT(0 != _mesh);
- CPPUNIT_ASSERT(0 != _data);
+ PYLITH_METHOD_BEGIN;
+ CPPUNIT_ASSERT(_mesh);
+ CPPUNIT_ASSERT(_data);
+
DataWriterVTK<topology::SubMesh, SubMeshField> writer;
topology::Fields<SubMeshField> cellFields(*_submesh);
@@ -168,13 +189,13 @@
const PylithScalar t = _data->time;
const int numTimeSteps = 1;
- if (0 == _data->cellsLabel) {
+ if (!_data->cellsLabel) {
writer.open(*_submesh, numTimeSteps);
writer.openTimeStep(t, *_submesh);
for (int i=0; i < nfields; ++i) {
SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
writer.writeCellField(t, field);
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
CPPUNIT_ASSERT(writer._wroteCellHeader);
} // for
} else {
@@ -185,16 +206,18 @@
for (int i=0; i < nfields; ++i) {
SubMeshField& field = cellFields.get(_data->cellFieldsInfo[i].name);
writer.writeCellField(t, field, label, id);
- CPPUNIT_ASSERT(false == writer._wroteVertexHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteVertexHeader);
CPPUNIT_ASSERT(writer._wroteCellHeader);
} // for
} // else
writer.closeTimeStep();
writer.close();
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
- CPPUNIT_ASSERT(false == writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
+ CPPUNIT_ASSERT_EQUAL(false, writer._wroteCellHeader);
checkFile(_data->cellFilename, t, _data->timeFormat);
+
+ PYLITH_METHOD_END;
} // testWriteCellField
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMeshCases.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMeshCases.cc 2013-04-11 00:02:17 UTC (rev 21806)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKSubMeshCases.cc 2013-04-11 00:57:27 UTC (rev 21807)
@@ -20,6 +20,8 @@
#include "TestDataWriterVTKSubMeshCases.hh" // Implementation of class methods
+#include "pylith/utils/petscerror.h" // USES PYLITH_METHOD_BEGIN/END
+
#include "data/DataWriterVTKDataSubMeshLine2.hh"
#include "data/DataWriterVTKDataSubMeshTri3.hh"
#include "data/DataWriterVTKDataSubMeshQuad4.hh"
@@ -40,10 +42,14 @@
void
pylith::meshio::TestDataWriterVTKSubMeshLine2::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKSubMesh::setUp();
_data = new DataWriterVTKDataSubMeshLine2;
_flipFault = false;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -52,10 +58,14 @@
void
pylith::meshio::TestDataWriterVTKSubMeshTri3::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKSubMesh::setUp();
_data = new DataWriterVTKDataSubMeshTri3;
_flipFault = true;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -64,10 +74,14 @@
void
pylith::meshio::TestDataWriterVTKSubMeshQuad4::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKSubMesh::setUp();
_data = new DataWriterVTKDataSubMeshQuad4;
_flipFault = false;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -76,10 +90,14 @@
void
pylith::meshio::TestDataWriterVTKSubMeshTet4::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKSubMesh::setUp();
_data = new DataWriterVTKDataSubMeshTet4;
_flipFault = false;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
@@ -88,10 +106,14 @@
void
pylith::meshio::TestDataWriterVTKSubMeshHex8::setUp(void)
{ // setUp
+ PYLITH_METHOD_BEGIN;
+
TestDataWriterVTKSubMesh::setUp();
_data = new DataWriterVTKDataSubMeshHex8;
_flipFault = true;
_initialize();
+
+ PYLITH_METHOD_END;
} // setUp
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc 2013-04-11 00:02:17 UTC (rev 21806)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestOutputManager.cc 2013-04-11 00:57:27 UTC (rev 21807)
@@ -40,9 +40,7 @@
// ----------------------------------------------------------------------
CPPUNIT_TEST_SUITE_REGISTRATION( pylith::meshio::TestOutputManager );
-// ----------------------------------------------------------------------
-typedef pylith::topology::Mesh::SieveMesh SieveMesh;
-typedef pylith::topology::Mesh::RealSection RealSection;
+ // ----------------------------------------------------------------------
typedef pylith::topology::Field<pylith::topology::Mesh> MeshField;
// ----------------------------------------------------------------------
@@ -50,7 +48,11 @@
void
pylith::meshio::TestOutputManager::testConstructor(void)
{ // testConstructor
+ PYLITH_METHOD_BEGIN;
+
OutputManager<topology::Mesh, MeshField> manager;
+
+ PYLITH_METHOD_END;
} // testConstructor
// ----------------------------------------------------------------------
@@ -58,13 +60,17 @@
void
pylith::meshio::TestOutputManager::testCoordsys(void)
{ // testCoordsys
+ PYLITH_METHOD_BEGIN;
+
OutputManager<topology::Mesh, MeshField> manager;
- CPPUNIT_ASSERT(0 == manager._coordsys);
+ CPPUNIT_ASSERT(!manager._coordsys);
spatialdata::geocoords::CSCart cs;
manager.coordsys(&cs);
CPPUNIT_ASSERT(0 != manager._coordsys);
+
+ PYLITH_METHOD_END;
} // testCoordsys
// ----------------------------------------------------------------------
@@ -72,13 +78,17 @@
void
pylith::meshio::TestOutputManager::testWriter(void)
{ // testWriter
+ PYLITH_METHOD_BEGIN;
+
OutputManager<topology::Mesh, MeshField> manager;
- CPPUNIT_ASSERT(0 == manager._writer);
+ CPPUNIT_ASSERT(!manager._writer);
DataWriterVTK<topology::Mesh, MeshField> writer;
manager.writer(&writer);
- CPPUNIT_ASSERT(0 != manager._writer);
+ CPPUNIT_ASSERT(manager._writer);
+
+ PYLITH_METHOD_END;
} // testWriter
// ----------------------------------------------------------------------
@@ -86,15 +96,19 @@
void
pylith::meshio::TestOutputManager::testVertexFilter(void)
{ // testVertexFilter
+ PYLITH_METHOD_BEGIN;
+
OutputManager<topology::Mesh, MeshField> manager;
- CPPUNIT_ASSERT(0 == manager._vertexFilter);
- CPPUNIT_ASSERT(0 == manager._cellFilter);
+ CPPUNIT_ASSERT(!manager._vertexFilter);
+ CPPUNIT_ASSERT(!manager._cellFilter);
VertexFilterVecNorm<MeshField> filter;
manager.vertexFilter(&filter);
- CPPUNIT_ASSERT(0 != manager._vertexFilter);
- CPPUNIT_ASSERT(0 == manager._cellFilter);
+ CPPUNIT_ASSERT(manager._vertexFilter);
+ CPPUNIT_ASSERT(!manager._cellFilter);
+
+ PYLITH_METHOD_END;
} // testVertexFilter
// ----------------------------------------------------------------------
@@ -102,15 +116,19 @@
void
pylith::meshio::TestOutputManager::testCellFilter(void)
{ // testCellFilter
+ PYLITH_METHOD_BEGIN;
+
OutputManager<topology::Mesh, MeshField> manager;
- CPPUNIT_ASSERT(0 == manager._vertexFilter);
- CPPUNIT_ASSERT(0 == manager._cellFilter);
+ CPPUNIT_ASSERT(!manager._vertexFilter);
+ CPPUNIT_ASSERT(!manager._cellFilter);
CellFilterAvg<topology::Mesh, MeshField> filter;
manager.cellFilter(&filter);
- CPPUNIT_ASSERT(0 != manager._cellFilter);
- CPPUNIT_ASSERT(0 == manager._vertexFilter);
+ CPPUNIT_ASSERT(manager._cellFilter);
+ CPPUNIT_ASSERT(!manager._vertexFilter);
+
+ PYLITH_METHOD_END;
} // testCellFilter
// ----------------------------------------------------------------------
@@ -118,6 +136,8 @@
void
pylith::meshio::TestOutputManager::testOpenClose(void)
{ // testOpenClose
+ PYLITH_METHOD_BEGIN;
+
OutputManager<topology::Mesh, MeshField> manager;
topology::Mesh mesh;
@@ -135,6 +155,8 @@
manager.open(mesh, numTimeSteps);
manager.close();
+
+ PYLITH_METHOD_END;
} // testOpenClose
// ----------------------------------------------------------------------
@@ -142,6 +164,8 @@
void
pylith::meshio::TestOutputManager::testOpenCloseTimeStep(void)
{ // testOpenCloseTimeStep
+ PYLITH_METHOD_BEGIN;
+
OutputManager<topology::Mesh, MeshField> manager;
topology::Mesh mesh;
@@ -165,8 +189,9 @@
manager.closeTimeStep();
manager.close();
- // We do not create empty VTK files anymore
- //TestDataWriterVTK::checkFile(filenameRoot, t, timeFormat);
+ // Nothing to check. We do not create VTK files without fields anymore.
+
+ PYLITH_METHOD_END;
} // testOpenCloseTimeStep
// ----------------------------------------------------------------------
@@ -174,6 +199,8 @@
void
pylith::meshio::TestOutputManager::testAppendVertexField(void)
{ // testAppendVertexField
+ PYLITH_METHOD_BEGIN;
+
const char* meshFilename = "data/tri3.mesh";
const int fiberDim = 2;
const int nvertices = 4;
@@ -194,34 +221,28 @@
iohandler.read(&mesh);
// Set vertex field
- DM dmMesh = mesh.dmMesh();
- PetscInt vStart, vEnd;
- PetscErrorCode err;
+ PetscDM dmMesh = mesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
+ topology::Stratum verticesStratum(dmMesh, topology::Stratum::DEPTH, 0);
+ const PetscInt vStart = verticesStratum.begin();
+ const PetscInt vEnd = verticesStratum.end();
- CPPUNIT_ASSERT(dmMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
-
MeshField field(mesh);
field.newSection(topology::FieldBase::VERTICES_FIELD, fiberDim);
field.allocate();
field.label(label);
field.vectorFieldType(fieldType);
field.scale(scale);
- PetscSection section = field.petscSection();
- Vec vec = field.localVector();
- PetscScalar *a;
- CPPUNIT_ASSERT(section);CPPUNIT_ASSERT(vec);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
- for(PetscInt v = vStart; v < vEnd; ++v) {
- PetscInt dof, off;
- err = PetscSectionGetDof(section, v, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, v, &off);CHECK_PETSC_ERROR(err);
- for(PetscInt d = 0; d < dof; ++d) {
- a[off+d] = fieldValues[(v-vStart)*dof+d]/scale;
- }
+ topology::VecVisitorMesh fieldVisitor(field);
+ PetscScalar* fieldArray = fieldVisitor.localArray();CPPUNIT_ASSERT(fieldArray);
+
+ for(PetscInt v = vStart, index=0; v < vEnd; ++v) {
+ const PetscInt off = fieldVisitor.sectionOffset(v);
+ CPPUNIT_ASSERT_EQUAL(fiberDim, fieldVisitor.sectionDof(v));
+ for(PetscInt d = 0; d < fiberDim; ++d, ++index) {
+ fieldArray[off+d] = fieldValues[index]/scale;
+ } // for
} // for
- err = VecRestoreArray(vec, &a);CHECK_PETSC_ERROR(err);
CPPUNIT_ASSERT_EQUAL(nvertices, vEnd-vStart);
spatialdata::geocoords::CSCart cs;
@@ -257,6 +278,8 @@
manager.close();
TestDataWriterVTK::checkFile(filenameRootF, t, timeFormat);
+
+ PYLITH_METHOD_END;
} // testAppendVertexField
// ----------------------------------------------------------------------
@@ -264,6 +287,7 @@
void
pylith::meshio::TestOutputManager::testAppendCellField(void)
{ // testAppendCellField
+ PYLITH_METHOD_BEGIN;
const char* meshFilename = "data/tri3.mesh";
const int fiberDim = 2;
@@ -283,36 +307,31 @@
iohandler.read(&mesh);
// Set cell field
- DM dmMesh = mesh.dmMesh();
- PetscInt cStart, cEnd, numCells;
- PetscErrorCode err;
+ PetscDM dmMesh = mesh.dmMesh();CPPUNIT_ASSERT(dmMesh);
+ topology::Stratum cellsStratum(dmMesh, topology::Stratum::HEIGHT, 0);
+ const PetscInt cStart = cellsStratum.begin();
+ const PetscInt cEnd = cellsStratum.end();
+ PetscInt numCells = cellsStratum.size();
- CPPUNIT_ASSERT(dmMesh);
- err = DMPlexGetHeightStratum(dmMesh, 0, &cStart, &cEnd);CHECK_PETSC_ERROR(err);
- numCells = cEnd - cStart;
-
MeshField field(mesh);
field.newSection(topology::FieldBase::CELLS_FIELD, fiberDim);
field.allocate();
field.label(label);
field.vectorFieldType(fieldType);
field.scale(scale);
- PetscSection section = field.petscSection();
- Vec vec = field.localVector();
- PetscScalar *a;
- CPPUNIT_ASSERT(section);CPPUNIT_ASSERT(vec);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
- for(PetscInt c = 0; c < numCells; ++c) {
+
+ topology::VecVisitorMesh fieldVisitor(field);
+ PetscScalar* fieldArray = fieldVisitor.localArray();CPPUNIT_ASSERT(fieldArray);
+
+ for(PetscInt c = 0, index = 0; c < numCells; ++c) {
const PetscInt cell = c+cStart;
- PetscInt dof, off;
-
- err = PetscSectionGetDof(section, cell, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, cell, &off);CHECK_PETSC_ERROR(err);
- for(PetscInt d = 0; d < dof; ++d) {
- a[off+d] = fieldValues[c*dof+d]/scale;
- }
+
+ const PetscInt off = fieldVisitor.sectionOffset(cell);
+ CPPUNIT_ASSERT_EQUAL(fiberDim, fieldVisitor.sectionDof(cell));
+ for(PetscInt d = 0; d < fiberDim; ++d, ++index) {
+ fieldArray[off+d] = fieldValues[index]/scale;
+ } // for
} // for
- err = VecRestoreArray(vec, &a);CHECK_PETSC_ERROR(err);
CPPUNIT_ASSERT_EQUAL(ncells, cEnd-cStart);
spatialdata::geocoords::CSCart cs;
@@ -378,6 +397,8 @@
manager.close();
TestDataWriterVTK::checkFile(filenameRootF, t, timeFormat);
+
+ PYLITH_METHOD_END;
} // testAppendCellField
More information about the CIG-COMMITS
mailing list