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 00040 namespace AbstractLinAlgPack { 00041 00042 #include "DenseLinAlgPack_PublicTypes.ud" 00043 00044 typedef RTOp_index_type size_type; 00045 typedef RTOp_value_type value_type; 00046 typedef RTOp_index_type index_type; 00047 00048 #ifdef DOXYGEN_COMPILE // Doxygen needs a little help finding these links 00049 00050 typedef DenseLinAlgPack::VectorTmpl<value_type> DVector; 00052 typedef DenseLinAlgPack::VectorSliceTmpl<value_type> DVectorSlice; 00054 typedef DenseLinAlgPack::DMatrix DMatrix; 00056 typedef DenseLinAlgPack::DMatrixSlice DMatrixSlice; 00058 typedef DenseLinAlgPack::DMatrixSliceTriEle DMatrixSliceTriEle; 00060 typedef DenseLinAlgPack::DMatrixSliceTri DMatrixSliceTri; 00062 typedef DenseLinAlgPack::DMatrixSliceSym DMatrixSliceSym; 00064 typedef RangePack::Range1D Range1D; 00065 #endif 00066 00067 00070 00072 class PreConditionException : public std::logic_error 00073 {public: PreConditionException(const std::string& what_arg) : std::logic_error(what_arg) {}}; 00074 00076 class PostConditionException : public std::runtime_error 00077 {public: PostConditionException(const std::string& what_arg) : std::runtime_error(what_arg) {}}; 00078 00080 class InputException : public PreConditionException 00081 {public: InputException(const std::string& what_arg) : PreConditionException(what_arg) {}}; 00082 00084 class SetupException : public PreConditionException 00085 {public: SetupException(const std::string& what_arg) : PreConditionException(what_arg) {}}; 00086 00087 00089 00092 00093 class InnerProduct; 00094 00095 class VectorSpaceFactory; 00096 class VectorSpace; 00097 class Vector; 00098 class VectorMutable; 00099 00100 class MatrixBase; 00101 class MatrixOp; 00102 class MatrixNonsing; 00103 class MatrixOpNonsing; 00104 class MatrixSymOp; 00105 class MatrixSymNonsing; 00106 class MatrixSymOpNonsing; 00107 class MatrixSymDiag; 00108 00109 class MultiVector; 00110 class MultiVectorMutable; 00111 00112 class MatrixSymSecant; 00113 00114 class BasisSystem; 00115 class BasisSystemPerm; 00116 class BasisSystemFactory; 00117 00118 class Permutation; 00119 00120 // template classes 00121 00122 template <class T_Indice, class T_Value> class SparseElement; 00123 template <class T_Element, class T_Alloc> class SparseVector; 00124 template <class T_Element> class SparseVectorSlice; 00125 00126 // concrete classes 00127 00128 class EtaVector; 00129 class GenPermMatrixSlice; 00130 typedef SparseVector< 00131 SparseElement<index_type,value_type> 00132 , std::allocator< 00133 SparseElement<index_type,value_type> 00134 > 00135 > SpVector; 00136 typedef SparseVectorSlice< 00137 SparseElement<index_type,value_type> > SpVectorSlice; 00138 00140 00143 00144 // pure abstract classes 00145 00146 class PermVector; 00147 00148 class MatrixSymInitDiag; 00149 class MatrixSymDiag; 00150 00151 // concrete subclasses 00152 00153 class BasisSystemComposite; 00154 class VectorSpaceBlocked; 00155 class VectorMutableBlocked; 00156 class MatrixOpSubView; 00157 class MatrixComposite; 00158 class MatrixSymIdent; 00159 class MatrixSymDiagStd; 00160 class MatrixZero; 00161 class MatrixPermAggr; 00162 class MatrixOpNonsingAggr; 00163 00164 // testing classes 00165 00166 class VectorSpaceTester; 00167 class VectorSpaceTesterSetOptions; 00168 class MatrixOpNonsingTester; 00169 class BasisSystemTester; 00170 class BasisSystemTesterSetOptions; 00171 00173 00176 00177 // pure abstract classes 00178 00179 class MatrixOpSerial; 00180 class MatrixNonsingSerial; 00181 class MatrixSymOpSerial; 00182 class MatrixSymNonsingSerial; 00183 class MatrixOpNonsingSerial; 00184 class MatrixSymOpNonsingSerial; 00185 class MatrixSymDenseInitialize; 00186 class MatrixSymDiagSparse; 00187 class MatrixLoadSparseElements; 00188 class MatrixConvertToSparse; 00189 class MatrixExtractSparseElements; 00190 class MatrixExtractInvCholFactor; 00191 class MatrixSymOpGetGMSSymMutable; 00192 class MatrixSymOpGetGMSSym; 00193 class MatrixSymAddDelUpdateable; 00194 00196 00199 00200 class VectorDenseEncap; 00201 class VectorDenseMutableEncap; 00202 class MatrixDenseEncap; 00203 class MatrixDenseMutableEncap; 00204 class MatrixDenseSymEncap; 00205 class MatrixDenseSymMutableEncap; 00206 class MatrixDenseTriEncap; 00207 00208 class PermutationSerial; 00209 class VectorSpaceSerial; 00210 class VectorMutableDense; 00211 class VectorSparse; 00212 class MatrixSparseCOORSerial; 00213 class MatrixSymPosDefCholFactor; 00214 class MatrixConvertToSparseEncap; 00215 class MultiVectorMutableDense; 00216 00217 class MatrixSymDiagSparseStd; 00218 00220 00223 00224 // Matrix scaling classes 00225 00226 class MatrixScaling_Strategy; 00227 00228 // Sparse linear solver classes 00229 00230 class DirectSparseSolver; // Abstract interface 00231 class DirectSparseSolverImp; // Node implementation classs 00232 class DirectSparseSolverMA28; // Concrete subclass 00233 class DirectSparseSolverMA48; // "" 00234 class DirectSparseSolverSuperLU; // "" 00235 00236 // BasisSystem classes 00237 00238 class BasisSystemPermDirectSparse; 00239 class BasisSystemFactoryStd; 00240 00242 00243 } // end namespace AbstractLinAlgPack 00244 00245 #endif // ABSTRACT_LIN_ALG_PACK_TYPES_H
1.4.7