/[escript]/branches/arrexp_2137_win_merge/escript/src/DataVector.cpp
ViewVC logotype

Diff of /branches/arrexp_2137_win_merge/escript/src/DataVector.cpp

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

revision 2124 by jfenwick, Wed Dec 3 03:33:34 2008 UTC revision 2133 by jfenwick, Fri Dec 5 00:20:46 2008 UTC
# Line 247  DataVector::copyFromArray(const WrappedA Line 247  DataVector::copyFromArray(const WrappedA
247    copyFromArrayToOffset(value,0);    copyFromArrayToOffset(value,0);
248  }  }
249    
 void  
 DataVector::copyFromNumArray(const boost::python::numeric::array& value)  
 {  
   using DataTypes::ValueType;  
   if (m_array_data!=0) {  
     arrayManager.delete_array(m_array_data);  
   }  
   
   
   m_array_data = arrayManager.new_array(1,value.nelements());  
   
   int si=0,sj=0,sk=0,sl=0;      // bounds for each dimension of the shape  
   DataTypes::ShapeType tempShape;      
   for (int i=0; i<value.getrank(); i++) {  
      tempShape.push_back(extract<int>(value.getshape()[i]));  
   }  
   
   if (value.getrank()==0) {  
      m_array_data[0]=extract<double>(value[value.getshape()]);  
   } else if (value.getrank()==1) {  
      si=tempShape[0];  
      for (ValueType::size_type i=0;i<si;i++) {  
         m_array_data[i]=extract<double>(value[i]);  
      }  
   } else if (value.getrank()==2) {  
     si=tempShape[0];  
     sj=tempShape[1];  
         for (ValueType::size_type i=0;i<si;i++) {  
            for (ValueType::size_type j=0;j<sj;j++) {  
               m_array_data[DataTypes::getRelIndex(tempShape,i,j)]=extract<double>(value[i][j]);  
            }  
         }  
   } else if (value.getrank()==3) {  
     si=tempShape[0];  
     sj=tempShape[1];  
     sk=tempShape[2];  
         for (ValueType::size_type i=0;i<si;i++) {  
            for (ValueType::size_type j=0;j<sj;j++) {  
               for (ValueType::size_type k=0;k<sk;k++) {  
                  m_array_data[DataTypes::getRelIndex(tempShape,i,j,k)]=extract<double>(value[i][j][k]);  
               }  
            }  
         }  
   } else if (value.getrank()==4) {  
     si=tempShape[0];  
     sj=tempShape[1];  
     sk=tempShape[2];  
     sl=tempShape[3];  
         for (ValueType::size_type i=0;i<si;i++) {  
            for (ValueType::size_type j=0;j<sj;j++) {  
               for (ValueType::size_type k=0;k<sk;k++) {  
                  for (ValueType::size_type l=0;l<sl;l++) {  
                     m_array_data[DataTypes::getRelIndex(tempShape,i,j,k,l)]=extract<double>(value[i][j][k][l]);  
                  }  
               }  
            }  
         }  
    }  
    m_size=value.nelements();    // total amount of elements  
    m_dim=m_size;        // elements per sample  
    m_N=1;           // number of samples  
 }  
   
   
   
250  } // end of namespace  } // end of namespace

Legend:
Removed from v.2124  
changed lines
  Added in v.2133

  ViewVC Help
Powered by ViewVC 1.1.26