/[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 1712 - (show annotations)
Wed Aug 20 05:04:28 2008 UTC (12 years, 2 months ago) by jfenwick
File size: 5493 byte(s)
Branch commit.

Finished first pass of Data.h - There is still a constructor which takes 
a DataArrayView as a parameter. Apart from that, there are no direct 
references to DataArrayView.

DataTagged has a new constructor for copying just the tags from an 
existing object.
DataTypes:: now has a scalarShape constant (to avoid creating one 
everytime you create a scalar).



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 int
118 DataAbstract::getTagNumber(int dpno)
119 {
120 throw DataException("Error - DataAbstract::getTagNumber: Data type cannot be accessed by tag values.");
121 return (0);
122 }
123
124 int
125 DataAbstract::archiveData(ofstream& archiveFile,
126 const ValueType::size_type noValues) const
127 {
128 return 0;
129 }
130
131 int
132 DataAbstract::extractData(ifstream& archiveFile,
133 const ValueType::size_type noValues)
134 {
135 return 0;
136 }
137
138 void
139 DataAbstract::copyAll(const boost::python::numeric::array& value)
140 {
141 throw DataException("Error - DataAbstract::copying data from numarray objects is not supported.");
142 }
143 void
144 DataAbstract::copyToDataPoint(const int sampleNo, const int dataPointNo, const double value)
145 {
146 throw DataException("Error - DataAbstract::copying data from double value to a single data point is not supported.");
147 }
148 void
149 DataAbstract::copyToDataPoint(const int sampleNo, const int dataPointNo, const boost::python::numeric::array& value)
150 {
151 throw DataException("Error - DataAbstract::copying data from numarray objects to a single data point is not supported.");
152 }
153
154 void
155 DataAbstract::symmetric(DataAbstract* ev)
156 {
157 throw DataException("Error - DataAbstract::symmetric is not supported.");
158 }
159
160 void
161 DataAbstract::nonsymmetric(DataAbstract* ev)
162 {
163 throw DataException("Error - DataAbstract::nonsymmetric is not supported.");
164 }
165
166 void
167 DataAbstract::trace(DataAbstract* ev, int axis_offset)
168 {
169 throw DataException("Error - DataAbstract::trace is not supported.");
170 }
171
172 void
173 DataAbstract::swapaxes(DataAbstract* ev, int axis0, int axis1)
174 {
175 throw DataException("Error - DataAbstract::component swapaxes is not supported.");
176 }
177 void
178 DataAbstract::transpose(DataAbstract* ev, int axis_offset)
179 {
180 throw DataException("Error - DataAbstract::transpose is not supported.");
181 }
182
183 void
184 DataAbstract::eigenvalues(DataAbstract* ev)
185 {
186 throw DataException("Error - DataAbstract::eigenvalues is not supported.");
187 }
188 void
189 DataAbstract::eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol)
190 {
191 throw DataException("Error - DataAbstract::eigenvalues_and_eigenvectors is not supported.");
192
193 }
194 void
195 DataAbstract::setToZero()
196 {
197 throw DataException("Error - DataAbstract:: cannot set values to zero.");
198 }
199
200 void
201 DataAbstract::reorderByReferenceIDs(int *reference_ids)
202 {
203 }
204
205
206
207
208 } // end of namespace

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.26