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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 950 - (show annotations)
Tue Feb 6 07:01:11 2007 UTC (12 years, 6 months ago) by gross
File MIME type: text/plain
File size: 7436 byte(s)
escript data objects can now be saved to netCDF files, see http://www.unidata.ucar.edu/software/netcdf/.
Currently only constant data are implemented with expanded and tagged data to follow.
There are two new functions to dump a data object

   s=Data(...)
   s.dump(<filename>)

and to recover it

   s=load(<filename>, domain)

Notice that the function space of s is recovered but domain is still need. 

dump and load will replace archive and extract.

The installation needs now the netCDF installed. 


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 /**
118 \brief
119 Return the offset for the given sample. This is a somewhat artificial notion
120 but returns the offset in bytes for the given point into the container
121 holding the point data. Only really necessary to avoid many DataArrayView
122 objects.
123 \param sampleNo - Input - sample number.
124 \param dataPointNo - Input - data point number for the sample.
125 */
126 ESCRIPT_DLL_API
127 virtual
128 DataArrayView::ValueType::size_type
129 getPointOffset(int sampleNo,
130 int dataPointNo) const;
131
132 /**
133 \brief
134 Return a view into the data for the data point specified.
135 \param sampleNo - Input - sample number.
136 \param dataPointNo - Input - data point number for the sample.
137 */
138 ESCRIPT_DLL_API
139 virtual
140 DataArrayView
141 getDataPoint(int sampleNo,
142 int dataPointNo);
143
144 /**
145 \brief
146 Return the number of doubles stored for the Data object.
147 */
148 ESCRIPT_DLL_API
149 virtual
150 DataArrayView::ValueType::size_type
151 getLength() const;
152
153 /**
154 \brief
155 Factory method that returns a newly created DataConstant object
156 sliced from the specified region of this object.
157 The caller is reponsible for managing the object created.
158 \param region - Input - region to slice from this object.
159 */
160 ESCRIPT_DLL_API
161 virtual
162 DataAbstract*
163 getSlice(const DataArrayView::RegionType& region) const;
164
165 /**
166 \brief
167 Copy the specified region from the given value.
168 \param value - Input - Data object to copy from.
169 \param region - Input - Region to copy.
170 */
171 ESCRIPT_DLL_API
172 virtual
173 void
174 setSlice(const DataAbstract* value,
175 const DataArrayView::RegionType& region);
176
177 /**
178 \brief
179 Archive the underlying data values to the file referenced
180 by ofstream. A count of the number of values expected to be written
181 is provided as a cross-check.
182
183 The return value indicates success (0) or otherwise (1).
184 */
185 ESCRIPT_DLL_API
186 int
187 archiveData(std::ofstream& archiveFile,
188 const DataArrayView::ValueType::size_type noValues) const;
189
190 /**
191 \brief
192 Extract the number of values specified by noValues from the file
193 referenced by ifstream to the underlying data structure.
194
195 The return value indicates success (0) or otherwise (1).
196 */
197 ESCRIPT_DLL_API
198 int
199 extractData(std::ifstream& archiveFile,
200 const DataArrayView::ValueType::size_type noValues);
201
202 /**
203 \brief
204 Computes a symmetric matrix (A + AT) / 2
205
206 \param ev - Output - symmetric matrix
207
208 */
209 ESCRIPT_DLL_API
210 virtual void
211 symmetric(DataAbstract* ev);
212
213 /**
214 \brief
215 Computes a nonsymmetric matrix (A - AT) / 2
216
217 \param ev - Output - nonsymmetric matrix
218
219 */
220 ESCRIPT_DLL_API
221 virtual void
222 nonsymmetric(DataAbstract* ev);
223
224 /**
225 \brief
226 Computes the trace of a matrix
227
228 \param ev - Output - trace of matrix
229
230 */
231 ESCRIPT_DLL_API
232 virtual void
233 trace(DataAbstract* ev, int axis_offset);
234
235 /**
236 \brief
237 Transpose each data point of this Data object around the given axis.
238
239 \param ev - Output - transpose of matrix
240
241 */
242 ESCRIPT_DLL_API
243 virtual void
244 transpose(DataAbstract* ev, int axis_offset);
245
246 /**
247 \brief
248 swaps components axis0 and axis1
249
250 \param ev - Output - swapped components
251
252 */
253 ESCRIPT_DLL_API
254 virtual void
255 swapaxes(DataAbstract* ev, int axis0, int axis1);
256
257
258 /**
259 \brief
260 solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
261
262 \param ev - Output - eigenvalues in increasing order at each data point
263
264 */
265 ESCRIPT_DLL_API
266 virtual void
267 eigenvalues(DataAbstract* ev);
268
269 /**
270 \brief
271 solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V
272
273 \param ev - Output - eigenvalues in increasing order at each data point
274 \param V - Output - corresponding eigenvectors. They are normalized such that their length is one
275 and the first nonzero component is positive.
276 \param tol - Input - eigenvalue with relative distance tol are treated as equal.
277
278 */
279
280 ESCRIPT_DLL_API
281 virtual void
282 eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
283
284
285 protected:
286
287 private:
288 //
289 // the actual data
290 DataArrayView::ValueType m_data;
291
292 };
293
294 } // end of namespace
295 #endif

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26