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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1118 - (show annotations)
Tue Apr 24 08:55:04 2007 UTC (12 years, 3 months ago) by gross
File MIME type: text/plain
File size: 7536 byte(s)
problem with reset of faulty PDE rhs fixed.
1 //$Id$
2 /*
3 ************************************************************
4 * Copyright 2006 by ACcESS MNRF *
5 * *
6 * http://www.access.edu.au *
7 * Primary Business: Queensland, Australia *
8 * Licensed under the Open Software License version 3.0 *
9 * http://www.opensource.org/licenses/osl-3.0.php *
10 * *
11 ************************************************************
12 */
13
14 #if !defined escript_DataConstant_20040323_H
15 #define escript_DataConstant_20040323_H
16 #include "system_dep.h"
17
18 #include "DataAbstract.h"
19 #include "DataArrayView.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 DataArrayView::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 DataArrayView::ShapeType &shape,
98 const DataArrayView::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 \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
127 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
129 holding the point data. Only really necessary to avoid many DataArrayView
130 objects.
131 \param sampleNo - Input - sample number.
132 \param dataPointNo - Input - data point number for the sample.
133 */
134 ESCRIPT_DLL_API
135 virtual
136 DataArrayView::ValueType::size_type
137 getPointOffset(int sampleNo,
138 int dataPointNo) const;
139
140 /**
141 \brief
142 Return a view into the data for the data point specified.
143 \param sampleNo - Input - sample number.
144 \param dataPointNo - Input - data point number for the sample.
145 */
146 ESCRIPT_DLL_API
147 virtual
148 DataArrayView
149 getDataPoint(int sampleNo,
150 int dataPointNo);
151
152 /**
153 \brief
154 Return the number of doubles stored for the Data object.
155 */
156 ESCRIPT_DLL_API
157 virtual
158 DataArrayView::ValueType::size_type
159 getLength() const;
160
161 /**
162 \brief
163 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.
166 \param region - Input - region to slice from this object.
167 */
168 ESCRIPT_DLL_API
169 virtual
170 DataAbstract*
171 getSlice(const DataArrayView::RegionType& region) const;
172
173 /**
174 \brief
175 Copy the specified region from the given value.
176 \param value - Input - Data object to copy from.
177 \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 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
212 Computes a symmetric matrix (A + AT) / 2
213
214 \param ev - Output - symmetric matrix
215
216 */
217 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:
294
295 private:
296 //
297 // the actual data
298 DataArrayView::ValueType m_data;
299
300 };
301
302 } // end of namespace
303 #endif

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26