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

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

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

revision 513 by jgs, Mon Feb 13 04:46:51 2006 UTC revision 1388 by trankine, Fri Jan 11 07:45:58 2008 UTC
# Line 1  Line 1 
 // $Id$  
1    
2  /*  /* $Id$ */
3   ******************************************************************************  
4   *                                                                            *  /*******************************************************
5   *       COPYRIGHT  ACcESS 2004 -  All Rights Reserved                        *   *
6   *                                                                            *   *           Copyright 2003-2007 by ACceSS MNRF
7   * This software is the property of ACcESS. No part of this code              *   *       Copyright 2007 by University of Queensland
8   * may be copied in any form or by any means without the expressed written    *   *
9   * consent of ACcESS.  Copying, use or modification of this software          *   *                http://esscc.uq.edu.au
10   * by any unauthorised person is illegal unless that person has a software    *   *        Primary Business: Queensland, Australia
11   * license agreement with ACcESS.                                             *   *  Licensed under the Open Software License version 3.0
12   *                                                                            *   *     http://www.opensource.org/licenses/osl-3.0.php
13   ******************************************************************************   *
14  */   *******************************************************/
15    
16  #if !defined escript_DataTagged_20040615_H  #if !defined escript_DataTagged_20040615_H
17  #define escript_DataTagged_20040615_H  #define escript_DataTagged_20040615_H
18    #include "system_dep.h"
19    
20  #include "DataAbstract.h"  #include "DataAbstract.h"
21  #include "DataArrayView.h"  #include "DataArrayView.h"
# Line 62  class DataTagged : public DataAbstract { Line 62  class DataTagged : public DataAbstract {
62       tag values are stored.       tag values are stored.
63      T      T
64    */    */
65      ESCRIPT_DLL_API
66    DataTagged();    DataTagged();
67    
68    /**    /**
# Line 82  class DataTagged : public DataAbstract { Line 83  class DataTagged : public DataAbstract {
83       \param what - Input - A description of what this data represents.       \param what - Input - A description of what this data represents.
84      T      T
85    */    */
86      ESCRIPT_DLL_API
87    DataTagged(const TagListType& tagKeys,    DataTagged(const TagListType& tagKeys,
88               const ValueListType& values,               const ValueListType& values,
89           const DataArrayView& defaultValue,           const DataArrayView& defaultValue,
# Line 97  class DataTagged : public DataAbstract { Line 99  class DataTagged : public DataAbstract {
99       \param shape - Input - The shape of each data-point.       \param shape - Input - The shape of each data-point.
100       \param tags - Input - An array of tags, one for each sample number.       \param tags - Input - An array of tags, one for each sample number.
101       \param data - The data values for each tag.       \param data - The data values for each tag.
102        NB: no unit testing yet
103    */    */
104      ESCRIPT_DLL_API
105    DataTagged(const FunctionSpace& what,    DataTagged(const FunctionSpace& what,
106               const DataArrayView::ShapeType &shape,               const DataArrayView::ShapeType &shape,
107               const int tags[],               const int tags[],
# Line 105  class DataTagged : public DataAbstract { Line 109  class DataTagged : public DataAbstract {
109    
110    /**    /**
111       \brief       \brief
112         Alternative Constructor for DataTagged.
113    
114         Description:
115         Alternative Constructor for DataTagged.
116         \param what - Input - A description of what this data object represents.
117         \param shape - Input - The shape of each data-point.
118         \param tags - Input - An vector of tags, one for each sample number.
119         \param data - The data values for each tag.
120        NB: no unit testing yet
121      */
122      ESCRIPT_DLL_API
123      DataTagged(const FunctionSpace& what,
124                 const DataArrayView::ShapeType &shape,
125                 const TagListType& tags,
126                 const ValueType& data);
127    
128      /**
129         \brief
130       Copy Constructor for DataTagged.       Copy Constructor for DataTagged.
131       Performs a deep copy from the given DataTagged object.       Performs a deep copy from the given DataTagged object.
132      T      T
133    */    */
134      ESCRIPT_DLL_API
135    DataTagged(const DataTagged& other);    DataTagged(const DataTagged& other);
136    
137    /**    /**
# Line 118  class DataTagged : public DataAbstract { Line 141  class DataTagged : public DataAbstract {
141       The default value will be the value of the DataConstant object.       The default value will be the value of the DataConstant object.
142      T      T
143    */    */
144      ESCRIPT_DLL_API
145    DataTagged(const DataConstant& other);    DataTagged(const DataConstant& other);
146    
147    /**    /**
# Line 132  class DataTagged : public DataAbstract { Line 156  class DataTagged : public DataAbstract {
156       ** NB: need to do array bounds checking when accessing returned value!       ** NB: need to do array bounds checking when accessing returned value!
157      T      T
158    */    */
159      ESCRIPT_DLL_API
160    virtual    virtual
161    double*    double*
162    getSampleDataByTag(int tag);    getSampleDataByTag(int tag);
# Line 143  class DataTagged : public DataAbstract { Line 168  class DataTagged : public DataAbstract {
168       associated with each tag.       associated with each tag.
169      T      T
170    */    */
171      ESCRIPT_DLL_API
172    virtual    virtual
173    std::string    std::string
174    toString() const;    toString() const;
175     /**
176         \brief
177         dumps the object into a netCDF file
178      */
179      ESCRIPT_DLL_API
180      virtual
181      void
182      dump(const std::string fileName) const;
183    
184     /**
185         \brief
186        sets all values to zero
187      */
188      ESCRIPT_DLL_API
189      virtual
190      void
191      setToZero();
192    
193    /**    /**
194       \brief       \brief
# Line 153  class DataTagged : public DataAbstract { Line 196  class DataTagged : public DataAbstract {
196       according to the associated function space.       according to the associated function space.
197      T      T
198    */    */
199      ESCRIPT_DLL_API
200    virtual    virtual
201    int    int
202    getTagNumber(int dpno);    getTagNumber(int dpno);
# Line 169  class DataTagged : public DataAbstract { Line 213  class DataTagged : public DataAbstract {
213       \param dataPointNo - Input - data-point number.       \param dataPointNo - Input - data-point number.
214      T      T
215    */    */
216      ESCRIPT_DLL_API
217    virtual    virtual
218    ValueType::size_type    ValueType::size_type
219    getPointOffset(int sampleNo,    getPointOffset(int sampleNo,
# Line 190  class DataTagged : public DataAbstract { Line 235  class DataTagged : public DataAbstract {
235               will be generated.               will be generated.
236      T      T
237    */    */
238      ESCRIPT_DLL_API
239    void    void
240    addTaggedValues(const TagListType& tagKeys,    addTaggedValues(const TagListType& tagKeys,
241                    const ValueListType& values);                      const ValueListType& values);  
# Line 205  class DataTagged : public DataAbstract { Line 251  class DataTagged : public DataAbstract {
251       \param value - Input - Single DataArrayView value to be assigned to the tag.       \param value - Input - Single DataArrayView value to be assigned to the tag.
252      T      T
253    */    */
254      ESCRIPT_DLL_API
255    void    void
256    addTaggedValue(int tagKey,    addTaggedValue(int tagKey,
257                   const DataArrayView& value);                   const DataArrayView& value);
# Line 225  class DataTagged : public DataAbstract { Line 272  class DataTagged : public DataAbstract {
272               will be generated.               will be generated.
273      T      T
274    */    */
275      ESCRIPT_DLL_API
276    void    void
277    setTaggedValues(const TagListType& tagKeys,    setTaggedValues(const TagListType& tagKeys,
278                    const ValueListType& values);                    const ValueListType& values);
# Line 239  class DataTagged : public DataAbstract { Line 287  class DataTagged : public DataAbstract {
287       \param value - Input - Single DataArrayView value to be assigned to the tag.       \param value - Input - Single DataArrayView value to be assigned to the tag.
288      T      T
289    */    */
290      ESCRIPT_DLL_API
291    virtual    virtual
292    void    void
293    setTaggedValue(int tagKey,    setTaggedValue(int tagKey,
# Line 253  class DataTagged : public DataAbstract { Line 302  class DataTagged : public DataAbstract {
302       \param tag - Input - Integer key.       \param tag - Input - Integer key.
303      T      T
304    */    */
305      ESCRIPT_DLL_API
306    DataArrayView    DataArrayView
307    getDataPointByTag(int tag) const;    getDataPointByTag(int tag) const;
308    
# Line 267  class DataTagged : public DataAbstract { Line 317  class DataTagged : public DataAbstract {
317       \param dataPointNo - Input.       \param dataPointNo - Input.
318      T      T
319    */    */
320      ESCRIPT_DLL_API
321    virtual    virtual
322    DataArrayView    DataArrayView
323    getDataPoint(int sampleNo,    getDataPoint(int sampleNo,
324                 int dataPointNo);                 int dataPointNo);
325    
326    /**    /**
327         \brief
328         getData
329    
330         Description:
331         Return pointer to the data
332        T
333      */
334      ESCRIPT_DLL_API
335      const DataArrayView::ValueType::ElementType*
336      getData() const;
337    
338      /**
339       \brief       \brief
340       getTagLookup       getTagLookup
341    
# Line 280  class DataTagged : public DataAbstract { Line 343  class DataTagged : public DataAbstract {
343       Return a reference to the tag offset lookup table.       Return a reference to the tag offset lookup table.
344      T      T
345    */    */
346      ESCRIPT_DLL_API
347    const DataMapType&    const DataMapType&
348    getTagLookup() const;    getTagLookup() const;
349    
# Line 294  class DataTagged : public DataAbstract { Line 358  class DataTagged : public DataAbstract {
358       keys in the associated function space.       keys in the associated function space.
359      T      T
360    */    */
361      ESCRIPT_DLL_API
362    bool    bool
363    isCurrentTag(int tag) const;    isCurrentTag(int tag) const;
364    
# Line 306  class DataTagged : public DataAbstract { Line 371  class DataTagged : public DataAbstract {
371       is not explicitly recorded in this DataTagged object's tag map.       is not explicitly recorded in this DataTagged object's tag map.
372      T      T
373    */    */
374      ESCRIPT_DLL_API
375    DataArrayView&    DataArrayView&
376    getDefaultValue();    getDefaultValue();
377    
378      ESCRIPT_DLL_API
379    const DataArrayView&    const DataArrayView&
380    getDefaultValue() const;    getDefaultValue() const;
381    
# Line 320  class DataTagged : public DataAbstract { Line 387  class DataTagged : public DataAbstract {
387       Return the total number of doubles stored for this DataTagged object.       Return the total number of doubles stored for this DataTagged object.
388      T      T
389    */    */
390      ESCRIPT_DLL_API
391    virtual    virtual
392    ValueType::size_type    ValueType::size_type
393    getLength() const;    getLength() const;
# Line 332  class DataTagged : public DataAbstract { Line 400  class DataTagged : public DataAbstract {
400       Factory method that returns a newly created DataTagged object generated       Factory method that returns a newly created DataTagged object generated
401       by taking the specified slice from this DataTagged object.       by taking the specified slice from this DataTagged object.
402       The caller is reponsible for managing the returned object.       The caller is reponsible for managing the returned object.
403        T
404    */    */
405      ESCRIPT_DLL_API
406    virtual    virtual
407    DataAbstract*    DataAbstract*
408    getSlice(const DataArrayView::RegionType& region) const;    getSlice(const DataArrayView::RegionType& region) const;
# Line 342  class DataTagged : public DataAbstract { Line 412  class DataTagged : public DataAbstract {
412       Slice Constructor for DataTagged.       Slice Constructor for DataTagged.
413    
414       Description:       Description:
      Slice Constructor for DataTagged.  
415       Creates a DataTagged object which is the specified slice       Creates a DataTagged object which is the specified slice
416       from another DataTagged object.       from the given DataTagged object.
417       \param other - Input - DataTagged object to copy from.       \param other - Input - DataTagged object to slice from.
418       \param region - Input - Region to copy.       \param region - Input - Region to slice.
419        T
420    */    */
421      ESCRIPT_DLL_API
422    DataTagged(const DataTagged& other,    DataTagged(const DataTagged& other,
423           const DataArrayView::RegionType& region);           const DataArrayView::RegionType& region);
424    
# Line 356  class DataTagged : public DataAbstract { Line 427  class DataTagged : public DataAbstract {
427       setSlice       setSlice
428    
429       Description:       Description:
430       Copy the specified region from the given Data object into this object.       Copy the given Data object into the specified region in this object.
431       \param other - Input - Data object to copy from.       \param other - Input - Data object to copy from.
432       \param region - Input - Region to copy (NB: must have same shape as this!).       \param region - Input - Region to copy into (NB: must have same shape as other!).
433        T
434    */    */
435      ESCRIPT_DLL_API
436    virtual    virtual
437    void    void
438    setSlice(const DataAbstract* other,    setSlice(const DataAbstract* other,
# Line 367  class DataTagged : public DataAbstract { Line 440  class DataTagged : public DataAbstract {
440    
441    /**    /**
442       \brief       \brief
      reshapeDataPoint  
   
      Description:  
      Reshape each data-point in this object to the given shape, only  
      if current data-points are scalars. An exception is thrown if  
      the current data-points have rank other than 0.  
      The original values of the data-points are used for all values  
      of the new data-points.  
     T  
   */  
   void  
   reshapeDataPoint(const DataArrayView::ShapeType& shape);  
   
   /**  
      \brief  
443       Archive the underlying data values to the file referenced       Archive the underlying data values to the file referenced
444       by ofstream. A count of the number of values expected to be written       by ofstream. A count of the number of values expected to be written
445       is provided as a cross-check.       is provided as a cross-check.
446    
447       The return value indicates success (0) or otherwise (1).       The return value indicates success (0) or otherwise (1).
448    */    */
449      ESCRIPT_DLL_API
450    int    int
451    archiveData(std::ofstream& archiveFile,    archiveData(std::ofstream& archiveFile,
452                const DataArrayView::ValueType::size_type noValues) const;                const DataArrayView::ValueType::size_type noValues) const;
# Line 399  class DataTagged : public DataAbstract { Line 458  class DataTagged : public DataAbstract {
458    
459       The return value indicates success (0) or otherwise (1).       The return value indicates success (0) or otherwise (1).
460    */    */
461      ESCRIPT_DLL_API
462    int    int
463    extractData(std::ifstream& archiveFile,    extractData(std::ifstream& archiveFile,
464                const DataArrayView::ValueType::size_type noValues);                const DataArrayView::ValueType::size_type noValues);
465    
466      /**
467         \brief
468         Computes a symmetric matrix (A + AT) / 2
469    
470         \param ev - Output - symmetric matrix
471    
472      */
473      ESCRIPT_DLL_API
474      virtual void
475      symmetric(DataAbstract* ev);
476    
477      /**
478         \brief
479         Computes a nonsymmetric matrix (A - AT) / 2
480    
481         \param ev - Output - nonsymmetric matrix
482    
483      */
484      ESCRIPT_DLL_API
485      virtual void
486      nonsymmetric(DataAbstract* ev);
487    
488      /**
489         \brief
490         Computes the trace of a matrix
491    
492         \param ev - Output - the trace of a matrix
493    
494      */
495      ESCRIPT_DLL_API
496      virtual void
497      trace(DataAbstract* ev, int axis_offset);
498    
499      /**
500         \brief
501         swaps components axis0 and axis1
502    
503         \param ev - Output - swapped components
504    
505      */
506      ESCRIPT_DLL_API
507      virtual void
508      swapaxes(DataAbstract* ev, int axis0, int axis1);
509    
510      /**
511         \brief
512         Transpose each data point of this Data object around the given axis.
513    
514         \param ev - Output - the transpose of a matrix
515    
516      */
517      ESCRIPT_DLL_API
518      virtual void
519      transpose(DataAbstract* ev, int axis_offset);
520    
521      /**
522         \brief
523         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
524    
525         \param ev - Output - eigenvalues in increasing order at each data point
526    
527      */
528      ESCRIPT_DLL_API
529      virtual void
530      eigenvalues(DataAbstract* ev);
531    
532      /**
533         \brief
534         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V
535    
536         \param ev - Output - eigenvalues in increasing order at each data point
537         \param V - Output - corresponding eigenvectors. They are normalized such that their length is one
538                             and the first nonzero component is positive.
539         \param tol - Input - eigenvalue with relative distance tol are treated as equal.
540    
541      */
542    
543      ESCRIPT_DLL_API
544      virtual void
545      eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
546    
547    
548   protected:   protected:
549    
550   private:   private:
# Line 446  DataTagged::getDefaultValue() const Line 588  DataTagged::getDefaultValue() const
588  }  }
589    
590  inline  inline
591    const DataArrayView::ValueType::ElementType*
592    DataTagged::getData() const
593    {
594       return &(m_data[0]);
595    }
596    
597    inline
598  const DataTagged::DataMapType&  const DataTagged::DataMapType&
599  DataTagged::getTagLookup() const  DataTagged::getTagLookup() const
600  {  {

Legend:
Removed from v.513  
changed lines
  Added in v.1388

  ViewVC Help
Powered by ViewVC 1.1.26