+
 diff -ruN trilinos-11.4.3/PackagesList.cmake trilinos-11.4.3-patched/PackagesList.cmake
 --- trilinos-11.4.3/PackagesList.cmake	2013-11-21 13:13:01.000000000 -0700
 +++ trilinos-11.4.3-patched/PackagesList.cmake	2014-03-11 12:51:18.000000000 -0600

 
 # if using parallel MUMPS, must also link in scalapack and BLACS
 
diff -ruN trilinos-11.4.3/packages/amesos/CMakeLists.txt.rej trilinos-11.4.3-patched/packages/amesos/CMakeLists.txt.rej
--- trilinos-11.4.3/packages/amesos/CMakeLists.txt.rej	1969-12-31 17:00:00.000000000 -0700
+++ trilinos-11.4.3-patched/packages/amesos/CMakeLists.txt.rej	2014-03-11 12:51:18.000000000 -0600
@@ -0,0 +1,21 @@
+--- packages/amesos/CMakeLists.txt	2013-11-04 12:26:37.000000000 -0700
++++ packages/amesos/CMakeLists.txt	2014-01-09 21:22:55.685993200 -0700
+@@ -12,10 +12,15 @@
+ # B) Set up package-specific options
+ #
+ 
++#
++# TMA: We can actually build SuperLU_Dist without ParMETIS per a recent Tech-X
++# change made with the help of Sherry Li.
++#
++
+ # if using SuperLUDist, must also link in ParMETIS for some reason
+-IF(${PACKAGE_NAME}_ENABLE_SuperLUDist AND NOT ${PACKAGE_NAME}_ENABLE_ParMETIS)
+-  MESSAGE(FATAL_ERROR "The Amesos support for the SuperLUIDist TPL requires the ParMETIS TPL.  Either disable Amesos SuperLUDist support or enable the ParMETIS TPL.")
+-ENDIF()
++#IF(${PACKAGE_NAME}_ENABLE_SuperLUDist AND NOT ${PACKAGE_NAME}_ENABLE_ParMETIS)
++#  MESSAGE(FATAL_ERROR "The Amesos support for the SuperLUIDist TPL requires the ParMETIS TPL.  Either disable Amesos SuperLUDist support or enable the ParMETIS TPL.")
++#ENDIF()
+ 
+ # if using parallel MUMPS, must also link in scalapack and BLACS
+ 
diff -ruN trilinos-11.4.3/packages/amesos/src/Amesos_Superludist.h.orig trilinos-11.4.3-patched/packages/amesos/src/Amesos_Superludist.h.orig
--- trilinos-11.4.3/packages/amesos/src/Amesos_Superludist.h.orig	1969-12-31 17:00:00.000000000 -0700
+++ trilinos-11.4.3-patched/packages/amesos/src/Amesos_Superludist.h.orig	2014-03-11 12:51:18.000000000 -0600
@@ -0,0 +1,221 @@
+// @HEADER
+// ***********************************************************************
+// 
+//                Amesos: Direct Sparse Solver Package
+//                 Copyright (2004) Sandia Corporation
+// 
+// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
+// license for use of this work by or on behalf of the U.S. Government.
+// 
+// This library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//  
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//  
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA
+// Questions? Contact Michael A. Heroux (maherou@sandia.gov) 
+// 
+// ***********************************************************************
+// @HEADER
+
+#ifndef AMESOS_SUPERLUDIST_H
+#define AMESOS_SUPERLUDIST_H
+
+#include "Amesos_ConfigDefs.h"
+#include "Amesos_BaseSolver.h"
+#include "Amesos_NoCopiable.h"
+#include "Amesos_Utils.h"
+#include "Amesos_Time.h"
+#include "Amesos_Status.h"
+#include "Amesos_Control.h"
+#include "Epetra_LinearProblem.h"
+#include "Teuchos_RCP.hpp"
+#ifdef EPETRA_MPI
+#include "Epetra_MpiComm.h"
+#else
+#include "Epetra_Comm.h"
+#endif
+
+
+// Amesos_Superludist_Pimpl contains a pointer to structures defined in 
+// superlu_ddefs.h.  This prevents Amesos_Superludist.h 
+// from having to include superludist.h.
+//
+//  Doxygen does not handle forward class references well.
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class Amesos_Superlu_Pimpl ; 
+#endif
+
+
+//! Amesos_Superludist:  An object-oriented wrapper for Superludist.
+/*!  Amesos_Superludist will solve a linear systems of equations: <TT>A X = B</TT>
+   using Epetra objects and the Superludist solver library, where
+  <TT>A</TT> is an Epetra_RowMatrix and <TT>X</TT> and <TT>B</TT> are 
+  Epetra_MultiVector objects.
+*/
+class Amesos_Superludist: public Amesos_BaseSolver,
+                          private Amesos_Time,
+                          private Amesos_NoCopiable,
+                          private Amesos_Utils,
+                          private Amesos_Control,
+                          private Amesos_Status 
+{
+
+public: 
+
+  //@{ \name Constructor methods
+  //! Amesos_Superludist Constructor.
+  /*! Creates an Amesos_Superludist instance, using an Epetra_LinearProblem,
+      passing in an already-defined Epetra_LinearProblem object. 
+
+      Note: The operator in LinearProblem must be an
+      Epetra_RowMatrix.
+
+  */
+  Amesos_Superludist(const Epetra_LinearProblem& LinearProblem);
+
+  //! Amesos_Superludist Destructor.
+  /*! Completely deletes an Amesos_Superludist object.  
+  */  ~Amesos_Superludist(void);
+  //@}
+
+  //@{ \name Mathematical functions.
+
+  int SymbolicFactorization() ;
+
+  int NumericFactorization() ;
+
+  int Solve();
+
+
+  //@}
+  //@{ \name Attribute set methods
+  
+  //!  Amesos_Superludist does not support transpose at this time.
+  /*!  returns 0 if UseTranspose is set to false, else 1 (failure)
+   */
+  int SetUseTranspose(bool UseTranspose) { return( UseTranspose?1:0 );};
+
+  //@}
+  //@{ \name Attribute access functions
+
+  const Epetra_LinearProblem *GetProblem() const { return(Problem_); };
+
+  //! Returns true if SUPERLUDIST can handle this matrix shape 
+  /*! Returns true if the matrix shape is one that SUPERLUDIST can
+    handle. SUPERLUDIST only works with square matrices.  
+  */
+  bool MatrixShapeOK() const;
+
+  //! Always returns false. Superludist doesn't support transpose solve
+  bool UseTranspose() const {return(false);};
+  //@}
+
+  int SetParameters( Teuchos::ParameterList &ParameterList ) ;
+
+  //! Returns the number of symbolic factorizations performed by this object.
+  int NumSymbolicFact() const { return( Amesos_Status::NumSymbolicFact_ ); }
+
+  //! Returns the number of numeric factorizations performed by this object.
+  int NumNumericFact() const { return( Amesos_Status::NumNumericFact_ ); }
+
+  //! Returns the number of solves performed by this object.
+  int NumSolve() const { return( Amesos_Status::NumSolve_ ); }
+
+  //! Print various timig.
+  void PrintTiming() const;
+  
+  //! Print various information about the parameters used by Superludist.
+  void PrintStatus() const;
+
+  //! Extracts timing information from the current solver and places it in the parameter list.
+  void GetTiming( Teuchos::ParameterList &TimingParameterList ) const { Amesos_Time::GetTiming(TimingParameterList); }
+  
+private:  
+  inline const Epetra_Comm& Comm() const {return(GetProblem()->GetOperator()->Comm());};
+
+  inline const Epetra_Import& Importer() const
+  {
+    return(*(Importer_.get()));
+  }
+
+  inline const Epetra_Map& UniformMap() const
+  {
+    return(*(UniformMap_.get()));
+  }
+
+  inline const Epetra_RowMatrix& UniformMatrix() const
+  {
+    return(*(UniformMatrix_.get()));
+  }
+
+  inline Epetra_CrsMatrix& CrsUniformMatrix()
+  {
+    return(*(CrsUniformMatrix_.get()));
+  }
+
+  //
+  //  PrivateSuperluData_ contains pointers to data needed by klu whose
+  //  data structures are defined by klu.h
+  //
+  Teuchos::RCP<Amesos_Superlu_Pimpl> PrivateSuperluData_; 
+
+  int RedistributeA();
+
+  int ReFactor();
+  int Factor();
+  
+  const Epetra_LinearProblem* Problem_;
+  Epetra_RowMatrix *RowMatrixA_ ;  // Problem_->GetOperator()
+
+  RCP<Epetra_Map> UniformMap_;
+  RCP<Epetra_CrsMatrix> CrsUniformMatrix_;  
+  RCP<Epetra_RowMatrix> UniformMatrix_;  
+  Teuchos::RCP<Epetra_Import> Importer_;
+
+  //! Allows FactOption to be used on subsequent calls to pdgssvx from NumericFactorization
+  bool ReuseSymbolic_; 
+  //! redistribute the input matrix prior to calling Superludist
+  bool Redistribute_ ; 
+
+  //! \c true if the SuperLU_DIST's grid has been created (and has to be free'd)
+  int GridCreated_ ; 
+  int FactorizationDone_ ; 
+  //! \c true if NumericFactorization() has been successfully called.
+  bool FactorizationOK_ ;
+
+  //! Global dimension of the matrix.
+  int NumGlobalRows_; 
+
+  // Ap, Ai, Aval form the compressed row storage used by SuperLU_DIST
+  std::vector <int> Ap_;
+  std::vector <int> Ai_;
+  std::vector <double> Aval_;
+  //! Contains the global ID of local columns.
+  int* Global_Columns_;
+
+  int nprow_;
+  int npcol_;
+
+  bool PrintNonzeros_;
+  std::string ColPerm_;
+  std::string RowPerm_;
+  int* perm_c_;
+  int* perm_r_;
+  std::string IterRefine_;
+  bool ReplaceTinyPivot_;
+  bool Equil_;
+
+  int MtxConvTime_, MtxRedistTime_, VecRedistTime_;
+  int NumFactTime_, SolveTime_, OverheadTime_;
+ 
+};  // End of  class Amesos_Superludist  
+#endif /* AMESOS_SUPERLUDIST_H */
diff -ruN trilinos-11.4.3/packages/amesos/src/Amesos_Superludist.h.rej trilinos-11.4.3-patched/packages/amesos/src/Amesos_Superludist.h.rej
--- trilinos-11.4.3/packages/amesos/src/Amesos_Superludist.h.rej	1969-12-31 17:00:00.000000000 -0700
+++ trilinos-11.4.3-patched/packages/amesos/src/Amesos_Superludist.h.rej	2014-03-11 12:51:18.000000000 -0600
@@ -0,0 +1,13 @@
+--- packages/amesos/src/Amesos_Superludist.h	2013-11-04 12:26:38.000000000 -0700
++++ packages/amesos/src/Amesos_Superludist.h	2014-01-09 21:22:56.185199600 -0700
+@@ -115,8 +115,8 @@
+   */
+   bool MatrixShapeOK() const;
+ 
+-  //! Always returns true.
+-  bool UseTranspose() const {return(true);};
++  //! Always returns false.
++  bool UseTranspose() const {return(false);};
+   //@}
+ 
+   int SetParameters( Teuchos::ParameterList &ParameterList ) ;
diff -ruN trilinos-11.4.3/packages/ifpack/src/Ifpack_ICT.cpp trilinos-11.4.3-patched/packages/ifpack/src/Ifpack_ICT.cpp
--- trilinos-11.4.3/packages/ifpack/src/Ifpack_ICT.cpp	2013-11-21 13:11:43.000000000 -0700
+++ trilinos-11.4.3-patched/packages/ifpack/src/Ifpack_ICT.cpp	2014-03-11 12:51:18.000000000 -0600

 PACKAGE_DISABLE_ON_PLATFORMS(Anasazi Windows)
 PACKAGE_DISABLE_ON_PLATFORMS(Zoltan Windows)
 PACKAGE_DISABLE_ON_PLATFORMS(Isorropia Windows)
diff -ruN trilinos-11.4.3/packages/amesos/CMakeLists.txt trilinos-11.4.3-patched/packages/amesos/CMakeLists.txt
--- trilinos-11.4.3/packages/amesos/CMakeLists.txt	2013-11-21 13:13:00.000000000 -0700
+++ trilinos-11.4.3-patched/packages/amesos/CMakeLists.txt	2014-03-11 12:51:18.000000000 -0600
