Epetra Package Browser (Single Doxygen Collection) Development
Epetra_SerialSymDenseMatrix.h
Go to the documentation of this file.
00001 /*
00002 //@HEADER
00003 // ************************************************************************
00004 //
00005 //               Epetra: Linear Algebra Services Package
00006 //                 Copyright 2011 Sandia Corporation
00007 //
00008 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00009 // the U.S. Government retains certain rights in this software.
00010 //
00011 // Redistribution and use in source and binary forms, with or without
00012 // modification, are permitted provided that the following conditions are
00013 // met:
00014 //
00015 // 1. Redistributions of source code must retain the above copyright
00016 // notice, this list of conditions and the following disclaimer.
00017 //
00018 // 2. Redistributions in binary form must reproduce the above copyright
00019 // notice, this list of conditions and the following disclaimer in the
00020 // documentation and/or other materials provided with the distribution.
00021 //
00022 // 3. Neither the name of the Corporation nor the names of the
00023 // contributors may be used to endorse or promote products derived from
00024 // this software without specific prior written permission.
00025 //
00026 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00027 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00028 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00029 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00030 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00031 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00032 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00033 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00034 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00035 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00036 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00037 //
00038 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
00039 //
00040 // ************************************************************************
00041 //@HEADER
00042 */
00043 
00044 #ifndef EPETRA_SERIALSYMDENSEMATRIX_H
00045 #define EPETRA_SERIALSYMDENSEMATRIX_H
00046 #include "Epetra_SerialDenseMatrix.h"
00047 
00048 
00050 
00129 //=========================================================================
00130 class EPETRA_LIB_DLL_EXPORT Epetra_SerialSymDenseMatrix : public Epetra_SerialDenseMatrix {
00131 
00132  public:
00134 
00135 
00136 
00146   Epetra_SerialSymDenseMatrix(void);
00148 
00163   Epetra_SerialSymDenseMatrix(Epetra_DataAccess CV, double *A, int LDA, int NumRowsCols);
00164 
00166 
00167   Epetra_SerialSymDenseMatrix(const Epetra_SerialSymDenseMatrix& Source);
00168 
00169 
00171   virtual ~Epetra_SerialSymDenseMatrix ();
00173 
00175 
00176 
00177   //let the compiler know we intend to overload the base-class Shape function,
00178   //rather than hide it.
00179   using Epetra_SerialDenseMatrix::Shape;
00180 
00182 
00192   int Shape(int NumRowsCols) {return(Epetra_SerialDenseMatrix::Shape(NumRowsCols,NumRowsCols));};
00193 
00194   //let the compiler know we intend to overload the base-class Reshape function,
00195   //rather than hide it.
00196 
00197   using Epetra_SerialDenseMatrix::Reshape;
00198 
00200 
00211   int Reshape(int NumRowsCols) {return(Epetra_SerialDenseMatrix::Reshape(NumRowsCols,NumRowsCols));};
00212 
00213 
00215   void SetLower() {Upper_ = false; UPLO_ = 'L';};
00216 
00218   void SetUpper() {Upper_ = true; UPLO_ = 'U';};
00220 
00222 
00223 
00225   bool Upper() const {return(Upper_);};
00226 
00228   char UPLO() const {return(UPLO_);};
00230 
00232 
00233 
00235 
00244   int  Scale ( double ScalarA );
00245 
00246 
00248 
00251   double NormOne() const;
00252 
00254   double NormInf() const;
00255 
00257 
00258   void CopyUPLOMat(bool Upper, double * A, int LDA, int NumRows);
00259 
00261 
00262 
00264 
00267   double OneNorm() const {return(Epetra_SerialSymDenseMatrix::NormOne());};
00268 
00270   double InfNorm() const {return(Epetra_SerialSymDenseMatrix::NormInf());};
00272 
00273  private:
00274 
00275   bool Upper_;
00276 
00277   char UPLO_;
00278 
00279 
00280 };
00281 
00282 #endif /* EPETRA_SERIALSYMDENSEMATRIX_H */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines