[CIG-ALL] PyLith 1.0.1

Brad Aagaard baagaard at usgs.gov
Mon Jul 2 21:59:23 PDT 2007


Greetings,

I am pleased to announce the 1.0.1 release of PyLith, a finite element
code designed to solve quasi-static viscoelastic problems in tectonic
deformation.

This release allows the solution of both quasi-static and dynamic  
problems in one, two, or three dimensions, and represents a complete  
rewrite of the original PyLith. The code runs in either serial or  
parallel mode, and the design allows for relatively easy scripting  
using the Python programming language. Material properties and  
parameters for boundary and fault conditions are specified using a  
spatial database, which permits easy prescription of complex spatial  
variations of properties and parameters. Simulation parameters are  
generally specified through the use of simple ASCII files or the  
command line.

You can download the source code and binaries from

    http://geodynamics.org/cig/software/packages/short/pylith

Installation instructions are in the bundled README and INSTALL  
files, as well as in the User Manual on the web page.

PyLith is under active development and we expect a number of  
additions and improvements in the near future. Likely enhancements  
will include a more complete set of boundary conditions (absorbing  
boundaries for use in dynamic modeling and traction boundary  
conditions for use in quasi-static modeling), additional constitutive  
models for both volume elements and cohesive (fault) elements,  
automatic generation of higher-order elements from linear elements,  
and the generation of Green's functions to be used in inversions.  
Many of these features should be available in Fall 2007.

Release notes:

  * Code now includes both dynamic and quasi-static solutions.

  * Completely rewritten in Python and C++, with bindings provided by
    Pyrex/Pyrexembed.

  * Easier specification of simulations:

      - Parameters are all set using .cfg files (or .pml/command-line).

      - Mesh may be directly imported from CUBIT, LaGriT, or using
        PyLith mesh ASCII format.

      - Material properties, fault dislocations, and BC are all given
        using spatial databases, which are independent of mesh
        discretization.

  * Faults are now implemented using cohesive elements:

      - Easy specification of kinematic fault slip using a spatial
        database.

      - Cohesive elements generate offsets in the mesh corresponding
        to fault slip, which increase the accuracy of displacement
        fields near faults and facilitate visualization of fault slip.

      - Usage of cohesive elements will facilitiate the upcoming
        addition of fault constitutive relations, where fault slip
        occurs in response to prescribed physics.

  * Improved implicit time-stepping eliminates need to perform more
    than one iteration for linear rheologies.

  * Code is now completely modular and object-oriented, which allows
    much easier addition of new features.  Modules may be added
    without having to recompile the code.

  * Features present in 0.8 that are not present in 1.0 that will be
    added in the near future.

      - Traction boundary conditions

      - Generalized Maxwell and Power-law Maxwell viscoelastic models

  * Bug fixes

      - Cohesive cells lacked consistent orientation (inconsistent
        normals) in cases where cells were not ordered one side of the
        fault and then the other.

      - Final slip of zero resulted in fault slip and slip increments
        of NAN.

      - Parallel importing of meshes from LaGrit and CUBIT lacked
        guards against all processors reading the files.

  * Known issues

      - Using the 32-bit linux binary on 64-bit linux systems

        The error message is ""merlin.DistributionNotFound:
        Cheetah". This error arises because one of the packages that
        PyLith uses does not know how to determine the system
        architecture at runtime. The workaround is:

        (1) Go to the lib/python2.5/site-packages directory.
        (2) Unzip merlin-1.3-py2.5.egg (if it is a file and not a directory).
        (3) Go to the merlin directory.
        (4) Edit __init__.py. Replace line 308
              plat = get_platform()
            with
             plat = "linux-i686"
        (5) If merlin-1.3-py2.5.egg is a file, rezip merlin. Go to the
            site-packages directory and enter
            "zip -r merlin-1.3-py2.5.egg merlin".


More information about the CIG-ALL mailing list