Esempio n. 1
0
//==============================================================================
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);
}
Esempio n. 2
0
//==============================================================================
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);
}
Esempio n. 3
0
//==============================================================================
void ProcEqns::addEqn(int eqnNumber, int eqnLength, int proc) {
   internalAddEqn(eqnNumber, eqnLength, proc);
}
Esempio n. 4
0
//==============================================================================
void ProcEqns::addEqn(int eqnNumber, int proc) {

   internalAddEqn(eqnNumber, 0, proc);
}