FEI Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
base
fei_EqnBuffer.hpp
Go to the documentation of this file.
1
#ifndef _fei_EqnBuffer_hpp_
2
#define _fei_EqnBuffer_hpp_
3
4
/*--------------------------------------------------------------------*/
5
/* Copyright 2005 Sandia Corporation. */
6
/* Under the terms of Contract DE-AC04-94AL85000, there is a */
7
/* non-exclusive license for use of this work by or on behalf */
8
/* of the U.S. Government. Export of this program may require */
9
/* a license from the United States Government. */
10
/*--------------------------------------------------------------------*/
11
12
#include "
fei_fwd.hpp
"
13
14
#include <vector>
15
20
21
class
EqnBuffer
{
22
public
:
24
EqnBuffer
();
25
27
EqnBuffer
(
const
EqnBuffer
& src);
28
30
virtual
~EqnBuffer
();
31
34
EqnBuffer
*
deepCopy
();
35
37
EqnBuffer
&
operator=
(
const
EqnBuffer
& src);
38
40
int
getNumEqns
() {
return
(
eqnNumbers_
.size());};
41
43
std::vector<int>&
eqnNumbers
() {
return
(
eqnNumbers_
);};
44
48
std::vector<fei::CSVec*>&
eqns
() {
return
(
eqns_
);};
49
52
int
getNumRHSs
() {
return
(
numRHSs_
);};
53
62
void
setNumRHSs
(
int
n);
63
70
int
addRHS
(
int
eqnNumber,
int
rhsIndex,
double
value,
bool
accumulate=
true
);
71
76
std::vector<std::vector<double>*>*
rhsCoefsPtr
() {
return
(&
rhsCoefs_
);};
77
83
int
getEqnIndex
(
int
eqn);
84
89
int
isInIndices
(
int
eqn);
90
105
int
addEqn
(
int
eqnNumber,
const
double
* coefs,
const
int
* indices,
106
int
len,
bool
accumulate,
bool
create_indices_union=
false
);
107
116
int
addEqns
(
EqnBuffer
& inputEqns,
bool
accumulate);
117
127
int
getCoef
(
int
eqnNumber,
int
colIndex,
double
& coef);
128
134
int
removeIndex
(
int
eqnNumber,
int
colIndex);
135
141
int
getCoefAndRemoveIndex
(
int
eqnNumber,
int
colIndex,
double
& coef);
142
144
void
resetCoefs
();
145
147
int
addIndices
(
int
eqnNumber,
const
int
* indices,
int
len);
148
149
int
newCoefData_
,
newRHSData_
;
150
151
private
:
152
void
deleteMemory
();
153
int
insertNewEqn
(
int
eqn,
int
insertPoint);
154
155
int
internalAddEqn
(
int
index,
const
double
* coefs,
156
const
int
* indices,
int
len,
bool
accumulate);
157
158
std::vector<int>
eqnNumbers_
;
//list of equation-numbers
159
160
std::vector<fei::CSVec*>
eqns_
;
161
162
std::vector<int>
indices_union_
;
//union of all equation-indices
163
164
int
numRHSs_
;
//number of right-hand-side coefficients per equation
165
std::vector<std::vector<double>*>
rhsCoefs_
;
//list of vector-pointers, each
166
//vector is of length numRHSs_
167
bool
setNumRHSsCalled_
;
168
bool
rhsCoefsAllocated_
;
169
170
std::vector<double>
dummyCoefs_
;
171
};
172
173
std::ostream&
operator<<
(std::ostream& os,
EqnBuffer
& eq);
174
175
#endif
176
EqnBuffer
Definition
fei_EqnBuffer.hpp:21
EqnBuffer::internalAddEqn
int internalAddEqn(int index, const double *coefs, const int *indices, int len, bool accumulate)
Definition
fei_EqnBuffer.cpp:326
EqnBuffer::getNumEqns
int getNumEqns()
Definition
fei_EqnBuffer.hpp:40
EqnBuffer::deepCopy
EqnBuffer * deepCopy()
Definition
fei_EqnBuffer.cpp:83
EqnBuffer::resetCoefs
void resetCoefs()
Definition
fei_EqnBuffer.cpp:351
EqnBuffer::indices_union_
std::vector< int > indices_union_
Definition
fei_EqnBuffer.hpp:162
EqnBuffer::isInIndices
int isInIndices(int eqn)
Definition
fei_EqnBuffer.cpp:148
EqnBuffer::rhsCoefsAllocated_
bool rhsCoefsAllocated_
Definition
fei_EqnBuffer.hpp:168
EqnBuffer::setNumRHSs
void setNumRHSs(int n)
Definition
fei_EqnBuffer.cpp:112
EqnBuffer::getCoefAndRemoveIndex
int getCoefAndRemoveIndex(int eqnNumber, int colIndex, double &coef)
Definition
fei_EqnBuffer.cpp:242
EqnBuffer::getNumRHSs
int getNumRHSs()
Definition
fei_EqnBuffer.hpp:52
EqnBuffer::~EqnBuffer
virtual ~EqnBuffer()
Definition
fei_EqnBuffer.cpp:78
EqnBuffer::insertNewEqn
int insertNewEqn(int eqn, int insertPoint)
Definition
fei_EqnBuffer.cpp:302
EqnBuffer::newCoefData_
int newCoefData_
Definition
fei_EqnBuffer.hpp:149
EqnBuffer::rhsCoefsPtr
std::vector< std::vector< double > * > * rhsCoefsPtr()
Definition
fei_EqnBuffer.hpp:76
EqnBuffer::addEqns
int addEqns(EqnBuffer &inputEqns, bool accumulate)
Definition
fei_EqnBuffer.cpp:271
EqnBuffer::setNumRHSsCalled_
bool setNumRHSsCalled_
Definition
fei_EqnBuffer.hpp:167
EqnBuffer::removeIndex
int removeIndex(int eqnNumber, int colIndex)
Definition
fei_EqnBuffer.cpp:214
EqnBuffer::eqnNumbers
std::vector< int > & eqnNumbers()
Definition
fei_EqnBuffer.hpp:43
EqnBuffer::numRHSs_
int numRHSs_
Definition
fei_EqnBuffer.hpp:164
EqnBuffer::deleteMemory
void deleteMemory()
Definition
fei_EqnBuffer.cpp:93
EqnBuffer::addEqn
int addEqn(int eqnNumber, const double *coefs, const int *indices, int len, bool accumulate, bool create_indices_union=false)
Definition
fei_EqnBuffer.cpp:172
EqnBuffer::addRHS
int addRHS(int eqnNumber, int rhsIndex, double value, bool accumulate=true)
Definition
fei_EqnBuffer.cpp:127
EqnBuffer::eqnNumbers_
std::vector< int > eqnNumbers_
Definition
fei_EqnBuffer.hpp:158
EqnBuffer::EqnBuffer
EqnBuffer()
Definition
fei_EqnBuffer.cpp:17
EqnBuffer::rhsCoefs_
std::vector< std::vector< double > * > rhsCoefs_
Definition
fei_EqnBuffer.hpp:165
EqnBuffer::operator=
EqnBuffer & operator=(const EqnBuffer &src)
Definition
fei_EqnBuffer.cpp:48
EqnBuffer::getCoef
int getCoef(int eqnNumber, int colIndex, double &coef)
Definition
fei_EqnBuffer.cpp:201
EqnBuffer::getEqnIndex
int getEqnIndex(int eqn)
Definition
fei_EqnBuffer.cpp:106
EqnBuffer::newRHSData_
int newRHSData_
Definition
fei_EqnBuffer.hpp:149
EqnBuffer::dummyCoefs_
std::vector< double > dummyCoefs_
Definition
fei_EqnBuffer.hpp:170
EqnBuffer::eqns
std::vector< fei::CSVec * > & eqns()
Definition
fei_EqnBuffer.hpp:48
EqnBuffer::addIndices
int addIndices(int eqnNumber, const int *indices, int len)
Definition
fei_EqnBuffer.cpp:359
EqnBuffer::eqns_
std::vector< fei::CSVec * > eqns_
Definition
fei_EqnBuffer.hpp:160
operator<<
std::ostream & operator<<(std::ostream &os, EqnBuffer &eq)
fei_fwd.hpp
Generated by
1.17.0