4 template<
int numDim,
size_t numX>
7 double scale[] = {numX};
10 double xRange = xMax - xMin;
11 std::vector<double> dX(numDim,0.0);
12 for(
int iDim = 0;iDim < numDim;iDim++){
13 dX[iDim] = xRange/(scale[iDim]-1.0);
14 xyz[iDim] = ijk[iDim]*dX[iDim] + xMin;
19 template<
int numDim,
size_t numX,
size_t numY>
22 double scale[] = {numX,numY};
25 double xRange = xMax - xMin;
26 std::vector<double> dX(numDim,0.0);
27 for(
int iDim = 0;iDim < numDim;iDim++){
28 dX[iDim] = xRange/(scale[iDim]-1.0);
29 xyz[iDim] = ijk[iDim]*dX[iDim] + xMin;
34 template<
int numDim,
size_t numX,
size_t numY,
size_t numZ>
37 double scale[] = {numX,numY,numZ};
40 double xRange = xMax - xMin;
41 std::vector<double> dX(numDim,0.0);
42 for(
int iDim = 0;iDim < numDim;iDim++){
43 dX[iDim] = xRange/(scale[iDim]-1.0);
44 xyz[iDim] = ijk[iDim]*dX[iDim] + xMin;
49 template<
int numDim,
size_t numX,
size_t numY,
size_t numZ>
50 int RectilinearGrid1(
const std::vector<size_t> &ijk,std::vector<double> &xyz)
52 double iVar = ((double)(ijk[0]+1)/(double(numX)));
53 xyz[0] = std::pow(iVar,2.0);
54 iVar = ((double)(ijk[1]+1)/(double(numY)));
55 xyz[1] = 2.0*std::pow(iVar,2.0);
56 iVar = ((double)(ijk[2]+1)/(double(numZ)));
57 xyz[2] = 3.0*std::pow(iVar,2.0);
61 template<
int numDim,
size_t numX,
size_t numY>
62 int RectilinearGrid1(
const std::vector<size_t> &ijk,std::vector<double> &xyz)
64 double iVar = ((double)(ijk[0]+1)/(double(numX)));
65 xyz[0] = std::pow(iVar,2.0);
66 iVar = ((double)(ijk[1]+1)/(double(numY)));
67 xyz[1] = 2.0*std::pow(iVar,2.0);
71 template<
int numDim,
size_t numX>
72 int RectilinearGrid1(
const std::vector<size_t> &ijk,std::vector<double> &xyz)
74 double iVar = ((double)(ijk[0]+1)/(double(numX)));
75 xyz[0] = std::pow(iVar,2.0);
80 template<
size_t numX,
size_t numY,
size_t numZ,
int nWave>
81 int VGWavy(
const std::vector<size_t> &ijk,std::vector<double> &xyz)
90 double pi = 3.141592653589793238;
92 double pixWave = pi*nWave;
93 double dX = lX/(numX);
94 double dY = lY/(numY);
95 double dZ = lZ/(numZ);
97 xyz[0] = -lX/2.0 + dX*(ijk[0]+aX*std::sin(pixWave*ijk[1]*dY/lY)*
98 std::sin(pixWave*ijk[2]*dZ/lZ));
100 xyz[1] = -lY/2.0 + dY*(ijk[1]+aY*std::sin(pixWave*ijk[0]*dX/lX)*
101 std::sin(pixWave*ijk[2]*dZ/lZ));
103 xyz[2] = -lZ/2.0 + dZ*(ijk[2]+aZ*std::sin(pixWave*ijk[0]*dX/lX)*
104 std::sin(pixWave*ijk[1]*dY/lY));
109 template<
int numDim,
size_t numX,
size_t numY>
110 int CurvilinearGrid1(
const std::vector<size_t> &ijk,std::vector<double> &xyz)
115 double dr = (rmax - r0)/(
double(numX-1));
116 double d0 = (2.0*M_PI)/(
double(numY));
117 double r = r0 + ijk[0]*dr;
118 double a0 = ijk[1]*d0;
121 xyz[0] = r*std::cos(a0);
122 xyz[1] = r*std::sin(a0);
128 template<
int numDim,
size_t numX,
size_t numY,
size_t numZ>
129 int CurvilinearGrid1(
const std::vector<size_t> &ijk,std::vector<double> &xyz)
135 double dr = (rmax - r0)/(
double(numX-1));
136 double d0 = (2.0*M_PI)/(
double(numY));
137 double dp = (2.0*M_PI)/(
double(numZ));
138 double r = r0 + ijk[0]*dr;
139 double a0 = ijk[1]*d0;
142 double phi = ijk[2]*dp;
143 xyz[0] = (rt + r*std::cos(a0))*std::sin(phi);
144 xyz[1] = (rt + r*std::cos(a0))*std::cos(phi);
145 xyz[2] = r*std::sin(a0);
150 template<
int numDim,
size_t numX,
size_t numY>
151 int CurvilinearGrid2(
const std::vector<size_t> &ijk,std::vector<double> &xyz)
155 double I = (ijk[0] + 1)/numX;
156 double J = (ijk[1] + 1)/numY;
160 xyz[1] = 2.0*J*J + I;
161 }
else if (numDim == 3){
162 double K = ijk[2] + 1;
163 xyz[0] = I*I + 2.0*J*J + K;
164 xyz[1] = J*J + 2.0*K*K + I;
165 xyz[2] = 2.0*I*I + 3.0*K*K + J;
int VGWavy(const std::vector< size_t > &ijk, std::vector< double > &xyz)
Eqn (24) from Visbal & Gaitonde.
int CurvilinearGrid2(const std::vector< size_t > &ijk, std::vector< double > &xyz)
int GenerateRegularGrid(std::vector< size_t > &ijk, std::vector< double > &xyz)
int RectilinearGrid1(const std::vector< size_t > &ijk, std::vector< double > &xyz)
int CurvilinearGrid1(const std::vector< size_t > &ijk, std::vector< double > &xyz)