[Bf-blender-cvs] [05c03b6] fluid-mantaflow: cleaned up scripts and init functions which use them
Sebastián Barschkis
noreply at git.blender.org
Wed Jun 8 00:27:53 CEST 2016
Commit: 05c03b6526287334c11f1a2947b2e46492f038ab
Author: Sebastián Barschkis
Date: Mon Jun 6 18:13:31 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB05c03b6526287334c11f1a2947b2e46492f038ab
cleaned up scripts and init functions which use them
===================================================================
M intern/mantaflow/intern/LIQUID.cpp
M intern/mantaflow/intern/SMOKE.cpp
M intern/mantaflow/intern/SMOKE.h
M intern/mantaflow/intern/strings/shared_script.h
M intern/mantaflow/intern/strings/smoke_script.h
===================================================================
diff --git a/intern/mantaflow/intern/LIQUID.cpp b/intern/mantaflow/intern/LIQUID.cpp
index 4a66af1..c4ffcd2 100644
--- a/intern/mantaflow/intern/LIQUID.cpp
+++ b/intern/mantaflow/intern/LIQUID.cpp
@@ -53,7 +53,7 @@ void LIQUID::initSetup()
{
std::string tmpString = manta_import
+ solver_low
- + adaptive_time_stepping
+ + adaptive_time_stepping_low
+ alloc_liquid
+ liquid_variables
+ prep_domain
diff --git a/intern/mantaflow/intern/SMOKE.cpp b/intern/mantaflow/intern/SMOKE.cpp
index e23707c..185d47f 100644
--- a/intern/mantaflow/intern/SMOKE.cpp
+++ b/intern/mantaflow/intern/SMOKE.cpp
@@ -116,6 +116,9 @@ SMOKE::SMOKE(int *res, SmokeModifierData *smd)
// Only start Mantaflow once. No need to start whenever new SMOKE objected is allocated
if (!mantaInitialized)
startMantaflow();
+
+ initDomain(smd);
+ if (mUsingHighRes) initDomainHigh(smd);
// Initialize Mantaflow variables in Python
// Liquid
@@ -127,7 +130,7 @@ SMOKE::SMOKE(int *res, SmokeModifierData *smd)
// Smoke
if (mUsingSmoke) {
- initSetup(smd);
+ initSmoke(smd);
if (mUsingHeat) initHeat(smd);
if (mUsingFire) initFire(smd);
if (mUsingColors) initColors(smd);
@@ -146,7 +149,7 @@ SMOKE::SMOKE(int *res, SmokeModifierData *smd)
mTotalCellsHigh = mResXHigh * mResYHigh * mResZHigh;
// Initialize Mantaflow variables in Python
- initSetupHigh(smd);
+ initSmokeHigh(smd);
if (mUsingFire) initFireHigh(smd);
if (mUsingColors) initColorsHigh(smd);
@@ -155,13 +158,33 @@ SMOKE::SMOKE(int *res, SmokeModifierData *smd)
}
}
-void SMOKE::initSetup(SmokeModifierData *smd)
+void SMOKE::initDomain(SmokeModifierData *smd)
{
std::string tmpString = manta_import
+ solver_low
- + adaptive_time_stepping
- + alloc_base_grids_low
- + smoke_variables
+ + adaptive_time_stepping_low;
+ std::string finalString = parseScript(tmpString, smd);
+ mCommands.clear();
+ mCommands.push_back(finalString);
+
+ runPythonString(mCommands);
+}
+
+void SMOKE::initDomainHigh(SmokeModifierData *smd)
+{
+ std::string tmpString = solver_high
+ + adaptive_time_stepping_high;
+ std::string finalString = parseScript(tmpString, smd);
+ mCommands.clear();
+ mCommands.push_back(finalString);
+
+ runPythonString(mCommands);
+}
+
+void SMOKE::initSmoke(SmokeModifierData *smd)
+{
+ std::string tmpString = alloc_base_grids_low
+ + smoke_variables_low
+ prep_domain_low
+ manta_step
+ smoke_step_low;
@@ -172,9 +195,9 @@ void SMOKE::initSetup(SmokeModifierData *smd)
runPythonString(mCommands);
}
-void SMOKE::initSetupHigh(SmokeModifierData *smd)
+void SMOKE::initSmokeHigh(SmokeModifierData *smd)
{
- std::string tmpString = solver_setup_high
+ std::string tmpString = solver_high
+ alloc_base_grids_high
+ uv_setup
+ prep_domain_high
@@ -257,10 +280,7 @@ void SMOKE::initColorsHigh(SmokeModifierData *smd)
void SMOKE::initLiquid(SmokeModifierData *smd)
{
if (!mPhi) {
- std::string tmpString = manta_import
- + solver_low
- + adaptive_time_stepping
- + alloc_liquid
+ std::string tmpString = alloc_liquid
+ liquid_variables
+ prep_domain
+ adaptive_step_liquid
@@ -560,12 +580,12 @@ void SMOKE::exportScript(SmokeModifierData *smd)
}
// Rest of low res setup
- manta_script += prep_domain_low + smoke_variables;
+ manta_script += prep_domain_low + smoke_variables_low;
// Setup high
if (smd->domain->flags & MOD_SMOKE_HIGHRES) {
manta_script +=
- solver_setup_high +
+ solver_high +
uv_setup +
alloc_base_grids_high;
}
diff --git a/intern/mantaflow/intern/SMOKE.h b/intern/mantaflow/intern/SMOKE.h
index 68268eb..8a52ff6 100644
--- a/intern/mantaflow/intern/SMOKE.h
+++ b/intern/mantaflow/intern/SMOKE.h
@@ -178,8 +178,10 @@ private:
// Liquids
float* mPhi;
- void initSetup(struct SmokeModifierData *smd);
- void initSetupHigh(struct SmokeModifierData *smd);
+ void initDomain(struct SmokeModifierData *smd);
+ void initDomainHigh(struct SmokeModifierData *smd);
+ void initSmoke(struct SmokeModifierData *smd);
+ void initSmokeHigh(struct SmokeModifierData *smd);
void startMantaflow();
void runPythonString(std::vector<std::string> commands);
std::string getRealValue(const std::string& varName, SmokeModifierData *smd);
diff --git a/intern/mantaflow/intern/strings/shared_script.h b/intern/mantaflow/intern/strings/shared_script.h
index a72802c..c07d57d 100644
--- a/intern/mantaflow/intern/strings/shared_script.h
+++ b/intern/mantaflow/intern/strings/shared_script.h
@@ -41,7 +41,14 @@ gs = vec3($RESX$,$RESY$,$RESZ$)\n\
if dim == 2: gs.z = 1\n\
s = Solver(name='main', gridSize=gs, dim=dim)\n";
-const std::string adaptive_time_stepping = "\n\
+const std::string solver_high = "\n\
+# solver high params\n\
+upres = $UPRES$\n\
+xl_gs = vec3($HRESX$, $HRESY$, $HRESZ$)\n\
+if dim == 2: xl_gs.z = 1\n\
+xl = Solver(name = 'larger', gridSize = xl_gs)\n";
+
+const std::string adaptive_time_stepping_low = "\n\
# adaptive time stepping\n\
dt_default = 0.1\n\
dt_factor = $DT_FACTOR$\n\
@@ -53,4 +60,10 @@ s.timestepMax = dt0\n\
s.cfl = 4.0\n\
s.timestep = dt0\n";
+const std::string adaptive_time_stepping_high = "\n\
+xl.frameLength = s.frameLength\n\
+xl.timestepMin = s.timestepMin / 10\n\
+xl.timestepMax = s.timestepMax\n\
+xl.cfl = s.cfl\n";
+
diff --git a/intern/mantaflow/intern/strings/smoke_script.h b/intern/mantaflow/intern/strings/smoke_script.h
index ec24c54..f900c9c 100644
--- a/intern/mantaflow/intern/strings/smoke_script.h
+++ b/intern/mantaflow/intern/strings/smoke_script.h
@@ -33,16 +33,6 @@
// GENERAL SETUP
//////////////////////////////////////////////////////////////////////
-const std::string smoke_variables = "\n\
-using_colors = $USING_COLORS$\n\
-using_heat = $USING_HEAT$\n\
-using_fire = $USING_FIRE$\n\
-using_wavelets = $USE_WAVELETS$\n\
-vorticity = $VORTICITY$\n\
-doOpen = $DO_OPEN$\n\
-boundConditions = '$BOUNDCONDITIONS$'\n\
-boundaryWidth = 1\n";
-
const std::string uv_setup = "\n\
# create the array of uv grids\n\
uv = []\n\
@@ -60,6 +50,16 @@ copyVec3ToReal(source=uv[1], targetX=texture_u2, targetY=texture_v2, targetZ=tex
// LOW RESOLUTION SETUP
//////////////////////////////////////////////////////////////////////
+const std::string smoke_variables_low = "\n\
+using_colors = $USING_COLORS$\n\
+using_heat = $USING_HEAT$\n\
+using_fire = $USING_FIRE$\n\
+using_wavelets = $USE_WAVELETS$\n\
+vorticity = $VORTICITY$\n\
+doOpen = $DO_OPEN$\n\
+boundConditions = '$BOUNDCONDITIONS$'\n\
+boundaryWidth = 1\n";
+
const std::string alloc_base_grids_low = "\n\
# prepare grids low\n\
flags = s.create(FlagGrid)\n\
@@ -91,16 +91,7 @@ if doOpen:\n\
// HIGH RESOLUTION SETUP
//////////////////////////////////////////////////////////////////////
-const std::string solver_setup_high = "\n\
-# solver high params\n\
-upres = $UPRES$\n\
-xl_gs = vec3($HRESX$, $HRESY$, $HRESZ$)\n\
-if dim == 2: xl_gs.z = 1\n\
-xl = Solver(name = 'larger', gridSize = xl_gs)\n\
-xl.frameLength = s.frameLength\n\
-xl.timestepMin = s.timestepMin / 10\n\
-xl.timestepMax = s.timestepMax\n\
-xl.cfl = s.cfl\n\
+const std::string smoke_variables_high = "\n\
wltStrength = $WLT_STR$\n\
octaves = 0\n\
uvs = 2\n\
More information about the Bf-blender-cvs
mailing list