[cig-commits] r16538 - short/3D/PyLith/trunk/libsrc/materials
brad at geodynamics.org
brad at geodynamics.org
Mon Apr 12 16:32:41 PDT 2010
Author: brad
Date: 2010-04-12 16:32:41 -0700 (Mon, 12 Apr 2010)
New Revision: 16538
Modified:
short/3D/PyLith/trunk/libsrc/materials/Material.cc
Log:
Fixed dimensioning of properties and state variables. Dimensioning can depend on values (e.g., power law exponent), so must explicitly dimensionalize values for cell.
Modified: short/3D/PyLith/trunk/libsrc/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.cc 2010-04-12 23:28:08 UTC (rev 16537)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.cc 2010-04-12 23:32:41 UTC (rev 16538)
@@ -364,11 +364,6 @@
assert(totalPropsFiberDim == numQuadPts * numPropsQuadPt);
const int totalFiberDim = numQuadPts * fiberDim;
- // Get dimension scale information for properties.
- double_array propertyScales(numPropsQuadPt);
- propertyScales = 1.0;
- _dimProperties(&propertyScales[0], propertyScales.size());
-
// Allocate buffer for property field if necessary.
const ALE::Obj<RealSection>& fieldSection = field->section();
bool useCurrentField = !fieldSection.isNull();
@@ -392,7 +387,7 @@
} // if
assert(!fieldSection.isNull());
field->label(name);
- field->scale(propertyScales[propOffset]);
+ field->scale(1.0);
fieldType = _metadata.fieldType(name, Metadata::PROPERTY);
// Buffer for property at cell's quadrature points
@@ -406,11 +401,13 @@
propertiesSection->restrictPoint(*c_iter,
&propertiesCell[0], propertiesCell.size());
- for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ _dimProperties(&propertiesCell[iQuad*numPropsQuadPt],
+ numPropsQuadPt);
for (int i=0; i < fiberDim; ++i)
fieldCell[iQuad*fiberDim+i] =
propertiesCell[iQuad*numPropsQuadPt+propOffset+i];
-
+ } // for
fieldSection->updatePoint(*c_iter, &fieldCell[0]);
} // for
} else { // field is a state variable
@@ -439,11 +436,6 @@
assert(totalVarsFiberDim == numQuadPts * numVarsQuadPt);
const int totalFiberDim = numQuadPts * fiberDim;
- // Get dimension scale information for state variables.
- double_array stateVarScales(numVarsQuadPt);
- stateVarScales = 1.0;
- _dimStateVars(&stateVarScales[0], stateVarScales.size());
-
// Allocate buffer for state variable field if necessary.
const ALE::Obj<RealSection>& fieldSection = field->section();
bool useCurrentField = !fieldSection.isNull();
@@ -468,7 +460,7 @@
assert(!fieldSection.isNull());
fieldType = _metadata.fieldType(name, Metadata::STATEVAR);
field->label(name);
- field->scale(stateVarScales[varOffset]);
+ field->scale(1.0);
// Buffer for state variable at cell's quadrature points
double_array fieldCell(numQuadPts*fiberDim);
@@ -481,11 +473,13 @@
stateVarsSection->restrictPoint(*c_iter,
&stateVarsCell[0], stateVarsCell.size());
- for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ _dimStateVars(&stateVarsCell[iQuad*numVarsQuadPt],
+ numVarsQuadPt);
for (int i=0; i < fiberDim; ++i)
fieldCell[iQuad*fiberDim+i] =
stateVarsCell[iQuad*numVarsQuadPt+varOffset+i];
-
+ } // for
fieldSection->updatePoint(*c_iter, &fieldCell[0]);
} // for
} // if/else
More information about the CIG-COMMITS
mailing list