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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1358 - (hide annotations)
Wed Dec 5 03:41:06 2007 UTC (11 years, 8 months ago) by gross
File MIME type: text/plain
File size: 11256 byte(s)
setTaggedValue works now for expanded data.
1 jgs 480
2 ksteube 1312 /* $Id$ */
3    
4     /*******************************************************
5     *
6     * Copyright 2003-2007 by ACceSS MNRF
7     * Copyright 2007 by University of Queensland
8     *
9     * http://esscc.uq.edu.au
10     * Primary Business: Queensland, Australia
11     * Licensed under the Open Software License version 3.0
12     * http://www.opensource.org/licenses/osl-3.0.php
13     *
14     *******************************************************/
15    
16 jgs 102 #if !defined escript_DataExpanded_20040323_H
17 jgs 82 #define escript_DataExpanded_20040323_H
18 woo409 757 #include "system_dep.h"
19 jgs 82
20     #include "DataAbstract.h"
21     #include "DataBlocks2D.h"
22     #include "DataArrayView.h"
23    
24     #include <boost/python/numeric.hpp>
25    
26     namespace escript {
27    
28 jgs 117 //
29     // Forward declarations of other Data types.
30 jgs 102 class DataConstant;
31     class DataTagged;
32 jgs 82
33     /**
34     \brief
35     Give a short description of what DataExpanded does.
36    
37     Description:
38 jgs 117 Give a detailed description of DataExpanded.
39 jgs 82
40     Template Parameters:
41     For templates describe any conditions that the parameters used in the
42 jgs 117 template must satisfy.
43 jgs 82 */
44    
45 jgs 117 class DataExpanded : public DataAbstract {
46 jgs 82
47     public:
48    
49     /**
50     \brief
51 jgs 117 Constructor for DataExpanded.
52 jgs 82
53 jgs 117 Description:
54     Constructor for DataExpanded.
55 jgs 82
56 jgs 117 The given single data value is copied to all the data points in
57     this data object, where the number of data points is defined by
58     the given function space.
59 jgs 82
60 jgs 117 \param value - Input - A single data value.
61 jgs 82 \param what - Input - A description of what this data represents.
62     */
63 woo409 757 ESCRIPT_DLL_API
64 jgs 102 DataExpanded(const boost::python::numeric::array& value,
65     const FunctionSpace& what);
66 jgs 82
67     /**
68     \brief
69 jgs 117 Alternative constructor for DataExpanded.
70 jgs 82
71     Description:
72 jgs 102 Alternative Constructor for DataExpanded.
73 jgs 117
74     The given single data value is copied to all the data points in
75     this data object, where the number of data points is defined by
76     the given function space.
77    
78     \param value - Input - A single data value.
79 jgs 82 \param what - Input - A description of what this data represents.
80     */
81 woo409 757 ESCRIPT_DLL_API
82 jgs 102 DataExpanded(const DataArrayView& value,
83     const FunctionSpace& what);
84 jgs 82
85     /**
86     \brief
87     Alternative constructor for DataExpanded that copies a slice from
88     another DataExpanded.
89    
90 jgs 102 \param other - Input - DataExpanded object to slice from.
91     \param region - Input - region to copy.
92 jgs 82 */
93 woo409 757 ESCRIPT_DLL_API
94 jgs 102 DataExpanded(const DataExpanded& other,
95     const DataArrayView::RegionType& region);
96 jgs 82
97     /**
98     \brief
99 jgs 119 Alternative constructor for DataExpanded objects.
100    
101     Description:
102     Alternative Constructor for DataExpanded objects.
103     \param what - Input - A description of what this data object represents.
104     \param shape - Input - the shape of each data-point.
105 jgs 122 \param data - the array of data values for the data-points.
106 jgs 119 */
107 woo409 757 ESCRIPT_DLL_API
108 jgs 119 DataExpanded(const FunctionSpace& what,
109     const DataArrayView::ShapeType &shape,
110     const DataArrayView::ValueType &data);
111    
112     /**
113     \brief
114 jgs 117 Copy constructor for DataExpanded.
115     Performs a deep copy from another DataExpanded.
116 jgs 82 */
117 woo409 757 ESCRIPT_DLL_API
118 jgs 117 DataExpanded(const DataExpanded& other);
119    
120     /**
121     \brief
122     Copy constructor for DataExpanded.
123     Construct a DataExpanded from a DataConstant.
124     */
125 woo409 757 ESCRIPT_DLL_API
126 jgs 117 DataExpanded(const DataConstant& other);
127    
128     /**
129     \brief
130     Copy constructor for DataExpanded.
131     Construct a DataExpanded from a DataTagged.
132     */
133 woo409 757 ESCRIPT_DLL_API
134 jgs 117 DataExpanded(const DataTagged& other);
135    
136     /**
137     \brief
138     Default destructor for DataExpanded.
139     */
140 woo409 757 ESCRIPT_DLL_API
141 jgs 102 virtual
142     ~DataExpanded();
143 jgs 82
144     /**
145     \brief
146 jgs 117 Return a textual representation of the data.
147 jgs 82 */
148 woo409 757 ESCRIPT_DLL_API
149 jgs 102 virtual
150     std::string
151     toString() const;
152 gross 950 /**
153     \brief
154     dumps the object into a netCDF file
155     */
156     ESCRIPT_DLL_API
157     virtual
158     void
159     dump(const std::string fileName) const;
160 jgs 82
161 gross 1118 /**
162     \brief
163     sets all values to zero
164     */
165     ESCRIPT_DLL_API
166     virtual
167     void
168     setToZero();
169    
170 jgs 82 /**
171     \brief
172 jgs 117 Return the offset for the given given data point. This returns
173     the offset in bytes for the given point into the container
174 jgs 82 holding the point data.
175 jgs 117
176     \param sampleNo - Input - sample number.
177     \param dataPointNo - Input - data point number.
178 jgs 82 */
179 woo409 757 ESCRIPT_DLL_API
180 jgs 102 virtual
181     DataArrayView::ValueType::size_type
182     getPointOffset(int sampleNo,
183     int dataPointNo) const;
184 jgs 82
185     /**
186     \brief
187 jgs 117 Return a view into the data array for the data point specified.
188    
189 jgs 82 NOTE: Construction of the DataArrayView is a relatively expensive
190 jgs 102 operation.
191 jgs 117
192     \param sampleNo - Input - sample number.
193     \param dataPointNo - Input - data point number.
194     \return DataArrayView for the data point.
195 jgs 82 */
196 woo409 757 ESCRIPT_DLL_API
197 jgs 102 DataArrayView
198     getDataPoint(int sampleNo,
199     int dataPointNo);
200 jgs 82
201     /**
202     \brief
203 jgs 102 Return the number of doubles stored for the Data.
204 jgs 82 */
205 woo409 757 ESCRIPT_DLL_API
206 jgs 102 virtual
207     ValueType::size_type
208     getLength() const;
209 jgs 82
210     /**
211     \brief
212     Factory method that returns a newly created DataExpanded.
213     The caller is reponsible for managing the object created.
214 jgs 117
215 jgs 82 \param region - Input - Region to copy.
216     */
217 woo409 757 ESCRIPT_DLL_API
218 jgs 102 virtual
219     DataAbstract*
220     getSlice(const DataArrayView::RegionType& region) const;
221 jgs 82
222     /**
223     \brief
224     Copy the specified region from the given value.
225 jgs 117
226     \param value - Input - Data object to copy from.
227 jgs 82 \param region - Input - Region to copy.
228     */
229 woo409 757 ESCRIPT_DLL_API
230 jgs 102 virtual
231     void
232     setSlice(const DataAbstract* value,
233     const DataArrayView::RegionType& region);
234 jgs 82
235 jgs 110 /**
236 jgs 123 \brief
237     Archive the underlying data values to the file referenced
238     by ofstream. A count of the number of values expected to be written
239     is provided as a cross-check.
240    
241     The return value indicates success (0) or otherwise (1).
242     */
243 woo409 757 ESCRIPT_DLL_API
244 jgs 123 int
245     archiveData(std::ofstream& archiveFile,
246     const DataArrayView::ValueType::size_type noValues) const;
247    
248     /**
249     \brief
250     Extract the number of values specified by noValues from the file
251     referenced by ifstream to the underlying data structure.
252    
253     The return value indicates success (0) or otherwise (1).
254     */
255 woo409 757 ESCRIPT_DLL_API
256 jgs 123 int
257     extractData(std::ifstream& archiveFile,
258     const DataArrayView::ValueType::size_type noValues);
259    
260 gross 580 /**
261     \brief
262 gross 1358 setTaggedValue
263    
264     Description:
265     uses tag to set a new value
266    
267     \param tagKey - Input - Integer key.
268     \param value - Input - Single DataArrayView value to be assigned to the tag.
269     */
270     ESCRIPT_DLL_API
271     virtual
272     void
273     setTaggedValue(int tagKey,
274     const DataArrayView& value);
275    
276     /**
277     \brief
278 ksteube 775 Computes a symmetric matrix (A + AT) / 2
279    
280     \param ev - Output - symmetric matrix
281    
282     */
283 gross 800 ESCRIPT_DLL_API
284 ksteube 775 virtual void
285     symmetric(DataAbstract* ev);
286    
287     /**
288     \brief
289     Computes a nonsymmetric matrix (A - AT) / 2
290    
291     \param ev - Output - nonsymmetric matrix
292    
293     */
294 gross 800 ESCRIPT_DLL_API
295 ksteube 775 virtual void
296     nonsymmetric(DataAbstract* ev);
297    
298     /**
299     \brief
300     Computes the trace of a matrix
301    
302     \param ev - Output - trace of your matrix
303    
304     */
305 gross 800 ESCRIPT_DLL_API
306 ksteube 775 virtual void
307 gross 800 trace(DataAbstract* ev, int axis_offset);
308 ksteube 775
309     /**
310     \brief
311     Transpose each data point of this Data object around the given axis.
312    
313     \param ev - Output - transpose of your matrix
314    
315     */
316 gross 800 ESCRIPT_DLL_API
317 ksteube 775 virtual void
318     transpose(DataAbstract* ev, int axis_offset);
319    
320     /**
321     \brief
322 gross 804 swaps components axis0 and axis1
323 gross 800
324     \param ev - Output - swapped components
325    
326     */
327     ESCRIPT_DLL_API
328     virtual void
329 gross 804 swapaxes(DataAbstract* ev, int axis0, int axis1);
330 gross 800
331    
332     /**
333     \brief
334 gross 580 solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
335    
336     \param ev - Output - eigenvalues in increasing order at each data point
337    
338     */
339 woo409 757 ESCRIPT_DLL_API
340 gross 580 virtual void
341     eigenvalues(DataAbstract* ev);
342    
343     /**
344     \brief
345     solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V
346    
347     \param ev - Output - eigenvalues in increasing order at each data point
348     \param V - Output - corresponding eigenvectors. They are normalized such that their length is one
349     and the first nonzero component is positive.
350     \param tol - Input - eigenvalue with relative distance tol are treated as equal.
351    
352     */
353    
354 woo409 757 ESCRIPT_DLL_API
355 gross 580 virtual void
356     eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
357    
358    
359 jgs 82 protected:
360    
361     private:
362    
363     /**
364     \brief
365 jgs 117 Common initialisation called from constructors.
366 jgs 82
367     Description:
368 jgs 117 Common initialisation called from constructors.
369    
370     Resizes the underlying data array to provide sufficient storage for the
371     given shape and number of data points, and creates the corresponding
372     DataArrayView of this data.
373    
374 jgs 82 \param shape - Input - The shape of the point data.
375     \param noSamples - Input - number of samples.
376 jgs 117 \param noDataPointsPerSample - Input - number of data points per sample.
377 jgs 82 */
378 jgs 102 void
379     initialise(const DataArrayView::ShapeType& shape,
380     int noSamples,
381     int noDataPointsPerSample);
382 jgs 82
383     /**
384     \brief
385 jgs 126 Copy the given data point value to all data points in this object.
386 jgs 82
387     Description:
388 jgs 117 Copy the given data point to all data points in this object.
389    
390     \param value Input - A single data point value.
391 jgs 82 */
392 jgs 102 void
393     copy(const DataArrayView& value);
394 jgs 82
395 jgs 126 /**
396     \brief
397     Copy the given data point value given a numarray object to all data points in this object.
398    
399     Description:
400     Copy the given data point value given a numarray object to all data points in this object.
401    
402     \param value Input - A single data point value.
403     */
404 jgs 102 void
405     copy(const boost::python::numeric::array& value);
406    
407 jgs 126 /**
408     \brief
409     Copy the numarray object to the data points in this object.
410    
411     Description:
412     Copy the numarray object to the data points in this object.
413    
414     \param value Input - new values for the data points
415     */
416     void
417     copyAll(const boost::python::numeric::array& value);
418    
419 gross 921 /**
420     \brief
421 gross 922 Copy a double value to the data point dataPointNo of sample sampleNo in this object.
422    
423     Description:
424     Copy a double value to the data point dataPointNo of sample sampleNo in this object.
425    
426     \param sampleNo Input - sample number
427     \param dataPointNo Input - data point of the sample
428     \param value Input - new values for the data point
429     */
430     ESCRIPT_DLL_API
431     virtual void
432     copyToDataPoint(const int sampleNo, const int dataPointNo, const double value);
433    
434    
435     /**
436     \brief
437 gross 921 Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
438    
439     Description:
440     Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
441    
442     \param sampleNo Input - sample number
443     \param dataPointNo Input - data point of the sample
444     \param value Input - new values for the data point
445     */
446     void
447     copyToDataPoint(const int sampleNo, const int dataPointNo, const boost::python::numeric::array& value);
448    
449 jgs 82 //
450 jgs 117 // The main data storage array, a 2D array of data blocks.
451     // noSamples * noDataPointsPerSample
452 jgs 82 DataBlocks2D m_data;
453    
454     };
455    
456     } // end of namespace
457 jgs 102
458 jgs 100 #endif

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26