bool ASMs1D::refine (const RealArray& xi) { if (!curv || xi.empty()) return false; if (xi.front() < 0.0 || xi.back() > 1.0) return false; if (shareFE) return true; RealArray extraKnots; RealArray::const_iterator uit = curv->basis().begin(); double ucurr, uprev = *(uit++); while (uit != curv->basis().end()) { ucurr = *(uit++); if (ucurr > uprev) for (size_t i = 0; i < xi.size(); i++) if (i > 0 && xi[i] < xi[i-1]) return false; else extraKnots.push_back(ucurr*xi[i] + uprev*(1.0-xi[i])); uprev = ucurr; } curv->insertKnot(extraKnots); return true; }
bool SparseMatrix::assembleCol (const RealArray& V, const SAM& sam, int n, size_t col) { if (V.empty() || col > ncol) return false; IntVec mnen; if (!sam.getNodeEqns(mnen,n)) return false; assemSparse(V,*this,col,mnen,sam.meqn,sam.mpmceq,sam.mmceq,sam.ttcc); return true; }