/[escript]/trunk/escript/src/DataExpanded.cpp
ViewVC logotype

Diff of /trunk/escript/src/DataExpanded.cpp

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

revision 1358 by gross, Wed Dec 5 03:41:06 2007 UTC revision 1487 by gross, Thu Apr 10 05:28:01 2008 UTC
# Line 641  DataExpanded::setToZero(){ Line 641  DataExpanded::setToZero(){
641    for (sampleNo = 0; sampleNo < numSamples; sampleNo++) {    for (sampleNo = 0; sampleNo < numSamples; sampleNo++) {
642      for (dataPointNo = 0; dataPointNo < numDataPointsPerSample; dataPointNo++) {      for (dataPointNo = 0; dataPointNo < numDataPointsPerSample; dataPointNo++) {
643          p=&(m_data[getPointOffset(sampleNo,dataPointNo)]);          p=&(m_data[getPointOffset(sampleNo,dataPointNo)]);
644          for (int i=0; i<n ;++i) p[i]=0.;          for (i=0; i<n ;++i) p[i]=0.;
645      }      }
646    }    }
647  }  }
# Line 740  DataExpanded::setTaggedValue(int tagKey, Line 740  DataExpanded::setTaggedValue(int tagKey,
740      if (getFunctionSpace().getTagFromSampleNo(sampleNo) == tagKey ) {      if (getFunctionSpace().getTagFromSampleNo(sampleNo) == tagKey ) {
741          for (dataPointNo = 0; dataPointNo < numDataPointsPerSample; dataPointNo++) {          for (dataPointNo = 0; dataPointNo < numDataPointsPerSample; dataPointNo++) {
742              p=&(m_data[getPointOffset(sampleNo,dataPointNo)]);              p=&(m_data[getPointOffset(sampleNo,dataPointNo)]);
743              for (int i=0; i<n ;++i) p[i]=in[i];              for (i=0; i<n ;++i) p[i]=in[i];
744          }          }
745      }      }
746    }    }
747  }  }
748    
749    void
750    DataExpanded::reorderByReferenceIDs(int *reference_ids)
751    {
752      int numSamples = getNumSamples();
753      DataArrayView& thisView=getPointDataView();
754      DataArrayView::ValueType::size_type n = thisView.noValues() * getNumDPPSample();
755      int sampleNo, sampleNo2,i;
756      double* p,*p2;
757      register double rtmp;
758      FunctionSpace fs=getFunctionSpace();
759    
760      for (sampleNo = 0; sampleNo < numSamples; sampleNo++) {
761         const int id_in=reference_ids[sampleNo];
762         const int id=fs.getReferenceIDOfSample(sampleNo);
763         if (id!=id_in) {
764             bool matched=false;
765             for (sampleNo2 = sampleNo+1; sampleNo2 < numSamples; sampleNo2++) {
766                  if (id == reference_ids[sampleNo2]) {
767                     p=&(m_data[getPointOffset(sampleNo,0)]);
768                     p2=&(m_data[getPointOffset(sampleNo2,0)]);
769                     #pragma ivdep
770                     for (i=0; i<n ;++i) {
771                             rtmp=p[i];
772                             p[i]=p2[i];
773                             p2[i]=rtmp;
774                     }
775                     reference_ids[sampleNo]=id;
776                     reference_ids[sampleNo2]=id_in;
777                     matched=true;
778                     break;
779                  }
780             }
781             if (not matched) {
782                throw DataException("Error - DataExpanded::reorderByReferenceIDs: unable to reorder sample data by reference ids");
783             }
784         }
785       }
786    }
787    
788    
789    
790  }  // end of namespace  }  // end of namespace

Legend:
Removed from v.1358  
changed lines
  Added in v.1487

  ViewVC Help
Powered by ViewVC 1.1.26