[Bf-blender-cvs] [8a498582b3b] fluid-mantaflow: Mantaflow: Refactoring for smoke outflow

Sebastián Barschkis noreply at git.blender.org
Sat Apr 6 22:12:49 CEST 2019


Commit: 8a498582b3b025eb87e05c8cce6036bf08568f62
Author: Sebastián Barschkis
Date:   Thu Nov 8 22:28:16 2018 +0100
Branches: fluid-mantaflow
https://developer.blender.org/rB8a498582b3b025eb87e05c8cce6036bf08568f62

Mantaflow: Refactoring for smoke outflow

Now setting outflow every frame, allowing walls to be keyframed

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

M	intern/mantaflow/intern/FLUID.cpp
M	intern/mantaflow/intern/strings/smoke_script.h

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

diff --git a/intern/mantaflow/intern/FLUID.cpp b/intern/mantaflow/intern/FLUID.cpp
index 4d36b523348..e7c5911322d 100644
--- a/intern/mantaflow/intern/FLUID.cpp
+++ b/intern/mantaflow/intern/FLUID.cpp
@@ -291,7 +291,6 @@ void FLUID::initSmoke(SmokeModifierData *smd)
 	std::vector<std::string> pythonCommands;
 	std::string tmpString = smoke_alloc
 		+ smoke_variables
-		+ smoke_bounds
 		+ smoke_adaptive_step
 		+ smoke_save_data
 		+ smoke_load_data
@@ -307,7 +306,6 @@ void FLUID::initSmokeNoise(SmokeModifierData *smd)
 	std::vector<std::string> pythonCommands;
 	std::string tmpString = smoke_alloc_noise
 		+ smoke_variables_noise
-		+ smoke_bounds_noise
 		+ smoke_adaptive_step_noise
 		+ smoke_save_noise
 		+ smoke_load_noise
@@ -728,8 +726,6 @@ std::string FLUID::getRealValue(const std::string& varName,  SmokeModifierData *
 		ss << smd->domain->active_color[1];
 	else if (varName == "COLOR_B")
 		ss << smd->domain->active_color[2];
-	else if (varName == "ADVECT_ORDER")
-		ss << 2;
 	else if (varName == "BUOYANCY_ALPHA")
 		ss << smd->domain->alpha;
 	else if (varName == "BUOYANCY_BETA")
@@ -1477,12 +1473,6 @@ void FLUID::exportSmokeScript(SmokeModifierData *smd)
 	if (invel)
 		manta_script += fluid_alloc_invel;
 
-	// Domain init
-	manta_script += header_gridinit
-		+ smoke_bounds;
-	if (noise)
-		manta_script += smoke_bounds_noise;
-
 	// Time
 	manta_script += header_time
 		+ fluid_adaptive_time_stepping
diff --git a/intern/mantaflow/intern/strings/smoke_script.h b/intern/mantaflow/intern/strings/smoke_script.h
index 3bd056e7045..603a21d9d36 100644
--- a/intern/mantaflow/intern/strings/smoke_script.h
+++ b/intern/mantaflow/intern/strings/smoke_script.h
@@ -29,26 +29,6 @@
 
 #include <string>
 
-//////////////////////////////////////////////////////////////////////
-// BOUNDS
-//////////////////////////////////////////////////////////////////////
-
-const std::string smoke_bounds = "\n\
-# Prepare domain\n\
-mantaMsg('Smoke domain')\n\
-flags_s$ID$.initDomain(boundaryWidth=boundaryWidth_s$ID$)\n\
-flags_s$ID$.fillGrid()\n\
-if doOpen_s$ID$:\n\
-    setOpenBound(flags=flags_s$ID$, bWidth=boundaryWidth_s$ID$, openBound=boundConditions_s$ID$, type=FlagOutflow|FlagEmpty)\n";
-
-const std::string smoke_bounds_noise = "\n\
-# Prepare noise domain\n\
-mantaMsg('Smoke domain noise')\n\
-flags_sn$ID$.initDomain(boundaryWidth=boundaryWidth_s$ID$)\n\
-flags_sn$ID$.fillGrid()\n\
-if doOpen_s$ID$:\n\
-    setOpenBound(flags=flags_sn$ID$, bWidth=boundaryWidth_s$ID$, openBound=boundConditions_s$ID$, type=FlagOutflow|FlagEmpty)\n";
-
 //////////////////////////////////////////////////////////////////////
 // VARIABLES
 //////////////////////////////////////////////////////////////////////
@@ -246,6 +226,8 @@ def smoke_adaptive_step_$ID$(framenr):\n\
     \n\
     fluid_pre_step_$ID$()\n\
     \n\
+    flags_s$ID$.initDomain(boundaryWidth=0, phiWalls=phiObs_s$ID$, outflow=boundConditions_s$ID$)\n\
+    \n\
     if using_obstacle_s$ID$:\n\
         mantaMsg('Initializing obstacle levelset')\n\
         phiObsIn_s$ID$.fillHoles(maxsize=3)\n\
@@ -258,7 +240,8 @@ def smoke_adaptive_step_$ID$(framenr):\n\
         extrapolateLsSimple(phi=phiObs_s$ID$, distance=3, inside=True)\n\
         extrapolateLsSimple(phi=phiObs_s$ID$, distance=3, inside=False)\n\
     \n\
-    phiOut_s$ID$.join(phiOutIn_s$ID$)\n\
+    if using_outflow_s$ID$:\n\
+        phiOut_s$ID$.join(phiOutIn_s$ID$)\n\
     \n\
     setObstacleFlags(flags=flags_s$ID$, phiObs=phiObs_s$ID$, phiOut=phiOut_s$ID$)\n\
     flags_s$ID$.fillGrid()\n\
@@ -285,6 +268,8 @@ def smoke_adaptive_step_noise_$ID$(framenr):\n\
     smoke_pre_step_noise_$ID$()\n\
     \n\
     while sn$ID$.frame == last_frame_s$ID$:\n\
+        \n\
+        flags_sn$ID$.initDomain(boundaryWidth=0, phiWalls=phiObs_sn$ID$, outflow=boundConditions_s$ID$)\n\
         \n\
         mantaMsg('sn.frame is ' + str(sn$ID$.frame))\n\
         setObstacleFlags(flags=flags_sn$ID$, phiObs=phiObs_sn$ID$, phiOut=phiOut_sn$ID$)\n\
@@ -306,25 +291,25 @@ const std::string smoke_step = "\n\
 def smoke_step_$ID$():\n\
     mantaMsg('Smoke step low')\n\
     mantaMsg('Advecting density')\n\
-    advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=density_s$ID$, order=$ADVECT_ORDER$)\n\
+    advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=density_s$ID$, order=2)\n\
     \n\
     if using_heat_s$ID$:\n\
         mantaMsg('Advecting heat')\n\
-        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=heat_s$ID$, order=$ADVECT_ORDER$)\n\
+        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=heat_s$ID$, order=2)\n\
     \n\
     if using_fire_s$ID$:\n\
         mantaMsg('Advecting fire')\n\
-        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=fuel_s$ID$, order=$ADVECT_ORDER$)\n\
-        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=react_s$ID$, order=$ADVECT_ORDER$)\n\
+        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=fuel_s$ID$, order=2)\n\
+        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=react_s$ID$, order=2)\n\
     \n\
     if using_colors_s$ID$:\n\
         mantaMsg('Advecting colors')\n\
-        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=color_r_s$ID$, order=$ADVECT_ORDER$)\n\
-        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=color_g_s$ID$, order=$ADVECT_ORDER$)\n\
-        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=color_b_s$ID$, order=$ADVECT_ORDER$)\n\
+        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=color_r_s$ID$, order=2)\n\
+        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=color_g_s$ID$, order=2)\n\
+        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=color_b_s$ID$, order=2)\n\
     \n\
     mantaMsg('Advecting velocity')\n\
-    advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=vel_s$ID$, order=$ADVECT_ORDER$, openBounds=doOpen_s$ID$, boundaryWidth=boundaryWidth_s$ID$)\n\
+    advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=vel_s$ID$, order=2, openBounds=doOpen_s$ID$, boundaryWidth=boundaryWidth_s$ID$)\n\
     \n\
     if doOpen_s$ID$ or using_outflow_s$ID$:\n\
         resetOutflow(flags=flags_s$ID$, real=density_s$ID$)\n\
@@ -383,7 +368,7 @@ def step_noise_$ID$():\n\
     \n\
     for i in range(uvs_s$ID$):\n\
         mantaMsg('Advecting UV')\n\
-        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=uv_s$ID$[i], order=$ADVECT_ORDER$)\n\
+        advectSemiLagrange(flags=flags_s$ID$, vel=vel_s$ID$, grid=uv_s$ID$[i], order=2)\n\
         mantaMsg('Updating UVWeight')\n\
         updateUvWeight(resetTime=10.0 , index=i, numUvs=uvs_s$ID$, uv=uv_s$ID$[i])\n\
     \n\
@@ -409,17 +394,17 @@ def step_noise_$ID$():\n\
     for substep in range(int(upres_sn$ID$)):\n\
         if using_colors_s$ID$: \n\
             mantaMsg('Advecting colors noise')\n\
-            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=color_r_sn$ID$, order=$ADVECT_ORDER$, openBounds=doOpen_s$ID$)\n\
-            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=color_g_sn$ID$, order=$ADVECT_ORDER$, openBounds=doOpen_s$ID$)\n\
-            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=color_b_sn$ID$, order=$ADVECT_ORDER$, openBounds=doOpen_s$ID$)\n\
+            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=color_r_sn$ID$, order=2)\n\
+            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=color_g_sn$ID$, order=2)\n\
+            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=color_b_sn$ID$, order=2)\n\
         \n\
         if using_fire_s$ID$: \n\
             mantaMsg('Advecting fire noise')\n\
-            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=fuel_sn$ID$, order=$ADVECT_ORDER$, openBounds=doOpen_s$ID$)\n\
-            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=react_sn$ID$, order=$ADVECT_ORDER$, openBounds=doOpen_s$ID$)\n\
+            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=fuel_sn$ID$, order=2)\n\
+            advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=react_sn$ID$, order=2)\n\
         \n\
         mantaMsg('Advecting density noise')\n\
-        advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=density_sn$ID$, order=$ADVECT_ORDER$, openBounds=doOpen_s$ID$)\n\
+        advectSemiLagrange(flags=flags_sn$ID$, vel=vel_sn$ID$, grid=density_sn$ID$, order=2)\n\
 \n\
 def process_burn_noise_$ID$():\n\
     mantaMsg('Process burn noise')\n\



More information about the Bf-blender-cvs mailing list