FEI Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
base
fei_Reducer.hpp
Go to the documentation of this file.
1
/*--------------------------------------------------------------------*/
2
/* Copyright 2006 Sandia Corporation. */
3
/* Under the terms of Contract DE-AC04-94AL85000, there is a */
4
/* non-exclusive license for use of this work by or on behalf */
5
/* of the U.S. Government. Export of this program may require */
6
/* a license from the United States Government. */
7
/*--------------------------------------------------------------------*/
8
9
#ifndef _fei_Reducer_hpp_
10
#define _fei_Reducer_hpp_
11
12
#include <
fei_macros.hpp
>
13
#include <
fei_SharedPtr.hpp
>
14
#include <
fei_mpi.h
>
15
#include <
fei_Logger.hpp
>
16
#include <
fei_CSVec.hpp
>
17
#include <
fei_FillableMat.hpp
>
18
#include <
fei_CSVec.hpp
>
19
#include <
fei_CSRMat.hpp
>
20
21
namespace
fei
{
22
class
MatrixGraph
;
23
class
Graph
;
24
class
Matrix
;
25
class
Vector
;
26
27
class
Reducer
:
private
fei::Logger
{
28
public
:
30
Reducer
(
fei::SharedPtr<FillableMat>
globalSlaveDependencyMatrix,
31
fei::SharedPtr<CSVec>
g_vector,
32
MPI_Comm
comm);
33
34
Reducer
(
fei::SharedPtr<fei::MatrixGraph>
matrixGraph);
36
38
40
virtual
~Reducer
();
41
43
void
setLocalUnreducedEqns
(
const
std::vector<int>& localUnreducedEqns);
44
45
49
void
addGraphEntries
(
fei::SharedPtr<fei::SparseRowGraph>
matrixGraph);
50
51
void
addGraphIndices
(
int
numRows,
const
int
* rows,
52
int
numCols,
const
int
* cols,
53
fei::Graph
& graph);
54
55
void
addSymmetricGraphIndices
(
int
numIndices,
const
int
* indices,
56
bool
diagonal,
57
fei::Graph
& graph);
58
66
int
addMatrixValues
(
int
numRows,
const
int
* rows,
67
int
numCols,
const
int
* cols,
68
const
double
*
const
* values,
69
bool
sum_into,
70
fei::Matrix
& feimat,
71
int
format);
72
98
int
addVectorValues
(
int
numValues,
99
const
int
* globalIndices,
100
const
double
* values,
101
bool
sum_into,
102
bool
soln_vector,
103
int
vectorIndex,
104
fei::Vector
& feivec);
105
106
int
copyOutVectorValues
(
int
numValues,
107
const
int
* globalIndices,
108
double
* values,
109
bool
soln_vector,
110
int
vectorIndex,
111
fei::Vector
& feivec);
112
113
void
getSlaveMasterEqns
(
int
slaveEqn, std::vector<int>& masterEqns);
114
bool
isSlaveEqn
(
int
unreducedEqn)
const
;
115
bool
isSlaveCol
(
int
unreducedEqn)
const
;
116
121
int
translateToReducedEqn
(
int
unreducedEqn)
const
;
122
int
translateFromReducedEqn
(
int
reduced_eqn)
const
;
123
void
assembleReducedGraph
(
fei::Graph
* graph,
124
bool
global_gather=
true
);
125
void
assembleReducedGraph
(
fei::SparseRowGraph
* srgraph);
126
void
assembleReducedMatrix
(
fei::Matrix
& matrix);
127
void
assembleReducedVector
(
bool
soln_vector,
128
fei::Vector
& feivec);
129
130
std::vector<int>&
getLocalReducedEqns
();
131
132
void
initialize
();
133
private
:
134
void
expand_work_arrays
(
int
size);
135
136
fei::CSRMat
csrD_
;
137
int
*
slavesPtr_
;
138
fei::FillableMat
Kii_
,
Kid_
,
Kdi_
,
Kdd_
;
139
fei::CSRMat
csrKii
,
csrKid
,
csrKdi
,
csrKdd
;
140
fei::CSVec
fi_
,
fd_
;
141
fei::CSVec
csvec
,
csvec_i
;
142
fei::CSRMat
tmpMat1_
,
tmpMat2_
;
143
fei::CSVec
tmpVec1_
,
tmpVec2_
;
144
145
fei::CSVec
csg_
;
146
bool
g_nonzero_
;
147
148
std::vector<int>
localUnreducedEqns_
;
149
std::vector<int>
localReducedEqns_
;
150
std::vector<int>
nonslaves_
;
151
std::vector<int>
reverse_
;
152
bool
*
isSlaveEqn_
;
153
int
numGlobalSlaves_
;
154
int
numLocalSlaves_
;
155
int
firstLocalReducedEqn_
;
156
int
lastLocalReducedEqn_
;
157
int
lowestGlobalSlaveEqn_
;
158
int
highestGlobalSlaveEqn_
;
159
160
int
localProc_
;
161
int
numProcs_
;
162
MPI_Comm
comm_
;
163
std::string
dbgprefix_
;
164
unsigned
mat_counter_
;
165
unsigned
rhs_vec_counter_
;
166
167
bool
*
bool_array_
;
168
int
*
int_array_
;
169
double
*
double_array_
;
170
int
array_len_
;
171
172
std::vector<double>
work_1D_
;
173
std::vector<const double*>
work_2D_
;
174
};
//class Reducer
175
176
}
//namespace fei
177
178
#endif
// _fei_Reducer_hpp_
179
fei::CSRMat
Definition
fei_CSRMat.hpp:21
fei::CSVec
Definition
fei_CSVec.hpp:24
fei::FillableMat
Definition
fei_FillableMat.hpp:20
fei::Graph
Definition
fei_Graph.hpp:20
fei::Logger
Definition
fei_Logger.hpp:19
fei::MatrixGraph
Definition
fei_MatrixGraph.hpp:33
fei::Matrix
Definition
fei_Matrix.hpp:30
fei::Reducer::assembleReducedGraph
void assembleReducedGraph(fei::Graph *graph, bool global_gather=true)
Definition
fei_Reducer.cpp:454
fei::Reducer::rhs_vec_counter_
unsigned rhs_vec_counter_
Definition
fei_Reducer.hpp:165
fei::Reducer::csvec
fei::CSVec csvec
Definition
fei_Reducer.hpp:141
fei::Reducer::double_array_
double * double_array_
Definition
fei_Reducer.hpp:169
fei::Reducer::int_array_
int * int_array_
Definition
fei_Reducer.hpp:168
fei::Reducer::localReducedEqns_
std::vector< int > localReducedEqns_
Definition
fei_Reducer.hpp:149
fei::Reducer::getSlaveMasterEqns
void getSlaveMasterEqns(int slaveEqn, std::vector< int > &masterEqns)
Definition
fei_Reducer.cpp:607
fei::Reducer::translateToReducedEqn
int translateToReducedEqn(int unreducedEqn) const
Definition
fei_Reducer.cpp:641
fei::Reducer::numGlobalSlaves_
int numGlobalSlaves_
Definition
fei_Reducer.hpp:153
fei::Reducer::numProcs_
int numProcs_
Definition
fei_Reducer.hpp:161
fei::Reducer::csrKii
fei::CSRMat csrKii
Definition
fei_Reducer.hpp:139
fei::Reducer::csrKdd
fei::CSRMat csrKdd
Definition
fei_Reducer.hpp:139
fei::Reducer::nonslaves_
std::vector< int > nonslaves_
Definition
fei_Reducer.hpp:150
fei::Reducer::expand_work_arrays
void expand_work_arrays(int size)
Definition
fei_Reducer.cpp:365
fei::Reducer::csrKdi
fei::CSRMat csrKdi
Definition
fei_Reducer.hpp:139
fei::Reducer::highestGlobalSlaveEqn_
int highestGlobalSlaveEqn_
Definition
fei_Reducer.hpp:158
fei::Reducer::isSlaveEqn
bool isSlaveEqn(int unreducedEqn) const
Definition
fei_Reducer.cpp:594
fei::Reducer::addVectorValues
int addVectorValues(int numValues, const int *globalIndices, const double *values, bool sum_into, bool soln_vector, int vectorIndex, fei::Vector &feivec)
Definition
fei_Reducer.cpp:804
fei::Reducer::work_2D_
std::vector< const double * > work_2D_
Definition
fei_Reducer.hpp:173
fei::Reducer::tmpVec2_
fei::CSVec tmpVec2_
Definition
fei_Reducer.hpp:143
fei::Reducer::assembleReducedVector
void assembleReducedVector(bool soln_vector, fei::Vector &feivec)
Definition
fei_Reducer.cpp:847
fei::Reducer::~Reducer
virtual ~Reducer()
Definition
fei_Reducer.cpp:194
fei::Reducer::g_nonzero_
bool g_nonzero_
Definition
fei_Reducer.hpp:146
fei::Reducer::array_len_
int array_len_
Definition
fei_Reducer.hpp:170
fei::Reducer::copyOutVectorValues
int copyOutVectorValues(int numValues, const int *globalIndices, double *values, bool soln_vector, int vectorIndex, fei::Vector &feivec)
Definition
fei_Reducer.cpp:892
fei::Reducer::fi_
fei::CSVec fi_
Definition
fei_Reducer.hpp:140
fei::Reducer::csrKid
fei::CSRMat csrKid
Definition
fei_Reducer.hpp:139
fei::Reducer::fd_
fei::CSVec fd_
Definition
fei_Reducer.hpp:140
fei::Reducer::Kid_
fei::FillableMat Kid_
Definition
fei_Reducer.hpp:138
fei::Reducer::addMatrixValues
int addMatrixValues(int numRows, const int *rows, int numCols, const int *cols, const double *const *values, bool sum_into, fei::Matrix &feimat, int format)
Definition
fei_Reducer.cpp:682
fei::Reducer::localUnreducedEqns_
std::vector< int > localUnreducedEqns_
Definition
fei_Reducer.hpp:148
fei::Reducer::Kii_
fei::FillableMat Kii_
Definition
fei_Reducer.hpp:138
fei::Reducer::bool_array_
bool * bool_array_
Definition
fei_Reducer.hpp:167
fei::Reducer::lowestGlobalSlaveEqn_
int lowestGlobalSlaveEqn_
Definition
fei_Reducer.hpp:157
fei::Reducer::addGraphEntries
void addGraphEntries(fei::SharedPtr< fei::SparseRowGraph > matrixGraph)
Definition
fei_Reducer.cpp:305
fei::Reducer::tmpMat1_
fei::CSRMat tmpMat1_
Definition
fei_Reducer.hpp:142
fei::Reducer::lastLocalReducedEqn_
int lastLocalReducedEqn_
Definition
fei_Reducer.hpp:156
fei::Reducer::dbgprefix_
std::string dbgprefix_
Definition
fei_Reducer.hpp:163
fei::Reducer::isSlaveEqn_
bool * isSlaveEqn_
Definition
fei_Reducer.hpp:152
fei::Reducer::csg_
fei::CSVec csg_
Definition
fei_Reducer.hpp:145
fei::Reducer::setLocalUnreducedEqns
void setLocalUnreducedEqns(const std::vector< int > &localUnreducedEqns)
Definition
fei_Reducer.cpp:204
fei::Reducer::addGraphIndices
void addGraphIndices(int numRows, const int *rows, int numCols, const int *cols, fei::Graph &graph)
Definition
fei_Reducer.cpp:379
fei::Reducer::firstLocalReducedEqn_
int firstLocalReducedEqn_
Definition
fei_Reducer.hpp:155
fei::Reducer::Reducer
Reducer(fei::SharedPtr< FillableMat > globalSlaveDependencyMatrix, fei::SharedPtr< CSVec > g_vector, MPI_Comm comm)
Definition
fei_Reducer.cpp:24
fei::Reducer::tmpMat2_
fei::CSRMat tmpMat2_
Definition
fei_Reducer.hpp:142
fei::Reducer::initialize
void initialize()
Definition
fei_Reducer.cpp:80
fei::Reducer::getLocalReducedEqns
std::vector< int > & getLocalReducedEqns()
Definition
fei_Reducer.cpp:960
fei::Reducer::addSymmetricGraphIndices
void addSymmetricGraphIndices(int numIndices, const int *indices, bool diagonal, fei::Graph &graph)
Definition
fei_Reducer.cpp:439
fei::Reducer::slavesPtr_
int * slavesPtr_
Definition
fei_Reducer.hpp:137
fei::Reducer::tmpVec1_
fei::CSVec tmpVec1_
Definition
fei_Reducer.hpp:143
fei::Reducer::csvec_i
fei::CSVec csvec_i
Definition
fei_Reducer.hpp:141
fei::Reducer::comm_
MPI_Comm comm_
Definition
fei_Reducer.hpp:162
fei::Reducer::assembleReducedMatrix
void assembleReducedMatrix(fei::Matrix &matrix)
Definition
fei_Reducer.cpp:525
fei::Reducer::Kdi_
fei::FillableMat Kdi_
Definition
fei_Reducer.hpp:138
fei::Reducer::Kdd_
fei::FillableMat Kdd_
Definition
fei_Reducer.hpp:138
fei::Reducer::mat_counter_
unsigned mat_counter_
Definition
fei_Reducer.hpp:164
fei::Reducer::numLocalSlaves_
int numLocalSlaves_
Definition
fei_Reducer.hpp:154
fei::Reducer::csrD_
fei::CSRMat csrD_
Definition
fei_Reducer.hpp:136
fei::Reducer::translateFromReducedEqn
int translateFromReducedEqn(int reduced_eqn) const
Definition
fei_Reducer.cpp:663
fei::Reducer::reverse_
std::vector< int > reverse_
Definition
fei_Reducer.hpp:151
fei::Reducer::isSlaveCol
bool isSlaveCol(int unreducedEqn) const
Definition
fei_Reducer.cpp:632
fei::Reducer::work_1D_
std::vector< double > work_1D_
Definition
fei_Reducer.hpp:172
fei::Reducer::localProc_
int localProc_
Definition
fei_Reducer.hpp:160
fei::SharedPtr
Definition
fei_SharedPtr.hpp:65
fei::SparseRowGraph
Definition
fei_SparseRowGraph.hpp:23
fei::Vector
Definition
fei_Vector.hpp:57
fei_CSRMat.hpp
fei_CSVec.hpp
fei_FillableMat.hpp
fei_Logger.hpp
fei_SharedPtr.hpp
fei_macros.hpp
fei_mpi.h
MPI_Comm
#define MPI_Comm
Definition
fei_mpi.h:56
fei
Definition
fei_ArrayUtils.hpp:16
Generated by
1.17.0