1 #include "FuncApproxBase.h"
2
3 int FuncApproxBase::defaultNPtsPerDim_ = 10;
4
FuncApproxBase()5 FuncApproxBase::FuncApproxBase()
6 : nSamples_(1),
7 nInputs_(1),
8 nPtsPerDim_(defaultNPtsPerDim_),
9 lowerBounds_(1, 0.0),
10 upperBounds_(1, 0.0)
11 {;}
12
13
FuncApproxBase(int nInputs,int nSamples)14 FuncApproxBase::FuncApproxBase(int nInputs, int nSamples)
15 : nSamples_(nSamples),
16 nInputs_(nInputs),
17 nPtsPerDim_(defaultNPtsPerDim_),
18 lowerBounds_(nInputs, 0.0),
19 upperBounds_(nInputs, 0.0)
20 {
21 ;
22 }
23
24
25 // generate a 2D grid.
26
generate2DGridPoints(std::vector<std::vector<double>> & gridPts,int var1,int var2,const std::vector<double> & settings)27 void FuncApproxBase::generate2DGridPoints(std::vector<std::vector<double> >& gridPts,
28 int var1,
29 int var2,
30 const std::vector<double>& settings)
31 {
32
33 int i, j; // stupid SGI doesn't meet standards for loop scoping.
34
35 // grid size is N x N.
36 gridPts.resize(nPtsPerDim_ * nPtsPerDim_);
37
38 // set all coordinates to preset values
39 for (i=0; i< (int) gridPts.size(); i++)
40 {
41 gridPts[i] = settings;
42 }
43
44 // now vary the two active coordinates
45
46 double dx1 = upperBounds_[var1] - lowerBounds_[var1];
47 double dx2 = upperBounds_[var2] - lowerBounds_[var2];
48
49 for (i=0; i<nPtsPerDim_; i++)
50 {
51 double x1 = lowerBounds_[var1]
52 + ((double) i)/((double) (nPtsPerDim_-1)) * dx1;
53 for (j=0; j<nPtsPerDim_; j++)
54 {
55 double x2 = lowerBounds_[var2]
56 + ((double) j)/((double) (nPtsPerDim_-1)) * dx2;
57 gridPts[i*nPtsPerDim_ + j][var1] = x1;
58 gridPts[i*nPtsPerDim_ + j][var2] = x2;
59 }
60 }
61 }
62
63
64 // generate an N-dimensional grid
generateGridPoints(std::vector<std::vector<double>> & gridPts)65 void FuncApproxBase::generateGridPoints(std::vector<std::vector<double> >& gridPts)
66 {
67 throw std::runtime_error("FuncApproxBase::generateGridPoints not implemented yet");
68 }
69