/[escript]/branches/trilinos_from_5897/escriptcore/src/DataConstant.h
ViewVC logotype

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

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

  ViewVC Help
Powered by ViewVC 1.1.26