[Bf-blender-cvs] [37ae8d65fa9] fluid-mantaflow: Mantaflow: Cleaned up pointer exchange

Sebastián Barschkis noreply at git.blender.org
Tue Nov 26 22:02:29 CET 2019


Commit: 37ae8d65fa940bc49ed75a7706bd7dde5066fd2d
Author: Sebastián Barschkis
Date:   Tue Nov 26 21:41:07 2019 +0100
Branches: fluid-mantaflow
https://developer.blender.org/rB37ae8d65fa940bc49ed75a7706bd7dde5066fd2d

Mantaflow: Cleaned up pointer exchange

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

M	intern/mantaflow/intern/MANTA_main.cpp
M	intern/mantaflow/intern/MANTA_main.h

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

diff --git a/intern/mantaflow/intern/MANTA_main.cpp b/intern/mantaflow/intern/MANTA_main.cpp
index 9d60fb900f4..13ebfe34c1b 100644
--- a/intern/mantaflow/intern/MANTA_main.cpp
+++ b/intern/mantaflow/intern/MANTA_main.cpp
@@ -212,8 +212,6 @@ MANTA::MANTA(int *res, MantaModifierData *mmd) : mCurrentID(++solverID)
     if (mUsingFractions) {
       initFractions(mmd);
     }
-    updatePointers();
-    return;
   }
 
   // Smoke
@@ -253,8 +251,8 @@ MANTA::MANTA(int *res, MantaModifierData *mmd) : mCurrentID(++solverID)
       if (mUsingColors)
         initColorsHigh(mmd);
     }
-    updatePointers();
   }
+  updatePointers();
 }
 
 void MANTA::initDomain(MantaModifierData *mmd)
@@ -1385,7 +1383,6 @@ int MANTA::readData(MantaModifierData *mmd, int framenr)
     pythonCommands.push_back(ss.str());
   }
   runPythonString(pythonCommands);
-  updatePointers();
   return 1;
 }
 
@@ -1428,7 +1425,6 @@ int MANTA::readNoise(MantaModifierData *mmd, int framenr)
     pythonCommands.push_back(ss.str());
   }
   runPythonString(pythonCommands);
-  updatePointers();
   return 1;
 }
 
@@ -1478,7 +1474,6 @@ int MANTA::readMesh(MantaModifierData *mmd, int framenr)
     }
   }
   runPythonString(pythonCommands);
-  updatePointers();
   return 1;
 }
 
@@ -1525,7 +1520,6 @@ int MANTA::readParticles(MantaModifierData *mmd, int framenr)
     pythonCommands.push_back(ss.str());
   }
   runPythonString(pythonCommands);
-  updatePointers();
   return 1;
 }
 
@@ -1574,7 +1568,6 @@ int MANTA::readGuiding(MantaModifierData *mmd, int framenr, bool sourceDomain)
   pythonCommands.push_back(ss.str());
 
   runPythonString(pythonCommands);
-  updatePointers();
   return 1;
 }
 
@@ -2019,17 +2012,23 @@ static PyObject *callPythonFunction(std::string varName,
   PyGILState_STATE gilstate = PyGILState_Ensure();
   PyObject *main = NULL, *var = NULL, *func = NULL, *returnedValue = NULL;
 
+  /* Be sure to initialise Python before importing main. */
+  Py_Initialize();
+
   // Get pyobject that holds result value
   main = PyImport_ImportModule("__main__");
-  if (!main) return NULL;
+  if (!main)
+    return NULL;
 
   var = PyObject_GetAttrString(main, varName.c_str());
-  if (!var) return NULL;
+  if (!var)
+    return NULL;
 
   func = PyObject_GetAttrString(var, functionName.c_str());
 
   Py_DECREF(var);
-  if (!func) return NULL;
+  if (!func)
+    return NULL;
 
   if (!isAttribute) {
     returnedValue = PyObject_CallObject(func, NULL);
@@ -2491,12 +2490,17 @@ void MANTA::setPointers(std::vector<std::tuple<T **, std::string, std::string, b
 {
   PyObject *mantaObject = NULL;
 
-  for (typename std::vector<std::tuple<T **, std::string, std::string, bool>>::iterator it = objects.begin(); it != objects.end(); ++it) {
-    if (!std::get<3>(*it)) continue;
+  for (typename std::vector<std::tuple<T **, std::string, std::string, bool>>::iterator it =
+           objects.begin();
+       it != objects.end();
+       ++it) {
+    if (!std::get<3>(*it))
+      continue;
     mantaObject = callPythonFunction(std::get<1>(*it), std::get<2>(*it));
     if (mantaObject) {
       (*std::get<0>(*it)) = (T *)stringToPointer(pyObjectToString(mantaObject));
-    } else {
+    }
+    else {
       (*std::get<0>(*it)) = NULL;
     }
   }
@@ -2527,8 +2531,10 @@ void MANTA::updatePointers()
 
   std::vector<std::tuple<int **, std::string, std::string, bool>> mantaIntObjects;
   mantaIntObjects.push_back(std::make_tuple(&mObstacle, "flags" + solver_ext, func, true));
-  mantaIntObjects.push_back(std::make_tuple(&mNumObstacle, "numObs" + solver_ext, func, mUsingObstacle));
-  mantaIntObjects.push_back(std::make_tuple(&mNumGuide, "numGuides" + solver_ext, func, mUsingGuiding));
+  mantaIntObjects.push_back(
+      std::make_tuple(&mNumObstacle, "numObs" + solver_ext, func, mUsingObstacle));
+  mantaIntObjects.push_back(
+      std::make_tuple(&mNumGuide, "numGuides" + solver_ext, func, mUsingGuiding));
 
   std::vector<std::tuple<float **, std::string, std::string, bool>> mantaFloatObjects;
   mantaFloatObjects.push_back(std::make_tuple(&mPhiIn, "phiIn" + solver_ext, func, true));
@@ -2538,71 +2544,130 @@ void MANTA::updatePointers()
   mantaFloatObjects.push_back(std::make_tuple(&mForceX, "x_force" + solver_ext, func, true));
   mantaFloatObjects.push_back(std::make_tuple(&mForceY, "y_force" + solver_ext, func, true));
   mantaFloatObjects.push_back(std::make_tuple(&mForceZ, "z_force" + solver_ext, func, true));
-  mantaFloatObjects.push_back(std::make_tuple(&mPhiOutIn, "phiOutIn" + solver_ext, func, mUsingOutflow));
-  mantaFloatObjects.push_back(std::make_tuple(&mPhiObsIn, "phiObsIn" + solver_ext, func, mUsingObstacle));
-  mantaFloatObjects.push_back(std::make_tuple(&mObVelocityX, "x_obvel" + solver_ext, func, mUsingObstacle));
-  mantaFloatObjects.push_back(std::make_tuple(&mObVelocityY, "y_obvel" + solver_ext, func, mUsingObstacle));
-  mantaFloatObjects.push_back(std::make_tuple(&mObVelocityZ, "z_obvel" + solver_ext, func, mUsingObstacle));
-  mantaFloatObjects.push_back(std::make_tuple(&mPhiGuideIn, "phiGuideIn" + solver_ext, func, mUsingGuiding));
-  mantaFloatObjects.push_back(std::make_tuple(&mGuideVelocityX, "x_guidevel" + solver_ext, func, mUsingGuiding));
-  mantaFloatObjects.push_back(std::make_tuple(&mGuideVelocityY, "y_guidevel" + solver_ext, func, mUsingGuiding));
-  mantaFloatObjects.push_back(std::make_tuple(&mGuideVelocityZ, "z_guidevel" + solver_ext, func, mUsingGuiding));
-  mantaFloatObjects.push_back(std::make_tuple(&mInVelocityX, "x_invel" + solver_ext, func, mUsingInvel));
-  mantaFloatObjects.push_back(std::make_tuple(&mInVelocityY, "y_invel" + solver_ext, func, mUsingInvel));
-  mantaFloatObjects.push_back(std::make_tuple(&mInVelocityZ, "z_invel" + solver_ext, func, mUsingInvel));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mPhiOutIn, "phiOutIn" + solver_ext, func, mUsingOutflow));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mPhiObsIn, "phiObsIn" + solver_ext, func, mUsingObstacle));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mObVelocityX, "x_obvel" + solver_ext, func, mUsingObstacle));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mObVelocityY, "y_obvel" + solver_ext, func, mUsingObstacle));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mObVelocityZ, "z_obvel" + solver_ext, func, mUsingObstacle));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mPhiGuideIn, "phiGuideIn" + solver_ext, func, mUsingGuiding));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mGuideVelocityX, "x_guidevel" + solver_ext, func, mUsingGuiding));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mGuideVelocityY, "y_guidevel" + solver_ext, func, mUsingGuiding));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mGuideVelocityZ, "z_guidevel" + solver_ext, func, mUsingGuiding));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mInVelocityX, "x_invel" + solver_ext, func, mUsingInvel));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mInVelocityY, "y_invel" + solver_ext, func, mUsingInvel));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mInVelocityZ, "z_invel" + solver_ext, func, mUsingInvel));
 
   mantaFloatObjects.push_back(std::make_tuple(&mPhi, "phi" + solver_ext, func, mUsingLiquid));
 
-  mantaFloatObjects.push_back(std::make_tuple(&mDensity, "density" + solver_ext, func, mUsingSmoke));
-  mantaFloatObjects.push_back(std::make_tuple(&mDensityIn, "densityIn" + solver_ext, func, mUsingSmoke));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mDensity, "density" + solver_ext, func, mUsingSmoke));
+  mantaFloatObjects.push_back(
+      std::make_tuple(&mDensityIn, "densityIn" + solver_ext, func, mUsingSmoke));
   mantaFloatObjects.push_back(std::make_tuple(&mShadow, "shadow" + solver_ext, func, mUsingSmoke));
-  mantaFloatObjects.push_back(std::make_tuple(&mEmissionIn, "emissionIn" + solver_ext, func, mUsingSmoke));
-  mantaFloatObjects.push_back(std::make_tuple(&mHeat, "heat" + solver_ext, func, mUsingSmoke & mUsingHeat));
-  mantaFloatObjects.push_back(std::make_tuple(&mHeatIn, "heatIn" + solver_ext, func, mUsingSmoke & mUsingHeat));
-  mantaFloatObjects.push_back(std::make_tuple(&mFlame, "flame" + solver_ext, func, mUsingSmoke & mUsingFire));
-  mantaFloatObjects.push_back(std::make_tuple(&mFuel, "fuel" + solver_ext, func, mUsingSmoke & mUsingFire));
-  mantaFloatObjects.push_back(std::make_tuple(&mReact, "react" + solver_ext, func, mUsingSmoke & mUsingFire));
-  mantaFloatObjects.push_back(std::make_tuple(&mFuelIn, "fuelIn" + solver_ext, func, mUsingSmoke & mUsingFire));
-  mantaFloatObjects.push_back(std::make_tuple(&mReactIn, "reactIn" + solver_ext, func, mUsingSmoke & mUsingFire));
-  mantaFloatObjects.push_back(std::make_tuple(&mColorR, "color_r" + solver_ext, func, mUsingSmoke & mUsingColors));
-  mantaFloatObjects.push_back(std::make_tuple(&mColorG, "color_g" + solver_ext, func, mUsingSmoke & mUsingColors));
-  mantaFloatObjects.push_back(std::make_tuple(&mColorB, "color_b" + solver_ext, func, mUsingSmoke & mUsingColors));
-  mantaFloatObjects.push_back(std::make_tuple(&mColorRIn, "color_r_in" + solver_ext, func, mUsingSmoke & mUsingColors));
-  mantaFloatObjects.push_back(std::make_tuple(&mColorGIn, "color_g_in" + solver_ext, func, mUsingSmoke & mUsingColors));
-  mantaFloatObjects.push_back(std::make_tuple(&mColorBIn, "color_b_in" + solver_ext, func, mUsingSmoke & mUsingColors));
-
-  mantaFloatObjects.push_back(std::make_tuple(&mDensityHigh, "density" + noise_ext, func, mUsingSmoke & mUsingNoise));
-  mantaFloatObjects.push_back(std::make_tuple(&mShadow, "shadow" + solver_ext, func, mUsingSmoke & mUsingNoise));
-  mantaFloatObjects.push_back(std::make_tuple(&mTextureU, "texture_u" + solver_ext, func, mUsingSmoke & mUsingNoise));
-  mantaFloatObjects.push_back(std::make_tuple(&mTextureV, "texture_v" + solver_ext, func, mUsingSmoke & mUsingNoise));
-  mantaFloatObjects.push_back(std::make_tuple(&mTextureW, "texture_w" + solver_ext, func, mUsingSmoke & mUsingNoise));
-  mantaFloatObjects.push_back(std::make_tuple(&mTextureU2, "texture_u2" + solver_ext, func, mUsingSmoke & mUsingNoise));
-  mantaFloatObjects.push_back(std::make_tuple(&mTextureV2, "texture_v2" + solver_ext, f

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list