[cig-commits] r17936 - short/3D/PyLith/branches/v1.5-stable/libsrc/faults
brad at geodynamics.org
brad at geodynamics.org
Mon Feb 21 20:34:08 PST 2011
Author: brad
Date: 2011-02-21 20:34:08 -0800 (Mon, 21 Feb 2011)
New Revision: 17936
Modified:
short/3D/PyLith/branches/v1.5-stable/libsrc/faults/FaultCohesiveDyn.cc
Log:
Fixed bug in computing adjust lumped solution for spontaneous rupture (need to update Loagrange multplier and slip even even if vertex is not global; these are not assembled but the adjustment to the solution is).
Modified: short/3D/PyLith/branches/v1.5-stable/libsrc/faults/FaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/branches/v1.5-stable/libsrc/faults/FaultCohesiveDyn.cc 2011-02-22 04:13:21 UTC (rev 17935)
+++ short/3D/PyLith/branches/v1.5-stable/libsrc/faults/FaultCohesiveDyn.cc 2011-02-22 04:34:08 UTC (rev 17936)
@@ -754,10 +754,6 @@
const int v_negative = _cohesiveVertices[iVertex].negative;
const int v_positive = _cohesiveVertices[iVertex].positive;
- // Compute contribution only if Lagrange constraint is local.
- if (!globalOrder->isLocal(v_lagrange))
- continue;
-
#if defined(DETAILED_EVENT_LOGGING)
_logger->eventBegin(restrictEvent);
#endif
@@ -950,15 +946,21 @@
_logger->eventBegin(updateEvent);
#endif
- // Adjust displacements to account for Lagrange multiplier values
- // (assumed to be zero in perliminary solve).
- assert(dispTIncrVertexN.size() ==
- dispTIncrAdjSection->getFiberDimension(v_negative));
- dispTIncrAdjSection->updateAddPoint(v_negative, &dispTIncrVertexN[0]);
+ // Compute contribution to adjusting solution only if Lagrange
+ // constraint is local (the adjustment is assembled across processors).
+ if (globalOrder->isLocal(v_lagrange)) {
+ // Adjust displacements to account for Lagrange multiplier values
+ // (assumed to be zero in perliminary solve).
+ assert(dispTIncrVertexN.size() ==
+ dispTIncrAdjSection->getFiberDimension(v_negative));
+ dispTIncrAdjSection->updateAddPoint(v_negative, &dispTIncrVertexN[0]);
+
+ assert(dispTIncrVertexP.size() ==
+ dispTIncrAdjSection->getFiberDimension(v_positive));
+ dispTIncrAdjSection->updateAddPoint(v_positive, &dispTIncrVertexP[0]);
+ } // if
- assert(dispTIncrVertexP.size() ==
- dispTIncrAdjSection->getFiberDimension(v_positive));
- dispTIncrAdjSection->updateAddPoint(v_positive, &dispTIncrVertexP[0]);
+ // The Lagrange multiplier and slip are NOT assembled across processors.
// Set Lagrange multiplier value. Value from preliminary solve is
// bogus due to artificial diagonal entry of 1.0.
More information about the CIG-COMMITS
mailing list