[cig-commits] r19506 - short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials
brad at geodynamics.org
brad at geodynamics.org
Fri Jan 27 18:29:55 PST 2012
Author: brad
Date: 2012-01-27 18:29:55 -0800 (Fri, 27 Jan 2012)
New Revision: 19506
Modified:
short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/DruckerPrager3D.cc
short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticIsotropic3D.cc
short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticMaterial.hh
short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticMaterial.icc
Log:
Small cleanup of some material routines.
Modified: short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/DruckerPrager3D.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/DruckerPrager3D.cc 2012-01-28 02:27:36 UTC (rev 19505)
+++ short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/DruckerPrager3D.cc 2012-01-28 02:29:55 UTC (rev 19506)
@@ -65,10 +65,14 @@
// Values expected in properties spatial database
const int numDBProperties = 6;
- const char* dbProperties[] = {"density", "vs", "vp" ,
- "friction-angle",
- "cohesion",
- "dilatation-angle"};
+ const char* dbProperties[6] = {
+ "density",
+ "vs",
+ "vp" ,
+ "friction-angle",
+ "cohesion",
+ "dilatation-angle",
+ };
/// Number of state variables.
const int numStateVars = 1;
@@ -80,12 +84,13 @@
// Values expected in state variables spatial database.
const int numDBStateVars = 6;
- const char* dbStateVars[] = { "plastic-strain-xx",
- "plastic-strain-yy",
- "plastic-strain-zz",
- "plastic-strain-xy",
- "plastic-strain-yz",
- "plastic-strain-xz"
+ const char* dbStateVars[6] = {
+ "plastic-strain-xx",
+ "plastic-strain-yy",
+ "plastic-strain-zz",
+ "plastic-strain-xy",
+ "plastic-strain-yz",
+ "plastic-strain-xz",
};
} // _DruckerPrager3D
@@ -187,11 +192,10 @@
// ----------------------------------------------------------------------
// Compute properties from values in spatial database.
void
-pylith::materials::DruckerPrager3D::_dbToProperties(
- double* const propValues,
- const double_array& dbValues)
+pylith::materials::DruckerPrager3D::_dbToProperties(double* const propValues,
+ const double_array& dbValues)
{ // _dbToProperties
- assert(0 != propValues);
+ assert(propValues);
const int numDBValues = dbValues.size();
assert(_DruckerPrager3D::numDBProperties == numDBValues);
@@ -202,9 +206,12 @@
const double cohesion = dbValues[db_cohesion];
const double dilatationAngle = dbValues[db_dilatationAngle];
- if (density <= 0.0 || vs <= 0.0 || vp <= 0.0 || frictionAngle < 0.0
- || cohesion < 0.0 || dilatationAngle < 0.0
- || frictionAngle < dilatationAngle) {
+ const double pi = M_PI;
+
+ if (density <= 0.0 || vs <= 0.0 || vp <= 0.0 || cohesion < 0.0 ||
+ frictionAngle < 0.0 || frictionAngle > pi/2 ||
+ dilatationAngle < 0.0 || dilatationAngle > pi/2 ||
+ frictionAngle < dilatationAngle) {
std::ostringstream msg;
msg << "Spatial database returned illegal value for physical "
<< "properties.\n"
@@ -254,8 +261,8 @@
pylith::materials::DruckerPrager3D::_nondimProperties(double* const values,
const int nvalues) const
{ // _nondimProperties
- assert(0 != _normalizer);
- assert(0 != values);
+ assert(_normalizer);
+ assert(values);
assert(nvalues == _numPropsQuadPt);
const double densityScale = _normalizer->densityScale();
@@ -280,8 +287,8 @@
pylith::materials::DruckerPrager3D::_dimProperties(double* const values,
const int nvalues) const
{ // _dimProperties
- assert(0 != _normalizer);
- assert(0 != values);
+ assert(_normalizer);
+ assert(values);
assert(nvalues == _numPropsQuadPt);
const double densityScale = _normalizer->densityScale();
@@ -306,7 +313,7 @@
double* const stateValues,
const double_array& dbValues)
{ // _dbToStateVars
- assert(0 != stateValues);
+ assert(stateValues);
const int numDBValues = dbValues.size();
assert(_DruckerPrager3D::numDBStateVars == numDBValues);
@@ -315,8 +322,6 @@
assert(totalSize == numDBValues);
memcpy(&stateValues[s_plasticStrain], &dbValues[db_plasticStrain],
_tensorSize*sizeof(double));
-
- PetscLogFlops(0);
} // _dbToStateVars
// ----------------------------------------------------------------------
@@ -325,11 +330,9 @@
pylith::materials::DruckerPrager3D::_nondimStateVars(double* const values,
const int nvalues) const
{ // _nondimStateVars
- assert(0 != _normalizer);
- assert(0 != values);
+ assert(_normalizer);
+ assert(values);
assert(nvalues == _numVarsQuadPt);
-
- PetscLogFlops(0);
} // _nondimStateVars
// ----------------------------------------------------------------------
@@ -338,11 +341,9 @@
pylith::materials::DruckerPrager3D::_dimStateVars(double* const values,
const int nvalues) const
{ // _dimStateVars
- assert(0 != _normalizer);
- assert(0 != values);
+ assert(_normalizer);
+ assert(values);
assert(nvalues == _numVarsQuadPt);
-
- PetscLogFlops(0);
} // _dimStateVars
// ----------------------------------------------------------------------
@@ -354,8 +355,8 @@
const double* stateVars,
const int numStateVars)
{ // _calcDensity
- assert(0 != density);
- assert(0 != properties);
+ assert(density);
+ assert(properties);
assert(_numPropsQuadPt == numProperties);
density[0] = properties[p_density];
@@ -370,14 +371,15 @@
const double* stateVars,
const int numStateVars) const
{ // _stableTimeStepImplicit
- assert(0 != properties);
+ assert(properties);
assert(_numPropsQuadPt == numProperties);
- assert(0 != stateVars);
+ assert(stateVars);
assert(_numVarsQuadPt == numStateVars);
+
// It's unclear what to do for an elasto-plastic material, which has no
// inherent time scale. For now, just set dtStable to a large value.
const double dtStable = pylith::PYLITH_MAXDOUBLE;
- PetscLogFlops(0);
+
return dtStable;
} // _stableTimeStepImplicit
@@ -400,17 +402,17 @@
const int initialStrainSize,
const bool computeStateVars)
{ // _calcStressElastic
- assert(0 != stress);
+ assert(stress);
assert(_DruckerPrager3D::tensorSize == stressSize);
- assert(0 != properties);
+ assert(properties);
assert(_numPropsQuadPt == numProperties);
- assert(0 != stateVars);
+ assert(stateVars);
assert(_numVarsQuadPt == numStateVars);
- assert(0 != totalStrain);
+ assert(totalStrain);
assert(_DruckerPrager3D::tensorSize == strainSize);
- assert(0 != initialStress);
+ assert(initialStress);
assert(_DruckerPrager3D::tensorSize == initialStressSize);
- assert(0 != initialStrain);
+ assert(initialStrain);
assert(_DruckerPrager3D::tensorSize == initialStrainSize);
const double mu = properties[p_mu];
@@ -456,20 +458,21 @@
const int initialStrainSize,
const bool computeStateVars)
{ // _calcStressElastoplastic
- assert(0 != stress);
+ assert(stress);
assert(_DruckerPrager3D::tensorSize == stressSize);
- assert(0 != properties);
+ assert(properties);
assert(_numPropsQuadPt == numProperties);
- assert(0 != stateVars);
+ assert(stateVars);
assert(_numVarsQuadPt == numStateVars);
- assert(0 != totalStrain);
+ assert(totalStrain);
assert(_DruckerPrager3D::tensorSize == strainSize);
- assert(0 != initialStress);
+ assert(initialStress);
assert(_DruckerPrager3D::tensorSize == initialStressSize);
- assert(0 != initialStrain);
+ assert(initialStrain);
assert(_DruckerPrager3D::tensorSize == initialStrainSize);
- const int tensorSize = _tensorSize;
+ const int tensorSize = 6;
+ assert(_tensorSize == tensorSize);
const double mu = properties[p_mu];
const double lambda = properties[p_lambda];
@@ -485,39 +488,35 @@
const double ae = 1.0/mu2;
const double am = 1.0/(3.0 * bulkModulus);
- const double plasticStrainT[] = {stateVars[s_plasticStrain],
- stateVars[s_plasticStrain + 1],
- stateVars[s_plasticStrain + 2],
- stateVars[s_plasticStrain + 3],
- stateVars[s_plasticStrain + 4],
- stateVars[s_plasticStrain + 5]};
+ const double plasticStrainT[tensorSize] = {
+ stateVars[s_plasticStrain ],
+ stateVars[s_plasticStrain+1],
+ stateVars[s_plasticStrain+2],
+ stateVars[s_plasticStrain+3],
+ stateVars[s_plasticStrain+4],
+ stateVars[s_plasticStrain+5],
+ };
const double meanPlasticStrainT = (plasticStrainT[0] +
plasticStrainT[1] +
plasticStrainT[2])/3.0;
double devPlasticStrainT[tensorSize];
- pylith::materials::ElasticMaterial::calcDeviatoric3D(devPlasticStrainT,
- plasticStrainT,
- meanPlasticStrainT);
+ calcDeviatoric3D(devPlasticStrainT, plasticStrainT, meanPlasticStrainT);
- const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+ const double diag[tensorSize] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
// Initial stress values
const double meanStressInitial = (initialStress[0] +
initialStress[1] +
initialStress[2])/3.0;
double devStressInitial[tensorSize];
- pylith::materials::ElasticMaterial::calcDeviatoric3D(devStressInitial,
- initialStress,
- meanStressInitial);
+ calcDeviatoric3D(devStressInitial, initialStress, meanStressInitial);
// Initial strain values
const double meanStrainInitial = (initialStrain[0] +
initialStrain[1] +
initialStrain[2])/3.0;
double devStrainInitial[tensorSize];
- pylith::materials::ElasticMaterial::calcDeviatoric3D(devStrainInitial,
- initialStrain,
- meanStrainInitial);
+ calcDeviatoric3D(devStrainInitial, initialStrain, meanStrainInitial);
// Values for current time step
const double e11 = totalStrain[0];
@@ -527,30 +526,28 @@
const double meanStrainPPTpdt = meanStrainTpdt - meanPlasticStrainT -
meanStrainInitial;
- const double strainPPTpdt[] =
- { totalStrain[0] - meanStrainTpdt - devPlasticStrainT[0] -
- devStrainInitial[0],
- totalStrain[1] - meanStrainTpdt - devPlasticStrainT[1] -
- devStrainInitial[1],
- totalStrain[2] - meanStrainTpdt - devPlasticStrainT[2] -
- devStrainInitial[2],
- totalStrain[3] - devPlasticStrainT[3] - devStrainInitial[3],
- totalStrain[4] - devPlasticStrainT[4] - devStrainInitial[4],
- totalStrain[5] - devPlasticStrainT[5] - devStrainInitial[5] };
+ const double strainPPTpdt[tensorSize] = {
+ totalStrain[0] - meanStrainTpdt - devPlasticStrainT[0] - devStrainInitial[0],
+ totalStrain[1] - meanStrainTpdt - devPlasticStrainT[1] - devStrainInitial[1],
+ totalStrain[2] - meanStrainTpdt - devPlasticStrainT[2] - devStrainInitial[2],
+ totalStrain[3] - devPlasticStrainT[3] - devStrainInitial[3],
+ totalStrain[4] - devPlasticStrainT[4] - devStrainInitial[4],
+ totalStrain[5] - devPlasticStrainT[5] - devStrainInitial[5],
+ };
// Compute trial elastic stresses and yield function to see if yield should
// occur.
- const double trialDevStress[] = { strainPPTpdt[0]/ae + devStressInitial[0],
- strainPPTpdt[1]/ae + devStressInitial[1],
- strainPPTpdt[2]/ae + devStressInitial[2],
- strainPPTpdt[3]/ae + devStressInitial[3],
- strainPPTpdt[4]/ae + devStressInitial[4],
- strainPPTpdt[5]/ae + devStressInitial[5]};
+ const double trialDevStress[tensorSize] = {
+ strainPPTpdt[0]/ae + devStressInitial[0],
+ strainPPTpdt[1]/ae + devStressInitial[1],
+ strainPPTpdt[2]/ae + devStressInitial[2],
+ strainPPTpdt[3]/ae + devStressInitial[3],
+ strainPPTpdt[4]/ae + devStressInitial[4],
+ strainPPTpdt[5]/ae + devStressInitial[5],
+ };
const double trialMeanStress = meanStrainPPTpdt/am + meanStressInitial;
const double stressInvar2 =
- sqrt(0.5 *
- pylith::materials::ElasticMaterial::scalarProduct3D(trialDevStress,
- trialDevStress));
+ sqrt(0.5 * scalarProduct3D(trialDevStress, trialDevStress));
const double yieldFunction = 3.0 * alphaYield * trialMeanStress +
stressInvar2 - beta;
#if 0 // DEBUGGING
@@ -566,16 +563,12 @@
// If yield function is greater than zero, compute elastoplastic stress.
if (yieldFunction >= 0.0) {
const double devStressInitialProd =
- pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
- devStressInitial);
- const double strainPPTpdtProd =
- pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
- strainPPTpdt);
+ scalarProduct3D(devStressInitial, devStressInitial);
+ const double strainPPTpdtProd =
+ scalarProduct3D(strainPPTpdt, strainPPTpdt);
const double d =
sqrt(ae * ae * devStressInitialProd + 2.0 * ae *
- pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
- strainPPTpdt) +
- strainPPTpdtProd);
+ scalarProduct3D(devStressInitial, strainPPTpdt) + strainPPTpdtProd);
const double plasticMult = 2.0 * ae * am *
(3.0 * alphaYield * meanStrainPPTpdt/am + d/(sqrt(2.0) * ae) - beta)/
(6.0 * alphaYield * alphaFlow * ae + am);
@@ -605,16 +598,18 @@
stress[5] = strainPPTpdt[5]/ae + devStressInitial[5];
} // if
+ } else {
// If state variables have already been updated, the plastic strain for the
// time step has already been computed.
- } else {
const double mu2 = 2.0 * mu;
- const double plasticStrainTpdt[] = {stateVars[s_plasticStrain],
- stateVars[s_plasticStrain + 1],
- stateVars[s_plasticStrain + 2],
- stateVars[s_plasticStrain + 3],
- stateVars[s_plasticStrain + 4],
- stateVars[s_plasticStrain + 5]};
+ const double plasticStrainTpdt[tensorSize] = {
+ stateVars[s_plasticStrain ],
+ stateVars[s_plasticStrain+1],
+ stateVars[s_plasticStrain+2],
+ stateVars[s_plasticStrain+3],
+ stateVars[s_plasticStrain+4],
+ stateVars[s_plasticStrain+5],
+ };
const double e11 = totalStrain[0] - plasticStrainTpdt[0] - initialStrain[0];
const double e22 = totalStrain[1] - plasticStrainTpdt[1] - initialStrain[1];
@@ -635,7 +630,7 @@
PetscLogFlops(31);
- } // else
+ } // if/else
#if 0 // DEBUGGING
const double alphaYield = properties[p_alphaYield];
const double beta = properties[p_beta];
@@ -648,9 +643,7 @@
stress[4],
stress[5]};
const double stressInvar2Test =
- sqrt(0.5 *
- pylith::materials::ElasticMaterial::scalarProduct3D(devStressTest,
- devStressTest));
+ sqrt(0.5 * scalarProduct3D(devStressTest, devStressTest));
const double yieldFunctionTest = 3.0 * alphaYield * meanStressTest +
stressInvar2Test - beta;
@@ -773,7 +766,7 @@
// Duplicate functionality of _calcStressElastoplastic
// Get properties
- const int tensorSize = _tensorSize;
+ const int tensorSize = 6;
const double mu = properties[p_mu];
const double lambda = properties[p_lambda];
const double alphaYield = properties[p_alphaYield];
@@ -785,19 +778,17 @@
const double am = 1.0/(3.0 * bulkModulus);
// Get state variables from previous time step
- const double plasticStrainT[] = {stateVars[s_plasticStrain],
- stateVars[s_plasticStrain + 1],
- stateVars[s_plasticStrain + 2],
- stateVars[s_plasticStrain + 3],
- stateVars[s_plasticStrain + 4],
- stateVars[s_plasticStrain + 5]};
+ const double plasticStrainT[tensorSize] = {stateVars[s_plasticStrain],
+ stateVars[s_plasticStrain + 1],
+ stateVars[s_plasticStrain + 2],
+ stateVars[s_plasticStrain + 3],
+ stateVars[s_plasticStrain + 4],
+ stateVars[s_plasticStrain + 5]};
const double meanPlasticStrainT = (plasticStrainT[0] +
plasticStrainT[1] +
plasticStrainT[2])/3.0;
double devPlasticStrainT[tensorSize];
- pylith::materials::ElasticMaterial::calcDeviatoric3D(devPlasticStrainT,
- plasticStrainT,
- meanPlasticStrainT);
+ calcDeviatoric3D(devPlasticStrainT, plasticStrainT, meanPlasticStrainT);
const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
@@ -806,18 +797,14 @@
initialStress[1] +
initialStress[2])/3.0;
double devStressInitial[tensorSize];
- pylith::materials::ElasticMaterial::calcDeviatoric3D(devStressInitial,
- initialStress,
- meanStressInitial);
+ calcDeviatoric3D(devStressInitial, initialStress, meanStressInitial);
// Initial strain values
const double meanStrainInitial = (initialStrain[0] +
initialStrain[1] +
initialStrain[2])/3.0;
double devStrainInitial[tensorSize];
- pylith::materials::ElasticMaterial::calcDeviatoric3D(devStrainInitial,
- initialStrain,
- meanStrainInitial);
+ calcDeviatoric3D(devStrainInitial, initialStrain, meanStrainInitial);
// Values for current time step
const double meanStrainTpdt = (totalStrain[0] +
@@ -847,9 +834,7 @@
strainPPTpdt[5]/ae + devStressInitial[5]};
const double trialMeanStress = meanStrainPPTpdt/am + meanStressInitial;
const double stressInvar2 =
- sqrt(0.5 *
- pylith::materials::ElasticMaterial::scalarProduct3D(trialDevStress,
- trialDevStress));
+ sqrt(0.5 * scalarProduct3D(trialDevStress, trialDevStress));
const double yieldFunction = 3.0 * alphaYield * trialMeanStress +
stressInvar2 - beta;
#if 0 // DEBUGGING
@@ -866,16 +851,12 @@
// corresponding tangent matrix.
if (yieldFunction >= 0.0) {
const double devStressInitialProd =
- pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
- devStressInitial);
+ scalarProduct3D(devStressInitial, devStressInitial);
const double strainPPTpdtProd =
- pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
- strainPPTpdt);
+ scalarProduct3D(strainPPTpdt, strainPPTpdt);
const double d =
sqrt(ae * ae * devStressInitialProd + 2.0 * ae *
- pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
- strainPPTpdt) +
- strainPPTpdtProd);
+ scalarProduct3D(devStressInitial, strainPPTpdt) + strainPPTpdtProd);
const double plasticFac = 2.0 * ae * am/
(6.0 * alphaYield * alphaFlow * ae + am);
const double meanStrainFac = 3.0 * alphaYield/am;
@@ -1062,9 +1043,7 @@
plasticStrainT[1] +
plasticStrainT[2])/3.0;
double devPlasticStrainT[tensorSize];
- pylith::materials::ElasticMaterial::calcDeviatoric3D(devPlasticStrainT,
- plasticStrainT,
- meanPlasticStrainT);
+ calcDeviatoric3D(devPlasticStrainT, plasticStrainT, meanPlasticStrainT);
const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
@@ -1073,18 +1052,14 @@
initialStress[1] +
initialStress[2])/3.0;
double devStressInitial[tensorSize];
- pylith::materials::ElasticMaterial::calcDeviatoric3D(devStressInitial,
- initialStress,
- meanStressInitial);
+ calcDeviatoric3D(devStressInitial, initialStress, meanStressInitial);
// Initial strain values
const double meanStrainInitial = (initialStrain[0] +
initialStrain[1] +
initialStrain[2])/3.0;
double devStrainInitial[tensorSize];
- pylith::materials::ElasticMaterial::calcDeviatoric3D(devStrainInitial,
- initialStrain,
- meanStrainInitial);
+ calcDeviatoric3D(devStrainInitial, initialStrain, meanStrainInitial);
// Values for current time step
const double e11 = totalStrain[0];
@@ -1115,9 +1090,7 @@
strainPPTpdt[5]/ae + devStressInitial[5]};
const double trialMeanStress = meanStrainPPTpdt/am + meanStressInitial;
const double stressInvar2 =
- sqrt(0.5 *
- pylith::materials::ElasticMaterial::scalarProduct3D(trialDevStress,
- trialDevStress));
+ sqrt(0.5 * scalarProduct3D(trialDevStress, trialDevStress));
const double yieldFunction = 3.0 * alphaYield * trialMeanStress +
stressInvar2 - beta;
#if 0 // DEBUGGING
@@ -1134,16 +1107,12 @@
// Otherwise, plastic strains remain the same.
if (yieldFunction >= 0.0) {
const double devStressInitialProd =
- pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
- devStressInitial);
+ scalarProduct3D(devStressInitial, devStressInitial);
const double strainPPTpdtProd =
- pylith::materials::ElasticMaterial::scalarProduct3D(strainPPTpdt,
- strainPPTpdt);
+ scalarProduct3D(strainPPTpdt, strainPPTpdt);
const double d =
sqrt(ae * ae * devStressInitialProd + 2.0 * ae *
- pylith::materials::ElasticMaterial::scalarProduct3D(devStressInitial,
- strainPPTpdt) +
- strainPPTpdtProd);
+ scalarProduct3D(devStressInitial, strainPPTpdt) + strainPPTpdtProd);
const double plasticMult = 2.0 * ae * am *
(3.0 * alphaYield * meanStrainPPTpdt/am + d/(sqrt(2.0) * ae) - beta)/
(6.0 * alphaYield * alphaFlow * ae + am);
Modified: short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticIsotropic3D.cc 2012-01-28 02:27:36 UTC (rev 19505)
+++ short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticIsotropic3D.cc 2012-01-28 02:29:55 UTC (rev 19506)
@@ -211,16 +211,16 @@
const int initialStrainSize,
const bool computeStateVars)
{ // _calcStress
- assert(0 != stress);
+ assert(stress);
assert(_ElasticIsotropic3D::tensorSize == stressSize);
- assert(0 != properties);
+ assert(properties);
assert(_numPropsQuadPt == numProperties);
assert(0 == numStateVars);
- assert(0 != totalStrain);
+ assert(totalStrain);
assert(_ElasticIsotropic3D::tensorSize == strainSize);
- assert(0 != initialStress);
+ assert(initialStress);
assert(_ElasticIsotropic3D::tensorSize == initialStressSize);
- assert(0 != initialStrain);
+ assert(initialStrain);
assert(_ElasticIsotropic3D::tensorSize == initialStrainSize);
const double mu = properties[p_mu];
Modified: short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticMaterial.hh
===================================================================
--- short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticMaterial.hh 2012-01-28 02:27:36 UTC (rev 19505)
+++ short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticMaterial.hh 2012-01-28 02:29:55 UTC (rev 19506)
@@ -59,42 +59,6 @@
virtual
void deallocate(void);
- /** Compute 2D deviatoric stress/strain from vector and mean value.
- *
- * @param deviatoric Array for deviatoric tensor.
- * @param vec Input tensor (as vector).
- * @param vecMean Tensor trace divided by spatial_dimension.
- */
- void calcDeviatoric2D(double* const deviatoric,
- const double* vec,
- const double vecMean);
-
- /** Compute 3D deviatoric stress/strain from vector and mean value.
- *
- * @param deviatoric Array for deviatoric tensor.
- * @param vec Input tensor (as vector).
- * @param vecMean Tensor trace divided by spatial_dimension.
- */
- void calcDeviatoric3D(double* const deviatoric,
- const double* vec,
- const double vecMean);
-
- /** Compute 2D scalar product of two tensors represented as vectors.
- *
- * @param tensor1 First tensor.
- * @param tensor2 Second tensor.
- */
- double scalarProduct2D(const double* tensor1,
- const double* tensor2) const;
-
- /** Compute 3D scalar product of two tensors represented as vectors.
- *
- * @param tensor1 First tensor.
- * @param tensor2 Second tensor.
- */
- double scalarProduct3D(const double* tensor1,
- const double* tensor2) const;
-
/** Set database for initial stress state.
*
* @param db Spatial database.
@@ -355,6 +319,46 @@
const double* stateVars,
const int numStateVars) const = 0;
+ /** Compute 2D deviatoric stress/strain from vector and mean value.
+ *
+ * @param deviatoric Array for deviatoric tensor.
+ * @param vec Input tensor (as vector).
+ * @param vecMean Tensor trace divided by spatial_dimension.
+ */
+ static
+ void calcDeviatoric2D(double* const deviatoric,
+ const double* vec,
+ const double vecMean);
+
+ /** Compute 3D deviatoric stress/strain from vector and mean value.
+ *
+ * @param deviatoric Array for deviatoric tensor.
+ * @param vec Input tensor (as vector).
+ * @param vecMean Tensor trace divided by spatial_dimension.
+ */
+ static
+ void calcDeviatoric3D(double* const deviatoric,
+ const double* vec,
+ const double vecMean);
+
+ /** Compute 2D scalar product of two tensors represented as vectors.
+ *
+ * @param tensor1 First tensor.
+ * @param tensor2 Second tensor.
+ */
+ static
+ double scalarProduct2D(const double* tensor1,
+ const double* tensor2);
+
+ /** Compute 3D scalar product of two tensors represented as vectors.
+ *
+ * @param tensor1 First tensor.
+ * @param tensor2 Second tensor.
+ */
+ static
+ double scalarProduct3D(const double* tensor1,
+ const double* tensor2);
+
// PRIVATE METHODS ////////////////////////////////////////////////////
private :
Modified: short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticMaterial.icc
===================================================================
--- short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticMaterial.icc 2012-01-28 02:27:36 UTC (rev 19505)
+++ short/3D/PyLith/branches/v1.6-stable/libsrc/pylith/materials/ElasticMaterial.icc 2012-01-28 02:29:55 UTC (rev 19506)
@@ -22,6 +22,41 @@
#include <cassert>
+// Set database for initial stress state.
+inline
+void
+pylith::materials::ElasticMaterial::dbInitialStress(spatialdata::spatialdb::SpatialDB* db) {
+ _dbInitialStress = db;
+}
+
+// Set database for initial strain state.
+inline
+void
+pylith::materials::ElasticMaterial::dbInitialStrain(spatialdata::spatialdb::SpatialDB* db) {
+ _dbInitialStrain = db;
+}
+
+// Set whether elastic or inelastic constitutive relations are used.
+inline
+void
+pylith::materials::ElasticMaterial::useElasticBehavior(const bool flag) {
+} // useElasticBehavior
+
+// Get flag indicating whether material implements an empty
+// _updateProperties() method.
+inline
+bool
+pylith::materials::ElasticMaterial::hasStateVars(void) const {
+ return _numVarsQuadPt > 0;
+} // usesUpdateProperties
+
+// Get initial stress/strain fields.
+inline
+const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
+pylith::materials::ElasticMaterial::initialFields(void) const {
+ return _initialFields;
+} // initialFields
+
// Compute 2D deviatoric stress/strain from vector and mean value.
// 2 FLOPs per call
inline
@@ -45,9 +80,9 @@
const double* vec,
const double vecMean)
{
- deviatoric[0] = vec[0] -vecMean;
- deviatoric[1] = vec[1] -vecMean;
- deviatoric[2] = vec[2] -vecMean;
+ deviatoric[0] = vec[0] - vecMean;
+ deviatoric[1] = vec[1] - vecMean;
+ deviatoric[2] = vec[2] - vecMean;
deviatoric[3] = vec[3];
deviatoric[4] = vec[4];
deviatoric[5] = vec[5];
@@ -59,10 +94,12 @@
inline
double
pylith::materials::ElasticMaterial::scalarProduct2D(const double* tensor1,
- const double* tensor2) const
+ const double* tensor2)
{ // scalarProduct2D
- const double scalarProduct = tensor1[0] * tensor2[0] +
- tensor1[1] * tensor2[1] + 2.0 * tensor1[2] * tensor2[2];
+ const double scalarProduct =
+ tensor1[0] * tensor2[0] +
+ tensor1[1] * tensor2[1] +
+ 2.0 * tensor1[2] * tensor2[2];
return scalarProduct;
} // scalarProduct2D
@@ -73,9 +110,10 @@
inline
double
pylith::materials::ElasticMaterial::scalarProduct3D(const double* tensor1,
- const double* tensor2) const
+ const double* tensor2)
{ // scalarProduct3D
- const double scalarProduct = tensor1[0] * tensor2[0] +
+ const double scalarProduct =
+ tensor1[0] * tensor2[0] +
tensor1[1] * tensor2[1] +
tensor1[2] * tensor2[2] +
2.0 * (tensor1[3] * tensor2[3] +
@@ -86,41 +124,6 @@
} // scalarProduct3D
-// Set database for initial stress state.
-inline
-void
-pylith::materials::ElasticMaterial::dbInitialStress(spatialdata::spatialdb::SpatialDB* db) {
- _dbInitialStress = db;
-}
-
-// Set database for initial strain state.
-inline
-void
-pylith::materials::ElasticMaterial::dbInitialStrain(spatialdata::spatialdb::SpatialDB* db) {
- _dbInitialStrain = db;
-}
-
-// Set whether elastic or inelastic constitutive relations are used.
-inline
-void
-pylith::materials::ElasticMaterial::useElasticBehavior(const bool flag) {
-} // useElasticBehavior
-
-// Get flag indicating whether material implements an empty
-// _updateProperties() method.
-inline
-bool
-pylith::materials::ElasticMaterial::hasStateVars(void) const {
- return _numVarsQuadPt > 0;
-} // usesUpdateProperties
-
-// Get initial stress/strain fields.
-inline
-const pylith::topology::Fields<pylith::topology::Field<pylith::topology::Mesh> >*
-pylith::materials::ElasticMaterial::initialFields(void) const {
- return _initialFields;
-} // initialFields
-
// ----------------------------------------------------------------------
// Compute density for cell at quadrature points.
inline
More information about the CIG-COMMITS
mailing list