[cig-commits] r8225 - short/3D/PyLith/trunk/libsrc/bc

brad at geodynamics.org brad at geodynamics.org
Wed Nov 7 11:48:27 PST 2007


Author: brad
Date: 2007-11-07 11:48:27 -0800 (Wed, 07 Nov 2007)
New Revision: 8225

Modified:
   short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc
Log:
Fixed a couple of memory bugs exposed by valgrind.

Modified: short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc	2007-11-07 19:21:17 UTC (rev 8224)
+++ short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc	2007-11-07 19:48:27 UTC (rev 8225)
@@ -160,21 +160,22 @@
     const double_array& quadPtsRef = _quadrature->quadPtsRef();
 
     dampingConstsGlobal = 0.0;
-    for(int iQuad = 0, index=0; iQuad < numQuadPts; ++iQuad, index+=spaceDim) {
+    for(int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
       // Compute damping constants in normal/tangential coordinates
       const int err = _db->query(&queryData[0], numValues, 
-				 &quadPts[index], spaceDim, cs);
+				 &quadPts[iQuad*spaceDim], spaceDim, cs);
       if (err) {
 	std::ostringstream msg;
 	msg << "Could not find parameters for physical properties at \n"
 	    << "(";
 	for (int i=0; i < spaceDim; ++i)
-	  msg << "  " << quadPts[index+spaceDim];
+	  msg << "  " << quadPts[iQuad*spaceDim+i];
 	msg << ") for absorbing boundary condition " << _label << "\n"
 	    << "using spatial database " << _db->label() << ".";
 	throw std::runtime_error(msg.str());
       } // if
-      const double constTangential = queryData[0]*queryData[2];
+      const double constTangential = 
+	(3 == numValues) ? queryData[0]*queryData[2] : 0.0;
       const double constNormal = queryData[0]*queryData[1];
       const int numTangential = spaceDim-1;
       for (int iDim=0; iDim < numTangential; ++iDim)
@@ -184,7 +185,7 @@
       // Compute normal/tangential orientation
       _boundaryMesh->restrict(coordinates, *c_iter, 
 		     &cellVertices[0], cellVertices.size());
-      memcpy(&quadPtRef[0], &quadPtsRef[index], cellDim*sizeof(double));
+      memcpy(&quadPtRef[0], &quadPtsRef[iQuad*cellDim], cellDim*sizeof(double));
       cellGeometry.jacobian(&jacobian, &jacobianDet, cellVertices, quadPtRef);
       cellGeometry.orientation(&orientation, jacobian, jacobianDet, 
 			       upDir);



More information about the cig-commits mailing list