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

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

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

trunk/esys2/escript/src/Data/DataConstant.h revision 100 by jgs, Wed Dec 15 03:48:48 2004 UTC trunk/escript/src/DataConstant.h revision 1118 by gross, Tue Apr 24 08:55:04 2007 UTC
# Line 1  Line 1 
1    //$Id$
2  /*  /*
3   ******************************************************************************   ************************************************************
4   *                                                                            *   *          Copyright 2006 by ACcESS MNRF                   *
5   *       COPYRIGHT  ACcESS 2004 -  All Rights Reserved                        *   *                                                          *
6   *                                                                            *   *              http://www.access.edu.au                    *
7   * This software is the property of ACcESS. No part of this code              *   *       Primary Business: Queensland, Australia            *
8   * may be copied in any form or by any means without the expressed written    *   *  Licensed under the Open Software License version 3.0    *
9   * consent of ACcESS.  Copying, use or modification of this software          *   *     http://www.opensource.org/licenses/osl-3.0.php       *
10   * by any unauthorised person is illegal unless that person has a software    *   *                                                          *
11   * license agreement with ACcESS.                                             *   ************************************************************
  *                                                                            *  
  ******************************************************************************  
12  */  */
13                                                                              
14  #if !defined  escript_DataConstant_20040323_H  #if !defined escript_DataConstant_20040323_H
15  #define escript_DataConstant_20040323_H  #define escript_DataConstant_20040323_H
16    #include "system_dep.h"
17    
18  #include "escript/Data/DataAbstract.h"  #include "DataAbstract.h"
19  #include "escript/Data/DataArray.h"  #include "DataArrayView.h"
 #include "escript/Data/DataArrayView.h"  
20    
21  #include <boost/python/numeric.hpp>  #include <boost/python/numeric.hpp>
22    
23  namespace escript {  namespace escript {
24    
25  /**  /**
26     \brief     \brief
27     DataConstant stores single data point which represents the entire     DataConstant stores a single data point which represents the entire
28     function space.     function space.
29    
30     Description:     Description:
31     DataConstant stores single data point which represents the entire     DataConstant stores a single data point which represents the entire
32     function space.     function space.
33  */  */
34  class DataConstant:public DataAbstract  {  class DataConstant : public DataAbstract  {
35    
36   public:   public:
37    
38    /**    /**
39       \brief       \brief
40       Default constructor for DataConstant       Constructor for DataConstant objects.
41    
42       Description:       Description:
43       Default constructor for DataConstant       Constructor for DataConstant objects.
   
      \param value Input - Data value for a single point.  
      \param noSamples Input - number of samples.  
      \param noDataPointsPerSample Input - Input.  
      \param what Input - A description of what this data represents.  
44    
45         \param value - Input - Data value for a single point.
46         \param what - Input - A description of what this data object represents.
47    */    */
48    DataConstant(const boost::python::numeric::array& value, const FunctionSpace& what);    ESCRIPT_DLL_API
49      DataConstant(const boost::python::numeric::array& value,
50                   const FunctionSpace& what);
51    
52    /**    /**
53       \brief       \brief
54       Copy constructor. Performs a deep copy.       Copy constructor. Performs a deep copy.
55    */    */
56      ESCRIPT_DLL_API
57    DataConstant(const DataConstant& other);    DataConstant(const DataConstant& other);
58    
59      /**
60         \brief
61         Alternative constructor for DataConstant objects.
62    
63         Description:
64         Alternative Constructor for DataConstant objects.
65         \param value - Input - Data value for a single point.
66         \param what - Input - A description of what this data object represents.
67      */
68      ESCRIPT_DLL_API
69      DataConstant(const DataArrayView& value,
70                   const FunctionSpace& what);
71    
72    /**    /**
73       \brief       \brief
74       Alternative constructor for DataConstant       Alternative constructor for DataConstant objects.
75    
76       Description:       Description:
77       Alternative Constructor for DataConstant       Alternative Constructor for DataConstant objects.
78       \param value Input - Data value for a single point.       \param other - Input - Data object to copy from.
79       \param noSamples Input - number of samples.       \param region - Input - region to copy.
      \param noDataPointsPerSample Input - Input.  
      \param what Input - A description of what this data represents.  
80    */    */
81    DataConstant(const DataArrayView& value, const FunctionSpace& what);    ESCRIPT_DLL_API
82      DataConstant(const DataConstant& other,
83                   const DataArrayView::RegionType& region);
84    
85    /**    /**
86       \brief       \brief
87       Alternative constructor for DataConstant       Alternative constructor for DataConstant objects.
88    
89       Description:       Description:
90       Alternative Constructor for DataConstant       Alternative Constructor for DataConstant objects.
91       \param other Input - Other DataConstant       \param what - Input - A description of what this data object represents.
92       \param region Input - region to copy       \param shape - Input - the shape of each data-point.
93         \param data - the data values for each data-point.
94    */    */
95    DataConstant(const DataConstant& other, const DataArrayView::RegionType& region);    ESCRIPT_DLL_API
96      DataConstant(const FunctionSpace& what,
97                   const DataArrayView::ShapeType &shape,
98                   const DataArrayView::ValueType &data);
99    
100    /**    /**
101       \brief       \brief
102       Write the data as a string.       Write the data as a string.
103    */    */
104    std::string toString() const;    ESCRIPT_DLL_API
105      std::string
106      toString() const;
107     /**
108         \brief
109         dumps the object into a netCDF file
110      */
111      ESCRIPT_DLL_API
112      virtual
113      void
114      dump(const std::string fileName) const;
115    
116     /**
117         \brief
118        sets all values to zero
119      */
120      ESCRIPT_DLL_API
121      virtual
122      void
123      setToZero();
124    
125    /**    /**
126       \brief       \brief
127       Return the offset for the given sample. This is somewhat artificial notion       Return the offset for the given sample. This is a somewhat artificial notion
128       but returns the offset in bytes for the given point into the container       but returns the offset in bytes for the given point into the container
129       holding the point data. Only really necessary to avoid many DataArrayView       holding the point data. Only really necessary to avoid many DataArrayView
130       objects.       objects.
131       \param sampleNo - Input, sample number.       \param sampleNo - Input - sample number.
132       \param dataPointNo - Input, data point number for the sample.       \param dataPointNo - Input - data point number for the sample.
133     */     */
134    virtual DataArrayView::ValueType::size_type getPointOffset(int sampleNo, int dataPointNo) const;    ESCRIPT_DLL_API
135      virtual
136      DataArrayView::ValueType::size_type
137      getPointOffset(int sampleNo,
138                     int dataPointNo) const;
139    
140    /**    /**
141       \brief       \brief
142       Return a view into the data for the data point specified.       Return a view into the data for the data point specified.
143       NOTE: Construction of the DataArrayView is a relatively expensive       \param sampleNo - Input - sample number.
144       operation       \param dataPointNo - Input - data point number for the sample.
      \param sampleNo Input  
      \param dataPointNo Input  
145    */    */
146    virtual DataArrayView getDataPoint(int sampleNo, int dataPointNo);    ESCRIPT_DLL_API
147      virtual
148      DataArrayView
149      getDataPoint(int sampleNo,
150                   int dataPointNo);
151    
152    /**    /**
153       \brief       \brief
154       Return the number of doubles stored for the Data       Return the number of doubles stored for the Data object.
155    */    */
156    virtual ValueType::size_type getLength() const;    ESCRIPT_DLL_API
157      virtual
158      DataArrayView::ValueType::size_type
159      getLength() const;
160    
161    /**    /**
162       \brief       \brief
163       Factory method that returns a newly created DataConstant.       Factory method that returns a newly created DataConstant object
164         sliced from the specified region of this object.
165       The caller is reponsible for managing the object created.       The caller is reponsible for managing the object created.
166         \param region - Input - region to slice from this object.
167    */    */
168    virtual DataAbstract* getSlice(const DataArrayView::RegionType& region) const;  /**    ESCRIPT_DLL_API
169      virtual
170      DataAbstract*
171      getSlice(const DataArrayView::RegionType& region) const;
172    
173      /**
174       \brief       \brief
175       Copy the specified region from the given value.       Copy the specified region from the given value.
176       \param value Input - Data to copy from       \param value - Input - Data object to copy from.
177       \param region Input - Region to copy.       \param region - Input - Region to copy.
178      */
179      ESCRIPT_DLL_API
180      virtual
181      void
182      setSlice(const DataAbstract* value,
183               const DataArrayView::RegionType& region);
184    
185      /**
186        \brief
187        Archive the underlying data values to the file referenced
188        by ofstream. A count of the number of values expected to be written
189        is provided as a cross-check.
190    
191        The return value indicates success (0) or otherwise (1).
192    */    */
193    virtual void setSlice(const DataAbstract* value, const DataArrayView::RegionType& region);    ESCRIPT_DLL_API
194      int
195      archiveData(std::ofstream& archiveFile,
196                  const DataArrayView::ValueType::size_type noValues) const;
197    
198      /**
199        \brief
200        Extract the number of values specified by noValues from the file
201        referenced by ifstream to the underlying data structure.
202    
203        The return value indicates success (0) or otherwise (1).
204      */
205      ESCRIPT_DLL_API
206      int
207      extractData(std::ifstream& archiveFile,
208                  const DataArrayView::ValueType::size_type noValues);
209    
210    /**    /**
211       \brief       \brief
212       Reshape the data point if the data point is currently rank 0.       Computes a symmetric matrix (A + AT) / 2
213       The original data point value is used for all values of the new  
214       data point.       \param ev - Output - symmetric matrix
215    
216    */    */
217    void reshapeDataPoint(const DataArrayView::ShapeType& shape);    ESCRIPT_DLL_API
218      virtual void
219      symmetric(DataAbstract* ev);
220    
221      /**
222         \brief
223         Computes a nonsymmetric matrix (A - AT) / 2
224    
225         \param ev - Output - nonsymmetric matrix
226    
227      */
228      ESCRIPT_DLL_API
229      virtual void
230      nonsymmetric(DataAbstract* ev);
231    
232      /**
233         \brief
234         Computes the trace of a matrix
235    
236         \param ev - Output - trace of matrix
237    
238      */
239      ESCRIPT_DLL_API
240      virtual void
241      trace(DataAbstract* ev, int axis_offset);
242    
243      /**
244         \brief
245         Transpose each data point of this Data object around the given axis.
246    
247         \param ev - Output - transpose of matrix
248    
249      */
250      ESCRIPT_DLL_API
251      virtual void
252      transpose(DataAbstract* ev, int axis_offset);
253    
254      /**
255         \brief
256         swaps components axis0 and axis1
257    
258         \param ev - Output - swapped components
259    
260      */
261      ESCRIPT_DLL_API
262      virtual void
263      swapaxes(DataAbstract* ev, int axis0, int axis1);
264    
265    
266      /**
267         \brief
268         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
269    
270         \param ev - Output - eigenvalues in increasing order at each data point
271    
272      */
273      ESCRIPT_DLL_API
274      virtual void
275      eigenvalues(DataAbstract* ev);
276    
277      /**
278         \brief
279         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V
280    
281         \param ev - Output - eigenvalues in increasing order at each data point
282         \param V - Output - corresponding eigenvectors. They are normalized such that their length is one
283                             and the first nonzero component is positive.
284         \param tol - Input - eigenvalue with relative distance tol are treated as equal.
285    
286      */
287    
288      ESCRIPT_DLL_API
289      virtual void
290      eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
291    
292    
293   protected:   protected:
294    
295   private:   private:
296    //    //
297    // data    // the actual data
298    DataArrayView::ValueType m_data;    DataArrayView::ValueType m_data;
299    
300  };  };
301    
302  } // end of namespace  } // end of namespace
303  #endif  #endif
   

Legend:
Removed from v.100  
changed lines
  Added in v.1118

  ViewVC Help
Powered by ViewVC 1.1.26