diff options
Diffstat (limited to 'extern/mantaflow/preprocessed/plugin/waveletturbulence.cpp')
-rw-r--r-- | extern/mantaflow/preprocessed/plugin/waveletturbulence.cpp | 286 |
1 files changed, 137 insertions, 149 deletions
diff --git a/extern/mantaflow/preprocessed/plugin/waveletturbulence.cpp b/extern/mantaflow/preprocessed/plugin/waveletturbulence.cpp index 7d867542132..20e6a098d72 100644 --- a/extern/mantaflow/preprocessed/plugin/waveletturbulence.cpp +++ b/extern/mantaflow/preprocessed/plugin/waveletturbulence.cpp @@ -170,7 +170,7 @@ struct KnInterpolateMACGrid : public KernelBase { const MACGrid &source, const Vec3 &sourceFactor, const Vec3 &off, - int orderSpace) const + int orderSpace) { Vec3 pos = Vec3(i, j, k) * sourceFactor + off; @@ -207,37 +207,35 @@ struct KnInterpolateMACGrid : public KernelBase { return orderSpace; } typedef int type4; - void runMessage() - { - debMsg("Executing kernel KnInterpolateMACGrid ", 3); - debMsg("Kernel range" - << " x " << maxX << " y " << maxY << " z " << minZ << " - " << maxZ << " ", - 4); - }; - void operator()(const tbb::blocked_range<IndexInt> &__r) const + void runMessage(){}; + void run() { const int _maxX = maxX; const int _maxY = maxY; if (maxZ > 1) { - for (int k = __r.begin(); k != (int)__r.end(); k++) - for (int j = 0; j < _maxY; j++) - for (int i = 0; i < _maxX; i++) - op(i, j, k, target, source, sourceFactor, off, orderSpace); + +#pragma omp parallel + { + +#pragma omp for + for (int k = minZ; k < maxZ; k++) + for (int j = 0; j < _maxY; j++) + for (int i = 0; i < _maxX; i++) + op(i, j, k, target, source, sourceFactor, off, orderSpace); + } } else { const int k = 0; - for (int j = __r.begin(); j != (int)__r.end(); j++) - for (int i = 0; i < _maxX; i++) - op(i, j, k, target, source, sourceFactor, off, orderSpace); +#pragma omp parallel + { + +#pragma omp for + for (int j = 0; j < _maxY; j++) + for (int i = 0; i < _maxX; i++) + op(i, j, k, target, source, sourceFactor, off, orderSpace); + } } } - void run() - { - if (maxZ > 1) - tbb::parallel_for(tbb::blocked_range<IndexInt>(minZ, maxZ), *this); - else - tbb::parallel_for(tbb::blocked_range<IndexInt>(0, maxY), *this); - } MACGrid ⌖ const MACGrid &source; const Vec3 &sourceFactor; @@ -319,7 +317,7 @@ struct knApplySimpleNoiseVec3 : public KernelBase { Grid<Vec3> &target, const WaveletNoiseField &noise, Real scale, - const Grid<Real> *weight) const + const Grid<Real> *weight) { if (!flags.isFluid(i, j, k)) return; @@ -353,37 +351,35 @@ struct knApplySimpleNoiseVec3 : public KernelBase { return weight; } typedef Grid<Real> type4; - void runMessage() - { - debMsg("Executing kernel knApplySimpleNoiseVec3 ", 3); - debMsg("Kernel range" - << " x " << maxX << " y " << maxY << " z " << minZ << " - " << maxZ << " ", - 4); - }; - void operator()(const tbb::blocked_range<IndexInt> &__r) const + void runMessage(){}; + void run() { const int _maxX = maxX; const int _maxY = maxY; if (maxZ > 1) { - for (int k = __r.begin(); k != (int)__r.end(); k++) - for (int j = 0; j < _maxY; j++) - for (int i = 0; i < _maxX; i++) - op(i, j, k, flags, target, noise, scale, weight); + +#pragma omp parallel + { + +#pragma omp for + for (int k = minZ; k < maxZ; k++) + for (int j = 0; j < _maxY; j++) + for (int i = 0; i < _maxX; i++) + op(i, j, k, flags, target, noise, scale, weight); + } } else { const int k = 0; - for (int j = __r.begin(); j != (int)__r.end(); j++) - for (int i = 0; i < _maxX; i++) - op(i, j, k, flags, target, noise, scale, weight); +#pragma omp parallel + { + +#pragma omp for + for (int j = 0; j < _maxY; j++) + for (int i = 0; i < _maxX; i++) + op(i, j, k, flags, target, noise, scale, weight); + } } } - void run() - { - if (maxZ > 1) - tbb::parallel_for(tbb::blocked_range<IndexInt>(minZ, maxZ), *this); - else - tbb::parallel_for(tbb::blocked_range<IndexInt>(0, maxY), *this); - } const FlagGrid &flags; Grid<Vec3> ⌖ const WaveletNoiseField &noise; @@ -461,7 +457,7 @@ struct knApplySimpleNoiseReal : public KernelBase { Grid<Real> &target, const WaveletNoiseField &noise, Real scale, - const Grid<Real> *weight) const + const Grid<Real> *weight) { if (!flags.isFluid(i, j, k)) return; @@ -495,37 +491,35 @@ struct knApplySimpleNoiseReal : public KernelBase { return weight; } typedef Grid<Real> type4; - void runMessage() - { - debMsg("Executing kernel knApplySimpleNoiseReal ", 3); - debMsg("Kernel range" - << " x " << maxX << " y " << maxY << " z " << minZ << " - " << maxZ << " ", - 4); - }; - void operator()(const tbb::blocked_range<IndexInt> &__r) const + void runMessage(){}; + void run() { const int _maxX = maxX; const int _maxY = maxY; if (maxZ > 1) { - for (int k = __r.begin(); k != (int)__r.end(); k++) - for (int j = 0; j < _maxY; j++) - for (int i = 0; i < _maxX; i++) - op(i, j, k, flags, target, noise, scale, weight); + +#pragma omp parallel + { + +#pragma omp for + for (int k = minZ; k < maxZ; k++) + for (int j = 0; j < _maxY; j++) + for (int i = 0; i < _maxX; i++) + op(i, j, k, flags, target, noise, scale, weight); + } } else { const int k = 0; - for (int j = __r.begin(); j != (int)__r.end(); j++) - for (int i = 0; i < _maxX; i++) - op(i, j, k, flags, target, noise, scale, weight); +#pragma omp parallel + { + +#pragma omp for + for (int j = 0; j < _maxY; j++) + for (int i = 0; i < _maxX; i++) + op(i, j, k, flags, target, noise, scale, weight); + } } } - void run() - { - if (maxZ > 1) - tbb::parallel_for(tbb::blocked_range<IndexInt>(minZ, maxZ), *this); - else - tbb::parallel_for(tbb::blocked_range<IndexInt>(0, maxY), *this); - } const FlagGrid &flags; Grid<Real> ⌖ const WaveletNoiseField &noise; @@ -615,7 +609,7 @@ struct knApplyNoiseVec3 : public KernelBase { const Grid<Real> *weight, const Grid<Vec3> *uv, bool uvInterpol, - const Vec3 &sourceFactor) const + const Vec3 &sourceFactor) { if (!flags.isFluid(i, j, k)) return; @@ -694,19 +688,40 @@ struct knApplyNoiseVec3 : public KernelBase { return sourceFactor; } typedef Vec3 type8; - void runMessage() - { - debMsg("Executing kernel knApplyNoiseVec3 ", 3); - debMsg("Kernel range" - << " x " << maxX << " y " << maxY << " z " << minZ << " - " << maxZ << " ", - 4); - }; - void operator()(const tbb::blocked_range<IndexInt> &__r) const + void runMessage(){}; + void run() { const int _maxX = maxX; const int _maxY = maxY; if (maxZ > 1) { - for (int k = __r.begin(); k != (int)__r.end(); k++) + +#pragma omp parallel + { + +#pragma omp for + for (int k = minZ; k < maxZ; k++) + for (int j = 0; j < _maxY; j++) + for (int i = 0; i < _maxX; i++) + op(i, + j, + k, + flags, + target, + noise, + scale, + scaleSpatial, + weight, + uv, + uvInterpol, + sourceFactor); + } + } + else { + const int k = 0; +#pragma omp parallel + { + +#pragma omp for for (int j = 0; j < _maxY; j++) for (int i = 0; i < _maxX; i++) op(i, @@ -721,32 +736,9 @@ struct knApplyNoiseVec3 : public KernelBase { uv, uvInterpol, sourceFactor); - } - else { - const int k = 0; - for (int j = __r.begin(); j != (int)__r.end(); j++) - for (int i = 0; i < _maxX; i++) - op(i, - j, - k, - flags, - target, - noise, - scale, - scaleSpatial, - weight, - uv, - uvInterpol, - sourceFactor); + } } } - void run() - { - if (maxZ > 1) - tbb::parallel_for(tbb::blocked_range<IndexInt>(minZ, maxZ), *this); - else - tbb::parallel_for(tbb::blocked_range<IndexInt>(0, maxY), *this); - } const FlagGrid &flags; Grid<Vec3> ⌖ const WaveletNoiseField &noise; @@ -834,7 +826,7 @@ struct KnApplyComputeEnergy : public KernelBase { run(); } inline void op( - int i, int j, int k, const FlagGrid &flags, const MACGrid &vel, Grid<Real> &energy) const + int i, int j, int k, const FlagGrid &flags, const MACGrid &vel, Grid<Real> &energy) { Real e = 0.f; if (flags.isFluid(i, j, k)) { @@ -858,37 +850,35 @@ struct KnApplyComputeEnergy : public KernelBase { return energy; } typedef Grid<Real> type2; - void runMessage() - { - debMsg("Executing kernel KnApplyComputeEnergy ", 3); - debMsg("Kernel range" - << " x " << maxX << " y " << maxY << " z " << minZ << " - " << maxZ << " ", - 4); - }; - void operator()(const tbb::blocked_range<IndexInt> &__r) const + void runMessage(){}; + void run() { const int _maxX = maxX; const int _maxY = maxY; if (maxZ > 1) { - for (int k = __r.begin(); k != (int)__r.end(); k++) - for (int j = 0; j < _maxY; j++) - for (int i = 0; i < _maxX; i++) - op(i, j, k, flags, vel, energy); + +#pragma omp parallel + { + +#pragma omp for + for (int k = minZ; k < maxZ; k++) + for (int j = 0; j < _maxY; j++) + for (int i = 0; i < _maxX; i++) + op(i, j, k, flags, vel, energy); + } } else { const int k = 0; - for (int j = __r.begin(); j != (int)__r.end(); j++) - for (int i = 0; i < _maxX; i++) - op(i, j, k, flags, vel, energy); +#pragma omp parallel + { + +#pragma omp for + for (int j = 0; j < _maxY; j++) + for (int i = 0; i < _maxX; i++) + op(i, j, k, flags, vel, energy); + } } } - void run() - { - if (maxZ > 1) - tbb::parallel_for(tbb::blocked_range<IndexInt>(minZ, maxZ), *this); - else - tbb::parallel_for(tbb::blocked_range<IndexInt>(0, maxY), *this); - } const FlagGrid &flags; const MACGrid &vel; Grid<Real> &energy; @@ -1019,7 +1009,7 @@ struct KnComputeStrainRateMag : public KernelBase { run(); } inline void op( - int i, int j, int k, const MACGrid &vel, const Grid<Vec3> &velCenter, Grid<Real> &prod) const + int i, int j, int k, const MACGrid &vel, const Grid<Vec3> &velCenter, Grid<Real> &prod) { // compute Sij = 1/2 * (dU_i/dx_j + dU_j/dx_i) Vec3 diag = Vec3(vel(i + 1, j, k).x, vel(i, j + 1, k).y, 0.) - vel(i, j, k); @@ -1056,37 +1046,35 @@ struct KnComputeStrainRateMag : public KernelBase { return prod; } typedef Grid<Real> type2; - void runMessage() - { - debMsg("Executing kernel KnComputeStrainRateMag ", 3); - debMsg("Kernel range" - << " x " << maxX << " y " << maxY << " z " << minZ << " - " << maxZ << " ", - 4); - }; - void operator()(const tbb::blocked_range<IndexInt> &__r) const + void runMessage(){}; + void run() { const int _maxX = maxX; const int _maxY = maxY; if (maxZ > 1) { - for (int k = __r.begin(); k != (int)__r.end(); k++) - for (int j = 1; j < _maxY; j++) - for (int i = 1; i < _maxX; i++) - op(i, j, k, vel, velCenter, prod); + +#pragma omp parallel + { + +#pragma omp for + for (int k = minZ; k < maxZ; k++) + for (int j = 1; j < _maxY; j++) + for (int i = 1; i < _maxX; i++) + op(i, j, k, vel, velCenter, prod); + } } else { const int k = 0; - for (int j = __r.begin(); j != (int)__r.end(); j++) - for (int i = 1; i < _maxX; i++) - op(i, j, k, vel, velCenter, prod); +#pragma omp parallel + { + +#pragma omp for + for (int j = 1; j < _maxY; j++) + for (int i = 1; i < _maxX; i++) + op(i, j, k, vel, velCenter, prod); + } } } - void run() - { - if (maxZ > 1) - tbb::parallel_for(tbb::blocked_range<IndexInt>(minZ, maxZ), *this); - else - tbb::parallel_for(tbb::blocked_range<IndexInt>(1, maxY), *this); - } const MACGrid &vel; const Grid<Vec3> &velCenter; Grid<Real> ∏ |