[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