Fluid: Improved behavior at open boundaries

Use greater boundary width for smoke simulations
This commit is contained in:
Sebastián Barschkis 2020-02-28 16:16:02 +01:00
parent 21bdeb5cc0
commit bc2ce31d79

@ -273,7 +273,7 @@ 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\
flags_s$ID$.initDomain(boundaryWidth=1, phiWalls=phiObs_s$ID$, outflow=boundConditions_s$ID$)\n\
\n\
if using_obstacle_s$ID$:\n\
mantaMsg('Initializing obstacle levelset')\n\
@ -295,7 +295,8 @@ def smoke_adaptive_step_$ID$(framenr):\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$, phiIn=phiIn_s$ID$)\n\
# Use bwidth=2 for better smoke outflow at borders\n\
setObstacleFlags(flags=flags_s$ID$, phiObs=phiObs_s$ID$, phiOut=phiOut_s$ID$, phiIn=phiIn_s$ID$, boundaryWidth=2)\n\
flags_s$ID$.fillGrid()\n\
\n\
applyEmission(flags=flags_s$ID$, target=density_s$ID$, source=densityIn_s$ID$, emissionTexture=emissionIn_s$ID$, type=FlagInflow|FlagOutflow)\n\
@ -412,7 +413,7 @@ def smoke_step_noise_$ID$(framenr):\n\
copyRealToVec3(sourceX=texture_u_s$ID$, sourceY=texture_v_s$ID$, sourceZ=texture_w_s$ID$, target=uvGrid0_s$ID$)\n\
copyRealToVec3(sourceX=texture_u2_s$ID$, sourceY=texture_v2_s$ID$, sourceZ=texture_w2_s$ID$, target=uvGrid1_s$ID$)\n\
\n\
flags_sn$ID$.initDomain(boundaryWidth=0, phiWalls=phiObs_sn$ID$, outflow=boundConditions_s$ID$)\n\
flags_sn$ID$.initDomain(boundaryWidth=1, phiWalls=phiObs_sn$ID$, outflow=boundConditions_s$ID$)\n\
\n\
mantaMsg('Interpolating grids')\n\
# Join big obstacle levelset after initDomain() call as it overwrites everything in phiObs\n\
@ -424,7 +425,7 @@ def smoke_step_noise_$ID$(framenr):\n\
interpolateGrid(target=phiIn_sn$ID$, source=phiIn_s$ID$)\n\
interpolateMACGrid(target=vel_sn$ID$, source=vel_s$ID$)\n\
\n\
setObstacleFlags(flags=flags_sn$ID$, phiObs=phiObs_sn$ID$, phiOut=phiOut_sn$ID$, phiIn=phiIn_sn$ID$)\n\
setObstacleFlags(flags=flags_sn$ID$, phiObs=phiObs_sn$ID$, phiOut=phiOut_sn$ID$, phiIn=phiIn_sn$ID$, boundaryWidth=2)\n\
flags_sn$ID$.fillGrid()\n\
\n\
# Interpolate emission grids and apply them to big noise grids\n\