/*!
     * \brief Create a deep copy of the provided vector and return a
     * reference-counted pointer.
     */
    static Teuchos::RCP<vector_type> deepCopy( const vector_type& vector )
    {
	Teuchos::RCP<vector_type> vector_copy = clone( vector );
	Teuchos::ArrayRCP<Scalar> copy_view = vector_copy->getDataNonConst();
	copy_view.deepCopy( vector.getData()() );
	return vector_copy;
    }
    /*!
     * \brief Get a const view of the local vector data.
     */
    static Teuchos::ArrayRCP<const scalar_type> view( const vector_type& vector )
    { 
	return vector.getData();
    }