//==============================================================================
int Ifpack2_LocalFilter::ExtractDiagonalCopy(Tpetra_Vector & Diagonal) const
{
    if (!Diagonal.Map().SameAs(*Map_))
        IFPACK2_CHK_ERR(-1);
    Diagonal = *Diagonal_;
    return(0);
}
//==============================================================================
int Ifpack2_ReorderFilter::
ExtractDiagonalCopy(Tpetra_Vector & Diagonal) const
{
  Tpetra_Vector DiagonalTilde(Diagonal.Map());
  IFPACK2_CHK_ERR(Matrix()->ExtractDiagonalCopy(DiagonalTilde));
  IFPACK2_CHK_ERR((Reordering_->P(DiagonalTilde,Diagonal)));
  return(0);
}