/[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 480 by jgs, Wed Feb 1 05:15:12 2006 UTC revision 1312 by ksteube, Mon Sep 24 06:18:44 2007 UTC
# Line 1  Line 1 
1  // $Id$  
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_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"
# Line 59  class DataExpanded : public DataAbstract Line 60  class DataExpanded : public DataAbstract
60       \param value - Input - A single data value.       \param value - Input - A single data value.
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
64    DataExpanded(const boost::python::numeric::array& value,    DataExpanded(const boost::python::numeric::array& value,
65                 const FunctionSpace& what);                 const FunctionSpace& what);
66    
# Line 76  class DataExpanded : public DataAbstract Line 78  class DataExpanded : public DataAbstract
78       \param value - Input - A single data value.       \param value - Input - A single data value.
79       \param what - Input - A description of what this data represents.       \param what - Input - A description of what this data represents.
80    */    */
81      ESCRIPT_DLL_API
82    DataExpanded(const DataArrayView& value,    DataExpanded(const DataArrayView& value,
83                 const FunctionSpace& what);                 const FunctionSpace& what);
84    
# Line 87  class DataExpanded : public DataAbstract Line 90  class DataExpanded : public DataAbstract
90       \param other - Input - DataExpanded object to slice from.       \param other - Input - DataExpanded object to slice from.
91       \param region - Input - region to copy.       \param region - Input - region to copy.
92    */    */
93      ESCRIPT_DLL_API
94    DataExpanded(const DataExpanded& other,    DataExpanded(const DataExpanded& other,
95                 const DataArrayView::RegionType& region);                 const DataArrayView::RegionType& region);
96    
# Line 100  class DataExpanded : public DataAbstract Line 104  class DataExpanded : public DataAbstract
104       \param shape - Input - the shape of each data-point.       \param shape - Input - the shape of each data-point.
105       \param data - the array of data values for the data-points.       \param data - the array of data values for the data-points.
106    */    */
107      ESCRIPT_DLL_API
108    DataExpanded(const FunctionSpace& what,    DataExpanded(const FunctionSpace& what,
109                 const DataArrayView::ShapeType &shape,                 const DataArrayView::ShapeType &shape,
110                 const DataArrayView::ValueType &data);                 const DataArrayView::ValueType &data);
# Line 109  class DataExpanded : public DataAbstract Line 114  class DataExpanded : public DataAbstract
114       Copy constructor for DataExpanded.       Copy constructor for DataExpanded.
115       Performs a deep copy from another DataExpanded.       Performs a deep copy from another DataExpanded.
116    */    */
117      ESCRIPT_DLL_API
118    DataExpanded(const DataExpanded& other);    DataExpanded(const DataExpanded& other);
119    
120    /**    /**
# Line 116  class DataExpanded : public DataAbstract Line 122  class DataExpanded : public DataAbstract
122       Copy constructor for DataExpanded.       Copy constructor for DataExpanded.
123       Construct a DataExpanded from a DataConstant.       Construct a DataExpanded from a DataConstant.
124    */    */
125      ESCRIPT_DLL_API
126    DataExpanded(const DataConstant& other);    DataExpanded(const DataConstant& other);
127    
128    /**    /**
# Line 123  class DataExpanded : public DataAbstract Line 130  class DataExpanded : public DataAbstract
130       Copy constructor for DataExpanded.       Copy constructor for DataExpanded.
131       Construct a DataExpanded from a DataTagged.       Construct a DataExpanded from a DataTagged.
132    */    */
133      ESCRIPT_DLL_API
134    DataExpanded(const DataTagged& other);    DataExpanded(const DataTagged& other);
135    
136    /**    /**
137       \brief       \brief
138       Default destructor for DataExpanded.       Default destructor for DataExpanded.
139    */    */
140      ESCRIPT_DLL_API
141    virtual    virtual
142    ~DataExpanded();    ~DataExpanded();
143    
# Line 136  class DataExpanded : public DataAbstract Line 145  class DataExpanded : public DataAbstract
145       \brief       \brief
146       Return a textual representation of the data.       Return a textual representation of the data.
147    */    */
148      ESCRIPT_DLL_API
149    virtual    virtual
150    std::string    std::string
151    toString() const;    toString() const;
152     /**
153         \brief
154         dumps the object into a netCDF file
155      */
156      ESCRIPT_DLL_API
157      virtual
158      void
159      dump(const std::string fileName) const;
160    
161    /**   /**
162       \brief       \brief
163       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.  
164    */    */
165      ESCRIPT_DLL_API
166      virtual
167    void    void
168    reshapeDataPoint(const DataArrayView::ShapeType& shape);    setToZero();
169    
170    /**    /**
171       \brief       \brief
# Line 158  class DataExpanded : public DataAbstract Line 176  class DataExpanded : public DataAbstract
176       \param sampleNo - Input - sample number.       \param sampleNo - Input - sample number.
177       \param dataPointNo - Input - data point number.       \param dataPointNo - Input - data point number.
178    */    */
179      ESCRIPT_DLL_API
180    virtual    virtual
181    DataArrayView::ValueType::size_type    DataArrayView::ValueType::size_type
182    getPointOffset(int sampleNo,    getPointOffset(int sampleNo,
# Line 174  class DataExpanded : public DataAbstract Line 193  class DataExpanded : public DataAbstract
193       \param dataPointNo - Input - data point number.       \param dataPointNo - Input - data point number.
194       \return DataArrayView for the data point.       \return DataArrayView for the data point.
195    */    */
196      ESCRIPT_DLL_API
197    DataArrayView    DataArrayView
198    getDataPoint(int sampleNo,    getDataPoint(int sampleNo,
199                 int dataPointNo);                 int dataPointNo);
# Line 182  class DataExpanded : public DataAbstract Line 202  class DataExpanded : public DataAbstract
202       \brief       \brief
203       Return the number of doubles stored for the Data.       Return the number of doubles stored for the Data.
204    */    */
205      ESCRIPT_DLL_API
206    virtual    virtual
207    ValueType::size_type    ValueType::size_type
208    getLength() const;    getLength() const;
# Line 193  class DataExpanded : public DataAbstract Line 214  class DataExpanded : public DataAbstract
214    
215       \param region - Input - Region to copy.       \param region - Input - Region to copy.
216    */    */
217      ESCRIPT_DLL_API
218    virtual    virtual
219    DataAbstract*    DataAbstract*
220    getSlice(const DataArrayView::RegionType& region) const;    getSlice(const DataArrayView::RegionType& region) const;
# Line 204  class DataExpanded : public DataAbstract Line 226  class DataExpanded : public DataAbstract
226       \param value - Input - Data object to copy from.       \param value - Input - Data object to copy from.
227       \param region - Input - Region to copy.       \param region - Input - Region to copy.
228    */    */
229      ESCRIPT_DLL_API
230    virtual    virtual
231    void    void
232    setSlice(const DataAbstract* value,    setSlice(const DataAbstract* value,
233             const DataArrayView::RegionType& region);             const DataArrayView::RegionType& region);
234    
235    /**    /**
      \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.  
   */  
   virtual  
   void  
   setRefValue(int ref,  
               const DataArray& value);  
   
   /**  
      \brief  
      Return the value of the first data-point in the sample associated with  
      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.  
   
      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 number to  
                           read from.  
      \param value - Output - Object to receive data-points associated with  
                             the given reference number.  
   */  
   virtual  
   void  
   getRefValue(int ref,  
               DataArray& value);  
   
   /**  
236      \brief      \brief
237      Archive the underlying data values to the file referenced      Archive the underlying data values to the file referenced
238      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
# Line 266  class DataExpanded : public DataAbstract Line 240  class DataExpanded : public DataAbstract
240    
241      The return value indicates success (0) or otherwise (1).      The return value indicates success (0) or otherwise (1).
242    */    */
243      ESCRIPT_DLL_API
244    int    int
245    archiveData(std::ofstream& archiveFile,    archiveData(std::ofstream& archiveFile,
246                const DataArrayView::ValueType::size_type noValues) const;                const DataArrayView::ValueType::size_type noValues) const;
# Line 277  class DataExpanded : public DataAbstract Line 252  class DataExpanded : public DataAbstract
252    
253      The return value indicates success (0) or otherwise (1).      The return value indicates success (0) or otherwise (1).
254    */    */
255      ESCRIPT_DLL_API
256    int    int
257    extractData(std::ifstream& archiveFile,    extractData(std::ifstream& archiveFile,
258                const DataArrayView::ValueType::size_type noValues);                const DataArrayView::ValueType::size_type noValues);
259    
260      /**
261         \brief
262         Computes a symmetric matrix (A + AT) / 2
263    
264         \param ev - Output - symmetric matrix
265    
266      */
267      ESCRIPT_DLL_API
268      virtual void
269      symmetric(DataAbstract* ev);
270    
271      /**
272         \brief
273         Computes a nonsymmetric matrix (A - AT) / 2
274    
275         \param ev - Output - nonsymmetric matrix
276    
277      */
278      ESCRIPT_DLL_API
279      virtual void
280      nonsymmetric(DataAbstract* ev);
281    
282      /**
283         \brief
284         Computes the trace of a matrix
285    
286         \param ev - Output - trace of your matrix
287    
288      */
289      ESCRIPT_DLL_API
290      virtual void
291      trace(DataAbstract* ev, int axis_offset);
292    
293      /**
294         \brief
295         Transpose each data point of this Data object around the given axis.
296    
297         \param ev - Output - transpose of your matrix
298    
299      */
300      ESCRIPT_DLL_API
301      virtual void
302      transpose(DataAbstract* ev, int axis_offset);
303    
304      /**
305         \brief
306         swaps components axis0 and axis1
307    
308         \param ev - Output - swapped components
309    
310      */
311      ESCRIPT_DLL_API
312      virtual void
313      swapaxes(DataAbstract* ev, int axis0, int axis1);
314    
315    
316      /**
317         \brief
318         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
319    
320         \param ev - Output - eigenvalues in increasing order at each data point
321    
322      */
323      ESCRIPT_DLL_API
324      virtual void
325      eigenvalues(DataAbstract* ev);
326    
327      /**
328         \brief
329         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V
330    
331         \param ev - Output - eigenvalues in increasing order at each data point
332         \param V - Output - corresponding eigenvectors. They are normalized such that their length is one
333                             and the first nonzero component is positive.
334         \param tol - Input - eigenvalue with relative distance tol are treated as equal.
335    
336      */
337    
338      ESCRIPT_DLL_API
339      virtual void
340      eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
341    
342    
343   protected:   protected:
344    
345   private:   private:
# Line 341  class DataExpanded : public DataAbstract Line 400  class DataExpanded : public DataAbstract
400    void    void
401    copyAll(const boost::python::numeric::array& value);    copyAll(const boost::python::numeric::array& value);
402    
403      /**
404         \brief
405         Copy a double value to the data point dataPointNo of sample sampleNo in this object.
406    
407         Description:
408         Copy a double value to the data point dataPointNo of sample sampleNo in this object.
409    
410         \param sampleNo Input - sample number
411         \param dataPointNo Input - data point of the sample
412         \param value Input - new values for the data point
413      */
414      ESCRIPT_DLL_API
415      virtual void
416      copyToDataPoint(const int sampleNo, const int dataPointNo, const double value);
417    
418    
419      /**
420         \brief
421         Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
422    
423         Description:
424         Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
425    
426         \param sampleNo Input - sample number
427         \param dataPointNo Input - data point of the sample
428         \param value Input - new values for the data point
429      */
430      void
431      copyToDataPoint(const int sampleNo, const int dataPointNo, const boost::python::numeric::array& value);
432    
433    //    //
434    // The main data storage array, a 2D array of data blocks.    // The main data storage array, a 2D array of data blocks.
435    // noSamples * noDataPointsPerSample    // noSamples * noDataPointsPerSample

Legend:
Removed from v.480  
changed lines
  Added in v.1312

  ViewVC Help
Powered by ViewVC 1.1.26