[Bf-blender-cvs] [d69cc7a] fluid-mantaflow: updated manta pp files and new buoyancy function

Sebastián Barschkis noreply at git.blender.org
Sun Mar 6 23:50:55 CET 2016


Commit: d69cc7ad061528217e226cb4677d74e3ad96faf2
Author: Sebastián Barschkis
Date:   Sun Mar 6 23:50:06 2016 +0100
Branches: fluid-mantaflow
https://developer.blender.org/rBd69cc7ad061528217e226cb4677d74e3ad96faf2

updated manta pp files and new buoyancy function

===================================================================

M	intern/smoke/intern/MANTA.cpp
M	intern/smoke/intern/scenarios/smoke.h
M	source/blender/python/manta_pp/gitinfo.h
M	source/blender/python/manta_pp/hginfo.h
M	source/blender/python/manta_pp/plugin/extforces.cpp
M	source/blender/python/manta_pp/plugin/fire.cpp

===================================================================

diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index a38d3ee..fb50d40 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -29,9 +29,7 @@ std::string Manta_API::get_real_value( const std::string& varName, SmokeModifier
 	ostringstream ss;
 	bool is2D = smd->domain->fluid->manta_resoution == 2;
 	ModifierData *md = ((ModifierData*) smd);
-	if (varName == "UVS_CNT")
-		ss << smd->domain->manta_uvs_num ;
-	else if (varName == "UPRES")
+	if (varName == "UPRES")
 		ss << smd->domain->amplify;
 	else if (varName == "WLT_STR")
 		ss << smd->domain->strength ;
diff --git a/intern/smoke/intern/scenarios/smoke.h b/intern/smoke/intern/scenarios/smoke.h
index 29fc6d8..60d4da7 100644
--- a/intern/smoke/intern/scenarios/smoke.h
+++ b/intern/smoke/intern/scenarios/smoke.h
@@ -360,8 +360,8 @@ def step_low():\n\
   if using_heat:\n\
     mantaMsg('Adding heat buoyancy')\n\
     gravity=vec3(0,0,-1) if dim==3 else vec3(0,-0.0981,0)\n\
-    addBuoyancy2(flags=flags, grid=density, vel=vel, gravity=gravity, coefficient=$ALPHA$)\n\
-    addBuoyancy2(flags=flags, grid=heat, vel=vel, gravity=gravity, coefficient=$BETA$)\n\
+    addBuoyancy(flags=flags, density=density, vel=vel, gravity=gravity, coefficient=$ALPHA$*(-1))\n\
+    addBuoyancy(flags=flags, density=heat, vel=vel, gravity=gravity, coefficient=$BETA$*(-1))\n\
   else:\n\
     mantaMsg('Adding buoyancy')\n\
     gravity=vec3(0,0,-0.01 * $ALPHA$) if dim==3 else vec3(0,-0.01* $ALPHA$,0)\n\
diff --git a/source/blender/python/manta_pp/gitinfo.h b/source/blender/python/manta_pp/gitinfo.h
index 639e253..6d0959b 100644
--- a/source/blender/python/manta_pp/gitinfo.h
+++ b/source/blender/python/manta_pp/gitinfo.h
@@ -1,4 +1,4 @@
 
 
-#define MANTA_GIT_VERSION "commit c8854f85a0112fa02d4c753d9a99ac5a6e865cc4" 
+#define MANTA_GIT_VERSION "commit 80595ce36496c5a93f85007b0db7286dee539a89" 
 
diff --git a/source/blender/python/manta_pp/hginfo.h b/source/blender/python/manta_pp/hginfo.h
index 9af4eda..0086d8a 100644
--- a/source/blender/python/manta_pp/hginfo.h
+++ b/source/blender/python/manta_pp/hginfo.h
@@ -1,4 +1,4 @@
 
 
-#define MANTA_HG_VERSION "commit cc285481601ca4cba4521b39f7dc84c162118e93" 
+#define MANTA_HG_VERSION "commit 80033e7a5eae9c040d461cdd6f8a0d29d37791ce" 
 
diff --git a/source/blender/python/manta_pp/plugin/extforces.cpp b/source/blender/python/manta_pp/plugin/extforces.cpp
index 2d045de..d7a62ad 100644
--- a/source/blender/python/manta_pp/plugin/extforces.cpp
+++ b/source/blender/python/manta_pp/plugin/extforces.cpp
@@ -88,72 +88,33 @@ void addGravity(FlagGrid& flags, MACGrid& vel, Vec3 gravity) {
 	KnAddForce(flags, vel, f);
 } static PyObject* _W_0 (PyObject* _self, PyObject* _linargs, PyObject* _kwds) { try { PbArgs _args(_linargs, _kwds); FluidSolver *parent = _args.obtainParent(); pbPreparePlugin(parent, "addGravity" ); PyObject *_retval = 0; { ArgLocker _lock; FlagGrid& flags = *_args.getPtr<FlagGrid >("flags",0,&_lock); MACGrid& vel = *_args.getPtr<MACGrid >("vel",1,&_lock); Vec3 gravity = _args.get<Vec3 >("gravity",2,&_lock);   _retval = getPyNone(); addGravity(flags,vel,gravity);  _args.check(); } pbF [...]
 
-//! add Buoyancy force based on smoke density
- struct KnAddBuoyancy : public KernelBase { KnAddBuoyancy(FlagGrid& flags, Grid<Real>& density, MACGrid& vel, Vec3 strength) :  KernelBase(&flags,1) ,flags(flags),density(density),vel(vel),strength(strength)   { run(); }  inline void op(int i, int j, int k, FlagGrid& flags, Grid<Real>& density, MACGrid& vel, Vec3 strength )  {    
+//! kernel to add Buoyancy force 
+ struct KnAddBuoyancy : public KernelBase { KnAddBuoyancy(FlagGrid& flags, Grid<Real>& factor, MACGrid& vel, Vec3 strength) :  KernelBase(&flags,1) ,flags(flags),factor(factor),vel(vel),strength(strength)   { run(); }  inline void op(int i, int j, int k, FlagGrid& flags, Grid<Real>& factor, MACGrid& vel, Vec3 strength )  {    
 	if (!flags.isFluid(i,j,k)) return;
 	if (flags.isFluid(i-1,j,k))
-		vel(i,j,k).x += (0.5 * strength.x) * (density(i,j,k)+density(i-1,j,k));
+		vel(i,j,k).x += (0.5 * strength.x) * (factor(i,j,k)+factor(i-1,j,k));
 	if (flags.isFluid(i,j-1,k))
-		vel(i,j,k).y += (0.5 * strength.y) * (density(i,j,k)+density(i,j-1,k));
+		vel(i,j,k).y += (0.5 * strength.y) * (factor(i,j,k)+factor(i,j-1,k));
 	if (vel.is3D() && flags.isFluid(i,j,k-1))
-		vel(i,j,k).z += (0.5 * strength.z) * (density(i,j,k)+density(i,j,k-1));    
-}   inline FlagGrid& getArg0() { return flags; } typedef FlagGrid type0;inline Grid<Real>& getArg1() { return density; } typedef Grid<Real> type1;inline MACGrid& getArg2() { return vel; } typedef MACGrid type2;inline Vec3& getArg3() { return strength; } typedef Vec3 type3; void run() {  const int _maxX = maxX; const int _maxY = maxY; if (maxZ > 1) { 
+		vel(i,j,k).z += (0.5 * strength.z) * (factor(i,j,k)+factor(i,j,k-1));    
+}   inline FlagGrid& getArg0() { return flags; } typedef FlagGrid type0;inline Grid<Real>& getArg1() { return factor; } typedef Grid<Real> type1;inline MACGrid& getArg2() { return vel; } typedef MACGrid type2;inline Vec3& getArg3() { return strength; } typedef Vec3 type3; void run() {  const int _maxX = maxX; const int _maxY = maxY; if (maxZ > 1) { 
 #pragma omp parallel 
  { this->threadId = omp_get_thread_num(); this->threadNum = omp_get_num_threads();  
 #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,flags,density,vel,strength);  } } else { const int k=0; 
+  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,flags,factor,vel,strength);  } } else { const int k=0; 
 #pragma omp parallel 
  { this->threadId = omp_get_thread_num(); this->threadNum = omp_get_num_threads();  
 #pragma omp for 
-  for (int j=1; j < _maxY; j++) for (int i=1; i < _maxX; i++) op(i,j,k,flags,density,vel,strength);  } }  } FlagGrid& flags; Grid<Real>& density; MACGrid& vel; Vec3 strength;   };
+  for (int j=1; j < _maxY; j++) for (int i=1; i < _maxX; i++) op(i,j,k,flags,factor,vel,strength);  } }  } FlagGrid& flags; Grid<Real>& factor; MACGrid& vel; Vec3 strength;   };
 #line 58 "plugin/extforces.cpp"
 
 
 
-//! add Buoyancy force based on smoke density
-void addBuoyancy(FlagGrid& flags, Grid<Real>& density, MACGrid& vel, Vec3 gravity) {
-	Vec3 f = - gravity * flags.getParent()->getDt() / flags.getParent()->getDx();
+//! add Buoyancy force based on fctor (e.g. smoke density)
+void addBuoyancy(FlagGrid& flags, Grid<Real>& density, MACGrid& vel, Vec3 gravity, Real coefficient=1.) {
+	Vec3 f = -gravity * flags.getParent()->getDt() / flags.getParent()->getDx() * coefficient;
 	KnAddBuoyancy(flags,density, vel, f);
-} static PyObject* _W_1 (PyObject* _self, PyObject* _linargs, PyObject* _kwds) { try { PbArgs _args(_linargs, _kwds); FluidSolver *parent = _args.obtainParent(); pbPreparePlugin(parent, "addBuoyancy" ); PyObject *_retval = 0; { ArgLocker _lock; FlagGrid& flags = *_args.getPtr<FlagGrid >("flags",0,&_lock); Grid<Real>& density = *_args.getPtr<Grid<Real> >("density",1,&_lock); MACGrid& vel = *_args.getPtr<MACGrid >("vel",2,&_lock); Vec3 gravity = _args.get<Vec3 >("gravity",3,&_lock);   _ret [...]
-
-//! add Buoyancy force based on smoke density
-//KERNEL(bnd=1) void KnAddHeatBuoyancy(FlagGrid& flags, Grid<Real>& density, float densCoeff, MACGrid& vel, Vec3 strength, Grid<Real>& heat, float heatCoeff) {    
-//	if (!flags.isFluid(i,j,k)) return;
-//	vel(i,j,k).x += (strength.x) * (densCoeff * density(i,j,k) - heatCoeff * heat(i,j,k));
-//	vel(i,j,k).y += (strength.y) * (densCoeff * density(i,j,k) - heatCoeff * heat(i,j,k));
-//	vel(i,j,k).z += (strength.z) * (densCoeff * density(i,j,k) - heatCoeff * heat(i,j,k));    
-//}
-//
-////! add Buoyancy force based on smoke density
-//PYTHON() void addHeatBuoyancy(FlagGrid& flags, Grid<Real>& density, float densCoeff, MACGrid& vel, Vec3 gravity, Grid<Real>& heat, float heatCoeff) {
-//	Vec3 f = - gravity * flags.getParent()->getDt() / flags.getParent()->getDx();
-//	KnAddHeatBuoyancy(flags,density,densCoeff, vel, f, heat, heatCoeff);
-//}
-
-//! add Buoyancy force based on coeffiecient
- struct KnAddBuoyancy2 : public KernelBase { KnAddBuoyancy2(FlagGrid& flags, Grid<Real>& grid, MACGrid& vel, Vec3 strength, Real coefficient) :  KernelBase(&flags,1) ,flags(flags),grid(grid),vel(vel),strength(strength),coefficient(coefficient)   { run(); }  inline void op(int i, int j, int k, FlagGrid& flags, Grid<Real>& grid, MACGrid& vel, Vec3 strength, Real coefficient )  {
-	if (!flags.isFluid(i,j,k)) return;
-	vel(i,j,k).x -= (strength.x) * coefficient * grid(i,j,k);
-	vel(i,j,k).y -= (strength.y) * coefficient * grid(i,j,k);
-	vel(i,j,k).z -= (strength.z) * coefficient * grid(i,j,k);
-}   inline FlagGrid& getArg0() { return flags; } typedef FlagGrid type0;inline Grid<Real>& getArg1() { return grid; } typedef Grid<Real> type1;inline MACGrid& getArg2() { return vel; } typedef MACGrid type2;inline Vec3& getArg3() { return strength; } typedef Vec3 type3;inline Real& getArg4() { return coefficient; } typedef Real type4; void run() {  const int _maxX = maxX; const int _maxY = maxY; if (maxZ > 1) { 
-#pragma omp parallel 
- { this->threadId = omp_get_thread_num(); this->threadNum = omp_get_num_threads();  
-#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,flags,grid,vel,strength,coefficient);  } } else { const int k=0; 
-#pragma omp parallel 
- { this->threadId = omp_get_thread_num(); this->threadNum = omp_get_num_threads();  
-#pragma omp for 
-  for (int j=1; j < _maxY; j++) for (int i=1; i < _maxX; i++) op(i,j,k,flags,grid,vel,strength,coefficient);  } }  } FlagGrid& flags; Grid<Real>& grid; MACGrid& vel; Vec3 strength

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list