Commit: cc802e66d7ffa4a00901dad28504e816093aa06b
Author: Sebastián Barschkis
Date:   Tue Nov 6 14:22:12 2018 +0100
Branches: fluid-mantaflow
https://developer.blender.org/rBcc802e66d7ffa4a00901dad28504e816093aa06b

Mantaflow: Updated Manta pp files

includes critical fix for outflow at domain borders and fixes crash when using 
secondary particles with open domain borders

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

M       intern/mantaflow/intern/manta_pp/omp/fastmarch.cpp
M       intern/mantaflow/intern/manta_pp/omp/gitinfo.h
M       intern/mantaflow/intern/manta_pp/omp/plugin/secondaryparticles.cpp
M       intern/mantaflow/intern/manta_pp/tbb/fastmarch.cpp
M       intern/mantaflow/intern/manta_pp/tbb/gitinfo.h
M       intern/mantaflow/intern/manta_pp/tbb/plugin/secondaryparticles.cpp

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

diff --git a/intern/mantaflow/intern/manta_pp/omp/fastmarch.cpp 
b/intern/mantaflow/intern/manta_pp/omp/fastmarch.cpp
index b6728baa47d..d1bf48acda4 100644
--- a/intern/mantaflow/intern/manta_pp/omp/fastmarch.cpp
+++ b/intern/mantaflow/intern/manta_pp/omp/fastmarch.cpp
@@ -285,35 +285,36 @@ template class FastMarch<FmHeapEntryOut, +1>;
  struct knExtrapolateIntoBnd : public KernelBase { 
knExtrapolateIntoBnd(FlagGrid& flags, MACGrid& vel, const MACGrid& velTmp) :  
KernelBase(&flags,0) ,flags(flags),vel(vel),velTmp(velTmp)   { runMessage(); 
run(); }  inline void op(int i, int j, int k, FlagGrid& flags, MACGrid& vel, 
const MACGrid& velTmp )  {
        int c=0;
        Vec3 v(0,0,0);
+       const bool isObs = flags.isObstacle(i,j,k);
        if( i==0 ) { 
                v = velTmp(i+1,j,k);
-               if(v[0] < 0.) v[0] = 0.;
+               if(isObs && v[0] < 0.) v[0] = 0.;
                c++;
        }
        else if( i==(flags.getSizeX()-1) ) { 
                v = velTmp(i-1,j,k);
-               if(v[0] > 0.) v[0] = 0.;
+               if(isObs && v[0] > 0.) v[0] = 0.;
                c++;
        }
        if( j==0 ) { 
                v = velTmp(i,j+1,k);
-               if(v[1] < 0.) v[1] = 0.;
+               if(isObs && v[1] < 0.) v[1] = 0.;
                c++;
        }
        else if( j==(flags.getSizeY()-1) ) { 
                v = velTmp(i,j-1,k);
-               if(v[1] > 0.) v[1] = 0.;
+               if(isObs && v[1] > 0.) v[1] = 0.;
                c++;
        }
        if(flags.is3D()) {
        if( k==0 ) { 
                v = velTmp(i,j,k+1);
-               if(v[2] < 0.) v[2] = 0.;
+               if(isObs && v[2] < 0.) v[2] = 0.;
                c++;
        }
        else if( k==(flags.getSizeZ()-1) ) { 
                v = velTmp(i,j,k-1);
-               if(v[2] > 0.) v[2] = 0.;
+               if(isObs && v[2] > 0.) v[2] = 0.;
                c++;
        } }
        if(c>0) {
@@ -371,7 +372,7 @@ inline Vec3 getNormal(const Grid<Real>& data, int i, int j, 
int k) {
  {  
 #pragma omp for  
   for (int j=1; j < _maxY; j++) for (int i=1; i < _maxX; i++) 
op(i,j,k,flags,vel,phi,maxDist);  } }  } FlagGrid& flags; MACGrid& vel; 
Grid<Real>& phi; Real maxDist;   };
-#line 320 "fastmarch.cpp"
+#line 321 "fastmarch.cpp"
 
 
 // a simple extrapolation step , used for cases where there's no levelset
@@ -453,7 +454,7 @@ void extrapolateMACSimple(FlagGrid& flags, MACGrid& vel, 
int distance = 4, Level
  {  
 #pragma omp for  
   for (int j=1; j < _maxY; j++) for (int i=1; i < _maxX; i++) 
op(i,j,k,vel,weight,distance,d,c);  } }  } MACGrid& vel; Grid<Vec3>& weight; 
int distance; const int d; const int c;   };
-#line 378 "fastmarch.cpp"
+#line 379 "fastmarch.cpp"
 
 
 
@@ -521,7 +522,7 @@ template <class S>  struct knExtrapolateLsSimple : public 
KernelBase { knExtrapo
  {  
 #pragma omp for  
   for (int j=1; j < _maxY; j++) for (int i=1; i < _maxX; i++) 
op(i,j,k,val,distance,tmp,d,direction);  } }  } Grid<S>& val; int distance; 
Grid<int>& tmp; const int d; S direction;   };
-#line 440 "fastmarch.cpp"
+#line 441 "fastmarch.cpp"
 
 
 
@@ -540,7 +541,7 @@ template <class S>  struct knSetRemaining : public 
KernelBase { knSetRemaining(G
  {  
 #pragma omp for  
   for (int j=1; j < _maxY; j++) for (int i=1; i < _maxX; i++) 
op(i,j,k,phi,tmp,distance);  } }  } Grid<S>& phi; Grid<int>& tmp; S distance;   
};
-#line 464 "fastmarch.cpp"
+#line 465 "fastmarch.cpp"
 
 
 
diff --git a/intern/mantaflow/intern/manta_pp/omp/gitinfo.h 
b/intern/mantaflow/intern/manta_pp/omp/gitinfo.h
index 424ffce8b64..6c084784181 100644
--- a/intern/mantaflow/intern/manta_pp/omp/gitinfo.h
+++ b/intern/mantaflow/intern/manta_pp/omp/gitinfo.h
@@ -1,4 +1,4 @@
 
 
-#define MANTA_GIT_VERSION "commit 8e23cb91208a217e4fbcbfbc8e58fb8344fd0f23" 
+#define MANTA_GIT_VERSION "commit a33d3ecd1aa0edc16ab7ffc610f30f52a258dc1a" 
 
diff --git a/intern/mantaflow/intern/manta_pp/omp/plugin/secondaryparticles.cpp 
b/intern/mantaflow/intern/manta_pp/omp/plugin/secondaryparticles.cpp
index 0954f2340e4..10e7c138754 100644
--- a/intern/mantaflow/intern/manta_pp/omp/plugin/secondaryparticles.cpp
+++ b/intern/mantaflow/intern/manta_pp/omp/plugin/secondaryparticles.cpp
@@ -44,7 +44,7 @@ Real clampPotential(Real potential, Real tauMin, Real tauMax) 
{
 
 
 
- struct knFlipComputeSecondaryParticlePotentials : public KernelBase { 
knFlipComputeSecondaryParticlePotentials( Grid<Real> &potTA, Grid<Real> &potWC, 
Grid<Real> &potKE, Grid<Real> &neighborRatio, const FlagGrid &flags, const 
MACGrid &v, const Grid<Vec3> &normal, const int radius, const Real tauMinTA, 
const Real tauMaxTA, const Real tauMinWC, const Real tauMaxWC, const Real 
tauMinKE, const Real tauMaxKE, const Real scaleFromManta, const int itype = 
FlagGrid::TypeFluid, const int jtype =  [...]
+ struct knFlipComputeSecondaryParticlePotentials : public KernelBase { 
knFlipComputeSecondaryParticlePotentials( Grid<Real> &potTA, Grid<Real> &potWC, 
Grid<Real> &potKE, Grid<Real> &neighborRatio, const FlagGrid &flags, const 
MACGrid &v, const Grid<Vec3> &normal, const int radius, const Real tauMinTA, 
const Real tauMaxTA, const Real tauMinWC, const Real tauMaxWC, const Real 
tauMinKE, const Real tauMaxKE, const Real scaleFromManta, const int itype = 
FlagGrid::TypeFluid, const int jtype =  [...]
 
        if (!(flags(i, j, k) & itype)) return;
 
@@ -115,14 +115,14 @@ Real clampPotential(Real potential, Real tauMin, Real 
tauMax) {
 
 
 
-void flipComputeSecondaryParticlePotentials( Grid<Real> &potTA, Grid<Real> 
&potWC, Grid<Real> &potKE, Grid<Real> &neighborRatio, const FlagGrid &flags, 
const MACGrid &v, Grid<Vec3>& normal, const Grid<Real>& phi, const int radius, 
const Real tauMinTA, const Real tauMaxTA, const Real tauMinWC, const Real 
tauMaxWC, const Real tauMinKE, const Real tauMaxKE, const Real scaleFromManta, 
const int itype = FlagGrid::TypeFluid, const int jtype = 
FlagGrid::TypeObstacle) {
+void flipComputeSecondaryParticlePotentials( Grid<Real> &potTA, Grid<Real> 
&potWC, Grid<Real> &potKE, Grid<Real> &neighborRatio, const FlagGrid &flags, 
const MACGrid &v, Grid<Vec3>& normal, const Grid<Real>& phi, const int radius, 
const Real tauMinTA, const Real tauMaxTA, const Real tauMinWC, const Real 
tauMaxWC, const Real tauMinKE, const Real tauMaxKE, const Real scaleFromManta, 
const int itype = FlagGrid::TypeFluid, const int jtype = FlagGrid::TypeObstacle 
| FlagGrid::TypeOutflow | Fl [...]
        potTA.clear();
        potWC.clear();
        potKE.clear();
        neighborRatio.clear();
        GradientOp(normal, phi);
        knFlipComputeSecondaryParticlePotentials(potTA, potWC, potKE, 
neighborRatio, flags, v, normal, radius, tauMinTA, tauMaxTA, tauMinWC, 
tauMaxWC, tauMinKE, tauMaxKE, scaleFromManta, itype, jtype);
-} static PyObject* _W_0 (PyObject* _self, PyObject* _linargs, PyObject* _kwds) 
{ try { PbArgs _args(_linargs, _kwds); FluidSolver *parent = 
_args.obtainParent(); bool noTiming = _args.getOpt<bool>("notiming", -1, 0); 
pbPreparePlugin(parent, "flipComputeSecondaryParticlePotentials" , !noTiming ); 
PyObject *_retval = 0; { ArgLocker _lock; Grid<Real> & potTA = 
*_args.getPtr<Grid<Real>  >("potTA",0,&_lock); Grid<Real> & potWC = 
*_args.getPtr<Grid<Real>  >("potWC",1,&_lock); Grid<Real> & potK [...]
+} static Py

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to