Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/smoke/intern/FLUID_3D_STATIC.cpp')
-rw-r--r--intern/smoke/intern/FLUID_3D_STATIC.cpp48
1 files changed, 22 insertions, 26 deletions
diff --git a/intern/smoke/intern/FLUID_3D_STATIC.cpp b/intern/smoke/intern/FLUID_3D_STATIC.cpp
index 4909c071c3d..0215dfc417f 100644
--- a/intern/smoke/intern/FLUID_3D_STATIC.cpp
+++ b/intern/smoke/intern/FLUID_3D_STATIC.cpp
@@ -44,8 +44,8 @@ void FLUID_3D::addSmokeColumn() {
// generic static version, so that it can be applied to the
// WTURBULENCE grid as well
//////////////////////////////////////////////////////////////////////
-/*
-void FLUID_3D::addSmokeTestCase(float* field, Vec3Int res, float value)
+
+void FLUID_3D::addSmokeTestCase(float* field, Vec3Int res)
{
const int slabSize = res[0]*res[1]; int maxRes = (int)MAX3V(res);
float dx = 1.0f / (float)maxRes;
@@ -54,25 +54,23 @@ void FLUID_3D::addSmokeTestCase(float* field, Vec3Int res, float value)
float yTotal = dx * res[1];
float zTotal = dx * res[2];
- float heighMin = 0.05;
- float heighMax = 0.10;
-
- for (int y = 0; y < res[1]; y++)
- for (int z = (int)(heighMin*res[2]); z <= (int)(heighMax * res[1]); z++)
- for (int x = 0; x < res[0]; x++)
- {
- float xLength = x * dx - xTotal * 0.4f;
- float yLength = y * dx - zTotal * 0.5f;
- float radius = sqrtf(xLength * xLength + yLength * yLength);
-
- if (radius < 0.075f * xTotal)
- {
- int index = x + y * res[0] + z * slabSize;
- field[index] = value;
- }
- }
+ float heighMin = 0.05;
+ float heighMax = 0.10;
+
+ for (int y = 0; y < res[2]; y++)
+ for (int z = (int)(heighMin*res[2]); z <= (int)(heighMax * res[2]); z++)
+ for (int x = 0; x < res[0]; x++) {
+ float xLength = x * dx - xTotal * 0.4f;
+ float yLength = y * dx - yTotal * 0.5f;
+ float radius = sqrtf(xLength * xLength + yLength * yLength);
+
+ if (radius < 0.075f * xTotal) {
+ int index = x + y * res[0] + z * slabSize;
+ field[index] = 1.0f;
+ }
+ }
}
-*/
+
//////////////////////////////////////////////////////////////////////
// set x direction to Neumann boundary conditions
@@ -98,7 +96,7 @@ void FLUID_3D::setNeumannX(float* field, Vec3Int res)
for (int z = 0; z < res[2]; z++)
{
// top slab
- int index = y * res[0] + z * slabSize;
+ index = y * res[0] + z * slabSize;
index += res[0] - 1;
if(field[index]<0.) field[index] = 0.;
index -= 1;
@@ -130,7 +128,7 @@ void FLUID_3D::setNeumannY(float* field, Vec3Int res)
for (int x = 0; x < res[0]; x++)
{
// top slab
- int index = x + z * slabSize;
+ index = x + z * slabSize;
index += slabSize - res[0];
if(field[index]<0.) field[index] = 0.;
index -= res[0];
@@ -164,7 +162,7 @@ void FLUID_3D::setNeumannZ(float* field, Vec3Int res)
for (int x = 0; x < res[0]; x++)
{
// top slab
- int index = x + y * res[0];
+ index = x + y * res[0];
index += totalCells - slabSize;
if(field[index]<0.) field[index] = 0.;
index -= slabSize;
@@ -295,12 +293,10 @@ void FLUID_3D::advectFieldSemiLagrange(const float dt, const float* velx, const
const int xres = res[0];
const int yres = res[1];
const int zres = res[2];
- static int hits = 0;
- static int total = 0;
const int slabSize = res[0] * res[1];
// scale dt up to grid resolution
-#if PARALLEL==1 && !_WIN32
+#if PARALLEL==1
#pragma omp parallel
#pragma omp for schedule(static)
#endif