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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 113 - (hide annotations)
Mon Feb 28 07:06:33 2005 UTC (14 years, 5 months ago) by jgs
Original Path: trunk/esys2/escript/src/Data/DataExpanded.h
File MIME type: text/plain
File size: 7447 byte(s)
*** empty log message ***

1 jgs 102 // $Id$
2 jgs 82 /*
3     ******************************************************************************
4     * *
5     * COPYRIGHT ACcESS 2004 - All Rights Reserved *
6     * *
7     * This software is the property of ACcESS. No part of this code *
8     * may be copied in any form or by any means without the expressed written *
9     * consent of ACcESS. Copying, use or modification of this software *
10     * by any unauthorised person is illegal unless that person has a software *
11     * license agreement with ACcESS. *
12     * *
13     ******************************************************************************
14     */
15    
16 jgs 102 #if !defined escript_DataExpanded_20040323_H
17 jgs 82 #define escript_DataExpanded_20040323_H
18    
19     #include "DataAbstract.h"
20     #include "DataBlocks2D.h"
21     #include "DataArrayView.h"
22    
23     #include <boost/scoped_ptr.hpp>
24     #include <boost/python/numeric.hpp>
25    
26     namespace escript {
27    
28 jgs 102 class DataEmpty;
29     class DataConstant;
30     class DataTagged;
31 jgs 82
32     /**
33     \brief
34     Give a short description of what DataExpanded does.
35    
36     Description:
37     Give a detailed description of DataExpanded
38    
39     Template Parameters:
40     For templates describe any conditions that the parameters used in the
41     template must satisfy
42     */
43    
44     class DataExpanded : public DataAbstract{
45    
46     public:
47    
48     /**
49     \brief
50     Copy constructor for DataExpanded. Performs a deep copy.
51     */
52     DataExpanded(const DataExpanded& other);
53    
54     /**
55     \brief
56 jgs 102 Construct a DataExpanded from a DataConstant.
57 jgs 82 */
58     DataExpanded(const DataConstant& other);
59    
60     /**
61     \brief
62 jgs 102 Construct a DataExpanded from a DataTagged.
63 jgs 82 */
64     DataExpanded(const DataTagged& other);
65    
66     /**
67     \brief
68     Constructor for DataExpanded
69    
70     Description:
71     Constructor for DataExpanded
72     \param value - Input - Data value for a single point.
73     \param what - Input - A description of what this data represents.
74     */
75 jgs 102 DataExpanded(const boost::python::numeric::array& value,
76     const FunctionSpace& what);
77 jgs 82
78     /**
79     \brief
80     Alternative constructor for DataExpanded
81    
82     Description:
83 jgs 102 Alternative Constructor for DataExpanded.
84 jgs 82 \param value - Input - Data value for a single point.
85     \param what - Input - A description of what this data represents.
86    
87     */
88 jgs 102 DataExpanded(const DataArrayView& value,
89     const FunctionSpace& what);
90 jgs 82
91     /**
92     \brief
93     Alternative constructor for DataExpanded that copies a slice from
94     another DataExpanded.
95    
96 jgs 102 \param other - Input - DataExpanded object to slice from.
97     \param region - Input - region to copy.
98 jgs 82 */
99 jgs 102 DataExpanded(const DataExpanded& other,
100     const DataArrayView::RegionType& region);
101 jgs 82
102     /**
103     \brief
104     Destructor
105     */
106 jgs 102 virtual
107     ~DataExpanded();
108 jgs 82
109     /**
110     \brief
111     Return a textual representation of the data
112     */
113 jgs 102 virtual
114     std::string
115     toString() const;
116 jgs 82
117     /**
118     \brief
119     Reshape the data point if the data point is currently rank 0.
120     The original data point value is used for all values of the new
121     data point.
122     */
123 jgs 102 void
124     reshapeDataPoint(const DataArrayView::ShapeType& shape);
125 jgs 82
126     /**
127     \brief
128     Return the offset for the given sample. This is somewhat artificial notion
129     but returns the offset in bytes for the given point into the container
130     holding the point data.
131     \param sampleNo - Input - number of samples.
132     \param dataPointNo - Input - Input.
133     */
134 jgs 102 virtual
135     DataArrayView::ValueType::size_type
136     getPointOffset(int sampleNo,
137     int dataPointNo) const;
138 jgs 82
139     /**
140     \brief
141     Return a view into the data for the data point specified.
142     NOTE: Construction of the DataArrayView is a relatively expensive
143 jgs 102 operation.
144 jgs 82 \param sampleNo - Input
145     \param dataPointNo - Input
146     \return DataArrayView of the data point.
147     */
148 jgs 102 DataArrayView
149     getDataPoint(int sampleNo,
150     int dataPointNo);
151 jgs 82
152     /**
153     \brief
154 jgs 102 Return the number of doubles stored for the Data.
155 jgs 82 */
156 jgs 102 virtual
157     ValueType::size_type
158     getLength() const;
159 jgs 82
160     /**
161     \brief
162     Factory method that returns a newly created DataExpanded.
163     The caller is reponsible for managing the object created.
164     \param region - Input - Region to copy.
165     */
166 jgs 102 virtual
167     DataAbstract*
168     getSlice(const DataArrayView::RegionType& region) const;
169 jgs 82
170     /**
171     \brief
172     Copy the specified region from the given value.
173     \param value - Input - Data to copy from
174     \param region - Input - Region to copy.
175     */
176 jgs 102 virtual
177     void
178     setSlice(const DataAbstract* value,
179     const DataArrayView::RegionType& region);
180 jgs 82
181 jgs 110 /**
182     \brief
183 jgs 113 Assign the given value to all data-points associated with the given
184 jgs 110 reference number.
185    
186     A reference number corresponds to a sample, and thus to all data-points
187 jgs 113 in that sample.
188 jgs 110
189 jgs 113 If the given reference number does not correspond to any sample in this
190     Data object, an exception will be thrown.
191    
192 jgs 110 If the given value is a different shape to this Data object, an exception
193     will be thrown.
194    
195 jgs 113 \param ref - Input - reference number which determines sample numebr to
196     assign given values to.
197 jgs 110 \param value - Input - Value to assign to data-point associated with
198     the given reference number.
199     */
200     virtual
201     void
202     setRefValue(int ref,
203     const DataArray& value);
204    
205     /**
206     \brief
207 jgs 113 Return the value of the first data-point in the sample associated with
208     the given reference number.
209 jgs 110
210     A reference number corresponds to a sample, and thus to all data-points
211     in that sample. If there is more than one data-point per sample number
212 jgs 113 in this Data object, the value of the first data-point will be returned.
213 jgs 110
214 jgs 113 If the given reference number does not correspond to any sample in this
215     Data object, an exception will be thrown.
216    
217 jgs 110 If the given value is a different shape to this Data object, an exception
218     will be thrown.
219    
220 jgs 113 \param ref - Input - reference number which determines sample number to
221     read from.
222 jgs 110 \param value - Output - Object to receive data-points associated with
223     the given reference number.
224     */
225     virtual
226     void
227     getRefValue(int ref,
228     DataArray& value);
229    
230 jgs 82 protected:
231    
232     private:
233    
234     /**
235     \brief
236     Common initialisation called from constructors
237    
238     Description:
239     Common initialisation called from constructors
240     \param shape - Input - The shape of the point data.
241     \param noSamples - Input - number of samples.
242     \param noDataPointsPerSample - Input -
243     */
244 jgs 102 void
245     initialise(const DataArrayView::ShapeType& shape,
246     int noSamples,
247     int noDataPointsPerSample);
248 jgs 82
249     /**
250     \brief
251     Copy the given data point to all data points.
252    
253     Description:
254     Copy the given data point to all data points.
255 jgs 102 \param value Input - Value for a single data point.
256 jgs 82 */
257 jgs 102 void
258     copy(const DataArrayView& value);
259 jgs 82
260 jgs 102 void
261     copy(const boost::python::numeric::array& value);
262    
263 jgs 82 //
264 jgs 102 // The main data storage, a 2D array of data blocks.
265 jgs 82 DataBlocks2D m_data;
266    
267     };
268    
269     } // end of namespace
270 jgs 102
271 jgs 100 #endif

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26