[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