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

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

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

revision 922 by gross, Fri Jan 5 04:23:05 2007 UTC revision 1031 by phornby, Wed Mar 14 06:03:21 2007 UTC
# Line 726  Data:: getValueOfDataPoint(int dataPoint Line 726  Data:: getValueOfDataPoint(int dataPoint
726         int dataPointNoInSample = dataPointNo - sampleNo * getNumDataPointsPerSample();         int dataPointNoInSample = dataPointNo - sampleNo * getNumDataPointsPerSample();
727         //         //
728         // Check a valid sample number has been supplied         // Check a valid sample number has been supplied
729         if (sampleNo >= getNumSamples() or sampleNo < 0 ) {         if ((sampleNo >= getNumSamples()) || (sampleNo < 0 )) {
730             throw DataException("Error - Data::convertToNumArray: invalid sampleNo.");             throw DataException("Error - Data::convertToNumArray: invalid sampleNo.");
731         }         }
732                                
733         //         //
734         // Check a valid data point number has been supplied         // Check a valid data point number has been supplied
735         if (dataPointNoInSample >= getNumDataPointsPerSample() or dataPointNoInSample < 0) {         if ((dataPointNoInSample >= getNumDataPointsPerSample()) || (dataPointNoInSample < 0)) {
736             throw DataException("Error - Data::convertToNumArray: invalid dataPointNoInSample.");             throw DataException("Error - Data::convertToNumArray: invalid dataPointNoInSample.");
737         }         }
738         // TODO: global error handling         // TODO: global error handling
# Line 877  Data::getValueOfGlobalDataPoint(int proc Line 877  Data::getValueOfGlobalDataPoint(int proc
877                  int dataPointNoInSample = dataPointNo - sampleNo * getNumDataPointsPerSample();                  int dataPointNoInSample = dataPointNo - sampleNo * getNumDataPointsPerSample();
878                  //                  //
879                  // Check a valid sample number has been supplied                  // Check a valid sample number has been supplied
880                  if (sampleNo >= getNumSamples() or sampleNo < 0 ) {                  if ((sampleNo >= getNumSamples()) || (sampleNo < 0 )) {
881                    throw DataException("Error - Data::convertToNumArray: invalid sampleNo.");                    throw DataException("Error - Data::convertToNumArray: invalid sampleNo.");
882                  }                  }
883                                
884                  //                  //
885                  // Check a valid data point number has been supplied                  // Check a valid data point number has been supplied
886                  if (dataPointNoInSample >= getNumDataPointsPerSample() or dataPointNoInSample < 0) {                  if ((dataPointNoInSample >= getNumDataPointsPerSample()) || (dataPointNoInSample < 0)) {
887                    throw DataException("Error - Data::convertToNumArray: invalid dataPointNoInSample.");                    throw DataException("Error - Data::convertToNumArray: invalid dataPointNoInSample.");
888                  }                  }
889                  // TODO: global error handling                  // TODO: global error handling
# Line 1035  Data::integrate() const Line 1035  Data::integrate() const
1035  }  }
1036    
1037  Data  Data
 Data::erf() const  
 {  
 #if defined DOPROF  
   profData->unary++;  
 #endif  
   return escript::unaryOp(*this,(Data::UnaryDFunPtr)::erf);  
 }  
   
 Data  
1038  Data::sin() const  Data::sin() const
1039  {  {
1040  #if defined DOPROF  #if defined DOPROF
# Line 1088  Data::acos() const Line 1079  Data::acos() const
1079    return escript::unaryOp(*this,(Data::UnaryDFunPtr)::acos);    return escript::unaryOp(*this,(Data::UnaryDFunPtr)::acos);
1080  }  }
1081    
1082    
1083  Data  Data
1084  Data::atan() const  Data::atan() const
1085  {  {
# Line 1124  Data::tanh() const Line 1116  Data::tanh() const
1116    return escript::unaryOp(*this,(Data::UnaryDFunPtr)::tanh);    return escript::unaryOp(*this,(Data::UnaryDFunPtr)::tanh);
1117  }  }
1118    
1119    
1120    Data
1121    Data::erf() const
1122    {
1123    #if defined DOPROF
1124      profData->unary++;
1125    #endif
1126    #ifdef _WIN32
1127      throw DataException("Error - Data:: erf function is not supported on _WIN32 platforms.");
1128    #else
1129      return escript::unaryOp(*this,(Data::UnaryDFunPtr)::erf);
1130    #endif
1131    }
1132    
1133  Data  Data
1134  Data::asinh() const  Data::asinh() const
1135  {  {
# Line 2092  Data::getTagNumber(int dpno) Line 2098  Data::getTagNumber(int dpno)
2098    return m_data->getTagNumber(dpno);    return m_data->getTagNumber(dpno);
2099  }  }
2100    
 /* TODO */  
 /* global reduction */  
 void  
 Data::setRefValue(int ref,  
                   const boost::python::numeric::array& value)  
 {  
   if (isProtected()) {  
         throw DataException("Error - attempt to update protected Data object.");  
   }  
   //  
   // Construct DataArray from boost::python::object input value  
   DataArray valueDataArray(value);  
   
   //  
   // Call DataAbstract::setRefValue  
   m_data->setRefValue(ref,valueDataArray);  
 }  
   
 /* TODO */  
 /* global reduction */  
 void  
 Data::getRefValue(int ref,  
                   boost::python::numeric::array& value)  
 {  
   //  
   // Construct DataArray for boost::python::object return value  
   DataArray valueDataArray(value);  
   
   //  
   // Load DataArray with values from data-points specified by ref  
   m_data->getRefValue(ref,valueDataArray);  
   
   //  
   // Load values from valueDataArray into return numarray  
   
   // extract the shape of the numarray  
   int rank = value.getrank();  
   DataArrayView::ShapeType shape;  
   for (int i=0; i < rank; i++) {  
     shape.push_back(extract<int>(value.getshape()[i]));  
   }  
   
   // and load the numarray with the data from the DataArray  
   DataArrayView valueView = valueDataArray.getView();  
   
   if (rank==0) {  
       boost::python::numeric::array temp_numArray(valueView());  
       value = temp_numArray;  
   }  
   if (rank==1) {  
     for (int i=0; i < shape[0]; i++) {  
       value[i] = valueView(i);  
     }  
   }  
   if (rank==2) {  
     for (int i=0; i < shape[0]; i++) {  
       for (int j=0; j < shape[1]; j++) {  
         value[make_tuple(i,j)] = valueView(i,j);  
       }  
     }  
   }  
   if (rank==3) {  
     for (int i=0; i < shape[0]; i++) {  
       for (int j=0; j < shape[1]; j++) {  
         for (int k=0; k < shape[2]; k++) {  
           value[make_tuple(i,j,k)] = valueView(i,j,k);  
         }  
       }  
     }  
   }  
   if (rank==4) {  
     for (int i=0; i < shape[0]; i++) {  
       for (int j=0; j < shape[1]; j++) {  
         for (int k=0; k < shape[2]; k++) {  
           for (int l=0; l < shape[3]; l++) {  
             value[make_tuple(i,j,k,l)] = valueView(i,j,k,l);  
           }  
         }  
       }  
     }  
   }  
   
 }  
   
2101  void  void
2102  Data::archiveData(const std::string fileName)  Data::archiveData(const std::string fileName)
2103  {  {
# Line 2217  Data::archiveData(const std::string file Line 2139  Data::archiveData(const std::string file
2139    DataArrayView::ShapeType dataPointShape = getDataPointShape();    DataArrayView::ShapeType dataPointShape = getDataPointShape();
2140    vector<int> referenceNumbers(noSamples);    vector<int> referenceNumbers(noSamples);
2141    for (int sampleNo=0; sampleNo<noSamples; sampleNo++) {    for (int sampleNo=0; sampleNo<noSamples; sampleNo++) {
2142      referenceNumbers[sampleNo] = getFunctionSpace().getReferenceNoFromSampleNo(sampleNo);      referenceNumbers[sampleNo] = getFunctionSpace().getReferenceIDOfSample(sampleNo);
2143    }    }
2144    vector<int> tagNumbers(noSamples);    vector<int> tagNumbers(noSamples);
2145    if (isTagged()) {    if (isTagged()) {
# Line 2426  Data::extractData(const std::string file Line 2348  Data::extractData(const std::string file
2348      throw DataException("extractData Error: incompatible FunctionSpace");      throw DataException("extractData Error: incompatible FunctionSpace");
2349    }    }
2350    for (int sampleNo=0; sampleNo<noSamples; sampleNo++) {    for (int sampleNo=0; sampleNo<noSamples; sampleNo++) {
2351      if (referenceNumbers[sampleNo] != fspace.getReferenceNoFromSampleNo(sampleNo)) {      if (referenceNumbers[sampleNo] != fspace.getReferenceIDOfSample(sampleNo)) {
2352        throw DataException("extractData Error: incompatible FunctionSpace");        throw DataException("extractData Error: incompatible FunctionSpace");
2353      }      }
2354    }    }

Legend:
Removed from v.922  
changed lines
  Added in v.1031

  ViewVC Help
Powered by ViewVC 1.1.26