Epetra Package Browser (Single Doxygen Collection)  Development
Epetra_SerialSymDenseMatrix.h
Go to the documentation of this file.
1 /*
2 //@HEADER
3 // ************************************************************************
4 //
5 // Epetra: 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 EPETRA_SERIALSYMDENSEMATRIX_H
45 #define EPETRA_SERIALSYMDENSEMATRIX_H
47 
48 
50 
129 //=========================================================================
130 class EPETRA_LIB_DLL_EXPORT Epetra_SerialSymDenseMatrix : public Epetra_SerialDenseMatrix {
131 
132  public:
134 
135 
148 
163  Epetra_SerialSymDenseMatrix(Epetra_DataAccess CV, double *A, int LDA, int NumRowsCols);
164 
166 
168 
169 
171  virtual ~Epetra_SerialSymDenseMatrix ();
173 
175 
176 
177  //let the compiler know we intend to overload the base-class Shape function,
178  //rather than hide it.
180 
182 
192  int Shape(int NumRowsCols) {return(Epetra_SerialDenseMatrix::Shape(NumRowsCols,NumRowsCols));};
193 
194  //let the compiler know we intend to overload the base-class Reshape function,
195  //rather than hide it.
196 
198 
200 
211  int Reshape(int NumRowsCols) {return(Epetra_SerialDenseMatrix::Reshape(NumRowsCols,NumRowsCols));};
212 
213 
215  void SetLower() {Upper_ = false; UPLO_ = 'L';};
216 
218  void SetUpper() {Upper_ = true; UPLO_ = 'U';};
220 
222 
223 
225  bool Upper() const {return(Upper_);};
226 
228  char UPLO() const {return(UPLO_);};
230 
232 
233 
235 
244  int Scale ( double ScalarA );
245 
246 
248 
251  double NormOne() const;
252 
254  double NormInf() const;
255 
257 
258  void CopyUPLOMat(bool Upper, double * A, int LDA, int NumRows);
259 
261 
262 
264 
267  double OneNorm() const {return(Epetra_SerialSymDenseMatrix::NormOne());};
268 
270  double InfNorm() const {return(Epetra_SerialSymDenseMatrix::NormInf());};
272 
273  private:
274 
275  bool Upper_;
276 
277  char UPLO_;
278 
279 
280 };
281 
282 #endif /* EPETRA_SERIALSYMDENSEMATRIX_H */
bool Upper() const
Returns true if upper triangle of this matrix has and will be used.
virtual double NormInf() const
Computes the Infinity-Norm of the this matrix.
char UPLO() const
Returns character value of UPLO used by LAPACK routines.
int Reshape(int NumRowsCols)
Reshape a Epetra_SerialSymDenseMatrix object.
Epetra_SerialDenseMatrix: A class for constructing and using real double precision general dense matr...
Epetra_SerialSymDenseMatrix: A class for constructing and using symmetric positive definite dense mat...
double OneNorm() const
Computes the 1-Norm of the this matrix (identical to NormOne() method).
void SetUpper()
Specify that the upper triangle of the this matrix should be used.
int Reshape(int NumRows, int NumCols)
Reshape a Epetra_SerialDenseMatrix object.
int Scale(double ScalarA)
Inplace scalar-matrix product A = a A.
void SetLower()
Specify that the lower triangle of the this matrix should be used.
double NormInf() const
Computes the Infinity-Norm of the this matrix.
double NormOne() const
Computes the 1-Norm of the this matrix.
virtual double InfNorm() const
Computes the Infinity-Norm of the this matrix (identical to NormInf() method).
Epetra_DataAccess
int Shape(int NumRows, int NumCols)
Set dimensions of a Epetra_SerialDenseMatrix object; init values to zero.
virtual double NormOne() const
Computes the 1-Norm of the this matrix.
int Shape(int NumRowsCols)
Set dimensions of a Epetra_SerialSymDenseMatrix object; init values to zero.