[cig-commits] r6632 - in short/3D/PyLith/trunk: . libsrc
libsrc/faults pylith pylith/faults
brad at geodynamics.org
brad at geodynamics.org
Sun Apr 22 20:13:25 PDT 2007
Author: brad
Date: 2007-04-22 20:13:24 -0700 (Sun, 22 Apr 2007)
New Revision: 6632
Added:
short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.cc
short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh
short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py
Modified:
short/3D/PyLith/trunk/TODO
short/3D/PyLith/trunk/libsrc/Makefile.am
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
short/3D/PyLith/trunk/libsrc/faults/Makefile.am
short/3D/PyLith/trunk/pylith/Makefile.am
short/3D/PyLith/trunk/pylith/faults/BruneSlipFn.py
short/3D/PyLith/trunk/pylith/faults/FaultCohesiveKin.py
short/3D/PyLith/trunk/pylith/faults/SlipTimeFn.py
short/3D/PyLith/trunk/pylith/faults/__init__.py
Log:
More work on implementing kinematic source organization.
Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/TODO 2007-04-23 03:13:24 UTC (rev 6632)
@@ -11,8 +11,16 @@
Use MeshIOAscii to get mesh information into Python tests?
0. Start implementing faults
- b. Add creation of cohesive elements
+ a. Add creation of cohesive elements
+ Add tests for interpolated meshes
+
+ b. Implement slip time function
+ Similar to material. Set up parameters using spatial databases.
+
c. Start implementing integrator for faults
+ Initialize - calculate orientation
+ How do we create kinematic source
+
d. Create unit tests at C++ level
e. Create unit tests at Python level
Modified: short/3D/PyLith/trunk/libsrc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/Makefile.am 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/libsrc/Makefile.am 2007-04-23 03:13:24 UTC (rev 6632)
@@ -23,6 +23,7 @@
libpylith_la_SOURCES = \
faults/BruneSlipFn.cc \
faults/CohesiveTopology.cc \
+ faults/EqKinSrc.cc \
faults/Fault.cc \
faults/FaultCohesive.cc \
faults/FaultCohesiveKin.cc \
Added: short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.cc 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.cc 2007-04-23 03:13:24 UTC (rev 6632)
@@ -0,0 +1,43 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "EqKinSrc.hh" // implementation of object methods
+
+#include "SlipTimeFn.hh" // USES SlipTimeFn
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::faults::EqKinSrc::EqKinSrc(void) :
+ _slipfn(0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor.
+pylith::faults::EqKinSrc::~EqKinSrc(void)
+{ // destructor
+ delete _slipfn; _slipfn = 0;
+} // destructor
+
+// ----------------------------------------------------------------------
+// Copy constructor.
+pylith::faults::EqKinSrc::EqKinSrc(const EqKinSrc& s) :
+ _slipfn(0)
+{ // copy constructor
+ if (0 != s._slipfn)
+ _slipfn = s._slipfn->clone();
+} // copy constructor
+
+
+// End of file
Added: short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh 2007-04-23 03:13:24 UTC (rev 6632)
@@ -0,0 +1,77 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file libsrc/faults/EqKinSrc.hh
+ *
+ * @brief C++ object for managing parameters for a kinematic earthquake source.
+ *
+ * EqKinSrc is responsible for providing the value of slip at time t
+ * over a fault surface.
+ */
+
+#if !defined(pylith_faults_eqkinsrc_hh)
+#define pylith_faults_eqkinsrc_hh
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace faults {
+ class EqKinSrc;
+ class TestEqKinSrc; // unit testing
+
+ class SlipTimeFn; /// HOLDSA SlipTimeFn
+ } // faults
+} // pylith
+
+/// Namespace for spatialdata package
+namespace spatialdata {
+ namespace spatialdb {
+ class SpatialDB;
+ } // spatialdb
+} // spatialdata
+
+/// C++ oject for managing parameters for a kinematic earthquake source.
+class pylith::faults::EqKinSrc
+{ // class EqKinSrc
+ friend class TestEqKinSrc; // unit testing
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Default constructor.
+ EqKinSrc(void);
+
+ /// Destructor.
+ ~EqKinSrc(void);
+
+ /** Copy constructor.
+ *
+ * @param m Fault to copy
+ */
+ EqKinSrc(const EqKinSrc& m);
+
+ // NOT IMPLEMENTED ////////////////////////////////////////////////////
+private :
+
+ /// Not implemented
+ const EqKinSrc& operator=(const EqKinSrc& m);
+
+ // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+ SlipTimeFn* _slipfn; ///< Slip time function
+
+}; // class EqKinSrc
+
+#endif // pylith_faults_eqkinsrc_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2007-04-23 03:13:24 UTC (rev 6632)
@@ -14,9 +14,12 @@
#include "FaultCohesiveKin.hh" // implementation of object methods
+#include "EqKinSrc.hh" // USES EqKinSrc
+
// ----------------------------------------------------------------------
// Default constructor.
-pylith::faults::FaultCohesiveKin::FaultCohesiveKin(void)
+pylith::faults::FaultCohesiveKin::FaultCohesiveKin(void) :
+ _eqsrc(0)
{ // constructor
} // constructor
@@ -24,13 +27,17 @@
// Destructor.
pylith::faults::FaultCohesiveKin::~FaultCohesiveKin(void)
{ // destructor
+ delete _eqsrc; _eqsrc = 0;
} // destructor
// ----------------------------------------------------------------------
// Copy constructor.
pylith::faults::FaultCohesiveKin::FaultCohesiveKin(const FaultCohesiveKin& f) :
- FaultCohesive(f)
+ FaultCohesive(f),
+ _eqsrc(0)
{ // copy constructor
+ if (0 != f._eqsrc)
+ _eqsrc = new EqKinSrc(*f._eqsrc);
} // copy constructor
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh 2007-04-23 03:13:24 UTC (rev 6632)
@@ -26,6 +26,8 @@
namespace faults {
class FaultCohesiveKin;
class TestFaultCohesiveKin; // unit testing
+
+ class EqKinSrc; // HOLDSA EqKinSrc
} // faults
} // pylith
@@ -69,6 +71,8 @@
// PRIVATE MEMBERS ////////////////////////////////////////////////////
private :
+ EqKinSrc* _eqsrc; ///< Kinematic earthquake source information
+
}; // class FaultCohesiveKin
#include "FaultCohesiveKin.icc" // inline methods
Modified: short/3D/PyLith/trunk/libsrc/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/Makefile.am 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/libsrc/faults/Makefile.am 2007-04-23 03:13:24 UTC (rev 6632)
@@ -17,6 +17,7 @@
BruneSlipFn.hh \
BruneSlipFn.icc \
CohesiveTopology.hh \
+ EqKinSrc.hh \
Fault.hh \
Fault.icc \
FaultCohesive.hh \
Modified: short/3D/PyLith/trunk/pylith/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/pylith/Makefile.am 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/pylith/Makefile.am 2007-04-23 03:13:24 UTC (rev 6632)
@@ -15,6 +15,7 @@
__init__.py \
faults/__init__.py \
faults/BruneSlipFn.py \
+ faults/EqKinSrc.py \
faults/FaultsBin.py \
faults/Fault.py \
faults/FaultCohesive.py \
Modified: short/3D/PyLith/trunk/pylith/faults/BruneSlipFn.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/BruneSlipFn.py 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/pylith/faults/BruneSlipFn.py 2007-04-23 03:13:24 UTC (rev 6632)
@@ -28,6 +28,32 @@
Factory: slip_time_fn
"""
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ class Inventory(SlipTimeFn.Inventory):
+ """
+ Python object for managing BruneSlipFn facilities and properties.
+ """
+
+ ## @class Inventory
+ ## Python object for managing BruneSlipFn facilities and properties.
+ ##
+ ## \b Properties
+ ## @li None
+ ##
+ ## \b Facilities
+ ## @li \b slip_rate Spatial database of peak slip rate
+
+ import pyre.inventory
+
+ from spatialdata.spatialdb.SimpleDB import SimpleDB
+
+ slipRate = pyre.inventory.facility("slip_rate", family="spatial_database",
+ factory=SimpleDB,
+ args=["slip rate"])
+ slipRate.meta['tip'] = "Spatial database of peak slip rate."
+
+
# PUBLIC METHODS /////////////////////////////////////////////////////
def __init__(self, name="bruneslipfn"):
@@ -47,7 +73,17 @@
Setup members using inventory.
"""
SlipTimeFn._configure(self)
+ self.slipRate = self.inventory.slipRate
return
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def slip_time_fn():
+ """
+ Factory associated with BruneSlipFn.
+ """
+ return slip_time_fn()
+
+
# End of file
Added: short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py 2007-04-23 03:13:24 UTC (rev 6632)
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/faults/EqKinSrc.py
+##
+
+## @brief Python object for managing parameters for a kinematic
+## earthquake sources.
+##
+## EqKinSrc is responsible for providing the value of slip at time t
+## over a fault surface.
+##
+## Factory: eq_kinematic_src
+
+from Component import Component
+
+# EqKinSrc class
+class EqKinSrc(Component):
+ """
+ Python object for managing parameters for a kinematic earthquake sources.
+
+ Factory: eq_kinematic_src
+ """
+
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ class Inventory(Component.Inventory):
+ """
+ Python object for managing EqKinSrc facilities and properties.
+ """
+
+ ## @class Inventory
+ ## Python object for managing EqKinSrc facilities and properties.
+ ##
+ ## \b Properties
+ ## @li None
+ ##
+ ## \b Facilities
+ ## @li \b slip_function Analytical form for slip time function
+
+ import pyre.inventory
+
+ from BruneSlipFn import BruneSlipFn
+ slipFn = pyre.inventory.facility("slip_function", family="slip_time_fn",
+ factory=BruneSlipFn)
+ slipFn.meta['tip'] = "Slip time history function."
+
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="eqkinsrc"):
+ """
+ Constructor.
+ """
+ Component.__init__(self, name, facility="eqkinsrc")
+ return
+
+
+ def initialize(self, mesh):
+ """
+ Initialize cohesive elements.
+ """
+ Component.initialize(self, mesh)
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Setup members using inventory.
+ """
+ Component._configure(self)
+ slipFn = self.inventory.slipFn
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def eq_kinematic_src():
+ """
+ Factory associated with EqKinSrc.
+ """
+ return EqKinSrc()
+
+
+# End of file
Modified: short/3D/PyLith/trunk/pylith/faults/FaultCohesiveKin.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/FaultCohesiveKin.py 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/pylith/faults/FaultCohesiveKin.py 2007-04-23 03:13:24 UTC (rev 6632)
@@ -43,35 +43,16 @@
## @li None
##
## \b Facilities
- ## @li \b slip Spatial database of final slip
- ## @li \b slip_rate Spatial database of peak slip rate
- ## @li \b slip_time Spatial database of slip initiation time
- ## @li \b slip_function Analytical form for slip time function
+ ## @li \b eq_src Kinematic earthquake source information.
import pyre.inventory
- from spatialdata.spatialdb.SimpleDB import SimpleDB
+ from EqKinSrc import EqKinSrc
+ eqSrc = pyre.inventory.facility("eq_src", family="eq_kinematic_src",
+ factory=EqKinSrc)
+ eqSrc.meta['tip'] = "Kinematic earthquake source information."
- slip = pyre.inventory.facility("slip", family="spatial_database",
- factory=SimpleDB, args=["slip"])
- slip.meta['tip'] = "Spatial database of final slip."
- slipRate = pyre.inventory.facility("slip_rate", family="spatial_database",
- factory=SimpleDB,
- args=["slip rate"])
- slipRate.meta['tip'] = "Spatial database of peak slip rate."
-
- slipTime = pyre.inventory.facility("slip_time", family="spatial_database",
- factory=SimpleDB,
- args=["slip time"])
- slipTime.meta['tip'] = "Spatial database of slip initiation time."
-
- from BruneSlipFn import BruneSlipFn
- slipFn = pyre.inventory.facility("slip_function", family="slip_time_fn",
- factory=BruneSlipFn)
- slipFn.meta['tip'] = "Analytical form for slip time function."
-
-
# PUBLIC METHODS /////////////////////////////////////////////////////
def __init__(self, name="faultcohesivekin"):
@@ -90,8 +71,6 @@
"""
FaultCohesive.initialize(self, mesh)
self.slip.initialize()
- self.slipRate.initialize()
- self.slipTime.initialize()
return
@@ -102,10 +81,7 @@
Setup members using inventory.
"""
FaultCohesive._configure(self)
- slip = self.inventory.slip
- slipRate = self.inventory.slipRate
- slipTime = self.inventory.slipTime
- slipFn = self.inventory.slipFn
+ eqSrc = self.inventory.eqSrc
return
Modified: short/3D/PyLith/trunk/pylith/faults/SlipTimeFn.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/SlipTimeFn.py 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/pylith/faults/SlipTimeFn.py 2007-04-23 03:13:24 UTC (rev 6632)
@@ -27,6 +27,37 @@
Factory: slip_time_fn
"""
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ class Inventory(SlipTimeFn.Inventory):
+ """
+ Python object for managing BruneSlipFn facilities and properties.
+ """
+
+ ## @class Inventory
+ ## Python object for managing BruneSlipFn facilities and properties.
+ ##
+ ## \b Properties
+ ## @li None
+ ##
+ ## \b Facilities
+ ## @li \b slip Spatial database of final slip
+ ## @li \b slip_time Spatial database of slip initiation time
+
+ import pyre.inventory
+
+ from spatialdata.spatialdb.SimpleDB import SimpleDB
+
+ slip = pyre.inventory.facility("slip", family="spatial_database",
+ factory=SimpleDB, args=["slip"])
+ slip.meta['tip'] = "Spatial database of slip."
+
+ slipTime = pyre.inventory.facility("slip_time", family="spatial_database",
+ factory=SimpleDB,
+ args=["slip time"])
+ slipTime.meta['tip'] = "Spatial database of slip initiation time."
+
+
# PUBLIC METHODS /////////////////////////////////////////////////////
def __init__(self, name="sliptimefn"):
@@ -45,6 +76,8 @@
Setup members using inventory.
"""
Component._configure(self)
+ self.slip = self.inventory.slip
+ self.slipTime = self.inventory.slipTime
return
Modified: short/3D/PyLith/trunk/pylith/faults/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/__init__.py 2007-04-23 03:04:24 UTC (rev 6631)
+++ short/3D/PyLith/trunk/pylith/faults/__init__.py 2007-04-23 03:13:24 UTC (rev 6632)
@@ -14,7 +14,8 @@
##
## @brief Python PyLith faults module initialization
-__all__ = ['FaultsBin',
+__all__ = ['EqKinSrc',
+ 'FaultsBin',
'Fault',
'FaultCohesive',
'FaultCohesiveKin',
More information about the cig-commits
mailing list