FEI Package Browser (Single Doxygen Collection)  Version of the Day
fei_LinSysCoreFilter.hpp
Go to the documentation of this file.
1 #ifndef _LinSysCoreFilter_hpp_
2 #define _LinSysCoreFilter_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_macros.hpp"
13 #include "fei_defs.h"
14 #include "fei_fwd.hpp"
15 #include "fei_Filter.hpp"
16 #include <fei_CSRMat.hpp>
17 #include <fei_CSVec.hpp>
18 
19 namespace fei {
20  class DirichletBCManager;
21 }
22 
33 class LinSysCoreFilter : public Filter {
34 
35  public:
36  // Constructor.
38  SNL_FEI_Structure* probStruct,
39  LinearSystemCore* lsc,
40  int masterRank=0);
41 
42  //Destructor
43  virtual ~LinSysCoreFilter();
44 
45 
46  // set a value (usually zeros) throughout the linear system
47  virtual int resetSystem(double s);
48  virtual int resetMatrix(double s);
49  virtual int resetRHSVector(double s);
50  virtual int resetInitialGuess(double s);
51 
52  virtual int deleteMultCRs();
53 
54  virtual int loadNodeBCs(int numNodes,
55  const GlobalID *nodeIDs,
56  int fieldID,
57  const int* offsetsIntoField,
58  const double* prescribedValues);
59 
60  virtual int loadElemBCs(int numElems,
61  const GlobalID *elemIDs,
62  int fieldID,
63  const double *const *alpha,
64  const double *const *beta,
65  const double *const *gamma);
66 
67  virtual int sumInElem(GlobalID elemBlockID,
68  GlobalID elemID,
69  const GlobalID* elemConn,
70  const double* const* elemStiffness,
71  const double* elemLoad,
72  int elemFormat);
73 
74  virtual int sumInElemMatrix(GlobalID elemBlockID,
75  GlobalID elemID,
76  const GlobalID* elemConn,
77  const double* const* elemStiffness,
78  int elemFormat);
79 
80  virtual int sumInElemRHS(GlobalID elemBlockID,
81  GlobalID elemID,
82  const GlobalID* elemConn,
83  const double* elemLoad);
84 
85  virtual int loadCRMult(int CRMultID,
86  int numCRNodes,
87  const GlobalID* CRNodes,
88  const int* CRFields,
89  const double* CRWeights,
90  double CRValue);
91 
92  virtual int loadCRPen(int CRPenID,
93  int numCRNodes,
94  const GlobalID* CRNodes,
95  const int *CRFields,
96  const double* CRWeights,
97  double CRValue,
98  double penValue);
99 
100  virtual int putIntoRHS(int IDType,
101  int fieldID,
102  int numIDs,
103  const GlobalID* IDs,
104  const double* rhsEntries);
105 
106  virtual int sumIntoRHS(int IDType,
107  int fieldID,
108  int numIDs,
109  const GlobalID* IDs,
110  const double* rhsEntries);
111 
112  virtual int loadComplete();
113 
114  // set parameters associated with solver choice, etc.
115  virtual int parameters(int numParams, const char *const* paramStrings);
116 
117  //get residual norms
118  virtual int residualNorm(int whichNorm, int numFields,
119  int* fieldIDs, double* norms, double& residTime);
120 
121  // start iterative solution
122  virtual int solve(int& status, double& sTime);
123 
124  // query function iterations performed.
125  virtual int iterations() const {return(iterations_);};
126 
127 // Solution return services.......................................
128 
129  // return all nodal solution params on a block-by-block basis
130  virtual int getBlockNodeSolution(GlobalID elemBlockID,
131  int numNodes,
132  const GlobalID *nodeIDs,
133  int *offsets,
134  double *results);
135 
136  virtual int getNodalSolution(int numNodes,
137  const GlobalID *nodeIDs,
138  int *offsets,
139  double *results);
140 
141  // return nodal solution for one field on a block-by-block basis
142  virtual int getBlockFieldNodeSolution(GlobalID elemBlockID,
143  int fieldID,
144  int numNodes,
145  const GlobalID *nodeIDs,
146  double *results);
147 
148  // return element solution params on a block-by-block basis
149  virtual int getBlockElemSolution(GlobalID elemBlockID,
150  int numElems,
151  const GlobalID *elemIDs,
152  int& numElemDOFPerElement,
153  double *results);
154 
155  virtual int getCRMultipliers(int numCRs, const int* CRIDs, double* multipliers);
156 
157 // associated "puts" paralleling the solution return services.
158 //
159 // the int sizing parameters are passed for error-checking purposes, so
160 // that the interface implementation can tell if the passed estimate
161 // vectors make sense -before- an attempt is made to utilize them as
162 // initial guesses by unpacking them into the solver's native solution
163 // vector format (these parameters include lenNodeIDList, lenElemIDList,
164 // numElemDOF, and numMultCRs -- all other passed params are either
165 // vectors or block/constraint-set IDs)
166 
167  // put nodal-based solution guess on a block-by-block basis
168  virtual int putBlockNodeSolution(GlobalID elemBlockID,
169  int numNodes,
170  const GlobalID *nodeIDs,
171  const int *offsets,
172  const double *estimates);
173 
174  // put nodal-based guess for one field on a block-by-block basis
175  virtual int putBlockFieldNodeSolution(GlobalID elemBlockID,
176  int fieldID,
177  int numNodes,
178  const GlobalID *nodeIDs,
179  const double *estimates);
180 
181  // put element-based solution guess on a block-by-block basis
182  virtual int putBlockElemSolution(GlobalID elemBlockID,
183  int numElems,
184  const GlobalID *elemIDs,
185  int dofPerElem,
186  const double *estimates);
187 
188  virtual int putCRMultipliers(int numMultCRs,
189  const int* CRIDs,
190  const double *multEstimates);
191 
192 //===== a couple of public non-FEI functions... ================================
193 //These are intended to be used by an 'outer-layer' class like
194 //FEI_Implementation.
195 //
196  public:
197  virtual int getNodalFieldSolution(int fieldID,
198  int numNodes,
199  const GlobalID* nodeIDs,
200  double* results);
201 
202  virtual int putNodalFieldData(int fieldID,
203  int numNodes,
204  const GlobalID* nodeIDs,
205  const double* nodeData);
206 
207  virtual int putNodalFieldSolution(int fieldID,
208  int numNodes,
209  const GlobalID* nodeIDs,
210  const double* nodeData);
211 
212  virtual int unpackSolution();
213 
214  void setEqnCommMgr(EqnCommMgr* eqnCommMgr);
215 
217 
218  virtual int setNumRHSVectors(int numRHSs, int* rhsIDs);
219  virtual int setCurrentRHS(int rhsID);
220 
221  virtual int exchangeRemoteEquations();
222  virtual int exchangeRemoteBCs(std::vector<int>& essEqns,
223  std::vector<double>& essAlpha,
224  std::vector<double>& essGamma);
225 
226  virtual int implementAllBCs();
227 
228  virtual int enforceEssentialBCs(const int* eqns, const double* alpha,
229  const double* gamma, int numEqns);
230 
231  virtual int enforceRemoteEssBCs(int numEqns, const int* eqns,
232  const int* const* colIndices, const int* colIndLens,
233  const double* const* coefs);
234 
235  virtual int initialize();
236 
237 //==============================================================================
238 //private functions for internal implementation of LinSysCoreFilter.
239 //==============================================================================
240  private:
241  int initLinSysCore();
242  void setLinSysCoreCREqns();
243 
244  int unpackRemoteContributions(EqnCommMgr& eqnCommMgr,
245  int assemblyMode);
246 
247  int loadFEDataMultCR(int CRID,
248  int numCRNodes,
249  const GlobalID* CRNodes,
250  const int* CRFields,
251  const double* CRWeights,
252  double CRValue);
253 
254  int loadFEDataPenCR(int CRID,
255  int numCRNodes,
256  const GlobalID* CRNodes,
257  const int* CRFields,
258  const double* CRWeights,
259  double CRValue,
260  double penValue);
261 
262  int storeNodalColumnCoefs(int eqn, const NodeDescriptor& node,
263  int fieldID, int fieldSize,
264  double* coefs);
265 
266  int storeNodalRowCoefs(const NodeDescriptor& node,
267  int fieldID, int fieldSize,
268  double* coefs, int eqn);
269 
270  int generalElemInput(GlobalID elemBlockID,
271  GlobalID elemID,
272  const double* const* elemStiffness,
273  const double* elemLoad,
274  int elemFormat);
275 
276  int generalElemInput(GlobalID elemBlockID,
277  GlobalID elemID,
278  const GlobalID* elemConn,
279  const double* const* elemStiffness,
280  const double* elemLoad,
281  int elemFormat);
282 
283  void storeNodalSendIndex(const NodeDescriptor& node, int fieldID, int col);
284  void storeNodalSendEqn(const NodeDescriptor& node, int fieldID, int col,
285  double* coefs);
286  void storeNodalSendIndices(const NodeDescriptor& iNode, int iField,
287  const NodeDescriptor& jNode, int jField);
288 
289  void storePenNodeSendData(const NodeDescriptor& iNode,
290  int iField, int iFieldSize,
291  double* iCoefs,
292  const NodeDescriptor& jNode,
293  int jField, int jFieldSize,
294  double* jCoefs,
295  double penValue, double CRValue);
296 
297  int storePenNodeData(const NodeDescriptor& iNode,
298  int iField, int iFieldSize,
299  double* iCoefs,
300  const NodeDescriptor& jNode,
301  int jField, int jFieldSize,
302  double* jCoefs,
303  double penValue, double CRValue);
304 
305  void allocElemStuff();
306 
307  int resolveConflictingCRs(EqnBuffer& bcEqns);
308 
309  int giveToMatrix_symm_noSlaves(int numPtRows,
310  const int* ptRowNumbers,
311  const double* const* coefs,
312  int mode);
313 
314  int giveToBlkMatrix_symm_noSlaves(int numPtRows, const int* ptRows,
315  int numBlkRows, const int* blkRowNumbers,
316  const int* blkRowSizes,
317  const double* const* coefs,
318  int mode);
319 
320  int giveToMatrix(int numPtRows, const int* ptRows,
321  int numPtCols, const int* ptCols,
322  const double* const* values,
323  int mode);
324 
325  int giveToLocalReducedMatrix(int numPtRows, const int* ptRows,
326  int numPtCols, const int* ptCols,
327  const double* const* values,
328  int mode);
329 
330  int getFromMatrix(int numPtRows, const int* ptRows,
331  const int* rowColOffsets, const int* ptCols,
332  int numColsPerRow, double** values);
333 
334  int sumIntoMatrix(fei::CSRMat& mat);
335 
336  int getEqnsFromMatrix(ProcEqns& procEqns, EqnBuffer& eqnData);
337 
338  int getEqnsFromRHS(ProcEqns& procEqns, EqnBuffer& eqnData);
339 
340  int giveToRHS(int num, const double* values,
341  const int* indices, int mode);
342 
343  int giveToLocalReducedRHS(int num, const double* values,
344  const int* indices, int mode);
345 
346  int getFromRHS(int num, double* values, const int* indices);
347 
348  int sumIntoRHS(fei::CSVec& vec);
349 
350  int getEqnSolnEntry(int eqnNumber, double& solnValue);
351 
352  int getSharedRemoteSolnEntry(int eqnNumber, double& solnValue);
353 
354  int getReducedSolnEntry(int eqnNumber, double& solnValue);
355 
356  int formResidual(double* residValues, int numLocalEqns);
357 
358  int getRemoteSharedEqns(int numPtRows, const int* ptRows,
359  ProcEqns& remoteProcEqns);
360 
361  int resetTheMatrix(double s);
362  int resetTheRHSVector(double s);
363 
364  int assembleEqns(int numPtRows,
365  int numPtCols,
366  const int* rowNumbers,
367  const int* colIndices,
368  const double* const* coefs,
369  bool structurallySymmetric,
370  int numBlkEqns, int* blkEqns, int* blkSizes,
371  bool useBlkEqns, int mode);
372 
373  int assembleReducedEqns();
374 
375  int assembleRHS(int numValues, const int* indices, const double* coefs, int mode);
376 
377  int assembleReducedRHS();
378 
379  void debugOutput(const char* mesg);
380 
381  int createEqnCommMgr_put();
382 
383 //==============================================================================
384 //private LinSysCoreFilter variables
385 //==============================================================================
386  private:
387 
389 
392 
394 
402 
404 
408 
411 
414 
416  int numRHSs_;
418  std::vector<int> rhsIDs_;
419 
421 
424 
427 
428  std::vector<int> rowIndices_;
429  std::vector<int> rowColOffsets_, colIndices_;
430 
435  std::vector<int> rSlave_, cSlave_;
436 
438  fei::DirichletBCManager* bcManager_; //Boundary condition manager
439 
440  EqnCommMgr* eqnCommMgr_; //equation communication manager
441  EqnCommMgr* eqnCommMgr_put_; //only created if users call the 'put'
442  // functions
443 
445  std::vector<int> scatterIndices_;
446  std::vector<int> blkScatterIndices_;
447  std::vector<int> iworkSpace_, iworkSpace2_;
448  std::vector<double> dworkSpace_;
449  std::vector<const double*> dworkSpace2_;
450 
451  double** eStiff_;
452  double* eStiff1D_;
453  double* eLoad_;
454 };
455 
456 #endif
457 
LinSysCoreFilter::initialize
virtual int initialize()
Definition: fei_LinSysCoreFilter.cpp:161
LinSysCoreFilter::newMatrixData_
bool newMatrixData_
Definition: fei_LinSysCoreFilter.hpp:395
LinSysCoreFilter::dworkSpace2_
std::vector< const double * > dworkSpace2_
Definition: fei_LinSysCoreFilter.hpp:449
LinSysCoreFilter::storeNodalSendEqn
void storeNodalSendEqn(const NodeDescriptor &node, int fieldID, int col, double *coefs)
Definition: fei_LinSysCoreFilter.cpp:655
LinSysCoreFilter::reducedEqnCounter_
int reducedEqnCounter_
Definition: fei_LinSysCoreFilter.hpp:434
LinSysCoreFilter::tooLateToChooseBlock_
bool tooLateToChooseBlock_
Definition: fei_LinSysCoreFilter.hpp:410
LinSysCoreFilter::colIndices_
std::vector< int > colIndices_
Definition: fei_LinSysCoreFilter.hpp:429
LinSysCoreFilter::assembleEqns
int assembleEqns(int numPtRows, int numPtCols, const int *rowNumbers, const int *colIndices, const double *const *coefs, bool structurallySymmetric, int numBlkEqns, int *blkEqns, int *blkSizes, bool useBlkEqns, int mode)
Definition: fei_LinSysCoreFilter.cpp:3593
LinSysCoreFilter::csrD
fei::CSRMat csrD
Definition: fei_LinSysCoreFilter.hpp:432
LinSysCoreFilter::loadNodeBCs
virtual int loadNodeBCs(int numNodes, const GlobalID *nodeIDs, int fieldID, const int *offsetsIntoField, const double *prescribedValues)
Definition: fei_LinSysCoreFilter.cpp:927
LinSysCoreFilter::getFromMatrix
int getFromMatrix(int numPtRows, const int *ptRows, const int *rowColOffsets, const int *ptCols, int numColsPerRow, double **values)
Definition: fei_LinSysCoreFilter.cpp:2417
LinSysCoreFilter::blkScatterIndices_
std::vector< int > blkScatterIndices_
Definition: fei_LinSysCoreFilter.hpp:446
fei_Filter.hpp
LinSysCoreFilter::resetSystem
virtual int resetSystem(double s)
Definition: fei_LinSysCoreFilter.cpp:803
LinSysCoreFilter::getSharedRemoteSolnEntry
int getSharedRemoteSolnEntry(int eqnNumber, double &solnValue)
Definition: fei_LinSysCoreFilter.cpp:2858
LinSysCoreFilter::numRHSs_
int numRHSs_
Definition: fei_LinSysCoreFilter.hpp:416
LinSysCoreFilter::generalElemInput
int generalElemInput(GlobalID elemBlockID, GlobalID elemID, const double *const *elemStiffness, const double *elemLoad, int elemFormat)
Definition: fei_LinSysCoreFilter.cpp:1106
LinSysCoreFilter::eStiff1D_
double * eStiff1D_
Definition: fei_LinSysCoreFilter.hpp:452
LinSysCoreFilter::eStiff_
double ** eStiff_
Definition: fei_LinSysCoreFilter.hpp:451
LinSysCoreFilter::initLinSysCore
int initLinSysCore()
Definition: fei_LinSysCoreFilter.cpp:297
LinSysCoreFilter::getEqnsFromRHS
int getEqnsFromRHS(ProcEqns &procEqns, EqnBuffer &eqnData)
Definition: fei_LinSysCoreFilter.cpp:2587
LinSysCoreFilter::newConstraintData_
bool newConstraintData_
Definition: fei_LinSysCoreFilter.hpp:397
fei::FillableMat
Definition: fei_FillableMat.hpp:20
LinSysCoreFilter::createEqnCommMgr_put
int createEqnCommMgr_put()
Definition: fei_LinSysCoreFilter.cpp:284
LinSysCoreFilter::resetRHSVector
virtual int resetRHSVector(double s)
Definition: fei_LinSysCoreFilter.cpp:876
LinSysCoreFilter
Definition: fei_LinSysCoreFilter.hpp:33
LinSysCoreFilter::scatterIndices_
std::vector< int > scatterIndices_
Definition: fei_LinSysCoreFilter.hpp:445
LinSysCoreFilter::eLoad_
double * eLoad_
Definition: fei_LinSysCoreFilter.hpp:453
LinSysCoreFilter::iworkSpace2_
std::vector< int > iworkSpace2_
Definition: fei_LinSysCoreFilter.hpp:447
LinSysCoreFilter::numGlobalNodes_
int numGlobalNodes_
Definition: fei_LinSysCoreFilter.hpp:407
LinSysCoreFilter::Kdi_
fei::FillableMat * Kdi_
Definition: fei_LinSysCoreFilter.hpp:431
LinSysCoreFilter::eqnCommMgr_put_
EqnCommMgr * eqnCommMgr_put_
Definition: fei_LinSysCoreFilter.hpp:441
LinSysCoreFilter::giveToBlkMatrix_symm_noSlaves
int giveToBlkMatrix_symm_noSlaves(int numPtRows, const int *ptRows, int numBlkRows, const int *blkRowNumbers, const int *blkRowSizes, const double *const *coefs, int mode)
Definition: fei_LinSysCoreFilter.cpp:2164
LinSysCoreFilter::solve
virtual int solve(int &status, double &sTime)
Definition: fei_LinSysCoreFilter.cpp:2065
fei_CSVec.hpp
LinSysCoreFilter::rowColOffsets_
std::vector< int > rowColOffsets_
Definition: fei_LinSysCoreFilter.hpp:429
fei_macros.hpp
LinSysCoreFilter::setLinSysCoreCREqns
void setLinSysCoreCREqns()
Definition: fei_LinSysCoreFilter.cpp:462
LinSysCoreFilter::enforceEssentialBCs
virtual int enforceEssentialBCs(const int *eqns, const double *alpha, const double *gamma, int numEqns)
Definition: fei_LinSysCoreFilter.cpp:1344
fei_fwd.hpp
LinSysCoreFilter::loadElemBCs
virtual int loadElemBCs(int numElems, const GlobalID *elemIDs, int fieldID, const double *const *alpha, const double *const *beta, const double *const *gamma)
Definition: fei_LinSysCoreFilter.cpp:967
LinSysCoreFilter::Kid_
fei::FillableMat * Kid_
Definition: fei_LinSysCoreFilter.hpp:431
LinSysCoreFilter::csrKid
fei::CSRMat csrKid
Definition: fei_LinSysCoreFilter.hpp:432
LinSysCoreFilter::getBlockFieldNodeSolution
virtual int getBlockFieldNodeSolution(GlobalID elemBlockID, int fieldID, int numNodes, const GlobalID *nodeIDs, double *results)
Definition: fei_LinSysCoreFilter.cpp:3088
LinSysCoreFilter::sumInElemMatrix
virtual int sumInElemMatrix(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn, const double *const *elemStiffness, int elemFormat)
Definition: fei_LinSysCoreFilter.cpp:1040
LinSysCoreFilter::sumIntoMatrix
int sumIntoMatrix(fei::CSRMat &mat)
Definition: fei_LinSysCoreFilter.cpp:2394
LinSysCoreFilter::cSlave_
std::vector< int > cSlave_
Definition: fei_LinSysCoreFilter.hpp:435
LinSysCoreFilter::resolveConflictRequested_
bool resolveConflictRequested_
Definition: fei_LinSysCoreFilter.hpp:403
LinSysCoreFilter::allocElemStuff
void allocElemStuff()
Definition: fei_LinSysCoreFilter.cpp:978
LinSysCoreFilter::maxElemRows_
int maxElemRows_
Definition: fei_LinSysCoreFilter.hpp:444
LinSysCoreFilter::implementAllBCs
virtual int implementAllBCs()
Definition: fei_LinSysCoreFilter.cpp:1305
LinSysCoreFilter::tmpVec1_
fei::CSVec tmpVec1_
Definition: fei_LinSysCoreFilter.hpp:433
LinSysCoreFilter::iworkSpace_
std::vector< int > iworkSpace_
Definition: fei_LinSysCoreFilter.hpp:447
LinSysCoreFilter::lsc_
LinearSystemCore * lsc_
Definition: fei_LinSysCoreFilter.hpp:390
EqnCommMgr
Definition: fei_EqnCommMgr.hpp:104
fei_CSRMat.hpp
LinSysCoreFilter::sumInElemRHS
virtual int sumInElemRHS(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn, const double *elemLoad)
Definition: fei_LinSysCoreFilter.cpp:1067
LinSysCoreFilter::putBlockNodeSolution
virtual int putBlockNodeSolution(GlobalID elemBlockID, int numNodes, const GlobalID *nodeIDs, const int *offsets, const double *estimates)
Definition: fei_LinSysCoreFilter.cpp:3227
LinSysCoreFilter::LinSysCoreFilter
LinSysCoreFilter(FEI_Implementation *owner, MPI_Comm comm, SNL_FEI_Structure *probStruct, LinearSystemCore *lsc, int masterRank=0)
Definition: fei_LinSysCoreFilter.cpp:52
LinSysCoreFilter::putBlockElemSolution
virtual int putBlockElemSolution(GlobalID elemBlockID, int numElems, const GlobalID *elemIDs, int dofPerElem, const double *estimates)
Definition: fei_LinSysCoreFilter.cpp:3411
LinSysCoreFilter::getEqnCommMgr
EqnCommMgr * getEqnCommMgr()
Definition: fei_LinSysCoreFilter.hpp:216
LinSysCoreFilter::assembleRHS
int assembleRHS(int numValues, const int *indices, const double *coefs, int mode)
Definition: fei_LinSysCoreFilter.cpp:3770
LinSysCoreFilter::getNodalFieldSolution
virtual int getNodalFieldSolution(int fieldID, int numNodes, const GlobalID *nodeIDs, double *results)
Definition: fei_LinSysCoreFilter.cpp:3165
LinSysCoreFilter::unpackSolution
virtual int unpackSolution()
Definition: fei_LinSysCoreFilter.cpp:2886
LinSysCoreFilter::loadCRMult
virtual int loadCRMult(int CRMultID, int numCRNodes, const GlobalID *CRNodes, const int *CRFields, const double *CRWeights, double CRValue)
Definition: fei_LinSysCoreFilter.cpp:1639
LinSysCoreFilter::newBCData_
bool newBCData_
Definition: fei_LinSysCoreFilter.hpp:398
LinSysCoreFilter::numLocallyOwnedNodes_
int numLocallyOwnedNodes_
Definition: fei_LinSysCoreFilter.hpp:407
LinSysCoreFilter::resetInitialGuess
virtual int resetInitialGuess(double s)
Definition: fei_LinSysCoreFilter.cpp:896
LinSysCoreFilter::tmpMat1_
fei::CSRMat tmpMat1_
Definition: fei_LinSysCoreFilter.hpp:432
LinSysCoreFilter::sumInElem
virtual int sumInElem(GlobalID elemBlockID, GlobalID elemID, const GlobalID *elemConn, const double *const *elemStiffness, const double *elemLoad, int elemFormat)
Definition: fei_LinSysCoreFilter.cpp:1012
LinSysCoreFilter::resetMatrix
virtual int resetMatrix(double s)
Definition: fei_LinSysCoreFilter.cpp:856
LinSysCoreFilter::deleteMultCRs
virtual int deleteMultCRs()
Definition: fei_LinSysCoreFilter.cpp:821
SNL_FEI_Structure
Definition: SNL_FEI_Structure.hpp:43
LinSysCoreFilter::blockMatrix_
bool blockMatrix_
Definition: fei_LinSysCoreFilter.hpp:409
LinSysCoreFilter::masterRank_
int masterRank_
Definition: fei_LinSysCoreFilter.hpp:423
LinSysCoreFilter::numLocalReducedEqnBlks_
int numLocalReducedEqnBlks_
Definition: fei_LinSysCoreFilter.hpp:413
LinSysCoreFilter::eqnCommMgr_
EqnCommMgr * eqnCommMgr_
Definition: fei_LinSysCoreFilter.hpp:440
LinSysCoreFilter::getBlockElemSolution
virtual int getBlockElemSolution(GlobalID elemBlockID, int numElems, const GlobalID *elemIDs, int &numElemDOFPerElement, double *results)
Definition: fei_LinSysCoreFilter.cpp:3365
Filter
Definition: fei_Filter.hpp:27
LinSysCoreFilter::reducedRHSCounter_
int reducedRHSCounter_
Definition: fei_LinSysCoreFilter.hpp:434
LinSysCoreFilter::storeNodalSendIndex
void storeNodalSendIndex(const NodeDescriptor &node, int fieldID, int col)
LinSysCoreFilter::getEqnSolnEntry
int getEqnSolnEntry(int eqnNumber, double &solnValue)
Definition: fei_LinSysCoreFilter.cpp:2782
LinSysCoreFilter::residualNorm
virtual int residualNorm(int whichNorm, int numFields, int *fieldIDs, double *norms, double &residTime)
Definition: fei_LinSysCoreFilter.cpp:2029
LinSysCoreFilter::numLocalEqns_
int numLocalEqns_
Definition: fei_LinSysCoreFilter.hpp:405
EqnBuffer
Definition: fei_EqnBuffer.hpp:21
LinSysCoreFilter::storeNodalRowCoefs
int storeNodalRowCoefs(const NodeDescriptor &node, int fieldID, int fieldSize, double *coefs, int eqn)
Definition: fei_LinSysCoreFilter.cpp:613
LinSysCoreFilter::getCRMultipliers
virtual int getCRMultipliers(int numCRs, const int *CRIDs, double *multipliers)
Definition: fei_LinSysCoreFilter.cpp:3454
LinSysCoreFilter::numReducedRows_
int numReducedRows_
Definition: fei_LinSysCoreFilter.hpp:406
FEI_Implementation
Definition: FEI_Implementation.hpp:50
LinSysCoreFilter::fd_
fei::CSVec fd_
Definition: fei_LinSysCoreFilter.hpp:433
LinSysCoreFilter::rSlave_
std::vector< int > rSlave_
Definition: fei_LinSysCoreFilter.hpp:435
LinSysCoreFilter::putNodalFieldSolution
virtual int putNodalFieldSolution(int fieldID, int numNodes, const GlobalID *nodeIDs, const double *nodeData)
Definition: fei_LinSysCoreFilter.cpp:3544
LinSysCoreFilter::getNodalSolution
virtual int getNodalSolution(int numNodes, const GlobalID *nodeIDs, int *offsets, double *results)
Definition: fei_LinSysCoreFilter.cpp:3016
LinSysCoreFilter::setNumRHSVectors
virtual int setNumRHSVectors(int numRHSs, int *rhsIDs)
Definition: fei_LinSysCoreFilter.cpp:2092
LinSysCoreFilter::giveToMatrix
int giveToMatrix(int numPtRows, const int *ptRows, int numPtCols, const int *ptCols, const double *const *values, int mode)
Definition: fei_LinSysCoreFilter.cpp:2223
LinSysCoreFilter::iterations_
int iterations_
Definition: fei_LinSysCoreFilter.hpp:415
LinSysCoreFilter::internalFei_
int internalFei_
Definition: fei_LinSysCoreFilter.hpp:393
LinSysCoreFilter::firstLocalNodeNumber_
int firstLocalNodeNumber_
Definition: fei_LinSysCoreFilter.hpp:407
LinSysCoreFilter::storeNodalSendIndices
void storeNodalSendIndices(const NodeDescriptor &iNode, int iField, const NodeDescriptor &jNode, int jField)
LinSysCoreFilter::getReducedSolnEntry
int getReducedSolnEntry(int eqnNumber, double &solnValue)
Definition: fei_LinSysCoreFilter.cpp:2874
LinSysCoreFilter::resetTheMatrix
int resetTheMatrix(double s)
Definition: fei_LinSysCoreFilter.cpp:840
LinSysCoreFilter::csrKdd
fei::CSRMat csrKdd
Definition: fei_LinSysCoreFilter.hpp:432
LinSysCoreFilter::loadComplete
virtual int loadComplete()
Definition: fei_LinSysCoreFilter.cpp:1985
LinSysCoreFilter::putNodalFieldData
virtual int putNodalFieldData(int fieldID, int numNodes, const GlobalID *nodeIDs, const double *nodeData)
Definition: fei_LinSysCoreFilter.cpp:3505
LinSysCoreFilter::dworkSpace_
std::vector< double > dworkSpace_
Definition: fei_LinSysCoreFilter.hpp:448
LinSysCoreFilter::getRemoteSharedEqns
int getRemoteSharedEqns(int numPtRows, const int *ptRows, ProcEqns &remoteProcEqns)
LinSysCoreFilter::timesInitializeCalled_
int timesInitializeCalled_
Definition: fei_LinSysCoreFilter.hpp:388
ProcEqns
Definition: fei_ProcEqns.hpp:27
LinSysCoreFilter::putCRMultipliers
virtual int putCRMultipliers(int numMultCRs, const int *CRIDs, const double *multEstimates)
Definition: fei_LinSysCoreFilter.cpp:3486
LinSysCoreFilter::firstRemEqnExchange_
bool firstRemEqnExchange_
Definition: fei_LinSysCoreFilter.hpp:400
LinSysCoreFilter::~LinSysCoreFilter
virtual ~LinSysCoreFilter()
Definition: fei_LinSysCoreFilter.cpp:141
LinSysCoreFilter::putBlockFieldNodeSolution
virtual int putBlockFieldNodeSolution(GlobalID elemBlockID, int fieldID, int numNodes, const GlobalID *nodeIDs, const double *estimates)
Definition: fei_LinSysCoreFilter.cpp:3289
fei::DirichletBCManager
Definition: fei_DirichletBCManager.hpp:25
GlobalID
int GlobalID
Definition: fei_defs.h:60
LinSysCoreFilter::rowIndices_
std::vector< int > rowIndices_
Definition: fei_LinSysCoreFilter.hpp:428
LinSysCoreFilter::reducedStartRow_
int reducedStartRow_
Definition: fei_LinSysCoreFilter.hpp:406
LinSysCoreFilter::Kdd_
fei::FillableMat * Kdd_
Definition: fei_LinSysCoreFilter.hpp:431
LinSysCoreFilter::resetTheRHSVector
int resetTheRHSVector(double s)
Definition: fei_LinSysCoreFilter.cpp:848
LinSysCoreFilter::setEqnCommMgr
void setEqnCommMgr(EqnCommMgr *eqnCommMgr)
Definition: fei_LinSysCoreFilter.cpp:2931
LinSysCoreFilter::nodeIDType_
int nodeIDType_
Definition: fei_LinSysCoreFilter.hpp:437
LinSysCoreFilter::rhsIDs_
std::vector< int > rhsIDs_
Definition: fei_LinSysCoreFilter.hpp:418
NodeDescriptor
Definition: fei_NodeDescriptor.hpp:36
LinSysCoreFilter::newVectorData_
bool newVectorData_
Definition: fei_LinSysCoreFilter.hpp:396
fei
Definition: fei_ArrayUtils.hpp:16
LinSysCoreFilter::getFromRHS
int getFromRHS(int num, double *values, const int *indices)
Definition: fei_LinSysCoreFilter.cpp:2709
LinSysCoreFilter::tmpMat2_
fei::CSRMat tmpMat2_
Definition: fei_LinSysCoreFilter.hpp:432
LinSysCoreFilter::storePenNodeData
int storePenNodeData(const NodeDescriptor &iNode, int iField, int iFieldSize, double *iCoefs, const NodeDescriptor &jNode, int jField, int jFieldSize, double *jCoefs, double penValue, double CRValue)
Definition: fei_LinSysCoreFilter.cpp:735
LinSysCoreFilter::localReducedBlkOffset_
int localReducedBlkOffset_
Definition: fei_LinSysCoreFilter.hpp:413
LinSysCoreFilter::giveToLocalReducedMatrix
int giveToLocalReducedMatrix(int numPtRows, const int *ptRows, int numPtCols, const int *ptCols, const double *const *values, int mode)
Definition: fei_LinSysCoreFilter.cpp:2362
LinSysCoreFilter::exchangeRemoteBCs
virtual int exchangeRemoteBCs(std::vector< int > &essEqns, std::vector< double > &essAlpha, std::vector< double > &essGamma)
Definition: fei_LinSysCoreFilter.cpp:1571
LinSysCoreFilter::loadFEDataMultCR
int loadFEDataMultCR(int CRID, int numCRNodes, const GlobalID *CRNodes, const int *CRFields, const double *CRWeights, double CRValue)
LinSysCoreFilter::matrixAllocated_
bool matrixAllocated_
Definition: fei_LinSysCoreFilter.hpp:426
LinSysCoreFilter::bcManager_
fei::DirichletBCManager * bcManager_
Definition: fei_LinSysCoreFilter.hpp:438
LinSysCoreFilter::comm_
MPI_Comm comm_
Definition: fei_LinSysCoreFilter.hpp:422
LinSysCoreFilter::giveToRHS
int giveToRHS(int num, const double *values, const int *indices, int mode)
Definition: fei_LinSysCoreFilter.cpp:2626
fei_defs.h
LinSysCoreFilter::localStartRow_
int localStartRow_
Definition: fei_LinSysCoreFilter.hpp:405
LinSysCoreFilter::exchangeRemoteEquations
virtual int exchangeRemoteEquations()
Definition: fei_LinSysCoreFilter.cpp:1455
MPI_Comm
#define MPI_Comm
Definition: fei_mpi.h:56
LinSysCoreFilter::formResidual
int formResidual(double *residValues, int numLocalEqns)
Definition: fei_LinSysCoreFilter.cpp:2057
LinSysCoreFilter::getEqnsFromMatrix
int getEqnsFromMatrix(ProcEqns &procEqns, EqnBuffer &eqnData)
Definition: fei_LinSysCoreFilter.cpp:2550
LinSysCoreFilter::reducedEndRow_
int reducedEndRow_
Definition: fei_LinSysCoreFilter.hpp:406
LinSysCoreFilter::getBlockNodeSolution
virtual int getBlockNodeSolution(GlobalID elemBlockID, int numNodes, const GlobalID *nodeIDs, int *offsets, double *results)
Definition: fei_LinSysCoreFilter.cpp:2938
LinSysCoreFilter::loadFEDataPenCR
int loadFEDataPenCR(int CRID, int numCRNodes, const GlobalID *CRNodes, const int *CRFields, const double *CRWeights, double CRValue, double penValue)
LinSysCoreFilter::assembleReducedEqns
int assembleReducedEqns()
Definition: fei_LinSysCoreFilter.cpp:3722
LinSysCoreFilter::needToCallMatrixLoadComplete_
bool needToCallMatrixLoadComplete_
Definition: fei_LinSysCoreFilter.hpp:401
LinSysCoreFilter::storePenNodeSendData
void storePenNodeSendData(const NodeDescriptor &iNode, int iField, int iFieldSize, double *iCoefs, const NodeDescriptor &jNode, int jField, int jFieldSize, double *jCoefs, double penValue, double CRValue)
Definition: fei_LinSysCoreFilter.cpp:680
LinSysCoreFilter::putIntoRHS
virtual int putIntoRHS(int IDType, int fieldID, int numIDs, const GlobalID *IDs, const double *rhsEntries)
Definition: fei_LinSysCoreFilter.cpp:1255
LinSysCoreFilter::giveToMatrix_symm_noSlaves
int giveToMatrix_symm_noSlaves(int numPtRows, const int *ptRowNumbers, const double *const *coefs, int mode)
Definition: fei_LinSysCoreFilter.cpp:2127
LinSysCoreFilter::resolveConflictingCRs
int resolveConflictingCRs(EqnBuffer &bcEqns)
Definition: fei_LinSysCoreFilter.cpp:1392
LinearSystemCore
Definition: fei_LinearSystemCore.hpp:124
LinSysCoreFilter::storeNodalColumnCoefs
int storeNodalColumnCoefs(int eqn, const NodeDescriptor &node, int fieldID, int fieldSize, double *coefs)
Definition: fei_LinSysCoreFilter.cpp:579
LinSysCoreFilter::localEndRow_
int localEndRow_
Definition: fei_LinSysCoreFilter.hpp:405
LinSysCoreFilter::setCurrentRHS
virtual int setCurrentRHS(int rhsID)
Definition: fei_LinSysCoreFilter.cpp:2111
LinSysCoreFilter::numLocalEqnBlks_
int numLocalEqnBlks_
Definition: fei_LinSysCoreFilter.hpp:412
LinSysCoreFilter::assembleReducedRHS
int assembleReducedRHS()
Definition: fei_LinSysCoreFilter.cpp:3802
fei::CSVec
Definition: fei_CSVec.hpp:24
LinSysCoreFilter::parameters
virtual int parameters(int numParams, const char *const *paramStrings)
Definition: fei_LinSysCoreFilter.cpp:1913
LinSysCoreFilter::outputLevel_
int outputLevel_
Definition: fei_LinSysCoreFilter.hpp:420
LinSysCoreFilter::sumIntoRHS
virtual int sumIntoRHS(int IDType, int fieldID, int numIDs, const GlobalID *IDs, const double *rhsEntries)
Definition: fei_LinSysCoreFilter.cpp:1281
LinSysCoreFilter::useLookup_
bool useLookup_
Definition: fei_LinSysCoreFilter.hpp:391
fei::CSRMat
Definition: fei_CSRMat.hpp:21
LinSysCoreFilter::enforceRemoteEssBCs
virtual int enforceRemoteEssBCs(int numEqns, const int *eqns, const int *const *colIndices, const int *colIndLens, const double *const *coefs)
Definition: fei_LinSysCoreFilter.cpp:1371
LinSysCoreFilter::giveToLocalReducedRHS
int giveToLocalReducedRHS(int num, const double *values, const int *indices, int mode)
Definition: fei_LinSysCoreFilter.cpp:2681
LinSysCoreFilter::connectivitiesInitialized_
bool connectivitiesInitialized_
Definition: fei_LinSysCoreFilter.hpp:399
LinSysCoreFilter::csrKdi
fei::CSRMat csrKdi
Definition: fei_LinSysCoreFilter.hpp:432
LinSysCoreFilter::currentRHS_
int currentRHS_
Definition: fei_LinSysCoreFilter.hpp:417
LinSysCoreFilter::unpackRemoteContributions
int unpackRemoteContributions(EqnCommMgr &eqnCommMgr, int assemblyMode)
Definition: fei_LinSysCoreFilter.cpp:1510
LinSysCoreFilter::loadCRPen
virtual int loadCRPen(int CRPenID, int numCRNodes, const GlobalID *CRNodes, const int *CRFields, const double *CRWeights, double CRValue, double penValue)
Definition: fei_LinSysCoreFilter.cpp:1796
LinSysCoreFilter::problemStructure_
SNL_FEI_Structure * problemStructure_
Definition: fei_LinSysCoreFilter.hpp:425
LinSysCoreFilter::debugOutput
void debugOutput(const char *mesg)
Definition: fei_LinSysCoreFilter.cpp:3820
LinSysCoreFilter::numGlobalEqns_
int numGlobalEqns_
Definition: fei_LinSysCoreFilter.hpp:405
LinSysCoreFilter::iterations
virtual int iterations() const
Definition: fei_LinSysCoreFilter.hpp:125