EpetraExt Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
GenSQP_YUEpetraVector.hpp
Go to the documentation of this file.
1/*
2//@HEADER
3// ***********************************************************************
4//
5// EpetraExt: Epetra Extended - Linear Algebra Services Package
6// Copyright (2011) Sandia Corporation
7//
8// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9// the U.S. Government retains certain rights in this software.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39//
40// ***********************************************************************
41//@HEADER
42*/
43
44#ifndef GENSQP_YUEPETRAVECTOR_H
45#define GENSQP_YUEPETRAVECTOR_H
46
47#include "GenSQP_Vector.hpp"
48#include "Epetra_MultiVector.h"
49
50
61namespace GenSQP {
62
63class YUEpetraVector : public Vector {
64
65private:
66
67 Teuchos::RCP<Epetra_MultiVector> y_epetra_vec_;
68 Teuchos::RCP<Epetra_MultiVector> u_epetra_vec_;
69
70public:
71
72 YUEpetraVector( const Teuchos::RCP<Epetra_MultiVector> &y_epetra_vec,
73 const Teuchos::RCP<Epetra_MultiVector> &u_epetra_vec );
74
77
78 double innerProd( const Vector &x ) const;
79
80 void linComb( const double &alpha, const Vector &x, const double &beta );
81
82 void Scale( const double &alpha );
83
84 void Set( const double &alpha );
85
86 void Set( const double &alpha, const Vector &x );
87
88 Teuchos::RCP<Vector> createVector() const;
89
91
94 Teuchos::RCP<const Epetra_MultiVector> getYVector() const;
95
98 Teuchos::RCP<const Epetra_MultiVector> getUVector() const;
99
100
101}; // class YUEpetraVector
102
103} // namespace GenSQP
104
105#endif
Provides the interface to generic abstract vector libraries.
The GenSQP::Vector / (y,u) Epetra_MultiVector adapter class.
Teuchos::RCP< const Epetra_MultiVector > getUVector() const
Returns a reference counted pointer to the private u_epetra_vec data container ("control variables").
double innerProd(const Vector &x) const
Returns inner(*this,x).
Teuchos::RCP< Vector > createVector() const
Clone to make a new (uninitialized) vector.
void Scale(const double &alpha)
y = alpha*y where y == *this.
void linComb(const double &alpha, const Vector &x, const double &beta)
y = alpha*x + beta*y where y == *this.
Teuchos::RCP< const Epetra_MultiVector > getYVector() const
Returns a reference counted pointer to the private y_epetra_vec data container ("state variables").
Teuchos::RCP< Epetra_MultiVector > u_epetra_vec_
void Set(const double &alpha)
y = alpha where y == *this.
Teuchos::RCP< Epetra_MultiVector > y_epetra_vec_