int lagev3d int  evflag,
int  dmflag,
int  dof,
double *  data,
int *  mno,
double *  efg,
int *  ijk,
double *  uvw,
double *  res
 

Definition at line 519 of file vecmatop.cpp.

References DMFLAG_PERIOD.

00520 {
00521   assert(evflag==EVFLAG_VL);
00522   
00523   int m = mno[0];  int n = mno[1];  int o = mno[2];
00524   double e = efg[0];  double f = efg[1];  double g = efg[2];
00525   int i = ijk[0];  int j = ijk[1];  int k = ijk[2];
00526   double u = uvw[0];  double v = uvw[1];  double w = uvw[2];
00527   
00528   int is[4]; int js[4];  int ks[4];
00529   if(dmflag==DMFLAG_PERIOD) {
00530          for(int h=0; h<4; h++) is[h]=(i+h-1 + m) % m;
00531          for(int h=0; h<4; h++) js[h]=(j+h-1 + n) % n;
00532          for(int h=0; h<4; h++) ks[h]=(k+h-1 + o) % o;
00533   } else {
00534          assert(i>=1 && i<=m-3);
00535          for(int h=0; h<4; h++) is[h]=(i+h-1);
00536          assert(j>=1 && j<=n-3);
00537          for(int h=0; h<4; h++) js[h]=(j+h-1);
00538          assert(k>=1 && k<=o-3);
00539          for(int h=0; h<4; h++) ks[h]=(k+h-1);
00540   }
00541   DblNumMat M(dof,m*n*o,false,data);
00542   double scl; 
00543   double us[4], vs[4], ws[4];
00544   //---------------------------
00545   if(evflag & EVFLAG_VL) {
00546          scl = 1.0;
00547          iC( lagcoef(EVFLAG_VL, u, us) );
00548          iC( lagcoef(EVFLAG_VL, v, vs) );
00549          iC( lagcoef(EVFLAG_VL, w, ws) );
00550          for(int d=0; d<dof; d++)               res[d] = 0;
00551          for(int a=0; a<4; a++)
00552                 for(int b=0; b<4; b++)
00553                   for(int c=0; c<4; c++) {
00554                          double coef = us[a]*vs[b]*ws[c]; 
00555                          for(int d=0; d<dof; d++)
00556                                 res[d] += coef * M(d, is[a]+js[b]*m+ks[c]*m*n);
00557                   }
00558          for(int d=0; d<dof; d++)               res[d] *= scl;
00559          res+=dof;
00560   }
00561   return 0;
00562 }


Generated on Sun Dec 4 18:13:13 2005 for common by  doxygen 1.4.5