[cig-commits] r12021 - in short/3D/PyLith/trunk: libsrc/faults modulesrc/faults pylith/faults unittests/libtests/faults unittests/pytests/faults
brad at geodynamics.org
brad at geodynamics.org
Sat May 24 22:01:45 PDT 2008
Author: brad
Date: 2008-05-24 22:01:45 -0700 (Sat, 24 May 2008)
New Revision: 12021
Modified:
short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc
short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.hh
short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.cc
short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh
short/3D/PyLith/trunk/libsrc/faults/SlipTimeFn.hh
short/3D/PyLith/trunk/modulesrc/faults/faults.pyxe.src
short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py
short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh
short/3D/PyLith/trunk/unittests/pytests/faults/TestEqKinSrc.py
Log:
Added origin time to earthquake source.
Modified: short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.cc 2008-05-25 05:01:45 UTC (rev 12021)
@@ -57,7 +57,8 @@
void
pylith::faults::BruneSlipFn::initialize(
const ALE::Obj<Mesh>& faultMesh,
- const spatialdata::geocoords::CoordSys* cs)
+ const spatialdata::geocoords::CoordSys* cs,
+ const double originTime)
{ // initialize
assert(!faultMesh.isNull());
assert(0 != cs);
@@ -168,6 +169,8 @@
msg << ") using spatial database " << _dbSlipTime->label() << ".";
throw std::runtime_error(msg.str());
} // if
+ // add origin time to rupture time
+ paramsVertex[indexSlipTime] += originTime;
_parameters->updatePoint(*v_iter, ¶msVertex[0]);
} // for
Modified: short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.hh 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.hh 2008-05-25 05:01:45 UTC (rev 12021)
@@ -77,10 +77,12 @@
/** Initialize slip time function.
*
* @param faultMesh Finite-element mesh of fault.
- * @param cs Coordinate system for mesh
+ * @param cs Coordinate system for mesh.
+ * @param originTime Origin time for earthquake source.
*/
void initialize(const ALE::Obj<Mesh>& faultMesh,
- const spatialdata::geocoords::CoordSys* cs);
+ const spatialdata::geocoords::CoordSys* cs,
+ const double originTime =0.0);
/** Get slip on fault surface at time t.
*
Modified: short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.cc 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.cc 2008-05-25 05:01:45 UTC (rev 12021)
@@ -21,6 +21,7 @@
// ----------------------------------------------------------------------
// Default constructor.
pylith::faults::EqKinSrc::EqKinSrc(void) :
+ _originTime(0.0),
_slipfn(0)
{ // constructor
} // constructor
@@ -33,6 +34,22 @@
} // destructor
// ----------------------------------------------------------------------
+// Set origin time for earthquake source.
+void
+pylith::faults::EqKinSrc::originTime(const double value)
+{ // originTime
+ _originTime = value;
+} // originTime
+
+// ----------------------------------------------------------------------
+// Get origin time for earthquake source.
+double
+pylith::faults::EqKinSrc::originTime(void) const
+{ // originTime
+ return _originTime;
+} // originTime
+
+// ----------------------------------------------------------------------
// Set slip time function.
void
pylith::faults::EqKinSrc::slipfn(SlipTimeFn* slipfn)
@@ -48,7 +65,7 @@
const spatialdata::geocoords::CoordSys* cs)
{ // initialize
assert(0 != _slipfn);
- _slipfn->initialize(faultMesh, cs);
+ _slipfn->initialize(faultMesh, cs, _originTime);
} // initialize
// ----------------------------------------------------------------------
Modified: short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh 2008-05-25 05:01:45 UTC (rev 12021)
@@ -60,6 +60,18 @@
virtual
~EqKinSrc(void);
+ /** Set origin time for earthquake source.
+ *
+ * @param value Origin time for earthquake source.
+ */
+ void originTime(const double value);
+
+ /** Get origin time for earthquake source.
+ *
+ * @returns Origin time for earthquake source.
+ */
+ double originTime(void) const;
+
/** Set slip time function.
*
* @param slipfn Slip time function.
@@ -121,6 +133,7 @@
// PRIVATE MEMBERS ////////////////////////////////////////////////////
private :
+ double _originTime; ///< Origin time for earthquake source
SlipTimeFn* _slipfn; ///< Slip time function
}; // class EqKinSrc
Modified: short/3D/PyLith/trunk/libsrc/faults/SlipTimeFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/SlipTimeFn.hh 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/libsrc/faults/SlipTimeFn.hh 2008-05-25 05:01:45 UTC (rev 12021)
@@ -56,10 +56,12 @@
*
* @param faultMesh Finite-element mesh of fault.
* @param cs Coordinate system for mesh
+ * @param originTime Origin time for earthquake source.
*/
virtual
void initialize(const ALE::Obj<Mesh>& faultMesh,
- const spatialdata::geocoords::CoordSys* cs) = 0;
+ const spatialdata::geocoords::CoordSys* cs,
+ const double originTime =0.0) = 0;
/** Get slip on fault surface at time t.
*
Modified: short/3D/PyLith/trunk/modulesrc/faults/faults.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/faults.pyxe.src 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/modulesrc/faults/faults.pyxe.src 2008-05-25 05:01:45 UTC (rev 12021)
@@ -788,6 +788,30 @@
return PyCObject_FromVoidPtr(self.thisptr, EqKinSrc_destructor)
+ property originTime:
+ def __set__(self, value):
+ """
+ Set origin time for earthquake rupture.
+ """
+ # create shim for method 'originTime'
+ #embed{ void EqKinSrc_originTime_set(void* objVptr, double value)
+ try {
+ assert(0 != objVptr);
+ ((pylith::faults::EqKinSrc*) objVptr)->originTime(value);
+ } catch (const std::exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.what()));
+ } catch (const ALE::Exception& err) {
+ PyErr_SetString(PyExc_RuntimeError,
+ const_cast<char*>(err.msg().c_str()));
+ } catch (...) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "Caught unknown C++ exception.");
+ } // try/catch
+ #}embed
+ EqKinSrc_originTime_set(self.thisptr, value)
+
+
property slipfn:
def __set__(self, value):
"""
Modified: short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py 2008-05-25 05:01:45 UTC (rev 12021)
@@ -42,13 +42,17 @@
## Python object for managing EqKinSrc facilities and properties.
##
## \b Properties
- ## @li None
+ ## @li \b origin_time Origin time for earthquake rupture.
##
## \b Facilities
## @li \b slip_function Slip time history function.
import pyre.inventory
+ from pyre.units.time import second
+ originTime = pyre.inventory.dimensional("origin_time", default=0.0*second)
+ originTime.meta['tip'] = "Origin time for earthquake rupture."
+
from BruneSlipFn import BruneSlipFn
slipfn = pyre.inventory.facility("slip_function", family="slip_time_fn",
factory=BruneSlipFn)
@@ -73,6 +77,7 @@
"""
self._setupLogging()
self._createCppHandle()
+ self.cppHandle.originTime = self.originTime.value
self.slipfn.preinitialize()
self.cppHandle.slipfn = self.slipfn.cppHandle
return
@@ -111,6 +116,7 @@
Setup members using inventory.
"""
Component._configure(self)
+ self.originTime = self.inventory.originTime
self.slipfn = self.inventory.slipfn
return
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc 2008-05-25 05:01:45 UTC (rev 12021)
@@ -215,15 +215,16 @@
0.0, 0.0};
const double slipTimeE[] = { 1.2, 1.3 };
const double peakRateE[] = { 1.4, 1.5 };
+ const double originTime = 5.064;
ALE::Obj<Mesh> faultMesh;
BruneSlipFn slipfn;
- _initialize(&faultMesh, &slipfn);
+ _initialize(&faultMesh, &slipfn, originTime);
const int spaceDim = faultMesh->getDimension() + 1;
const double t = 2.134;
- const ALE::Obj<real_section_type>& slip = slipfn.slip(t, faultMesh);
+ const ALE::Obj<real_section_type>& slip = slipfn.slip(originTime+t, faultMesh);
CPPUNIT_ASSERT(!slip.isNull());
const double tolerance = 1.0e-06;
@@ -266,16 +267,18 @@
0.0, 0.0};
const double slipTimeE[] = { 1.2, 1.3 };
const double peakRateE[] = { 1.4, 1.5 };
+ const double originTime = 1.064;
ALE::Obj<Mesh> faultMesh;
BruneSlipFn slipfn;
- _initialize(&faultMesh, &slipfn);
+ _initialize(&faultMesh, &slipfn, originTime);
const int spaceDim = faultMesh->getDimension() + 1;
const double t0 = 1.234;
const double t1 = 3.635;
- const ALE::Obj<real_section_type>& slip = slipfn.slipIncr(t0, t1, faultMesh);
+ const ALE::Obj<real_section_type>& slip =
+ slipfn.slipIncr(originTime+t0, originTime+t1, faultMesh);
CPPUNIT_ASSERT(!slip.isNull());
const double tolerance = 1.0e-06;
@@ -342,7 +345,8 @@
// Initialize BruneSlipFn.
void
pylith::faults::TestBruneSlipFn::_initialize(ALE::Obj<Mesh>* faultMesh,
- BruneSlipFn* slipfn)
+ BruneSlipFn* slipfn,
+ const double originTime)
{ // _initialize
assert(0 != slipfn);
@@ -396,7 +400,7 @@
slipfn->dbSlipTime(&dbSlipTime);
slipfn->dbPeakRate(&dbPeakRate);
- slipfn->initialize(*faultMesh, &cs);
+ slipfn->initialize(*faultMesh, &cs, originTime);
} // _initialize
// ----------------------------------------------------------------------
@@ -452,7 +456,9 @@
slipfn.dbSlipTime(&dbSlipTime);
slipfn.dbPeakRate(&dbPeakRate);
- slipfn.initialize(faultMesh, &cs);
+ const double originTime = 5.353;
+
+ slipfn.initialize(faultMesh, &cs, originTime);
const double tolerance = 1.0e-06;
@@ -480,7 +486,8 @@
const double slipTime = vals[spaceDim+1];
CPPUNIT_ASSERT_DOUBLES_EQUAL(data.peakRateE[iPoint], peakRate, tolerance);
- CPPUNIT_ASSERT_DOUBLES_EQUAL(data.slipTimeE[iPoint], slipTime, tolerance);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(data.slipTimeE[iPoint]+originTime,
+ slipTime, tolerance);
} // for
} // _testInitialize
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc 2008-05-25 05:01:45 UTC (rev 12021)
@@ -57,7 +57,8 @@
ALE::Obj<Mesh> faultMesh;
EqKinSrc eqsrc;
BruneSlipFn slipfn;
- _initialize(&faultMesh, &eqsrc, &slipfn);
+ const double originTime = 2.45;
+ _initialize(&faultMesh, &eqsrc, &slipfn, originTime);
// Don't have access to details of slip time function, so we can't
// check parameters. Have to rely on test of slip() for verification
@@ -73,16 +74,17 @@
2.4, 0.2};
const double slipTimeE[] = { 1.2, 1.3 };
const double peakRateE[] = { 1.4, 1.5 };
+ const double originTime = 2.42;
ALE::Obj<Mesh> faultMesh;
EqKinSrc eqsrc;
BruneSlipFn slipfn;
- _initialize(&faultMesh, &eqsrc, &slipfn);
+ _initialize(&faultMesh, &eqsrc, &slipfn, originTime);
const int spaceDim = faultMesh->getDimension() + 1;
const double t = 2.134;
- const ALE::Obj<real_section_type>& slip = eqsrc.slip(t, faultMesh);
+ const ALE::Obj<real_section_type>& slip = eqsrc.slip(originTime+t, faultMesh);
CPPUNIT_ASSERT(!slip.isNull());
const double tolerance = 1.0e-06;
@@ -125,18 +127,19 @@
2.4, 0.2};
const double slipTimeE[] = { 1.2, 1.3 };
const double peakRateE[] = { 1.4, 1.5 };
+ const double originTime = -4.29;
ALE::Obj<Mesh> faultMesh;
EqKinSrc eqsrc;
BruneSlipFn slipfn;
- _initialize(&faultMesh, &eqsrc, &slipfn);
+ _initialize(&faultMesh, &eqsrc, &slipfn, originTime);
const int spaceDim = faultMesh->getDimension() + 1;
const double t0 = 1.234;
const double t1 = 2.525;
const ALE::Obj<real_section_type>& slip =
- eqsrc.slipIncr(t0, t1, faultMesh);
+ eqsrc.slipIncr(originTime+t0, originTime+t1, faultMesh);
CPPUNIT_ASSERT(!slip.isNull());
const double tolerance = 1.0e-06;
@@ -179,7 +182,8 @@
void
pylith::faults::TestEqKinSrc::_initialize(ALE::Obj<Mesh>* faultMesh,
EqKinSrc* eqsrc,
- BruneSlipFn* slipfn)
+ BruneSlipFn* slipfn,
+ const double originTime)
{ // _initialize
const char* meshFilename = "data/tri3.mesh";
const char* faultLabel = "fault";
@@ -231,6 +235,7 @@
slipfn->dbSlipTime(&dbSlipTime);
slipfn->dbPeakRate(&dbPeakRate);
+ eqsrc->originTime(originTime);
eqsrc->slipfn(slipfn);
eqsrc->initialize(*faultMesh, &cs);
} // _initialize
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.hh 2008-05-25 05:01:45 UTC (rev 12021)
@@ -82,11 +82,13 @@
* @param faultMesh Fault mesh.
* @param eqsrc Earthquake source.
* @param slipfn Slip time function.
+ * @param originTime Origin time for earthquake rupture.
*/
static
void _initialize(ALE::Obj<Mesh>* faultMesh,
EqKinSrc* eqsrc,
- BruneSlipFn* slipfn);
+ BruneSlipFn* slipfn,
+ const double originTime);
}; // class TestEqKinSrc
Modified: short/3D/PyLith/trunk/unittests/pytests/faults/TestEqKinSrc.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/TestEqKinSrc.py 2008-05-25 02:03:20 UTC (rev 12020)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/TestEqKinSrc.py 2008-05-25 05:01:45 UTC (rev 12021)
@@ -40,6 +40,7 @@
"""
from spatialdata.spatialdb.SimpleDB import SimpleDB
from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
+ from pyre.units.time import second
ioFinalSlip = SimpleIOAscii()
ioFinalSlip.filename = "finalslip.spatialdb"
@@ -66,6 +67,7 @@
slipfn.slipRate = dbPeakRate
eqsrc = EqKinSrc()
+ eqsrc.originTime = 5.3*second
eqsrc.slipfn = slipfn
eqsrc.preinitialize()
eqsrc.initialize()
More information about the cig-commits
mailing list