FEI Package Browser (Single Doxygen Collection)  Version of the Day
fei_Aztec_LinSysCore.hpp
Go to the documentation of this file.
1 /*
2 // @HEADER
3 // ************************************************************************
4 // FEI: Finite Element Interface to Linear Solvers
5 // Copyright (2005) Sandia Corporation.
6 //
7 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the
8 // U.S. Government retains certain rights in this software.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Alan Williams (william@sandia.gov)
38 //
39 // ************************************************************************
40 // @HEADER
41 */
42 
43 #ifndef _fei_Aztec_LinSysCore_hpp_
44 #define _fei_Aztec_LinSysCore_hpp_
45 
46 
47 #include <fei_macros.hpp>
48 #include <fei_defs.h>
49 #include <fei_Data.hpp>
50 #include <fei_LinearSystemCore.hpp>
51 #include <fei_SharedPtr.hpp>
52 
53 #include <string>
54 #include <map>
55 
56 #include <az_aztec.h>
57 #include <fei_AztecDMSR_Matrix.hpp>
58 
59 //
60 //This is the Aztec implementation of LinSysCore.
61 //
62 namespace fei_trilinos {
63 
64 class Aztec_Map;
65 class Aztec_BlockMap;
66 class Aztec_LSVector;
67 class AztecDMSR_Matrix;
68 class AztecDVBR_Matrix;
69 
71  public:
73  virtual ~Aztec_LinSysCore();
74 
75  //for creating another instance of LinearSystemCore without knowing
76  //the run-time type of 'this' one.
78 
79  //int parameters:
80  //for setting generic argc/argv style parameters.
81 
82  int parameters(int numParams, const char*const * params);
83 
84  int setLookup(Lookup& lookup);
85 
86  int setGlobalOffsets(int len, int* nodeOffsets, int* eqnOffsets,
87  int* blkEqnOffsets);
88 
89  int setConnectivities(GlobalID elemBlock,
90  int numElements,
91  int numNodesPerElem,
92  const GlobalID* elemIDs,
93  const int* const* connNodes) ;
94 
96  int,
97  const GlobalID*,
98  const double *const *const *,
99  int,
100  const int *const *)
101  { return(0); }
102 
104  int,
105  const GlobalID*,
106  const double *const *,
107  int,
108  const int *const *)
109  { return(0); }
110 
111  int setMatrixStructure(int** ptColIndices,
112  int* ptRowLengths,
113  int** blkColIndices,
114  int* blkRowLengths,
115  int* ptRowsPerBlkRow) ;
116 
117  int setMultCREqns(int,
118  int, int,
119  int**, int**,
120  int*,
121  int*)
122  { return(0); }
123 
124  int setPenCREqns(int,
125  int, int,
126  int**, int**,
127  int*)
128  { return(0); }
129 
130  //int resetMatrixAndVector:
131  //don't destroy the structure of the matrix, but set the value 's'
132  //throughout the matrix and vectors.
133 
134  int resetMatrixAndVector(double s);
135  int resetMatrix(double s);
136  int resetRHSVector(double s);
137 
138  //int sumIntoSystemMatrix:
139  //this is the primary assembly function. The coefficients 'values'
140  //are to be accumumlated into (added to any values already in place)
141  //global (0-based) equations in 'ptRows' of the matrix.
142 
143  int sumIntoSystemMatrix(int numPtRows, const int* ptRows,
144  int numPtCols, const int* ptCols,
145  int numBlkRows, const int* blkRows,
146  int numBlkCols, const int* blkCols,
147  const double* const* values);
148 
149  int sumIntoSystemMatrix(int numPtRows, const int* ptRows,
150  int numPtCols, const int* ptCols,
151  const double* const* values);
152  int putIntoSystemMatrix(int numPtRows, const int* ptRows,
153  int numPtCols, const int* ptCols,
154  const double* const* values);
155 
156  int getMatrixRowLength(int row, int& length);
157 
158  int getMatrixRow(int row, double* coefs, int* indices,
159  int len, int& rowLength);
160 
161  //int sumIntoRHSVector:
162  //this is the rhs vector equivalent to sumIntoSystemMatrix above.
163 
164  int sumIntoRHSVector(int num,
165  const double* values,
166  const int* indices);
167  int putIntoRHSVector(int num,
168  const double* values,
169  const int* indices);
170  int getFromRHSVector(int num,
171  double* values,
172  const int* indices);
173 
174  //int matrixLoadComplete:
175  //do any internal synchronization/communication.
176 
177  int matrixLoadComplete();
178 
179  //functions for enforcing boundary conditions.
180  int enforceEssentialBC(int* globalEqn,
181  double* alpha,
182  double* gamma, int len);
183 
184  int enforceBlkEssentialBC(int* blkEqn, int* blkOffset,
185  double* alpha, double* gamma,
186  int len);
187 
188  int enforceRemoteEssBCs(int numEqns, int* globalEqns,
189  int** colIndices, int* colIndLen,
190  double** coefs);
191 
192  int enforceBlkRemoteEssBCs(int numEqns, int* blkEqns,
193  int** blkColInds, int** blkColOffsets,
194  int* blkColLens, double** remEssBCCoefs);
195 
196  //functions for getting/setting matrix or vector pointers.
197 
198  //getMatrixPtr:
199  //obtain a pointer to the 'A' matrix. This should be considered a
200  //constant pointer -- i.e., this class remains responsible for the
201  //matrix (e.g., de-allocation upon destruction).
202  int getMatrixPtr(Data& data);
203 
204  //copyInMatrix:
205  //replaces the internal matrix with a copy of the input argument, scaled
206  //by the coefficient 'scalar'.
207 
208  int copyInMatrix(double scalar, const Data& data);
209 
210  //copyOutMatrix:
211  //passes out a copy of the internal matrix, scaled by the coefficient
212  //'scalar'.
213 
214  int copyOutMatrix(double scalar, Data& data);
215 
216  //sumInMatrix:
217  //accumulate (sum) a copy of the input argument into the internal
218  //matrix, scaling the input by the coefficient 'scalar'.
219 
220  int sumInMatrix(double scalar, const Data& data);
221 
222  //get/setRHSVectorPtr:
223  //the same semantics apply here as for the matrixPtr functions above.
224 
225  int getRHSVectorPtr(Data& data);
226 
227  //copyInRHSVector/copyOutRHSVector/sumInRHSVector:
228  //the same semantics apply here as for the matrix functions above.
229 
230  int copyInRHSVector(double scalar, const Data& data);
231  int copyOutRHSVector(double scalar, Data& data);
232  int sumInRHSVector(double scalar, const Data& data);
233 
234  //destroyMatrixData/destroyVectorData:
235  //Utility function for destroying the matrix (or vector) in Data
236 
237  int destroyMatrixData(Data& data);
238  int destroyVectorData(Data& data);
239 
240  //functions for managing multiple rhs vectors
241  int setNumRHSVectors(int numRHSs, const int* rhsIDs);
242 
243  //int setRHSID:
244  //set the 'current' rhs context, assuming multiple rhs vectors.
245  int setRHSID(int rhsID);
246 
247  //int putInitialGuess:
248  //function for setting (a subset of) the initial-guess
249  //solution values (i.e., in the 'x' vector).
250 
251  int putInitialGuess(const int* eqnNumbers, const double* values,
252  int len);
253 
254  //function for getting all of the answers ('x' vector).
255  int getSolution(double* answers, int len);
256 
257  //function for getting the (single) entry at equation
258  //number 'eqnNumber'.
259  int getSolnEntry(int eqnNumber, double& answer);
260 
261  //function for obtaining the residual vector (using current solution or
262  //initial guess)
263  int formResidual(double* values, int len);
264 
265  //function for launching the linear solver
266  int launchSolver(int& solveStatus, int& iterations);
267 
268  int putNodalFieldData(int, int, int*, int, const double*)
269  { return(0); }
270 
271  int writeSystem(const char* name);
272 
273  double* getMatrixBeginPointer() { return A_ptr_->getBeginPointer(); }
274 
275  int getMatrixOffset(int row, int col) { return A_ptr_->getOffset(row,col); }
276 
277  private: //functions
278 
279  int createMiscStuff();
280 
281  int allocateMatrix(int** ptColIndices, int* ptRowLengths,
282  int** blkColIndices, int* blkRowLengths,
283  int* ptRowsPerBlkRow);
284 
285  int VBRmatPlusScaledMat(AztecDVBR_Matrix* A, double scalar,
286  AztecDVBR_Matrix* source);
287 
288  int MSRmatPlusScaledMat(AztecDMSR_Matrix* A, double scalar,
289  AztecDMSR_Matrix* source);
290 
291  int createBlockMatrix(int** blkColIndices,
292  int* blkRowLengths,
293  int* ptRowsPerBlkRow);
294 
295  int sumIntoBlockRow(int numBlkRows, const int* blkRows,
296  int numBlkCols, const int* blkCols,
297  const double* const* values,
298  int numPtCols,
299  bool overwriteInsteadOfAccumulate);
300 
301  int copyBlockRow(int i, const int* blkRows,
302  int numBlkCols, const int* blkCols,
303  const double* const* values,
304  double* coefs);
305 
306  int modifyRHSforBCs();
307 
309 
310  int blockRowToPointRow(int blkRow);
311 
312  int getBlockRow(int blkRow, double*& val, int& valLen,
313  int*& blkColInds, int& blkColIndLen,
314  int& numNzBlks, int& numNNZ);
315 
316  int getBlkEqnsAndOffsets(int* ptEqns, int* blkEqns, int* blkOffsets,
317  int numEqns);
318 
319  int getBlockSize(int blkInd);
320 
321  int sumIntoPointRow(int numPtRows, const int* ptRows,
322  int numPtCols, const int* ptColIndices,
323  const double* const* values,
324  bool overwriteInsteadOfAccumulate);
325 
326  int sumPointIntoBlockRow(int blkRow, int rowOffset,
327  int blkCol, int colOffset, double value);
328 
329  int setMatrixType(const char* name);
330  int selectSolver(const char* name);
331  int selectPreconditioner(const char* name);
332  void setSubdomainSolve(const char* name);
333  void setScalingOption(const char* param);
334  void setConvTest(const char* param);
335  void setPreCalc(const char* param);
336  void setTypeOverlap(const char* param);
337  void setOverlap(const char* param);
338  void setOrthog(const char* param);
339  void setAuxVec(const char* param);
340  void setAZ_output(const char* param);
341 
342  void recordUserParams();
343 
344  void checkForParam(const char* paramName, int numParams_,
345  char** paramStrings,
346  double& param);
347 
348  void recordUserOptions();
349 
350  void checkForOption(const char* paramName, int numParams_,
351  char** paramStrings,
352  int& param);
353 
354  int blkRowEssBCMod(int blkEqn, int blkOffset, double* val, int* blkCols,
355  int numCols, int numPtNNZ, double alpha, double gamma);
356 
357  int blkColEssBCMod(int blkRow, int blkEqn, int blkOffset, double* val,
358  int* blkCols,
359  int numCols, int numPtNNZ, double alpha, double gamma);
360 
361  void setDebugOutput(const char* path, const char* name);
362 
363  void debugOutput(const char* msg) const;
364 
365  int writeA(const char* name);
366  int writeVec(Aztec_LSVector* v, const char* name);
367 
368  int messageAbort(const char* msg) const;
369 
370  private: //variables
371 
373 
376 
380 
381  int* update_;
383  AztecDMSR_Matrix *A_;
384  AztecDMSR_Matrix *A_ptr_;
398 
405 
406  AZ_MATRIX *azA_;
407  AZ_PRECOND *azP_;
409  AZ_SCALING *azS_;
411 
413  double *aztec_params_;
414  double *aztec_status_;
415 
416  double* tmp_x_;
418  double** tmp_b_;
419  double* tmp_bc_;
421 
422  bool ML_Vanek_;
424 
425  int* rhsIDs_;
426  int numRHSs_;
427 
429 
433 
438 
440 
444 
445  std::string name_;
448  char* debugPath_;
450  FILE* debugFile_;
451 
452  std::map<std::string,unsigned>& named_solve_counter_;
453 };
454 
455 }//namespace fei_trilinos
456 
457 #endif
458 
fei_trilinos::Aztec_LinSysCore::lookup_
Lookup * lookup_
Definition: fei_Aztec_LinSysCore.hpp:374
fei_trilinos::Aztec_LinSysCore::numRHSs_
int numRHSs_
Definition: fei_Aztec_LinSysCore.hpp:426
fei_trilinos::Aztec_LinSysCore::b_ptr_
Aztec_LSVector * b_ptr_
Definition: fei_Aztec_LinSysCore.hpp:391
fei_trilinos::Aztec_LinSysCore::parameters
int parameters(int numParams, const char *const *params)
fei_trilinos::Aztec_LinSysCore::checkForParam
void checkForParam(const char *paramName, int numParams_, char **paramStrings, double &param)
fei_trilinos::Aztec_LinSysCore::setDebugOutput
void setDebugOutput(const char *path, const char *name)
fei_trilinos::Aztec_LinSysCore::tooLateToChooseBlock_
bool tooLateToChooseBlock_
Definition: fei_Aztec_LinSysCore.hpp:399
fei_trilinos::Aztec_LinSysCore::destroyMatrixData
int destroyMatrixData(Data &data)
fei_trilinos::Aztec_LinSysCore::setConvTest
void setConvTest(const char *param)
fei_trilinos::Aztec_LinSysCore::setOrthog
void setOrthog(const char *param)
fei_trilinos::Aztec_LinSysCore::tmp_x_touched_
bool tmp_x_touched_
Definition: fei_Aztec_LinSysCore.hpp:417
fei_trilinos::Aztec_LinSysCore::tmp_bc_
double * tmp_bc_
Definition: fei_Aztec_LinSysCore.hpp:419
fei_trilinos::Aztec_LinSysCore::precondCreated_
bool precondCreated_
Definition: fei_Aztec_LinSysCore.hpp:408
fei_trilinos::Aztec_LinSysCore::haveLookup_
bool haveLookup_
Definition: fei_Aztec_LinSysCore.hpp:375
fei_trilinos::Aztec_LinSysCore::resetRHSVector
int resetRHSVector(double s)
fei_trilinos::Aztec_LinSysCore::messageAbort
int messageAbort(const char *msg) const
fei_trilinos::Aztec_LinSysCore::thisProc_
int thisProc_
Definition: fei_Aztec_LinSysCore.hpp:378
fei_trilinos::Aztec_LinSysCore::update_
int * update_
Definition: fei_Aztec_LinSysCore.hpp:381
fei_trilinos::Aztec_LinSysCore::aztec_status_
double * aztec_status_
Definition: fei_Aztec_LinSysCore.hpp:414
fei_trilinos::Aztec_LinSysCore::numProcs_
int numProcs_
Definition: fei_Aztec_LinSysCore.hpp:377
fei_trilinos::Aztec_LinSysCore::localBlkOffset_
int localBlkOffset_
Definition: fei_Aztec_LinSysCore.hpp:435
fei_trilinos::Aztec_LinSysCore::putNodalFieldData
int putNodalFieldData(int, int, int *, int, const double *)
Definition: fei_Aztec_LinSysCore.hpp:268
fei_trilinos::Aztec_LinSysCore::getBlockSize
int getBlockSize(int blkInd)
fei_LinearSystemCore.hpp
fei_trilinos::Aztec_LinSysCore::A_
AztecDMSR_Matrix * A_
Definition: fei_Aztec_LinSysCore.hpp:383
fei_trilinos::Aztec_LinSysCore::Aztec_LinSysCore
Aztec_LinSysCore(MPI_Comm comm)
fei_trilinos::Aztec_LinSysCore::rhsIDs_
int * rhsIDs_
Definition: fei_Aztec_LinSysCore.hpp:425
fei_trilinos
Definition: fei_Aztec_BlockMap.hpp:59
fei_trilinos::Aztec_LinSysCore::writeSystem
int writeSystem(const char *name)
fei_trilinos::AztecDVBR_Matrix
Definition: fei_AztecDVBR_Matrix.hpp:58
fei_Data.hpp
fei_trilinos::Aztec_LinSysCore::enforceBlkEssentialBC
int enforceBlkEssentialBC(int *blkEqn, int *blkOffset, double *alpha, double *gamma, int len)
fei_trilinos::Aztec_LinSysCore::setLoadVectors
int setLoadVectors(GlobalID, int, const GlobalID *, const double *const *, int, const int *const *)
Definition: fei_Aztec_LinSysCore.hpp:103
fei_trilinos::Aztec_LinSysCore::setGlobalOffsets
int setGlobalOffsets(int len, int *nodeOffsets, int *eqnOffsets, int *blkEqnOffsets)
fei_trilinos::Aztec_LinSysCore::createBlockMatrix
int createBlockMatrix(int **blkColIndices, int *blkRowLengths, int *ptRowsPerBlkRow)
fei_trilinos::Aztec_LinSysCore::blkUpdate_
int * blkUpdate_
Definition: fei_Aztec_LinSysCore.hpp:404
fei::SharedPtr
Definition: fei_SharedPtr.hpp:65
fei_trilinos::Aztec_LinSysCore::destroyVectorData
int destroyVectorData(Data &data)
fei_trilinos::Aztec_LinSysCore::MSRmatPlusScaledMat
int MSRmatPlusScaledMat(AztecDMSR_Matrix *A, double scalar, AztecDMSR_Matrix *source)
fei_trilinos::Aztec_LinSysCore::~Aztec_LinSysCore
virtual ~Aztec_LinSysCore()
fei_trilinos::Aztec_LinSysCore::vectorsAllocated_
bool vectorsAllocated_
Definition: fei_Aztec_LinSysCore.hpp:393
fei_trilinos::Aztec_LinSysCore::setSubdomainSolve
void setSubdomainSolve(const char *name)
fei_trilinos::Aztec_LinSysCore::essBCindices_
int * essBCindices_
Definition: fei_Aztec_LinSysCore.hpp:386
fei_trilinos::Aztec_LinSysCore::localOffset_
int localOffset_
Definition: fei_Aztec_LinSysCore.hpp:431
fei_trilinos::Aztec_LinSysCore::numGlobalEqnBlks_
int numGlobalEqnBlks_
Definition: fei_Aztec_LinSysCore.hpp:434
fei_macros.hpp
fei_trilinos::Aztec_LinSysCore::masterProc_
int masterProc_
Definition: fei_Aztec_LinSysCore.hpp:379
fei_trilinos::Aztec_LinSysCore::explicitDirichletBCs_
bool explicitDirichletBCs_
Definition: fei_Aztec_LinSysCore.hpp:389
fei_trilinos::Aztec_LinSysCore::setStiffnessMatrices
int setStiffnessMatrices(GlobalID, int, const GlobalID *, const double *const *const *, int, const int *const *)
Definition: fei_Aztec_LinSysCore.hpp:95
fei_trilinos::Aztec_LinSysCore::setMatrixType
int setMatrixType(const char *name)
fei_SharedPtr.hpp
fei_trilinos::Aztec_LinSysCore
Definition: fei_Aztec_LinSysCore.hpp:70
fei_trilinos::Aztec_LinSysCore::numParams_
int numParams_
Definition: fei_Aztec_LinSysCore.hpp:442
fei_trilinos::Aztec_LinSysCore::putInitialGuess
int putInitialGuess(const int *eqnNumbers, const double *values, int len)
fei_trilinos::Aztec_LinSysCore::resetMatrixAndVector
int resetMatrixAndVector(double s)
fei_trilinos::Aztec_LinSysCore::needNewPreconditioner_
bool needNewPreconditioner_
Definition: fei_Aztec_LinSysCore.hpp:397
Data
Definition: fei_Data.hpp:18
fei_trilinos::Aztec_LinSysCore::scalingCreated_
bool scalingCreated_
Definition: fei_Aztec_LinSysCore.hpp:410
fei_trilinos::Aztec_LinSysCore::enforceRemoteEssBCs
int enforceRemoteEssBCs(int numEqns, int *globalEqns, int **colIndices, int *colIndLen, double **coefs)
fei_trilinos::Aztec_LinSysCore::setNumRHSVectors
int setNumRHSVectors(int numRHSs, const int *rhsIDs)
fei_trilinos::Aztec_LinSysCore::putIntoSystemMatrix
int putIntoSystemMatrix(int numPtRows, const int *ptRows, int numPtCols, const int *ptCols, const double *const *values)
fei_trilinos::Aztec_LinSysCore::setOverlap
void setOverlap(const char *param)
fei_trilinos::Aztec_LinSysCore::blkA_
AztecDVBR_Matrix * blkA_
Definition: fei_Aztec_LinSysCore.hpp:402
fei_trilinos::Aztec_LinSysCore::checkForOption
void checkForOption(const char *paramName, int numParams_, char **paramStrings, int &param)
fei_trilinos::Aztec_LinSysCore::getMatrixPtr
int getMatrixPtr(Data &data)
fei_trilinos::Aztec_LinSysCore::setTypeOverlap
void setTypeOverlap(const char *param)
fei_trilinos::Aztec_LinSysCore::debugPath_
char * debugPath_
Definition: fei_Aztec_LinSysCore.hpp:448
fei_trilinos::Aztec_LinSysCore::numLevels_
int numLevels_
Definition: fei_Aztec_LinSysCore.hpp:423
fei_trilinos::Aztec_LinSysCore::setScalingOption
void setScalingOption(const char *param)
fei_trilinos::Aztec_LinSysCore::copyInRHSVector
int copyInRHSVector(double scalar, const Data &data)
fei_trilinos::Aztec_LinSysCore::paramStrings_
char ** paramStrings_
Definition: fei_Aztec_LinSysCore.hpp:443
fei_trilinos::Aztec_LinSysCore::matrixAllocated_
bool matrixAllocated_
Definition: fei_Aztec_LinSysCore.hpp:392
fei_trilinos::Aztec_LinSysCore::enforceEssentialBC
int enforceEssentialBC(int *globalEqn, double *alpha, double *gamma, int len)
fei_trilinos::Aztec_LinSysCore::setPreCalc
void setPreCalc(const char *param)
fei_trilinos::Aztec_LinSysCore::copyBlockRow
int copyBlockRow(int i, const int *blkRows, int numBlkCols, const int *blkCols, const double *const *values, double *coefs)
fei_trilinos::Aztec_LinSysCore::getMatrixRowLength
int getMatrixRowLength(int row, int &length)
fei_trilinos::Aztec_LinSysCore::debugFile_
FILE * debugFile_
Definition: fei_Aztec_LinSysCore.hpp:450
fei_trilinos::Aztec_LinSysCore::setMatrixStructure
int setMatrixStructure(int **ptColIndices, int *ptRowLengths, int **blkColIndices, int *blkRowLengths, int *ptRowsPerBlkRow)
fei_trilinos::Aztec_LinSysCore::matrixLoaded_
bool matrixLoaded_
Definition: fei_Aztec_LinSysCore.hpp:395
fei_trilinos::Aztec_LinSysCore::sumIntoSystemMatrix
int sumIntoSystemMatrix(int numPtRows, const int *ptRows, int numPtCols, const int *ptCols, int numBlkRows, const int *blkRows, int numBlkCols, const int *blkCols, const double *const *values)
fei_trilinos::Aztec_LinSysCore::bcsLoaded_
bool bcsLoaded_
Definition: fei_Aztec_LinSysCore.hpp:388
fei_trilinos::Aztec_LinSysCore::modifyRHSforBCs
int modifyRHSforBCs()
fei_trilinos::Aztec_LinSysCore::numLocalEqns_
int numLocalEqns_
Definition: fei_Aztec_LinSysCore.hpp:432
fei_trilinos::Aztec_LinSysCore::tmp_b_
double ** tmp_b_
Definition: fei_Aztec_LinSysCore.hpp:418
fei_trilinos::Aztec_LinSysCore::setAZ_output
void setAZ_output(const char *param)
fei_trilinos::Aztec_LinSysCore::copyInMatrix
int copyInMatrix(double scalar, const Data &data)
fei_trilinos::Aztec_LinSysCore::getMatrixOffset
int getMatrixOffset(int row, int col)
Definition: fei_Aztec_LinSysCore.hpp:275
fei_trilinos::Aztec_LinSysCore::createMiscStuff
int createMiscStuff()
fei_trilinos::Aztec_LinSysCore::numEssBCs_
int numEssBCs_
Definition: fei_Aztec_LinSysCore.hpp:387
fei_trilinos::Aztec_LinSysCore::tmp_b_allocated_
bool tmp_b_allocated_
Definition: fei_Aztec_LinSysCore.hpp:420
fei_trilinos::Aztec_LinSysCore::getMatrixBeginPointer
double * getMatrixBeginPointer()
Definition: fei_Aztec_LinSysCore.hpp:273
fei_trilinos::Aztec_LinSysCore::setMultCREqns
int setMultCREqns(int, int, int, int **, int **, int *, int *)
Definition: fei_Aztec_LinSysCore.hpp:117
fei_trilinos::Aztec_LinSysCore::formResidual
int formResidual(double *values, int len)
fei_trilinos::Aztec_LinSysCore::writeVec
int writeVec(Aztec_LSVector *v, const char *name)
fei_trilinos::Aztec_LinSysCore::sumIntoPointRow
int sumIntoPointRow(int numPtRows, const int *ptRows, int numPtCols, const int *ptColIndices, const double *const *values, bool overwriteInsteadOfAccumulate)
fei_trilinos::Aztec_LinSysCore::setConnectivities
int setConnectivities(GlobalID elemBlock, int numElements, int numNodesPerElem, const GlobalID *elemIDs, const int *const *connNodes)
fei_trilinos::Aztec_LinSysCore::numGlobalEqns_
int numGlobalEqns_
Definition: fei_Aztec_LinSysCore.hpp:430
fei_trilinos::Aztec_LinSysCore::getMatrixRow
int getMatrixRow(int row, double *coefs, int *indices, int len, int &rowLength)
fei_trilinos::Aztec_LinSysCore::getSolution
int getSolution(double *answers, int len)
fei_trilinos::Aztec_LinSysCore::tmp_x_
double * tmp_x_
Definition: fei_Aztec_LinSysCore.hpp:416
fei_trilinos::Aztec_LinSysCore::blkA_ptr_
AztecDVBR_Matrix * blkA_ptr_
Definition: fei_Aztec_LinSysCore.hpp:403
fei_trilinos::Aztec_LinSysCore::debugFileName_
char * debugFileName_
Definition: fei_Aztec_LinSysCore.hpp:449
fei_trilinos::Aztec_LinSysCore::b_
Aztec_LSVector ** b_
Definition: fei_Aztec_LinSysCore.hpp:385
fei_trilinos::Aztec_LinSysCore::map_
fei::SharedPtr< Aztec_Map > map_
Definition: fei_Aztec_LinSysCore.hpp:382
fei_trilinos::Aztec_LinSysCore::copyOutMatrix
int copyOutMatrix(double scalar, Data &data)
fei_trilinos::Aztec_LinSysCore::getFromRHSVector
int getFromRHSVector(int num, double *values, const int *indices)
GlobalID
int GlobalID
Definition: fei_defs.h:60
fei_trilinos::Aztec_LinSysCore::copyOutRHSVector
int copyOutRHSVector(double scalar, Data &data)
fei_trilinos::Aztec_LinSysCore::numLocalEqnBlks_
int numLocalEqnBlks_
Definition: fei_Aztec_LinSysCore.hpp:436
fei_AztecDMSR_Matrix.hpp
fei_trilinos::Aztec_LinSysCore::selectPreconditioner
int selectPreconditioner(const char *name)
fei_trilinos::Aztec_LinSysCore::blockMatrix_
bool blockMatrix_
Definition: fei_Aztec_LinSysCore.hpp:400
fei_trilinos::Aztec_LinSysCore::BCenforcement_no_column_mod_
bool BCenforcement_no_column_mod_
Definition: fei_Aztec_LinSysCore.hpp:390
fei_trilinos::Aztec_LinSysCore::name_
std::string name_
Definition: fei_Aztec_LinSysCore.hpp:445
fei_trilinos::Aztec_LinSysCore::setRHSID
int setRHSID(int rhsID)
fei_trilinos::Aztec_LinSysCore::writeA
int writeA(const char *name)
fei_trilinos::Aztec_LinSysCore::blkRowEssBCMod
int blkRowEssBCMod(int blkEqn, int blkOffset, double *val, int *blkCols, int numCols, int numPtNNZ, double alpha, double gamma)
fei_trilinos::Aztec_LinSysCore::currentRHS_
int currentRHS_
Definition: fei_Aztec_LinSysCore.hpp:428
fei_trilinos::Aztec_LinSysCore::blkMatrixAllocated_
bool blkMatrixAllocated_
Definition: fei_Aztec_LinSysCore.hpp:394
fei_trilinos::Aztec_LinSysCore::blkColEssBCMod
int blkColEssBCMod(int blkRow, int blkEqn, int blkOffset, double *val, int *blkCols, int numCols, int numPtNNZ, double alpha, double gamma)
fei_trilinos::Aztec_LinSysCore::VBRmatPlusScaledMat
int VBRmatPlusScaledMat(AztecDVBR_Matrix *A, double scalar, AztecDVBR_Matrix *source)
fei_trilinos::Aztec_LinSysCore::sumPointIntoBlockRow
int sumPointIntoBlockRow(int blkRow, int rowOffset, int blkCol, int colOffset, double value)
fei_trilinos::Aztec_LinSysCore::localBlockSizes_
int * localBlockSizes_
Definition: fei_Aztec_LinSysCore.hpp:437
fei_trilinos::Aztec_LinSysCore::setLookup
int setLookup(Lookup &lookup)
fei_trilinos::Aztec_LinSysCore::resetMatrix
int resetMatrix(double s)
fei_trilinos::Aztec_LinSysCore::recordUserOptions
void recordUserOptions()
fei_trilinos::Aztec_LinSysCore::launchSolver
int launchSolver(int &solveStatus, int &iterations)
A
fei_trilinos::Aztec_LinSysCore::blkMap_
fei::SharedPtr< Aztec_BlockMap > blkMap_
Definition: fei_Aztec_LinSysCore.hpp:401
fei_trilinos::Aztec_LinSysCore::named_solve_counter_
std::map< std::string, unsigned > & named_solve_counter_
Definition: fei_Aztec_LinSysCore.hpp:452
fei_defs.h
fei_trilinos::Aztec_LinSysCore::sumInMatrix
int sumInMatrix(double scalar, const Data &data)
fei_trilinos::Aztec_LinSysCore::getBlkEqnsAndOffsets
int getBlkEqnsAndOffsets(int *ptEqns, int *blkEqns, int *blkOffsets, int numEqns)
fei_trilinos::Aztec_LinSysCore::sumInRHSVector
int sumInRHSVector(double scalar, const Data &data)
fei_trilinos::Aztec_LinSysCore::debugFileCounter_
int debugFileCounter_
Definition: fei_Aztec_LinSysCore.hpp:447
fei_trilinos::Aztec_LinSysCore::bc_
Aztec_LSVector * bc_
Definition: fei_Aztec_LinSysCore.hpp:385
fei_trilinos::Aztec_LinSysCore::getBlockRow
int getBlockRow(int blkRow, double *&val, int &valLen, int *&blkColInds, int &blkColIndLen, int &numNzBlks, int &numNNZ)
MPI_Comm
#define MPI_Comm
Definition: fei_mpi.h:56
fei_trilinos::Aztec_LinSysCore::outputLevel_
int outputLevel_
Definition: fei_Aztec_LinSysCore.hpp:441
fei_trilinos::Aztec_LinSysCore::enforceBlkRemoteEssBCs
int enforceBlkRemoteEssBCs(int numEqns, int *blkEqns, int **blkColInds, int **blkColOffsets, int *blkColLens, double **remEssBCCoefs)
fei_trilinos::Aztec_LinSysCore::sumIntoRHSVector
int sumIntoRHSVector(int num, const double *values, const int *indices)
fei_trilinos::Aztec_LinSysCore::numNonzeroBlocks_
int numNonzeroBlocks_
Definition: fei_Aztec_LinSysCore.hpp:439
fei_trilinos::Aztec_LinSysCore::aztec_options_
int * aztec_options_
Definition: fei_Aztec_LinSysCore.hpp:412
fei_trilinos::Aztec_LinSysCore::debugOutput
void debugOutput(const char *msg) const
fei_trilinos::Aztec_LinSysCore::getRHSVectorPtr
int getRHSVectorPtr(Data &data)
fei_trilinos::Aztec_LinSysCore::clone
LinearSystemCore * clone()
fei_trilinos::Aztec_LinSysCore::ML_Vanek_
bool ML_Vanek_
Definition: fei_Aztec_LinSysCore.hpp:422
LinearSystemCore
Definition: fei_LinearSystemCore.hpp:124
fei_trilinos::Aztec_LinSysCore::setPenCREqns
int setPenCREqns(int, int, int, int **, int **, int *)
Definition: fei_Aztec_LinSysCore.hpp:124
fei_trilinos::Aztec_LinSysCore::A_ptr_
AztecDMSR_Matrix * A_ptr_
Definition: fei_Aztec_LinSysCore.hpp:384
fei_trilinos::Aztec_LinSysCore::azS_
AZ_SCALING * azS_
Definition: fei_Aztec_LinSysCore.hpp:409
Lookup
Definition: fei_Lookup.hpp:40
fei_trilinos::Aztec_LinSysCore::getSolnEntry
int getSolnEntry(int eqnNumber, double &answer)
fei_trilinos::Aztec_LinSysCore::allocateMatrix
int allocateMatrix(int **ptColIndices, int *ptRowLengths, int **blkColIndices, int *blkRowLengths, int *ptRowsPerBlkRow)
fei_trilinos::Aztec_LinSysCore::recordUserParams
void recordUserParams()
fei_trilinos::Aztec_LinSysCore::explicitlySetDirichletBCs
int explicitlySetDirichletBCs()
fei_trilinos::Aztec_LinSysCore::azP_
AZ_PRECOND * azP_
Definition: fei_Aztec_LinSysCore.hpp:407
fei_trilinos::Aztec_LinSysCore::putIntoRHSVector
int putIntoRHSVector(int num, const double *values, const int *indices)
fei_trilinos::Aztec_LSVector
Definition: fei_Aztec_LSVector.hpp:76
fei_trilinos::Aztec_LinSysCore::comm_
MPI_Comm comm_
Definition: fei_Aztec_LinSysCore.hpp:372
fei_trilinos::Aztec_LinSysCore::sumIntoBlockRow
int sumIntoBlockRow(int numBlkRows, const int *blkRows, int numBlkCols, const int *blkCols, const double *const *values, int numPtCols, bool overwriteInsteadOfAccumulate)
fei_trilinos::Aztec_LinSysCore::matrixLoadComplete
int matrixLoadComplete()
fei_trilinos::Aztec_LinSysCore::x_
Aztec_LSVector * x_
Definition: fei_Aztec_LinSysCore.hpp:385
fei_trilinos::Aztec_LinSysCore::selectSolver
int selectSolver(const char *name)
fei_trilinos::Aztec_LinSysCore::setAuxVec
void setAuxVec(const char *param)
fei_trilinos::Aztec_LinSysCore::blockRowToPointRow
int blockRowToPointRow(int blkRow)
fei_trilinos::Aztec_LinSysCore::debugOutput_
int debugOutput_
Definition: fei_Aztec_LinSysCore.hpp:446
fei_trilinos::Aztec_LinSysCore::rhsLoaded_
bool rhsLoaded_
Definition: fei_Aztec_LinSysCore.hpp:396
fei_trilinos::Aztec_LinSysCore::aztec_params_
double * aztec_params_
Definition: fei_Aztec_LinSysCore.hpp:413
fei_trilinos::Aztec_LinSysCore::azA_
AZ_MATRIX * azA_
Definition: fei_Aztec_LinSysCore.hpp:406