[Bf-blender-cvs] [d69cc7a] fluid-mantaflow: updated manta pp files and new buoyancy function
SebastiaÌ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