//============================================================================== int EqnBuffer::addIndices(int eqnNumber, const int* indices, int len) { int err = 0, insertPoint = -1; int index = fei::binarySearch(eqnNumber, eqnNumbers_, insertPoint); //(we're adding dummy coefs as well, even though there are no //incoming coefs at this point). if ((int)dummyCoefs_.size() < len) { dummyCoefs_.assign(len, 0.0); } if (index < 0) { //if eqnNumber was not already present, insert new equation err = insertNewEqn(eqnNumber, insertPoint); if (err) {return(err);} index = insertPoint; } if (len > 0) { err = internalAddEqn(index, &dummyCoefs_[0], indices, len, true); } return(err); }
//============================================================================== int EqnBuffer::addEqn(int eqnNumber, const double* coefs, const int* indices, int len, bool accumulate, bool create_indices_union) { if (len <= 0) return(0); int err, insertPoint = -1; int index = fei::binarySearch(eqnNumber, eqnNumbers_, insertPoint); if (index < 0) { //if eqnNumber isn't already present, insert a new entry into the //appropriate data structures. err = insertNewEqn(eqnNumber, insertPoint); if (err) {return(err);} index = insertPoint; } //Now add the coef/index values. err = internalAddEqn(index, coefs, indices, len, accumulate); if (create_indices_union) { for(int i=0; i<len; ++i) { fei::sortedListInsert(indices[i], indices_union_); } } return(err); }
//============================================================================== void ProcEqns::addEqn(int eqnNumber, int eqnLength, int proc) { internalAddEqn(eqnNumber, eqnLength, proc); }
//============================================================================== void ProcEqns::addEqn(int eqnNumber, int proc) { internalAddEqn(eqnNumber, 0, proc); }