/[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 1323 by matt, Thu Sep 27 06:20:29 2007 UTC revision 1513 by gross, Tue Apr 15 08:47:57 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 719  DataExpanded::dump(const std::string fil Line 719  DataExpanded::dump(const std::string fil
719     throw DataException("Error - DataExpanded:: dump is not configured with netCDF. Please contact your installation manager.");     throw DataException("Error - DataExpanded:: dump is not configured with netCDF. Please contact your installation manager.");
720     #endif     #endif
721  }  }
722    
723    void
724    DataExpanded::setTaggedValue(int tagKey,
725                                 const DataArrayView& value)
726    {
727      int numSamples = getNumSamples();
728      int numDataPointsPerSample = getNumDPPSample();
729      int sampleNo,dataPointNo, i;
730      DataArrayView& thisView=getPointDataView();
731      DataArrayView::ValueType::size_type n = thisView.noValues();
732      double* p,*in=&(value.getData()[0]);
733      
734      if (value.noValues() != n) {
735        throw DataException("Error - DataExpanded::setTaggedValue: number of input values does not match number of values per data points.");
736      }
737    
738      #pragma omp parallel for private(sampleNo,dataPointNo,p,i) schedule(static)
739      for (sampleNo = 0; sampleNo < numSamples; sampleNo++) {
740        if (getFunctionSpace().getTagFromSampleNo(sampleNo) == tagKey ) {
741            for (dataPointNo = 0; dataPointNo < numDataPointsPerSample; dataPointNo++) {
742                p=&(m_data[getPointOffset(sampleNo,dataPointNo)]);
743                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                     for (i=0; i<n ;i++) {
770                             rtmp=p[i];
771                             p[i]=p2[i];
772                             p2[i]=rtmp;
773                     }
774                     reference_ids[sampleNo]=id;
775                     reference_ids[sampleNo2]=id_in;
776                     matched=true;
777                     break;
778                  }
779             }
780             if (not matched) {
781                throw DataException("Error - DataExpanded::reorderByReferenceIDs: unable to reorder sample data by reference ids");
782             }
783         }
784       }
785    }
786    
787    
788    
789  }  // end of namespace  }  // end of namespace

Legend:
Removed from v.1323  
changed lines
  Added in v.1513

  ViewVC Help
Powered by ViewVC 1.1.26