FEI Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
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>
18
19namespace fei {
20 class Factory;
21 class ParameterSet;
22
27 public:
29 class Factory {
30 public:
32 virtual ~Factory(){}
33
37 };
38
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
63 { return(matrix_); }
64
68 return(const_mat); }
69
72 { rhs_ = rhs; }
73
76 { return(rhs_); }
77
81 return(const_rhs); }
82
85 { soln_ = soln; }
86
89 { return(soln_); }
90
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:
208
211
212 std::vector<char*> attributeNames_;
213 std::vector<void*> attributes_;
214 };//class LinearSystem
215}//namespace fei
216
217#endif // _fei_LinearSystem_hpp_
virtual fei::SharedPtr< fei::LinearSystem > createLinearSystem(fei::SharedPtr< fei::MatrixGraph > &matrixGraph)
virtual void getConstrainedEqns(std::vector< int > &crEqns) const =0
fei::SharedPtr< fei::MatrixGraph > matrixGraph_
fei::SharedPtr< fei::Matrix > matrix_
virtual void setRHS(fei::SharedPtr< fei::Vector > &rhs)
virtual int loadEssentialBCs(int numIDs, const int *IDs, int idType, int fieldID, int offsetIntoField, const double *prescribedValues)
virtual void setSolutionVector(fei::SharedPtr< fei::Vector > &soln)
std::vector< void * > attributes_
virtual int parameters(const fei::ParameterSet &params)=0
virtual int loadPenaltyConstraint(int constraintID, const double *weights, double penaltyValue, double rhsValue)=0
fei::SharedPtr< fei::Vector > soln_
virtual fei::SharedPtr< fei::Vector > getRHS()
fei::DirichletBCManager * dbcManager_
std::vector< char * > attributeNames_
virtual int loadLagrangeConstraint(int constraintID, const double *weights, double rhsValue)=0
virtual int parameters(int numParams, const char *const *paramStrings)=0
fei::SharedPtr< fei::Vector > rhs_
virtual int putAttribute(const char *name, void *attribute)
virtual int setBCValuesOnVector(fei::Vector *vector)=0
virtual void getEssentialBCs(std::vector< int > &bcEqns, std::vector< double > &bcVals) const =0
virtual int getAttribute(const char *name, void *&attribute)
virtual fei::SharedPtr< fei::Matrix > getMatrix()
virtual bool eqnIsEssentialBC(int globalEqnIndex) const =0
virtual fei::SharedPtr< fei::Vector > getSolutionVector()
virtual void setMatrix(fei::SharedPtr< fei::Matrix > &matrix)
virtual fei::SharedPtr< const fei::Vector > getSolutionVector() const
virtual fei::SharedPtr< const fei::Vector > getRHS() const
virtual fei::SharedPtr< const fei::Matrix > getMatrix() const
virtual int loadComplete(bool applyBCs=true, bool globalAssemble=true)=0