[cig-commits] r16221 - in short/3D/PyLith/trunk: . modulesrc modulesrc/friction pylith pylith/faults pylith/friction

brad at geodynamics.org brad at geodynamics.org
Tue Feb 2 17:58:12 PST 2010


Author: brad
Date: 2010-02-02 17:58:11 -0800 (Tue, 02 Feb 2010)
New Revision: 16221

Added:
   short/3D/PyLith/trunk/modulesrc/friction/
   short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i
   short/3D/PyLith/trunk/modulesrc/friction/Makefile.am
   short/3D/PyLith/trunk/modulesrc/friction/StaticFriction.i
   short/3D/PyLith/trunk/modulesrc/friction/friction.i
   short/3D/PyLith/trunk/pylith/friction/
   short/3D/PyLith/trunk/pylith/friction/FrictionModel.py
   short/3D/PyLith/trunk/pylith/friction/StaticFriction.py
   short/3D/PyLith/trunk/pylith/friction/__init__.py
Modified:
   short/3D/PyLith/trunk/configure.ac
   short/3D/PyLith/trunk/pylith/Makefile.am
   short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDynL.py
Log:
Added python stuff for friction.

Modified: short/3D/PyLith/trunk/configure.ac
===================================================================
--- short/3D/PyLith/trunk/configure.ac	2010-02-03 00:39:36 UTC (rev 16220)
+++ short/3D/PyLith/trunk/configure.ac	2010-02-03 01:58:11 UTC (rev 16221)
@@ -238,6 +238,7 @@
                 modulesrc/bc/Makefile
                 modulesrc/faults/Makefile
                 modulesrc/feassemble/Makefile
+		modulesrc/friction/Makefile
                 modulesrc/materials/Makefile
                 modulesrc/meshio/Makefile
                 modulesrc/mpi/Makefile

Added: short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i	                        (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/friction/FrictionModel.i	2010-02-03 01:58:11 UTC (rev 16221)
@@ -0,0 +1,260 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file modulesrc/friction/FrictionModel.i
+ *
+ * Python interface to C++ abstract base FrictionModel.
+ */
+
+namespace pylith {
+  namespace friction {
+
+    class FrictionModel
+    { // class FrictionModel
+
+      // PUBLIC METHODS /////////////////////////////////////////////////
+    public :
+      
+      /** Default constructor.
+       *
+       * @param metadata Metadata for physical properties and state variables.
+       */
+      FrictionModel(const pylith::materials::Metadata& metadata);
+
+      /// Destructor.
+      virtual
+      ~FrictionModel(void);
+
+      /// Deallocate PETSc and local data structures.
+      virtual
+      void deallocate(void);
+  
+      /** Set label of friction model.
+       *
+       * @param value Label of friction model.
+       */
+      void label(const char* value);
+
+      /** Get label of friction model.
+       *
+       * @returns Label of friction model.
+       */
+      const char* label(void) const;
+
+      /** Set current time step.
+       *
+       * @param dt Current time step.
+       */
+      virtual
+      void timeStep(const double dt);
+
+      /** Get current time step.
+       *
+       * @returns Current time step.
+       */
+      double timeStep(void) const;
+
+      /** Set database for physical property parameters.
+       *
+       * @param value Pointer to database.
+       */
+      void dbProperties(spatialdata::spatialdb::SpatialDB* value);
+
+      /** Set database for initial state variables.
+       *
+       * @param value Pointer to database.
+       */
+      void dbInitialState(spatialdata::spatialdb::SpatialDB* value);
+
+      /** Set scales used to nondimensionalize physical properties.
+       *
+       * @param dim Nondimensionalizer
+       */
+      void normalizer(const spatialdata::units::Nondimensional& dim);
+
+      /** Initialize friction model by getting physical property
+       * parameters from database.
+       *
+       * @pre Must call Quadrature::computeGeometry() before calling
+       * initialize().
+       *
+       * @param mesh Finite-element mesh of subdomain.
+       * @param quadrature Quadrature for finite-element integration
+       * @param area Area at vertices of subdomain.
+       */
+      virtual
+      void initialize(const pylith::topology::SubMesh& mesh,
+		      pylith::feassemble::Quadrature<pylith::topology::SubMesh>* quadrature,
+		      const pylith::topology::Field<pylith::topology::SubMesh>& area);
+  
+      /** Check whether friction model has a field as a property.
+       *
+       * @param name Name of field.
+       *
+       * @returns True if friction model has field as a property, false
+       * otherwise.
+       */
+      bool hasProperty(const char* name);
+
+      /** Check whether friction model has a field as a state variable.
+       *
+       * @param name Name of field.
+       *
+       * @returns True if friction model has field as a state variable,
+       * false otherwise.
+       */
+      bool hasStateVar(const char* name);
+
+      /** Get physical property or state variable field. Data is returned
+       * via the argument.
+       *
+       * @param field Field over fault interface cells.
+       * @param name Name of field to retrieve.
+       */
+      void getField(pylith::topology::Field<pylith::topology::SubMesh> *field,
+		    const char* name) const;
+
+      /** Get the field with all properties.
+       *
+       * @returns Properties field.
+       */
+      const pylith::topology::Field<pylith::topology::SubMesh>* propertiesField() const;
+
+      /** Get the field with all of the state variables.
+       *
+       * @returns State variables field.
+       */
+      const pylith::topology::Field<pylith::topology::SubMesh>* stateVarsField() const;
+
+      /** Retrieve parameters for physical properties and state variables
+       * for vertex.
+       *
+       * @param vertex Finite-element vertex on friction interface.
+       */
+      void retrievePropsAndVars(const int vertex);
+
+      /** Compute friction at vertex.
+       *
+       * @pre Must call retrievePropsAndVars for cell before calling
+       * calcFriction().
+       *
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       *
+       * @returns Friction (magnitude of shear traction) at vertex.
+       */
+      double calcFriction(const double slip,
+			  const double slipRate,
+			  const double normalTraction);
+  
+
+      // PROTECTED METHODS //////////////////////////////////////////////
+    protected :
+      
+      /// These methods should be implemented by every constitutive model.
+
+      /** Compute properties from values in spatial database.
+       *
+       * @param propValues Array of property values.
+       * @param dbValues Array of database values.
+       */
+      virtual
+      void _dbToProperties(double* const propValues,
+			   const double_array& dbValues) const = 0;
+
+      /** Nondimensionalize properties.
+       *
+       * @param values Array of property values.
+       * @param nvalues Number of values.
+       */
+      virtual
+      void _nondimProperties(double* const values,
+			     const int nvalues) const = 0;
+
+      /** Dimensionalize properties.
+       *
+       * @param values Array of property values.
+       * @param nvalues Number of values.
+       */
+      virtual
+      void _dimProperties(double* const values,
+			  const int nvalues) const = 0;
+
+      /** Compute initial state variables from values in spatial database.
+       *
+       * @param stateValues Array of state variable values.
+       * @param dbValues Array of database values.
+       */
+      virtual
+      void _dbToStateVars(double* const stateValues,
+			  const double_array& dbValues) const;
+
+      /** Nondimensionalize state variables.
+       *
+       * @param values Array of initial state values.
+       * @param nvalues Number of values.
+       */
+      virtual
+      void _nondimStateVars(double* const values,
+			    const int nvalues) const;
+  
+      /** Dimensionalize state variables.
+       *
+       * @param values Array of initial state values.
+       * @param nvalues Number of values.
+       */
+      virtual
+      void _dimStateVars(double* const values,
+			 const int nvalues) const;
+
+      /** Compute friction from properties and state variables.
+       *
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       */
+      virtual
+      double _calcFriction(const double slip,
+			   const double slipRate,
+			   const double normalTraction,
+			   const double* properties,
+			   const int numProperties,
+			   const double* stateVars,
+			   const int numStateVars) = 0;
+
+      /** Update state variables (for next time step).
+       *
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       */
+      virtual
+      void _updateStateVars(const double slip,
+			    const double slipRate,
+			    double* const stateVars,
+			    const int numStateVars,
+			    const double* properties,
+			    const int numProperties);
+
+    }; // class FrictionModel
+
+  } // friction
+} // pylith
+
+
+// End of file 

Added: short/3D/PyLith/trunk/modulesrc/friction/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/Makefile.am	                        (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/friction/Makefile.am	2010-02-03 01:58:11 UTC (rev 16221)
@@ -0,0 +1,63 @@
+# -*- Makefile -*-
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+subpackage = friction
+include $(top_srcdir)/subpackage.am
+
+subpkgpyexec_LTLIBRARIES = _frictionmodule.la
+
+subpkgpyexec_PYTHON = friction.py
+
+swig_sources = \
+	friction.i \
+	FrictionModel.i \
+	StaticFriction.i
+
+swigincludedir = $(pkgdatadir)/swig/$(subpackage)
+swiginclude_HEADERS = \
+	FrictionModel.i
+
+swig_generated = \
+	friction_wrap.cxx \
+	friction.py
+
+_frictionmodule_la_LDFLAGS = -module -avoid-version \
+	-g $(AM_LDFLAGS) $(PYTHON_LA_LDFLAGS)
+
+dist__frictionmodule_la_SOURCES = $(swig_sources) $(swig_generated)
+
+_frictionmodule_la_LIBADD = \
+	$(top_builddir)/libsrc/libpylith.la \
+	-lspatialdata \
+	$(PETSC_LIBS)
+if ENABLE_CUBIT
+  _frictionmodule_la_LIBADD += -lnetcdf_c++ -lnetcdf
+endif
+if NO_UNDEFINED
+_frictionmodule_la_LIBADD += \
+	$(PYTHON_BLDLIBRARY) $(PYTHON_LIBS) $(PYTHON_SYSLIBS)
+endif
+
+INCLUDES += -g $(PYTHON_EGG_CPPFLAGS) -I$(NUMPY_INCDIR) -I$(PYTHON_INCDIR) $(PETSC_INCLUDE)
+
+if ENABLE_SWIG
+$(srcdir)/friction_wrap.cxx $(srcdir)/friction.py: $(swig_sources)
+	$(SWIG) -Wall -c++ -python $<
+endif
+
+
+MAINTAINERCLEANFILES = \
+	$(srcdir)/friction_wrap.cxx \
+	$(srcdir)/friction.py
+
+
+# End of file 

Added: short/3D/PyLith/trunk/modulesrc/friction/StaticFriction.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/StaticFriction.i	                        (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/friction/StaticFriction.i	2010-02-03 01:58:11 UTC (rev 16221)
@@ -0,0 +1,84 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file modulesrc/friction/StaticFriction.i
+ *
+ * Python interface to C++ StaticFriction object.
+ */
+
+namespace pylith {
+  namespace friction {
+
+    class StaticFriction : public FrictionModel
+    { // class StaticFriction
+
+      // PUBLIC METHODS /////////////////////////////////////////////////
+    public :
+
+      /// Default constructor.
+      StaticFriction(void);
+
+      /// Destructor.
+      ~StaticFriction(void);
+
+      // PROTECTED METHODS //////////////////////////////////////////////
+    protected :
+
+      /** Compute properties from values in spatial database.
+       *
+       * @param propValues Array of property values.
+       * @param dbValues Array of database values.
+       */
+      void _dbToProperties(double* const propValues,
+			   const double_array& dbValues) const;
+
+      /** Nondimensionalize properties.
+       *
+       * @param values Array of property values.
+       * @param nvalues Number of values.
+       */
+      void _nondimProperties(double* const values,
+			     const int nvalues) const;
+
+      /** Dimensionalize properties.
+       *
+       * @param values Array of property values.
+       * @param nvalues Number of values.
+       */
+      void _dimProperties(double* const values,
+			  const int nvalues) const;
+
+      /** Compute friction from properties and state variables.
+       *
+       * @param slip Current slip at location.
+       * @param slipRate Current slip rate at location.
+       * @param normalTraction Normal traction at location.
+       * @param properties Properties at location.
+       * @param numProperties Number of properties.
+       * @param stateVars State variables at location.
+       * @param numStateVars Number of state variables.
+       */
+      double _calcFriction(const double slip,
+			   const double slipRate,
+			   const double normalTraction,
+			   const double* properties,
+			   const int numProperties,
+			   const double* stateVars,
+			   const int numStateVars);
+
+    }; // class StaticFriction
+
+  } // friction
+} // pylith
+
+
+// End of file 

Added: short/3D/PyLith/trunk/modulesrc/friction/friction.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/friction/friction.i	                        (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/friction/friction.i	2010-02-03 01:58:11 UTC (rev 16221)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// SWIG interface
+%module friction
+
+// Header files for module C++ code
+%{
+#include "pylith/friction/frictionfwd.hh" // forward declarations
+
+#include "spatialdata/spatialdb/spatialdbfwd.hh" // forward declarations
+#include "spatialdata/units/unitsfwd.hh" // forward declarations
+
+#include "pylith/friction/FrictionModel.hh"
+#include "pylith/friction/StaticFriction.hh"
+
+#include "pylith/utils/arrayfwd.hh"
+%}
+
+%include "exception.i"
+%exception {
+  try {
+    $action
+  } catch (const std::exception& err) {
+    SWIG_exception(SWIG_RuntimeError, err.what());
+  } // try/catch
+ } // exception
+
+%include "typemaps.i"
+%include "../include/doublearray.i"
+
+// Numpy interface stuff
+%{
+#define SWIG_FILE_WITH_INIT
+%}
+%include "../include/numpy.i"
+%init %{
+import_array();
+%}
+
+// Interfaces
+%include "FrictionModel.i"
+%include "StaticFriction.i"
+
+
+// End of file
+

Modified: short/3D/PyLith/trunk/pylith/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/pylith/Makefile.am	2010-02-03 00:39:36 UTC (rev 16220)
+++ short/3D/PyLith/trunk/pylith/Makefile.am	2010-02-03 01:58:11 UTC (rev 16221)
@@ -54,6 +54,9 @@
 	feassemble/ReferenceCell.py \
 	feassemble/Quadrature.py \
 	feassemble/CellGeometry.py \
+	friction/__init__.py \
+	friction/FrictionModel.py \
+	friction/StaticFriction.py \
 	materials/__init__.py \
 	materials/ElasticMaterial.py \
 	materials/ElasticIsotropic3D.py \

Modified: short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDynL.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDynL.py	2010-02-03 00:39:36 UTC (rev 16220)
+++ short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDynL.py	2010-02-03 01:58:11 UTC (rev 16221)
@@ -40,6 +40,7 @@
   
   \b Facilities
   @li \b db_initial_tractions Spatial database for initial tractions.
+  @li \b friction Fault constitutive model.
   @li \b output Output manager associated with fault data.
 
   Factory: fault
@@ -53,6 +54,10 @@
                                factory=NullComponent)
   db.meta['tip'] = "Spatial database for initial tractions."
 
+  from pylith.friction.StaticFriction import StaticFriction
+  friction = pyre.inventory.facility("friction", family="friction_model",
+                                     factory=StaticFriction)
+
   from pylith.meshio.OutputFaultDyn import OutputFaultDyn
   output = pyre.inventory.facility("output", family="output_manager",
                                    factory=OutputFaultDyn)
@@ -186,6 +191,7 @@
     FaultCohesive._configure(self)
     if not isinstance(self.inventory.db, NullComponent):
       ModuleFaultCohesiveDynL.dbInitialTract(self, self.inventory.db)
+    ModuleFaultCohesiveDynL.frictionModel(self, self.inventory.friction)
     self.output = self.inventory.output
     return
 

Added: short/3D/PyLith/trunk/pylith/friction/FrictionModel.py
===================================================================
--- short/3D/PyLith/trunk/pylith/friction/FrictionModel.py	                        (rev 0)
+++ short/3D/PyLith/trunk/pylith/friction/FrictionModel.py	2010-02-03 01:58:11 UTC (rev 16221)
@@ -0,0 +1,155 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/friction/FrictionModel.py
+##
+
+## @brief Python abstract base class for managing physical properties
+## and state variables of a fault constitutive model.
+##
+## This implementation of a fault constitutive model associates both
+## physical properties and a quadrature scheme with a fault. Thus,
+## applying different quadrature schemes within a region with the same
+## physical property database requires two "friction models", which
+## can use the same database.
+##
+## Factory: friction_model
+
+from pylith.utils.PetscComponent import PetscComponent
+
+# FrictionModel class
+class FrictionModel(PetscComponent):
+  """
+  Python friction model property manager.
+
+  This implementation of a fault constitutive model associates both
+  physical properties and a quadrature scheme with a fault. Thus,
+  applying different quadrature schemes within a region with the same
+  physical property database requires two 'friction models', which can
+  use the same database.
+  """
+
+  # INVENTORY //////////////////////////////////////////////////////////
+
+  class Inventory(PetscComponent.Inventory):
+    """
+    Python object for managing FrictionModel facilities and properties.
+    """
+    
+    ## @class Inventory
+    ## Python object for managing FrictionModel facilities and properties.
+    ##
+    ## \b Properties
+    ## @li \b name Name of friction model.
+    ##
+    ## \b Facilities
+    ## @li \b db_properties Database of material property parameters
+    ## @li \b db_initial_state Database for initial state.
+
+    import pyre.inventory
+
+    label = pyre.inventory.str("label", default="")
+    label.meta['tip'] = "Name of material."
+
+    from spatialdata.spatialdb.SimpleDB import SimpleDB
+    dbProperties = pyre.inventory.facility("db_properties",
+                                           family="spatial_database",
+                                           factory=SimpleDB)
+    dbProperties.meta['tip'] = "Database for physical property parameters."
+
+    from pylith.utils.NullComponent import NullComponent
+    dbInitialState = pyre.inventory.facility("db_initial_state",
+                                           family="spatial_database",
+                                           factory=NullComponent)
+    dbInitialState.meta['tip'] = "Database for initial state variables."
+
+    from pylith.perf.MemoryLogger import MemoryLogger
+    perfLogger = pyre.inventory.facility("perf_logger", family="perf_logger",
+                                         factory=MemoryLogger)
+    perfLogger.meta['tip'] = "Performance and memory logging."
+
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="frictionmodel"):
+    """
+    Constructor.
+    """
+    PetscComponent.__init__(self, name, facility="frictionmodel")
+    self._createModuleObj()
+    return
+
+
+  def finalize(self):
+    """
+    Cleanup.
+    """
+    self._modelMemoryUse()
+    return
+
+
+  # PRIVATE METHODS ////////////////////////////////////////////////////
+
+  def _configure(self):
+    """
+    Setup members using inventory.
+    """
+    PetscComponent._configure(self)
+    self.label(self.inventory.label)
+    self.dbProperties(self.inventory.dbProperties)
+    from pylith.utils.NullComponent import NullComponent
+    if not isinstance(self.inventory.dbInitialState, NullComponent):
+      self.dbInitialState(self.inventory.dbInitialState)
+
+    self.perfLogger = self.inventory.perfLogger
+    return
+
+  
+  def _createModuleObj(self):
+    """
+    Call constructor for module object for access to C++ object.
+    """
+    raise NotImplementedError, \
+          "Please implement _createModuleOb() in derived class."
+
+
+  def _modelMemoryUse(self):
+    """
+    Model allocated memory.
+    """
+    self.perfLogger.logFrictionModel('Friction', self)
+    self.perfLogger.logField('Friction', self.propertiesField())
+    self.perfLogger.logField('Friction', self.stateVarsField())
+    return
+
+
+  def _setupLogging(self):
+    """
+    Setup event logging.
+    """
+    if None == self._loggingPrefix:
+      self._loggingPrefix = ""
+
+    from pylith.utils.EventLogger import EventLogger
+    logger = EventLogger()
+    logger.className("FE FrictionModel")
+    logger.initialize()
+
+    events = []
+    for event in events:
+      logger.registerEvent("%s%s" % (self._loggingPrefix, event))
+
+    self._eventLogger = logger
+    return
+  
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/friction/StaticFriction.py
===================================================================
--- short/3D/PyLith/trunk/pylith/friction/StaticFriction.py	                        (rev 0)
+++ short/3D/PyLith/trunk/pylith/friction/StaticFriction.py	2010-02-03 01:58:11 UTC (rev 16221)
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/friction/StaticFriction.py
+##
+## @brief Python object implementing static friction.
+##
+## Factory: friction_model.
+
+from FrictionModel import FrictionModel
+from friction import StaticFriction as ModuleStaticFriction
+
+# StaticFriction class
+class StaticFriction(FrictionModel, ModuleStaticFriction):
+  """
+  Python object implementing static friction.
+
+  Factory: friction_model.
+  """
+
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+
+  def __init__(self, name="staticfriction"):
+    """
+    Constructor.
+    """
+    FrictionModel.__init__(self, name)
+    self.availableFields = \
+        {'vertex': \
+           {'info': ["friction_coefficient"],
+            'data': []},
+         'cell': \
+           {'info': [],
+            'data': []}}
+    self._loggingPrefix = "FrStat "
+    return
+
+
+  # PRIVATE METHODS ////////////////////////////////////////////////////
+
+  def _createModuleObj(self):
+    """
+    Call constructor for module object for access to C++ object.
+    """
+    ModuleStaticFriction.__init__(self)
+    return
+  
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def friction_model():
+  """
+  Factory associated with StaticFriction.
+  """
+  return StaticFriction()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/pylith/friction/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/friction/__init__.py	                        (rev 0)
+++ short/3D/PyLith/trunk/pylith/friction/__init__.py	2010-02-03 01:58:11 UTC (rev 16221)
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/friction/__init__.py
+
+## @brief Python PyLith Friction module initialization
+
+__all__ = ['FrictionModel',
+           'StaticFriction',
+           ]
+
+
+# End of file



More information about the CIG-COMMITS mailing list