43 #ifndef _fei_Aztec_LinSysCore_hpp_
44 #define _fei_Aztec_LinSysCore_hpp_
62 namespace fei_trilinos {
67 class AztecDMSR_Matrix;
68 class AztecDVBR_Matrix;
82 int parameters(
int numParams,
const char*
const * params);
93 const int*
const* connNodes) ;
98 const double *
const *
const *,
106 const double *
const *,
115 int* ptRowsPerBlkRow) ;
144 int numPtCols,
const int* ptCols,
145 int numBlkRows,
const int* blkRows,
146 int numBlkCols,
const int* blkCols,
147 const double*
const* values);
150 int numPtCols,
const int* ptCols,
151 const double*
const* values);
153 int numPtCols,
const int* ptCols,
154 const double*
const* values);
159 int len,
int& rowLength);
165 const double* values,
168 const double* values,
182 double* gamma,
int len);
185 double* alpha,
double* gamma,
189 int** colIndices,
int* colIndLen,
193 int** blkColInds,
int** blkColOffsets,
194 int* blkColLens,
double** remEssBCCoefs);
282 int** blkColIndices,
int* blkRowLengths,
283 int* ptRowsPerBlkRow);
289 AztecDMSR_Matrix* source);
293 int* ptRowsPerBlkRow);
296 int numBlkCols,
const int* blkCols,
297 const double*
const* values,
299 bool overwriteInsteadOfAccumulate);
302 int numBlkCols,
const int* blkCols,
303 const double*
const* values,
312 int getBlockRow(
int blkRow,
double*& val,
int& valLen,
313 int*& blkColInds,
int& blkColIndLen,
314 int& numNzBlks,
int& numNNZ);
322 int numPtCols,
const int* ptColIndices,
323 const double*
const* values,
324 bool overwriteInsteadOfAccumulate);
327 int blkCol,
int colOffset,
double value);
354 int blkRowEssBCMod(
int blkEqn,
int blkOffset,
double* val,
int* blkCols,
355 int numCols,
int numPtNNZ,
double alpha,
double gamma);
357 int blkColEssBCMod(
int blkRow,
int blkEqn,
int blkOffset,
double* val,
359 int numCols,
int numPtNNZ,
double alpha,
double gamma);
365 int writeA(
const char* name);
383 AztecDMSR_Matrix *
A_;
int putInitialGuess(const int *eqnNumbers, const double *values, int len)
void setAZ_output(const char *param)
int sumInMatrix(double scalar, const Data &data)
int copyInRHSVector(double scalar, const Data &data)
int enforceEssentialBC(int *globalEqn, double *alpha, double *gamma, int len)
bool BCenforcement_no_column_mod_
int blkRowEssBCMod(int blkEqn, int blkOffset, double *val, int *blkCols, int numCols, int numPtNNZ, double alpha, double gamma)
int setStiffnessMatrices(GlobalID, int, const GlobalID *, const double *const *const *, int, const int *const *)
int getMatrixRow(int row, double *coefs, int *indices, int len, int &rowLength)
fei::SharedPtr< Aztec_BlockMap > blkMap_
int setConnectivities(GlobalID elemBlock, int numElements, int numNodesPerElem, const GlobalID *elemIDs, const int *const *connNodes)
void setPreCalc(const char *param)
int putIntoSystemMatrix(int numPtRows, const int *ptRows, int numPtCols, const int *ptCols, const double *const *values)
int setNumRHSVectors(int numRHSs, const int *rhsIDs)
int VBRmatPlusScaledMat(AztecDVBR_Matrix *A, double scalar, AztecDVBR_Matrix *source)
int setLookup(Lookup &lookup)
int getRHSVectorPtr(Data &data)
LinearSystemCore * clone()
int setMultCREqns(int, int, int, int **, int **, int *, int *)
void setScalingOption(const char *param)
AztecDMSR_Matrix * A_ptr_
int getBlkEqnsAndOffsets(int *ptEqns, int *blkEqns, int *blkOffsets, int numEqns)
int resetRHSVector(double s)
int writeA(const char *name)
int blkColEssBCMod(int blkRow, int blkEqn, int blkOffset, double *val, int *blkCols, int numCols, int numPtNNZ, double alpha, double gamma)
int enforceBlkRemoteEssBCs(int numEqns, int *blkEqns, int **blkColInds, int **blkColOffsets, int *blkColLens, double **remEssBCCoefs)
int sumIntoRHSVector(int num, const double *values, const int *indices)
int writeVec(Aztec_LSVector *v, const char *name)
int sumInRHSVector(double scalar, const Data &data)
std::map< std::string, unsigned > & named_solve_counter_
AztecDVBR_Matrix * blkA_ptr_
virtual ~Aztec_LinSysCore()
void debugOutput(const char *msg) const
void checkForParam(const char *paramName, int numParams_, char **paramStrings, double ¶m)
int putNodalFieldData(int, int, int *, int, const double *)
int sumPointIntoBlockRow(int blkRow, int rowOffset, int blkCol, int colOffset, double value)
void setConvTest(const char *param)
int sumIntoBlockRow(int numBlkRows, const int *blkRows, int numBlkCols, const int *blkCols, const double *const *values, int numPtCols, bool overwriteInsteadOfAccumulate)
int launchSolver(int &solveStatus, int &iterations)
void setAuxVec(const char *param)
int setPenCREqns(int, int, int, int **, int **, int *)
fei::SharedPtr< Aztec_Map > map_
int resetMatrixAndVector(double s)
int putIntoRHSVector(int num, const double *values, const int *indices)
int parameters(int numParams, const char *const *params)
int destroyMatrixData(Data &data)
bool needNewPreconditioner_
void setOrthog(const char *param)
int getSolnEntry(int eqnNumber, double &answer)
int destroyVectorData(Data &data)
void checkForOption(const char *paramName, int numParams_, char **paramStrings, int ¶m)
int getBlockSize(int blkInd)
int enforceBlkEssentialBC(int *blkEqn, int *blkOffset, double *alpha, double *gamma, int len)
bool explicitDirichletBCs_
int setGlobalOffsets(int len, int *nodeOffsets, int *eqnOffsets, int *blkEqnOffsets)
int selectSolver(const char *name)
int setMatrixStructure(int **ptColIndices, int *ptRowLengths, int **blkColIndices, int *blkRowLengths, int *ptRowsPerBlkRow)
int getMatrixPtr(Data &data)
int explicitlySetDirichletBCs()
void setSubdomainSolve(const char *name)
int getMatrixOffset(int row, int col)
int getMatrixRowLength(int row, int &length)
int blockRowToPointRow(int blkRow)
double * getMatrixBeginPointer()
int sumIntoPointRow(int numPtRows, const int *ptRows, int numPtCols, const int *ptColIndices, const double *const *values, bool overwriteInsteadOfAccumulate)
int allocateMatrix(int **ptColIndices, int *ptRowLengths, int **blkColIndices, int *blkRowLengths, int *ptRowsPerBlkRow)
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)
void setDebugOutput(const char *path, const char *name)
int setLoadVectors(GlobalID, int, const GlobalID *, const double *const *, int, const int *const *)
int getFromRHSVector(int num, double *values, const int *indices)
int copyOutMatrix(double scalar, Data &data)
int createBlockMatrix(int **blkColIndices, int *blkRowLengths, int *ptRowsPerBlkRow)
int copyOutRHSVector(double scalar, Data &data)
int MSRmatPlusScaledMat(AztecDMSR_Matrix *A, double scalar, AztecDMSR_Matrix *source)
int formResidual(double *values, int len)
int copyInMatrix(double scalar, const Data &data)
int writeSystem(const char *name)
int getSolution(double *answers, int len)
bool tooLateToChooseBlock_
int resetMatrix(double s)
int selectPreconditioner(const char *name)
void setTypeOverlap(const char *param)
Aztec_LinSysCore(MPI_Comm comm)
int messageAbort(const char *msg) const
int getBlockRow(int blkRow, double *&val, int &valLen, int *&blkColInds, int &blkColIndLen, int &numNzBlks, int &numNNZ)
int copyBlockRow(int i, const int *blkRows, int numBlkCols, const int *blkCols, const double *const *values, double *coefs)
int enforceRemoteEssBCs(int numEqns, int *globalEqns, int **colIndices, int *colIndLen, double **coefs)
int setMatrixType(const char *name)
void setOverlap(const char *param)