[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