/[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 615 by elspeth, Wed Mar 22 02:12:00 2006 UTC revision 1796 by jfenwick, Wed Sep 17 01:45:46 2008 UTC
# Line 1  Line 1 
1  // $Id$  
2  /*  /* $Id$ */
3   ************************************************************  
4   *          Copyright 2006 by ACcESS MNRF                   *  /*******************************************************
5   *                                                          *   *
6   *              http://www.access.edu.au                    *   *           Copyright 2003-2007 by ACceSS MNRF
7   *       Primary Business: Queensland, Australia            *   *       Copyright 2007 by University of Queensland
8   *  Licensed under the Open Software License version 3.0    *   *
9   *     http://www.opensource.org/licenses/osl-3.0.php       *   *                http://esscc.uq.edu.au
10   *                                                          *   *        Primary Business: Queensland, Australia
11   ************************************************************   *  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_DataExpanded_20040323_H  #if !defined escript_DataExpanded_20040323_H
17  #define escript_DataExpanded_20040323_H  #define escript_DataExpanded_20040323_H
18    #include "system_dep.h"
19    
20  #include "DataAbstract.h"  #include "DataAbstract.h"
21  #include "DataBlocks2D.h"  #include "DataBlocks2D.h"
 #include "DataArrayView.h"  
22    
23  #include <boost/python/numeric.hpp>  #include <boost/python/numeric.hpp>
24    
# Line 57  class DataExpanded : public DataAbstract Line 59  class DataExpanded : public DataAbstract
59       \param value - Input - A single data value.       \param value - Input - A single data value.
60       \param what - Input - A description of what this data represents.       \param what - Input - A description of what this data represents.
61    */    */
62      ESCRIPT_DLL_API
63    DataExpanded(const boost::python::numeric::array& value,    DataExpanded(const boost::python::numeric::array& value,
64                 const FunctionSpace& what);                 const FunctionSpace& what);
65    
66    /**  //  /**
67       \brief  //      \brief
68       Alternative constructor for DataExpanded.  //      Alternative constructor for DataExpanded.
69    //
70       Description:  //      Description:
71       Alternative Constructor for DataExpanded.  //      Alternative Constructor for DataExpanded.
72    //
73       The given single data value is copied to all the data points in  //      The given single data value is copied to all the data points in
74       this data object, where the number of data points is defined by  //      this data object, where the number of data points is defined by
75       the given function space.  //      the given function space.
76    //
77       \param value - Input - A single data value.  //      \param value - Input - A single data value.
78       \param what - Input - A description of what this data represents.  //      \param what - Input - A description of what this data represents.
79    */  //  */
80    DataExpanded(const DataArrayView& value,  //   ESCRIPT_DLL_API
81                 const FunctionSpace& what);  //   DataExpanded(const DataArrayView& value,
82    //                const FunctionSpace& what);
83    
84    /**    /**
85       \brief       \brief
# Line 85  class DataExpanded : public DataAbstract Line 89  class DataExpanded : public DataAbstract
89       \param other - Input - DataExpanded object to slice from.       \param other - Input - DataExpanded object to slice from.
90       \param region - Input - region to copy.       \param region - Input - region to copy.
91    */    */
92      ESCRIPT_DLL_API
93    DataExpanded(const DataExpanded& other,    DataExpanded(const DataExpanded& other,
94                 const DataArrayView::RegionType& region);                 const DataTypes::RegionType& region);
95    
96    /**    /**
97       \brief       \brief
# Line 97  class DataExpanded : public DataAbstract Line 102  class DataExpanded : public DataAbstract
102       \param what - Input - A description of what this data object represents.       \param what - Input - A description of what this data object represents.
103       \param shape - Input - the shape of each data-point.       \param shape - Input - the shape of each data-point.
104       \param data - the array of data values for the data-points.       \param data - the array of data values for the data-points.
105    
106    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.
107    */    */
108      ESCRIPT_DLL_API
109    DataExpanded(const FunctionSpace& what,    DataExpanded(const FunctionSpace& what,
110                 const DataArrayView::ShapeType &shape,                 const DataTypes::ShapeType &shape,
111                 const DataArrayView::ValueType &data);                 const DataTypes::ValueType &data);
112    
113    /**    /**
114       \brief       \brief
115       Copy constructor for DataExpanded.       Copy constructor for DataExpanded.
116       Performs a deep copy from another DataExpanded.       Performs a deep copy from another DataExpanded.
117    */    */
118      ESCRIPT_DLL_API
119    DataExpanded(const DataExpanded& other);    DataExpanded(const DataExpanded& other);
120    
121    /**    /**
# Line 114  class DataExpanded : public DataAbstract Line 123  class DataExpanded : public DataAbstract
123       Copy constructor for DataExpanded.       Copy constructor for DataExpanded.
124       Construct a DataExpanded from a DataConstant.       Construct a DataExpanded from a DataConstant.
125    */    */
126      ESCRIPT_DLL_API
127    DataExpanded(const DataConstant& other);    DataExpanded(const DataConstant& other);
128    
129    /**    /**
# Line 121  class DataExpanded : public DataAbstract Line 131  class DataExpanded : public DataAbstract
131       Copy constructor for DataExpanded.       Copy constructor for DataExpanded.
132       Construct a DataExpanded from a DataTagged.       Construct a DataExpanded from a DataTagged.
133    */    */
134      ESCRIPT_DLL_API
135    DataExpanded(const DataTagged& other);    DataExpanded(const DataTagged& other);
136    
137    /**    /**
138       \brief       \brief
139       Default destructor for DataExpanded.       Default destructor for DataExpanded.
140    */    */
141      ESCRIPT_DLL_API
142    virtual    virtual
143    ~DataExpanded();    ~DataExpanded();
144    
# Line 134  class DataExpanded : public DataAbstract Line 146  class DataExpanded : public DataAbstract
146       \brief       \brief
147       Return a textual representation of the data.       Return a textual representation of the data.
148    */    */
149      ESCRIPT_DLL_API
150    virtual    virtual
151    std::string    std::string
152    toString() const;    toString() const;
153     /**
154         \brief
155         dumps the object into a netCDF file
156      */
157      ESCRIPT_DLL_API
158      virtual
159      void
160      dump(const std::string fileName) const;
161    
162    /**   /**
163       \brief       \brief
164       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.  
165    */    */
166      ESCRIPT_DLL_API
167      virtual
168    void    void
169    reshapeDataPoint(const DataArrayView::ShapeType& shape);    setToZero();
170    
171    /**    /**
172       \brief       \brief
# Line 156  class DataExpanded : public DataAbstract Line 177  class DataExpanded : public DataAbstract
177       \param sampleNo - Input - sample number.       \param sampleNo - Input - sample number.
178       \param dataPointNo - Input - data point number.       \param dataPointNo - Input - data point number.
179    */    */
180      ESCRIPT_DLL_API
181    virtual    virtual
182    DataArrayView::ValueType::size_type    DataTypes::ValueType::size_type
183    getPointOffset(int sampleNo,    getPointOffset(int sampleNo,
184                   int dataPointNo) const;                   int dataPointNo) const;
185    
186    /**  //  /**
187       \brief  /*     \brief
188       Return a view into the data array for the data point specified.       Return a view into the data array for the data point specified.
189    
190       NOTE: Construction of the DataArrayView is a relatively expensive       NOTE: Construction of the DataArrayView is a relatively expensive
# Line 170  class DataExpanded : public DataAbstract Line 192  class DataExpanded : public DataAbstract
192    
193       \param sampleNo - Input - sample number.       \param sampleNo - Input - sample number.
194       \param dataPointNo - Input - data point number.       \param dataPointNo - Input - data point number.
195       \return DataArrayView for the data point.       \return DataArrayView for the data point.*/
196    //  */
197    //   ESCRIPT_DLL_API
198    //   DataArrayView
199    //   getDataPoint(int sampleNo,
200    //                int dataPointNo);
201    
202    
203      /**
204         \brief
205         Return a a reference to the underlying DataVector.
206    */    */
207    DataArrayView  
208    getDataPoint(int sampleNo,    ESCRIPT_DLL_API
209                 int dataPointNo);    DataTypes::ValueType&
210      getVector();
211    
212      ESCRIPT_DLL_API
213      const DataTypes::ValueType&
214      getVector() const;
215    
216    
217    /**    /**
218       \brief       \brief
219       Return the number of doubles stored for the Data.       Return the number of doubles stored for the Data.
220    */    */
221      ESCRIPT_DLL_API
222    virtual    virtual
223    ValueType::size_type    ValueType::size_type
224    getLength() const;    getLength() const;
# Line 191  class DataExpanded : public DataAbstract Line 230  class DataExpanded : public DataAbstract
230    
231       \param region - Input - Region to copy.       \param region - Input - Region to copy.
232    */    */
233      ESCRIPT_DLL_API
234    virtual    virtual
235    DataAbstract*    DataAbstract*
236    getSlice(const DataArrayView::RegionType& region) const;    getSlice(const DataTypes::RegionType& region) const;
237    
238    /**    /**
239       \brief       \brief
# Line 202  class DataExpanded : public DataAbstract Line 242  class DataExpanded : public DataAbstract
242       \param value - Input - Data object to copy from.       \param value - Input - Data object to copy from.
243       \param region - Input - Region to copy.       \param region - Input - Region to copy.
244    */    */
245      ESCRIPT_DLL_API
246    virtual    virtual
247    void    void
248    setSlice(const DataAbstract* value,    setSlice(const DataAbstract* value,
249             const DataArrayView::RegionType& region);             const DataTypes::RegionType& region);
250    
251    
252    //  /**
253    /*     \brief
254         setTaggedValue
255    
256         Description:
257         uses tag to set a new value
258    
259         \param tagKey - Input - Integer key.
260         \param value - Input - Single DataArrayView value to be assigned to the tag.*/
261    //  */
262    //   ESCRIPT_DLL_API
263    //   virtual
264    //   void
265    //   setTaggedValue(int tagKey,
266    //                  const DataArrayView& value);
267    
268    
269    
270    /**    /**
271       \brief       \brief
272       Assign the given value to all data-points associated with the given       setTaggedValue
      reference number.  
273    
274       A reference number corresponds to a sample, and thus to all data-points       Description:
275       in that sample.       uses tag to set a new value
276    
277         \param tagKey - Input - Integer key.
278         \param pointshape - Input - The shape of the value parameter
279         \param value - Input - .
280      */
281      void  
282      setTaggedValue(int tagKey,
283                 const DataTypes::ShapeType& pointshape,
284                     const DataTypes::ValueType& value,
285             int dataOffset=0);
286    
      If the given reference number does not correspond to any sample in this  
      Data object, an exception will be thrown.  
287    
      If the given value is a different shape to this Data object, an exception  
      will be thrown.  
288    
289       \param ref - Input - reference number which determines sample numebr to    /**
290                            assign given values to.       \brief
291       \param value - Input - Value to assign to data-point associated with       Computes a symmetric matrix (A + AT) / 2
292                              the given reference number.  
293         \param ev - Output - symmetric matrix
294    
295    */    */
296    virtual    ESCRIPT_DLL_API
297    void    virtual void
298    setRefValue(int ref,    symmetric(DataAbstract* ev);
               const DataArray& value);  
299    
300    /**    /**
301       \brief       \brief
302       Return the value of the first data-point in the sample associated with       Computes a nonsymmetric matrix (A - AT) / 2
      the given reference number.  
303    
304       A reference number corresponds to a sample, and thus to all data-points       \param ev - Output - nonsymmetric matrix
      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.  
305    
306       If the given reference number does not correspond to any sample in this    */
307       Data object, an exception will be thrown.    ESCRIPT_DLL_API
308      virtual void
309      nonsymmetric(DataAbstract* ev);
310    
311       If the given value is a different shape to this Data object, an exception    /**
312       will be thrown.       \brief
313         Computes the trace of a matrix
314    
315         \param ev - Output - trace of your matrix
316    
      \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.  
317    */    */
318    virtual    ESCRIPT_DLL_API
319    void    virtual void
320    getRefValue(int ref,    trace(DataAbstract* ev, int axis_offset);
               DataArray& value);  
321    
322    /**    /**
323      \brief       \brief
324      Archive the underlying data values to the file referenced       Transpose each data point of this Data object around the given axis.
325      by ofstream. A count of the number of values expected to be written  
326      is provided as a cross-check.       \param ev - Output - transpose of your matrix
327    
     The return value indicates success (0) or otherwise (1).  
328    */    */
329    int    ESCRIPT_DLL_API
330    archiveData(std::ofstream& archiveFile,    virtual void
331                const DataArrayView::ValueType::size_type noValues) const;    transpose(DataAbstract* ev, int axis_offset);
332    
333    /**    /**
334      \brief       \brief
335      Extract the number of values specified by noValues from the file       swaps components axis0 and axis1
336      referenced by ifstream to the underlying data structure.  
337         \param ev - Output - swapped components
338    
     The return value indicates success (0) or otherwise (1).  
339    */    */
340    int    ESCRIPT_DLL_API
341    extractData(std::ifstream& archiveFile,    virtual void
342                const DataArrayView::ValueType::size_type noValues);    swapaxes(DataAbstract* ev, int axis0, int axis1);
343    
344    
345    /**    /**
346       \brief       \brief
# Line 286  class DataExpanded : public DataAbstract Line 349  class DataExpanded : public DataAbstract
349       \param ev - Output - eigenvalues in increasing order at each data point       \param ev - Output - eigenvalues in increasing order at each data point
350    
351    */    */
352      ESCRIPT_DLL_API
353    virtual void    virtual void
354    eigenvalues(DataAbstract* ev);    eigenvalues(DataAbstract* ev);
355    
# Line 300  class DataExpanded : public DataAbstract Line 364  class DataExpanded : public DataAbstract
364    
365    */    */
366    
367      ESCRIPT_DLL_API
368    virtual void    virtual void
369    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);
370    
371    /**
372     *      \brief
373     *           reorders data sample ordered by reference_ids to the ordering of the functions space
374     *
375     *                \param reference_ids - Input - reference_ids used for current ordering
376     *                  */
377      ESCRIPT_DLL_API
378      virtual void
379      reorderByReferenceIDs(int *reference_ids);
380    
381    
382    
383   protected:   protected:
384    
# Line 319  class DataExpanded : public DataAbstract Line 395  class DataExpanded : public DataAbstract
395       given shape and number of data points, and creates the corresponding       given shape and number of data points, and creates the corresponding
396       DataArrayView of this data.       DataArrayView of this data.
397    
      \param shape - Input - The shape of the point data.  
398       \param noSamples - Input - number of samples.       \param noSamples - Input - number of samples.
399       \param noDataPointsPerSample - Input - number of data points per sample.       \param noDataPointsPerSample - Input - number of data points per sample.
400    */    */
401    void    void
402    initialise(const DataArrayView::ShapeType& shape,    initialise(int noSamples,
              int noSamples,  
403               int noDataPointsPerSample);               int noDataPointsPerSample);
404    
405    /**    /**
# Line 338  class DataExpanded : public DataAbstract Line 412  class DataExpanded : public DataAbstract
412       \param value Input - A single data point value.       \param value Input - A single data point value.
413    */    */
414    void    void
415    copy(const DataArrayView& value);    copy(const DataConstant& value);
416    
417    
418    
419    /**    /**
420       \brief       \brief
# Line 364  class DataExpanded : public DataAbstract Line 440  class DataExpanded : public DataAbstract
440    void    void
441    copyAll(const boost::python::numeric::array& value);    copyAll(const boost::python::numeric::array& value);
442    
443      /**
444         \brief
445         Copy a double value to the data point dataPointNo of sample sampleNo in this object.
446    
447         Description:
448         Copy a double value to the data point dataPointNo of sample sampleNo in this object.
449    
450         \param sampleNo Input - sample number
451         \param dataPointNo Input - data point of the sample
452         \param value Input - new values for the data point
453      */
454      ESCRIPT_DLL_API
455      virtual void
456      copyToDataPoint(const int sampleNo, const int dataPointNo, const double value);
457    
458    
459      /**
460         \brief
461         Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
462    
463         Description:
464         Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
465    
466         \param sampleNo Input - sample number
467         \param dataPointNo Input - data point of the sample
468         \param value Input - new values for the data point
469      */
470      void
471      copyToDataPoint(const int sampleNo, const int dataPointNo, const boost::python::numeric::array& value);
472    
473    //    //
474    // The main data storage array, a 2D array of data blocks.    // The main data storage array, a 2D array of data blocks.
475    // noSamples * noDataPointsPerSample    // noSamples * noDataPointsPerSample

Legend:
Removed from v.615  
changed lines
  Added in v.1796

  ViewVC Help
Powered by ViewVC 1.1.26