1#ifndef _fei_EqnCommMgr_hpp_
2#define _fei_EqnCommMgr_hpp_
138 void addSolnValues(
int* eqnNumbers,
double* values,
int num);
140#ifdef FEI_HAVE_IOSFWD
202 int addRemoteEqn(
int eqnNumber,
int destProc,
const double* coefs,
203 const int* indices,
int num);
206 const int* indices,
int num);
213 int addRemoteRHS(
int eqnNumber,
int destProc,
int rhsIndex,
double value);
215 int addRemoteRHS(
int eqnNumber,
int rhsIndex,
double value);
231 std::ostream*
dbgOut = NULL);
256 std::vector<int>& recvProcs,
257 std::vector<int>& recvProcTotalLengths,
258 std::vector<int>& sendProcs,
259 std::vector<int>& sendProcTotalLengths);
std::vector< std::vector< double > * > * rhsCoefsPtr()
std::vector< int > & eqnNumbers()
std::vector< fei::CSVec * > & eqns()
std::vector< int > & sendEqnNumbersPtr()
EqnCommMgr(MPI_Comm comm, bool accumulate=true)
int exchangeIndices(std::ostream *dbgOut=NULL)
std::vector< fei::CSVec * > & remEssBCEqns()
int exchangeRemEssBCs(int *essEqns, int numEssEqns, double *essAlpha, double *essGamma, MPI_Comm comm, std::ostream *dbgOut=NULL)
static int exchangeEqnBuffers(MPI_Comm comm, ProcEqns *sendProcEqns, EqnBuffer *sendEqns, ProcEqns *recvProcEqns, EqnBuffer *recvEqns, bool accumulate)
int exchangeEqns(std::ostream *dbgOut=NULL)
std::vector< double > solnValues_
EqnBuffer * getSendEqns()
int addRemoteRHS(fei::CSVec &vec, int rhsIndex)
std::vector< fei::CSVec * > & localEqns()
std::vector< int > & sharingProcsPtr()
EqnBuffer * getRecvEqns()
void setNumRHSs(int numRHSs)
size_t getNumOwnerProcs()
void addLocalEqn(int eqnNumber, int srcProc)
int exchangePtToBlkInfo(snl_fei::PointBlockMap &blkEqnMapper)
std::vector< int > & remEssBCEqnNumbersPtr()
int addRemoteEqns(fei::CSRMat &mat, bool onlyIndices)
void addSolnValues(int *eqnNumbers, double *values, int num)
std::vector< int > & ownerProcsPtr()
bool exchangeIndicesCalled_
int mirrorProcEqns(ProcEqns &inProcEqns, ProcEqns &outProcEqns)
int mirrorProcEqnLengths(ProcEqns &inProcEqns, ProcEqns &outProcEqns)
int consistencyCheck(const char *caller, std::vector< int > &recvProcs, std::vector< int > &recvProcTotalLengths, std::vector< int > &sendProcs, std::vector< int > &sendProcTotalLengths)
std::vector< int > & localEqnNumbers()
EqnCommMgr & operator=(const EqnCommMgr &src)
double * sendEqnSolnPtr()
int addRemoteEqn(int eqnNumber, int destProc, const double *coefs, const int *indices, int num)
int gatherSharedBCs(EqnBuffer &bcEqns)
void addRemoteIndices(int eqnNumber, int destProc, int *indices, int num)
size_t getNumSharingProcs()
ProcEqns * getRecvProcEqns()
ProcEqns * getSendProcEqns()
std::vector< double > sendEqnSoln_
int getSendProcNumber(int eqn)
std::vector< std::vector< double > * > * localRHSsPtr()
std::vector< int > & procsPtr()