|
AbstractLinAlgPack: C++ Interfaces For Vectors, Matrices And Related Linear Algebra Objects Version of the Day
|
00001 // @HEADER 00002 // *********************************************************************** 00003 // 00004 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization 00005 // Copyright (2003) Sandia Corporation 00006 // 00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00008 // license for use of this work by or on behalf of the U.S. Government. 00009 // 00010 // This library is free software; you can redistribute it and/or modify 00011 // it under the terms of the GNU Lesser General Public License as 00012 // published by the Free Software Foundation; either version 2.1 of the 00013 // License, or (at your option) any later version. 00014 // 00015 // This library is distributed in the hope that it will be useful, but 00016 // WITHOUT ANY WARRANTY; without even the implied warranty of 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 // Lesser General Public License for more details. 00019 // 00020 // You should have received a copy of the GNU Lesser General Public 00021 // License along with this library; if not, write to the Free Software 00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00023 // USA 00024 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 00025 // 00026 // *********************************************************************** 00027 // @HEADER 00028 00029 #ifndef ABSTRACT_LIN_ALG_PACK_TYPES_H 00030 #define ABSTRACT_LIN_ALG_PACK_TYPES_H 00031 00032 #include <memory> 00033 #include <stdexcept> 00034 00035 #include "RTOp.h" 00036 #include "RTOpPack_OldTypes.hpp" 00037 #include "DenseLinAlgPack_Types.hpp" 00038 #include "Teuchos_TestForException.hpp" 00039 #include "Teuchos_RCP.hpp" 00040 00041 namespace AbstractLinAlgPack { 00042 00043 #include "DenseLinAlgPack_PublicTypes.ud" 00044 00045 typedef RTOp_index_type size_type; 00046 typedef RTOp_value_type value_type; 00047 typedef RTOp_index_type index_type; 00048 using Teuchos::RCP; 00049 00050 #ifdef DOXYGEN_COMPILE // Doxygen needs a little help finding these links 00051 00052 typedef DenseLinAlgPack::VectorTmpl<value_type> DVector; 00054 typedef DenseLinAlgPack::VectorSliceTmpl<value_type> DVectorSlice; 00056 typedef DenseLinAlgPack::DMatrix DMatrix; 00058 typedef DenseLinAlgPack::DMatrixSlice DMatrixSlice; 00060 typedef DenseLinAlgPack::DMatrixSliceTriEle DMatrixSliceTriEle; 00062 typedef DenseLinAlgPack::DMatrixSliceTri DMatrixSliceTri; 00064 typedef DenseLinAlgPack::DMatrixSliceSym DMatrixSliceSym; 00066 typedef RangePack::Range1D Range1D; 00067 #endif 00068 00069 00072 00074 class PreConditionException : public std::logic_error 00075 {public: PreConditionException(const std::string& what_arg) : std::logic_error(what_arg) {}}; 00076 00078 class PostConditionException : public std::runtime_error 00079 {public: PostConditionException(const std::string& what_arg) : std::runtime_error(what_arg) {}}; 00080 00082 class InputException : public PreConditionException 00083 {public: InputException(const std::string& what_arg) : PreConditionException(what_arg) {}}; 00084 00086 class SetupException : public PreConditionException 00087 {public: SetupException(const std::string& what_arg) : PreConditionException(what_arg) {}}; 00088 00089 00091 00094 00095 class InnerProduct; 00096 00097 class VectorSpaceFactory; 00098 class VectorSpace; 00099 class Vector; 00100 class VectorMutable; 00101 00102 class MatrixBase; 00103 class MatrixOp; 00104 class MatrixNonsing; 00105 class MatrixOpNonsing; 00106 class MatrixSymOp; 00107 class MatrixSymNonsing; 00108 class MatrixSymOpNonsing; 00109 class MatrixSymDiag; 00110 00111 class MultiVector; 00112 class MultiVectorMutable; 00113 00114 class MatrixSymSecant; 00115 00116 class BasisSystem; 00117 class BasisSystemPerm; 00118 class BasisSystemFactory; 00119 00120 class Permutation; 00121 00122 // template classes 00123 00124 template <class T_Indice, class T_Value> class SparseElement; 00125 template <class T_Element, class T_Alloc> class SparseVector; 00126 template <class T_Element> class SparseVectorSlice; 00127 00128 // concrete classes 00129 00130 class EtaVector; 00131 class GenPermMatrixSlice; 00132 typedef SparseVector< 00133 SparseElement<index_type,value_type> 00134 , std::allocator< 00135 SparseElement<index_type,value_type> 00136 > 00137 > SpVector; 00138 typedef SparseVectorSlice< 00139 SparseElement<index_type,value_type> > SpVectorSlice; 00140 00142 00145 00146 // pure abstract classes 00147 00148 class PermVector; 00149 00150 class MatrixSymInitDiag; 00151 class MatrixSymDiag; 00152 00153 // concrete subclasses 00154 00155 class BasisSystemComposite; 00156 class VectorSpaceBlocked; 00157 class VectorMutableBlocked; 00158 class MatrixOpSubView; 00159 class MatrixComposite; 00160 class MatrixSymIdent; 00161 class MatrixSymDiagStd; 00162 class MatrixZero; 00163 class MatrixPermAggr; 00164 class MatrixOpNonsingAggr; 00165 00166 // testing classes 00167 00168 class VectorSpaceTester; 00169 class VectorSpaceTesterSetOptions; 00170 class MatrixOpNonsingTester; 00171 class BasisSystemTester; 00172 class BasisSystemTesterSetOptions; 00173 00175 00178 00179 // pure abstract classes 00180 00181 class MatrixOpSerial; 00182 class MatrixNonsingSerial; 00183 class MatrixSymOpSerial; 00184 class MatrixSymNonsingSerial; 00185 class MatrixOpNonsingSerial; 00186 class MatrixSymOpNonsingSerial; 00187 class MatrixSymDenseInitialize; 00188 class MatrixSymDiagSparse; 00189 class MatrixLoadSparseElements; 00190 class MatrixConvertToSparse; 00191 class MatrixExtractSparseElements; 00192 class MatrixExtractInvCholFactor; 00193 class MatrixSymOpGetGMSSymMutable; 00194 class MatrixSymOpGetGMSSym; 00195 class MatrixSymAddDelUpdateable; 00196 00198 00201 00202 class VectorDenseEncap; 00203 class VectorDenseMutableEncap; 00204 class MatrixDenseEncap; 00205 class MatrixDenseMutableEncap; 00206 class MatrixDenseSymEncap; 00207 class MatrixDenseSymMutableEncap; 00208 class MatrixDenseTriEncap; 00209 00210 class PermutationSerial; 00211 class VectorSpaceSerial; 00212 class VectorMutableDense; 00213 class VectorSparse; 00214 class MatrixSparseCOORSerial; 00215 class MatrixSymPosDefCholFactor; 00216 class MatrixConvertToSparseEncap; 00217 class MultiVectorMutableDense; 00218 00219 class MatrixSymDiagSparseStd; 00220 00222 00225 00226 // Matrix scaling classes 00227 00228 class MatrixScaling_Strategy; 00229 00230 // Sparse linear solver classes 00231 00232 class DirectSparseSolver; // Abstract interface 00233 class DirectSparseSolverImp; // Node implementation classs 00234 class DirectSparseSolverMA28; // Concrete subclass 00235 class DirectSparseSolverMA48; // "" 00236 class DirectSparseSolverSuperLU; // "" 00237 00238 // BasisSystem classes 00239 00240 class BasisSystemPermDirectSparse; 00241 class BasisSystemFactoryStd; 00242 00244 00245 } // end namespace AbstractLinAlgPack 00246 00247 #endif // ABSTRACT_LIN_ALG_PACK_TYPES_H
1.7.4