[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