EpetraExt Development
Loading...
Searching...
No Matches
EpetraExt_StaticCondensation_LinearProblem.h
Go to the documentation of this file.
1//@HEADER
2// ***********************************************************************
3//
4// EpetraExt: Epetra Extended - Linear Algebra Services Package
5// Copyright (2011) Sandia Corporation
6//
7// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8// the U.S. Government retains certain rights in this software.
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 Michael A. Heroux (maherou@sandia.gov)
38//
39// ***********************************************************************
40//@HEADER
41
42#ifndef EpetraExt_LINEARPROBLEM_STATICCONDENSATION_H
43#define EpetraExt_LINEARPROBLEM_STATICCONDENSATION_H
44
45#if defined(EpetraExt_SHOW_DEPRECATED_WARNINGS)
46#ifdef __GNUC__
47#warning "The EpetraExt package is deprecated"
48#endif
49#endif
50
51#include <EpetraExt_Transform.h>
52
54class Epetra_Map;
56class Epetra_CrsGraph;
58class Epetra_Export;
59
60namespace EpetraExt {
61
62class LinearProblem_StaticCondensation : public SameTypeTransform<Epetra_LinearProblem>
63{
64 const int degree_;
65 const bool verbose_;
66
67 const Epetra_Map * OldRowMap_;
68 Epetra_LinearProblem * OldProblem_;
69 Epetra_MultiVector * OldRHS_;
70 Epetra_MultiVector * OldLHS_;
71 const Epetra_CrsGraph * OldGraph_;
72 Epetra_CrsMatrix * OldMatrix_;
73
74 Epetra_Export * Exporter_;
75
76 Epetra_Map * NewRowMap_;
77 Epetra_Map * NewColMap_;
78 Epetra_LinearProblem * NewProblem_;
79 Epetra_MultiVector * NewRHS_;
80 Epetra_MultiVector * NewLHS_;
81 Epetra_CrsGraph * NewGraph_;
82 Epetra_CrsMatrix * NewMatrix_;
83
84 Epetra_Map * UMap_;
85 Epetra_Map * RMap_;
86 Epetra_Map * LMap_;
87
88 Epetra_Export * UExporter_;
89 Epetra_Export * RExporter_;
90 Epetra_Export * LExporter_;
91
92 Epetra_MultiVector * ULHS_;
93 Epetra_MultiVector * RLHS_;
94 Epetra_MultiVector * LLHS_;
95
96 Epetra_MultiVector * URHS_;
97 Epetra_MultiVector * RRHS_;
98 Epetra_MultiVector * LRHS_;
99
100 Epetra_CrsGraph * UUGraph_;
101 Epetra_CrsGraph * URGraph_;
102 Epetra_CrsGraph * ULGraph_;
103 Epetra_CrsGraph * RRGraph_;
104 Epetra_CrsGraph * RLGraph_;
105 Epetra_CrsGraph * LLGraph_;
106
107 Epetra_CrsMatrix * UUMatrix_;
108 Epetra_CrsMatrix * URMatrix_;
109 Epetra_CrsMatrix * ULMatrix_;
110 Epetra_CrsMatrix * RRMatrix_;
111 Epetra_CrsMatrix * RLMatrix_;
112 Epetra_CrsMatrix * LLMatrix_;
113
114 public:
115
117
118 LinearProblem_StaticCondensation( int degree = 1, bool verbose = false )
119 : degree_(degree),
120 verbose_(verbose),
121 OldRowMap_(0),
122 OldProblem_(0),
123 OldRHS_(0),
124 OldLHS_(0),
125 OldGraph_(0),
126 OldMatrix_(0),
127 Exporter_(0),
128 NewRowMap_(0),
129 NewColMap_(0),
130 NewProblem_(0),
131 NewRHS_(0),
132 NewLHS_(0),
133 NewGraph_(0),
134 NewMatrix_(0),
135 UMap_(0),
136 RMap_(0),
137 LMap_(0),
138 UExporter_(0),
139 RExporter_(0),
140 LExporter_(0),
141 ULHS_(0),
142 RLHS_(0),
143 LLHS_(0),
144 URHS_(0),
145 RRHS_(0),
146 LRHS_(0),
147 UUGraph_(0),
148 URGraph_(0),
149 ULGraph_(0),
150 RRGraph_(0),
151 RLGraph_(0),
152 LLGraph_(0),
153 UUMatrix_(0),
154 URMatrix_(0),
155 ULMatrix_(0),
156 RRMatrix_(0),
157 RLMatrix_(0),
158 LLMatrix_(0)
159 {}
160
162
163 bool fwd();
164 bool rvs();
165};
166
167} //namespace EpetraExt
168
169#endif //EpetraExt_LINEARPROBLEM_STATICCONDENSATION_H
bool rvs()
Reverse transfer of data from new object created in the operator() method call to the orig object inp...
bool fwd()
Forward transfer of data from orig object input in the operator() method call to the new object creat...
NewTypeRef operator()(OriginalTypeRef orig)
Analysis of transform operation on original object and construction of new object.
EpetraExt::BlockCrsMatrix: A class for constructing a distributed block matrix.