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