MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AbstractLinAlgPack_Types.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
5 // Copyright (2003) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #ifndef ABSTRACT_LIN_ALG_PACK_TYPES_H
43 #define ABSTRACT_LIN_ALG_PACK_TYPES_H
44 
45 #include <memory>
46 #include <stdexcept>
47 
48 #include "RTOp.h"
49 #include "RTOpPack_OldTypes.hpp"
51 #include "Teuchos_Assert.hpp"
52 #include "Teuchos_RCP.hpp"
53 
54 namespace AbstractLinAlgPack {
55 
56 #include "DenseLinAlgPack_PublicTypes.ud"
57 
61 using Teuchos::RCP;
62 
63 #ifdef DOXYGEN_COMPILE // Doxygen needs a little help finding these links
64 
80 #endif
81 
82 
85 
87 class PreConditionException : public std::logic_error
88 {public: PreConditionException(const std::string& what_arg) : std::logic_error(what_arg) {}};
89 
91 class PostConditionException : public std::runtime_error
92 {public: PostConditionException(const std::string& what_arg) : std::runtime_error(what_arg) {}};
93 
96 {public: InputException(const std::string& what_arg) : PreConditionException(what_arg) {}};
97 
100 {public: SetupException(const std::string& what_arg) : PreConditionException(what_arg) {}};
101 
102 
104 
107 
108 class InnerProduct;
109 
110 class VectorSpaceFactory;
111 class VectorSpace;
112 class Vector;
113 class VectorMutable;
114 
115 class MatrixBase;
116 class MatrixOp;
117 class MatrixNonsing;
118 class MatrixOpNonsing;
119 class MatrixSymOp;
120 class MatrixSymNonsing;
121 class MatrixSymOpNonsing;
122 class MatrixSymDiag;
123 
124 class MultiVector;
125 class MultiVectorMutable;
126 
127 class MatrixSymSecant;
128 
129 class BasisSystem;
130 class BasisSystemPerm;
131 class BasisSystemFactory;
132 
133 class Permutation;
134 
135 // template classes
136 
137 template <class T_Indice, class T_Value> class SparseElement;
138 template <class T_Element, class T_Alloc> class SparseVector;
139 template <class T_Element> class SparseVectorSlice;
140 
141 // concrete classes
142 
143 class EtaVector;
145 typedef SparseVector<
147  , std::allocator<
149  >
150  > SpVector;
151 typedef SparseVectorSlice<
153 
155 
158 
159 // pure abstract classes
160 
161 class PermVector;
162 
163 class MatrixSymInitDiag;
164 class MatrixSymDiag;
165 
166 // concrete subclasses
167 
169 class VectorSpaceBlocked;
171 class MatrixOpSubView;
172 class MatrixComposite;
173 class MatrixSymIdent;
174 class MatrixSymDiagStd;
175 class MatrixZero;
176 class MatrixPermAggr;
177 class MatrixOpNonsingAggr;
178 
179 // testing classes
180 
181 class VectorSpaceTester;
184 class BasisSystemTester;
186 
188 
191 
192 // pure abstract classes
193 
194 class MatrixOpSerial;
195 class MatrixNonsingSerial;
196 class MatrixSymOpSerial;
201 class MatrixSymDiagSparse;
209 
211 
214 
215 class VectorDenseEncap;
217 class MatrixDenseEncap;
219 class MatrixDenseSymEncap;
221 class MatrixDenseTriEncap;
222 
223 class PermutationSerial;
224 class VectorSpaceSerial;
225 class VectorMutableDense;
226 class VectorSparse;
228 class MatrixSymPosDefCholFactor;
231 
233 
235 
238 
239 // Matrix scaling classes
240 
242 
243 // Sparse linear solver classes
244 
245 class DirectSparseSolver; // Abstract interface
246 class DirectSparseSolverImp; // Node implementation classs
247 class DirectSparseSolverMA28; // Concrete subclass
248 class DirectSparseSolverMA48; // ""
249 class DirectSparseSolverSuperLU; // ""
250 
251 // BasisSystem classes
252 
255 
257 
258 } // end namespace AbstractLinAlgPack
259 
260 #endif // ABSTRACT_LIN_ALG_PACK_TYPES_H
double RTOp_value_type
Definition: RTOp.h:69
DVector "Adaptor" subclass for DenseLinAlgPack::DVectorSlice or DenseLinAlgPack::DVector objects...
Base class for all polymorphic matrices.
Abstract base class for all serial nonsingular polymorphic matrices that can be used to compute matri...
Mix-in Interface for setting a matrix to a diagonal {abstract}.
Interface for the creation and maintainance of a basis matrix for a decomposition of linearlized cons...
Abstract interface for immutable, finite dimensional, coordinate vectors {abstract}.
SetupException(const std::string &what_arg)
Abstract base class for all polymorphic symmetrix nonsingular matrices that can be used to compute ma...
Mix-in interface for loading nonzero elements into a sparse matrix data structure.
MultiVectorMutable "Adapter" subclass for DenseLinAlgPack::DMatrixSlice or DenseLinAlgPack::DMatrix o...
Concreate sparse solver subclass that uses MA28.
Abstract base class for all polymorphic symmetrix nonsingular matrices that can be used to solve for ...
SparseVector< SparseElement< index_type, value_type >, std::allocator< SparseElement< index_type, value_type > > > SpVector
Base class for postcondition exceptions.
Interface for extracting nonzero elements from a banded subregion of a permuted sparse matrix in one ...
Testing class for VectorSpace, Vector and VectorMutable.
Aggregate matrix class for a matrix and its permuted view.
Abstract interface that allows the extraction of a non-const DenseLinAlgPack::DMatrixSliceSym view of...
Mix-in Interface for updating a serial symmetric matrix by adding and deleting rows and columns...
Abstract base class for all serial symmetric diagonal matrices with significant zeros along the diago...
Abstract base class for all serial polymorphic symmetric nonsingular matrices that can be used to com...
Abstract base class for all serial polymorphic symmetrix nonsingular matrices that can be used to sol...
Base class for input exceptions (Preconditions).
Base class for all matrices implemented in a shared memory address space.
Set options for BasisSystemTester from an OptionsFromStream object.
Mix-in Interface for extracting the inverse cholesky factor of a dense symmetric positive definite ma...
Interface adding operations specific for a symmetric matrix {abstract}.
Implementation of a matrix with all zeros.
Abstract base class for all AbstractLinAlgPack::MatrixSymOp objects implemented in shared memory spac...
Helper class type that simplifies the usage of the MatrixOpGetGMSTri interface for clients...
. One-based subregion index range class.
Set options for VectorSpaceTester from an OptionsFromStream object.
Abstract base class for all AbstractLinAlgPack::MatrixNonsing objects implemented in shared memory sp...
Abstract interface for objects that represent a space for mutable coordinate vectors.
Default implementation for BasisSystemPermDirectSparse obejcts using DirectSparseSolver object...
Mix-in interface for extracing explicit elements from a sparse matrix in one of several Fortran compa...
Standard subclass for representing a sub, possibly transposed, view of a matrix.
Extract a constant DenseLinAlgPack::DVectorSlice view of a Vector object.
Helper class type that simplifies the usage of the MatrixSymOpGetGMSSymMutable interface for clients...
Abstract interface for objects that can create vector spaces of a specified dimension.
DenseLinAlgPack::DMatrixSliceTriEle DMatrixSliceTriEle
VectorSpace subclass for the composite of one or more VectorSpace objects.
Implementation node class for DirectSparseSolver that takes care of the memory management details...
Create an eta vector (scaled by alpha = default 1).
Mix-in interface for all polymorphic symmetric matrices that support secant updating.
InputException(const std::string &what_arg)
Helper class type that simplifies the usage of the MatrixOpGetGMS interface for clients.
Base class for all matrices that support basic matrix operations.
Interface for a collection of non-mutable vectors (multi-vector, matrix).
Interface to all diagonal matrices {abstract}.
SparseVectorSlice< SparseElement< index_type, value_type > > SpVectorSlice
Abstract interface that allows the extraction of a const DenseLinAlgPack::DMatrixSliceSym view of an ...
Permutatble basis system subclass that uses a direct sparse solver.
Interface for a factory object that will create BasisSystem objects.
DenseLinAlgPack::VectorSliceTmpl< value_type > DVectorSlice
Interface for a collection of mutable vectors (multi-vector, matrix).
Abstract interface for inner products.
DenseLinAlgPack::VectorTmpl< value_type > DVector
Abstract interface to permutation matrices.
Abstract interface for mutable coordinate vectors {abstract}.
DenseLinAlgPack::DMatrixSliceTri DMatrixSliceTri
Helper class type that simplifies the usage of the MatrixSymOpGetGMSSym interface for clients...
Interface for setting and selecting a basis from the Jacobian from a set of equations.
Abstract base class for all nonsingular polymorphic matrices that can be used to compute matrix-vecto...
Extract a non-const DenseLinAlgPack::DVectorSlice view of a VectorMutable object. ...
Subclass for serial vector space objects that create VectorMutableDense vector and MultiVectorMutable...
DenseLinAlgPack::DMatrixSlice DMatrixSlice
Abstract interface for sparse matrix scaling strategies.
Matrix class for matrices composed out of a set of other matrices and vectors.
Simple BasisSystem subclass the case where the client sets up seperate C and N matrices.
Abstract base class for all nonsingular polymorphic matrices that can solve for linear system with bu...
Sparse conversion subclass based on views of a MatrixExtractSparseElements object.
Base class for precondition exceptions.
DenseLinAlgPack::DMatrixSliceSym DMatrixSliceSym
Concrete subclass for a serial symmetric diagonal matrix with many zeros on the diagonal.
Mix-in Interface for initializing a matrix with a dense symmetric matrix.
DenseLinAlgPack::DMatrix DMatrix
Matrix subclass for a scaled identity matrix.
Aggregate matrix class pulling together a MatrixOp object and a MatrixNonsing object into a unified m...
Base class for invalid setup for a class object when an exception is thrown.
Concrete matrix type to represent general permutation (mapping) matrices.
Helper class type that simplifies the usage of the MatrixOpGetGMSMutable interface for clients...
Abstract interface to serial direct sparse linear solvers.
Teuchos_Ordinal RTOp_index_type
Definition: RTOp.h:68