00001 //************************************************************************** 00002 // 00003 // NOTICE 00004 // 00005 // This software is a result of the research described in the report 00006 // 00007 // " A comparison of algorithms for modal analysis in the absence 00008 // of a sparse direct method", P. Arbenz, R. Lehoucq, and U. Hetmaniuk, 00009 // Sandia National Laboratories, Technical report SAND2003-1028J. 00010 // 00011 // It is based on the Epetra, AztecOO, and ML packages defined in the Trilinos 00012 // framework ( http://software.sandia.gov/trilinos/ ). 00013 // 00014 // The distribution of this software follows also the rules defined in Trilinos. 00015 // This notice shall be marked on any reproduction of this software, in whole or 00016 // in part. 00017 // 00018 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00019 // license for use of this work by or on behalf of the U.S. Government. 00020 // 00021 // This program is distributed in the hope that it will be useful, but 00022 // WITHOUT ANY WARRANTY; without even the implied warranty of 00023 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00024 // 00025 // Code Authors: U. Hetmaniuk (ulhetma@sandia.gov), R. Lehoucq (rblehou@sandia.gov) 00026 // 00027 //************************************************************************** 00028 /************************************************************************** 00029 * * 00030 * Swiss Federal Institute of Technology (ETH) * 00031 * CH-8092 Zuerich, Switzerland * 00032 * * 00033 * (C) 1999 All Rights Reserved * 00034 * * 00035 * NOTICE * 00036 * * 00037 * Permission to use, copy, modify, and distribute this software and * 00038 * its documentation for any purpose and without fee is hereby granted * 00039 * provided that the above copyright notice appear in all copies and * 00040 * that both the copyright notice and this permission notice appear in * 00041 * supporting documentation. * 00042 * * 00043 * Neither the Swiss Federal Institute of Technology nor the author make * 00044 * any representations about the suitability of this software for any * 00045 * purpose. This software is provided ``as is'' without express or * 00046 * implied warranty. * 00047 * * 00048 ***************************************************************************/ 00049 00050 #ifndef ORTHOPACK_H 00051 #define ORTHOPACK_H 00052 00053 #include "Epetra_ConfigDefs.h" 00054 00055 #include "Epetra_BLAS.h" 00056 #include "Epetra_Comm.h" 00057 #include "Epetra_MultiVector.h" 00058 #include "Epetra_Operator.h" 00059 #include "Epetra_Vector.h" 00060 00061 class OrthoPack { 00062 00063 private: 00064 00065 Epetra_BLAS callBLAS; 00066 00067 public: 00068 00069 OrthoPack(); 00070 00071 void IteratedClassicalGS(Epetra_Vector *v, double *vnrm, const Epetra_MultiVector *A, 00072 double *work1, const Epetra_Operator *B = 0) const; 00073 00074 void ModifiedGS(Epetra_Vector *v, const Epetra_MultiVector *A) const; 00075 void ModifiedGSB(Epetra_Vector *v, const Epetra_MultiVector *A, 00076 const Epetra_MultiVector *BA) const; 00077 00078 }; 00079 00080 #endif 00081