[Bf-blender-cvs] [82d75a46ce3] fluid-mantaflow: Mantaflow: Fixed issues raised in part 2 of the review (D3851)

Sebastián Barschkis noreply at git.blender.org
Tue Dec 10 18:25:40 CET 2019


Commit: 82d75a46ce37ddd6276e2cc811fdfd30aaf755fc
Author: Sebastián Barschkis
Date:   Tue Dec 10 18:25:17 2019 +0100
Branches: fluid-mantaflow
https://developer.blender.org/rB82d75a46ce37ddd6276e2cc811fdfd30aaf755fc

Mantaflow: Fixed issues raised in part 2 of the review (D3851)

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

M	CMakeLists.txt
M	extern/mantaflow/CMakeLists.txt
M	intern/mantaflow/CMakeLists.txt
M	intern/mantaflow/extern/manta_python_API.h
M	intern/mantaflow/intern/MANTA_main.h
M	intern/mantaflow/intern/manta_fluid_API.cpp
M	intern/mantaflow/intern/manta_python_API.cpp
M	source/blender/blenkernel/intern/manta.c

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

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6959f0e15ae..444366c4736 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -313,7 +313,6 @@ endif()
 
 # Modifiers
 option(WITH_MOD_MANTA           "Enable Mantaflow Fluid Simulation Framework" ON)
-option(WITH_MANTA_OMP           "Enable Mantaflow OpenMP support (instead of default TBB support)" OFF)
 option(WITH_MOD_REMESH          "Enable Remesh Modifier" ON)
 option(WITH_MOD_OCEANSIM        "Enable Ocean Modifier" OFF)
 
@@ -1262,13 +1261,6 @@ if(WITH_PYTHON_MODULE)
   add_definitions(-DPy_ENABLE_SHARED)
 endif()
 
-#-----------------------------------------------------------------------------
-# Configure mantaflow.
-
-if(WITH_MOD_MANTA)
-  add_definitions(-DWITH_MANTA)
-endif()
-
 #-----------------------------------------------------------------------------
 # Configure GLog/GFlags
 
diff --git a/extern/mantaflow/CMakeLists.txt b/extern/mantaflow/CMakeLists.txt
index a667eb114fc..3bad53afc6c 100644
--- a/extern/mantaflow/CMakeLists.txt
+++ b/extern/mantaflow/CMakeLists.txt
@@ -25,6 +25,8 @@
 
 set(MANTAVERSION "0.12")
 
+add_definitions(-DWITH_MANTA=1)
+
 set(MANTA_DEP
   dependencies
 )
@@ -35,9 +37,7 @@ set(MANTA_PP
   preprocessed
 )
 
-if(WITH_OPENMP AND WITH_MANTA_OMP)
-  add_definitions(-DOPENMP=1)
-else()
+if(WITH_TBB)
   add_definitions(-DTBB=1)
 endif()
 
@@ -60,7 +60,7 @@ set(INC_SYS
   ${ZLIB_INCLUDE_DIRS}
 )
 
-if(NOT WITH_OPENMP OR NOT WITH_MANTA_OMP)
+if(WITH_TBB)
   list(APPEND INC_SYS
     ${TBB_INCLUDE_DIRS}
   )
diff --git a/intern/mantaflow/CMakeLists.txt b/intern/mantaflow/CMakeLists.txt
index ff42efd8a4c..b40319188a2 100644
--- a/intern/mantaflow/CMakeLists.txt
+++ b/intern/mantaflow/CMakeLists.txt
@@ -23,12 +23,7 @@
 #
 # ***** END GPL LICENSE BLOCK *****
 
-
-if(WITH_OPENMP AND WITH_MANTA_OMP)
-  add_definitions(-DOPENMP=1)
-else()
-  add_definitions(-DTBB=1)
-endif()
+add_definitions(-DWITH_MANTA=1)
 
 if(WITH_OPENVDB)
   add_definitions(-DOPENVDB=1)
diff --git a/intern/mantaflow/extern/manta_python_API.h b/intern/mantaflow/extern/manta_python_API.h
index 2b250f2658a..9ed795bedaf 100644
--- a/intern/mantaflow/extern/manta_python_API.h
+++ b/intern/mantaflow/extern/manta_python_API.h
@@ -30,6 +30,8 @@
 #ifndef MANTA_PYTHON_API_H
 #define MANTA_PYTHON_API_H
 
+#include "Python.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/intern/mantaflow/intern/MANTA_main.h b/intern/mantaflow/intern/MANTA_main.h
index 7188e803b6f..db929758583 100644
--- a/intern/mantaflow/intern/MANTA_main.h
+++ b/intern/mantaflow/intern/MANTA_main.h
@@ -33,6 +33,7 @@
 #include <string>
 #include <vector>
 #include <atomic>
+#include <cassert>
 
 struct MANTA {
  public:
@@ -416,174 +417,246 @@ struct MANTA {
 
   inline float getVertexXAt(int i)
   {
-    return (mMeshNodes && !mMeshNodes->empty() && mMeshNodes->size() > i) ?
-               mMeshNodes->at(i).pos[0] :
-               0.f;
+    assert(i >= 0);
+    if (mMeshNodes && !mMeshNodes->empty()) {
+      assert(i < mMeshNodes->size());
+      return (*mMeshNodes)[i].pos[0];
+    }
+    return 0.0f;
   }
   inline float getVertexYAt(int i)
   {
-    return (mMeshNodes && !mMeshNodes->empty() && mMeshNodes->size() > i) ?
-               mMeshNodes->at(i).pos[1] :
-               0.f;
+    assert(i >= 0);
+    if (mMeshNodes && !mMeshNodes->empty()) {
+      assert(i < mMeshNodes->size());
+      return (*mMeshNodes)[i].pos[1];
+    }
+    return 0.0f;
   }
   inline float getVertexZAt(int i)
   {
-    return (mMeshNodes && !mMeshNodes->empty() && mMeshNodes->size() > i) ?
-               mMeshNodes->at(i).pos[2] :
-               0.f;
+    assert(i >= 0);
+    if (mMeshNodes && !mMeshNodes->empty()) {
+      assert(i < mMeshNodes->size());
+      return (*mMeshNodes)[i].pos[2];
+    }
+    return 0.0f;
   }
 
   inline float getNormalXAt(int i)
   {
-    return (mMeshNodes && !mMeshNodes->empty() && mMeshNodes->size() > i) ?
-               mMeshNodes->at(i).normal[0] :
-               0.f;
+    assert(i >= 0);
+    if (mMeshNodes && !mMeshNodes->empty()) {
+      assert(i < mMeshNodes->size());
+      return (*mMeshNodes)[i].normal[0];
+    }
+    return 0.0f;
   }
   inline float getNormalYAt(int i)
   {
-    return (mMeshNodes && !mMeshNodes->empty() && mMeshNodes->size() > i) ?
-               mMeshNodes->at(i).normal[1] :
-               0.f;
+    assert(i >= 0);
+    if (mMeshNodes && !mMeshNodes->empty()) {
+      assert(i < mMeshNodes->size());
+      return (*mMeshNodes)[i].normal[1];
+    }
+    return 0.0f;
   }
   inline float getNormalZAt(int i)
   {
-    return (mMeshNodes && !mMeshNodes->empty() && mMeshNodes->size() > i) ?
-               mMeshNodes->at(i).normal[2] :
-               0.f;
+    assert(i >= 0);
+    if (mMeshNodes && !mMeshNodes->empty()) {
+      assert(i < mMeshNodes->size());
+      return (*mMeshNodes)[i].normal[2];
+    }
+    return 0.0f;
   }
 
   inline int getTriangleXAt(int i)
   {
-    return (mMeshTriangles && !mMeshTriangles->empty() && mMeshTriangles->size() > i) ?
-               mMeshTriangles->at(i).c[0] :
-               0;
+    assert(i >= 0);
+    if (mMeshTriangles && !mMeshTriangles->empty()) {
+      assert(i < mMeshTriangles->size());
+      return (*mMeshTriangles)[i].c[0];
+    }
+    return 0;
   }
   inline int getTriangleYAt(int i)
   {
-    return (mMeshTriangles && !mMeshTriangles->empty() && mMeshTriangles->size() > i) ?
-               mMeshTriangles->at(i).c[1] :
-               0;
+    assert(i >= 0);
+    if (mMeshTriangles && !mMeshTriangles->empty()) {
+      assert(i < mMeshTriangles->size());
+      return (*mMeshTriangles)[i].c[1];
+    }
+    return 0;
   }
   inline int getTriangleZAt(int i)
   {
-    return (mMeshTriangles && !mMeshTriangles->empty() && mMeshTriangles->size() > i) ?
-               mMeshTriangles->at(i).c[2] :
-               0;
+    assert(i >= 0);
+    if (mMeshTriangles && !mMeshTriangles->empty()) {
+      assert(i < mMeshTriangles->size());
+      return (*mMeshTriangles)[i].c[2];
+    }
+    return 0;
   }
 
   inline float getVertVelXAt(int i)
   {
-    return (mMeshVelocities && !mMeshVelocities->empty() && mMeshVelocities->size() > i) ?
-               mMeshVelocities->at(i).pos[0] :
-               0.f;
+    assert(i >= 0);
+    if (mMeshVelocities && !mMeshVelocities->empty()) {
+      assert(i < mMeshVelocities->size());
+      return (*mMeshVelocities)[i].pos[0];
+    }
+    return 0.0f;
   }
   inline float getVertVelYAt(int i)
   {
-    return (mMeshVelocities && !mMeshVelocities->empty() && mMeshVelocities->size() > i) ?
-               mMeshVelocities->at(i).pos[1] :
-               0.f;
+    assert(i >= 0);
+    if (mMeshVelocities && !mMeshVelocities->empty()) {
+      assert(i < mMeshVelocities->size());
+      return (*mMeshVelocities)[i].pos[1];
+    }
+    return 0.0f;
   }
   inline float getVertVelZAt(int i)
   {
-    return (mMeshVelocities && !mMeshVelocities->empty() && mMeshVelocities->size() > i) ?
-               mMeshVelocities->at(i).pos[2] :
-               0.f;
+    assert(i >= 0);
+    if (mMeshVelocities && !mMeshVelocities->empty()) {
+      assert(i < mMeshVelocities->size());
+      return (*mMeshVelocities)[i].pos[2];
+    }
+    return 0.0f;
   }
 
   // Particle getters
   inline int getFlipParticleFlagAt(int i)
   {
-    return (mFlipParticleData && !mFlipParticleData->empty() && mFlipParticleData->size() > i) ?
-               ((std::vector<pData> *)mFlipParticleData)->at(i).flag :
-               0;
+    assert(i >= 0);
+    if (mFlipParticleData && !mFlipParticleData->empty()) {
+      assert(i < mFlipParticleData->size());
+      return (*mFlipParticleData)[i].flag;
+    }
+    return 0;
   }
   inline int getSndParticleFlagAt(int i)
   {
-    return (mSndParticleData && !mSndParticleData->empty() && mSndParticleData->size() > i) ?
-               ((std::vector<pData> *)mSndParticleData)->at(i).flag :
-               0;
+    assert(i >= 0);
+    if (mSndParticleData && !mSndParticleData->empty()) {
+      assert(i < mSndParticleData->size());
+      return (*mSndParticleData)[i].flag;
+    }
+    return 0;
   }
 
   inline float getFlipParticlePositionXAt(int i)
   {
-    return (mFlipParticleData && !mFlipParticleData->empty() && mFlipParticleData->size() > i) ?
-               mFlipParticleData->at(i).pos[0] :
-               0.f;
+    assert(i >= 0);
+    if (mFlipParticleData && !mFlipParticleData->empty()) {
+      assert(i < mFlipParticleData->size());
+      return (*mFlipParticleData)[i].pos[0];
+    }
+    return 0.0f;
   }
   inline float getFlipParticlePositionYAt(int i)
   {
-    return (mFlipParticleData && !mFlipParticleData->empty() && mFlipParticleData->size() > i) ?
-               mFlipParticleData->at(i).pos[1] :
-               0.f;
+    assert(i >= 0);
+    if (mFlipParticleData && !mFlipParticleData->empty()) {
+      assert(i < mFlipParticleData->size());
+      return (*mFlipParticleData)[i].pos[1];
+    }
+    return 0.0f;
   }
   inline float getFlipParticlePositionZAt(int i)
   {
-    return (mFlipParticleData && !mFlipParticleData->empty() && mFlipParticleData->size() > i) ?
-               mFlipParticleData->at(i).pos[2] :
-               0.f;
+    assert(i >= 0);
+    if (mFlipParticleData && !mFlipParticleData->empty()) {
+      assert(i < mFlipParticleData->size());
+      return (*mFlipParticleData)[i].pos[2];
+    }
+    return 0.0f;
   }
 
   inline float getSndParticlePositionXAt(int i)
   {
-    return (mSndParticleData && !mSndParticleData->empty() && mSndParticleData->size() > i) ?
-               mSndParticleData->at(i).pos[0] :
-               0.f;
+    assert(i >= 0);
+    if (mSndParticleData && !mSndParticleData->empty()) {
+      assert(i < mSndParticleData->size());
+      return (*mSndParticleData)[i].pos[0];
+    }
+    return 0.0f;
   }
   inline float getSndParticlePositionYAt(int i)
   {
-    return (mSndParticleData && !mSndParticleData->empty() && mSndParticleData->size() > i) ?
-               mSndParticleData->at(i).pos[1] :
-               0.f;
+    assert(i >= 0);
+    if (mSndParticleData && !mSndParticleData->empty()) {
+      assert(i < mSndParticleData->size());
+      return (*mSndParticleData)[i].pos[1];
+    }
+    return 0.0

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list