[cig-commits] r20740 - short/3D/PyLith/trunk/libsrc/pylith/materials

knepley at geodynamics.org knepley at geodynamics.org
Wed Sep 19 12:55:59 PDT 2012


Author: knepley
Date: 2012-09-19 12:55:59 -0700 (Wed, 19 Sep 2012)
New Revision: 20740

Modified:
   short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc
Log:
Fixed dimensionalization in Material

Modified: short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc	2012-09-19 19:04:55 UTC (rev 20739)
+++ short/3D/PyLith/trunk/libsrc/pylith/materials/Material.cc	2012-09-19 19:55:59 UTC (rev 20740)
@@ -438,8 +438,7 @@
     fieldType = _metadata.getProperty(propertyIndex).fieldType;
 
     // Buffer for property at cell's quadrature points
-    scalar_array fieldCell(numQuadPts*fiberDim);
-    scalar_array propertiesCell(numQuadPts*numPropsQuadPt);
+    scalar_array propertiesCell(numPropsQuadPt);
 
     // Loop over cells
     Vec          fieldVec = field->localVector();
@@ -454,9 +453,11 @@
       err = PetscSectionGetOffset(fieldSection,      cell, &off);CHECK_PETSC_ERROR(err);
       err = PetscSectionGetOffset(propertiesSection, cell, &poff);CHECK_PETSC_ERROR(err);
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-        _dimProperties(&propertiesCell[iQuad*numPropsQuadPt], numPropsQuadPt);
+        for (int i=0; i < numPropsQuadPt; ++i)
+          propertiesCell[i] = propertiesArray[iQuad*numPropsQuadPt + poff+i];
+        _dimProperties(&propertiesCell[0], numPropsQuadPt);
         for (int i=0; i < fiberDim; ++i)
-          fieldArray[iQuad*fiberDim + off+i] = propertiesArray[iQuad*numPropsQuadPt+propOffset + poff+i];
+          fieldArray[iQuad*fiberDim + off+i] = propertiesCell[propOffset+i];
       } // for
     } // for
     err = VecRestoreArray(fieldVec, &fieldArray);CHECK_PETSC_ERROR(err);
@@ -516,8 +517,7 @@
     field->scale(1.0);
 
     // Buffer for state variable at cell's quadrature points
-    scalar_array fieldCell(numQuadPts*fiberDim);
-    scalar_array stateVarsCell(numQuadPts*numVarsQuadPt);
+    scalar_array stateVarsCell(numVarsQuadPt);
     
     // Loop over cells
     PetscScalar  *fieldArray, *stateVarsArray;
@@ -531,9 +531,11 @@
       err = PetscSectionGetOffset(fieldSection,     cell, &off);CHECK_PETSC_ERROR(err);
       err = PetscSectionGetOffset(stateVarsSection, cell, &soff);CHECK_PETSC_ERROR(err);
       for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
-        _dimStateVars(&stateVarsCell[iQuad*numVarsQuadPt], numVarsQuadPt);
+        for (int i=0; i < numVarsQuadPt; ++i)
+          stateVarsCell[i] = stateVarsArray[iQuad*numVarsQuadPt + soff+i];
+        _dimStateVars(&stateVarsCell[0], numVarsQuadPt);
         for (int i=0; i < fiberDim; ++i)
-          fieldArray[iQuad*fiberDim + off+i] = stateVarsCell[iQuad*numVarsQuadPt+varOffset + soff+i];
+          fieldArray[iQuad*fiberDim + off+i] = stateVarsCell[varOffset+i];
       } // for
     } // for
     err = VecRestoreArray(fieldVec,     &fieldArray);CHECK_PETSC_ERROR(err);



More information about the CIG-COMMITS mailing list