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);
static int exchangeEqnBuffers(MPI_Comm comm, ProcEqns *sendProcEqns, EqnBuffer *sendEqns, ProcEqns *recvProcEqns, EqnBuffer *recvEqns, bool accumulate)
std::vector< fei::CSVec * > & remEssBCEqns()
std::vector< fei::CSVec * > & localEqns()
std::vector< int > & localEqnNumbers()
int exchangeEqns(std::ostream *dbgOut=NULL)
int exchangeRemEssBCs(int *essEqns, int numEssEqns, double *essAlpha, double *essGamma, MPI_Comm comm, std::ostream *dbgOut=NULL)
bool exchangeIndicesCalled_
std::vector< fei::CSVec * > & eqns()
ProcEqns * getSendProcEqns()
int addRemoteEqns(fei::CSRMat &mat, bool onlyIndices)
EqnCommMgr(MPI_Comm comm, bool accumulate=true)
int mirrorProcEqns(ProcEqns &inProcEqns, ProcEqns &outProcEqns)
std::vector< int > & eqnNumbers()
int exchangePtToBlkInfo(snl_fei::PointBlockMap &blkEqnMapper)
EqnCommMgr & operator=(const EqnCommMgr &src)
std::vector< double > solnValues_
int getSendProcNumber(int eqn)
size_t getNumSharingProcs()
ProcEqns * getRecvProcEqns()
std::vector< std::vector< double > * > * rhsCoefsPtr()
void addLocalEqn(int eqnNumber, int srcProc)
std::vector< int > & procsPtr()
int exchangeIndices(std::ostream *dbgOut=NULL)
EqnBuffer * getRecvEqns()
std::vector< std::vector< double > * > * localRHSsPtr()
int addRemoteEqn(int eqnNumber, int destProc, const double *coefs, const int *indices, int num)
void addRemoteIndices(int eqnNumber, int destProc, int *indices, int num)
std::vector< int > & sendEqnNumbersPtr()
std::vector< int > & remEssBCEqnNumbersPtr()
size_t getNumOwnerProcs()
int consistencyCheck(const char *caller, std::vector< int > &recvProcs, std::vector< int > &recvProcTotalLengths, std::vector< int > &sendProcs, std::vector< int > &sendProcTotalLengths)
std::vector< double > sendEqnSoln_
int mirrorProcEqnLengths(ProcEqns &inProcEqns, ProcEqns &outProcEqns)
void setNumRHSs(int numRHSs)
std::vector< int > & sharingProcsPtr()
int addRemoteRHS(fei::CSVec &vec, int rhsIndex)
EqnBuffer * getSendEqns()
std::vector< int > & ownerProcsPtr()
void addSolnValues(int *eqnNumbers, double *values, int num)
double * sendEqnSolnPtr()
int gatherSharedBCs(EqnBuffer &bcEqns)