[Bf-blender-cvs] [d9cad3c] fluid-mantaflow: made flag grid also accessible through manta api. needed for liquid outflow.
Sebastián Barschkis
noreply at git.blender.org
Sat Aug 6 13:01:04 CEST 2016
Commit: d9cad3c0e777ea23cfed36131fbee1b6aab7da88
Author: Sebastián Barschkis
Date: Sat Jul 30 22:50:19 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rBd9cad3c0e777ea23cfed36131fbee1b6aab7da88
made flag grid also accessible through manta api. needed for liquid outflow.
===================================================================
M intern/mantaflow/intern/SMOKE.cpp
M intern/mantaflow/intern/strings/liquid_script.h
M intern/mantaflow/intern/strings/shared_script.h
M intern/mantaflow/intern/strings/smoke_script.h
===================================================================
diff --git a/intern/mantaflow/intern/SMOKE.cpp b/intern/mantaflow/intern/SMOKE.cpp
index 2e3ffb6..b145b14 100644
--- a/intern/mantaflow/intern/SMOKE.cpp
+++ b/intern/mantaflow/intern/SMOKE.cpp
@@ -191,6 +191,7 @@ void SMOKE::initDomainHigh(SmokeModifierData *smd)
void SMOKE::initSmoke(SmokeModifierData *smd)
{
std::string tmpString = alloc_base_grids_low
+ + fluid_variables
+ smoke_variables_low
+ prep_domain_low
+ manta_step
@@ -288,8 +289,10 @@ void SMOKE::initLiquid(SmokeModifierData *smd)
{
if (!mPhi) {
std::string tmpString = alloc_liquid
+ + fluid_variables
+ liquid_variables
- + prep_domain
+// + prep_domain_low
+ + init_phi
+ save_mesh
+ save_liquid_data
+ load_liquid_data
diff --git a/intern/mantaflow/intern/strings/liquid_script.h b/intern/mantaflow/intern/strings/liquid_script.h
index 22a7ac9..6130c6f 100644
--- a/intern/mantaflow/intern/strings/liquid_script.h
+++ b/intern/mantaflow/intern/strings/liquid_script.h
@@ -40,6 +40,7 @@ combineBandWidth = narrowBandWidth - 1\n\
\n\
minParticles = pow(2,dim)\n\
particleNumber = 2\n\
+radiusFactor = 1.0\n\
\n\
gravity = (0,0,-1)\n\
step = -1\n\
@@ -72,7 +73,7 @@ mesh = s.create(Mesh)\n\
pindex = s.create(ParticleIndexSystem)\n\
gpi = s.create(IntGrid)\n";
-const std::string prep_domain = "\n\
+const std::string init_phi = "\n\
flags.initDomain(boundaryWidth=0)\n\
phi.initFromFlags(flags)\n\
phiInit.initFromFlags(flags)\n";
@@ -87,17 +88,13 @@ def manta_step(start_frame):\n\
s.timeTotal = s.frame * dt0\n\
last_frame = s.frame\n\
\n\
- # Sample particles on first frame\n\
- if (start_frame == 1):\n\
- phi.copyFrom(phiInit)\n\
- flags.updateFromLevelset(phi)\n\
- sampleLevelsetWithParticles( phi=phi, flags=flags, parts=pp, discretization=2, randomness=0.01 )\n\
- mapGridToPartsVec3(source=vel, parts=pp, target=pVel )\n\
- # sebbas: just using this for local debugging\n\
- # phi.save('/Users/sbarschkis/Desktop/phi.uni')\n\
+ pVel.setSource( vel, isMAC=True )\n\
+ sampleLevelsetWithParticles( phi=phiInit, flags=flags, parts=pp, discretization=2, randomness=0.01, refillEmpty=True )\n\
+ mapGridToPartsVec3(source=vel, parts=pp, target=pVel )\n\
+ adjustNumber( parts=pp, vel=vel, flags=flags, minParticles=1*minParticles, maxParticles=2*minParticles, phi=phi, radiusFactor=radiusFactor, narrowBand=narrowBandWidth )\n\
+ phi.join(phiInit)\n\
+ flags.updateFromLevelset(phi)\n\
\n\
- #for i in range(int(gs.z)):\n\
- #phiInit.printGrid(zSlice=int(i))\n\
while s.frame == last_frame:\n\
global step\n\
step = step + 1\n\
@@ -175,7 +172,10 @@ def liquid_step():\n\
phi.setBoundNeumann(0) # make sure no particles are placed at outer boundary\n\
adjustNumber( parts=pp, vel=vel, flags=flags, minParticles=1*minParticles, maxParticles=2*minParticles, phi=phi, narrowBand=narrowBandWidth )\n\
else:\n\
- adjustNumber( parts=pp, vel=vel, flags=flags, minParticles=1*minParticles, maxParticles=2*minParticles, phi=phi )\n";
+ adjustNumber( parts=pp, vel=vel, flags=flags, minParticles=1*minParticles, maxParticles=2*minParticles, phi=phi )\n\
+ \n\
+ # reset inflow grid\n\
+ phiInit.initFromFlags(flags)\n";
//////////////////////////////////////////////////////////////////////
// IMPORT EXPORT GRIDS, MESHES, PARTICLESYSTEM
diff --git a/intern/mantaflow/intern/strings/shared_script.h b/intern/mantaflow/intern/strings/shared_script.h
index 288344a..99c617c 100644
--- a/intern/mantaflow/intern/strings/shared_script.h
+++ b/intern/mantaflow/intern/strings/shared_script.h
@@ -70,4 +70,24 @@ xl.timestepMin = s.timestepMin / 10\n\
xl.timestepMax = s.timestepMax\n\
xl.cfl = s.cfl\n";
+const std::string fluid_variables = "\n\
+doOpen = $DO_OPEN$\n\
+boundConditions = '$BOUNDCONDITIONS$'\n\
+boundaryWidth = 1\n";
+
+const std::string prep_domain_low = "\n\
+# prepare domain low\n\
+mantaMsg('Fluid domain low')\n\
+flags.initDomain(boundaryWidth=boundaryWidth)\n\
+flags.fillGrid()\n\
+if doOpen:\n\
+ setOpenBound(flags=flags, bWidth=boundaryWidth, openBound=boundConditions, type=FlagOutflow|FlagEmpty)\n";
+
+const std::string prep_domain_high = "\n\
+# prepare domain high\n\
+mantaMsg('Fluid domain high')\n\
+xl_flags.initDomain(boundaryWidth=boundaryWidth)\n\
+xl_flags.fillGrid()\n\
+if doOpen:\n\
+ setOpenBound(flags=xl_flags, bWidth=boundaryWidth, openBound=boundConditions, type=FlagOutflow|FlagEmpty)\n";
diff --git a/intern/mantaflow/intern/strings/smoke_script.h b/intern/mantaflow/intern/strings/smoke_script.h
index f611c60..1108c38 100644
--- a/intern/mantaflow/intern/strings/smoke_script.h
+++ b/intern/mantaflow/intern/strings/smoke_script.h
@@ -56,10 +56,7 @@ 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";
+vorticity = $VORTICITY$\n";
const std::string alloc_base_grids_low = "\n\
# prepare grids low\n\
@@ -82,14 +79,6 @@ z_force = s.create(RealGrid)\n\
inflow_grid = s.create(LevelsetGrid)\n\
fuel_inflow = s.create(LevelsetGrid)\n";
-const std::string prep_domain_low = "\n\
-# prepare domain low\n\
-mantaMsg('Smoke domain low')\n\
-flags.initDomain(boundaryWidth=boundaryWidth)\n\
-flags.fillGrid()\n\
-if doOpen:\n\
- setOpenBound(flags=flags, bWidth=boundaryWidth, openBound=boundConditions, type=FlagOutflow|FlagEmpty)\n";
-
//////////////////////////////////////////////////////////////////////
// HIGH RESOLUTION SETUP
//////////////////////////////////////////////////////////////////////
@@ -120,14 +109,6 @@ texture_u2 = s.create(RealGrid)\n\
texture_v2 = s.create(RealGrid)\n\
texture_w2 = s.create(RealGrid)\n";
-const std::string prep_domain_high = "\n\
-# prepare domain high\n\
-mantaMsg('Smoke domain high')\n\
-xl_flags.initDomain(boundaryWidth=boundaryWidth)\n\
-xl_flags.fillGrid()\n\
-if doOpen:\n\
- setOpenBound(flags=xl_flags, bWidth=boundaryWidth, openBound=boundConditions, type=FlagOutflow|FlagEmpty)\n";
-
const std::string wavelet_turbulence_noise = "\n\
# wavelet turbulence noise field\n\
mantaMsg('Smoke wavelet noise')\n\
More information about the Bf-blender-cvs
mailing list