int spev1d int  evflag,
int  dmflag,
int  dof,
double *  M,
int  n,
double  e,
int  i,
double  u,
double *  res
 

Definition at line 182 of file vecmatop.cpp.

References DMFLAG_PERIOD.

00183 {
00184   int is[4];
00185   if(dmflag==DMFLAG_PERIOD) {
00186          for(int k=0; k<4; k++) is[k]=(i+k-1 + m) % m;
00187   } else {
00188          assert(i>=1 && i<=m-3);
00189          for(int k=0; k<4; k++) is[k]=(i+k-1);
00190   }
00191   DblNumMat M(dof,m,false,data); //assert(M.n()==n && M.m()==res.m()); //double dof = M.m();  //int cnt = 0;
00192   //---------------------------
00193   if(evflag & EVFLAG_VL) {
00194          double scl = 1.0;
00195          double us[4]; iC( spcoef(EVFLAG_VL, u, us) );
00196          for(int d=0; d<dof; d++)               res[d] = 0;
00197          for(int d=0; d<dof; d++) 
00198                 for(int a=0; a<4; a++) {
00199                   res[d] += us[a] * M(d,is[a]);
00200                 }
00201          for(int d=0; d<dof; d++)               res[d] *= scl; //scaling
00202          res+=dof;
00203   }
00204   //---------------------------
00205   if(evflag & EVFLAG_FD) {
00206          double scl = double(m) / e;
00207          double us[4]; iC( spcoef(EVFLAG_FD, u, us) );
00208          for(int d=0; d<dof; d++)               res[d] = 0;
00209          for(int d=0; d<dof; d++)
00210                 for(int a=0; a<4; a++) {
00211                   res[d] += us[a] * M(d,is[a]);
00212                 }
00213          for(int d=0; d<dof; d++)               res[d] *= scl; //scaling
00214          res+=dof;
00215   }
00216   //---------------------------
00217   if(evflag & EVFLAG_SD) {
00218          double scl = double(m*m)/(e*e);
00219          double us[4]; iC( spcoef(EVFLAG_SD, u, us) );
00220          for(int d=0; d<dof; d++)               res[d] = 0;
00221          for(int d=0; d<dof; d++)
00222                 for(int a=0; a<4; a++) {
00223                   res[d] += us[a] * M(d,is[a]);
00224                 }
00225          for(int d=0; d<dof; d++)               res[d] *= scl; //scaling
00226          res+=dof;
00227   }
00228   return 0;
00229 }


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