[cig-commits] [commit] knepley/fix-fault-pc-multiple: Fixed a couple small bugs related to memory management of the sub DM in Field. (2e7ca52)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Mon Oct 27 14:12:50 PDT 2014
Repository : https://github.com/geodynamics/pylith
On branch : knepley/fix-fault-pc-multiple
Link : https://github.com/geodynamics/pylith/compare/54aff19a1d46eee6cb723fdc638b37004cee20ce...2e7ca5277d3dc9a54bdc53050783652d0216976b
>---------------------------------------------------------------
commit 2e7ca5277d3dc9a54bdc53050783652d0216976b
Author: Brad Aagaard <baagaard at usgs.gov>
Date: Mon Oct 27 14:09:58 2014 -0700
Fixed a couple small bugs related to memory management of the sub DM in Field.
>---------------------------------------------------------------
2e7ca5277d3dc9a54bdc53050783652d0216976b
libsrc/pylith/faults/FaultCohesiveLagrange.cc | 2 --
libsrc/pylith/topology/Field.cc | 15 +++++++++------
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/libsrc/pylith/faults/FaultCohesiveLagrange.cc b/libsrc/pylith/faults/FaultCohesiveLagrange.cc
index 2176915..6b4d779 100644
--- a/libsrc/pylith/faults/FaultCohesiveLagrange.cc
+++ b/libsrc/pylith/faults/FaultCohesiveLagrange.cc
@@ -762,8 +762,6 @@ pylith::faults::FaultCohesiveLagrange::calcPreconditioner(PetscMat* const precon
err = MatDestroy(&jacobianNP);PYLITH_CHECK_ERROR(err);
PetscLogFlops(numVertices*spaceDim*6);
- err = DMDestroy(&lagrangeDM);PYLITH_CHECK_ERROR(err);
-
#if !defined(DETAILED_EVENT_LOGGING)
_logger->eventEnd(computeEvent);
#endif
diff --git a/libsrc/pylith/topology/Field.cc b/libsrc/pylith/topology/Field.cc
index a6cd26e..788dc98 100644
--- a/libsrc/pylith/topology/Field.cc
+++ b/libsrc/pylith/topology/Field.cc
@@ -543,9 +543,11 @@ pylith::topology::Field::cloneSection(const Field& src)
err = PetscObjectSetName((PetscObject) _localVec, _metadata.label.c_str());PYLITH_CHECK_ERROR(err);
// Reuse scatters in clone
+ _scatters.clear();
const scatter_map_type::const_iterator scattersEnd = src._scatters.end();
for (scatter_map_type::const_iterator s_iter=src._scatters.begin(); s_iter != scattersEnd; ++s_iter) {
- ScatterInfo sinfo;
+ ScatterInfo& sinfo = _scatters[s_iter->first];
+ sinfo.dm = 0;
sinfo.vector = 0;
// Copy DM
@@ -563,18 +565,19 @@ pylith::topology::Field::cloneSection(const Field& src)
err = PetscObjectReference((PetscObject) sinfo.vector);PYLITH_CHECK_ERROR(err);
} // if/else
err = PetscObjectSetName((PetscObject)sinfo.vector, _metadata.label.c_str());PYLITH_CHECK_ERROR(err);
-
- _scatters[s_iter->first] = sinfo;
} // for
// Reuse subfields in clone
+ _subfields.clear();
const subfields_type::const_iterator subfieldsEnd = src._subfields.end();
for (subfields_type::const_iterator s_iter=src._subfields.begin(); s_iter != subfieldsEnd; ++s_iter) {
- SubfieldInfo sinfo = s_iter->second;
+ SubfieldInfo& sinfo = _subfields[s_iter->first];
+ sinfo.metadata = s_iter->second.metadata;
+ sinfo.index = s_iter->second.index;
+ sinfo.dm = s_iter->second.dm;
if (sinfo.dm) {
err = PetscObjectReference((PetscObject) sinfo.dm);PYLITH_CHECK_ERROR(err);
} // if
- _subfields[s_iter->first] = sinfo;
} // for
PYLITH_METHOD_END;
@@ -746,7 +749,7 @@ pylith::topology::Field::copy(const Field& field)
PetscErrorCode err = VecCopy(field._localVec, _localVec);PYLITH_CHECK_ERROR(err);
// Update metadata
- _metadata.label = field._metadata.label;
+ label(field._metadata.label.c_str());
_metadata.vectorFieldType = field._metadata.vectorFieldType;
_metadata.scale = field._metadata.scale;
More information about the CIG-COMMITS
mailing list