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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2005 - (hide annotations)
Mon Nov 10 01:21:39 2008 UTC (11 years ago) by jfenwick
File MIME type: text/plain
File size: 7333 byte(s)
Bringing all changes across from schroedinger.
(Note this does not mean development is done, just that it will happen
on the trunk for now).
If anyone notices any problems please contact me.


1 jgs 480
2 ksteube 1312 /*******************************************************
3 ksteube 1811 *
4     * Copyright (c) 2003-2008 by University of Queensland
5     * Earth Systems Science Computational Center (ESSCC)
6     * http://www.uq.edu.au/esscc
7     *
8     * Primary Business: Queensland, Australia
9     * Licensed under the Open Software License version 3.0
10     * http://www.opensource.org/licenses/osl-3.0.php
11     *
12     *******************************************************/
13 ksteube 1312
14 ksteube 1811
15 jgs 102 #if !defined escript_DataConstant_20040323_H
16 jgs 82 #define escript_DataConstant_20040323_H
17 woo409 757 #include "system_dep.h"
18 jgs 82
19 jfenwick 2005 #include "DataReady.h"
20 jgs 82
21     #include <boost/python/numeric.hpp>
22    
23     namespace escript {
24 jgs 102
25 jgs 82 /**
26     \brief
27 jgs 102 DataConstant stores a single data point which represents the entire
28 jgs 82 function space.
29    
30     Description:
31 jgs 102 DataConstant stores a single data point which represents the entire
32 jgs 82 function space.
33     */
34 jfenwick 2005 class DataConstant : public DataReady {
35     typedef DataReady parent;
36 jgs 82 public:
37    
38     /**
39     \brief
40 jgs 102 Constructor for DataConstant objects.
41 jgs 82
42     Description:
43 jgs 102 Constructor for DataConstant objects.
44 jgs 82
45 jgs 102 \param value - Input - Data value for a single point.
46     \param what - Input - A description of what this data object represents.
47     */
48 woo409 757 ESCRIPT_DLL_API
49 jgs 102 DataConstant(const boost::python::numeric::array& value,
50     const FunctionSpace& what);
51 jgs 100
52 jgs 82 /**
53     \brief
54     Copy constructor. Performs a deep copy.
55     */
56 woo409 757 ESCRIPT_DLL_API
57 jgs 82 DataConstant(const DataConstant& other);
58 jgs 102
59 jfenwick 1796 // /**
60     /* \brief
61 jgs 102 Alternative constructor for DataConstant objects.
62 jgs 82
63     Description:
64 jgs 102 Alternative Constructor for DataConstant objects.
65     \param value - Input - Data value for a single point.
66 jfenwick 1796 \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 jgs 102
72 jgs 82 /**
73     \brief
74 jgs 102 Alternative constructor for DataConstant objects.
75 jgs 82
76     Description:
77 jgs 102 Alternative Constructor for DataConstant objects.
78     \param other - Input - Data object to copy from.
79     \param region - Input - region to copy.
80 jgs 82 */
81 woo409 757 ESCRIPT_DLL_API
82 jgs 102 DataConstant(const DataConstant& other,
83 jfenwick 1796 const DataTypes::RegionType& region);
84 jgs 102
85 jgs 82 /**
86     \brief
87 jgs 119 Alternative constructor for DataConstant objects.
88    
89     Description:
90     Alternative Constructor for DataConstant objects.
91     \param what - Input - A description of what this data object represents.
92     \param shape - Input - the shape of each data-point.
93     \param data - the data values for each data-point.
94     */
95 woo409 757 ESCRIPT_DLL_API
96 jgs 119 DataConstant(const FunctionSpace& what,
97 jfenwick 1796 const DataTypes::ShapeType &shape,
98     const DataTypes::ValueType &data);
99 jgs 119
100 jfenwick 2005
101     ESCRIPT_DLL_API
102     bool
103     isConstant() const
104     {
105     return true;
106     };
107    
108    
109 jgs 119 /**
110     \brief
111 jgs 82 Write the data as a string.
112     */
113 woo409 757 ESCRIPT_DLL_API
114 jgs 102 std::string
115     toString() const;
116 jfenwick 1799
117     /**
118     \brief Return a deep copy of the current object.
119     */
120     ESCRIPT_DLL_API
121     virtual
122     DataAbstract*
123     deepCopy();
124    
125    
126 gross 950 /**
127     \brief
128     dumps the object into a netCDF file
129     */
130     ESCRIPT_DLL_API
131     virtual
132     void
133     dump(const std::string fileName) const;
134 jgs 102
135 gross 1118 /**
136     \brief
137     sets all values to zero
138     */
139     ESCRIPT_DLL_API
140     virtual
141     void
142     setToZero();
143 gross 950
144 jgs 82 /**
145     \brief
146 jgs 102 Return the offset for the given sample. This is a somewhat artificial notion
147 jgs 82 but returns the offset in bytes for the given point into the container
148     holding the point data. Only really necessary to avoid many DataArrayView
149     objects.
150 jgs 102 \param sampleNo - Input - sample number.
151     \param dataPointNo - Input - data point number for the sample.
152 jgs 82 */
153 woo409 757 ESCRIPT_DLL_API
154 jgs 102 virtual
155 jfenwick 1796 DataTypes::ValueType::size_type
156 jgs 102 getPointOffset(int sampleNo,
157     int dataPointNo) const;
158    
159 jfenwick 2005 ESCRIPT_DLL_API
160     virtual
161     DataTypes::ValueType::size_type
162     getPointOffset(int sampleNo,
163     int dataPointNo);
164    
165 jfenwick 1796 // /**
166     /* \brief
167 jgs 82 Return a view into the data for the data point specified.
168 jgs 102 \param sampleNo - Input - sample number.
169 jfenwick 1796 \param dataPointNo - Input - data point number for the sample.*/
170     // */
171     // ESCRIPT_DLL_API
172     // virtual
173     // DataArrayView
174     // getDataPoint(int sampleNo,
175     // int dataPointNo);
176 jgs 102
177 jgs 82 /**
178     \brief
179 jgs 102 Return the number of doubles stored for the Data object.
180 jgs 82 */
181 woo409 757 ESCRIPT_DLL_API
182 jgs 102 virtual
183 jfenwick 1796 DataTypes::ValueType::size_type
184 jgs 102 getLength() const;
185    
186 jgs 82 /**
187     \brief
188 jgs 102 Factory method that returns a newly created DataConstant object
189     sliced from the specified region of this object.
190 jgs 82 The caller is reponsible for managing the object created.
191 jgs 102 \param region - Input - region to slice from this object.
192 jgs 82 */
193 woo409 757 ESCRIPT_DLL_API
194 jgs 102 virtual
195     DataAbstract*
196 jfenwick 1796 getSlice(const DataTypes::RegionType& region) const;
197 jgs 102
198     /**
199 jgs 82 \brief
200     Copy the specified region from the given value.
201 jgs 102 \param value - Input - Data object to copy from.
202     \param region - Input - Region to copy.
203 jgs 82 */
204 woo409 757 ESCRIPT_DLL_API
205 jgs 102 virtual
206     void
207     setSlice(const DataAbstract* value,
208 jfenwick 1796 const DataTypes::RegionType& region);
209 jgs 102
210 jgs 123
211     /**
212 gross 580 \brief
213 ksteube 775 Computes a symmetric matrix (A + AT) / 2
214    
215     \param ev - Output - symmetric matrix
216    
217     */
218 gross 800 ESCRIPT_DLL_API
219 ksteube 775 virtual void
220     symmetric(DataAbstract* ev);
221    
222     /**
223     \brief
224     Computes a nonsymmetric matrix (A - AT) / 2
225    
226     \param ev - Output - nonsymmetric matrix
227    
228     */
229 gross 800 ESCRIPT_DLL_API
230 ksteube 775 virtual void
231     nonsymmetric(DataAbstract* ev);
232    
233     /**
234     \brief
235     Computes the trace of a matrix
236    
237     \param ev - Output - trace of matrix
238    
239     */
240 gross 800 ESCRIPT_DLL_API
241 ksteube 775 virtual void
242 gross 800 trace(DataAbstract* ev, int axis_offset);
243 ksteube 775
244     /**
245     \brief
246     Transpose each data point of this Data object around the given axis.
247    
248     \param ev - Output - transpose of matrix
249    
250     */
251 gross 800 ESCRIPT_DLL_API
252 ksteube 775 virtual void
253     transpose(DataAbstract* ev, int axis_offset);
254    
255     /**
256     \brief
257 gross 804 swaps components axis0 and axis1
258 gross 800
259     \param ev - Output - swapped components
260    
261     */
262     ESCRIPT_DLL_API
263     virtual void
264 gross 804 swapaxes(DataAbstract* ev, int axis0, int axis1);
265 gross 800
266    
267     /**
268     \brief
269 gross 580 solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
270    
271     \param ev - Output - eigenvalues in increasing order at each data point
272    
273     */
274 woo409 757 ESCRIPT_DLL_API
275 gross 580 virtual void
276     eigenvalues(DataAbstract* ev);
277    
278     /**
279     \brief
280     solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V
281    
282     \param ev - Output - eigenvalues in increasing order at each data point
283     \param V - Output - corresponding eigenvectors. They are normalized such that their length is one
284     and the first nonzero component is positive.
285     \param tol - Input - eigenvalue with relative distance tol are treated as equal.
286    
287     */
288    
289 woo409 757 ESCRIPT_DLL_API
290 gross 580 virtual void
291     eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
292    
293    
294 jfenwick 1796 /**
295     \brief
296     Return a reference to the underlying DataVector.
297     */
298     ESCRIPT_DLL_API
299     DataTypes::ValueType&
300     getVector();
301    
302     ESCRIPT_DLL_API
303     const DataTypes::ValueType&
304     getVector() const;
305    
306    
307 jgs 82 protected:
308    
309     private:
310     //
311 jgs 102 // the actual data
312 jfenwick 1796 DataTypes::ValueType m_data;
313 jgs 102
314 jgs 82 };
315    
316 jfenwick 1796 inline
317     DataTypes::ValueType&
318     DataConstant::getVector()
319     {
320     return m_data;
321     }
322    
323     inline
324     const DataTypes::ValueType&
325     DataConstant::getVector() const
326     {
327     return m_data;
328     }
329    
330    
331 jgs 82 } // end of namespace
332     #endif

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26