int FMM3d::srcData  )  [protected]
 

return source data

Definition at line 68 of file fmm3d_setup.cpp.

References _let, _srcExaDen, _srcExaNor, _srcExaPos, _srcUpwChkVal, _srcUpwEquDen, datSze(), KnlMat3d::dim(), LET_SRCNODE, Let3d::node(), KnlMat3d::srcDOF(), Let3d::srcExaCnt(), srcExaNor(), srcExaPos(), Let3d::srcNodeCnt(), Let3d::tag(), Let3d::terminal(), UC, UE, and Let3d::upwOrderCollect().

00069 {
00070   //1. create vecs
00071   int srcNodeCnt = _let->srcNodeCnt();
00072   int srcExaCnt = _let->srcExaCnt();
00073   _srcExaPos.resize(dim(), srcExaCnt);
00074   _srcExaNor.resize(dim(), srcExaCnt);
00075   _srcExaDen.resize(srcExaCnt * srcDOF());
00076   _srcUpwEquDen.resize(srcNodeCnt * datSze(UE));
00077   _srcUpwChkVal.resize(srcNodeCnt * datSze(UC));
00078   
00079   //2. gather the Position using the Pos scatter
00080   vector<int> ordVec;  iC( _let->upwOrderCollect(ordVec) );
00081   for(int i=0; i<ordVec.size(); i++) {
00082          int gNodeIdx = ordVec[i];
00083          if(_let->tag(gNodeIdx) & LET_SRCNODE) { //contributor
00084                 if(_let->terminal(gNodeIdx)==true) { //terminal cbtr
00085                   DblNumMat srcExaPos(this->srcExaPos(gNodeIdx));
00086                   DblNumMat srcExaNor(this->srcExaNor(gNodeIdx));
00087                   vector<int>& curVecIdxs = _let->node(gNodeIdx).srcOwnVecIdxs();
00088                   for(int k=0; k < curVecIdxs.size(); k++) {
00089                          int poff = curVecIdxs[k];
00090                          for(int d=0; d < dim(); d++) {
00091                                 srcExaPos(d,k) = (*_srcPos)(d,poff);//Pos
00092                                 srcExaNor(d,k) = (*_srcNor)(d,poff);//Nor
00093                          }
00094                   }
00095                 }
00096          }
00097   }
00098   return (0);
00099 }


Generated on Sun Dec 4 19:24:40 2005 for fmm3d by  doxygen 1.4.5