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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 102 - (hide annotations)
Wed Dec 15 07:08:39 2004 UTC (14 years, 8 months ago) by jgs
Original Path: trunk/esys2/escript/src/Data/DataExpanded.h
File MIME type: text/plain
File size: 5755 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     protected:
182    
183     private:
184    
185     /**
186     \brief
187     Common initialisation called from constructors
188    
189     Description:
190     Common initialisation called from constructors
191     \param shape - Input - The shape of the point data.
192     \param noSamples - Input - number of samples.
193     \param noDataPointsPerSample - Input -
194     */
195 jgs 102 void
196     initialise(const DataArrayView::ShapeType& shape,
197     int noSamples,
198     int noDataPointsPerSample);
199 jgs 82
200     /**
201     \brief
202     Copy the given data point to all data points.
203    
204     Description:
205     Copy the given data point to all data points.
206 jgs 102 \param value Input - Value for a single data point.
207 jgs 82 */
208 jgs 102 void
209     copy(const DataArrayView& value);
210 jgs 82
211 jgs 102 void
212     copy(const boost::python::numeric::array& value);
213    
214 jgs 82 //
215 jgs 102 // The main data storage, a 2D array of data blocks.
216 jgs 82 DataBlocks2D m_data;
217    
218     };
219    
220     } // end of namespace
221 jgs 102
222 jgs 100 #endif

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26