/u/cergrene/0/mallet/codes/SeldonData-1.4/Data.hxx
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
#ifndef FILE_SELDONDATA_DATA_HXX
00020
00021
#include <iostream>
00022
using std::cout;
00023
using std::endl;
00024
00025
namespace SeldonData
00026 {
00027
00029
template<
class T,
int N,
class TG = T>
00030 class Data
00031 {
00032
00033
protected:
00035 Array<T, N>
data_;
00037 Array<Grid<TG>*, 1>
grids_;
00038
00039
public:
00040
00041
00042
00043
Data() throw();
00044
Data(
Grid<TG>& G0) throw();
00045
Data(
Grid<TG>& G0,
Grid<TG>& G1) throw();
00046
Data(
Grid<TG>& G0,
Grid<TG>& G1,
00047
Grid<TG>& G2) throw();
00048
Data(
Grid<TG>& G0,
Grid<TG>& G1,
00049
Grid<TG>& G2,
Grid<TG>& G3) throw();
00050
Data(
Grid<TG>& G0,
Grid<TG>& G1,
00051
Grid<TG>& G2,
Grid<TG>& G3,
00052
Grid<TG>& G4) throw();
00053
Data(
Grid<TG>& G0,
Grid<TG>& G1,
00054
Grid<TG>& G2,
Grid<TG>& G3,
00055
Grid<TG>& G4,
Grid<TG>& G5) throw();
00056
Data(
Grid<TG>& G0,
Grid<TG>& G1,
00057
Grid<TG>& G2,
Grid<TG>& G3,
00058
Grid<TG>& G4,
Grid<TG>& G5,
00059
Grid<TG>& G6) throw();
00060
Data(
Grid<TG>& G0,
Grid<TG>& G1,
00061
Grid<TG>& G2,
Grid<TG>& G3,
00062
Grid<TG>& G4,
Grid<TG>& G5,
00063
Grid<TG>& G6,
Grid<TG>& G7) throw();
00064
Data(
Grid<TG>& G0,
Grid<TG>& G1,
00065
Grid<TG>& G2,
Grid<TG>& G3,
00066
Grid<TG>& G4,
Grid<TG>& G5,
00067
Grid<TG>& G6,
Grid<TG>& G7,
00068
Grid<TG>& G8) throw();
00069
Data(
Grid<TG>& G0,
Grid<TG>& G1,
00070
Grid<TG>& G2,
Grid<TG>& G3,
00071
Grid<TG>& G4,
Grid<TG>& G5,
00072
Grid<TG>& G6,
Grid<TG>& G7,
00073
Grid<TG>& G8,
Grid<TG>& G9) throw();
00074
Data(
int N0) throw();
00075
Data(
int N0,
int N1) throw();
00076
Data(
int N0,
int N1,
00077
int N2) throw();
00078
Data(
int N0,
int N1,
00079
int N2,
int N3) throw();
00080
Data(
int N0,
int N1,
00081
int N2,
int N3,
00082
int N4) throw();
00083
Data(
int N0,
int N1,
00084
int N2,
int N3,
00085
int N4,
int N5) throw();
00086
Data(
int N0,
int N1,
00087
int N2,
int N3,
00088
int N4,
int N5,
00089
int N6) throw();
00090
Data(
int N0,
int N1,
00091
int N2,
int N3,
00092
int N4,
int N5,
00093
int N6,
int N7) throw();
00094
Data(
int N0,
int N1,
00095
int N2,
int N3,
00096
int N4,
int N5,
00097
int N6,
int N7,
00098
int N8) throw();
00099
Data(
int N0,
int N1,
00100
int N2,
int N3,
00101
int N4,
int N5,
00102
int N6,
int N7,
00103
int N8,
int N9) throw();
00104
Data(const TinyVector<
int, N>& shape) throw();
00105
Data(T* data, const TinyVector<
int, N>& shape,
00106 preexistingMemoryPolicy policy = neverDeleteData) throw();
00107 template <class T0>
00108
Data(
Data<T0, N, TG>& data) throw();
00109
00110
00111
00112 ~
Data() throw();
00113
00114
00115
00116 T& operator() (
int i0);
00117 T& operator() (
int i0,
int i1);
00118 T& operator() (
int i0,
int i1,
int i2);
00119 T& operator() (
int i0,
int i1,
int i2,
00120
int i3);
00121 T& operator() (
int i0,
int i1,
int i2,
00122
int i3,
int i4);
00123 T& operator() (
int i0,
int i1,
int i2,
00124
int i3,
int i4,
int i5);
00125 T& operator() (
int i0,
int i1,
int i2,
00126
int i3,
int i4,
int i5,
00127
int i6);
00128 T& operator() (
int i0,
int i1,
int i2,
00129
int i3,
int i4,
int i5,
00130
int i6,
int i7);
00131 T& operator() (
int i0,
int i1,
int i2,
00132
int i3,
int i4,
int i5,
00133
int i6,
int i7,
int i8);
00134 T& operator() (
int i0,
int i1,
int i2,
00135
int i3,
int i4,
int i5,
00136
int i6,
int i7,
int i8,
00137
int i9);
00138
00139 T operator() (
int i0) const;
00140 T operator() (
int i0,
int i1) const;
00141 T operator() (
int i0,
int i1,
int i2) const;
00142 T operator() (
int i0,
int i1,
int i2,
00143
int i3) const;
00144 T operator() (
int i0,
int i1,
int i2,
00145
int i3,
int i4) const;
00146 T operator() (
int i0,
int i1,
int i2,
00147
int i3,
int i4,
int i5) const;
00148 T operator() (
int i0,
int i1,
int i2,
00149
int i3,
int i4,
int i5,
00150
int i6) const;
00151 T operator() (
int i0,
int i1,
int i2,
00152
int i3,
int i4,
int i5,
00153
int i6,
int i7) const;
00154 T operator() (
int i0,
int i1,
int i2,
00155
int i3,
int i4,
int i5,
00156
int i6,
int i7,
int i8) const;
00157 T operator() (
int i0,
int i1,
int i2,
00158
int i3,
int i4,
int i5,
00159
int i6,
int i7,
int i8,
00160
int i9) const;
00161
00162 T& operator() (const Array<
int, 1>& indices);
00163
00164 T& Value(
int i0,
int i1 = -1,
00165
int i2 = -1,
int i3 = -1,
00166
int i4 = -1,
int i5 = -1,
00167
int i6 = -1,
int i7 = -1,
00168
int i8 = -1,
int i9 = -1);
00169
00170 T Value(
int i0,
int i1 = -1,
00171
int i2 = -1,
int i3 = -1,
00172
int i4 = -1,
int i5 = -1,
00173
int i6 = -1,
int i7 = -1,
00174
int i8 = -1,
int i9 = -1) const;
00175
00176 template <class T0>
00177
void Copy(
Data<T0, N, TG>& data);
00178
00179
int GetNbElements();
00180
int GetNbDim();
00181
int GetLength(
int dim) const;
00182
00183
Grid<TG>* GetGrid(
int i);
00184
Grid<TG>& operator [] (
int i);
00185 const
Grid<TG>& operator [] (
int i) const;
00186 Array<
Grid<TG>*, 1>& GetGrids();
00187
00188 Array<T, N>& GetArray();
00189 T* GetData();
00190 const T* GetData() const;
00191
00192 template<class DTG, class R0>
00193
void SubData(
Data<T, 1, DTG>&, R0 r0);
00194 template<class DTG, class R0, class R1>
00195
void SubData(
Data<T, 2, DTG>&, R0 r0, R1 r1);
00196 template<class DTG, class R0, class R1, class R2>
00197
void SubData(
Data<T, 3, DTG>&, R0 r0, R1 r1, R2 r2);
00198 template<class DTG, class R0, class R1, class R2,
00199 class R3>
00200
void SubData(
Data<T, 4, DTG>&, R0 r0, R1 r1, R2 r2,
00201 R3 r3);
00202 template<class DTG, class R0, class R1, class R2,
00203 class R3, class R4>
00204
void SubData(
Data<T, 5, DTG>&, R0 r0, R1 r1, R2 r2,
00205 R3 r3, R4 r4);
00206 template<class DTG, class R0, class R1, class R2,
00207 class R3, class R4, class R5>
00208
void SubData(
Data<T, 6, DTG>&, R0 r0, R1 r1, R2 r2,
00209 R3 r3, R4 r4, R5 r5);
00210 template<class DTG, class R0, class R1, class R2,
00211 class R3, class R4, class R5,
00212 class R6>
00213
void SubData(
Data<T, 7, DTG>&, R0 r0, R1 r1, R2 r2,
00214 R3 r3, R4 r4, R5 r5, R6 r6);
00215 template<class DTG, class R0, class R1, class R2,
00216 class R3, class R4, class R5,
00217 class R6, class R7>
00218
void SubData(
Data<T, 8, DTG>&, R0 r0, R1 r1, R2 r2,
00219 R3 r3, R4 r4, R5 r5, R6 r6,
00220 R7 r7);
00221 template<class DTG, class R0, class R1, class R2,
00222 class R3, class R4, class R5,
00223 class R6, class R7, class R8>
00224
void SubData(
Data<T, 9, DTG>&, R0 r0, R1 r1, R2 r2,
00225 R3 r3, R4 r4, R5 r5, R6 r6,
00226 R7 r7, R8 r8);
00227 template<class DTG, class R0, class R1, class R2,
00228 class R3, class R4, class R5,
00229 class R6, class R7, class R8, class R9>
00230
void SubData(
Data<T, 10, DTG>&, R0 r0, R1 r1, R2 r2,
00231 R3 r3, R4 r4, R5 r5, R6 r6,
00232 R7 r7, R8 r8, R9 r9);
00233
00234
void ResizeGrid();
00235
void ResizeGrid(
Grid<TG>& G0);
00236
void ResizeGrid(
Grid<TG>& G0,
Grid<TG>& G1);
00237
void ResizeGrid(
Grid<TG>& G0,
Grid<TG>& G1,
00238
Grid<TG>& G2);
00239
void ResizeGrid(
Grid<TG>& G0,
Grid<TG>& G1,
00240
Grid<TG>& G2,
Grid<TG>& G3);
00241
void ResizeGrid(
Grid<TG>& G0,
Grid<TG>& G1,
00242
Grid<TG>& G2,
Grid<TG>& G3,
00243
Grid<TG>& G4);
00244
void ResizeGrid(
Grid<TG>& G0,
Grid<TG>& G1,
00245
Grid<TG>& G2,
Grid<TG>& G3,
00246
Grid<TG>& G4,
Grid<TG>& G5);
00247
void ResizeGrid(
Grid<TG>& G0,
Grid<TG>& G1,
00248
Grid<TG>& G2,
Grid<TG>& G3,
00249
Grid<TG>& G4,
Grid<TG>& G5,
00250
Grid<TG>& G6);
00251
void ResizeGrid(
Grid<TG>& G0,
Grid<TG>& G1,
00252
Grid<TG>& G2,
Grid<TG>& G3,
00253
Grid<TG>& G4,
Grid<TG>& G5,
00254
Grid<TG>& G6,
Grid<TG>& G7);
00255
void ResizeGrid(
Grid<TG>& G0,
Grid<TG>& G1,
00256
Grid<TG>& G2,
Grid<TG>& G3,
00257
Grid<TG>& G4,
Grid<TG>& G5,
00258
Grid<TG>& G6,
Grid<TG>& G7,
00259
Grid<TG>& G8);
00260
void ResizeGrid(
Grid<TG>& G0,
Grid<TG>& G1,
00261
Grid<TG>& G2,
Grid<TG>& G3,
00262
Grid<TG>& G4,
Grid<TG>& G5,
00263
Grid<TG>& G6,
Grid<TG>& G7,
00264
Grid<TG>& G8,
Grid<TG>& G9);
00265
00266
void ResizeGrid(
int N0);
00267
void ResizeGrid(
int N0,
int N1);
00268
void ResizeGrid(
int N0,
int N1,
00269
int N2);
00270
void ResizeGrid(
int N0,
int N1,
00271
int N2,
int N3);
00272
void ResizeGrid(
int N0,
int N1,
00273
int N2,
int N3,
00274
int N4);
00275
void ResizeGrid(
int N0,
int N1,
00276
int N2,
int N3,
00277
int N4,
int N5);
00278
void ResizeGrid(
int N0,
int N1,
00279
int N2,
int N3,
00280
int N4,
int N5,
00281
int N6);
00282
void ResizeGrid(
int N0,
int N1,
00283
int N2,
int N3,
00284
int N4,
int N5,
00285
int N6,
int N7);
00286
void ResizeGrid(
int N0,
int N1,
00287
int N2,
int N3,
00288
int N4,
int N5,
00289
int N6,
int N7,
00290
int N8);
00291
void ResizeGrid(
int N0,
int N1,
00292
int N2,
int N3,
00293
int N4,
int N5,
00294
int N6,
int N7,
00295
int N8,
int N9);
00296
00297
void Resize();
00298
void Resize(
Grid<TG>& G0);
00299
void Resize(
Grid<TG>& G0,
Grid<TG>& G1);
00300
void Resize(
Grid<TG>& G0,
Grid<TG>& G1,
00301
Grid<TG>& G2);
00302
void Resize(
Grid<TG>& G0,
Grid<TG>& G1,
00303
Grid<TG>& G2,
Grid<TG>& G3);
00304
void Resize(
Grid<TG>& G0,
Grid<TG>& G1,
00305
Grid<TG>& G2,
Grid<TG>& G3,
00306
Grid<TG>& G4);
00307
void Resize(
Grid<TG>& G0,
Grid<TG>& G1,
00308
Grid<TG>& G2,
Grid<TG>& G3,
00309
Grid<TG>& G4,
Grid<TG>& G5);
00310
void Resize(
Grid<TG>& G0,
Grid<TG>& G1,
00311
Grid<TG>& G2,
Grid<TG>& G3,
00312
Grid<TG>& G4,
Grid<TG>& G5,
00313
Grid<TG>& G6);
00314
void Resize(
Grid<TG>& G0,
Grid<TG>& G1,
00315
Grid<TG>& G2,
Grid<TG>& G3,
00316
Grid<TG>& G4,
Grid<TG>& G5,
00317
Grid<TG>& G6,
Grid<TG>& G7);
00318
void Resize(
Grid<TG>& G0,
Grid<TG>& G1,
00319
Grid<TG>& G2,
Grid<TG>& G3,
00320
Grid<TG>& G4,
Grid<TG>& G5,
00321
Grid<TG>& G6,
Grid<TG>& G7,
00322
Grid<TG>& G8);
00323
void Resize(
Grid<TG>& G0,
Grid<TG>& G1,
00324
Grid<TG>& G2,
Grid<TG>& G3,
00325
Grid<TG>& G4,
Grid<TG>& G5,
00326
Grid<TG>& G6,
Grid<TG>& G7,
00327
Grid<TG>& G8,
Grid<TG>& G9);
00328
00329
void Resize(
int N0);
00330
void Resize(
int N0,
int N1);
00331
void Resize(
int N0,
int N1,
00332
int N2);
00333
void Resize(
int N0,
int N1,
00334
int N2,
int N3);
00335
void Resize(
int N0,
int N1,
00336
int N2,
int N3,
00337
int N4);
00338
void Resize(
int N0,
int N1,
00339
int N2,
int N3,
00340
int N4,
int N5);
00341
void Resize(
int N0,
int N1,
00342
int N2,
int N3,
00343
int N4,
int N5,
00344
int N6);
00345
void Resize(
int N0,
int N1,
00346
int N2,
int N3,
00347
int N4,
int N5,
00348
int N6,
int N7);
00349
void Resize(
int N0,
int N1,
00350
int N2,
int N3,
00351
int N4,
int N5,
00352
int N6,
int N7,
00353
int N8);
00354
void Resize(
int N0,
int N1,
00355
int N2,
int N3,
00356
int N4,
int N5,
00357
int N6,
int N7,
00358
int N8,
int N9);
00359
00360
void Resize(const TinyVector<
int, N>& shape);
00361
00362
00363
void Mlt(T alpha);
00364
void Add(T alpha);
00365
void Apply(
void function(T&));
00366 template <class F>
00367
void Apply(F& function);
00368
void Apply(T (function)(const T&));
00369 template <class T0, class TG0, class F>
00370
void Apply(
Data<T0, N, TG0>&, F& function);
00371
00372 T GetMax() const;
00373 T GetMaxAbs() const;
00374 T GetSignedMaxAbs() const;
00375 T GetMin() const;
00376
00377 Array<
int, 1> GetMaxIndex() const;
00378 Array<
int, 1> GetMaxAbsIndex() const;
00379 Array<
int, 1> GetMinIndex() const;
00380
00381 T Sum() const;
00382 T Mean() const;
00383 T Variance() const;
00384 T StandardDeviation() const;
00385
00386 T Norm1() const;
00387 T Norm2() const;
00388 T Norm(T p) const;
00389
00390
void Fill();
00391
void Fill(T value);
00392
00393
void SetZero();
00394
bool IsZero();
00395
00396
void Threshold(T threshold_min, T threshold_max);
00397
void ThresholdAbs(T threshold);
00398
void ThresholdMin(T threshold);
00399
void ThresholdMax(T threshold);
00400
00401 template <class T0, class TG0>
00402 T NGE_interpolation(
Data<T0, N, TG0>& data, T limit = T(0));
00403 template <class T0, class TG0>
00404 T NGE(
Data<T0, N, TG0>& data, T limit = T(0));
00405
00406 template <class T0, class TG0>
00407 T Bias_interpolation(
Data<T0, N, TG0>& data);
00408 template <class T0, class TG0>
00409 T Bias(
Data<T0, N, TG0>& data);
00410
00411 template <class T0, class TG0>
00412 T RMS_interpolation(
Data<T0, N, TG0>& data);
00413 template <class T0, class TG0>
00414 T RMS(
Data<T0, N, TG0>& data);
00415
00416 template <class T0, class TG0>
00417 T RelativeRMS_interpolation(
Data<T0, N, TG0>& data);
00418 template <class T0, class TG0>
00419 T RelativeRMS(
Data<T0, N, TG0>& data);
00420
00421 template <class T0, class TG0>
00422 T Corr_interpolation(
Data<T0, N, TG0>& data);
00423 template <class T0, class TG0>
00424 T Corr(
Data<T0, N, TG0>& data);
00425
00426 template <class T0, class TG0>
00427 T ErrorLessThan_interpolation(
Data<T0, N, TG0>& data, T threshold);
00428 template <class T0, class TG0>
00429 T ErrorLessThan(
Data<T0, N, TG0>& data, T threshold);
00430
00431
void ReverseData(
int dim = 0);
00432
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0);
00433
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0,
00434
Grid<TG>& G1);
00435
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0,
00436
Grid<TG>& G1,
Grid<TG>& G2);
00437
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0,
00438
Grid<TG>& G1,
Grid<TG>& G2,
00439
Grid<TG>& G3);
00440
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0,
00441
Grid<TG>& G1,
Grid<TG>& G2,
00442
Grid<TG>& G3,
Grid<TG>& G4);
00443
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0,
00444
Grid<TG>& G1,
Grid<TG>& G2,
00445
Grid<TG>& G3,
Grid<TG>& G4,
00446
Grid<TG>& G5);
00447
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0,
00448
Grid<TG>& G1,
Grid<TG>& G2,
00449
Grid<TG>& G3,
Grid<TG>& G4,
00450
Grid<TG>& G5,
Grid<TG>& G6);
00451
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0,
00452
Grid<TG>& G1,
Grid<TG>& G2,
00453
Grid<TG>& G3,
Grid<TG>& G4,
00454
Grid<TG>& G5,
Grid<TG>& G6,
00455
Grid<TG>& G7);
00456
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0,
00457
Grid<TG>& G1,
Grid<TG>& G2,
00458
Grid<TG>& G3,
Grid<TG>& G4,
00459
Grid<TG>& G5,
Grid<TG>& G6,
00460
Grid<TG>& G7,
Grid<TG>& G8);
00461
void SwitchDimensions(TinyVector<
int, N> NewDim,
Grid<TG>& G0,
00462
Grid<TG>& G1,
Grid<TG>& G2,
00463
Grid<TG>& G3,
Grid<TG>& G4,
00464
Grid<TG>& G5,
Grid<TG>& G6,
00465
Grid<TG>& G7,
Grid<TG>& G8,
00466
Grid<TG>& G9);
00467
00468
void ChangeCoords(
FuncCoords_Base<TG>& f);
00469
void ChangeCoordsInPlace(
Function_Base<TG>& f);
00470
00471
void Print() const;
00472
void PrintInfo() const;
00473 string InfoString() const;
00474
00475 private:
00476
void ClearGrids();
00477
void SetVariables();
00478
00479 };
00480
00481
00482 }
00483
00484
00485 #define FILE_SELDONDATA_DATA_HXX
00486 #endif
Generated on Tue Nov 9 09:32:18 2004 for SeldonData by
1.3.8