/[escript]/trunk/escript/src/DataArrayView.h
ViewVC logotype

Diff of /trunk/escript/src/DataArrayView.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 582 by gross, Wed Mar 8 05:45:51 2006 UTC revision 583 by gross, Wed Mar 8 08:15:34 2006 UTC
# Line 845  class DataArrayView { Line 845  class DataArrayView {
845                                                ValueType::size_type VOffset,                                                ValueType::size_type VOffset,
846                                                const double tol=1.e-13)                                                const double tol=1.e-13)
847    {    {
848       double in00,in10,in20,in01,in11,in21,in02,in12,in22;
849       double V00,V10,V20,V01,V11,V21,V02,V12,V22;
850     double ev0,ev1,ev2;     double ev0,ev1,ev2;
851     int s=in.getShape()[0];     int s=in.getShape()[0];
852     if (s==1) {     if (s==1) {
853        eigenvalues1(in(0,0),&ev0);        in00=(*(in.m_data))[inOffset+in.index(0,0)];
854        ev(0)=ev0;        eigenvalues_and_eigenvectors1(in00,&ev0,&V00,tol);
855          (*(ev.m_data))[evOffset+ev.index(0)]=ev0;
856          (*(V.m_data))[inOffset+V.index(0,0)]=V00;
857     } else  if (s==2) {     } else  if (s==2) {
858        eigenvalues2(in(0,0),(in(0,1)+in(1,0))/2.,in(1,1),        in00=(*(in.m_data))[inOffset+in.index(0,0)];
859                     &ev0,&ev1);        in10=(*(in.m_data))[inOffset+in.index(1,0)];
860        ev(0)=ev0;        in01=(*(in.m_data))[inOffset+in.index(0,1)];
861        ev(1)=ev1;        in11=(*(in.m_data))[inOffset+in.index(1,1)];
862          eigenvalues_and_eigenvectors2(in00,(in01+in10)/2.,in11,
863                       &ev0,&ev1,&V00,&V10,&V01,&V11,tol);
864          (*(ev.m_data))[evOffset+ev.index(0)]=ev0;
865          (*(ev.m_data))[evOffset+ev.index(1)]=ev1;
866          (*(V.m_data))[inOffset+V.index(0,0)]=V00;
867          (*(V.m_data))[inOffset+V.index(1,0)]=V10;
868          (*(V.m_data))[inOffset+V.index(0,1)]=V01;
869          (*(V.m_data))[inOffset+V.index(1,1)]=V11;
870     } else  if (s==3) {     } else  if (s==3) {
871        eigenvalues3(in(0,0),(in(0,1)+in(1,0))/2.,(in(0,2)+in(2,0))/2.,in(1,1),(in(2,1)+in(1,2))/2.,in(2,2),        in00=(*(in.m_data))[inOffset+in.index(0,0)];
872                   &ev0,&ev1,&ev2);        in10=(*(in.m_data))[inOffset+in.index(1,0)];
873        ev(0)=ev0;        in20=(*(in.m_data))[inOffset+in.index(2,0)];
874        ev(1)=ev1;        in01=(*(in.m_data))[inOffset+in.index(0,1)];
875        ev(2)=ev2;        in11=(*(in.m_data))[inOffset+in.index(1,1)];
876          in21=(*(in.m_data))[inOffset+in.index(2,1)];
877          in02=(*(in.m_data))[inOffset+in.index(0,2)];
878          in12=(*(in.m_data))[inOffset+in.index(1,2)];
879          in22=(*(in.m_data))[inOffset+in.index(2,2)];
880          eigenvalues_and_eigenvectors3(in00,(in01+in10)/2.,(in02+in20)/2.,in11,(in21+in12)/2.,in22,
881                     &ev0,&ev1,&ev2,
882                     &V00,&V10,&V20,&V01,&V11,&V21,&V02,&V12,&V22,tol);
883          (*(ev.m_data))[evOffset+ev.index(0)]=ev0;
884          (*(ev.m_data))[evOffset+ev.index(1)]=ev1;
885          (*(ev.m_data))[evOffset+ev.index(2)]=ev2;
886          (*(V.m_data))[inOffset+V.index(0,0)]=V00;
887          (*(V.m_data))[inOffset+V.index(1,0)]=V10;
888          (*(V.m_data))[inOffset+V.index(2,0)]=V20;
889          (*(V.m_data))[inOffset+V.index(0,1)]=V01;
890          (*(V.m_data))[inOffset+V.index(1,1)]=V11;
891          (*(V.m_data))[inOffset+V.index(2,1)]=V21;
892          (*(V.m_data))[inOffset+V.index(0,2)]=V02;
893          (*(V.m_data))[inOffset+V.index(1,2)]=V12;
894          (*(V.m_data))[inOffset+V.index(2,2)]=V22;
895    
896     }     }
897   }   }

Legend:
Removed from v.582  
changed lines
  Added in v.583

  ViewVC Help
Powered by ViewVC 1.1.26