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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1118 - (hide annotations)
Tue Apr 24 08:55:04 2007 UTC (12 years, 4 months ago) by gross
File MIME type: text/plain
File size: 7536 byte(s)
problem with reset of faulty PDE rhs fixed.
1 jgs 102 //$Id$
2 jgs 82 /*
3 elspeth 615 ************************************************************
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 jgs 82 */
13 jgs 480
14 jgs 102 #if !defined escript_DataConstant_20040323_H
15 jgs 82 #define escript_DataConstant_20040323_H
16 woo409 757 #include "system_dep.h"
17 jgs 82
18 jgs 474 #include "DataAbstract.h"
19     #include "DataArrayView.h"
20 jgs 82
21     #include <boost/python/numeric.hpp>
22    
23     namespace escript {
24 jgs 102
25 jgs 82 /**
26     \brief
27 jgs 102 DataConstant stores a single data point which represents the entire
28 jgs 82 function space.
29    
30     Description:
31 jgs 102 DataConstant stores a single data point which represents the entire
32 jgs 82 function space.
33     */
34 jgs 102 class DataConstant : public DataAbstract {
35 jgs 82
36     public:
37    
38     /**
39     \brief
40 jgs 102 Constructor for DataConstant objects.
41 jgs 82
42     Description:
43 jgs 102 Constructor for DataConstant objects.
44 jgs 82
45 jgs 102 \param value - Input - Data value for a single point.
46     \param what - Input - A description of what this data object represents.
47     */
48 woo409 757 ESCRIPT_DLL_API
49 jgs 102 DataConstant(const boost::python::numeric::array& value,
50     const FunctionSpace& what);
51 jgs 100
52 jgs 82 /**
53     \brief
54     Copy constructor. Performs a deep copy.
55     */
56 woo409 757 ESCRIPT_DLL_API
57 jgs 82 DataConstant(const DataConstant& other);
58 jgs 102
59 jgs 82 /**
60     \brief
61 jgs 102 Alternative constructor for DataConstant objects.
62 jgs 82
63     Description:
64 jgs 102 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 jgs 82 */
68 woo409 757 ESCRIPT_DLL_API
69 jgs 102 DataConstant(const DataArrayView& value,
70     const FunctionSpace& what);
71    
72 jgs 82 /**
73     \brief
74 jgs 102 Alternative constructor for DataConstant objects.
75 jgs 82
76     Description:
77 jgs 102 Alternative Constructor for DataConstant objects.
78     \param other - Input - Data object to copy from.
79     \param region - Input - region to copy.
80 jgs 82 */
81 woo409 757 ESCRIPT_DLL_API
82 jgs 102 DataConstant(const DataConstant& other,
83     const DataArrayView::RegionType& region);
84    
85 jgs 82 /**
86     \brief
87 jgs 119 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 woo409 757 ESCRIPT_DLL_API
96 jgs 119 DataConstant(const FunctionSpace& what,
97     const DataArrayView::ShapeType &shape,
98     const DataArrayView::ValueType &data);
99    
100     /**
101     \brief
102 jgs 82 Write the data as a string.
103     */
104 woo409 757 ESCRIPT_DLL_API
105 jgs 102 std::string
106     toString() const;
107 gross 950 /**
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 jgs 102
116 gross 1118 /**
117     \brief
118     sets all values to zero
119     */
120     ESCRIPT_DLL_API
121     virtual
122     void
123     setToZero();
124 gross 950
125 jgs 82 /**
126     \brief
127 jgs 102 Return the offset for the given sample. This is a somewhat artificial notion
128 jgs 82 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 jgs 102 \param sampleNo - Input - sample number.
132     \param dataPointNo - Input - data point number for the sample.
133 jgs 82 */
134 woo409 757 ESCRIPT_DLL_API
135 jgs 102 virtual
136     DataArrayView::ValueType::size_type
137     getPointOffset(int sampleNo,
138     int dataPointNo) const;
139    
140 jgs 82 /**
141     \brief
142     Return a view into the data for the data point specified.
143 jgs 102 \param sampleNo - Input - sample number.
144     \param dataPointNo - Input - data point number for the sample.
145 jgs 82 */
146 woo409 757 ESCRIPT_DLL_API
147 jgs 102 virtual
148     DataArrayView
149     getDataPoint(int sampleNo,
150     int dataPointNo);
151    
152 jgs 82 /**
153     \brief
154 jgs 102 Return the number of doubles stored for the Data object.
155 jgs 82 */
156 woo409 757 ESCRIPT_DLL_API
157 jgs 102 virtual
158 jgs 117 DataArrayView::ValueType::size_type
159 jgs 102 getLength() const;
160    
161 jgs 82 /**
162     \brief
163 jgs 102 Factory method that returns a newly created DataConstant object
164     sliced from the specified region of this object.
165 jgs 82 The caller is reponsible for managing the object created.
166 jgs 102 \param region - Input - region to slice from this object.
167 jgs 82 */
168 woo409 757 ESCRIPT_DLL_API
169 jgs 102 virtual
170     DataAbstract*
171     getSlice(const DataArrayView::RegionType& region) const;
172    
173     /**
174 jgs 82 \brief
175     Copy the specified region from the given value.
176 jgs 102 \param value - Input - Data object to copy from.
177     \param region - Input - Region to copy.
178 jgs 82 */
179 woo409 757 ESCRIPT_DLL_API
180 jgs 102 virtual
181     void
182     setSlice(const DataAbstract* value,
183     const DataArrayView::RegionType& region);
184    
185 jgs 82 /**
186 jgs 123 \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 woo409 757 ESCRIPT_DLL_API
194 jgs 123 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 woo409 757 ESCRIPT_DLL_API
206 jgs 123 int
207     extractData(std::ifstream& archiveFile,
208     const DataArrayView::ValueType::size_type noValues);
209    
210 gross 580 /**
211     \brief
212 ksteube 775 Computes a symmetric matrix (A + AT) / 2
213    
214     \param ev - Output - symmetric matrix
215    
216     */
217 gross 800 ESCRIPT_DLL_API
218 ksteube 775 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 gross 800 ESCRIPT_DLL_API
229 ksteube 775 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 gross 800 ESCRIPT_DLL_API
240 ksteube 775 virtual void
241 gross 800 trace(DataAbstract* ev, int axis_offset);
242 ksteube 775
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 gross 800 ESCRIPT_DLL_API
251 ksteube 775 virtual void
252     transpose(DataAbstract* ev, int axis_offset);
253    
254     /**
255     \brief
256 gross 804 swaps components axis0 and axis1
257 gross 800
258     \param ev - Output - swapped components
259    
260     */
261     ESCRIPT_DLL_API
262     virtual void
263 gross 804 swapaxes(DataAbstract* ev, int axis0, int axis1);
264 gross 800
265    
266     /**
267     \brief
268 gross 580 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 woo409 757 ESCRIPT_DLL_API
274 gross 580 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 woo409 757 ESCRIPT_DLL_API
289 gross 580 virtual void
290     eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
291    
292    
293 jgs 82 protected:
294    
295     private:
296     //
297 jgs 102 // the actual data
298 jgs 82 DataArrayView::ValueType m_data;
299 jgs 102
300 jgs 82 };
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