###############################################################################
#                                                                             #
# Trilinos Release 10.12 Release Notes                                        #
#                                                                             #
###############################################################################

Overview:

The Trilinos Project is an effort to develop algorithms and enabling
technologies within an object-oriented software framework for the solution of
large-scale, complex multi-physics engineering and scientific problems.

Packages:

The Trilinos 10.12 general release contains 51 packages: Amesos, Amesos2,
Anasazi, AztecOO, Belos, CTrilinos, Didasko, Epetra, EpetraExt, FEI,
ForTrilinos, Galeri, GlobiPack, Ifpack, Ifpack2, Intrepid, Isorropia, Kokkos,
Komplex, LOCA, Mesquite, ML, Moertel, MOOCHO, NOX, Optika, OptiPack, Pamgen,
Phalanx, Piro, Pliris, PyTrilinos, RTOp, Rythmos, Sacado, SEACAS, Shards, STK,
Stokhos, Stratimikos, Sundance, Teko, Teuchos, ThreadPool, Thyra, Tpetra,
TriKota, TrilinosCouplings, Trios*, Triutils, Zoltan.

(* denotes package is being released externally as a part of Trilinos for the
first time.)

===============================================================================

Package Release Notes:

-------------------------------------------------------------------------------

ForTrilinos

  - This package builds with three compilers: the IBM XL Fortran (xlf) compiler
    versions 13.1 and higher, the Numerical Algorithms Group Fortran (nagfor)
    compiler version 5.3 and higher, and the GNU Fortran (gfortran) compiler
    version 4.7.0 and higher.

  - The ForTrilinos interfaces have been simplified relative to their C++
    counterparts: whereas the lack of array programming support in C++
    necessitates passing array size as a separate argument, Fortran arrays carry
    such information in internal descriptors so there is no need to pass array
    sizes.

  - Sample scripts for building ForTrilinos are provided in
    Trilinos/sampleScripts.

  - Building with gfortran versions before 4.8 requires setting flags that work
    around two missing compiler features: support for final subroutines and
    support for deferred-length character components. A sample script that sets
    the aforementioned flags is in :
    Trilinos/sampleScripts/mac-fortrilinos-gcc47-openmpi-debug and
    Trilinos/sampleScripts/mac-fortrilinos-gcc47-serial for mpi and serial
    builds respectively.  Users who build with gfortran should adopt two
    practices to prevent memory leaks:
      1. Construct ForTrilinos objects using the ForTrilinos constructor
         subroutines (do not use ForTrilinos constructor functions).
      2. Manually destroy all constructed ForTrilinos objects using by
         invoking the object's "force_finalize" type-bound procedure.

  - The project is primarily user-driven; new interfaces are developed at the
    request of Trilinos users.

Kokkos

  - Major (backwards-compatible, internal) refactor of local sparse operators,
    esp. DefaultSparseOps

  - Using generic sparse kernels only on host node; CUDA nodes use CUSPARSE.
    Adaptors for Cusp are work-in-progress.

  - Added first-touch-allocation support for sparse matrices; should improve
    performance on NUMA nodes.

  - Still lots of work in progress on sparse matrix support, expected for
    Trilinos 11.0

Mesquite

  - Removed Distance From Target (DFT) based metrics and added 
    Target-Matrix Optimazation Paradigm (TMOP) based metrics.

  - Fix broken patch culling functionality

  - Update for ITAPS 1.3 release candidate APIs

  - Added XYPlanarDomain type

  - Updated Histogram to a more intuitive format.

  - Added Scaled Histograms feature to QualityAssessor Summary code.

  - Significant updates to Users Guide.

  - Fixed QualityMetricTester utility class problem reported by Jason

  - fixed typo in header include guards reported by Jason Kraftcheck.

  - Fixed compiler errors using gcc/g++ 4.6 on Linux, Bug #5294

  - Fixed the errors in the MPI_DEBUG version of the check-in script on Linux.

  - Updated constructors in MsqIMeshP.*pp to match those of parent class
    MsqIMdesh.

  - Added parallel error handling to parallel Mesquite/VertexMover.

  - Fixed std::vector not being resized after the number of elements in
    it was reduced.

  - Added Windows code to replace tmp_File() function that does not work in
    Windows 7.

  - Fixed non-unique cmake global name issue.

  - Added code for Windows using srand().  Fix for bug #5351.

Teuchos

  - The current behavior of the Teuchos::XMLParameterListReader has been
    modified  to throw an exception (Teuchos::DuplicateParameterSublist) the
    event that a sublist is duplicated in an XML stream. This change is disabled
    by default in the  XMLParameterListReader class, and is enabled by calling:
    XMLParameterListReader::setAllowsDuplicateSublists( false )  This is
    configured, and thereby constitutes a non-backwards compatible change, 
    in the following encapsulating helper methods: 
        Teuchos::updateParametersFromXmlFile(...)
        Teuchos::updateParametersFromXmlFileAndBroadcast(...)
        Teuchos::getParametersFromXmlFile(...)
        Teuchos::updateParametersFromXmlString(...)
        Teuchos::getParametersFromXmlString(...)
    This change was requested by Panzer/Drekar developers, to aid in debugging
    the input of large XML programs specifying a physics application.

Tpetra

  - Major (backwards-compatible, internal) refactor to interaction between
    Tpetra::CrsGraph/CrsMatrix and their interaction  with their LocalSparseOps
    template parameter. 

  - Removed generic kernels for GPU nodes; GPU sparse kernel support now
    provided by CUSPARSE library; requires CUDA 4.1

  - Additional methods in Reduction/Transformation Interface (RTI) interface,
    examples in tpetra/examples/MultiPrec

  - Fixed major bugs in Tpetra Import/Export

  - Minor bug fixes and documenting tests

  - Numerous improvements to documentation

  - Better MatrixMarket support in tpetra/util

  - Added the ability to construct a Tpetra::Vector/MultiVector using user data
    (host-based nodes only)

  - Deprecated: fillComplete(OptimizeStorageOption) on Tpetra::CrsGraph and
    Tpetra::CrsMatrix, in favor of a ParameterList.

Trios

  - Significant changes to thread support for nessie.  
    - Implemented thread-safe version of nessie client/server... not fully
      tested.
    - Removed thread pool and threaded support from server. Assume service
      developer has their own thread pool.

  - Valgrind-detected bug fixes for IB port of NNTI. 

  - Modified xfer-service (example) to use multiple servers. 
    - Implemented two different client/partitioning schemes: round robin, block
      partition.