[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