/[escript]/branches/arrayview_from_1695_trunk/escript/src/DataAbstract.cpp
ViewVC logotype

Contents of /branches/arrayview_from_1695_trunk/escript/src/DataAbstract.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1715 - (show annotations)
Thu Aug 21 04:52:14 2008 UTC (11 years, 3 months ago) by jfenwick
File size: 5748 byte(s)
Branch commit.

Moved getSliceRegionLoopRange and checkShape into DataTypes.h
Some work on methods to set/addTaggedValues without using DataArrayView.
To do this I added copyFromNumArray() on DataVector (It buggy at the 
moment).

This build passes the tests but only because copyFromNumArray is not 
used.


1
2 /* $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 #include "DataAbstract.h"
17 #include "DataException.h"
18
19 using namespace std;
20
21 namespace escript {
22
23 DataAbstract::DataAbstract(const FunctionSpace& what):
24 m_noDataPointsPerSample(what.getNumDPPSample()),
25 m_noSamples(what.getNumSamples()),
26 m_functionSpace(what),
27 m_rank(0)
28 {
29 setShape(DataTypes::ShapeType());
30 }
31
32 DataAbstract::~DataAbstract()
33 {
34 }
35
36 void
37 DataAbstract::setPointDataView(const DataArrayView& input)
38 {
39 m_pointDataView.reset(new DataArrayView(input.getData(),input.getShape(),input.getOffset()));
40
41 // until we get rid of m_pointDataView, we need to keep m_shape in sync
42 setShape(input.getShape());
43 }
44
45 // perhaps this should be a constructor parameter
46 void
47 DataAbstract::setShape(const DataTypes::ShapeType& s)
48 {
49 m_shape=s;
50 m_rank=DataTypes::getRank(s);
51 m_novalues=DataTypes::noValues(s);
52 }
53
54
55 void
56 DataAbstract::resetPointDataView()
57 {
58 m_pointDataView.reset(new DataArrayView());
59 m_shape.clear();
60 m_rank=0;
61 m_novalues=1;
62 }
63
64 void
65 DataAbstract::operandCheck(const DataAbstract& right) const
66 {
67 if ((right.getNumDPPSample()!=getNumDPPSample()) ||
68 (right.getNumSamples()!=getNumSamples()) ||
69 (right.getFunctionSpace()!=getFunctionSpace())) {
70 stringstream temp;
71 temp << "Error - Right hand argument sample shape or function space "
72 << "incompatible with left." << endl
73 << "LHS: (" << getNumSamples() << ","
74 << getNumDPPSample() << ") " << getFunctionSpace().toString()
75 << endl
76 << "RHS: (" << right.getNumSamples() << ","
77 << right.getNumDPPSample() << ") "
78 << right.getFunctionSpace().toString();
79 throw DataException(temp.str());
80 }
81
82 //
83 // Check the shape of the point data, a rank of 0(scalar) is okay
84 if (!((right.getPointDataView().getRank()==0) ||
85 (right.getPointDataView().getShape()==getPointDataView().getShape())))
86 {
87 stringstream temp;
88 temp << "Error - Right hand argument point data shape: "
89 << DataTypes::shapeToString(right.getPointDataView().getShape())
90 << " doesn't match left: "
91 << DataTypes::shapeToString(getPointDataView().getShape());
92 throw DataException(temp.str());
93 }
94 }
95
96 void
97 DataAbstract::dump(const std::string fileName) const
98 {
99 throw DataException("Error - DataAbstract:: dump: not implemented.");
100 }
101
102
103
104 DataAbstract::ValueType::value_type*
105 DataAbstract::getSampleDataByTag(int tag)
106 {
107 throw DataException("Error - DataAbstract::getSampleDataByTag: Data type does not have tag values.");
108 }
109
110 void
111 DataAbstract::setTaggedValue(int tagKey,
112 const DataArrayView& value)
113 {
114 throw DataException("Error - DataAbstract::setTaggedValue: Data type does not have tag values.");
115 }
116
117 void
118 DataAbstract::setTaggedValue(int tagKey,
119 const DataTypes::ShapeType& pointshape,
120 const DataTypes::ValueType& value)
121 {
122 throw DataException("Error - DataAbstract::setTaggedValue: Data type does not have tag values.");
123 }
124
125
126 int
127 DataAbstract::getTagNumber(int dpno)
128 {
129 throw DataException("Error - DataAbstract::getTagNumber: Data type cannot be accessed by tag values.");
130 return (0);
131 }
132
133 int
134 DataAbstract::archiveData(ofstream& archiveFile,
135 const ValueType::size_type noValues) const
136 {
137 return 0;
138 }
139
140 int
141 DataAbstract::extractData(ifstream& archiveFile,
142 const ValueType::size_type noValues)
143 {
144 return 0;
145 }
146
147 void
148 DataAbstract::copyAll(const boost::python::numeric::array& value)
149 {
150 throw DataException("Error - DataAbstract::copying data from numarray objects is not supported.");
151 }
152 void
153 DataAbstract::copyToDataPoint(const int sampleNo, const int dataPointNo, const double value)
154 {
155 throw DataException("Error - DataAbstract::copying data from double value to a single data point is not supported.");
156 }
157 void
158 DataAbstract::copyToDataPoint(const int sampleNo, const int dataPointNo, const boost::python::numeric::array& value)
159 {
160 throw DataException("Error - DataAbstract::copying data from numarray objects to a single data point is not supported.");
161 }
162
163 void
164 DataAbstract::symmetric(DataAbstract* ev)
165 {
166 throw DataException("Error - DataAbstract::symmetric is not supported.");
167 }
168
169 void
170 DataAbstract::nonsymmetric(DataAbstract* ev)
171 {
172 throw DataException("Error - DataAbstract::nonsymmetric is not supported.");
173 }
174
175 void
176 DataAbstract::trace(DataAbstract* ev, int axis_offset)
177 {
178 throw DataException("Error - DataAbstract::trace is not supported.");
179 }
180
181 void
182 DataAbstract::swapaxes(DataAbstract* ev, int axis0, int axis1)
183 {
184 throw DataException("Error - DataAbstract::component swapaxes is not supported.");
185 }
186 void
187 DataAbstract::transpose(DataAbstract* ev, int axis_offset)
188 {
189 throw DataException("Error - DataAbstract::transpose is not supported.");
190 }
191
192 void
193 DataAbstract::eigenvalues(DataAbstract* ev)
194 {
195 throw DataException("Error - DataAbstract::eigenvalues is not supported.");
196 }
197 void
198 DataAbstract::eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol)
199 {
200 throw DataException("Error - DataAbstract::eigenvalues_and_eigenvectors is not supported.");
201
202 }
203 void
204 DataAbstract::setToZero()
205 {
206 throw DataException("Error - DataAbstract:: cannot set values to zero.");
207 }
208
209 void
210 DataAbstract::reorderByReferenceIDs(int *reference_ids)
211 {
212 }
213
214
215
216
217 } // end of namespace

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26