Release Notes for PyTrilinos for Trilinos 12.14
===============================================

General
  * Better logic for finding mpi.h and parsing MPI_VERSION
  * Fix install logic
  * Use moduleimport SWIG directive and require SWIG 3.0.11
  * Clean up the src directory
  * Add PyTrilinos_*_Headers.hpp files
  * Update Developers Guide

Teuchos
  * Fix Teuchos.MpiComm constructor with Mpi4Py Comm object
  * Add RCP sub-module with RCP accessor functions

Ifpack
  * Proper include of Ifpack_ConfigDefs.h

Isorropia
  * Disable Isorropia under Python 3 due to import problem that will
    require a refactor

Release Notes for PyTrilinos for Trilinos 12.12
===============================================

General
  * PyTrilinos now works with both Python versions 2 and 3
  * Internally, PyTrilinos now uses relative imports
  * Protect against Doxygen version 1.8.13

Teuchos
  * Fix ParameterList __cmp__() operator
  * Improved memory management for wrapped version of sublists
  * Fixed a memory leak in the definitions for certain directorin
    typemaps

Epetra
  * Add AsMap() method to Epetra.BlockMap class

ML
  * Fixed a dangling reference error in an ML example script.

LOCA
  * Fixed a memory leak in LOCA example script
  * Fixed a memory leak in the wrappers for the
    LOCA::Abstract::Iterator::StepStatus enumeration

Anasazi
  * Fixed a memory leak that PyTrilinos introduced with the
    Eigensolution<...>::evecs() and espace() methods

Release Notes for PyTrilinos for Trilinos 12.8
==============================================

General
  * Improved formatting in example scripts

Domi
  * Update MDMap constructor for replicated boundaries
  * Fixed ETI bugs

NOX/LOCA
  * Fixed memory leak by updating NOX typemaps

Tpetra
  * Fix difficult-to-wrap Map class by using %inline

Release Notes for PyTrilinos for Trilinos 12.4
==============================================

General
  * Fixed several memory management bugs
  * Fixed a pervasive bug where C++ exceptions were caught in the
    wrong order. This fix results in Python errors that have much
    better messages, making it easier to debug problems that employ
    cross-language polymorphism.

Teuchos
  * Upgraded Teuchos.ParameterList to support an Array(string) value
    type.

Epetra
  * Added new Python-to-C++ converters that convert a wider variety of
    Python objects to distributed Epetra vectors (Epetra_MultiVector,
    Epetra_Vector, Epetra_IntVector).  This includes any Python object
    that exports the Distributed Array Protocol, such as Enthought's
    DistArray.  It also includes NumPy arrays when running in a serial
    environment.
  * Added __distarray__() method to Epetra vector classes, so that
    they now export the Distributed Array Protocol.
  * Memory management issues associated with the Epetra.LinearProblem
    class and the new Epetra vector converters were fixed.

Tpetra
  * Fixed wrappers for Tpetra MultiVector and Vector classes.
  * Added __distarray__() method to Tpetra vector classes, so that
    they now export the Distributed Array Protocol.
  * Bug fixes related to latest Tpetra upgrade

LOCA
  * Introduced a new LOCA test in which the Chan problem is solved
    using a preconditioner.

Release Notes for PyTrilinos for Trilinos 12.0
==============================================

General
  * Changed to BSD license
  * Mpi4Py support has been made optional.  Previously, if Mpi4Py was
    found, it was automatically enabled within PyTrilinos.  Now that
    behavior can be turned off.

LOCA
  * The LOCA module has been refactored and now has been demonstrated
    to work for the Chan problem.  We have two example problems
    working, one without preconditioning, and one with.

Tpetra
  * Package is still experimental.  The recent refactor has broken
    MultiVectors and Vectors.
  * Map support has been improved

Anasazi
  * Fixed a bug where return eigenvalues are converted to a NumPy
    array, but the dimension used the wrong type.

Kokkos
  * Fixed a macro issue

NOX
  * Started PETSc compatibility.  This is still experimental, and
    includes compatibility with petsc4py.

STK
  * Removed PyPercept, as it is currently not a part of the new STK.

Domi
  * Added package

Release Notes for PyTrilinos 4.12 (Trilinos 11.12)
==================================================

General
  * Got rid of NestedEpetra paradigm and now use relative imports to
    address the problem that NestedEpetra wass supposed to solve.
  * Changed build system for docstrings.  The docstrings are no longer
    stored in the repository.  If the user wants docstrings, then
    doxygen needs to be installed.  Docstrings are built during the
    configuration phase.
  * Fixed warnings due to Epetra 32/64 bit handling
  * Added mpi4py support.  Specifically, the Eptra_MpiComm
    constructors and Teuchos::MpiComm<> constructors can now take MPI
    sub-communicators, provided by mpi4py.MPI.Comm class.  Ignored if
    mpi4py is not found.
  * Updated Developers Guide

Teuchos module
  * Support for the Teuchos::DataAccess enumeration.  This enables
    certain Tpetra and Domi constructors
  * Add Teuchos::Arrays of int, long, float and double, as valid types
    for PyTrilinos ParameterLists

DistArray Protocol
  * Added support for the DistArray Protocol.  This is preliminary and
    unfortunatley, does not provide any functionality with this
    release.

LOCA module
  * Re-instated the LOCA wrappers.  These are still experimentaland
    require SWIG 3.0.0 and Python 2.5.
  * Re-introduction of the LOCA interface required the introduction of
    relative imports, which require Python 2.5 or higher.

Isorropia module
  * Refactor of Isorropia directory structure.  This should not affect
    users.

Release Notes for PyTrilinos 4.10 (Trilinos 11.8)
=================================================

General
  * Various changes to improve the stability and robustness of the
    build system.  Addresses some instability in PyTrilinos introduced
    with new 64 bit capabilities in Epetra.  Some compilation warnings
    eliminated.  SWIG version checks added.

Release Notes for PyTrilinos 4.10 (Trilinos 11.4)
=================================================

General
  * Updated the NumPy interface to properly deal with deprecated
    code.  If PyTrilinos if compiled an older NumPy, it still works,
    but if compiled against newer versions of NumPy, the deprecated
    code is avoided, as are the warnings.


Release Notes for PyTrilinos 4.8 (Trilinos 11.2)
================================================

General
  * Added STK as an optional dependency of PyTrilinos
  * Added Pliris as a supported package
  * Provide better compatibility with external MPI implementations.
    Specifically, if the user were to "import mpi4py" (for example)
    prior to importing Teuchos or Epetra, then the Teuchos or Epetra
    modules will not take responsibility for calling MPI_Finalize().
  * Fixed some build errors

Epetra module
  * Priliminary support for Epetra64.  Ultimately, I would like the
    default behavior to be using 64-bit methods without refering to
    64-bit method names.
  * Added PyTrilnos.Epetra.FECrsMatrix InsertGlobalValues method that
    had been hidden by a %extend SWIG directive.

EpetraExt module
  * Gave names to EpetraExt template classes.  Using the nameless
    versions had caused problems with newer versions of SWIG.  This
    should get rid of the need for a patch distributed with
    Archlinux.
  * Added the EpetraExt::CrsMatrix_SubCopy class to
    PyTrilinos.EpetraExt.

NOX module
  * Improved NOX support, especially NOX.Epetra.  This should be
    largely invisible to the user, but I used to have to always import
    NOX whether the user wanted it or not, due to nested namespace
    issues.  These issues have been resolved now, and you only import
    NOX if you specifically request it.

Anasazi module
  * Added EpetraMultiVecAccessor base class.  Anasazi added this base
    class, and now the PyTrilinos version supports it as well.

Release Notes for PyTrilinos 4.6 (Trilinos 10.10)
=================================================

Added support for the use case when Trilinos requests a
Teuchos::ArrayView<>.  In Python, the user can supply a NumPy array or
a Python sequence (input arguments only) and PyTrilinos will convert
it to the necessary ArrayView type automatically.  This currently only
applies to the Teuchos.Comm classes, but the infrastructure is there
for future needs.

Changed PyTrilinos string checks to accommodate older Pythons in which
strings can only be regular strings and newer Pythons in which strings
can be either unicode or regular strings.

Added experimental support for STK package Percept mesh module.

Release Notes for PyTrilinos 4.6 (Trilinos 10.8)
================================================

Improved the MPI initialization logic in Teuchos and Epetra modules.
Previously, both modules would call MPI_Init() when they were imported
into the python interpretter and register MPI_Finalize() with the
atexit module (each module did perform checks before executing the
calls in case the other module beat it to the punch).  Now, each
module checks to see if MPI_Init() has already been called, and if so,
it does not register MPI_Finalize() with atexit.  This way, if the
user initializes MPI ahead of importing Teuchos or Epetra (such as
with mpi4py, for example), then the user is responsible for
finalization, and can assume finer control.

Added the Isorropia package, for partitioning Epetra objects.  This
includes an IsorropiaVisualizer.py script.

This release contains a large number of internal changes mostly not
visible to end users, except for increased stability and bug fixes.
One big change is that C++ referenced counted pointers (via the
Teuchos::RCP class) are now properly handled.  Fixed a couple of bugs
in the Amesos, AztecOO and EpetraExt wrappers.  Changed the Amesos
example scripts to follow PyTrilinos coding standards.  Put all C++
code within the PyTrilinos namespace.  Changed C++ file names to have
PyTrilinos_ prefix.

Release Notes for PyTrilinos 4.4 (Trilinos 10.4)
================================================

The logic for determining the prefix for the install directory for PyTrilinos has
been improved.  Highest precedence is given to the configure variable
PyTrilinos_INSTALL_PREFIX.  If this is not set by the user, then next
highest precedence is given to CMAKE_INSTALL_PREFIX.  If this has not
been set by the user, then the prefix of the python interpreter that
PyTrilinos is being compiled against is used.

Release Notes for PyTrilinos 4.3 (Trilinos 10.2)
================================================

PyTrilinos.NOX notes:

  Updated the wrappers so that the Jacobian can be specified using the
  NOX.Epetra.Interface.Jacobian base class.  To get this to work
  required that the directorin %typemaps for Epetra_Operator used by
  NOX.Epetra.Interface.Jacobian be updated to downcast the
  Epetra_Operator argument to our best guess at the derived class.
  Such a downcast had already been written for the EpetraExt
  ModelEvaluator, so code was moved around to make it more generally
  accessible.  This uncovered a memory management bug that took some
  time to track down, but the result now is much more stable memory
  management all-around.

  The new capability is demonstrated in serial in example script
  exNOX_2DSim.

Release Notes for PyTrilinos 4.2 (Trilinos 10.0)
================================================

General notes for PyTrilinos:

  * Converted to CMake build system

  * Added const-correctness for char* function arguments.  This
    improves compatibility with newer gnu compilers.

PyTrilinos.Teuchos notes:

  * LabeledObject and Describable classes converted to director
    classes so that virtual methods can be overridden in python.

PyTrilinos.EpetraExt notes:

  * Added wrappers for ModelEvaluator and all associated classes

PyTrilinos.Komplex notes:

  * Added Komplex module

PyTrilinos.Pliris notes:

  * Added Pliris module

PyTrilinos.NOX notes:

  * Improved robustness of NOX sub-packages

  * Added wrappers for ModelEvaluatorInterface class

  * Added default builder functions:

    + defaultNonlinearParameters()
    + defaultGroup()
    + defaultStatusTest()
    + defaultSolver()



Release Notes for PyTrilinos 4.1 (Trilinos 9.0)
===============================================

General notes for PyTrilinos:

  * Added auto-generated documentation.

  * Standardized and upgraded PyTrilinos module docstrings.

  * Improved exception handling.

  * Fixed problem with patch for numpy 0.9.8 bug; moved fix for python
    2.5 compatibility into file where it is directly needed.

  * Fixed problem some PyTrilinos modules had interpreting elements of
    numpy arrays as integers.

  * Added logic to python extension module builds so that compile
    flags -ansi and -pedantic will be ignored.

  * Fixed some incompatibilities between the generated code from swig
    version 1.3.35 and earlier versions.

  * Better error checking when a python argument is converted to an
    array of char* strings.

  * Eliminated certain runtime type information errors by moving to
    shared laibraries, thus ensuring that no symbols get duplicated.

  * Added C89 compliance.

  * Changed PyTrilinos/__init__.py to alter the python dlopen flags so
    that symbols are shared across all of the PyTrilinos extension
    modules.  This fixed many bugs associated with symbols crossing
    shared library boundaries.

  * Added fixes for installation on Fedora Core.

PyTrilinos.Teuchos notes:

  * Added support for Teuchos::Comm, Teuchos::SerialComm,
    Teuchos::MpiComm and Teuchos::DefaultComm, including tests.

PyTrilinos.Epetra notes:

  * Added support for the Epetra.Comm Broadcast method with string
    data, including additions to testEpetra_Comm.py to test the
    capability.  Since these are in-place, users must use numpy arrays
    of strings.

  * Some PyTrilinos.Epetra MPI reduction operations were returning
    garbage.  This was fixed by clearing out those arrays prior to the
    call.

  * Epetra.Finalize() (called automatically when the Epetra module is
    destroyed) now checks MPI_Finalized() before calling
    MPI_Finalize().  This should help it play nice with Teuchos MPI
    support.

  * Upgraded Epetra.FEVector to reflect its new multivector nature.

  * Fixed Epetra.Vector and Epetra.MultiVector objects so that slices
    return new Epetra.[Multi]Vector objects with accurate Maps.

PyTrilinos.AztecOO notes:

  * Improved the AztecOO wrappers for better compatibility with older
    versions of numpy.

  * Fixed exAztecOO_Operator.py, exAztecOO_RowMatrix.py and
    exAztecOO_BasicRowMatrix.py example scripts so that they work in
    parallel.

PyTrilinos.ML notes:

  * Updated PyTrilinos.ML to be more robust.

PyTrilinos.NOX notes:

  * Fixed NOX.Solver.myBuildSolver to properly use new Teuchos::Ptr
    templated class.

PyTrilinos.Anasazi notes:

  * Added MPI support to Anasazi wrappers.

  * Updated PyTrilinos w.r.t. changes in Anasazi::SortManager interface.

  * Added support to Anasazi wrappers for extracting eigenvalues and
    eigenvectors.
