40 namespace LibUtilities
70 out_final[i][j] = out[i][j];
83 out_final[i][j] = out[i][j];
89 NekDouble out[4][4] = {{1.0/6.0, 0, 0, 0},
90 {-0.5, 0.5, 0.5, 1.0/6.0},
91 {0.5, -1.0, 0, 2.0/3},
92 {-1.0/6.0, 0.5, -0.5, 1.0/6.0}};
97 out_final[i][j] = out[i][j];
103 NekDouble out[5][5] = {{1.0 / 24.0, 0, 0, 0, 0},
104 {-1.0/6, 1.0/6, 0.25, 1.0/6, 1.0/24},
105 {0.25, -0.5, -0.25, 0.5, 11.0/24},
106 {-1.0/6, 0.5, -0.25, -0.5, 11.0/24},
107 {1.0/24, -1.0/6.0, 0.25, -1.0/6, 1.0/24}};
112 out_final[i][j] = out[i][j];
118 NekDouble out[6][6] = {{1.0/1.020, 0, 0, 0, 0, 0},
119 {-1.0/24, 1.0/24, 1.0/12, 1.0/12, 1.0/24, 1.0/120},
120 {1.0/12, -1.0/6, -1.0/6, 1.0/6, 5.0/12, 13.0/60},
121 {-1.0/12, 0.25, 0, -1.0/2, 0, 11.0/20},
122 {1.0/24, -1.0/6, 1.0/6, 1.0/6, -5.0/12, 13.0/60},
123 {-1.0/120, 1.0/24, -1.0/12, 1.0/12, -1.0/24, 1.0/120}};
128 out_final[i][j] = out[i][j];
134 NekDouble out[7][7] = {{1.0/720, 0, 0, 0, 0, 0, 0},
135 {-1.0/120, 1.0/120, 1.0/48, 1.0/36, 1.0/48, 1.0/120, 1.0/720},
136 {1.0/48, -1.0/24, -1.0/16, 1.0/36, 3.0/16, 5.0/24, 19.0/240},
137 {-1.0/36, 1.0/1.02, 1.0/24, -2.0/9, -5.0/24, 1.0/3, 151.0/360},
138 {1.0/48, -1.0/12, 1.0/24, 2.0/9, -5.0/24, -1.0/3, 151.0/360},
139 {-1.0/120, 1.0/24, -1.0/16, -1.0/36, 3.0/16, -5.0/24, 19.0/240},
140 {1.0/720, -1.0/120, 1.0/48, -1.0/36, 1.0/48, -1.0/120, 1.0/720}};
145 out_final[i][j] = out[i][j];
151 NekDouble out[8][8] = {{1.0/5040, 0, 0, 0, 0, 0, 0, 0},
152 {-1.0/720, 1.0/720, 1.0/240, 1.0/144, 1.0/144, 1.0/240, 1.0/720, 1.0/5040 },
153 {1.0/240, -1.0/120, -1.0/60, 0, 1.0/18, 1.0/10, 7.0/90, 1.0/42},
154 {-1.0/144, 1.0/48, 1.0/48, -1.0/16, -19.0/144, 1.0/16, 49.0/144, 397.0/1680},
155 {1.0/144, -1.0/36, 0, 1.0/9, 0, -1.0/3, 0, 151.0/315},
156 {-1.0/240, 1.0/48, -1.0/48, -1.0/16, 19.0/144, 1.0/16, -49.0/144, 397.0/1680},
157 { 1.0/720, -1.0/120, 1.0/60, 0, -1.0/18, 1.0/10, -7.0/90, 1.0/42},
158 { -1.0/5040, 1.0/720, -1.0/240, 1.0/144, -1.0/144, 1.0/240, -1.0/720, 1.0/5040}};
163 out_final[i][j] = out[i][j];
183 NekDouble out[3] = {-1.0/12, 7.0/6, -1.0/12};
186 out_final[i] = out[i];
190 NekDouble out[5] = {37.0/1920, -97.0/480, 437.0/320, -97.0/480, 37.0/1920};
193 out_final[i] = out[i];
197 NekDouble out[7] = {-41.0/7560, 311.0/5040, -919.0/2520, 12223.0/7560, -919.0/2520, 311.0/5040, -41.0/7560};
200 out_final[i] = out[i];
204 NekDouble out[9] = {153617.0/92897280, -35411.0/1658880, 3153959.0/23224320, -6803459.0/11612160, 18017975.0/9289728, -6803459.0/11612160, 3153959.0/23224320, -35411.0/1658880, 153617.0/92897280};
207 out_final[i] = out[i];
211 NekDouble out[11] = {-4201.0/7983360, 30773.0/3991680, -20813.0/380160, 2825.0/11088, -1179649.0/1330560, 1569217.0/665280, -1179649.0/1330560, 2825.0/11088, -20813.0/380160, 30773.0/3991680, -4201.0/7983360};
214 out_final[i] = out[i];
218 NekDouble out[13] = {13154671847.0/76517631590400.0, -18073154507.0/6376469299200.0, 287360344573.0/12752938598400.0, -2217732343517.0/19129407897600.0, 1240941746699.0/2833986355200.0, -275386671493.0/212548976640.0, 2648644782397.0/910924185600.0, -275386671493.0/212548976640.0, 1240941746699.0/2833986355200.0, -2217732343517.0/19129407897600.0, 287360344573.0/12752938598400.0, -18073154507.0/6376469299200.0, 13154671847.0/76517631590400.0};
221 out_final[i] = out[i];
225 NekDouble out[15] = {-800993.0/14010796800.0, 73587167.0/70053984000.0, -651305719.0/70053984000.0, 3714581677.0/70053984000.0, -3085236289.0/14010796800.0, 1426328231.0/2001542400.0, -43268401973.0/23351328000.0, 42401344373.0/11675664000.0, -43268401973.0/23351328000.0, 1426328231.0/2001542400.0, -3085236289.0/14010796800.0, 3714581677.0/70053984000.0, -651305719.0/70053984000.0, 73587167.0/70053984000.0, -800993.0/14010796800.0};
228 out_final[i] = out[i];
244 temp[i] = temp[i-1]+h;
254 outarray[i] =
k_breaks[i] + x_value;
267 NekDouble last = floor(inarray[index]/h)*h;
268 int count = (int)((last-first)/h)+1;
270 mesh_breaks[0] = first;
271 for(j = 1; j < count; j++)
273 mesh_breaks[j] = mesh_breaks[j-1]+h;
275 outarray = mesh_breaks;
284 int nvalues = inarray.num_elements();
287 for(i = 0; i < nvalues; i++ )
292 for(gamma = -degree; gamma <= degree; gamma++)
294 int cIndex = gamma+degree;
299 for(i = 0; i < nvalues; i++ )
301 outarray[i] +=
k_coeffs[cIndex]*bs_values[i];
314 int nvalues = inarray.num_elements();
319 for(i = 0; i < nvalues; i++)
321 inarray_cp[i] = inarray[i] - offset;
322 inarray_cp[i] = inarray_cp[i]/h;
323 int interval = (int)floor(inarray_cp[i] - min_value);
325 if(inarray_cp[i] >= min_value && inarray_cp[i] <= max_value)
332 inarray_cp[i] -= shift;
348 for(i = 0; i < deg; i++)
350 poly_value = poly_value*x_value +
b_spline[interval][i+1];
363 for(j = 0; j < outarray.num_elements(); j++)
365 if(mIndex >= inarray2.num_elements())
367 outarray[j] = inarray1[kIndex];
369 }
else if(kIndex >= inarray1.num_elements())
371 outarray[j] = inarray2[mIndex];
374 }
else if(inarray1[kIndex] < inarray2[mIndex])
376 outarray[j] = inarray1[kIndex];
380 outarray[j] = inarray2[mIndex];
#define ASSERTL0(condition, msg)
void EvaluateKernel(Array< OneD, NekDouble > inarray, NekDouble h, Array< OneD, NekDouble > &outarray)
This funciton evaluates the kernel at input values.
Kernel()
The default constructor.
Array< TwoD, NekDouble > b_spline
void UpdateKernelNumOfCoeffs()
This funciton sets the k_ncoeffs variable.
NekDouble EvaluateBsplinePoly(NekDouble x_value, int interval)
This funciton evaluates the piecewise bspline polynomial.
void EvaluateBspline(Array< OneD, NekDouble > inarray, NekDouble h, NekDouble offset, Array< OneD, NekDouble > &outarray)
This function evaluates the bspline at input values.
void FindMeshUnderKernel(Array< OneD, NekDouble > &inarray, NekDouble h, Array< OneD, NekDouble > &outarray)
This funciton calculates the mesh breaks under the kernel support.
void UpdateKernelOrder(int order)
This funciton sets the k_order variable.
Array< OneD, NekDouble > k_coeffs
void UpdateKernelCoeffs()
This funciton updates the kernel coefficients.
void MoveKernelCenter(NekDouble x_value, Array< OneD, NekDouble > &outarray)
This funciton moves the center of the kernel to the.
void UpdateKernelBreaks(NekDouble h)
This funciton updates the kernel breaks.
Array< OneD, NekDouble > k_breaks
void Sort(Array< OneD, NekDouble > &inarray1, Array< OneD, NekDouble > &inarray2, Array< OneD, NekDouble > &outarray)
This funciton performs the ordered merge of.
void UpdateKernelWidth()
This funciton sets the kernel width size.
void UpdateKernelBspline()
The default destructor.