[cig-commits] r21360 - in short/3D/PyLith/trunk/libsrc/pylith: faults meshio problems topology
knepley at geodynamics.org
knepley at geodynamics.org
Tue Feb 12 16:31:10 PST 2013
Author: knepley
Date: 2013-02-12 16:31:10 -0800 (Tue, 12 Feb 2013)
New Revision: 21360
Modified:
short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc
short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.cc
short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc
short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc
Log:
Fixed PetscObject problems, Fix exclusions in surface VecScatter
Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc 2013-02-12 14:44:14 UTC (rev 21359)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc 2013-02-13 00:31:10 UTC (rev 21360)
@@ -867,7 +867,7 @@
#ifdef USE_DMCOMPLEX_ON
err = PetscSectionSetUp(newCoordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionGetStorageSize(newCoordSection, &coordSize);CHECK_PETSC_ERROR(err);
- err = VecCreate(((PetscObject) newMesh)->comm, &newCoordinatesVec);CHECK_PETSC_ERROR(err);
+ err = VecCreate(mesh->comm(), &newCoordinatesVec);CHECK_PETSC_ERROR(err);
err = VecSetSizes(newCoordinatesVec, coordSize, PETSC_DETERMINE);CHECK_PETSC_ERROR(err);
err = VecSetFromOptions(newCoordinatesVec);CHECK_PETSC_ERROR(err);
err = VecGetArray(coordinatesVec, &coords);CHECK_PETSC_ERROR(err);
Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc 2013-02-12 14:44:14 UTC (rev 21359)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveImpulses.cc 2013-02-13 00:31:10 UTC (rev 21360)
@@ -389,8 +389,9 @@
// Gather number of points on each processor.
const int numImpulsesLocal = pointOrder.size();
- MPI_Comm comm = ((PetscObject) faultDMMesh)->comm;
+ MPI_Comm comm;
PetscMPIInt commSize, commRank;
+ err = PetscObjectGetComm((PetscObject) faultDMMesh, &comm);CHECK_PETSC_ERROR(err);
err = MPI_Comm_size(comm, &commSize);CHECK_PETSC_ERROR(err);
err = MPI_Comm_rank(comm, &commRank);CHECK_PETSC_ERROR(err);
int_array numImpulsesAll(commSize);
Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc 2013-02-12 14:44:14 UTC (rev 21359)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc 2013-02-13 00:31:10 UTC (rev 21360)
@@ -1367,11 +1367,13 @@
up[i] = upDir[i];
// Get vertices in fault mesh.
+ MPI_Comm comm;
DM faultDMMesh = _faultMesh->dmMesh();
PetscInt vStart, vEnd, cStart, cEnd;
PetscErrorCode err;
assert(faultDMMesh);
+ err = PetscObjectGetComm((PetscObject) faultDMMesh, &comm);CHECK_PETSC_ERROR(err);
err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
err = DMPlexGetHeightStratum(faultDMMesh, 0, &cStart, &cEnd);CHECK_PETSC_ERROR(err);
@@ -1545,7 +1547,7 @@
} // if
// Collect flip decisions across all processors
int flipGlobal = 0;
- MPI_Allreduce(&flipLocal, &flipGlobal, 1, MPI_INT, MPI_SUM, ((PetscObject) faultDMMesh)->comm);
+ MPI_Allreduce(&flipLocal, &flipGlobal, 1, MPI_INT, MPI_SUM, comm);
const int ishear = 0;
const int inormal = 2;
@@ -1616,7 +1618,7 @@
// Collect flip decisions across all processors
int flipGlobal = 0;
- MPI_Allreduce(&flipLocal, &flipGlobal, 1, MPI_INT, MPI_SUM, ((PetscObject) faultDMMesh)->comm);
+ MPI_Allreduce(&flipLocal, &flipGlobal, 1, MPI_INT, MPI_SUM, comm);
const int istrike = 0;
const int idip = 3;
@@ -2003,7 +2005,8 @@
MPI_Comm comm;
PetscMPIInt rank;
- err = MPI_Comm_rank(((PetscObject) faultDMMesh)->comm, &rank);CHECK_PETSC_ERROR(err);
+ err = PetscObjectGetComm((PetscObject) faultDMMesh, &comm);CHECK_PETSC_ERROR(err);
+ err = MPI_Comm_rank(comm, &rank);CHECK_PETSC_ERROR(err);
// Loop over cells in fault mesh, set partition
err = VecGetArray(partitionVec, &partitionArray);CHECK_PETSC_ERROR(err);
for(PetscInt c = cStart; c < cEnd; ++c) {
Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc 2013-02-12 14:44:14 UTC (rev 21359)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc 2013-02-13 00:31:10 UTC (rev 21360)
@@ -96,9 +96,11 @@
DM dmMesh = mesh.dmMesh();
assert(dmMesh);
+ MPI_Comm comm;
PetscMPIInt commRank;
- PetscErrorCode err = MPI_Comm_rank(((PetscObject) dmMesh)->comm, &commRank);CHECK_PETSC_ERROR(err);
+ PetscErrorCode err = PetscObjectGetComm((PetscObject) dmMesh, &comm);CHECK_PETSC_ERROR(err);
+ err = MPI_Comm_rank(comm, &commRank);CHECK_PETSC_ERROR(err);
if (!commRank) {
_h5->open(_hdf5Filename().c_str(), H5F_ACC_TRUNC);
@@ -155,13 +157,13 @@
err = PetscSectionGetDof(coordSection, vertex, &dimLocal);CHECK_PETSC_ERROR(err);
if (dimLocal) break;
}
- err = MPI_Allreduce(&dimLocal, &dim, 1, MPIU_INT, MPI_MAX, mesh.comm());CHECK_PETSC_ERROR(err);
+ err = MPI_Allreduce(&dimLocal, &dim, 1, MPIU_INT, MPI_MAX, comm);CHECK_PETSC_ERROR(err);
verticesSize = vEnd - vStart;
PetscVec coordVec;
PetscScalar *coords, *c;
- err = VecCreate(mesh.comm(), &coordVec);CHECK_PETSC_ERROR(err);
+ err = VecCreate(comm, &coordVec);CHECK_PETSC_ERROR(err);
err = VecSetSizes(coordVec, verticesSize*dim, PETSC_DETERMINE);CHECK_PETSC_ERROR(err);
err = VecSetBlockSize(coordVec, dim);CHECK_PETSC_ERROR(err);
err = VecSetFromOptions(coordVec);CHECK_PETSC_ERROR(err);
@@ -182,7 +184,7 @@
#endif
const std::string& filenameVertices = _datasetFilename("vertices");
- err = PetscViewerBinaryOpen(((PetscObject) dmMesh)->comm, filenameVertices.c_str(),
+ err = PetscViewerBinaryOpen(comm, filenameVertices.c_str(),
FILE_MODE_WRITE,
&binaryViewer);
CHECK_PETSC_ERROR(err);
@@ -212,8 +214,7 @@
#if 0
int cellDepthLocal = (sieveMesh->depth() == -1) ? -1 : 1;
int cellDepth = 0;
- err = MPI_Allreduce(&cellDepthLocal, &cellDepth, 1, MPI_INT, MPI_MAX,
- ((PetscObject) dmMesh)->comm);CHECK_PETSC_ERROR(err);
+ err = MPI_Allreduce(&cellDepthLocal, &cellDepth, 1, MPI_INT, MPI_MAX, comm);CHECK_PETSC_ERROR(err);
const int depth = (0 == label) ? cellDepth : labelId;
const std::string labelName = (0 == label) ?
((sieveMesh->hasLabel("censored depth")) ?
@@ -229,8 +230,7 @@
if (cells->size() > 0)
numCornersLocal = sieveMesh->getNumCellCorners(*cells->begin());
int numCorners = numCornersLocal;
- err = MPI_Allreduce(&numCornersLocal, &numCorners, 1, MPI_INT, MPI_MAX,
- ((PetscObject) dmMesh)->comm); CHECK_PETSC_ERROR(err);
+ err = MPI_Allreduce(&numCornersLocal, &numCorners, 1, MPI_INT, MPI_MAX, comm); CHECK_PETSC_ERROR(err);
PylithScalar* tmpVertices = 0;
const int ncells = cNumbering->getLocalSize();
@@ -271,7 +271,7 @@
}
PetscVec elemVec;
- err = VecCreateMPIWithArray(((PetscObject) dmMesh)->comm, numCorners, conesSize, PETSC_DETERMINE,
+ err = VecCreateMPIWithArray(comm, numCorners, conesSize, PETSC_DETERMINE,
tmpVertices, &elemVec); CHECK_PETSC_ERROR(err);
err = PetscObjectSetName((PetscObject) elemVec, "cells");CHECK_PETSC_ERROR(err);
#else
@@ -295,7 +295,7 @@
err = DMPlexRestoreTransitiveClosure(dmMesh, cell, PETSC_TRUE, &closureSize, &closure);CHECK_PETSC_ERROR(err);
if (numCornersLocal) break;
}
- err = MPI_Allreduce(&numCornersLocal, &numCorners, 1, MPIU_INT, MPI_MAX, mesh.comm());CHECK_PETSC_ERROR(err);
+ err = MPI_Allreduce(&numCornersLocal, &numCorners, 1, MPIU_INT, MPI_MAX, comm);CHECK_PETSC_ERROR(err);
if (label) {
conesSize = 0;
for(PetscInt cell = cStart; cell < cEnd; ++cell) {
@@ -317,7 +317,7 @@
err = DMPlexGetVertexNumbering(dmMesh, &globalVertexNumbers);CHECK_PETSC_ERROR(err);
err = ISGetIndices(globalVertexNumbers, &gvertex);CHECK_PETSC_ERROR(err);
- err = VecCreate(mesh.comm(), &cellVec);CHECK_PETSC_ERROR(err);
+ err = VecCreate(comm, &cellVec);CHECK_PETSC_ERROR(err);
err = VecSetSizes(cellVec, conesSize, PETSC_DETERMINE);CHECK_PETSC_ERROR(err);
err = VecSetBlockSize(cellVec, numCorners);CHECK_PETSC_ERROR(err);
err = VecSetFromOptions(cellVec);CHECK_PETSC_ERROR(err);
@@ -351,7 +351,7 @@
#endif
const std::string& filenameCells = _datasetFilename("cells");
- err = PetscViewerBinaryOpen(((PetscObject) dmMesh)->comm, filenameCells.c_str(),
+ err = PetscViewerBinaryOpen(comm, filenameCells.c_str(),
FILE_MODE_WRITE, &binaryViewer);CHECK_PETSC_ERROR(err);
err = PetscViewerBinarySetSkipHeader(binaryViewer, PETSC_TRUE);CHECK_PETSC_ERROR(err);
err = VecView(elemVec, binaryViewer);CHECK_PETSC_ERROR(err);
@@ -425,11 +425,13 @@
const char* context = DataWriter<mesh_type, field_type>::_context.c_str();
DM dmMesh = mesh.dmMesh();
+ MPI_Comm comm;
PetscMPIInt commRank;
PetscErrorCode err;
assert(dmMesh);
- err = MPI_Comm_rank(((PetscObject) dmMesh)->comm, &commRank);CHECK_PETSC_ERROR(err);
+ err = PetscObjectGetComm((PetscObject) dmMesh, &comm);CHECK_PETSC_ERROR(err);
+ err = MPI_Comm_rank(comm, &commRank);CHECK_PETSC_ERROR(err);
field.createScatterWithBC(mesh, "", 0, context);
field.scatterSectionToVector(context);
PetscVec vector = field.vector(context);
@@ -445,7 +447,7 @@
if (_datasets.find(field.label()) != _datasets.end()) {
binaryViewer = _datasets[field.label()].viewer;
} else {
- err = PetscViewerBinaryOpen(((PetscObject) dmMesh)->comm,
+ err = PetscViewerBinaryOpen(comm,
_datasetFilename(field.label()).c_str(),
FILE_MODE_WRITE, &binaryViewer);
CHECK_PETSC_ERROR(err);
@@ -481,8 +483,8 @@
}
int fiberDimLocal = dof;
int fiberDim = 0;
- err = MPI_Allreduce(&fiberDimLocal, &fiberDim, 1, MPI_INT, MPI_MAX, ((PetscObject) dmMesh)->comm);CHECK_PETSC_ERROR(err);
- err = MPI_Allreduce(&numLocalVertices, &numVertices, 1, MPI_INT, MPI_SUM, ((PetscObject) dmMesh)->comm);CHECK_PETSC_ERROR(err);
+ err = MPI_Allreduce(&fiberDimLocal, &fiberDim, 1, MPI_INT, MPI_MAX, comm);CHECK_PETSC_ERROR(err);
+ err = MPI_Allreduce(&numLocalVertices, &numVertices, 1, MPI_INT, MPI_SUM, comm);CHECK_PETSC_ERROR(err);
assert(fiberDim > 0);assert(numVertices > 0);
if (!commRank) {
@@ -560,11 +562,13 @@
const char* context = DataWriter<mesh_type, field_type>::_context.c_str();
DM dmMesh = field.mesh().dmMesh();
+ MPI_Comm comm;
PetscMPIInt commRank;
PetscErrorCode err;
assert(dmMesh);
- err = MPI_Comm_rank(((PetscObject) dmMesh)->comm, &commRank);CHECK_PETSC_ERROR(err);
+ err = PetscObjectGetComm((PetscObject) dmMesh, &comm);CHECK_PETSC_ERROR(err);
+ err = MPI_Comm_rank(comm, &commRank);CHECK_PETSC_ERROR(err);
field.createScatterWithBC(field.mesh(), label ? label : "", labelId, context);
field.scatterSectionToVector(context);
PetscVec vector = field.vector(context);
@@ -580,7 +584,7 @@
if (_datasets.find(field.label()) != _datasets.end()) {
binaryViewer = _datasets[field.label()].viewer;
} else {
- err = PetscViewerBinaryOpen(((PetscObject) dmMesh)->comm,
+ err = PetscViewerBinaryOpen(comm,
_datasetFilename(field.label()).c_str(),
FILE_MODE_WRITE, &binaryViewer);
CHECK_PETSC_ERROR(err);
@@ -635,8 +639,8 @@
}
int fiberDimLocal = dof;
int fiberDim = 0;
- MPI_Allreduce(&fiberDimLocal, &fiberDim, 1, MPI_INT, MPI_MAX, ((PetscObject) dmMesh)->comm);
- err = MPI_Allreduce(&numLocalCells, &numCells, 1, MPI_INT, MPI_SUM, ((PetscObject) dmMesh)->comm);CHECK_PETSC_ERROR(err);
+ MPI_Allreduce(&fiberDimLocal, &fiberDim, 1, MPI_INT, MPI_MAX, comm);
+ err = MPI_Allreduce(&numLocalCells, &numCells, 1, MPI_INT, MPI_SUM, comm);CHECK_PETSC_ERROR(err);
assert(fiberDim > 0);assert(numCells > 0);
if (!commRank) {
Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.cc 2013-02-12 14:44:14 UTC (rev 21359)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/OutputSolnPoints.cc 2013-02-13 00:31:10 UTC (rev 21360)
@@ -109,10 +109,12 @@
// Setup interpolator object
DM dm = _mesh->dmMesh();
+ MPI_Comm comm;
PetscErrorCode err = 0;
assert(dm);
- err = DMInterpolationCreate(((PetscObject) dm)->comm, &_interpolator);CHECK_PETSC_ERROR(err);
+ err = PetscObjectGetComm((PetscObject) dm, &comm);CHECK_PETSC_ERROR(err);
+ err = DMInterpolationCreate(comm, &_interpolator);CHECK_PETSC_ERROR(err);
err = DMInterpolationSetDim(_interpolator, spaceDim);CHECK_PETSC_ERROR(err);
Modified: short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc 2013-02-12 14:44:14 UTC (rev 21359)
+++ short/3D/PyLith/trunk/libsrc/pylith/problems/Solver.cc 2013-02-13 00:31:10 UTC (rev 21360)
@@ -209,6 +209,7 @@
assert(formulation);
DM dmMesh = fields.mesh().dmMesh();
+ MPI_Comm comm;
assert(dmMesh);
PetscSection solutionSection = fields.solution().petscSection();
Vec solutionVec = fields.solution().localVector();
@@ -220,6 +221,7 @@
const bool separateComponents = formulation->splitFieldComponents();
assert(solutionSection);
+ err = PetscObjectGetComm((PetscObject) dmMesh, &comm);CHECK_PETSC_ERROR(err);
err = DMPlexGetDimension(dmMesh, &spaceDim);CHECK_PETSC_ERROR(err);
err = PetscSectionGetNumFields(solutionSection, &numFields);CHECK_PETSC_ERROR(err);
@@ -244,7 +246,7 @@
err = PetscSectionGetStorageSize(lagrangeSection, &nrows);CHECK_PETSC_ERROR(err);
ncols = nrows;
- err = MatCreate(((PetscObject) dmMesh)->comm, &_jacobianPCFault);CHECK_PETSC_ERROR(err);
+ err = MatCreate(comm, &_jacobianPCFault);CHECK_PETSC_ERROR(err);
err = MatSetSizes(_jacobianPCFault, nrows, ncols,
PETSC_DECIDE, PETSC_DECIDE);CHECK_PETSC_ERROR(err);
err = MatSetType(_jacobianPCFault, MATAIJ);CHECK_PETSC_ERROR(err);
@@ -346,7 +348,7 @@
err = VecMAXPY(mode[i], i, dots, mode);CHECK_PETSC_ERROR(err);
err = VecNormalize(mode[i], PETSC_NULL);CHECK_PETSC_ERROR(err);
} // for
- err = MatNullSpaceCreate(((PetscObject) dmMesh)->comm, PETSC_FALSE, m, mode, &nullsp);CHECK_PETSC_ERROR(err);
+ err = MatNullSpaceCreate(comm, PETSC_FALSE, m, mode, &nullsp);CHECK_PETSC_ERROR(err);
for(int i = 0; i< m; ++i) {err = VecDestroy(&mode[i]);CHECK_PETSC_ERROR(err);}
} // if
Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc 2013-02-12 14:44:14 UTC (rev 21359)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc 2013-02-13 00:31:10 UTC (rev 21360)
@@ -1609,7 +1609,7 @@
err = PetscSectionGetDof(section, q, &dof);CHECK_PETSC_ERROR(err);
if (dof) {
err = PetscFindInt(q, n, ind, &p);CHECK_PETSC_ERROR(err);
- if (p >= pStart) {
+ if ((p >= pStart) && (p < pEnd)) {
err = PetscSectionSetDof(subSection, p, dof);CHECK_PETSC_ERROR(err);
err = PetscSectionGetOffset(section, q, &off);CHECK_PETSC_ERROR(err);
err = PetscSectionSetOffset(subSection, p, off);CHECK_PETSC_ERROR(err);
@@ -1619,7 +1619,10 @@
err = ISRestoreIndices(subpointIS, &ind);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
/* No need to setup section */
+ err = PetscSectionView(subSection, PETSC_VIEWER_STDOUT_WORLD);CHECK_PETSC_ERROR(err);
section = subSection;
+ /* There are no excludes for surface meshes */
+ numExcludes = 0;
}
err = DMPlexClone(_dm, &sinfo.dm);CHECK_PETSC_ERROR(err);
@@ -1634,6 +1637,9 @@
err = DMPlexGetLabel(sinfo.dm, labelName.c_str(), &label);CHECK_PETSC_ERROR(err);
err = PetscSectionCreateGlobalSectionLabel(section, sf, PETSC_TRUE, label, labelValue, &gsection);CHECK_PETSC_ERROR(err);
}
+ if (((dim != dimF) || ((pEnd-pStart) < (qEnd-qStart))) && subpointMap && !subpointMapF) {
+ err = PetscSectionView(gsection, PETSC_VIEWER_STDOUT_WORLD);CHECK_PETSC_ERROR(err);
+ }
err = DMSetDefaultGlobalSection(sinfo.dm, gsection);CHECK_PETSC_ERROR(err);
err = DMCreateGlobalVector(sinfo.dm, &sinfo.vector);CHECK_PETSC_ERROR(err);
err = PetscObjectSetName((PetscObject) sinfo.vector, _metadata["default"].label.c_str());CHECK_PETSC_ERROR(err);
More information about the CIG-COMMITS
mailing list