/[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

trunk/esys2/escript/src/Data/DataConstant.h revision 97 by jgs, Tue Dec 14 05:39:33 2004 UTC trunk/escript/src/DataConstant.h 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 "escript/Data/DataAbstract.h"  #include "DataReady.h"
20  #include "escript/Data/DataArray.h"  #include "WrappedArray.h"
 #include "escript/Data/DataArrayView.h"  
21    
22  #include <boost/python/numeric.hpp>  #include <boost/python/numeric.hpp>
23    
# Line 33  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 47  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    
61    
62    /**    /**
63       \brief       \brief
64       Alternative constructor for DataConstant objects.       Alternative constructor for DataConstant objects.
65    
66       Description:       Description:
67       Alternative Constructor for DataConstant objects.       Alternative Constructor for DataConstant objects.
68       \param value - Input - Data value for a single point.       \param other - Input - Data object to copy from.
69       \param what - Input - A description of what this data object represents.       \param region - Input - region to copy.
70    */    */
71    DataConstant(const DataArrayView& value,    ESCRIPT_DLL_API
72                 const FunctionSpace& what);    DataConstant(const DataConstant& other,
73                   const DataTypes::RegionType& region);
74    
75    /**    /**
76       \brief       \brief
# Line 74  class DataConstant : public DataAbstract Line 78  class DataConstant : public DataAbstract
78    
79       Description:       Description:
80       Alternative Constructor for DataConstant objects.       Alternative Constructor for DataConstant objects.
81       \param other - Input - Data object to copy from.       \param what - Input - A description of what this data object represents.
82       \param region - Input - region to copy.       \param shape - Input - the shape of each data-point.
83         \param data - the data values for each data-point.
84    */    */
85    DataConstant(const DataConstant& other,    ESCRIPT_DLL_API
86                 const DataArrayView::RegionType& region);    DataConstant(const FunctionSpace& what,
87                   const DataTypes::ShapeType &shape,
88                   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 96  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    ValueType::size_type    DataTypes::ValueType::size_type
162    getLength() const;    getLength() const;
163    
164    /**    /**
# Line 127  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 137  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
213         Computes the trace of a matrix
214    
215         \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         \param ev - Output - transpose of matrix
228         \param axis_offset
229      */
230      ESCRIPT_DLL_API
231      virtual void
232      transpose(DataAbstract* ev, int axis_offset);
233    
234      /**
235         \brief
236         swaps components axis0 and axis1
237    
238         \param ev - Output - swapped components
239         \param axis0
240         \param axis1
241      */
242      ESCRIPT_DLL_API
243      virtual void
244      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.97  
changed lines
  Added in v.2548

  ViewVC Help
Powered by ViewVC 1.1.26