Greetings,

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

This release fixes several bugs in PyLith v1.9.0 and contains major
under-the-hood improvements. We strongly recommend all users of
previous PyLith releases switch to this latest release.

A few small changes are needed in .cfg files to switch from v1.9.0 to
v2.0.0. 

You can download the source code and binaries from

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

Detailed installation instructions for the binary packages are in the
User Manual with detailed building instructions for a few platforms in
the INSTALL file bundled with the PyLith Installer utility.


======================================================================
MIGRATING FROM VERSION 1.9 TO 2.0
======================================================================

Changes to various C++ objects permitted simplifying the specification
of a number of components. The map below indicates the name changes.

  CellFilterAvgMesh -> CellFilterAvg
  DataWriterVTKMesh -> DataWriterVTK
  DataWriterVTKSubMesh -> DataWriterVTK
  DataWriterVTKSubSubMesh -> DataWriterVTK
  DataWriterHDF5Mesh -> DataWriterHDF5
  DataWriterHDF5SubMesh -> DataWriterHDF5
  DataWriterHDF5SubSubMesh -> DataWriterHDF5
  DataWriterHDF5ExtMesh -> DataWriterHDF5Ext
  DataWriterHDF5ExtSubMesh -> DataWriterHDF5Ext
  DataWriterHDF5ExtSubSubMesh -> DataWriterHDF5Ext

  Running the script:

    bash $PYLITH_DIR/doc/developer/update_1.9to2.0.sh

  will update all .cfg files in the current directory and all
  subdirectories with the new names (you will need to replace
  $PYLITH_DIR with the directory containing the PyLith source code).


PyLith allows use of the Chaco and ParMetis/Metis partitioners. The
name of the ParMetis/Metis partitioner was changed from "parmetis" to
"metis".

  [pylithapp.mesh_generator]
  distributor.partitioner = metis

Buried edges of faults are handled differently in v2.0. A separate
nodeset/pset should be created and contain the vertices on the buried
edges of the fault. See the Section 6.4.2 of the PyLith manual for
more information.

======================================================================
RELEASE NOTES - PyLith v2.0.0
======================================================================

* Replaced C++ Sieve implementation of finite-element data structures
  with C DMPlex implementation.

  DMPlex provides a simpler, more efficient implementation of the
  finite-element data structures that conforms to the PETSc data
  management (DM) interface. This provides tighter integration with
  the rest of PETSc. Additionally, this rewrite of the data structures
  results in a more efficient memory layout, resulting in better
  performance.

* Improved treatment of buried fault edges, so that the slip naturally
  tapers to zero along the buried edges.

  An additional nodeset/pset is used to designate the buried edges of
  a fault. This allows the cohesive cells to be inserted up to the
  edge of the fault without splitting the mesh at the fault edge. The
  slip will naturally taper to zero at along the buried edges as a
  result of how the cohesive cells are created.

* Switched from using Subversion to Git for version control.

  The source code repository changed from a CIG maintained Subversion
  repository to a Git repository at Github.com. The URL for the Git
  repository is https://github.com/geodynamics/pylith. The installer
  has been updated accordingly.

* Added ability to recursively refine a mesh.

  Global uniform refinement can now be done recursively. Each
  refinement reduces the vertex spacing by a factor of two. Using more
  than one level of refinement should be done carefully as the mesh
  quality will generally deteriorate with more levels of refinement.

* Directories for output are created as necessary.

  Directories where output files are written will be created if
  necessary. Previously, the directories would not be created, so that
  opening the output files in a nonexistent directory would generate
  an error.

* Improved error messages.

  Error messages originating in PETSc will include a stack trace that
  includes both PyLith and PETSc code. Previously, only the PETSc code
  was included. This provides significantly more information for
  debugging.

* Improved CUBIT example for mesh sizing functions.

  Based on experimentation with CUBIT 14.0, 14.1, and Trelis 15.0, we
  have improved the CUBIT mesh sizing examples
  (examples/meshing/cubit_cellsize). We were able to simplify the
  journal files and use fewer CUBIT commands. The new procedure also
  eliminates some CUBIT warnings.

* Several small improvements to various sections of the manual based
  on feedback and questions from users.

  - Added more information about the workflow involved in using PyLith.

  - Added a discussion of how to set scales for nondimensionalization.

  - Added a discussion of how the stable time step is computed for the
    various materials.

  - Updated and expanded the discussion of using initial state
    variables.

* Bug fixes

  - Fixed two MPI related bugs in computing Green's functions in
    parallel. The number of impulses corresponded to only those on
    process 0.

  - Corrected computation of fault tractions (Lagrange multipliers) on
    process boundaries for prescribed slip with explicit time stepping.

  - Fixed bug when reading in list of output points with just one
    point.

  - Adjusted autoconf Python setup macro to remove temporary
    sysconfig.pyc file.

  - Added check to make sure degree of freedom specified in Dirichlet
    BC is consistent with spatial dimension of problem.

  - Corrected two typos in the manual related to fault opening and
    tractions in examples/3d/hex8/step20 and updating to the use of
    cell.dimension for the quadrature scheme with tets.

  - Fixed stable time step computed for power-law viscoelastic
    rheology to match manual.

