|
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 // Redistribution and use in source and binary forms, with or without 00011 // modification, are permitted provided that the following conditions are 00012 // met: 00013 // 00014 // 1. Redistributions of source code must retain the above copyright 00015 // notice, this list of conditions and the following disclaimer. 00016 // 00017 // 2. Redistributions in binary form must reproduce the above copyright 00018 // notice, this list of conditions and the following disclaimer in the 00019 // documentation and/or other materials provided with the distribution. 00020 // 00021 // 3. Neither the name of the Corporation nor the names of the 00022 // contributors may be used to endorse or promote products derived from 00023 // this software without specific prior written permission. 00024 // 00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY 00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE 00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00036 // 00037 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 00038 // 00039 // *********************************************************************** 00040 // @HEADER 00041 00042 #ifndef ABSTRACT_LIN_ALG_PACK_TYPES_H 00043 #define ABSTRACT_LIN_ALG_PACK_TYPES_H 00044 00045 #include <memory> 00046 #include <stdexcept> 00047 00048 #include "RTOp.h" 00049 #include "RTOpPack_OldTypes.hpp" 00050 #include "DenseLinAlgPack_Types.hpp" 00051 #include "Teuchos_Assert.hpp" 00052 #include "Teuchos_RCP.hpp" 00053 00054 namespace AbstractLinAlgPack { 00055 00056 #include "DenseLinAlgPack_PublicTypes.ud" 00057 00058 typedef RTOp_index_type size_type; 00059 typedef RTOp_value_type value_type; 00060 typedef RTOp_index_type index_type; 00061 using Teuchos::RCP; 00062 00063 #ifdef DOXYGEN_COMPILE // Doxygen needs a little help finding these links 00064 00065 typedef DenseLinAlgPack::VectorTmpl<value_type> DVector; 00067 typedef DenseLinAlgPack::VectorSliceTmpl<value_type> DVectorSlice; 00069 typedef DenseLinAlgPack::DMatrix DMatrix; 00071 typedef DenseLinAlgPack::DMatrixSlice DMatrixSlice; 00073 typedef DenseLinAlgPack::DMatrixSliceTriEle DMatrixSliceTriEle; 00075 typedef DenseLinAlgPack::DMatrixSliceTri DMatrixSliceTri; 00077 typedef DenseLinAlgPack::DMatrixSliceSym DMatrixSliceSym; 00079 typedef RangePack::Range1D Range1D; 00080 #endif 00081 00082 00085 00087 class PreConditionException : public std::logic_error 00088 {public: PreConditionException(const std::string& what_arg) : std::logic_error(what_arg) {}}; 00089 00091 class PostConditionException : public std::runtime_error 00092 {public: PostConditionException(const std::string& what_arg) : std::runtime_error(what_arg) {}}; 00093 00095 class InputException : public PreConditionException 00096 {public: InputException(const std::string& what_arg) : PreConditionException(what_arg) {}}; 00097 00099 class SetupException : public PreConditionException 00100 {public: SetupException(const std::string& what_arg) : PreConditionException(what_arg) {}}; 00101 00102 00104 00107 00108 class InnerProduct; 00109 00110 class VectorSpaceFactory; 00111 class VectorSpace; 00112 class Vector; 00113 class VectorMutable; 00114 00115 class MatrixBase; 00116 class MatrixOp; 00117 class MatrixNonsing; 00118 class MatrixOpNonsing; 00119 class MatrixSymOp; 00120 class MatrixSymNonsing; 00121 class MatrixSymOpNonsing; 00122 class MatrixSymDiag; 00123 00124 class MultiVector; 00125 class MultiVectorMutable; 00126 00127 class MatrixSymSecant; 00128 00129 class BasisSystem; 00130 class BasisSystemPerm; 00131 class BasisSystemFactory; 00132 00133 class Permutation; 00134 00135 // template classes 00136 00137 template <class T_Indice, class T_Value> class SparseElement; 00138 template <class T_Element, class T_Alloc> class SparseVector; 00139 template <class T_Element> class SparseVectorSlice; 00140 00141 // concrete classes 00142 00143 class EtaVector; 00144 class GenPermMatrixSlice; 00145 typedef SparseVector< 00146 SparseElement<index_type,value_type> 00147 , std::allocator< 00148 SparseElement<index_type,value_type> 00149 > 00150 > SpVector; 00151 typedef SparseVectorSlice< 00152 SparseElement<index_type,value_type> > SpVectorSlice; 00153 00155 00158 00159 // pure abstract classes 00160 00161 class PermVector; 00162 00163 class MatrixSymInitDiag; 00164 class MatrixSymDiag; 00165 00166 // concrete subclasses 00167 00168 class BasisSystemComposite; 00169 class VectorSpaceBlocked; 00170 class VectorMutableBlocked; 00171 class MatrixOpSubView; 00172 class MatrixComposite; 00173 class MatrixSymIdent; 00174 class MatrixSymDiagStd; 00175 class MatrixZero; 00176 class MatrixPermAggr; 00177 class MatrixOpNonsingAggr; 00178 00179 // testing classes 00180 00181 class VectorSpaceTester; 00182 class VectorSpaceTesterSetOptions; 00183 class MatrixOpNonsingTester; 00184 class BasisSystemTester; 00185 class BasisSystemTesterSetOptions; 00186 00188 00191 00192 // pure abstract classes 00193 00194 class MatrixOpSerial; 00195 class MatrixNonsingSerial; 00196 class MatrixSymOpSerial; 00197 class MatrixSymNonsingSerial; 00198 class MatrixOpNonsingSerial; 00199 class MatrixSymOpNonsingSerial; 00200 class MatrixSymDenseInitialize; 00201 class MatrixSymDiagSparse; 00202 class MatrixLoadSparseElements; 00203 class MatrixConvertToSparse; 00204 class MatrixExtractSparseElements; 00205 class MatrixExtractInvCholFactor; 00206 class MatrixSymOpGetGMSSymMutable; 00207 class MatrixSymOpGetGMSSym; 00208 class MatrixSymAddDelUpdateable; 00209 00211 00214 00215 class VectorDenseEncap; 00216 class VectorDenseMutableEncap; 00217 class MatrixDenseEncap; 00218 class MatrixDenseMutableEncap; 00219 class MatrixDenseSymEncap; 00220 class MatrixDenseSymMutableEncap; 00221 class MatrixDenseTriEncap; 00222 00223 class PermutationSerial; 00224 class VectorSpaceSerial; 00225 class VectorMutableDense; 00226 class VectorSparse; 00227 class MatrixSparseCOORSerial; 00228 class MatrixSymPosDefCholFactor; 00229 class MatrixConvertToSparseEncap; 00230 class MultiVectorMutableDense; 00231 00232 class MatrixSymDiagSparseStd; 00233 00235 00238 00239 // Matrix scaling classes 00240 00241 class MatrixScaling_Strategy; 00242 00243 // Sparse linear solver classes 00244 00245 class DirectSparseSolver; // Abstract interface 00246 class DirectSparseSolverImp; // Node implementation classs 00247 class DirectSparseSolverMA28; // Concrete subclass 00248 class DirectSparseSolverMA48; // "" 00249 class DirectSparseSolverSuperLU; // "" 00250 00251 // BasisSystem classes 00252 00253 class BasisSystemPermDirectSparse; 00254 class BasisSystemFactoryStd; 00255 00257 00258 } // end namespace AbstractLinAlgPack 00259 00260 #endif // ABSTRACT_LIN_ALG_PACK_TYPES_H
1.7.6.1