int MatMgnt3d::plnDen2EffDen int  level,
const DblNumVec &  ,
DblNumVec & 
 

plain->regular->effective

Definition at line 226 of file matmgnt3d.cpp.

References _degVec, _hom, _wsbuf, regPos(), samDen2RegDen(), samPos(), and srcDOF().

00227 {
00228   DblNumVec regDen(regPos().n()*srcDOF()); clear(regDen);
00229   //iC( samDen2RegularDen(plnDen, regDen) );
00230   //rfftwnd_real_to_complex(_forplan, srcDOF(), regDen.data(), srcDOF(), 1, (fftw_complex*)(effDen.data()), srcDOF(), 1);
00231   if(_hom==true) {
00232          int srcDOF = this->srcDOF();
00233          DblNumVec tmpDen(srcDOF*samPos(UE).n(), false, _wsbuf);         clear(tmpDen);
00234          vector<double> sclvec(srcDOF);  for(int s=0; s<srcDOF; s++)            sclvec[s] = pow(2.0, l*_degVec[s]);
00235          int cnt = 0;
00236          for(int i=0; i<samPos(UE).n(); i++)
00237                 for(int s=0; s<srcDOF; s++) {
00238                   tmpDen(cnt) = plnDen(cnt) * sclvec[s];
00239                   cnt++;
00240                 }
00241          iC( samDen2RegDen(tmpDen, regDen) );
00242   } else {
00243          iC( samDen2RegDen(plnDen, regDen) );
00244   }
00245   
00246   int nnn[3];  nnn[0] = 2*_np;  nnn[1] = 2*_np;  nnn[2] = 2*_np;
00247   fftw_plan forplan = fftw_plan_many_dft_r2c(3,nnn,srcDOF(), regDen.data(),NULL, srcDOF(),1, (fftw_complex*)(effDen.data()),NULL, srcDOF(),1, FFTW_ESTIMATE);
00248   fftw_execute(forplan);
00249   fftw_destroy_plan(forplan);
00250   //rfftwnd_real_to_complex(_forplan, srcDOF(), regDen.data(), srcDOF(), 1, (fftw_complex*)(effDen.data()), srcDOF(), 1);
00251   
00252   return (0);
00253 }


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