+void MEDCouplingRemapper::setCrudeMatrix(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method, const std::vector<std::map<mcIdType,double> >& m)
+{
+ MCAuto<MEDCouplingFieldTemplate> src,target;
+ BuildFieldTemplatesFrom(srcMesh,targetMesh,method,src,target);
+ setCrudeMatrixEx(src,target,m);
+}
+
+void MEDCouplingRemapper::setCrudeMatrixEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target, const std::vector<std::map<mcIdType,double> >& m)
+{
+ restartUsing(src,target);
+ if(ToIdType(m.size())!=target->getNumberOfTuplesExpected())
+ {
+ std::ostringstream oss; oss << "MEDCouplingRemapper::setMatrixEx : input matrix has " << m.size() << " rows whereas there are " << target->getNumberOfTuplesExpected() << " expected !";
+ throw INTERP_KERNEL::Exception(oss.str());
+ }
+ auto srcNbElem(src->getNumberOfTuplesExpected());
+ for(auto it: m)
+ {
+ for(auto it2: it)
+ {
+ auto idToTest(it2.first);
+ if(idToTest<0 || idToTest>=srcNbElem)
+ {
+ std::ostringstream oss; oss << "MEDCouplingRemapper::setMatrixEx : presence of elt #" << idToTest << " ! not in [0," << srcNbElem << ") !";
+ throw INTERP_KERNEL::Exception(oss.str());
+ }
+ }
+ }
+ _matrix=m;
+ _deno_multiply.clear();
+ _deno_multiply.resize(_matrix.size());
+ _deno_reverse_multiply.clear();
+ _deno_reverse_multiply.resize(srcNbElem);
+}
+