68template <
typename DataT>
71 const DataT val = 3 * (valk - valk1) + valk2;
75template <
typename DataT>
79 if (!mGridData->getNDataPoints()) {
83 Vector<DataT, FDim> posRel{(coordinates - mGridProperties->getGridMin()) * mGridProperties->getInvSpacing()};
84 posRel[FPHI] = mGridProperties->clampToGridCircularRel(posRel[FPHI], FPHI);
86 posRel[FZ] = mGridProperties->clampToGridRel(posRel[FZ], FZ);
87 posRel[FR] = mGridProperties->clampToGridRel(posRel[FR], FR);
88 if (!mExtraPolateValues) {
89 posRelN[FZ] = posRel[FZ];
90 posRelN[FR] = posRel[FR];
93 const int nPoints = 4;
94 std::array<Vector<DataT, nPoints>, 16> cVals;
106 const static std::array<Vc::Memory<Vc::Vector<DataT>, nPoints>, nPoints> matrixA{{{0, -0.5, 1, -0.5},
117 for (
int slice = 0; slice < nPoints; ++slice) {
119 for (
int row = 0;
row < nPoints; ++
row) {
127template <
typename DataT>
130 const int delta_min1 = getRegulatedDelta(index0, -1, dim, mGridProperties->getN(dim) - 1);
131 const int delta_plus1 = getRegulatedDelta(index0, +1, dim, 1 - mGridProperties->getN(dim));
132 const int delta_plus2 = getRegulatedDelta(index0, +2, dim, 2 - mGridProperties->getN(dim));
134 arr[0] = mGridProperties->getDeltaDataIndex(delta_min1, dim);
135 arr[1] = mGridProperties->getDeltaDataIndex(delta_plus1, dim);
136 arr[2] = mGridProperties->getDeltaDataIndex(delta_plus2, dim);
139template <
typename DataT>
142 GridPos
pos = GridPos::None;
143 if (isInInnerVolume(iz,
ir, iphi,
pos)) {
147 if (findEdge(iz,
ir, iphi,
pos)) {
151 if (findLine(iz,
ir, iphi,
pos)) {
155 if (findSide(iz,
ir, iphi,
pos)) {
158 return GridPos::None;
161template <
typename DataT>
165 if (iz == 0 &&
ir == 0) {
167 posType = GridPos::Edge0;
169 }
else if (iphi == mGridData->getNPhi() - iR) {
170 posType = GridPos::Edge4;
173 }
else if (iz == mGridData->getNZ() - iR &&
ir == 0) {
175 posType = GridPos::Edge1;
177 }
else if (iphi == mGridData->getNPhi() - iR) {
178 posType = GridPos::Edge5;
181 }
else if (iz == 0 &&
ir == mGridData->getNR() - iR) {
183 posType = GridPos::Edge2;
185 }
else if (iphi == mGridData->getNPhi() - iR) {
186 posType = GridPos::Edge6;
189 }
else if (iz == mGridData->getNZ() - iR &&
ir == mGridData->getNR() - iR) {
191 posType = GridPos::Edge3;
193 }
else if (iphi == mGridData->getNPhi() - iR) {
194 posType = GridPos::Edge7;
201template <
typename DataT>
208 posType = GridPos::LineA;
210 }
else if (iphi == mGridData->getNPhi() - iR) {
211 posType = GridPos::LineE;
215 posType = GridPos::LineI;
217 }
else if (iz == mGridData->getNZ() - iR) {
218 posType = GridPos::LineJ;
221 }
else if (
ir == mGridData->getNR() - iR) {
223 posType = GridPos::LineB;
225 }
else if (iphi == mGridData->getNPhi() - iR) {
226 posType = GridPos::LineF;
230 posType = GridPos::LineK;
232 }
else if (iz == mGridData->getNZ() - iR) {
233 posType = GridPos::LineL;
236 }
else if (iz == 0) {
238 posType = GridPos::LineC;
240 }
else if (iphi == mGridData->getNPhi() - iR) {
241 posType = GridPos::LineG;
244 }
else if (iz == mGridData->getNZ() - iR) {
246 posType = GridPos::LineD;
248 }
else if (iphi == mGridData->getNPhi() - iR) {
249 posType = GridPos::LineH;
256template <
typename DataT>
259 if (isSideRight(iz, FZ)) {
260 posType = GridPos::SideXRight;
262 }
else if (isSideLeft(iz)) {
263 posType = GridPos::SideXLeft;
266 if (isSideRight(
ir, FR)) {
267 posType = GridPos::SideYRight;
269 }
else if (isSideLeft(
ir)) {
270 posType = GridPos::SideYLeft;
273 if (isSideRight(iphi, FPHI)) {
274 posType = GridPos::SideZRight;
276 }
else if (isSideLeft(iphi)) {
277 posType = GridPos::SideZLeft;
283template <
typename DataT>
286 if (iz >= 1 && iz <
static_cast<int>(mGridData->getNZ() - 2) &&
ir >= 1 &&
ir <
static_cast<int>(mGridData->getNR() - 2) && iphi >= 1 && iphi <
static_cast<int>(mGridData->getNPhi() - 2)) {
287 posType = GridPos::InnerVolume;
293template <
typename DataT>
296 if (ind ==
static_cast<int>(mGridProperties->getN(dim) - 2)) {
302template <
typename DataT>
311template <
typename DataT>
314 const GridPos
location = findPos(iz,
ir, iphi);
315 const int ii_x_y_z = mGridData->getDataIndex(iz,
ir, iphi);
316 cVals[5][1] = (*mGridData)[ii_x_y_z];
318 int deltaZ[3]{mGridProperties->getDeltaDataIndex(-1, 0), mGridProperties->getDeltaDataIndex(1, 0), mGridProperties->getDeltaDataIndex(2, 0)};
319 int deltaR[3]{mGridProperties->getDeltaDataIndex(-1, 1), mGridProperties->getDeltaDataIndex(1, 1), mGridProperties->getDeltaDataIndex(2, 1)};
321 getDataIndexCircularArray(iphi, FPHI, deltaPhi);
328 case GridPos::InnerVolume:
329 case GridPos::SideZRight:
330 case GridPos::SideZLeft:
332 const int ind[4][4][4]{
333 {{ii_x_y_z + deltaPhi[i0] + deltaR[i0] + deltaZ[i0], ind[0][0][0] - deltaZ[i0], ind[0][0][1] - deltaZ[i0], ind[0][0][2] - deltaZ[i0]},
334 {ind[0][0][0] - deltaR[i0], ind[0][1][0] - deltaZ[i0], ind[0][1][1] - deltaZ[i0], ind[0][1][2] - deltaZ[i0]},
335 {ind[0][1][0] - deltaR[i0], ind[0][2][0] - deltaZ[i0], ind[0][2][1] - deltaZ[i0], ind[0][2][2] - deltaZ[i0]},
336 {ind[0][2][0] - deltaR[i0], ind[0][3][0] - deltaZ[i0], ind[0][3][1] - deltaZ[i0], ind[0][3][2] - deltaZ[i0]}},
337 {{ii_x_y_z + deltaR[i0] + deltaZ[i0], ind[1][0][0] - deltaZ[i0], ind[1][0][1] - deltaZ[i0], ind[1][0][2] - deltaZ[i0]},
338 {ind[1][0][0] - deltaR[i0], ind[1][1][0] - deltaZ[i0], ind[1][1][1] - deltaZ[i0], ind[1][1][2] - deltaZ[i0]},
339 {ind[1][1][0] - deltaR[i0], ind[1][2][0] - deltaZ[i0], ind[1][2][1] - deltaZ[i0], ind[1][2][2] - deltaZ[i0]},
340 {ind[1][2][0] - deltaR[i0], ind[1][3][0] - deltaZ[i0], ind[1][3][1] - deltaZ[i0], ind[1][3][2] - deltaZ[i0]}},
341 {{ii_x_y_z + deltaPhi[i1] + deltaR[i0] + deltaZ[i0], ind[2][0][0] - deltaZ[i0], ind[2][0][1] - deltaZ[i0], ind[2][0][2] - deltaZ[i0]},
342 {ind[2][0][0] - deltaR[i0], ind[2][1][0] - deltaZ[i0], ind[2][1][1] - deltaZ[i0], ind[2][1][2] - deltaZ[i0]},
343 {ind[2][1][0] - deltaR[i0], ind[2][2][0] - deltaZ[i0], ind[2][2][1] - deltaZ[i0], ind[2][2][2] - deltaZ[i0]},
344 {ind[2][2][0] - deltaR[i0], ind[2][3][0] - deltaZ[i0], ind[2][3][1] - deltaZ[i0], ind[2][3][2] - deltaZ[i0]}},
345 {{ii_x_y_z + deltaPhi[i2] + deltaR[i0] + deltaZ[i0], ind[3][0][0] - deltaZ[i0], ind[3][0][1] - deltaZ[i0], ind[3][0][2] - deltaZ[i0]},
346 {ind[3][0][0] - deltaR[i0], ind[3][1][0] - deltaZ[i0], ind[3][1][1] - deltaZ[i0], ind[3][1][2] - deltaZ[i0]},
347 {ind[3][1][0] - deltaR[i0], ind[3][2][0] - deltaZ[i0], ind[3][2][1] - deltaZ[i0], ind[3][2][2] - deltaZ[i0]},
348 {ind[3][2][0] - deltaR[i0], ind[3][3][0] - deltaZ[i0], ind[3][3][1] - deltaZ[i0], ind[3][3][2] - deltaZ[i0]}}};
350 cVals[0][0] = (*mGridData)[ind[0][0][0]];
351 cVals[0][1] = (*mGridData)[ind[0][0][1]];
352 cVals[0][2] = (*mGridData)[ind[0][0][2]];
353 cVals[0][3] = (*mGridData)[ind[0][0][3]];
354 cVals[1][0] = (*mGridData)[ind[0][1][0]];
355 cVals[1][1] = (*mGridData)[ind[0][1][1]];
356 cVals[1][2] = (*mGridData)[ind[0][1][2]];
357 cVals[1][3] = (*mGridData)[ind[0][1][3]];
358 cVals[2][0] = (*mGridData)[ind[0][2][0]];
359 cVals[2][1] = (*mGridData)[ind[0][2][1]];
360 cVals[2][2] = (*mGridData)[ind[0][2][2]];
361 cVals[2][3] = (*mGridData)[ind[0][2][3]];
362 cVals[3][0] = (*mGridData)[ind[0][3][0]];
363 cVals[3][1] = (*mGridData)[ind[0][3][1]];
364 cVals[3][2] = (*mGridData)[ind[0][3][2]];
365 cVals[3][3] = (*mGridData)[ind[0][3][3]];
366 cVals[4][0] = (*mGridData)[ind[1][0][0]];
367 cVals[4][1] = (*mGridData)[ind[1][0][1]];
368 cVals[4][2] = (*mGridData)[ind[1][0][2]];
369 cVals[4][3] = (*mGridData)[ind[1][0][3]];
370 cVals[5][2] = (*mGridData)[ind[1][1][2]];
371 cVals[5][0] = (*mGridData)[ind[1][1][0]];
372 cVals[5][3] = (*mGridData)[ind[1][1][3]];
373 cVals[6][0] = (*mGridData)[ind[1][2][0]];
374 cVals[6][1] = (*mGridData)[ind[1][2][1]];
375 cVals[6][2] = (*mGridData)[ind[1][2][2]];
376 cVals[6][3] = (*mGridData)[ind[1][2][3]];
377 cVals[7][0] = (*mGridData)[ind[1][3][0]];
378 cVals[7][1] = (*mGridData)[ind[1][3][1]];
379 cVals[7][2] = (*mGridData)[ind[1][3][2]];
380 cVals[7][3] = (*mGridData)[ind[1][3][3]];
381 cVals[8][0] = (*mGridData)[ind[2][0][0]];
382 cVals[8][1] = (*mGridData)[ind[2][0][1]];
383 cVals[8][2] = (*mGridData)[ind[2][0][2]];
384 cVals[8][3] = (*mGridData)[ind[2][0][3]];
385 cVals[9][0] = (*mGridData)[ind[2][1][0]];
386 cVals[9][1] = (*mGridData)[ind[2][1][1]];
387 cVals[9][2] = (*mGridData)[ind[2][1][2]];
388 cVals[9][3] = (*mGridData)[ind[2][1][3]];
389 cVals[10][0] = (*mGridData)[ind[2][2][0]];
390 cVals[10][1] = (*mGridData)[ind[2][2][1]];
391 cVals[10][2] = (*mGridData)[ind[2][2][2]];
392 cVals[10][3] = (*mGridData)[ind[2][2][3]];
393 cVals[11][0] = (*mGridData)[ind[2][3][0]];
394 cVals[11][1] = (*mGridData)[ind[2][3][1]];
395 cVals[11][2] = (*mGridData)[ind[2][3][2]];
396 cVals[11][3] = (*mGridData)[ind[2][3][3]];
397 cVals[12][0] = (*mGridData)[ind[3][0][0]];
398 cVals[12][1] = (*mGridData)[ind[3][0][1]];
399 cVals[12][2] = (*mGridData)[ind[3][0][2]];
400 cVals[12][3] = (*mGridData)[ind[3][0][3]];
401 cVals[13][0] = (*mGridData)[ind[3][1][0]];
402 cVals[13][1] = (*mGridData)[ind[3][1][1]];
403 cVals[13][2] = (*mGridData)[ind[3][1][2]];
404 cVals[13][3] = (*mGridData)[ind[3][1][3]];
405 cVals[14][0] = (*mGridData)[ind[3][2][0]];
406 cVals[14][1] = (*mGridData)[ind[3][2][1]];
407 cVals[14][2] = (*mGridData)[ind[3][2][2]];
408 cVals[14][3] = (*mGridData)[ind[3][2][3]];
409 cVals[15][0] = (*mGridData)[ind[3][3][0]];
410 cVals[15][1] = (*mGridData)[ind[3][3][1]];
411 cVals[15][2] = (*mGridData)[ind[3][3][2]];
412 cVals[15][3] = (*mGridData)[ind[3][3][3]];
415 case GridPos::SideXRight:
417 case GridPos::LineH: {
418 const int ind[4][4][3]{
419 {{ii_x_y_z + deltaPhi[i0] + deltaR[i0] + deltaZ[i0], ind[0][0][0] - deltaZ[i0], ind[0][0][1] - deltaZ[i0]},
420 {ind[0][0][0] - deltaR[i0], ind[0][1][0] - deltaZ[i0], ind[0][1][1] - deltaZ[i0]},
421 {ind[0][1][0] - deltaR[i0], ind[0][2][0] - deltaZ[i0], ind[0][2][1] - deltaZ[i0]},
422 {ind[0][2][0] - deltaR[i0], ind[0][3][0] - deltaZ[i0], ind[0][3][1] - deltaZ[i0]}},
423 {{ii_x_y_z + deltaR[i0] + deltaZ[i0], ind[1][0][0] - deltaZ[i0], ind[1][0][1] - deltaZ[i0]},
424 {ind[1][0][0] - deltaR[i0], ind[1][1][0] - deltaZ[i0], ind[1][1][1] - deltaZ[i0]},
425 {ind[1][1][0] - deltaR[i0], ind[1][2][0] - deltaZ[i0], ind[1][2][1] - deltaZ[i0]},
426 {ind[1][2][0] - deltaR[i0], ind[1][3][0] - deltaZ[i0], ind[1][3][1] - deltaZ[i0]}},
427 {{ii_x_y_z + deltaPhi[i1] + deltaR[i0] + deltaZ[i0], ind[2][0][0] - deltaZ[i0], ind[2][0][1] - deltaZ[i0]},
428 {ind[2][0][0] - deltaR[i0], ind[2][1][0] - deltaZ[i0], ind[2][1][1] - deltaZ[i0]},
429 {ind[2][1][0] - deltaR[i0], ind[2][2][0] - deltaZ[i0], ind[2][2][1] - deltaZ[i0]},
430 {ind[2][2][0] - deltaR[i0], ind[2][3][0] - deltaZ[i0], ind[2][3][1] - deltaZ[i0]}},
431 {{ii_x_y_z + deltaPhi[i2] + deltaR[i0] + deltaZ[i0], ind[3][0][0] - deltaZ[i0], ind[3][0][1] - deltaZ[i0]},
432 {ind[3][0][0] - deltaR[i0], ind[3][1][0] - deltaZ[i0], ind[3][1][1] - deltaZ[i0]},
433 {ind[3][1][0] - deltaR[i0], ind[3][2][0] - deltaZ[i0], ind[3][2][1] - deltaZ[i0]},
434 {ind[3][2][0] - deltaR[i0], ind[3][3][0] - deltaZ[i0], ind[3][3][1] - deltaZ[i0]}}};
436 cVals[0][0] = (*mGridData)[ind[0][0][0]];
437 cVals[0][1] = (*mGridData)[ind[0][0][1]];
438 cVals[0][2] = (*mGridData)[ind[0][0][2]];
439 cVals[0][3] = extrapolation((*mGridData)[ind[0][0][2]], (*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][0][0]]);
440 cVals[1][0] = (*mGridData)[ind[0][1][0]];
441 cVals[1][1] = (*mGridData)[ind[0][1][1]];
442 cVals[1][2] = (*mGridData)[ind[0][1][2]];
443 cVals[1][3] = extrapolation((*mGridData)[ind[0][1][2]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][1][0]]);
444 cVals[2][0] = (*mGridData)[ind[0][2][0]];
445 cVals[2][1] = (*mGridData)[ind[0][2][1]];
446 cVals[2][2] = (*mGridData)[ind[0][2][2]];
447 cVals[2][3] = extrapolation((*mGridData)[ind[0][2][2]], (*mGridData)[ind[0][2][1]], (*mGridData)[ind[0][2][0]]);
448 cVals[3][0] = (*mGridData)[ind[0][3][0]];
449 cVals[3][1] = (*mGridData)[ind[0][3][1]];
450 cVals[3][2] = (*mGridData)[ind[0][3][2]];
451 cVals[3][3] = extrapolation((*mGridData)[ind[0][3][2]], (*mGridData)[ind[0][3][1]], (*mGridData)[ind[0][3][0]]);
452 cVals[4][0] = (*mGridData)[ind[1][0][0]];
453 cVals[4][1] = (*mGridData)[ind[1][0][1]];
454 cVals[4][2] = (*mGridData)[ind[1][0][2]];
455 cVals[4][3] = extrapolation((*mGridData)[ind[1][0][2]], (*mGridData)[ind[1][0][1]], (*mGridData)[ind[1][0][0]]);
456 cVals[5][0] = (*mGridData)[ind[1][1][0]];
457 cVals[5][2] = (*mGridData)[ind[1][1][2]];
458 cVals[5][3] = extrapolation((*mGridData)[ind[1][1][2]], (*mGridData)[ii_x_y_z], (*mGridData)[ind[1][1][0]]);
459 cVals[6][0] = (*mGridData)[ind[1][2][0]];
460 cVals[6][1] = (*mGridData)[ind[1][2][1]];
461 cVals[6][2] = (*mGridData)[ind[1][2][2]];
462 cVals[6][3] = extrapolation((*mGridData)[ind[1][2][2]], (*mGridData)[ind[1][2][1]], (*mGridData)[ind[1][2][0]]);
463 cVals[7][0] = (*mGridData)[ind[1][3][0]];
464 cVals[7][1] = (*mGridData)[ind[1][3][1]];
465 cVals[7][2] = (*mGridData)[ind[1][3][2]];
466 cVals[7][3] = extrapolation((*mGridData)[ind[1][3][2]], (*mGridData)[ind[1][3][1]], (*mGridData)[ind[1][3][0]]);
467 cVals[8][0] = (*mGridData)[ind[2][0][0]];
468 cVals[8][1] = (*mGridData)[ind[2][0][1]];
469 cVals[8][2] = (*mGridData)[ind[2][0][2]];
470 cVals[8][3] = extrapolation((*mGridData)[ind[2][0][2]], (*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][0][0]]);
471 cVals[9][0] = (*mGridData)[ind[2][1][0]];
472 cVals[9][1] = (*mGridData)[ind[2][1][1]];
473 cVals[9][2] = (*mGridData)[ind[2][1][2]];
474 cVals[9][3] = extrapolation((*mGridData)[ind[2][1][2]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][1][0]]);
475 cVals[10][0] = (*mGridData)[ind[2][2][0]];
476 cVals[10][1] = (*mGridData)[ind[2][2][1]];
477 cVals[10][2] = (*mGridData)[ind[2][2][2]];
478 cVals[10][3] = extrapolation((*mGridData)[ind[2][2][2]], (*mGridData)[ind[2][2][1]], (*mGridData)[ind[2][2][0]]);
479 cVals[11][0] = (*mGridData)[ind[2][3][0]];
480 cVals[11][1] = (*mGridData)[ind[2][3][1]];
481 cVals[11][2] = (*mGridData)[ind[2][3][2]];
482 cVals[11][3] = extrapolation((*mGridData)[ind[2][3][2]], (*mGridData)[ind[2][3][1]], (*mGridData)[ind[2][3][0]]);
483 cVals[12][0] = (*mGridData)[ind[3][0][0]];
484 cVals[12][1] = (*mGridData)[ind[3][0][1]];
485 cVals[12][2] = (*mGridData)[ind[3][0][2]];
486 cVals[13][0] = (*mGridData)[ind[3][1][0]];
487 cVals[12][3] = extrapolation((*mGridData)[ind[3][0][2]], (*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][0][0]]);
488 cVals[13][1] = (*mGridData)[ind[3][1][1]];
489 cVals[13][2] = (*mGridData)[ind[3][1][2]];
490 cVals[13][3] = extrapolation((*mGridData)[ind[3][1][2]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][1][0]]);
491 cVals[14][0] = (*mGridData)[ind[3][2][0]];
492 cVals[14][1] = (*mGridData)[ind[3][2][1]];
493 cVals[14][2] = (*mGridData)[ind[3][2][2]];
494 cVals[14][3] = extrapolation((*mGridData)[ind[3][2][2]], (*mGridData)[ind[3][2][1]], (*mGridData)[ind[3][2][0]]);
495 cVals[15][0] = (*mGridData)[ind[3][3][0]];
496 cVals[15][1] = (*mGridData)[ind[3][3][1]];
497 cVals[15][2] = (*mGridData)[ind[3][3][2]];
498 cVals[15][3] = extrapolation((*mGridData)[ind[3][3][2]], (*mGridData)[ind[3][3][1]], (*mGridData)[ind[3][3][0]]);
501 case GridPos::SideYRight:
503 case GridPos::LineF: {
504 const int ind[4][3][4]{
505 {{ii_x_y_z + deltaPhi[i0] + deltaR[i0] + deltaZ[i0], ind[0][0][0] - deltaZ[i0], ind[0][0][1] - deltaZ[i0], ind[0][0][2] - deltaZ[i0]},
506 {ind[0][0][0] - deltaR[i0], ind[0][1][0] - deltaZ[i0], ind[0][1][1] - deltaZ[i0], ind[0][1][2] - deltaZ[i0]},
507 {ind[0][1][0] - deltaR[i0], ind[0][2][0] - deltaZ[i0], ind[0][2][1] - deltaZ[i0], ind[0][2][2] - deltaZ[i0]}},
508 {{ii_x_y_z + deltaR[i0] + deltaZ[i0], ind[1][0][0] - deltaZ[i0], ind[1][0][1] - deltaZ[i0], ind[1][0][2] - deltaZ[i0]},
509 {ind[1][0][0] - deltaR[i0], ind[1][1][0] - deltaZ[i0], ind[1][1][1] - deltaZ[i0], ind[1][1][2] - deltaZ[i0]},
510 {ind[1][1][0] - deltaR[i0], ind[1][2][0] - deltaZ[i0], ind[1][2][1] - deltaZ[i0], ind[1][2][2] - deltaZ[i0]}},
511 {{ii_x_y_z + deltaPhi[i1] + deltaR[i0] + deltaZ[i0], ind[2][0][0] - deltaZ[i0], ind[2][0][1] - deltaZ[i0], ind[2][0][2] - deltaZ[i0]},
512 {ind[2][0][0] - deltaR[i0], ind[2][1][0] - deltaZ[i0], ind[2][1][1] - deltaZ[i0], ind[2][1][2] - deltaZ[i0]},
513 {ind[2][1][0] - deltaR[i0], ind[2][2][0] - deltaZ[i0], ind[2][2][1] - deltaZ[i0], ind[2][2][2] - deltaZ[i0]}},
514 {{ii_x_y_z + deltaPhi[i2] + deltaR[i0] + deltaZ[i0], ind[3][0][0] - deltaZ[i0], ind[3][0][1] - deltaZ[i0], ind[3][0][2] - deltaZ[i0]},
515 {ind[3][0][0] - deltaR[i0], ind[3][1][0] - deltaZ[i0], ind[3][1][1] - deltaZ[i0], ind[3][1][2] - deltaZ[i0]},
516 {ind[3][1][0] - deltaR[i0], ind[3][2][0] - deltaZ[i0], ind[3][2][1] - deltaZ[i0], ind[3][2][2] - deltaZ[i0]}}};
518 cVals[0][0] = (*mGridData)[ind[0][0][0]];
519 cVals[0][1] = (*mGridData)[ind[0][0][1]];
520 cVals[0][2] = (*mGridData)[ind[0][0][2]];
521 cVals[0][3] = (*mGridData)[ind[0][0][3]];
522 cVals[1][0] = (*mGridData)[ind[0][1][0]];
523 cVals[1][1] = (*mGridData)[ind[0][1][1]];
524 cVals[1][2] = (*mGridData)[ind[0][1][2]];
525 cVals[1][3] = (*mGridData)[ind[0][1][3]];
526 cVals[2][0] = (*mGridData)[ind[0][2][0]];
527 cVals[2][1] = (*mGridData)[ind[0][2][1]];
528 cVals[2][2] = (*mGridData)[ind[0][2][2]];
529 cVals[2][3] = (*mGridData)[ind[0][2][3]];
530 cVals[3][0] = extrapolation((*mGridData)[ind[0][2][0]], (*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][0][0]]);
531 cVals[3][1] = extrapolation((*mGridData)[ind[0][2][1]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][0][1]]);
532 cVals[3][2] = extrapolation((*mGridData)[ind[0][2][2]], (*mGridData)[ind[0][1][2]], (*mGridData)[ind[0][0][2]]);
533 cVals[3][3] = extrapolation((*mGridData)[ind[0][2][3]], (*mGridData)[ind[0][1][3]], (*mGridData)[ind[0][0][3]]);
534 cVals[4][0] = (*mGridData)[ind[1][0][0]];
535 cVals[4][1] = (*mGridData)[ind[1][0][1]];
536 cVals[4][2] = (*mGridData)[ind[1][0][2]];
537 cVals[4][3] = (*mGridData)[ind[1][0][3]];
538 cVals[5][0] = (*mGridData)[ind[1][1][0]];
539 cVals[5][2] = (*mGridData)[ind[1][1][2]];
540 cVals[5][3] = (*mGridData)[ind[1][1][3]];
541 cVals[6][0] = (*mGridData)[ind[1][2][0]];
542 cVals[6][1] = (*mGridData)[ind[1][2][1]];
543 cVals[6][2] = (*mGridData)[ind[1][2][2]];
544 cVals[6][3] = (*mGridData)[ind[1][2][3]];
545 cVals[7][0] = extrapolation((*mGridData)[ind[1][2][0]], (*mGridData)[ind[1][1][0]], (*mGridData)[ind[1][0][0]]);
546 cVals[7][1] = extrapolation((*mGridData)[ind[1][2][1]], (*mGridData)[ii_x_y_z], (*mGridData)[ind[1][0][1]]);
547 cVals[7][2] = extrapolation((*mGridData)[ind[1][2][2]], (*mGridData)[ind[1][1][2]], (*mGridData)[ind[1][0][2]]);
548 cVals[7][3] = extrapolation((*mGridData)[ind[1][2][3]], (*mGridData)[ind[1][1][3]], (*mGridData)[ind[1][0][3]]);
549 cVals[8][0] = (*mGridData)[ind[2][0][0]];
550 cVals[8][1] = (*mGridData)[ind[2][0][1]];
551 cVals[8][2] = (*mGridData)[ind[2][0][2]];
552 cVals[8][3] = (*mGridData)[ind[2][0][3]];
553 cVals[9][0] = (*mGridData)[ind[2][1][0]];
554 cVals[9][1] = (*mGridData)[ind[2][1][1]];
555 cVals[9][2] = (*mGridData)[ind[2][1][2]];
556 cVals[9][3] = (*mGridData)[ind[2][1][3]];
557 cVals[10][0] = (*mGridData)[ind[2][2][0]];
558 cVals[10][1] = (*mGridData)[ind[2][2][1]];
559 cVals[10][2] = (*mGridData)[ind[2][2][2]];
560 cVals[10][3] = (*mGridData)[ind[2][2][3]];
561 cVals[11][0] = extrapolation((*mGridData)[ind[2][2][0]], (*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][0][0]]);
562 cVals[11][1] = extrapolation((*mGridData)[ind[2][2][1]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][0][1]]);
563 cVals[11][2] = extrapolation((*mGridData)[ind[2][2][2]], (*mGridData)[ind[2][1][2]], (*mGridData)[ind[2][0][2]]);
564 cVals[11][3] = extrapolation((*mGridData)[ind[2][2][3]], (*mGridData)[ind[2][1][3]], (*mGridData)[ind[2][0][3]]);
565 cVals[12][0] = (*mGridData)[ind[3][0][0]];
566 cVals[12][1] = (*mGridData)[ind[3][0][1]];
567 cVals[12][2] = (*mGridData)[ind[3][0][2]];
568 cVals[12][3] = (*mGridData)[ind[3][0][3]];
569 cVals[13][0] = (*mGridData)[ind[3][1][0]];
570 cVals[13][1] = (*mGridData)[ind[3][1][1]];
571 cVals[13][2] = (*mGridData)[ind[3][1][2]];
572 cVals[13][3] = (*mGridData)[ind[3][1][3]];
573 cVals[14][0] = (*mGridData)[ind[3][2][0]];
574 cVals[14][1] = (*mGridData)[ind[3][2][1]];
575 cVals[14][2] = (*mGridData)[ind[3][2][2]];
576 cVals[14][3] = (*mGridData)[ind[3][2][3]];
577 cVals[15][0] = extrapolation((*mGridData)[ind[3][2][0]], (*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][0][0]]);
578 cVals[15][1] = extrapolation((*mGridData)[ind[3][2][1]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][0][1]]);
579 cVals[15][2] = extrapolation((*mGridData)[ind[3][2][2]], (*mGridData)[ind[3][1][2]], (*mGridData)[ind[3][0][2]]);
580 cVals[15][3] = extrapolation((*mGridData)[ind[3][2][3]], (*mGridData)[ind[3][1][3]], (*mGridData)[ind[3][0][3]]);
583 case GridPos::SideYLeft:
585 case GridPos::LineE: {
586 const int ind[4][3][4]{
587 {{ii_x_y_z + deltaPhi[i0] + deltaZ[i0], ind[0][0][0] - deltaZ[i0], ind[0][0][1] - deltaZ[i0], ind[0][0][2] - deltaZ[i0]},
588 {ind[0][0][0] - deltaR[i0], ind[0][1][0] - deltaZ[i0], ind[0][1][1] - deltaZ[i0], ind[0][1][2] - deltaZ[i0]},
589 {ind[0][1][0] - deltaR[i0], ind[0][2][0] - deltaZ[i0], ind[0][2][1] - deltaZ[i0], ind[0][2][2] - deltaZ[i0]}},
590 {{ii_x_y_z + deltaZ[i0], ind[1][0][0] - deltaZ[i0], ind[1][0][1] - deltaZ[i0], ind[1][0][2] - deltaZ[i0]},
591 {ind[1][0][0] - deltaR[i0], ind[1][1][0] - deltaZ[i0], ind[1][1][1] - deltaZ[i0], ind[1][1][2] - deltaZ[i0]},
592 {ind[1][1][0] - deltaR[i0], ind[1][2][0] - deltaZ[i0], ind[1][2][1] - deltaZ[i0], ind[1][2][2] - deltaZ[i0]}},
593 {{ii_x_y_z + deltaPhi[i1] + deltaZ[i0], ind[2][0][0] - deltaZ[i0], ind[2][0][1] - deltaZ[i0], ind[2][0][2] - deltaZ[i0]},
594 {ind[2][0][0] - deltaR[i0], ind[2][1][0] - deltaZ[i0], ind[2][1][1] - deltaZ[i0], ind[2][1][2] - deltaZ[i0]},
595 {ind[2][1][0] - deltaR[i0], ind[2][2][0] - deltaZ[i0], ind[2][2][1] - deltaZ[i0], ind[2][2][2] - deltaZ[i0]}},
596 {{ii_x_y_z + deltaPhi[i2] + deltaZ[i0], ind[3][0][0] - deltaZ[i0], ind[3][0][1] - deltaZ[i0], ind[3][0][2] - deltaZ[i0]},
597 {ind[3][0][0] - deltaR[i0], ind[3][1][0] - deltaZ[i0], ind[3][1][1] - deltaZ[i0], ind[3][1][2] - deltaZ[i0]},
598 {ind[3][1][0] - deltaR[i0], ind[3][2][0] - deltaZ[i0], ind[3][2][1] - deltaZ[i0], ind[3][2][2] - deltaZ[i0]}}};
600 cVals[0][0] = extrapolation((*mGridData)[ind[0][0][0]], (*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][2][0]]);
601 cVals[0][1] = extrapolation((*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][2][1]]);
602 cVals[0][2] = extrapolation((*mGridData)[ind[0][0][2]], (*mGridData)[ind[0][1][2]], (*mGridData)[ind[0][2][2]]);
603 cVals[0][3] = extrapolation((*mGridData)[ind[0][0][3]], (*mGridData)[ind[0][1][3]], (*mGridData)[ind[0][2][3]]);
604 cVals[1][0] = (*mGridData)[ind[0][0][0]];
605 cVals[1][1] = (*mGridData)[ind[0][0][1]];
606 cVals[1][2] = (*mGridData)[ind[0][0][2]];
607 cVals[1][3] = (*mGridData)[ind[0][0][3]];
608 cVals[2][0] = (*mGridData)[ind[0][1][0]];
609 cVals[2][1] = (*mGridData)[ind[0][1][1]];
610 cVals[2][2] = (*mGridData)[ind[0][1][2]];
611 cVals[2][3] = (*mGridData)[ind[0][1][3]];
612 cVals[3][0] = (*mGridData)[ind[0][2][0]];
613 cVals[3][1] = (*mGridData)[ind[0][2][1]];
614 cVals[3][2] = (*mGridData)[ind[0][2][2]];
615 cVals[3][3] = (*mGridData)[ind[0][2][3]];
616 cVals[4][0] = extrapolation((*mGridData)[ind[1][0][0]], (*mGridData)[ind[1][1][0]], (*mGridData)[ind[1][2][0]]);
617 cVals[4][1] = extrapolation((*mGridData)[ii_x_y_z], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][2][1]]);
618 cVals[4][2] = extrapolation((*mGridData)[ind[1][0][2]], (*mGridData)[ind[1][1][2]], (*mGridData)[ind[1][2][2]]);
619 cVals[4][3] = extrapolation((*mGridData)[ind[1][0][3]], (*mGridData)[ind[1][1][3]], (*mGridData)[ind[1][2][3]]);
620 cVals[5][0] = (*mGridData)[ind[1][0][0]];
621 cVals[5][2] = (*mGridData)[ind[1][0][2]];
622 cVals[5][3] = (*mGridData)[ind[1][0][3]];
623 cVals[6][0] = (*mGridData)[ind[1][1][0]];
624 cVals[6][1] = (*mGridData)[ind[1][1][1]];
625 cVals[6][2] = (*mGridData)[ind[1][1][2]];
626 cVals[6][3] = (*mGridData)[ind[1][1][3]];
627 cVals[7][0] = (*mGridData)[ind[1][2][0]];
628 cVals[7][1] = (*mGridData)[ind[1][2][1]];
629 cVals[7][2] = (*mGridData)[ind[1][2][2]];
630 cVals[7][3] = (*mGridData)[ind[1][2][3]];
631 cVals[8][0] = extrapolation((*mGridData)[ind[2][0][0]], (*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][2][0]]);
632 cVals[8][1] = extrapolation((*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][2][1]]);
633 cVals[8][2] = extrapolation((*mGridData)[ind[2][0][2]], (*mGridData)[ind[2][1][2]], (*mGridData)[ind[2][2][2]]);
634 cVals[8][3] = extrapolation((*mGridData)[ind[2][0][3]], (*mGridData)[ind[2][1][3]], (*mGridData)[ind[2][2][3]]);
635 cVals[9][0] = (*mGridData)[ind[2][0][0]];
636 cVals[9][1] = (*mGridData)[ind[2][0][1]];
637 cVals[9][2] = (*mGridData)[ind[2][0][2]];
638 cVals[9][3] = (*mGridData)[ind[2][0][3]];
639 cVals[10][0] = (*mGridData)[ind[2][1][0]];
640 cVals[10][1] = (*mGridData)[ind[2][1][1]];
641 cVals[10][2] = (*mGridData)[ind[2][1][2]];
642 cVals[10][3] = (*mGridData)[ind[2][1][3]];
643 cVals[11][0] = (*mGridData)[ind[2][2][0]];
644 cVals[11][1] = (*mGridData)[ind[2][2][1]];
645 cVals[11][2] = (*mGridData)[ind[2][2][2]];
646 cVals[11][3] = (*mGridData)[ind[2][2][3]];
647 cVals[12][0] = extrapolation((*mGridData)[ind[3][0][0]], (*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][2][0]]);
648 cVals[12][1] = extrapolation((*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][2][1]]);
649 cVals[12][2] = extrapolation((*mGridData)[ind[3][0][2]], (*mGridData)[ind[3][1][2]], (*mGridData)[ind[3][2][2]]);
650 cVals[12][3] = extrapolation((*mGridData)[ind[3][0][3]], (*mGridData)[ind[3][1][3]], (*mGridData)[ind[3][2][3]]);
651 cVals[13][0] = (*mGridData)[ind[3][0][0]];
652 cVals[13][1] = (*mGridData)[ind[3][0][1]];
653 cVals[13][2] = (*mGridData)[ind[3][0][2]];
654 cVals[13][3] = (*mGridData)[ind[3][0][3]];
655 cVals[14][0] = (*mGridData)[ind[3][1][0]];
656 cVals[14][1] = (*mGridData)[ind[3][1][1]];
657 cVals[14][2] = (*mGridData)[ind[3][1][2]];
658 cVals[14][3] = (*mGridData)[ind[3][1][3]];
659 cVals[15][0] = (*mGridData)[ind[3][2][0]];
660 cVals[15][1] = (*mGridData)[ind[3][2][1]];
661 cVals[15][2] = (*mGridData)[ind[3][2][2]];
662 cVals[15][3] = (*mGridData)[ind[3][2][3]];
665 case GridPos::SideXLeft:
667 case GridPos::LineG: {
668 const int ind[4][4][3]{
669 {{ii_x_y_z + deltaPhi[i0] + deltaR[i0], ind[0][0][0] - deltaZ[i0], ind[0][0][1] - deltaZ[i0]},
670 {ind[0][0][0] - deltaR[i0], ind[0][1][0] - deltaZ[i0], ind[0][1][1] - deltaZ[i0]},
671 {ind[0][1][0] - deltaR[i0], ind[0][2][0] - deltaZ[i0], ind[0][2][1] - deltaZ[i0]},
672 {ind[0][2][0] - deltaR[i0], ind[0][3][0] - deltaZ[i0], ind[0][3][1] - deltaZ[i0]}},
673 {{ii_x_y_z + deltaR[i0], ind[1][0][0] - deltaZ[i0], ind[1][0][1] - deltaZ[i0]},
674 {ind[1][0][0] - deltaR[i0], ind[1][1][0] - deltaZ[i0], ind[1][1][1] - deltaZ[i0]},
675 {ind[1][1][0] - deltaR[i0], ind[1][2][0] - deltaZ[i0], ind[1][2][1] - deltaZ[i0]},
676 {ind[1][2][0] - deltaR[i0], ind[1][3][0] - deltaZ[i0], ind[1][3][1] - deltaZ[i0]}},
677 {{ii_x_y_z + deltaPhi[i1] + deltaR[i0], ind[2][0][0] - deltaZ[i0], ind[2][0][1] - deltaZ[i0]},
678 {ind[2][0][0] - deltaR[i0], ind[2][1][0] - deltaZ[i0], ind[2][1][1] - deltaZ[i0]},
679 {ind[2][1][0] - deltaR[i0], ind[2][2][0] - deltaZ[i0], ind[2][2][1] - deltaZ[i0]},
680 {ind[2][2][0] - deltaR[i0], ind[2][3][0] - deltaZ[i0], ind[2][3][1] - deltaZ[i0]}},
681 {{ii_x_y_z + deltaPhi[i2] + deltaR[i0], ind[3][0][0] - deltaZ[i0], ind[3][0][1] - deltaZ[i0]},
682 {ind[3][0][0] - deltaR[i0], ind[3][1][0] - deltaZ[i0], ind[3][1][1] - deltaZ[i0]},
683 {ind[3][1][0] - deltaR[i0], ind[3][2][0] - deltaZ[i0], ind[3][2][1] - deltaZ[i0]},
684 {ind[3][2][0] - deltaR[i0], ind[3][3][0] - deltaZ[i0], ind[3][3][1] - deltaZ[i0]}}};
686 cVals[0][0] = extrapolation((*mGridData)[ind[0][0][0]], (*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][0][2]]);
687 cVals[0][1] = (*mGridData)[ind[0][0][0]];
688 cVals[0][2] = (*mGridData)[ind[0][0][1]];
689 cVals[0][3] = (*mGridData)[ind[0][0][2]];
690 cVals[1][0] = extrapolation((*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][1][2]]);
691 cVals[1][1] = (*mGridData)[ind[0][1][0]];
692 cVals[1][2] = (*mGridData)[ind[0][1][1]];
693 cVals[1][3] = (*mGridData)[ind[0][1][2]];
694 cVals[2][0] = extrapolation((*mGridData)[ind[0][2][0]], (*mGridData)[ind[0][2][1]], (*mGridData)[ind[0][2][2]]);
695 cVals[2][1] = (*mGridData)[ind[0][2][0]];
696 cVals[2][2] = (*mGridData)[ind[0][2][1]];
697 cVals[2][3] = (*mGridData)[ind[0][2][2]];
698 cVals[3][0] = extrapolation((*mGridData)[ind[0][3][0]], (*mGridData)[ind[0][3][1]], (*mGridData)[ind[0][3][2]]);
699 cVals[3][1] = (*mGridData)[ind[0][3][0]];
700 cVals[3][2] = (*mGridData)[ind[0][3][1]];
701 cVals[3][3] = (*mGridData)[ind[0][3][2]];
702 cVals[4][0] = extrapolation((*mGridData)[ind[1][0][0]], (*mGridData)[ind[1][0][1]], (*mGridData)[ind[1][0][2]]);
703 cVals[4][1] = (*mGridData)[ind[1][0][0]];
704 cVals[4][2] = (*mGridData)[ind[1][0][1]];
705 cVals[4][3] = (*mGridData)[ind[1][0][2]];
706 cVals[5][0] = extrapolation((*mGridData)[ii_x_y_z], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][1][2]]);
707 cVals[5][2] = (*mGridData)[ind[1][1][1]];
708 cVals[5][3] = (*mGridData)[ind[1][1][2]];
709 cVals[6][0] = extrapolation((*mGridData)[ind[1][2][0]], (*mGridData)[ind[1][2][1]], (*mGridData)[ind[1][2][2]]);
710 cVals[6][1] = (*mGridData)[ind[1][2][0]];
711 cVals[6][2] = (*mGridData)[ind[1][2][1]];
712 cVals[6][3] = (*mGridData)[ind[1][2][2]];
713 cVals[7][0] = extrapolation((*mGridData)[ind[1][3][0]], (*mGridData)[ind[1][3][1]], (*mGridData)[ind[1][3][2]]);
714 cVals[7][1] = (*mGridData)[ind[1][3][0]];
715 cVals[7][2] = (*mGridData)[ind[1][3][1]];
716 cVals[7][3] = (*mGridData)[ind[1][3][2]];
717 cVals[8][0] = extrapolation((*mGridData)[ind[2][0][0]], (*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][0][2]]);
718 cVals[8][1] = (*mGridData)[ind[2][0][0]];
719 cVals[8][2] = (*mGridData)[ind[2][0][1]];
720 cVals[8][3] = (*mGridData)[ind[2][0][2]];
721 cVals[9][0] = extrapolation((*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][1][2]]);
722 cVals[9][1] = (*mGridData)[ind[2][1][0]];
723 cVals[9][2] = (*mGridData)[ind[2][1][1]];
724 cVals[9][3] = (*mGridData)[ind[2][1][2]];
725 cVals[10][0] = extrapolation((*mGridData)[ind[2][2][0]], (*mGridData)[ind[2][2][1]], (*mGridData)[ind[2][2][2]]);
726 cVals[10][1] = (*mGridData)[ind[2][2][0]];
727 cVals[10][2] = (*mGridData)[ind[2][2][1]];
728 cVals[10][3] = (*mGridData)[ind[2][2][2]];
729 cVals[11][0] = extrapolation((*mGridData)[ind[2][3][0]], (*mGridData)[ind[2][3][1]], (*mGridData)[ind[2][3][2]]);
730 cVals[11][1] = (*mGridData)[ind[2][3][0]];
731 cVals[11][2] = (*mGridData)[ind[2][3][1]];
732 cVals[11][3] = (*mGridData)[ind[2][3][2]];
733 cVals[12][0] = extrapolation((*mGridData)[ind[3][0][0]], (*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][0][2]]);
734 cVals[12][1] = (*mGridData)[ind[3][0][0]];
735 cVals[12][2] = (*mGridData)[ind[3][0][1]];
736 cVals[12][3] = (*mGridData)[ind[3][0][2]];
737 cVals[13][0] = extrapolation((*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][1][2]]);
738 cVals[13][1] = (*mGridData)[ind[3][1][0]];
739 cVals[13][2] = (*mGridData)[ind[3][1][1]];
740 cVals[13][3] = (*mGridData)[ind[3][1][2]];
741 cVals[14][0] = extrapolation((*mGridData)[ind[3][2][0]], (*mGridData)[ind[3][2][1]], (*mGridData)[ind[3][2][2]]);
742 cVals[14][1] = (*mGridData)[ind[3][2][0]];
743 cVals[14][2] = (*mGridData)[ind[3][2][1]];
744 cVals[14][3] = (*mGridData)[ind[3][2][2]];
745 cVals[15][0] = extrapolation((*mGridData)[ind[3][3][0]], (*mGridData)[ind[3][3][1]], (*mGridData)[ind[3][3][2]]);
746 cVals[15][1] = (*mGridData)[ind[3][3][0]];
747 cVals[15][2] = (*mGridData)[ind[3][3][1]];
748 cVals[15][3] = (*mGridData)[ind[3][3][2]];
753 case GridPos::LineI: {
754 const int ind[4][3][3]{
755 {{ii_x_y_z + deltaPhi[i0], ind[0][0][0] - deltaZ[i0], ind[0][0][1] - deltaZ[i0]},
756 {ind[0][0][0] - deltaR[i0], ind[0][1][0] - deltaZ[i0], ind[0][1][1] - deltaZ[i0]},
757 {ind[0][1][0] - deltaR[i0], ind[0][2][0] - deltaZ[i0], ind[0][2][1] - deltaZ[i0]}},
758 {{ii_x_y_z, ind[1][0][0] - deltaZ[i0], ind[1][0][1] - deltaZ[i0]},
759 {ind[1][0][0] - deltaR[i0], ind[1][1][0] - deltaZ[i0], ind[1][1][1] - deltaZ[i0]},
760 {ind[1][1][0] - deltaR[i0], ind[1][2][0] - deltaZ[i0], ind[1][2][1] - deltaZ[i0]}},
761 {{ii_x_y_z + deltaPhi[i1], ind[2][0][0] - deltaZ[i0], ind[2][0][1] - deltaZ[i0]},
762 {ind[2][0][0] - deltaR[i0], ind[2][1][0] - deltaZ[i0], ind[2][1][1] - deltaZ[i0]},
763 {ind[2][1][0] - deltaR[i0], ind[2][2][0] - deltaZ[i0], ind[2][2][1] - deltaZ[i0]}},
764 {{ii_x_y_z + deltaPhi[i2], ind[3][0][0] - deltaZ[i0], ind[3][0][1] - deltaZ[i0]},
765 {ind[3][0][0] - deltaR[i0], ind[3][1][0] - deltaZ[i0], ind[3][1][1] - deltaZ[i0]},
766 {ind[3][1][0] - deltaR[i0], ind[3][2][0] - deltaZ[i0], ind[3][2][1] - deltaZ[i0]}}};
768 cVals[0][0] = extrapolation((*mGridData)[ind[0][0][0]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][2][2]]);
769 cVals[0][1] = extrapolation((*mGridData)[ind[0][0][0]], (*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][2][0]]);
770 cVals[0][2] = extrapolation((*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][2][1]]);
771 cVals[0][3] = extrapolation((*mGridData)[ind[0][0][2]], (*mGridData)[ind[0][1][2]], (*mGridData)[ind[0][2][2]]);
772 cVals[1][0] = extrapolation((*mGridData)[ind[0][0][0]], (*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][0][2]]);
773 cVals[1][1] = (*mGridData)[ind[0][0][0]];
774 cVals[1][2] = (*mGridData)[ind[0][0][1]];
775 cVals[1][3] = (*mGridData)[ind[0][0][2]];
776 cVals[2][0] = extrapolation((*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][1][2]]);
777 cVals[2][1] = (*mGridData)[ind[0][1][0]];
778 cVals[2][2] = (*mGridData)[ind[0][1][1]];
779 cVals[2][3] = (*mGridData)[ind[0][1][2]];
780 cVals[3][0] = extrapolation((*mGridData)[ind[0][2][0]], (*mGridData)[ind[0][2][1]], (*mGridData)[ind[0][2][2]]);
781 cVals[3][1] = (*mGridData)[ind[0][2][0]];
782 cVals[3][2] = (*mGridData)[ind[0][2][1]];
783 cVals[3][3] = (*mGridData)[ind[0][2][2]];
784 cVals[4][0] = extrapolation((*mGridData)[ii_x_y_z], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][2][2]]);
785 cVals[4][1] = extrapolation((*mGridData)[ii_x_y_z], (*mGridData)[ind[1][1][0]], (*mGridData)[ind[1][2][0]]);
786 cVals[4][2] = extrapolation((*mGridData)[ind[1][0][1]], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][2][1]]);
787 cVals[4][3] = extrapolation((*mGridData)[ind[1][0][2]], (*mGridData)[ind[1][1][2]], (*mGridData)[ind[1][2][2]]);
788 cVals[5][0] = extrapolation((*mGridData)[ii_x_y_z], (*mGridData)[ind[1][0][1]], (*mGridData)[ind[1][0][2]]);
789 cVals[5][2] = (*mGridData)[ind[1][0][1]];
790 cVals[5][3] = (*mGridData)[ind[1][0][2]];
791 cVals[6][0] = extrapolation((*mGridData)[ind[1][1][0]], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][1][2]]);
792 cVals[6][1] = (*mGridData)[ind[1][1][0]];
793 cVals[6][2] = (*mGridData)[ind[1][1][1]];
794 cVals[6][3] = (*mGridData)[ind[1][1][2]];
795 cVals[7][0] = extrapolation((*mGridData)[ind[1][2][0]], (*mGridData)[ind[1][2][1]], (*mGridData)[ind[1][2][2]]);
796 cVals[7][1] = (*mGridData)[ind[1][2][0]];
797 cVals[7][2] = (*mGridData)[ind[1][2][1]];
798 cVals[7][3] = (*mGridData)[ind[1][2][2]];
799 cVals[8][0] = extrapolation((*mGridData)[ind[2][0][0]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][2][2]]);
800 cVals[8][1] = extrapolation((*mGridData)[ind[2][0][0]], (*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][2][0]]);
801 cVals[8][2] = extrapolation((*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][2][1]]);
802 cVals[8][3] = extrapolation((*mGridData)[ind[2][0][2]], (*mGridData)[ind[2][1][2]], (*mGridData)[ind[2][2][2]]);
803 cVals[9][0] = extrapolation((*mGridData)[ind[2][0][0]], (*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][0][2]]);
804 cVals[9][1] = (*mGridData)[ind[2][0][0]];
805 cVals[9][2] = (*mGridData)[ind[2][0][1]];
806 cVals[9][3] = (*mGridData)[ind[2][0][2]];
807 cVals[10][0] = extrapolation((*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][1][2]]);
808 cVals[10][1] = (*mGridData)[ind[2][1][0]];
809 cVals[10][2] = (*mGridData)[ind[2][1][1]];
810 cVals[10][3] = (*mGridData)[ind[2][1][2]];
811 cVals[11][0] = extrapolation((*mGridData)[ind[2][2][0]], (*mGridData)[ind[2][2][1]], (*mGridData)[ind[2][2][2]]);
812 cVals[11][1] = (*mGridData)[ind[2][2][0]];
813 cVals[11][2] = (*mGridData)[ind[2][2][1]];
814 cVals[11][3] = (*mGridData)[ind[2][2][2]];
815 cVals[12][0] = extrapolation((*mGridData)[ind[3][0][0]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][2][2]]);
816 cVals[12][1] = extrapolation((*mGridData)[ind[3][0][0]], (*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][2][0]]);
817 cVals[12][2] = extrapolation((*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][2][1]]);
818 cVals[12][3] = extrapolation((*mGridData)[ind[3][0][2]], (*mGridData)[ind[3][1][2]], (*mGridData)[ind[3][2][2]]);
819 cVals[13][0] = extrapolation((*mGridData)[ind[3][0][0]], (*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][0][2]]);
820 cVals[13][1] = (*mGridData)[ind[3][0][0]];
821 cVals[13][2] = (*mGridData)[ind[3][0][1]];
822 cVals[13][3] = (*mGridData)[ind[3][0][2]];
823 cVals[14][0] = extrapolation((*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][1][2]]);
824 cVals[14][1] = (*mGridData)[ind[3][1][0]];
825 cVals[14][2] = (*mGridData)[ind[3][1][1]];
826 cVals[14][3] = (*mGridData)[ind[3][1][2]];
827 cVals[15][0] = extrapolation((*mGridData)[ind[3][2][0]], (*mGridData)[ind[3][2][1]], (*mGridData)[ind[3][2][2]]);
828 cVals[15][1] = (*mGridData)[ind[3][2][0]];
829 cVals[15][2] = (*mGridData)[ind[3][2][1]];
830 cVals[15][3] = (*mGridData)[ind[3][2][2]];
835 case GridPos::LineJ: {
836 const int ind[4][3][3]{
837 {{ii_x_y_z + deltaPhi[i0] + deltaZ[i0], ind[0][0][0] - deltaZ[i0], ind[0][0][1] - deltaZ[i0]},
838 {ind[0][0][0] - deltaR[i0], ind[0][1][0] - deltaZ[i0], ind[0][1][1] - deltaZ[i0]},
839 {ind[0][1][0] - deltaR[i0], ind[0][2][0] - deltaZ[i0], ind[0][2][1] - deltaZ[i0]}},
840 {{ii_x_y_z + deltaZ[i0], ind[1][0][0] - deltaZ[i0], ind[1][0][1] - deltaZ[i0]},
841 {ind[1][0][0] - deltaR[i0], ind[1][1][0] - deltaZ[i0], ind[1][1][1] - deltaZ[i0]},
842 {ind[1][1][0] - deltaR[i0], ind[1][2][0] - deltaZ[i0], ind[1][2][1] - deltaZ[i0]}},
843 {{ii_x_y_z + deltaPhi[i1] + deltaZ[i0], ind[2][0][0] - deltaZ[i0], ind[2][0][1] - deltaZ[i0]},
844 {ind[2][0][0] - deltaR[i0], ind[2][1][0] - deltaZ[i0], ind[2][1][1] - deltaZ[i0]},
845 {ind[2][1][0] - deltaR[i0], ind[2][2][0] - deltaZ[i0], ind[2][2][1] - deltaZ[i0]}},
846 {{ii_x_y_z + deltaPhi[i2] + deltaZ[i0], ind[3][0][0] - deltaZ[i0], ind[3][0][1] - deltaZ[i0]},
847 {ind[3][0][0] - deltaR[i0], ind[3][1][0] - deltaZ[i0], ind[3][1][1] - deltaZ[i0]},
848 {ind[3][1][0] - deltaR[i0], ind[3][2][0] - deltaZ[i0], ind[3][2][1] - deltaZ[i0]}}};
850 cVals[0][0] = extrapolation((*mGridData)[ind[0][0][0]], (*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][2][0]]);
851 cVals[0][1] = extrapolation((*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][2][1]]);
852 cVals[0][2] = extrapolation((*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][2][0] + deltaZ[i0]]);
853 cVals[0][3] = extrapolation((*mGridData)[ind[0][0][2]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][2][0]]);
854 cVals[1][0] = (*mGridData)[ind[0][0][0]];
855 cVals[1][1] = (*mGridData)[ind[0][0][1]];
856 cVals[1][2] = (*mGridData)[ind[0][0][2]];
857 cVals[1][3] = extrapolation((*mGridData)[ind[0][0][2]], (*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][0][0]]);
858 cVals[2][0] = (*mGridData)[ind[0][1][0]];
859 cVals[2][1] = (*mGridData)[ind[0][1][1]];
860 cVals[2][2] = (*mGridData)[ind[0][1][2]];
861 cVals[2][3] = extrapolation((*mGridData)[ind[0][1][2]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][1][0]]);
862 cVals[3][0] = (*mGridData)[ind[0][2][0]];
863 cVals[3][1] = (*mGridData)[ind[0][2][1]];
864 cVals[3][2] = (*mGridData)[ind[0][2][2]];
865 cVals[3][3] = extrapolation((*mGridData)[ind[0][2][2]], (*mGridData)[ind[0][2][1]], (*mGridData)[ind[0][2][0]]);
866 cVals[4][0] = extrapolation((*mGridData)[ind[1][0][0]], (*mGridData)[ind[1][1][0]], (*mGridData)[ind[1][2][0]]);
867 cVals[4][1] = extrapolation((*mGridData)[ii_x_y_z], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][2][1]]);
868 cVals[4][2] = extrapolation((*mGridData)[ii_x_y_z], (*mGridData)[ind[1][1][0]], (*mGridData)[ind[1][2][0] + deltaZ[i0]]);
869 cVals[4][3] = extrapolation((*mGridData)[ind[1][0][2]], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][2][0]]);
870 cVals[5][0] = (*mGridData)[ind[1][0][0]];
871 cVals[5][2] = (*mGridData)[ind[1][0][2]];
872 cVals[5][3] = extrapolation((*mGridData)[ind[1][0][2]], (*mGridData)[ii_x_y_z], (*mGridData)[ind[1][0][0]]);
873 cVals[6][0] = (*mGridData)[ind[1][1][0]];
874 cVals[6][1] = (*mGridData)[ind[1][1][1]];
875 cVals[6][2] = (*mGridData)[ind[1][1][2]];
876 cVals[6][3] = extrapolation((*mGridData)[ind[1][1][2]], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][1][0]]);
877 cVals[7][0] = (*mGridData)[ind[1][2][0]];
878 cVals[7][1] = (*mGridData)[ind[1][2][1]];
879 cVals[7][2] = (*mGridData)[ind[1][2][2]];
880 cVals[7][3] = extrapolation((*mGridData)[ind[1][2][2]], (*mGridData)[ind[1][2][1]], (*mGridData)[ind[1][2][0]]);
881 cVals[8][0] = extrapolation((*mGridData)[ind[2][0][0]], (*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][2][0]]);
882 cVals[8][1] = extrapolation((*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][2][1]]);
883 cVals[8][2] = extrapolation((*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][2][0] + deltaZ[i0]]);
884 cVals[8][3] = extrapolation((*mGridData)[ind[2][0][2]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][2][0]]);
885 cVals[9][0] = (*mGridData)[ind[2][0][0]];
886 cVals[9][1] = (*mGridData)[ind[2][0][1]];
887 cVals[9][2] = (*mGridData)[ind[2][0][2]];
888 cVals[9][3] = extrapolation((*mGridData)[ind[2][0][2]], (*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][0][0]]);
889 cVals[10][0] = (*mGridData)[ind[2][1][0]];
890 cVals[10][1] = (*mGridData)[ind[2][1][1]];
891 cVals[10][2] = (*mGridData)[ind[2][1][2]];
892 cVals[10][3] = extrapolation((*mGridData)[ind[2][1][2]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][1][0]]);
893 cVals[11][0] = (*mGridData)[ind[2][2][0]];
894 cVals[11][1] = (*mGridData)[ind[2][2][1]];
895 cVals[11][2] = (*mGridData)[ind[2][2][2]];
896 cVals[11][3] = extrapolation((*mGridData)[ind[2][2][2]], (*mGridData)[ind[2][2][1]], (*mGridData)[ind[2][2][0]]);
897 cVals[12][0] = extrapolation((*mGridData)[ind[3][0][0]], (*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][2][0]]);
898 cVals[12][1] = extrapolation((*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][2][1]]);
899 cVals[12][2] = extrapolation((*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][2][0] + deltaZ[i0]]);
900 cVals[12][3] = extrapolation((*mGridData)[ind[3][0][2]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][2][0]]);
901 cVals[13][0] = (*mGridData)[ind[3][0][0]];
902 cVals[13][1] = (*mGridData)[ind[3][0][1]];
903 cVals[13][2] = (*mGridData)[ind[3][0][2]];
904 cVals[13][3] = extrapolation((*mGridData)[ind[3][0][2]], (*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][0][0]]);
905 cVals[14][0] = (*mGridData)[ind[3][1][0]];
906 cVals[14][1] = (*mGridData)[ind[3][1][1]];
907 cVals[14][2] = (*mGridData)[ind[3][1][2]];
908 cVals[14][3] = extrapolation((*mGridData)[ind[3][1][2]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][1][0]]);
909 cVals[15][0] = (*mGridData)[ind[3][2][0]];
910 cVals[15][1] = (*mGridData)[ind[3][2][1]];
911 cVals[15][2] = (*mGridData)[ind[3][2][2]];
912 cVals[15][3] = extrapolation((*mGridData)[ind[3][2][2]], (*mGridData)[ind[3][2][1]], (*mGridData)[ind[3][2][0]]);
917 case GridPos::LineK: {
918 const int ind[4][3][3]{
919 {{ii_x_y_z + deltaPhi[i0] + deltaR[i0], ind[0][0][0] - deltaZ[i0], ind[0][0][1] - deltaZ[i0]},
920 {ind[0][0][0] - deltaR[i0], ind[0][1][0] - deltaZ[i0], ind[0][1][1] - deltaZ[i0]},
921 {ind[0][1][0] - deltaR[i0], ind[0][2][0] - deltaZ[i0], ind[0][2][1] - deltaZ[i0]}},
922 {{ii_x_y_z + deltaR[i0], ind[1][0][0] - deltaZ[i0], ind[1][0][1] - deltaZ[i0]},
923 {ind[1][0][0] - deltaR[i0], ind[1][1][0] - deltaZ[i0], ind[1][1][1] - deltaZ[i0]},
924 {ind[1][1][0] - deltaR[i0], ind[1][2][0] - deltaZ[i0], ind[1][2][1] - deltaZ[i0]}},
925 {{ii_x_y_z + deltaPhi[i1] + deltaR[i0], ind[2][0][0] - deltaZ[i0], ind[2][0][1] - deltaZ[i0]},
926 {ind[2][0][0] - deltaR[i0], ind[2][1][0] - deltaZ[i0], ind[2][1][1] - deltaZ[i0]},
927 {ind[2][1][0] - deltaR[i0], ind[2][2][0] - deltaZ[i0], ind[2][2][1] - deltaZ[i0]}},
928 {{ii_x_y_z + deltaPhi[i2] + deltaR[i0], ind[3][0][0] - deltaZ[i0], ind[3][0][1] - deltaZ[i0]},
929 {ind[3][0][0] - deltaR[i0], ind[3][1][0] - deltaZ[i0], ind[3][1][1] - deltaZ[i0]},
930 {ind[3][1][0] - deltaR[i0], ind[3][2][0] - deltaZ[i0], ind[3][2][1] - deltaZ[i0]}}};
932 cVals[0][0] = extrapolation((*mGridData)[ind[0][0][0]], (*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][0][2]]);
933 cVals[0][1] = (*mGridData)[ind[0][0][0]];
934 cVals[0][2] = (*mGridData)[ind[0][0][1]];
935 cVals[0][3] = (*mGridData)[ind[0][0][2]];
936 cVals[1][0] = extrapolation((*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][1][2]]);
937 cVals[1][1] = (*mGridData)[ind[0][1][0]];
938 cVals[1][2] = (*mGridData)[ind[0][1][1]];
939 cVals[1][3] = (*mGridData)[ind[0][1][2]];
940 cVals[2][0] = extrapolation((*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][0][2] + deltaR[i0]]);
941 cVals[2][1] = (*mGridData)[ind[0][2][0]];
942 cVals[2][2] = (*mGridData)[ind[0][2][1]];
943 cVals[2][3] = (*mGridData)[ind[0][2][2]];
944 cVals[3][0] = extrapolation((*mGridData)[ind[0][2][0]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][0][2]]);
945 cVals[3][1] = extrapolation((*mGridData)[ind[0][2][0]], (*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][0][0]]);
946 cVals[3][2] = extrapolation((*mGridData)[ind[0][2][1]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][0][1]]);
947 cVals[3][3] = extrapolation((*mGridData)[ind[0][2][2]], (*mGridData)[ind[0][1][2]], (*mGridData)[ind[0][0][2]]);
948 cVals[4][0] = extrapolation((*mGridData)[ind[1][0][0]], (*mGridData)[ind[1][0][1]], (*mGridData)[ind[1][0][2]]);
949 cVals[4][1] = (*mGridData)[ind[1][0][0]];
950 cVals[4][2] = (*mGridData)[ind[1][0][1]];
951 cVals[4][3] = (*mGridData)[ind[1][0][2]];
952 cVals[5][0] = extrapolation((*mGridData)[ii_x_y_z], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][1][2]]);
953 cVals[5][2] = (*mGridData)[ind[1][1][1]];
954 cVals[5][3] = (*mGridData)[ind[1][1][2]];
955 cVals[6][0] = extrapolation((*mGridData)[ii_x_y_z], (*mGridData)[ind[1][0][1]], (*mGridData)[ind[1][0][2] + deltaR[i0]]);
956 cVals[6][1] = (*mGridData)[ind[1][2][0]];
957 cVals[6][2] = (*mGridData)[ind[1][2][1]];
958 cVals[6][3] = (*mGridData)[ind[1][2][2]];
959 cVals[7][0] = extrapolation((*mGridData)[ind[1][2][0]], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][0][2]]);
960 cVals[7][1] = extrapolation((*mGridData)[ind[1][2][0]], (*mGridData)[ii_x_y_z], (*mGridData)[ind[1][0][0]]);
961 cVals[7][2] = extrapolation((*mGridData)[ind[1][2][1]], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][0][1]]);
962 cVals[8][0] = extrapolation((*mGridData)[ind[2][0][0]], (*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][0][2]]);
963 cVals[7][3] = extrapolation((*mGridData)[ind[1][2][2]], (*mGridData)[ind[1][1][2]], (*mGridData)[ind[1][0][2]]);
964 cVals[8][1] = (*mGridData)[ind[2][0][0]];
965 cVals[8][2] = (*mGridData)[ind[2][0][1]];
966 cVals[8][3] = (*mGridData)[ind[2][0][2]];
967 cVals[9][0] = extrapolation((*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][1][2]]);
968 cVals[9][1] = (*mGridData)[ind[2][1][0]];
969 cVals[9][2] = (*mGridData)[ind[2][1][1]];
970 cVals[9][3] = (*mGridData)[ind[2][1][2]];
971 cVals[10][0] = extrapolation((*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][0][2] + deltaR[i0]]);
972 cVals[10][1] = (*mGridData)[ind[2][2][0]];
973 cVals[10][2] = (*mGridData)[ind[2][2][1]];
974 cVals[10][3] = (*mGridData)[ind[2][2][2]];
975 cVals[11][0] = extrapolation((*mGridData)[ind[2][2][0]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][0][2]]);
976 cVals[11][1] = extrapolation((*mGridData)[ind[2][2][0]], (*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][0][0]]);
977 cVals[11][2] = extrapolation((*mGridData)[ind[2][2][1]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][0][1]]);
978 cVals[11][3] = extrapolation((*mGridData)[ind[2][2][2]], (*mGridData)[ind[2][1][2]], (*mGridData)[ind[2][0][2]]);
979 cVals[12][0] = extrapolation((*mGridData)[ind[3][0][0]], (*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][0][2]]);
980 cVals[12][1] = (*mGridData)[ind[3][0][0]];
981 cVals[12][2] = (*mGridData)[ind[3][0][1]];
982 cVals[12][3] = (*mGridData)[ind[3][0][2]];
983 cVals[13][0] = extrapolation((*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][1][2]]);
984 cVals[13][1] = (*mGridData)[ind[3][1][0]];
985 cVals[13][2] = (*mGridData)[ind[3][1][1]];
986 cVals[13][3] = (*mGridData)[ind[3][1][2]];
987 cVals[14][0] = extrapolation((*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][0][2] + deltaR[i0]]);
988 cVals[14][1] = (*mGridData)[ind[3][2][0]];
989 cVals[14][2] = (*mGridData)[ind[3][2][1]];
990 cVals[14][3] = (*mGridData)[ind[3][2][2]];
991 cVals[15][0] = extrapolation((*mGridData)[ind[3][2][0]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][0][2]]);
992 cVals[15][1] = extrapolation((*mGridData)[ind[3][2][0]], (*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][0][0]]);
993 cVals[15][2] = extrapolation((*mGridData)[ind[3][2][1]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][0][1]]);
994 cVals[15][3] = extrapolation((*mGridData)[ind[3][2][2]], (*mGridData)[ind[3][1][2]], (*mGridData)[ind[3][0][2]]);
999 case GridPos::LineL: {
1000 const int ind[4][3][3]{
1001 {{ii_x_y_z + deltaPhi[i0] + deltaR[i0] + deltaZ[i0], ind[0][0][0] - deltaZ[i0], ind[0][0][1] - deltaZ[i0]},
1002 {ind[0][0][0] - deltaR[i0], ind[0][1][0] - deltaZ[i0], ind[0][1][1] - deltaZ[i0]},
1003 {ind[0][1][0] - deltaR[i0], ind[0][2][0] - deltaZ[i0], ind[0][2][1] - deltaZ[i0]}},
1004 {{ii_x_y_z + deltaR[i0] + deltaZ[i0], ind[1][0][0] - deltaZ[i0], ind[1][0][1] - deltaZ[i0]},
1005 {ind[1][0][0] - deltaR[i0], ind[1][1][0] - deltaZ[i0], ind[1][1][1] - deltaZ[i0]},
1006 {ind[1][1][0] - deltaR[i0], ind[1][2][0] - deltaZ[i0], ind[1][2][1] - deltaZ[i0]}},
1007 {{ii_x_y_z + deltaPhi[i1] + deltaR[i0] + deltaZ[i0], ind[2][0][0] - deltaZ[i0], ind[2][0][1] - deltaZ[i0]},
1008 {ind[2][0][0] - deltaR[i0], ind[2][1][0] - deltaZ[i0], ind[2][1][1] - deltaZ[i0]},
1009 {ind[2][1][0] - deltaR[i0], ind[2][2][0] - deltaZ[i0], ind[2][2][1] - deltaZ[i0]}},
1010 {{ii_x_y_z + deltaPhi[i2] + deltaR[i0] + deltaZ[i0], ind[3][0][0] - deltaZ[i0], ind[3][0][1] - deltaZ[i0]},
1011 {ind[3][0][0] - deltaR[i0], ind[3][1][0] - deltaZ[i0], ind[3][1][1] - deltaZ[i0]},
1012 {ind[3][1][0] - deltaR[i0], ind[3][2][0] - deltaZ[i0], ind[3][2][1] - deltaZ[i0]}}};
1014 cVals[0][0] = (*mGridData)[ind[0][0][0]];
1015 cVals[0][1] = (*mGridData)[ind[0][0][1]];
1016 cVals[0][2] = (*mGridData)[ind[0][0][2]];
1017 cVals[0][3] = extrapolation((*mGridData)[ind[0][0][2]], (*mGridData)[ind[0][0][1]], (*mGridData)[ind[0][0][0]]);
1018 cVals[1][0] = (*mGridData)[ind[0][1][0]];
1019 cVals[1][1] = (*mGridData)[ind[0][1][1]];
1020 cVals[1][2] = (*mGridData)[ind[0][1][2]];
1021 cVals[1][3] = extrapolation((*mGridData)[ind[0][1][2]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][1][0]]);
1022 cVals[2][0] = (*mGridData)[ind[0][2][0]];
1023 cVals[2][1] = (*mGridData)[ind[0][2][1]];
1024 cVals[2][2] = (*mGridData)[ind[0][2][2]];
1025 cVals[2][3] = extrapolation((*mGridData)[ind[0][2][2]], (*mGridData)[ind[0][2][1]], (*mGridData)[ind[0][2][0]]);
1026 cVals[3][0] = extrapolation((*mGridData)[ind[0][2][0]], (*mGridData)[ind[0][1][0]], (*mGridData)[ind[0][0][0]]);
1027 cVals[3][1] = extrapolation((*mGridData)[ind[0][2][1]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][0][1]]);
1028 cVals[3][2] = extrapolation((*mGridData)[ind[0][2][2]], (*mGridData)[ind[0][1][2]], (*mGridData)[ind[0][0][2]]);
1029 cVals[3][3] = extrapolation((*mGridData)[ind[0][2][2]], (*mGridData)[ind[0][1][1]], (*mGridData)[ind[0][0][0]]);
1030 cVals[4][0] = (*mGridData)[ind[1][0][0]];
1031 cVals[4][1] = (*mGridData)[ind[1][0][1]];
1032 cVals[4][2] = (*mGridData)[ind[1][0][2]];
1033 cVals[4][3] = extrapolation((*mGridData)[ind[1][0][2]], (*mGridData)[ind[1][0][1]], (*mGridData)[ind[1][0][0]]);
1034 cVals[5][0] = (*mGridData)[ind[1][1][0]];
1035 cVals[5][2] = (*mGridData)[ind[1][1][2]];
1036 cVals[5][3] = extrapolation((*mGridData)[ind[1][1][2]], (*mGridData)[ii_x_y_z], (*mGridData)[ind[1][1][0]]);
1037 cVals[6][0] = (*mGridData)[ind[1][2][0]];
1038 cVals[6][1] = (*mGridData)[ind[1][2][1]];
1039 cVals[6][2] = (*mGridData)[ind[1][2][2]];
1040 cVals[6][3] = extrapolation((*mGridData)[ind[1][2][2]], (*mGridData)[ind[1][2][1]], (*mGridData)[ind[1][2][0]]);
1041 cVals[7][0] = extrapolation((*mGridData)[ind[1][2][0]], (*mGridData)[ind[1][1][0]], (*mGridData)[ind[1][0][0]]);
1042 cVals[7][1] = extrapolation((*mGridData)[ind[1][2][1]], (*mGridData)[ii_x_y_z], (*mGridData)[ind[1][0][1]]);
1043 cVals[7][2] = extrapolation((*mGridData)[ind[1][2][2]], (*mGridData)[ind[1][1][2]], (*mGridData)[ind[1][0][2]]);
1044 cVals[7][3] = extrapolation((*mGridData)[ind[1][2][2]], (*mGridData)[ind[1][1][1]], (*mGridData)[ind[1][0][0]]);
1045 cVals[8][0] = (*mGridData)[ind[2][0][0]];
1046 cVals[8][1] = (*mGridData)[ind[2][0][1]];
1047 cVals[8][2] = (*mGridData)[ind[2][0][2]];
1048 cVals[8][3] = extrapolation((*mGridData)[ind[2][0][2]], (*mGridData)[ind[2][0][1]], (*mGridData)[ind[2][0][0]]);
1049 cVals[9][0] = (*mGridData)[ind[2][1][0]];
1050 cVals[9][1] = (*mGridData)[ind[2][1][1]];
1051 cVals[9][2] = (*mGridData)[ind[2][1][2]];
1052 cVals[9][3] = extrapolation((*mGridData)[ind[2][1][2]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][1][0]]);
1053 cVals[10][0] = (*mGridData)[ind[2][2][0]];
1054 cVals[10][1] = (*mGridData)[ind[2][2][1]];
1055 cVals[10][2] = (*mGridData)[ind[2][2][2]];
1056 cVals[10][3] = extrapolation((*mGridData)[ind[2][2][2]], (*mGridData)[ind[2][2][1]], (*mGridData)[ind[2][2][0]]);
1057 cVals[11][0] = extrapolation((*mGridData)[ind[2][2][0]], (*mGridData)[ind[2][1][0]], (*mGridData)[ind[2][0][0]]);
1058 cVals[11][1] = extrapolation((*mGridData)[ind[2][2][1]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][0][1]]);
1059 cVals[11][2] = extrapolation((*mGridData)[ind[2][2][2]], (*mGridData)[ind[2][1][2]], (*mGridData)[ind[2][0][2]]);
1060 cVals[11][3] = extrapolation((*mGridData)[ind[2][2][2]], (*mGridData)[ind[2][1][1]], (*mGridData)[ind[2][0][0]]);
1061 cVals[12][0] = (*mGridData)[ind[3][0][0]];
1062 cVals[12][1] = (*mGridData)[ind[3][0][1]];
1063 cVals[12][2] = (*mGridData)[ind[3][0][2]];
1064 cVals[12][3] = extrapolation((*mGridData)[ind[3][0][2]], (*mGridData)[ind[3][0][1]], (*mGridData)[ind[3][0][0]]);
1065 cVals[13][0] = (*mGridData)[ind[3][1][0]];
1066 cVals[13][1] = (*mGridData)[ind[3][1][1]];
1067 cVals[13][2] = (*mGridData)[ind[3][1][2]];
1068 cVals[13][3] = extrapolation((*mGridData)[ind[3][1][2]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][1][0]]);
1069 cVals[14][0] = (*mGridData)[ind[3][2][0]];
1070 cVals[14][1] = (*mGridData)[ind[3][2][1]];
1071 cVals[14][2] = (*mGridData)[ind[3][2][2]];
1072 cVals[14][3] = extrapolation((*mGridData)[ind[3][2][2]], (*mGridData)[ind[3][2][1]], (*mGridData)[ind[3][2][0]]);
1073 cVals[15][0] = extrapolation((*mGridData)[ind[3][2][0]], (*mGridData)[ind[3][1][0]], (*mGridData)[ind[3][0][0]]);
1074 cVals[15][1] = extrapolation((*mGridData)[ind[3][2][1]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][0][1]]);
1075 cVals[15][2] = extrapolation((*mGridData)[ind[3][2][2]], (*mGridData)[ind[3][1][2]], (*mGridData)[ind[3][0][2]]);
1076 cVals[15][3] = extrapolation((*mGridData)[ind[3][2][2]], (*mGridData)[ind[3][1][1]], (*mGridData)[ind[3][0][0]]);