[cig-commits] r16184 - in short/3D/PyLith/trunk: libsrc/friction unittests/libtests/friction unittests/libtests/friction/data

brad at geodynamics.org brad at geodynamics.org
Tue Jan 26 13:13:12 PST 2010


Author: brad
Date: 2010-01-26 13:13:11 -0800 (Tue, 26 Jan 2010)
New Revision: 16184

Modified:
   short/3D/PyLith/trunk/libsrc/friction/FrictionModel.cc
   short/3D/PyLith/trunk/libsrc/friction/SlipWeakening.cc
   short/3D/PyLith/trunk/libsrc/friction/SlipWeakening.hh
   short/3D/PyLith/trunk/unittests/libtests/friction/TestSlipWeakening.cc
   short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.cc
   short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.hh
Log:
Cleanup of SlipWeakening. Fixed several bugs.

Modified: short/3D/PyLith/trunk/libsrc/friction/FrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/friction/FrictionModel.cc	2010-01-26 19:55:25 UTC (rev 16183)
+++ short/3D/PyLith/trunk/libsrc/friction/FrictionModel.cc	2010-01-26 21:13:11 UTC (rev 16184)
@@ -53,7 +53,7 @@
   const int numProperties = properties.size();
   for (int i=0; i < numProperties; ++i)
     _numPropsVertex += metadata.fiberDim(properties[i].c_str(),
-				   materials::Metadata::PROPERTY);
+					 materials::Metadata::PROPERTY);
   assert(_numPropsVertex >= 0);
 
   const string_vector& stateVars = metadata.stateVars();

Modified: short/3D/PyLith/trunk/libsrc/friction/SlipWeakening.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/friction/SlipWeakening.cc	2010-01-26 19:55:25 UTC (rev 16183)
+++ short/3D/PyLith/trunk/libsrc/friction/SlipWeakening.cc	2010-01-26 21:13:11 UTC (rev 16184)
@@ -37,9 +37,9 @@
 
       // Physical properties.
       const pylith::materials::Metadata::ParamDescription properties[] = {
-	{ "static-coefficient", 1, pylith::topology::FieldBase::SCALAR },
-	{ "dynamic-coefficient", 2, pylith::topology::FieldBase::SCALAR },
-        { "slip-weakening-parameter", 3, pylith::topology::FieldBase::SCALAR },
+	{ "static_coefficient", 1, pylith::topology::FieldBase::SCALAR },
+	{ "dynamic_coefficient", 1, pylith::topology::FieldBase::SCALAR },
+        { "slip_weakening_parameter", 1, pylith::topology::FieldBase::SCALAR },
       };
 
       // Number of State Variables.
@@ -47,8 +47,8 @@
 
       // State Variables.
       const pylith::materials::Metadata::ParamDescription stateVars[] = {
-	{ "cumulative-slip", 1, pylith::topology::FieldBase::SCALAR },
-	{ "previous-slip", 2, pylith::topology::FieldBase::SCALAR },
+	{ "cumulative_slip", 1, pylith::topology::FieldBase::SCALAR },
+	{ "previous_slip", 1, pylith::topology::FieldBase::SCALAR },
       };
 
       // Values expected in spatial database
@@ -68,11 +68,29 @@
 } // pylith
 
 // Indices of physical properties
-const int pylith::friction::SlipWeakening::p_coef = 0;
+const int pylith::friction::SlipWeakening::p_coefS = 0;
+const int pylith::friction::SlipWeakening::p_coefD = 
+  pylith::friction::SlipWeakening::p_coefS + 1;
+const int pylith::friction::SlipWeakening::p_d0 = 
+  pylith::friction::SlipWeakening::p_coefD + 1;
 
 // Indices of database values (order must match dbProperties)
-const int pylith::friction::SlipWeakening::db_coef = 0;
+const int pylith::friction::SlipWeakening::db_coefS = 0;
+const int pylith::friction::SlipWeakening::db_coefD = 
+  pylith::friction::SlipWeakening::db_coefS + 1;
+const int pylith::friction::SlipWeakening::db_d0 = 
+  pylith::friction::SlipWeakening::db_coefD + 1;
 
+// Indices of state variables.
+const int pylith::friction::SlipWeakening::s_slipCum = 0;
+const int pylith::friction::SlipWeakening::s_slipPrev = 
+  pylith::friction::SlipWeakening::s_slipCum + 1;
+
+// Indices of database values (order must match dbProperties)
+const int pylith::friction::SlipWeakening::db_slipCum = 0;
+const int pylith::friction::SlipWeakening::db_slipPrev = 
+  pylith::friction::SlipWeakening::db_slipCum + 1;
+
 // ----------------------------------------------------------------------
 // Default constructor.
 pylith::friction::SlipWeakening::SlipWeakening(void) :
@@ -80,8 +98,10 @@
 				    _SlipWeakening::numProperties,
 				    _SlipWeakening::dbProperties,
 				    _SlipWeakening::numDBProperties,
-				    0, 0,
-				    0, 0))
+				    _SlipWeakening::stateVars,
+				    _SlipWeakening::numStateVars,
+				    _SlipWeakening::dbStateVars,
+				    _SlipWeakening::numDBStateVars))
 { // constructor
 } // constructor
 
@@ -102,9 +122,9 @@
   const int numDBValues = dbValues.size();
   assert(_SlipWeakening::numDBProperties == numDBValues);
 
-  const double db_static = dbValues[db_coef];
-  const double db_dynamic = dbValues[db_coef+1];
-  const double db_d0 = dbValues[db_coef+2];
+  const double db_static = dbValues[db_coefS];
+  const double db_dynamic = dbValues[db_coefD];
+  const double db_d0 = dbValues[db_d0];
  
   if (db_static <= 0.0) {
     std::ostringstream msg;
@@ -130,9 +150,9 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  propValues[p_coef] = db_static;
-  propValues[p_coef+1] = db_dynamic;
-  propValues[p_coef+2] = db_d0;
+  propValues[p_coefS] = db_static;
+  propValues[p_coefD] = db_dynamic;
+  propValues[p_d0] = db_d0;
 } // _dbToProperties
 
 // ----------------------------------------------------------------------
@@ -143,13 +163,11 @@
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
+  assert(nvalues == _SlipWeakening::numProperties);
 
   const double lengthScale = _normalizer->lengthScale();
 
-  values[nvalues-1] = values[nvalues-1] / lengthScale;
-
-  assert(nvalues == _SlipWeakening::numProperties);
-
+  values[p_d0] /= lengthScale;
 } // _nondimProperties
 
 // ----------------------------------------------------------------------
@@ -160,13 +178,11 @@
 { // _dimProperties
   assert(0 != _normalizer);
   assert(0 != values);
+  assert(nvalues == _SlipWeakening::numProperties);
 
   const double lengthScale = _normalizer->lengthScale();
 
-  values[nvalues-1] = values[nvalues-1] * lengthScale;
-
-  assert(nvalues == _SlipWeakening::numProperties);
-
+  values[p_d0] *= lengthScale;
 } // _dimProperties
 
 // ----------------------------------------------------------------------
@@ -180,12 +196,11 @@
   const int numDBValues = dbValues.size();
   assert(_SlipWeakening::numDBStateVars == numDBValues);
 
-  const double cumulativeSlip = dbValues[db_coef+3];
-  const double previousSlip = dbValues[db_coef+4];
+  const double cumulativeSlip = dbValues[db_slipCum];
+  const double previousSlip = dbValues[db_slipPrev];
  
-  stateValues[0] = cumulativeSlip;
-  stateValues[1] = previousSlip;
-
+  stateValues[s_slipCum] = cumulativeSlip;
+  stateValues[s_slipPrev] = previousSlip;
 } // _dbToStateVars
 
 // ----------------------------------------------------------------------
@@ -196,14 +211,12 @@
 { // _nondimStateVars
   assert(0 != _normalizer);
   assert(0 != values);
+  assert(nvalues == _SlipWeakening::numStateVars);
 
   const double lengthScale = _normalizer->lengthScale();
 
-  values[nvalues-1] = values[nvalues-1] / lengthScale;
-  values[nvalues-2] = values[nvalues-2] / lengthScale;
-
-  assert(nvalues == _SlipWeakening::numStateVars);
-
+  values[s_slipCum] /= lengthScale;
+  values[s_slipPrev] /= lengthScale;
 } // _nondimStateVars
 
 // ----------------------------------------------------------------------
@@ -214,14 +227,12 @@
 { // _dimStateVars
   assert(0 != _normalizer);
   assert(0 != values);
+  assert(nvalues == _SlipWeakening::numStateVars);
 
   const double lengthScale = _normalizer->lengthScale();
 
-  values[nvalues-1] = values[nvalues-1] * lengthScale;
-  values[nvalues-2] = values[nvalues-2] * lengthScale;
-
-  assert(nvalues == _SlipWeakening::numStateVars);
-
+  values[s_slipCum] *= lengthScale;
+  values[s_slipPrev] *= lengthScale;
 } // _dimStateVars
 
 // ----------------------------------------------------------------------
@@ -240,17 +251,27 @@
   assert(0 != numStateVars);
   assert(_numVarsVertex == numStateVars);
 
-  _updateStateVars(slip,slipRate,const_cast<double*>(&stateVars[0]),
-		   numStateVars,&properties[0],numProperties);
+  // SURENDRA: Use p_coefS, p_coefD, p_d0, s_slipCum, s_slipPrev to
+  // unpack values.  Expression for friction should be efficient but
+  // easy to understand.
 
+  /*
   const double friction = (normalTraction < 0) ?
     ((stateVars[0] < properties[p_coef+2]) ?
      properties[p_coef]-(properties[p_coef]-properties[p_coef+1]) *
      stateVars[0] / properties[p_coef+2] * normalTraction : 
      properties[p_coef+1] * normalTraction) : 0.0;
+  */
 
-  //  PetscLogFlops(1);
+  // DO SOMETHING LIKE THIS:
+  double friction = 0.0;
+  if (normalTraction < 0.0) {
+  } // if
 
+  PetscLogFlops(1); // SURENDRA: Update this with the number of
+		    // floating point operations (add, subtract,
+		    // multiply, divide)
+
   return friction;
 } // _calcFriction
 

Modified: short/3D/PyLith/trunk/libsrc/friction/SlipWeakening.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/friction/SlipWeakening.hh	2010-01-26 19:55:25 UTC (rev 16183)
+++ short/3D/PyLith/trunk/libsrc/friction/SlipWeakening.hh	2010-01-26 21:13:11 UTC (rev 16184)
@@ -130,9 +130,22 @@
   // PRIVATE MEMBERS ////////////////////////////////////////////////////
 private :
 
-  static const int p_coef;
-  static const int db_coef;
+  /// Indices for properties in section and spatial database.
+  static const int p_coefS;
+  static const int p_coefD;
+  static const int p_d0;
 
+  static const int db_coefS;
+  static const int db_coefD;
+  static const int db_d0;
+
+  /// Indices for state variables in section and spatial database.
+  static const int s_slipCum;
+  static const int s_slipPrev;
+
+  static const int db_slipCum;
+  static const int db_slipPrev;
+
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/TestSlipWeakening.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/TestSlipWeakening.cc	2010-01-26 19:55:25 UTC (rev 16183)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/TestSlipWeakening.cc	2010-01-26 21:13:11 UTC (rev 16184)
@@ -38,9 +38,9 @@
 { // testHasProperty
   SlipWeakening material;
 
-  CPPUNIT_ASSERT(material.hasProperty("static-coefficient"));
-  CPPUNIT_ASSERT(material.hasProperty("dynamic-coefficient"));
-  CPPUNIT_ASSERT(material.hasProperty("slip-weakening-parameter"));
+  CPPUNIT_ASSERT(material.hasProperty("static_coefficient"));
+  CPPUNIT_ASSERT(material.hasProperty("dynamic_coefficient"));
+  CPPUNIT_ASSERT(material.hasProperty("slip_weakening_parameter"));
   CPPUNIT_ASSERT(!material.hasProperty("aaa"));
 } // testHasProperty
 
@@ -51,8 +51,8 @@
 { // testHasStateVar
   SlipWeakening material;
 
-  CPPUNIT_ASSERT(material.hasStateVar("cumulative-slip"));
-  CPPUNIT_ASSERT(material.hasStateVar("previous-slip"));
+  CPPUNIT_ASSERT(material.hasStateVar("cumulative_slip"));
+  CPPUNIT_ASSERT(material.hasStateVar("previous_slip"));
   CPPUNIT_ASSERT(!material.hasStateVar("aaa"));
 } // testHasStateVar
 

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.cc	2010-01-26 19:55:25 UTC (rev 16183)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.cc	2010-01-26 21:13:11 UTC (rev 16184)
@@ -35,17 +35,20 @@
 const double pylith::friction::SlipWeakeningData::_densityScale =   1.00000000e+03;
 
 const int pylith::friction::SlipWeakeningData::_numPropertyValues[] = {
-3,
+  1,
+  1,
+  1,
 };
 
 const int pylith::friction::SlipWeakeningData::_numStateVarValues[] = {
-2,
+  1,
+  1,
 };
 
 const char* pylith::friction::SlipWeakeningData::_dbPropertyValues[] = {
-"static-coefficient",
-"dynamic-coefficient",
-"slip-weakeneing-parameter",
+  "static-coefficient",
+  "dynamic-coefficient",
+  "slip-weakeneing-parameter",
 };
 
 const char* pylith::friction::SlipWeakeningData::_dbStateVarValues[] = {
@@ -92,7 +95,12 @@
   0.8,
 };
 
-const double* pylith::friction::SlipWeakeningData::_stateVarsNondim = 0;
+const double pylith::friction::SlipWeakeningData::_stateVarsNondim[] = {
+  0.4,
+  0.5,
+  0.2,
+  0.1,
+};
 
 const double pylith::friction::SlipWeakeningData::_friction[] = {
   1.32,
@@ -114,7 +122,12 @@
   0.8,
 };
 
-const double* pylith::friction::SlipWeakeningData::_stateVarsUpdated = 0;
+const double pylith::friction::SlipWeakeningData::_stateVarsUpdated[] = {
+  0.4,
+  0.5,
+  0.2,
+  0.1,
+};
 
 pylith::friction::SlipWeakeningData::SlipWeakeningData(void)
 { // constructor

Modified: short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.hh	2010-01-26 19:55:25 UTC (rev 16183)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/data/SlipWeakeningData.hh	2010-01-26 21:13:11 UTC (rev 16184)
@@ -74,7 +74,7 @@
 
   static const double _propertiesNondim[];
 
-  static const double* _stateVarsNondim;
+  static const double _stateVarsNondim[];
 
   static const double _friction[];
 
@@ -84,7 +84,7 @@
 
   static const double _normalTraction[];
 
-  static const double* _stateVarsUpdated;
+  static const double _stateVarsUpdated[];
 
 };
 



More information about the CIG-COMMITS mailing list