[cig-commits] r21481 - short/3D/PyLith/trunk/libsrc/pylith/bc
brad at geodynamics.org
brad at geodynamics.org
Sat Mar 9 12:25:52 PST 2013
Author: brad
Date: 2013-03-09 12:25:52 -0800 (Sat, 09 Mar 2013)
New Revision: 21481
Modified:
short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc
Log:
Update to use Field helper functions.
Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc 2013-03-09 20:25:31 UTC (rev 21480)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc 2013-03-09 20:25:52 UTC (rev 21481)
@@ -134,6 +134,7 @@
// Container for damping constants for current cell
scalar_array dampingConstsLocal(spaceDim);
+ topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
scalar_array coordinatesCell(numBasis*spaceDim);
PetscSection coordSection = NULL;
@@ -148,17 +149,12 @@
assert(_normalizer->timeScale() > 0);
const PylithScalar velocityScale = _normalizer->lengthScale() / _normalizer->timeScale();
- PetscSection valueSection = _parameters->get("damping constants").petscSection();
- PetscVec valueVec = _parameters->get("damping constants").localVector();
- PetscScalar *dampingConstsArray = NULL;
- assert(valueSection);assert(valueVec);
-
const spatialdata::geocoords::CoordSys* cs = _boundaryMesh->coordsys();
// Compute quadrature information
_quadrature->initializeGeometry();
- err = VecGetArray(valueVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ PetscScalar* dampingConstsArray = dampingConsts.getLocalArray();
for(PetscInt c = cStart; c < cEnd; ++c) {
// Compute geometry information for current cell
const PetscScalar *coords;
@@ -169,11 +165,9 @@
} // for
_quadrature->computeGeometry(coordinatesCell, c);
err = DMPlexVecRestoreClosure(subMesh, coordSection, coordVec, c, &coordsSize, &coords);CHECK_PETSC_ERROR(err);
- PetscInt ddof, doff;
- err = PetscSectionGetDof(valueSection, c, &ddof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(valueSection, c, &doff);CHECK_PETSC_ERROR(err);
- assert(ddof == fiberDim);
+ const PetscInt doff = dampingConsts.sectionOffset(c);
+ assert(fiberDim == dampingConsts.sectionDof(c));
const scalar_array& quadPtsNondim = _quadrature->quadPts();
const scalar_array& quadPtsRef = _quadrature->quadPtsRef();
@@ -182,8 +176,7 @@
for(int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
// Compute damping constants in normal/tangential coordinates
- const int err = _db->query(&queryData[0], numValues,
- &quadPtsGlobal[iQuad*spaceDim], spaceDim, cs);
+ const int err = _db->query(&queryData[0], numValues, &quadPtsGlobal[iQuad*spaceDim], spaceDim, cs);
if (err) {
std::ostringstream msg;
msg << "Could not find parameters for physical properties at \n"
@@ -224,7 +217,7 @@
} // for
} // for
} // for
- err = VecRestoreArray(valueVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ dampingConsts.restoreLocalArray(&dampingConstsArray);
_db->close();
} // initialize
@@ -270,19 +263,17 @@
err = DMPlexCreateSubpointIS(subMesh, &subpointIS);CHECK_PETSC_ERROR(err);
// Get sections
- PetscSection dampingConstsSection = _parameters->get("damping constants").petscSection();
- PetscVec dampingConstsVec = _parameters->get("damping constants").localVector();
- PetscScalar *dampingConstsArray = NULL;
- assert(dampingConstsSection);assert(dampingConstsVec);
+ topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
// Use _cellVector for cell residual.
- PetscSection residualSection = residual.petscSection();assert(residualSection);
PetscVec residualVec = residual.localVector();assert(residualVec);
+ PetscSection residualSection = residual.petscSection();assert(residualSection);
PetscSection residualSubsection = NULL;
err = PetscSectionCreateSubmeshSection(residualSection, subpointIS, &residualSubsection);
-
- PetscSection velSection = fields->get("velocity(t)").petscSection();assert(velSection);
- PetscVec velVec = fields->get("velocity(t)").localVector();assert(velVec);
+
+ topology::Field<topology::Mesh>& velocity = fields->get("velocity(t)");
+ PetscSection velSection = velocity.petscSection();assert(velSection);
+ PetscVec velVec = velocity.localVector();assert(velVec);
PetscSection velSubsection = NULL;
err = PetscSectionCreateSubmeshSection(velSection, subpointIS, &velSubsection);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
@@ -291,9 +282,8 @@
scalar_array coordinatesCell(numBasis*spaceDim);
PetscSection coordSection = NULL;
PetscVec coordVec = NULL;
- err = DMPlexGetCoordinateSection(subMesh, &coordSection);CHECK_PETSC_ERROR(err);
- err = DMGetCoordinatesLocal(subMesh, &coordVec);CHECK_PETSC_ERROR(err);
- assert(coordSection);assert(coordVec);
+ err = DMPlexGetCoordinateSection(subMesh, &coordSection);CHECK_PETSC_ERROR(err);assert(coordSection);
+ err = DMGetCoordinatesLocal(subMesh, &coordVec);CHECK_PETSC_ERROR(err);assert(coordVec);
#endif
_logger->eventEnd(setupEvent);
@@ -301,7 +291,8 @@
_logger->eventBegin(computeEvent);
#endif
- err = VecGetArray(dampingConstsVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ PetscScalar* dampingConstsArray = dampingConsts.getLocalArray();
+
for(PetscInt c = cStart; c < cEnd; ++c) {
// Get geometry information for current cell
#if defined(DETAILED_EVENT_LOGGING)
@@ -331,14 +322,12 @@
// Restrict input fields to cell
const PetscScalar *velArray = NULL;
PetscInt velSize;
- PetscInt ddof, doff;
-
- err = PetscSectionGetDof(dampingConstsSection, c, &ddof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(dampingConstsSection, c, &doff);CHECK_PETSC_ERROR(err);
- assert(ddof == numQuadPts*spaceDim);
err = DMPlexVecGetClosure(subMesh, velSubsection, velVec, c, &velSize, &velArray);CHECK_PETSC_ERROR(err);
assert(velSize == numBasis*spaceDim);
+ const PetscInt doff = dampingConsts.sectionOffset(c);
+ assert(numQuadPts*spaceDim == dampingConsts.sectionDof(c));
+
#if defined(DETAILED_EVENT_LOGGING)
_logger->eventEnd(restrictEvent);
_logger->eventBegin(computeEvent);
@@ -376,7 +365,7 @@
_logger->eventEnd(updateEvent);
#endif
} // for
- err = VecRestoreArray(dampingConstsVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ dampingConsts.restoreLocalArray(&dampingConstsArray);
err = PetscSectionDestroy(&residualSubsection);CHECK_PETSC_ERROR(err);
err = PetscSectionDestroy(&velSubsection);CHECK_PETSC_ERROR(err);
@@ -426,10 +415,7 @@
err = DMPlexCreateSubpointIS(subMesh, &subpointIS);CHECK_PETSC_ERROR(err);
// Get sections
- PetscSection dampingConstsSection = _parameters->get("damping constants").petscSection();
- PetscVec dampingConstsVec = _parameters->get("damping constants").localVector();
- PetscScalar *dampingConstsArray = NULL;
- assert(dampingConstsSection);assert(dampingConstsVec);
+ topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
// Use _cellVector for cell values.
PetscSection residualSection = residual.petscSection();assert(residualSection);
@@ -457,7 +443,8 @@
_logger->eventBegin(computeEvent);
#endif
- err = VecGetArray(dampingConstsVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ PetscScalar* dampingConstsArray = dampingConsts.getLocalArray();
+
for (PetscInt c=cStart; c < cEnd; ++c) {
// Get geometry information for current cell
#if defined(DETAILED_EVENT_LOGGING)
@@ -487,13 +474,12 @@
// Restrict input fields to cell
const PetscScalar *velArray = NULL;
PetscInt velSize;
- PetscInt ddof, doff;
- err = PetscSectionGetDof(dampingConstsSection, c, &ddof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(dampingConstsSection, c, &doff);CHECK_PETSC_ERROR(err);
- assert(ddof == numQuadPts*spaceDim);
err = DMPlexVecGetClosure(subMesh, velSubsection, velVec, c, &velSize, &velArray);CHECK_PETSC_ERROR(err);
assert(velSize == numBasis*spaceDim);
+ const PetscInt doff = dampingConsts.sectionOffset(c);
+ assert(numQuadPts*spaceDim == dampingConsts.sectionDof(c));
+
#if defined(DETAILED_EVENT_LOGGING)
_logger->eventEnd(restrictEvent);
_logger->eventBegin(computeEvent);
@@ -531,7 +517,7 @@
_logger->eventEnd(updateEvent);
#endif
} // for
- err = VecRestoreArray(dampingConstsVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ dampingConsts.restoreLocalArray(&dampingConstsArray);
err = PetscSectionDestroy(&residualSubsection);CHECK_PETSC_ERROR(err);
err = PetscSectionDestroy(&velSubsection);CHECK_PETSC_ERROR(err);
@@ -579,9 +565,7 @@
err = DMPlexCreateSubpointIS(subMesh, &subpointIS);CHECK_PETSC_ERROR(err);
// Get sections
- PetscSection dampingConstsSection = _parameters->get("damping constants").petscSection();assert(dampingConstsSection);
- PetscVec dampingConstsVec = _parameters->get("damping constants").localVector();assert(dampingConstsVec);
- PetscScalar *dampingConstsArray = NULL;
+ topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
const topology::Field<topology::Mesh>& solution = fields->solution();
PetscSection solutionSection = solution.petscSection();assert(solutionSection);
@@ -619,7 +603,8 @@
_logger->eventBegin(computeEvent);
#endif
- err = VecGetArray(dampingConstsVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ PetscScalar* dampingConstsArray = dampingConsts.getLocalArray();
+
for(PetscInt c = cStart; c < cEnd; ++c) {
// Compute geometry information for current cell
#if defined(DETAILED_EVENT_LOGGING)
@@ -643,12 +628,9 @@
#endif
// Get damping constants
- PetscInt ddof, doff;
+ const PetscInt doff = dampingConsts.sectionOffset(c);
+ assert(numQuadPts*spaceDim == dampingConsts.sectionDof(c));
- err = PetscSectionGetDof(dampingConstsSection, c, &ddof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(dampingConstsSection, c, &doff);CHECK_PETSC_ERROR(err);
- assert(ddof == numQuadPts*spaceDim);
-
#if defined(DETAILED_EVENT_LOGGING)
_logger->eventEnd(restrictEvent);
_logger->eventBegin(computeEvent);
@@ -691,7 +673,7 @@
_logger->eventEnd(updateEvent);
#endif
} // for
- err = VecRestoreArray(dampingConstsVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ dampingConsts.restoreLocalArray(&dampingConstsArray);
err = PetscSectionDestroy(&solutionSubsection);CHECK_PETSC_ERROR(err);
err = PetscSectionDestroy(&solutionGlobalSection);CHECK_PETSC_ERROR(err);
err = PetscSectionDestroy(&solutionGlobalSubsection);CHECK_PETSC_ERROR(err);
@@ -749,14 +731,11 @@
_initCellVector();
// Get sections
- PetscSection dampingConstsSection = _parameters->get("damping constants").petscSection();assert(dampingConstsSection);
- PetscVec dampingConstsVec = _parameters->get("damping constants").localVector();assert(dampingConstsVec);
- PetscScalar *dampingConstsArray;
+ topology::Field<topology::SubMesh>& dampingConsts = _parameters->get("damping constants");
PetscSection jacobianSection = jacobian->petscSection();assert(jacobianSection);
PetscVec jacobianVec = jacobian->localVector();assert(jacobianVec);
PetscSection jacobianSubsection;
-
err = PetscSectionCreateSubmeshSection(jacobianSection, subpointIS, &jacobianSubsection);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
@@ -774,7 +753,8 @@
_logger->eventBegin(computeEvent);
#endif
- err = VecGetArray(dampingConstsVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ PetscScalar* dampingConstsArray = dampingConsts.getLocalArray();
+
for(PetscInt c = cStart; c < cEnd; ++c) {
// Compute geometry information for current cell
#if defined(DETAILED_EVENT_LOGGING)
@@ -798,10 +778,8 @@
#endif
// Get damping constants
- PetscInt ddof, doff;
- err = PetscSectionGetDof(dampingConstsSection, c, &ddof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(dampingConstsSection, c, &doff);CHECK_PETSC_ERROR(err);
- assert(ddof == numQuadPts*spaceDim);
+ const PetscInt doff = dampingConsts.sectionOffset(c);
+ assert(numQuadPts*spaceDim == dampingConsts.sectionDof(c));
#if defined(DETAILED_EVENT_LOGGING)
_logger->eventEnd(restrictEvent);
@@ -840,7 +818,7 @@
_logger->eventEnd(updateEvent);
#endif
} // for
- err = VecRestoreArray(dampingConstsVec, &dampingConstsArray);CHECK_PETSC_ERROR(err);
+ dampingConsts.restoreLocalArray(&dampingConstsArray);
err = PetscSectionDestroy(&jacobianSubsection);CHECK_PETSC_ERROR(err);
#if !defined(DETAILED_EVENT_LOGGING)
More information about the CIG-COMMITS
mailing list