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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1811 - (show annotations)
Thu Sep 25 23:11:13 2008 UTC (10 years, 3 months ago) by ksteube
File MIME type: text/plain
File size: 7109 byte(s)
Copyright updated in all files

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

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26