[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