[Bf-blender-cvs] [6ec6e81] fluid-mantaflow: fixed issue with bound conditions
Sebastián Barschkis
noreply at git.blender.org
Thu Jan 28 12:37:03 CET 2016
Commit: 6ec6e8156393d1bbb1512a6dded7f02763baca0b
Author: Sebastián Barschkis
Date: Sat Oct 24 13:06:40 2015 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB6ec6e8156393d1bbb1512a6dded7f02763baca0b
fixed issue with bound conditions
===================================================================
M intern/smoke/intern/FLUID_3D.cpp
M intern/smoke/intern/MANTA.cpp
M intern/smoke/intern/MANTA.h
M intern/smoke/intern/scenarios/smoke.h
M source/blender/blenkernel/intern/pointcache.c
M source/blender/python/manta_pp/pwrapper/pymain.cpp
===================================================================
diff --git a/intern/smoke/intern/FLUID_3D.cpp b/intern/smoke/intern/FLUID_3D.cpp
index 6b5ca9e..113c89f 100644
--- a/intern/smoke/intern/FLUID_3D.cpp
+++ b/intern/smoke/intern/FLUID_3D.cpp
@@ -705,6 +705,9 @@ void FLUID_3D::initFire()
FLUID_3D::~FLUID_3D()
{
+ cout << "~FLUID_3D" << endl;
+// TODO: Get rid of all the initializations from FLUID_3D Manta constructor
+#if 0
if (_xVelocity) delete[] _xVelocity;
if (_yVelocity) delete[] _yVelocity;
if (_zVelocity) delete[] _zVelocity;
@@ -744,7 +747,8 @@ FLUID_3D::~FLUID_3D()
if (_color_b) delete[] _color_b;
if (_color_bOld) delete[] _color_bOld;
if (_color_bTemp) delete[] _color_bTemp;
-
+#endif
+
// printf("deleted fluid\n");
}
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index 0b47622..0e065cc 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -478,10 +478,11 @@ std::string Manta_API::getRealValue( const std::string& varName, SmokeModifierDa
char parent_dir[1024];
BLI_split_dir_part(smd->domain->_manta_filepath, parent_dir, sizeof(parent_dir));
ss << parent_dir;
- } else if (varName == "VORTICITY"){
+ } else if (varName == "VORTICITY") {
ss << smd->domain->vorticity / smd->domain->fluid->_constantScaling;
- } else if (varName == "BOUNDCONDITIONS"){
- if(smd->domain->border_collisions == SM_BORDER_OPEN) ss << "xXyY";
+ } else if (varName == "BOUNDCONDITIONS") {
+ // OLD SETUP. WHY LIKE THAT??
+ /*if(smd->domain->border_collisions == SM_BORDER_OPEN) ss << "xXyY";
else if (smd->domain->border_collisions == SM_BORDER_VERTICAL) ss << "xXyY";
else if (smd->domain->border_collisions == SM_BORDER_CLOSED) ss << "xXyY";
@@ -489,8 +490,19 @@ std::string Manta_API::getRealValue( const std::string& varName, SmokeModifierDa
if(smd->domain->border_collisions == SM_BORDER_OPEN) ss << "z";
else if (smd->domain->border_collisions == SM_BORDER_VERTICAL) ss << "z";
else if (smd->domain->border_collisions == SM_BORDER_CLOSED) ss << "zZ";
+ }*/
+ if(smd->domain->border_collisions == SM_BORDER_OPEN) ss << "xXyY";
+ else if (smd->domain->border_collisions == SM_BORDER_VERTICAL) ss << "zZ";
+ else if (smd->domain->border_collisions == SM_BORDER_CLOSED) ss << "";
+
+ if (smd->domain->manta_solver_res == 3) {
+ if(smd->domain->border_collisions == SM_BORDER_OPEN) ss << "zZ";
+ else if (smd->domain->border_collisions == SM_BORDER_VERTICAL) ss << "";
+ else if (smd->domain->border_collisions == SM_BORDER_CLOSED) ss << "";
}
}
+ else if (varName == "DO_OPEN")
+ ss << ((smd->domain->border_collisions == SM_BORDER_CLOSED) ? "False" : "True");
else if (varName == "GRAVITY")
ss << "vec3(0,0,-0.981)";
else if (varName == "ABS_FLOW")
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index ab54397..d9c0413 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -75,7 +75,6 @@ public:
unsigned char* _obstacles; /* only used (useful) for static obstacles like domain */
void step(float dt, float gravity[3]);
-// void runMantaScript(const string&, vector<string>& args);//defined in manta_pp/pwrapper/pymain.cpp
void indent_ss(stringstream& ss, int indent);
diff --git a/intern/smoke/intern/scenarios/smoke.h b/intern/smoke/intern/scenarios/smoke.h
index 261a07f..59836d9 100644
--- a/intern/smoke/intern/scenarios/smoke.h
+++ b/intern/smoke/intern/scenarios/smoke.h
@@ -12,6 +12,7 @@ import os, shutil, math, sys\n\
res = $RES$\n\
solver_dim = $SOLVER_DIM$\n\
gs = vec3($RESX$,$RESY$,$RESZ$)\n\
+doOpen = $DO_OPEN$\n\
boundConditions = '$BOUNDCONDITIONS$'\n\
if solver_dim == 2:\n\
gs.z = 1\n\
@@ -180,9 +181,7 @@ def step_low():\n\
if manta_using_heat:\n\
print ('Adding heat buoyancy')\n\
gravity=vec3(0,0,-0.0981) if solver_dim==3 else vec3(0,-0.0981,0)\n\
- print ('Here 1')\n\
addBuoyancy2(flags=flags, grid=density, vel=vel, gravity=gravity, coefficient=(-0.001))\n\
- print ('Here 2')\n\
addBuoyancy2(flags=flags, grid=heat_low, vel=vel, gravity=gravity, coefficient=$BETA$*(-10))\n\
else:\n\
print ('Adding buoyancy')\n\
@@ -204,7 +203,7 @@ def step_low():\n\
advectSemiLagrange(flags=flags, vel=vel, grid=density, order=$ADVECT_ORDER$)\n\
\n\
print('Advecting velocity')\n\
- advectSemiLagrange(flags=flags, vel=vel, grid=vel, order=$ADVECT_ORDER$)\n\
+ advectSemiLagrange(flags=flags, vel=vel, grid=vel, order=$ADVECT_ORDER$, openBounds=doOpen)\n\
\n\
print ('Walls')\n\
setWallBcs(flags=flags, vel=vel)\n\
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index f9463ec..9054ecc 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -574,17 +574,6 @@ static void ptcache_smoke_error(void *smoke_v, const char *message)
#define SMOKE_CACHE_VERSION "1.04"
-static void writeArrToFile(char* name, float* arr, int numElements)
-{
- FILE *filePtr;
- filePtr = fopen(name,"w");
- int i=0;
- for (i = 0; i < numElements; i++) {
- fprintf(filePtr, "%f \n", arr[i]);
- }
- fclose(filePtr);
-}
-
static int ptcache_smoke_write(PTCacheFile *pf, void *smoke_v)
{
SmokeModifierData *smd= (SmokeModifierData *)smoke_v;
@@ -598,9 +587,10 @@ static int ptcache_smoke_write(PTCacheFile *pf, void *smoke_v)
ptcache_file_write(pf, &sds->active_fields, 1, sizeof(int));
ptcache_file_write(pf, &sds->res, 3, sizeof(int));
ptcache_file_write(pf, &sds->dx, 1, sizeof(float));
+
if (sds->fluid) {
size_t res = sds->res[0]*sds->res[1]*sds->res[2];
- float dt, dx, *dens, *react, *fuel, *flame, *heat, *heatold, *manta_inflow, *vx, *vy, *vz, *r, *g, *b;
+ float dt, dx, *dens, *react, *fuel, *flame, *heat, *heatold, *vx, *vy, *vz, *r, *g, *b;
unsigned char *obstacles;
unsigned int in_len = sizeof(float)*(unsigned int)res;
unsigned char *out = (unsigned char *)MEM_callocN(LZO_OUT_LEN(in_len) * 4, "pointcache_lzo_buffer");
@@ -608,29 +598,13 @@ static int ptcache_smoke_write(PTCacheFile *pf, void *smoke_v)
int mode=1; // light
if (sds->cache_comp == SM_CACHE_HEAVY) mode=2; // heavy
- #ifndef WITH_MANTA
- smoke_export(sds->fluid, &dt, &dx, &dens, &react, &flame, &fuel, &heat, &heatold, &vx, &vy, &vz, &r, &g, &b, &obstacles);
- #else
- smoke_export(sds->fluid, &dt, &dx, &dens, &react, &flame, &fuel, &heat, &manta_inflow, &vx, &vy, &vz, &r, &g, &b, &obstacles);
- #endif
+ smoke_export(sds->fluid, &dt, &dx, &dens, &react, &flame, &fuel, &heat, &heatold, &vx, &vy, &vz, &r, &g, &b, &obstacles);
ptcache_file_compressed_write(pf, (unsigned char *)sds->shadow, in_len, out, mode);
-
- /* writeArrToFile("sh.txt", sds->shadow, res);
- */
ptcache_file_compressed_write(pf, (unsigned char *)dens, in_len, out, mode);
-
- /* writeArrToFile("dens.txt", dens, res);
-*/
- #ifdef WITH_MANTA
- ptcache_file_compressed_write(pf, (unsigned char *)manta_inflow, in_len, out, mode);
- #endif
if (fluid_fields & SM_ACTIVE_HEAT) {
ptcache_file_compressed_write(pf, (unsigned char *)heat, in_len, out, mode);
-
- #ifndef WITH_MANTA
- ptcache_file_compressed_write(pf, (unsigned char *)heatold, in_len, out, mode);
- #endif
+ ptcache_file_compressed_write(pf, (unsigned char *)heatold, in_len, out, mode);
}
if (fluid_fields & SM_ACTIVE_FIRE) {
ptcache_file_compressed_write(pf, (unsigned char *)flame, in_len, out, mode);
@@ -643,17 +617,8 @@ static int ptcache_smoke_write(PTCacheFile *pf, void *smoke_v)
ptcache_file_compressed_write(pf, (unsigned char *)b, in_len, out, mode);
}
ptcache_file_compressed_write(pf, (unsigned char *)vx, in_len, out, mode);
-
-/* writeArrToFile("vx.txt", vx, res);
-*/
ptcache_file_compressed_write(pf, (unsigned char *)vy, in_len, out, mode);
-
-/* writeArrToFile("vy.txt", vx, res);
-*/
ptcache_file_compressed_write(pf, (unsigned char *)vz, in_len, out, mode);
-
-/* writeArrToFile("vz.txt", vx, res);
-*/
ptcache_file_compressed_write(pf, (unsigned char *)obstacles, (unsigned int)res, out, mode);
ptcache_file_write(pf, &dt, 1, sizeof(float));
ptcache_file_write(pf, &dx, 1, sizeof(float));
@@ -727,7 +692,7 @@ static int ptcache_smoke_read_old(PTCacheFile *pf, void *smoke_v)
if (sds->fluid) {
size_t res = sds->res[0]*sds->res[1]*sds->res[2];
- float dt, dx, *dens, *heat, *heatold, *manta_inflow, *vx, *vy, *vz;
+ float dt, dx, *dens, *heat, *heatold, *vx, *vy, *vz;
unsigned char *obstacles;
unsigned int out_len = (unsigned int)res * sizeof(float);
float *tmp_array = MEM_callocN(out_len, "Smoke old cache tmp");
@@ -739,24 +704,16 @@ static int ptcache_smoke_read_old(PTCacheFile *pf, void *smoke_v)
sds->active_color[1] = 0.7f;
sds->active_color[2] = 0.7f;
- #ifndef WITH_MANTA
- smoke_export(sds->fluid, &dt, &dx, &dens, NULL, NULL, NULL, &heat, &heatold, &vx, &vy, &vz, NULL, NULL, NULL, &obstacles);
- #else
- smoke_export(sds->fluid, &dt, &dx, &dens, NULL, NULL, NULL, &heat, &manta_inflow, &vx, &vy, &vz, NULL, NULL, NULL, &obstacles);
- #endif
+ smoke_export(sds->fluid, &dt, &dx, &dens, NULL, NULL, NULL, &heat, &heatold, &vx, &vy, &vz, NULL, NULL, NULL, &obstacles);
ptcache_file_compressed_read(pf, (unsigned char *)sds->shadow, out_len);
ptcache_file_compressed_read(pf, (unsigned char*)dens, out_len);
ptcache_file_compressed_read(pf, (unsigned char*)tmp_array, out_len);
- #ifdef WITH_MANTA
- ptcache_file_compressed_read(pf, (unsigned char*)manta_inflow, out_len);
- #endif
- if (fluid_fields & SM_ACTIVE_HEAT) {
+ if (fluid_fields & SM_ACTIVE_HEAT)
+ {
ptcache_file_compressed_read(pf, (unsigned char*)heat, out_len);
- #ifndef WITH_MANTA
- ptcache_file_compressed_read(pf, (unsigned char*)heatold, out_len);
- #endif
+ ptcache_file_compressed_read(pf, (unsigned char*)heatold, out_len);
}
else
{
@@ -860,29 +817,17 @@ static int ptcache_smoke_read(PTCacheFile *pf, void *smoke_v)
if (sds->fluid) {
size_t res = sds->res[0]*sds->res[1]*sds->res[2];
- float dt, dx, *dens, *react, *fuel, *flame, *heat, *heatold, *manta_inflow, *vx, *vy, *vz, *r, *g, *b;
+ float dt, dx, *dens, *react, *fuel, *flame, *heat, *heatold, *vx, *vy, *
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list