FEI Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
base
fei_LinearSystem.hpp
Go to the documentation of this file.
1
/*--------------------------------------------------------------------*/
2
/* Copyright 2005 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_LinearSystem_hpp_
10
#define _fei_LinearSystem_hpp_
11
12
#include <
fei_macros.hpp
>
13
#include <
fei_SharedPtr.hpp
>
14
#include <
fei_MatrixGraph.hpp
>
15
#include <
fei_Matrix.hpp
>
16
#include <
fei_Vector.hpp
>
17
#include <
fei_DirichletBCManager.hpp
>
18
19
namespace
fei
{
20
class
Factory
;
21
class
ParameterSet
;
22
26
class
LinearSystem
{
27
public
:
29
class
Factory
{
30
public
:
32
virtual
~Factory
(){}
33
35
virtual
fei::SharedPtr<fei::LinearSystem>
36
createLinearSystem
(
fei::SharedPtr<fei::MatrixGraph>
& matrixGraph);
37
};
38
40
LinearSystem
(
fei::SharedPtr<fei::MatrixGraph>
& matrixGraph);
41
43
virtual
~LinearSystem
();
44
51
virtual
int
parameters
(
int
numParams,
52
const
char
*
const
* paramStrings) = 0;
53
56
virtual
int
parameters
(
const
fei::ParameterSet
& params) = 0;
57
59
virtual
void
setMatrix
(
fei::SharedPtr<fei::Matrix>
& matrix);
60
62
virtual
fei::SharedPtr<fei::Matrix>
getMatrix
()
63
{
return
(
matrix_
); }
64
66
virtual
fei::SharedPtr<const fei::Matrix>
getMatrix
()
const
67
{
fei::SharedPtr<const fei::Matrix>
const_mat(
matrix_
);
68
return
(const_mat); }
69
71
virtual
void
setRHS
(
fei::SharedPtr<fei::Vector>
& rhs)
72
{
rhs_
= rhs; }
73
75
virtual
fei::SharedPtr<fei::Vector>
getRHS
()
76
{
return
(
rhs_
); }
77
79
virtual
fei::SharedPtr<const fei::Vector>
getRHS
()
const
80
{
fei::SharedPtr<const fei::Vector>
const_rhs(
rhs_
);
81
return
(const_rhs); }
82
84
virtual
void
setSolutionVector
(
fei::SharedPtr<fei::Vector>
& soln)
85
{
soln_
= soln; }
86
88
virtual
fei::SharedPtr<fei::Vector>
getSolutionVector
()
89
{
return
(
soln_
); }
90
92
virtual
fei::SharedPtr<const fei::Vector>
getSolutionVector
()
const
93
{
fei::SharedPtr<const fei::Vector>
const_soln(
soln_
);
94
return
(const_soln); }
95
98
virtual
int
putAttribute
(
const
char
* name,
99
void
* attribute);
100
102
virtual
int
getAttribute
(
const
char
* name,
103
void
*& attribute);
104
120
virtual
int
loadEssentialBCs
(
int
numIDs,
121
const
int
* IDs,
122
int
idType,
123
int
fieldID,
124
int
offsetIntoField,
125
const
double
* prescribedValues);
126
143
virtual
int
loadEssentialBCs
(
int
numIDs,
144
const
int
* IDs,
145
int
idType,
146
int
fieldID,
147
const
int
* offsetsIntoField,
148
const
double
* prescribedValues);
149
158
virtual
int
loadLagrangeConstraint
(
int
constraintID,
159
const
double
*weights,
160
double
rhsValue) = 0;
161
171
virtual
int
loadPenaltyConstraint
(
int
constraintID,
172
const
double
*weights,
173
double
penaltyValue,
174
double
rhsValue) = 0;
175
179
virtual
int
loadComplete
(
bool
applyBCs=
true
,
180
bool
globalAssemble=
true
) = 0;
181
185
virtual
int
setBCValuesOnVector
(
fei::Vector
* vector) = 0;
186
190
virtual
bool
eqnIsEssentialBC
(
int
globalEqnIndex)
const
= 0;
191
196
virtual
void
getEssentialBCs
(std::vector<int>& bcEqns,
197
std::vector<double>& bcVals)
const
= 0;
198
202
virtual
void
getConstrainedEqns
(std::vector<int>& crEqns)
const
= 0;
203
204
protected
:
205
fei::SharedPtr<fei::Matrix>
matrix_
;
206
fei::SharedPtr<fei::Vector>
soln_
;
207
fei::SharedPtr<fei::Vector>
rhs_
;
208
209
fei::SharedPtr<fei::MatrixGraph>
matrixGraph_
;
210
fei::DirichletBCManager
*
dbcManager_
;
211
212
std::vector<char*>
attributeNames_
;
213
std::vector<void*>
attributes_
;
214
};
//class LinearSystem
215
}
//namespace fei
216
217
#endif
// _fei_LinearSystem_hpp_
fei::DirichletBCManager
Definition
fei_DirichletBCManager.hpp:25
fei::Factory
Definition
fei_Factory.hpp:42
fei::LinearSystem::Factory
Definition
fei_LinearSystem.hpp:29
fei::LinearSystem::Factory::createLinearSystem
virtual fei::SharedPtr< fei::LinearSystem > createLinearSystem(fei::SharedPtr< fei::MatrixGraph > &matrixGraph)
Definition
fei_LinearSystem.cpp:38
fei::LinearSystem::Factory::~Factory
virtual ~Factory()
Definition
fei_LinearSystem.hpp:32
fei::LinearSystem::getConstrainedEqns
virtual void getConstrainedEqns(std::vector< int > &crEqns) const =0
fei::LinearSystem::matrixGraph_
fei::SharedPtr< fei::MatrixGraph > matrixGraph_
Definition
fei_LinearSystem.hpp:209
fei::LinearSystem::matrix_
fei::SharedPtr< fei::Matrix > matrix_
Definition
fei_LinearSystem.hpp:205
fei::LinearSystem::setRHS
virtual void setRHS(fei::SharedPtr< fei::Vector > &rhs)
Definition
fei_LinearSystem.hpp:71
fei::LinearSystem::loadEssentialBCs
virtual int loadEssentialBCs(int numIDs, const int *IDs, int idType, int fieldID, int offsetIntoField, const double *prescribedValues)
Definition
fei_LinearSystem.cpp:70
fei::LinearSystem::setSolutionVector
virtual void setSolutionVector(fei::SharedPtr< fei::Vector > &soln)
Definition
fei_LinearSystem.hpp:84
fei::LinearSystem::attributes_
std::vector< void * > attributes_
Definition
fei_LinearSystem.hpp:213
fei::LinearSystem::parameters
virtual int parameters(const fei::ParameterSet ¶ms)=0
fei::LinearSystem::LinearSystem
LinearSystem(fei::SharedPtr< fei::MatrixGraph > &matrixGraph)
Definition
fei_LinearSystem.cpp:17
fei::LinearSystem::loadPenaltyConstraint
virtual int loadPenaltyConstraint(int constraintID, const double *weights, double penaltyValue, double rhsValue)=0
fei::LinearSystem::soln_
fei::SharedPtr< fei::Vector > soln_
Definition
fei_LinearSystem.hpp:206
fei::LinearSystem::getRHS
virtual fei::SharedPtr< fei::Vector > getRHS()
Definition
fei_LinearSystem.hpp:75
fei::LinearSystem::dbcManager_
fei::DirichletBCManager * dbcManager_
Definition
fei_LinearSystem.hpp:210
fei::LinearSystem::~LinearSystem
virtual ~LinearSystem()
Definition
fei_LinearSystem.cpp:27
fei::LinearSystem::attributeNames_
std::vector< char * > attributeNames_
Definition
fei_LinearSystem.hpp:212
fei::LinearSystem::loadLagrangeConstraint
virtual int loadLagrangeConstraint(int constraintID, const double *weights, double rhsValue)=0
fei::LinearSystem::parameters
virtual int parameters(int numParams, const char *const *paramStrings)=0
fei::LinearSystem::rhs_
fei::SharedPtr< fei::Vector > rhs_
Definition
fei_LinearSystem.hpp:207
fei::LinearSystem::putAttribute
virtual int putAttribute(const char *name, void *attribute)
Definition
fei_LinearSystem.cpp:53
fei::LinearSystem::setBCValuesOnVector
virtual int setBCValuesOnVector(fei::Vector *vector)=0
fei::LinearSystem::getEssentialBCs
virtual void getEssentialBCs(std::vector< int > &bcEqns, std::vector< double > &bcVals) const =0
fei::LinearSystem::getAttribute
virtual int getAttribute(const char *name, void *&attribute)
Definition
fei_LinearSystem.cpp:62
fei::LinearSystem::getMatrix
virtual fei::SharedPtr< fei::Matrix > getMatrix()
Definition
fei_LinearSystem.hpp:62
fei::LinearSystem::eqnIsEssentialBC
virtual bool eqnIsEssentialBC(int globalEqnIndex) const =0
fei::LinearSystem::getSolutionVector
virtual fei::SharedPtr< fei::Vector > getSolutionVector()
Definition
fei_LinearSystem.hpp:88
fei::LinearSystem::setMatrix
virtual void setMatrix(fei::SharedPtr< fei::Matrix > &matrix)
Definition
fei_LinearSystem.cpp:47
fei::LinearSystem::getSolutionVector
virtual fei::SharedPtr< const fei::Vector > getSolutionVector() const
Definition
fei_LinearSystem.hpp:92
fei::LinearSystem::getRHS
virtual fei::SharedPtr< const fei::Vector > getRHS() const
Definition
fei_LinearSystem.hpp:79
fei::LinearSystem::getMatrix
virtual fei::SharedPtr< const fei::Matrix > getMatrix() const
Definition
fei_LinearSystem.hpp:66
fei::LinearSystem::loadComplete
virtual int loadComplete(bool applyBCs=true, bool globalAssemble=true)=0
fei::ParameterSet
Definition
fei_ParameterSet.hpp:46
fei::SharedPtr
Definition
fei_SharedPtr.hpp:65
fei::Vector
Definition
fei_Vector.hpp:57
fei_DirichletBCManager.hpp
fei_MatrixGraph.hpp
fei_Matrix.hpp
fei_SharedPtr.hpp
fei_Vector.hpp
fei_macros.hpp
fei
Definition
fei_ArrayUtils.hpp:16
Generated by
1.17.0