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

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

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

revision 2008 by phornby, Mon Nov 10 08:59:14 2008 UTC revision 2271 by jfenwick, Mon Feb 16 05:08:29 2009 UTC
# Line 26  Line 26 
26  #endif  #endif
27  #include "DataMaths.h"  #include "DataMaths.h"
28    
29    
30    #define CHECK_FOR_EX_WRITE if (!checkNoSharing()) {throw DataException("Attempt to modify shared object");}
31    
32    // #define CHECK_FOR_EX_WRITE if (!checkNoSharing()) {std::ostringstream ss; ss << " Attempt to modify shared object. line " << __LINE__ << " of " << __FILE__; throw DataException(ss.str());}
33    
34  using namespace std;  using namespace std;
35    
36  namespace escript {  namespace escript {
# Line 167  DataTagged::DataTagged(const DataConstan Line 172  DataTagged::DataTagged(const DataConstan
172    }    }
173    
174    // fill the default value with the constant value item from "other"    // fill the default value with the constant value item from "other"
 //   const DataArrayView& value=other.getPointDataView();  
175    int len = other.getNoValues();    int len = other.getNoValues();
176    m_data.resize(len,0.,len);    m_data.resize(len,0.,len);
177    for (int i=0; i<len; i++) {    for (int i=0; i<len; i++) {
178      m_data[i]=other.getVector()[i];      m_data[i]=other.getVectorRO()[i];
179    }    }
   
 //   // create the data view  
 //   DataArrayView temp(m_data,value.getShape());  
 //   setPointDataView(temp);  
180  }  }
181    
182    
# Line 246  DataTagged::DataTagged(const DataTagged& Line 246  DataTagged::DataTagged(const DataTagged&
246    int len = DataTypes::noValues(regionShape)*(other.m_offsetLookup.size()+1);    int len = DataTypes::noValues(regionShape)*(other.m_offsetLookup.size()+1);
247    m_data.resize(len,0.0,len);    m_data.resize(len,0.0,len);
248    
   // create the data view  
 //   DataArrayView temp(m_data,regionShape);  
 //   setPointDataView(temp);  
   
249    // copy the default value from other to this    // copy the default value from other to this
 //   getDefaultValue().copySlice(other.getDefaultValue(), regionLoopRange);  
250    const DataTypes::ShapeType& otherShape=other.getShape();    const DataTypes::ShapeType& otherShape=other.getShape();
251    const DataTypes::ValueType& otherData=other.getVector();    const DataTypes::ValueType& otherData=other.getVectorRO();
252    DataTypes::copySlice(getVector(),getShape(),getDefaultOffset(),otherData,otherShape,other.getDefaultOffset(), regionLoopRange);    DataTypes::copySlice(getVectorRW(),getShape(),getDefaultOffset(),otherData,otherShape,other.getDefaultOffset(), regionLoopRange);
253    
254    // loop through the tag values copying these    // loop through the tag values copying these
255    DataMapType::const_iterator pos;    DataMapType::const_iterator pos;
256    DataTypes::ValueType::size_type tagOffset=getNoValues();    DataTypes::ValueType::size_type tagOffset=getNoValues();
257    for (pos=other.m_offsetLookup.begin();pos!=other.m_offsetLookup.end();pos++){    for (pos=other.m_offsetLookup.begin();pos!=other.m_offsetLookup.end();pos++){
 //     getPointDataView().copySlice(tagOffset,other.getPointDataView(),pos->second,regionLoopRange);  
258      DataTypes::copySlice(m_data,getShape(),tagOffset,otherData, otherShape, pos->second, regionLoopRange);      DataTypes::copySlice(m_data,getShape(),tagOffset,otherData, otherShape, pos->second, regionLoopRange);
259      m_offsetLookup.insert(DataMapType::value_type(pos->first,tagOffset));      m_offsetLookup.insert(DataMapType::value_type(pos->first,tagOffset));
260      tagOffset+=getNoValues();      tagOffset+=getNoValues();
# Line 279  DataTagged::setSlice(const DataAbstract* Line 273  DataTagged::setSlice(const DataAbstract*
273      throw DataException("Programming error - casting to DataTagged.");      throw DataException("Programming error - casting to DataTagged.");
274    }    }
275    
276      CHECK_FOR_EX_WRITE
277    
278    // determine shape of the specified region    // determine shape of the specified region
279    DataTypes::ShapeType regionShape(DataTypes::getResultSliceShape(region));    DataTypes::ShapeType regionShape(DataTypes::getResultSliceShape(region));
280    
# Line 294  DataTagged::setSlice(const DataAbstract* Line 290  DataTagged::setSlice(const DataAbstract*
290                           "Error - Couldn't copy slice due to shape mismatch.",regionShape,other->getShape()));                           "Error - Couldn't copy slice due to shape mismatch.",regionShape,other->getShape()));
291    }    }
292    
293    const DataTypes::ValueType& otherData=otherTemp->getVector();    const DataTypes::ValueType& otherData=otherTemp->getVectorRO();
294    const DataTypes::ShapeType& otherShape=otherTemp->getShape();    const DataTypes::ShapeType& otherShape=otherTemp->getShape();
295    // copy slice from other default value to this default value    // copy slice from other default value to this default value
 //   getDefaultValue().copySliceFrom(otherTemp->getDefaultValue(), regionLoopRange);  
296    DataTypes::copySliceFrom(m_data,getShape(),getDefaultOffset(),otherData,otherShape,otherTemp->getDefaultOffset(),regionLoopRange);    DataTypes::copySliceFrom(m_data,getShape(),getDefaultOffset(),otherData,otherShape,otherTemp->getDefaultOffset(),regionLoopRange);
297    
298    // loop through tag values in other, adding any which aren't in this, using default value    // loop through tag values in other, adding any which aren't in this, using default value
# Line 310  DataTagged::setSlice(const DataAbstract* Line 305  DataTagged::setSlice(const DataAbstract*
305    
306    // loop through the tag values copying slices from other to this    // loop through the tag values copying slices from other to this
307    for (pos=m_offsetLookup.begin();pos!=m_offsetLookup.end();pos++) {    for (pos=m_offsetLookup.begin();pos!=m_offsetLookup.end();pos++) {
 //     getDataPointByTag(pos->first).copySliceFrom(otherTemp->getDataPointByTag(pos->first), regionLoopRange);  
308      DataTypes::copySliceFrom(m_data,getShape(),getOffsetForTag(pos->first),otherData, otherShape, otherTemp->getOffsetForTag(pos->first), regionLoopRange);      DataTypes::copySliceFrom(m_data,getShape(),getOffsetForTag(pos->first),otherData, otherShape, otherTemp->getOffsetForTag(pos->first), regionLoopRange);
309    
310    }    }
# Line 347  DataTagged::getTagNumber(int dpno) Line 341  DataTagged::getTagNumber(int dpno)
341    return(tagNo);    return(tagNo);
342  }  }
343    
 // void  
 // DataTagged::setTaggedValues(const TagListType& tagKeys,  
 //                             const ValueListType& values)  
 // {  
 //   addTaggedValues(tagKeys,values);  
 // }  
   
344  void  void
345  DataTagged::setTaggedValue(int tagKey,  DataTagged::setTaggedValue(int tagKey,
346                 const DataTypes::ShapeType& pointshape,                 const DataTypes::ShapeType& pointshape,
# Line 364  DataTagged::setTaggedValue(int tagKey, Line 351  DataTagged::setTaggedValue(int tagKey,
351        throw DataException(DataTypes::createShapeErrorMessage(        throw DataException(DataTypes::createShapeErrorMessage(
352                            "Error - Cannot setTaggedValue due to shape mismatch.", pointshape,getShape()));                            "Error - Cannot setTaggedValue due to shape mismatch.", pointshape,getShape()));
353    }    }
354      CHECK_FOR_EX_WRITE
355    DataMapType::iterator pos(m_offsetLookup.find(tagKey));    DataMapType::iterator pos(m_offsetLookup.find(tagKey));
356    if (pos==m_offsetLookup.end()) {    if (pos==m_offsetLookup.end()) {
357      // tag couldn't be found so use addTaggedValue      // tag couldn't be found so use addTaggedValue
# Line 378  DataTagged::setTaggedValue(int tagKey, Line 366  DataTagged::setTaggedValue(int tagKey,
366  }  }
367    
368    
 /*  
 void  
 DataTagged::setTaggedValue(int tagKey,  
                            const DataArrayView& value)  
 {  
   if (!getPointDataView().checkShape(value.getShape())) {  
       throw DataException(DataTypes::createShapeErrorMessage(  
                           "Error - Cannot setTaggedValue due to shape mismatch.", value.getShape(),getShape()));  
   }  
   DataMapType::iterator pos(m_offsetLookup.find(tagKey));  
   if (pos==m_offsetLookup.end()) {  
     // tag couldn't be found so use addTaggedValue  
     addTaggedValue(tagKey,value);  
   } else {  
     // copy the values into the data array at the offset determined by m_offsetLookup  
     int offset=pos->second;  
     for (int i=0; i<getPointDataView().noValues(); i++) {  
       m_data[offset+i]=value.getData(i);  
     }  
   }  
 }*/  
   
 // void  
 // DataTagged::addTaggedValues(const TagListType& tagKeys,  
 //                             const ValueListType& values)  
 // {  
 //   if (values.size()==0) {  
 //     // copy the current default value for each of the tags  
 //     TagListType::const_iterator iT;  
 //     for (iT=tagKeys.begin();iT!=tagKeys.end();iT++) {  
 //       // the point data view for DataTagged points at the default value  
 //       addTaggedValue(*iT,getPointDataView());  
 //     }  
 //   } else if (values.size()==1 && tagKeys.size()>1) {  
 //     // assume the one given value will be used for all tag values  
 //     TagListType::const_iterator iT;  
 //     for (iT=tagKeys.begin();iT!=tagKeys.end();iT++) {  
 //       addTaggedValue(*iT,values[0]);  
 //     }  
 //   } else {  
 //     if (tagKeys.size()!=values.size()) {  
 //       stringstream temp;  
 //       temp << "Error - (addTaggedValue) Number of tags: " << tagKeys.size()  
 //     << " doesn't match number of values: " << values.size();  
 //       throw DataException(temp.str());  
 //     } else {  
 //       unsigned int i;  
 //       for (i=0;i<tagKeys.size();i++) {  
 //         addTaggedValue(tagKeys[i],values[i]);  
 //       }  
 //     }  
 //   }  
 // }  
   
   
369  void  void
370  DataTagged::addTaggedValues(const TagListType& tagKeys,  DataTagged::addTaggedValues(const TagListType& tagKeys,
371                              const ValueBatchType& values,                              const ValueBatchType& values,
# Line 497  DataTagged::addTaggedValue(int tagKey, Line 430  DataTagged::addTaggedValue(int tagKey,
430      throw DataException(DataTypes::createShapeErrorMessage(      throw DataException(DataTypes::createShapeErrorMessage(
431                          "Error - Cannot addTaggedValue due to shape mismatch.", pointshape,getShape()));                          "Error - Cannot addTaggedValue due to shape mismatch.", pointshape,getShape()));
432    }    }
433      CHECK_FOR_EX_WRITE
434    DataMapType::iterator pos(m_offsetLookup.find(tagKey));    DataMapType::iterator pos(m_offsetLookup.find(tagKey));
435    if (pos!=m_offsetLookup.end()) {    if (pos!=m_offsetLookup.end()) {
436      // tag already exists so use setTaggedValue      // tag already exists so use setTaggedValue
# Line 520  DataTagged::addTaggedValue(int tagKey, Line 454  DataTagged::addTaggedValue(int tagKey,
454    }    }
455  }  }
456    
   
   
   
 // void  
 // DataTagged::addTaggedValue(int tagKey,  
 //                            const DataArrayView& value)  
 // {  
 //   if (!getPointDataView().checkShape(value.getShape())) {  
 //     throw DataException(DataTypes::createShapeErrorMessage(  
 //                         "Error - Cannot addTaggedValue due to shape mismatch.", value.getShape(),getShape()));  
 //   }  
 //   DataMapType::iterator pos(m_offsetLookup.find(tagKey));  
 //   if (pos!=m_offsetLookup.end()) {  
 //     // tag already exists so use setTaggedValue  
 //     setTaggedValue(tagKey,value);  
 //   } else {  
 //     // save the key and the location of its data in the lookup tab  
 //     m_offsetLookup.insert(DataMapType::value_type(tagKey,m_data.size()));  
 //     // add the data given in "value" at the end of m_data  
 //     // need to make a temp copy of m_data, resize m_data, then copy  
 //     // all the old values plus the value to be added back into m_data  
 //     ValueType m_data_temp(m_data);  
 //     int oldSize=m_data.size();  
 //     int newSize=m_data.size()+value.noValues();  
 //     m_data.resize(newSize,0.,newSize);  
 //     for (int i=0;i<oldSize;i++) {  
 //       m_data[i]=m_data_temp[i];  
 //     }  
 //     for (int i=0;i<value.noValues();i++) {  
 //       m_data[oldSize+i]=value.getData(i);  
 //     }  
 //   }  
 // }  
   
   
457  void  void
458  DataTagged::addTag(int tagKey)  DataTagged::addTag(int tagKey)
459  {  {
460      CHECK_FOR_EX_WRITE
461    DataMapType::iterator pos(m_offsetLookup.find(tagKey));    DataMapType::iterator pos(m_offsetLookup.find(tagKey));
462    if (pos!=m_offsetLookup.end()) {    if (pos!=m_offsetLookup.end()) {
463      // tag already exists so use setTaggedValue      // tag already exists so use setTaggedValue
# Line 585  DataTagged::addTag(int tagKey) Line 485  DataTagged::addTag(int tagKey)
485  double*  double*
486  DataTagged::getSampleDataByTag(int tag)  DataTagged::getSampleDataByTag(int tag)
487  {  {
488      CHECK_FOR_EX_WRITE
489    DataMapType::iterator pos(m_offsetLookup.find(tag));    DataMapType::iterator pos(m_offsetLookup.find(tag));
490    if (pos==m_offsetLookup.end()) {    if (pos==m_offsetLookup.end()) {
491      // tag couldn't be found so return the default value      // tag couldn't be found so return the default value
# Line 641  DataTagged::getPointOffset(int sampleNo, Line 542  DataTagged::getPointOffset(int sampleNo,
542    return offset;    return offset;
543  }  }
544    
 // DataArrayView  
 // DataTagged::getDataPointByTag(int tag) const  
 // {  
 //   DataMapType::const_iterator pos(m_offsetLookup.find(tag));  
 //   DataTypes::ValueType::size_type offset=m_defaultValueOffset;  
 //   if (pos!=m_offsetLookup.end()) {  
 //     offset=pos->second;  
 //   }  
 //   DataArrayView temp(getPointDataView());  
 //   temp.setOffset(offset);  
 //   return temp;  
 // }  
 //  
   
   
545  DataTypes::ValueType::size_type  DataTypes::ValueType::size_type
546  DataTagged::getOffsetForTag(int tag) const  DataTagged::getOffsetForTag(int tag) const
547  {  {
# Line 668  DataTagged::getOffsetForTag(int tag) con Line 554  DataTagged::getOffsetForTag(int tag) con
554  }  }
555    
556  DataTypes::ValueType::const_reference  DataTypes::ValueType::const_reference
557  DataTagged::getDataByTag(int tag, DataTypes::ValueType::size_type i) const  DataTagged::getDataByTagRO(int tag, DataTypes::ValueType::size_type i) const
558  {  {
559    DataMapType::const_iterator pos(m_offsetLookup.find(tag));    DataMapType::const_iterator pos(m_offsetLookup.find(tag));
560    DataTypes::ValueType::size_type offset=m_defaultValueOffset;    DataTypes::ValueType::size_type offset=m_defaultValueOffset;
# Line 676  DataTagged::getDataByTag(int tag, DataTy Line 562  DataTagged::getDataByTag(int tag, DataTy
562      offset=pos->second;      offset=pos->second;
563    }    }
564    return m_data[offset+i];    return m_data[offset+i];
 /*  DataArrayView temp(getPointDataView());  
   temp.setOffset(offset);  
   return temp.getData()[offset+i];*/  
565  }  }
566    
   
567  DataTypes::ValueType::reference  DataTypes::ValueType::reference
568  DataTagged::getDataByTag(int tag, DataTypes::ValueType::size_type i)  DataTagged::getDataByTagRW(int tag, DataTypes::ValueType::size_type i)
569  {  {
570      CHECK_FOR_EX_WRITE
571    DataMapType::const_iterator pos(m_offsetLookup.find(tag));    DataMapType::const_iterator pos(m_offsetLookup.find(tag));
572    DataTypes::ValueType::size_type offset=m_defaultValueOffset;    DataTypes::ValueType::size_type offset=m_defaultValueOffset;
573    if (pos!=m_offsetLookup.end()) {    if (pos!=m_offsetLookup.end()) {
574      offset=pos->second;      offset=pos->second;
575    }    }
576    return m_data[offset+i];    return m_data[offset+i];
 /*  DataArrayView temp(getPointDataView());  
   temp.setOffset(offset);  
   return temp.getData()[offset+i];*/  
577  }  }
578    
   
   
   
   
   
 // DataArrayView  
 // DataTagged::getDataPoint(int sampleNo,  
 //                          int dataPointNo)  
 // {  
 //   EsysAssert(validSampleNo(sampleNo),"(getDataPoint) Invalid sampleNo: " << sampleNo);  
 //   int tagKey=getFunctionSpace().getTagFromSampleNo(sampleNo);  
 //   return getDataPointByTag(tagKey);  
 // }  
   
   
579  void  void
580  DataTagged::symmetric(DataAbstract* ev)  DataTagged::symmetric(DataAbstract* ev)
581  {  {
# Line 721  DataTagged::symmetric(DataAbstract* ev) Line 586  DataTagged::symmetric(DataAbstract* ev)
586    const DataTagged::DataMapType& thisLookup=getTagLookup();    const DataTagged::DataMapType& thisLookup=getTagLookup();
587    DataTagged::DataMapType::const_iterator i;    DataTagged::DataMapType::const_iterator i;
588    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();
589    ValueType& evVec=temp_ev->getVector();    ValueType& evVec=temp_ev->getVectorRW();
590    const ShapeType& evShape=temp_ev->getShape();    const ShapeType& evShape=temp_ev->getShape();
591    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {
592        temp_ev->addTag(i->first);        temp_ev->addTag(i->first);
593        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);
 //       DataArrayView thisView=getDataPointByTag(i->first);  
 //       DataArrayView evView=temp_ev->getDataPointByTag(i->first);  
594        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);
   
 //       DataArrayView::symmetric(thisView,0,evView,0);  
595        DataMaths::symmetric(m_data,getShape(),offset,evVec, evShape, evoffset);        DataMaths::symmetric(m_data,getShape(),offset,evVec, evShape, evoffset);
596    }    }
 //   symmetric(m_data,getShape(),getDefaultOffset(),  
597    DataMaths::symmetric(m_data,getShape(),getDefaultOffset(),evVec,evShape,temp_ev->getDefaultOffset());    DataMaths::symmetric(m_data,getShape(),getDefaultOffset(),evVec,evShape,temp_ev->getDefaultOffset());
598  }  }
599    
# Line 748  DataTagged::nonsymmetric(DataAbstract* e Line 608  DataTagged::nonsymmetric(DataAbstract* e
608    const DataTagged::DataMapType& thisLookup=getTagLookup();    const DataTagged::DataMapType& thisLookup=getTagLookup();
609    DataTagged::DataMapType::const_iterator i;    DataTagged::DataMapType::const_iterator i;
610    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();
611    ValueType& evVec=temp_ev->getVector();    ValueType& evVec=temp_ev->getVectorRW();
612    const ShapeType& evShape=temp_ev->getShape();    const ShapeType& evShape=temp_ev->getShape();
613    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {
614        temp_ev->addTag(i->first);        temp_ev->addTag(i->first);
 /*      DataArrayView thisView=getDataPointByTag(i->first);  
       DataArrayView evView=temp_ev->getDataPointByTag(i->first);*/  
615        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);
616        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);
617        DataMaths::nonsymmetric(m_data,getShape(),offset,evVec, evShape, evoffset);        DataMaths::nonsymmetric(m_data,getShape(),offset,evVec, evShape, evoffset);
# Line 772  DataTagged::trace(DataAbstract* ev, int Line 630  DataTagged::trace(DataAbstract* ev, int
630    const DataTagged::DataMapType& thisLookup=getTagLookup();    const DataTagged::DataMapType& thisLookup=getTagLookup();
631    DataTagged::DataMapType::const_iterator i;    DataTagged::DataMapType::const_iterator i;
632    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();
633    ValueType& evVec=temp_ev->getVector();    ValueType& evVec=temp_ev->getVectorRW();
634    const ShapeType& evShape=temp_ev->getShape();    const ShapeType& evShape=temp_ev->getShape();
635    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {
636        temp_ev->addTag(i->first);        temp_ev->addTag(i->first);
 //       DataArrayView thisView=getDataPointByTag(i->first);  
 //       DataArrayView evView=temp_ev->getDataPointByTag(i->first);  
637        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);
638        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);
639        DataMaths::trace(m_data,getShape(),offset,evVec, evShape, evoffset, axis_offset);        DataMaths::trace(m_data,getShape(),offset,evVec, evShape, evoffset, axis_offset);
# Line 795  DataTagged::transpose(DataAbstract* ev, Line 651  DataTagged::transpose(DataAbstract* ev,
651    const DataTagged::DataMapType& thisLookup=getTagLookup();    const DataTagged::DataMapType& thisLookup=getTagLookup();
652    DataTagged::DataMapType::const_iterator i;    DataTagged::DataMapType::const_iterator i;
653    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();
654    ValueType& evVec=temp_ev->getVector();    ValueType& evVec=temp_ev->getVectorRW();
655    const ShapeType& evShape=temp_ev->getShape();    const ShapeType& evShape=temp_ev->getShape();
656    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {
657        temp_ev->addTag(i->first);        temp_ev->addTag(i->first);
 //       DataArrayView thisView=getDataPointByTag(i->first);  
 //       DataArrayView evView=temp_ev->getDataPointByTag(i->first);  
658        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);
659        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);
660        DataMaths::transpose(m_data,getShape(),offset,evVec, evShape, evoffset, axis_offset);        DataMaths::transpose(m_data,getShape(),offset,evVec, evShape, evoffset, axis_offset);
# Line 818  DataTagged::swapaxes(DataAbstract* ev, i Line 672  DataTagged::swapaxes(DataAbstract* ev, i
672    const DataTagged::DataMapType& thisLookup=getTagLookup();    const DataTagged::DataMapType& thisLookup=getTagLookup();
673    DataTagged::DataMapType::const_iterator i;    DataTagged::DataMapType::const_iterator i;
674    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();
675    ValueType& evVec=temp_ev->getVector();    ValueType& evVec=temp_ev->getVectorRW();
676    const ShapeType& evShape=temp_ev->getShape();    const ShapeType& evShape=temp_ev->getShape();
677    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {
678        temp_ev->addTag(i->first);        temp_ev->addTag(i->first);
 /*      DataArrayView thisView=getDataPointByTag(i->first);  
       DataArrayView evView=temp_ev->getDataPointByTag(i->first);*/  
679        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);        DataTypes::ValueType::size_type offset=getOffsetForTag(i->first);
680        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);        DataTypes::ValueType::size_type evoffset=temp_ev->getOffsetForTag(i->first);
681        DataMaths::swapaxes(m_data,getShape(),offset,evVec, evShape, evoffset,axis0,axis1);        DataMaths::swapaxes(m_data,getShape(),offset,evVec, evShape, evoffset,axis0,axis1);
# Line 841  DataTagged::eigenvalues(DataAbstract* ev Line 693  DataTagged::eigenvalues(DataAbstract* ev
693    const DataTagged::DataMapType& thisLookup=getTagLookup();    const DataTagged::DataMapType& thisLookup=getTagLookup();
694    DataTagged::DataMapType::const_iterator i;    DataTagged::DataMapType::const_iterator i;
695    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();
696    ValueType& evVec=temp_ev->getVector();    ValueType& evVec=temp_ev->getVectorRW();
697    const ShapeType& evShape=temp_ev->getShape();    const ShapeType& evShape=temp_ev->getShape();
698    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {
699        temp_ev->addTag(i->first);        temp_ev->addTag(i->first);
# Line 867  DataTagged::eigenvalues_and_eigenvectors Line 719  DataTagged::eigenvalues_and_eigenvectors
719    const DataTagged::DataMapType& thisLookup=getTagLookup();    const DataTagged::DataMapType& thisLookup=getTagLookup();
720    DataTagged::DataMapType::const_iterator i;    DataTagged::DataMapType::const_iterator i;
721    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();    DataTagged::DataMapType::const_iterator thisLookupEnd=thisLookup.end();
722    ValueType& evVec=temp_ev->getVector();    ValueType& evVec=temp_ev->getVectorRW();
723    const ShapeType& evShape=temp_ev->getShape();    const ShapeType& evShape=temp_ev->getShape();
724    ValueType& VVec=temp_V->getVector();    ValueType& VVec=temp_V->getVectorRW();
725    const ShapeType& VShape=temp_V->getShape();    const ShapeType& VShape=temp_V->getShape();
726    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {    for (i=thisLookup.begin();i!=thisLookupEnd;i++) {
727        temp_ev->addTag(i->first);        temp_ev->addTag(i->first);
# Line 893  DataTagged::eigenvalues_and_eigenvectors Line 745  DataTagged::eigenvalues_and_eigenvectors
745    
746  void  void
747  DataTagged::setToZero(){  DataTagged::setToZero(){
748        CHECK_FOR_EX_WRITE
749      DataTypes::ValueType::size_type n=m_data.size();      DataTypes::ValueType::size_type n=m_data.size();
750      for (int i=0; i<n ;++i) m_data[i]=0.;      for (int i=0; i<n ;++i) m_data[i]=0.;
751  }  }
# Line 1000  DataTagged::dump(const std::string fileN Line 853  DataTagged::dump(const std::string fileN
853  }  }
854    
855  DataTypes::ValueType&  DataTypes::ValueType&
856  DataTagged::getVector()  DataTagged::getVectorRW()
857  {  {
858        CHECK_FOR_EX_WRITE
859      return m_data;      return m_data;
860  }  }
861    
862  const DataTypes::ValueType&  const DataTypes::ValueType&
863  DataTagged::getVector() const  DataTagged::getVectorRO() const
864  {  {
865      return m_data;      return m_data;
866  }  }
867    
868  }  // end of namespace  }  // end of namespace

Legend:
Removed from v.2008  
changed lines
  Added in v.2271

  ViewVC Help
Powered by ViewVC 1.1.26