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

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

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

revision 804 by gross, Thu Aug 10 01:12:16 2006 UTC revision 2548 by jfenwick, Mon Jul 20 06:20:06 2009 UTC
# Line 1  Line 1 
1  // $Id$  
2  /*  /*******************************************************
3   ************************************************************  *
4   *          Copyright 2006 by ACcESS MNRF                   *  * Copyright (c) 2003-2009 by University of Queensland
5   *                                                          *  * Earth Systems Science Computational Center (ESSCC)
6   *              http://www.access.edu.au                    *  * http://www.uq.edu.au/esscc
7   *       Primary Business: Queensland, Australia            *  *
8   *  Licensed under the Open Software License version 3.0    *  * Primary Business: Queensland, Australia
9   *     http://www.opensource.org/licenses/osl-3.0.php       *  * Licensed under the Open Software License version 3.0
10   *                                                          *  * http://www.opensource.org/licenses/osl-3.0.php
11   ************************************************************  *
12  */  *******************************************************/
13    
14    
15  #if !defined escript_DataExpanded_20040323_H  #if !defined escript_DataExpanded_20040323_H
16  #define escript_DataExpanded_20040323_H  #define escript_DataExpanded_20040323_H
17  #include "system_dep.h"  #include "system_dep.h"
18    
19  #include "DataAbstract.h"  #include "DataReady.h"
20  #include "DataBlocks2D.h"  #include "DataBlocks2D.h"
 #include "DataArrayView.h"  
21    
22  #include <boost/python/numeric.hpp>  #include <boost/python/numeric.hpp>
23    
# Line 40  class DataTagged; Line 40  class DataTagged;
40     template must satisfy.     template must satisfy.
41  */  */
42    
43  class DataExpanded : public DataAbstract {  class DataExpanded : public DataReady {
44    
45    typedef DataReady parent;
46    
47   public:   public:
48    
# Line 55  class DataExpanded : public DataAbstract Line 57  class DataExpanded : public DataAbstract
57       this data object, where the number of data points is defined by       this data object, where the number of data points is defined by
58       the given function space.       the given function space.
59    
60       \param value - Input - A single data value.       \param value - Input - The value of a single data point.
61       \param what - Input - A description of what this data represents.       \param what - Input - A description of what this data represents.
62    */    */
63    ESCRIPT_DLL_API    ESCRIPT_DLL_API
64    DataExpanded(const boost::python::numeric::array& value,    DataExpanded(const WrappedArray& value,
                const FunctionSpace& what);  
   
   /**  
      \brief  
      Alternative constructor for DataExpanded.  
   
      Description:  
      Alternative Constructor for DataExpanded.  
   
      The given single data value is copied to all the data points in  
      this data object, where the number of data points is defined by  
      the given function space.  
   
      \param value - Input - A single data value.  
      \param what - Input - A description of what this data represents.  
   */  
   ESCRIPT_DLL_API  
   DataExpanded(const DataArrayView& value,  
65                 const FunctionSpace& what);                 const FunctionSpace& what);
66    
67    /**    /**
# Line 90  class DataExpanded : public DataAbstract Line 74  class DataExpanded : public DataAbstract
74    */    */
75    ESCRIPT_DLL_API    ESCRIPT_DLL_API
76    DataExpanded(const DataExpanded& other,    DataExpanded(const DataExpanded& other,
77                 const DataArrayView::RegionType& region);                 const DataTypes::RegionType& region);
78    
79    /**    /**
80       \brief       \brief
# Line 101  class DataExpanded : public DataAbstract Line 85  class DataExpanded : public DataAbstract
85       \param what - Input - A description of what this data object represents.       \param what - Input - A description of what this data object represents.
86       \param shape - Input - the shape of each data-point.       \param shape - Input - the shape of each data-point.
87       \param data - the array of data values for the data-points.       \param data - the array of data values for the data-points.
88    
89    TODO Note that this constructor will also copy data to all points if it only contains enough elements to hold a single point.  ie this is the merge of two separate constructors.
90    */    */
91    ESCRIPT_DLL_API    ESCRIPT_DLL_API
92    DataExpanded(const FunctionSpace& what,    DataExpanded(const FunctionSpace& what,
93                 const DataArrayView::ShapeType &shape,                 const DataTypes::ShapeType &shape,
94                 const DataArrayView::ValueType &data);                 const DataTypes::ValueType &data);
95    
96    /**    /**
97       \brief       \brief
# Line 139  class DataExpanded : public DataAbstract Line 125  class DataExpanded : public DataAbstract
125    virtual    virtual
126    ~DataExpanded();    ~DataExpanded();
127    
128      ESCRIPT_DLL_API
129      bool
130      isExpanded() const
131      {
132        return true;
133      };
134    
135      ESCRIPT_DLL_API
136      bool
137      actsExpanded() const
138      {
139        return true;
140      }
141    
142    /**    /**
143       \brief       \brief
144       Return a textual representation of the data.       Return a textual representation of the data.
# Line 149  class DataExpanded : public DataAbstract Line 149  class DataExpanded : public DataAbstract
149    toString() const;    toString() const;
150    
151    /**    /**
152         \brief Return a deep copy of the current object.
153      */
154      ESCRIPT_DLL_API
155      virtual
156      DataAbstract*
157      deepCopy();
158    
159    
160     /**
161         \brief
162         dumps the object into a netCDF file
163      */
164      ESCRIPT_DLL_API
165      virtual
166      void
167      dump(const std::string fileName) const;
168    
169     /**
170       \brief       \brief
171       Reshape the data point if the data point is currently rank 0.      sets all values to zero
      The original data point value is used for all values of the new  
      data point.  
172    */    */
173    ESCRIPT_DLL_API    ESCRIPT_DLL_API
174      virtual
175    void    void
176    reshapeDataPoint(const DataArrayView::ShapeType& shape);    setToZero();
177    
178    /**    /**
179       \brief       \brief
# Line 169  class DataExpanded : public DataAbstract Line 186  class DataExpanded : public DataAbstract
186    */    */
187    ESCRIPT_DLL_API    ESCRIPT_DLL_API
188    virtual    virtual
189    DataArrayView::ValueType::size_type    DataTypes::ValueType::size_type
190    getPointOffset(int sampleNo,    getPointOffset(int sampleNo,
191                   int dataPointNo) const;                   int dataPointNo) const;
192    
193      ESCRIPT_DLL_API
194      virtual
195      DataTypes::ValueType::size_type
196      getPointOffset(int sampleNo,
197                     int dataPointNo);
198    
199    /**    /**
200       \brief       \brief
201       Return a view into the data array for the data point specified.       Return a a reference to the underlying DataVector.
202      */
203    
204       NOTE: Construction of the DataArrayView is a relatively expensive    ESCRIPT_DLL_API
205       operation.    DataTypes::ValueType&
206      getVectorRW();
207    
      \param sampleNo - Input - sample number.  
      \param dataPointNo - Input - data point number.  
      \return DataArrayView for the data point.  
   */  
208    ESCRIPT_DLL_API    ESCRIPT_DLL_API
209    DataArrayView    const DataTypes::ValueType&
210    getDataPoint(int sampleNo,    getVectorRO() const;
211                 int dataPointNo);  
212    
213    
214    /**    /**
215       \brief       \brief
# Line 208  class DataExpanded : public DataAbstract Line 230  class DataExpanded : public DataAbstract
230    ESCRIPT_DLL_API    ESCRIPT_DLL_API
231    virtual    virtual
232    DataAbstract*    DataAbstract*
233    getSlice(const DataArrayView::RegionType& region) const;    getSlice(const DataTypes::RegionType& region) const;
234    
235    /**    /**
236       \brief       \brief
# Line 221  class DataExpanded : public DataAbstract Line 243  class DataExpanded : public DataAbstract
243    virtual    virtual
244    void    void
245    setSlice(const DataAbstract* value,    setSlice(const DataAbstract* value,
246             const DataArrayView::RegionType& region);             const DataTypes::RegionType& region);
   
   /**  
      \brief  
      Assign the given value to all data-points associated with the given  
      reference number.  
   
      A reference number corresponds to a sample, and thus to all data-points  
      in that sample.  
   
      If the given reference number does not correspond to any sample in this  
      Data object, an exception will be thrown.  
   
      If the given value is a different shape to this Data object, an exception  
      will be thrown.  
   
      \param ref - Input - reference number which determines sample numebr to  
                           assign given values to.  
      \param value - Input - Value to assign to data-point associated with  
                             the given reference number.  
   */  
   ESCRIPT_DLL_API  
   virtual  
   void  
   setRefValue(int ref,  
               const DataArray& value);  
247    
248    /**    /**
249       \brief       \brief
250       Return the value of the first data-point in the sample associated with       setTaggedValue
      the given reference number.  
   
      A reference number corresponds to a sample, and thus to all data-points  
      in that sample. If there is more than one data-point per sample number  
      in this Data object, the value of the first data-point will be returned.  
251    
252       If the given reference number does not correspond to any sample in this       Description:
253       Data object, an exception will be thrown.       uses tag to set a new value
   
      If the given value is a different shape to this Data object, an exception  
      will be thrown.  
   
      \param ref - Input - reference number which determines sample number to  
                           read from.  
      \param value - Output - Object to receive data-points associated with  
                             the given reference number.  
   */  
   ESCRIPT_DLL_API  
   virtual  
   void  
   getRefValue(int ref,  
               DataArray& value);  
   
   /**  
     \brief  
     Archive the underlying data values to the file referenced  
     by ofstream. A count of the number of values expected to be written  
     is provided as a cross-check.  
254    
255      The return value indicates success (0) or otherwise (1).       \param tagKey - Input - Integer key.
256    */       \param pointshape - Input - The shape of the value parameter
257    ESCRIPT_DLL_API       \param value - Input -
258    int       \param dataOffset - Input - where in the value parameter to start reading the data point value.
259    archiveData(std::ofstream& archiveFile,    */
260                const DataArrayView::ValueType::size_type noValues) const;    void  
261      setTaggedValue(int tagKey,
262                 const DataTypes::ShapeType& pointshape,
263                     const DataTypes::ValueType& value,
264             int dataOffset=0);
265    
   /**  
     \brief  
     Extract the number of values specified by noValues from the file  
     referenced by ifstream to the underlying data structure.  
266    
     The return value indicates success (0) or otherwise (1).  
   */  
   ESCRIPT_DLL_API  
   int  
   extractData(std::ifstream& archiveFile,  
               const DataArrayView::ValueType::size_type noValues);  
267    
268    /**    /**
269       \brief       \brief
# Line 326  class DataExpanded : public DataAbstract Line 292  class DataExpanded : public DataAbstract
292       Computes the trace of a matrix       Computes the trace of a matrix
293    
294       \param ev - Output - trace of your matrix       \param ev - Output - trace of your matrix
295         \param axis_offset -
296    
297    */    */
298    ESCRIPT_DLL_API    ESCRIPT_DLL_API
# Line 337  class DataExpanded : public DataAbstract Line 304  class DataExpanded : public DataAbstract
304       Transpose each data point of this Data object around the given axis.       Transpose each data point of this Data object around the given axis.
305    
306       \param ev - Output - transpose of your matrix       \param ev - Output - transpose of your matrix
307         \param axis_offset -
308    */    */
309    ESCRIPT_DLL_API    ESCRIPT_DLL_API
310    virtual void    virtual void
# Line 348  class DataExpanded : public DataAbstract Line 315  class DataExpanded : public DataAbstract
315       swaps components axis0 and axis1       swaps components axis0 and axis1
316    
317       \param ev - Output - swapped components       \param ev - Output - swapped components
318         \param axis0
319         \param axis1
320    */    */
321    ESCRIPT_DLL_API    ESCRIPT_DLL_API
322    virtual void    virtual void
# Line 381  class DataExpanded : public DataAbstract Line 349  class DataExpanded : public DataAbstract
349    virtual void    virtual void
350    eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);    eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
351    
352    /**
353     *      \brief
354     *           reorders data sample ordered by reference_ids to the ordering of the functions space
355     *
356     *                \param reference_ids - Input - reference_ids used for current ordering
357     *                  */
358      ESCRIPT_DLL_API
359      virtual void
360      reorderByReferenceIDs(int *reference_ids);
361    
362    
363    
364   protected:   protected:
365    
# Line 397  class DataExpanded : public DataAbstract Line 376  class DataExpanded : public DataAbstract
376       given shape and number of data points, and creates the corresponding       given shape and number of data points, and creates the corresponding
377       DataArrayView of this data.       DataArrayView of this data.
378    
      \param shape - Input - The shape of the point data.  
379       \param noSamples - Input - number of samples.       \param noSamples - Input - number of samples.
380       \param noDataPointsPerSample - Input - number of data points per sample.       \param noDataPointsPerSample - Input - number of data points per sample.
381    */    */
382    void    void
383    initialise(const DataArrayView::ShapeType& shape,    initialise(int noSamples,
              int noSamples,  
384               int noDataPointsPerSample);               int noDataPointsPerSample);
385    
386    /**    /**
# Line 416  class DataExpanded : public DataAbstract Line 393  class DataExpanded : public DataAbstract
393       \param value Input - A single data point value.       \param value Input - A single data point value.
394    */    */
395    void    void
396    copy(const DataArrayView& value);    copy(const DataConstant& value);
397    
398    
399    
400    /**    /**
401       \brief       \brief
402       Copy the given data point value given a numarray object to all data points in this object.       Copy the given data point value to all data points in this object.
   
      Description:  
      Copy the given data point value given a numarray object to all data points in this object.  
403    
404       \param value Input - A single data point value.       \param value Input - A single data point value.
405    */    */
406    
407    void    void
408    copy(const boost::python::numeric::array& value);    copy(const WrappedArray& value);
409    
410    
411    /**    /**
412       \brief       \brief
413       Copy the numarray object to the data points in this object.       Copy a double value to the data point dataPointNo of sample sampleNo in this object.
414    
415       Description:       Description:
416       Copy the numarray object to the data points in this object.       Copy a double value to the data point dataPointNo of sample sampleNo in this object.
417    
418       \param value Input - new values for the data points       \param sampleNo Input - sample number
419         \param dataPointNo Input - data point of the sample
420         \param value Input - new values for the data point
421    */    */
422    void    ESCRIPT_DLL_API
423    copyAll(const boost::python::numeric::array& value);    virtual void
424      copyToDataPoint(const int sampleNo, const int dataPointNo, const double value);
425    
426    
427      /**
428         \brief
429         Copy the value to the data point dataPointNo of sample sampleNo in this object.
430    
431         \param sampleNo Input - sample number
432         \param dataPointNo Input - data point of the sample
433         \param value Input - new values for the data point
434      */
435      ESCRIPT_DLL_API
436      virtual void
437      copyToDataPoint(const int sampleNo, const int dataPointNo, const WrappedArray& value);
438    
439    //    //
440    // The main data storage array, a 2D array of data blocks.    // The main data storage array, a 2D array of data blocks.

Legend:
Removed from v.804  
changed lines
  Added in v.2548

  ViewVC Help
Powered by ViewVC 1.1.26