[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