[Bf-blender-cvs] [0015706] soc-2014-fluid: reverting to old smoke style, simpleplume scenario for debug

Roman Pogribnyi noreply at git.blender.org
Sun Sep 21 16:38:15 CEST 2014


Commit: 00157066bfa3db0c6a4fcfecdfe97797d5b42960
Author: Roman Pogribnyi
Date:   Sun Sep 21 14:43:00 2014 +0200
Branches: soc-2014-fluid
https://developer.blender.org/rB00157066bfa3db0c6a4fcfecdfe97797d5b42960

reverting to old smoke style, simpleplume scenario for debug

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

M	intern/smoke/intern/scenarios/smoke.h
M	source/blender/blenkernel/intern/pointcache.c
M	source/blender/blenkernel/intern/smoke.c

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

diff --git a/intern/smoke/intern/scenarios/smoke.h b/intern/smoke/intern/scenarios/smoke.h
index 294252a..3b7debd 100644
--- a/intern/smoke/intern/scenarios/smoke.h
+++ b/intern/smoke/intern/scenarios/smoke.h
@@ -2,7 +2,37 @@
 using namespace std;
 const string smoke_clean = "";
 
-const string smoke_setup_low ="from manta import * \n\
+const string smoke_setup_low ="import os, shutil, math, sys \n\
+from manta import *\n\
+\n\
+# solver params\n\
+res = $RES$\n\
+gs = vec3($RESX$, $RESY$, $RESZ$)\n\
+s = FluidSolver(name='main', gridSize = gs)\n\
+s.timestep = 1.0\n\
+timings = Timings()\n\
+\n\
+# prepare grids\n\
+flags = s.create(FlagGrid)\n\
+vel = s.create(MACGrid)\n\
+density = s.create(RealGrid)\n\
+pressure = s.create(RealGrid)\n\
+\n\
+# noise field\n\
+noise = s.create(NoiseField, loadFromFile=True)\n\
+noise.posScale = vec3(45)\n\
+noise.clamp = True\n\
+noise.clampNeg = 0\n\
+noise.clampPos = 1\n\
+noise.valScale = 1\n\
+noise.valOffset = 0.75\n\
+noise.timeAnim = 0.2\n\
+\n\
+flags.initDomain()\n\
+flags.fillGrid()\n\
+\n\
+source = s.create(Cylinder, center=gs*vec3(0.5,0.1,0.5), radius=res*0.14, z=gs*vec3(0, 0.02, 0))\n";
+/*"from manta import * \n\
 import os, shutil, math, sys \n\
 def transform_back(obj, gs):\n\
   obj.scale(gs/2)\n\
@@ -33,7 +63,7 @@ vel = s.create(MACGrid) \n\
 density = s.create(RealGrid) \n\
 pressure = s.create(RealGrid) \n\
 forces = s.create(MACGrid)\n\
-";
+";*/
 
 const string smoke_setup_high = "xl_gs = vec3($HRESX$, $HRESY$, $HRESZ$) \n\
 xl = Solver(name = 'larger', gridSize = xl_gs, dim = solver_dim) \n\
@@ -69,30 +99,43 @@ if $USE_WAVELETS$ and $UPRES$ > 0:\n\
 ";
 
 const string smoke_step_low = "def sim_step(t):\n\
-  density.save('den%04d_start.txt' % t) \n\
-  forces.load('manta_forces.uni')\n\
-  if (t>=0 and t<75):\n\
-    if noise.valScale > 0.:\n\
-      densityInflowMeshNoise( flags=flags, density=density, noise=noise, mesh=source, scale=3, sigma=0.5 )\n\
-    else:\n\
-      densityInflowMesh(flags=flags, density=density, mesh=source, value=1)\n\
-    applyInflow=True\n\
-  density.save('den%04d_1.txt' % t) \n\
-  addForceField(flags=flags, vel=vel,force=forces)\n\
-  density.save('den%04d_2.txt' % t) \n\
-  advectSemiLagrange(flags=flags, vel=vel, grid=density, order=$ADVECT_ORDER$) \n\
-  advectSemiLagrange(flags=flags, vel=vel, grid=vel, order=$ADVECT_ORDER$) \n\
-  density.save('den%04d_3.txt' % t) \n\
-  setWallBcs(flags=flags, vel=vel) \n\
-  addBuoyancy(density=density, vel=vel, gravity=vec3($BUYO_X$,$BUYO_Y$,$BUYO_Z$), flags=flags) \n\
-  solvePressure(flags=flags, vel=vel, pressure=pressure, useResNorm=True, openBound='xXyYzZ', cgMaxIterFac=1, cgAccuracy=0.01) \n\
-  setWallBcs(flags=flags, vel=vel) \n\
-  print(\"Writing Grid to \" + str($DENSITY_MEM$) + \" with size\" + str($DENSITY_SIZE$))\n\
-  density.save('den%04d_end.txt' % t) \n\
-  density.writeGridToMemory(memLoc = \"$DENSITY_MEM$\",sizeAllowed = \"$DENSITY_SIZE$\") \n\
+  if t<100:\n\
+    densityInflow(flags=flags, density=density, noise=noise, shape=source, scale=1, sigma=0.5)\n\
+  advectSemiLagrange(flags=flags, vel=vel, grid=density, order=2)\n\
+  advectSemiLagrange(flags=flags, vel=vel, grid=vel    , order=2, strength=1.0)\n\
+  setWallBcs(flags=flags, vel=vel)    \n\
+  addBuoyancy(density=density, vel=vel, gravity=vec3(0,-6e-4,0), flags=flags)\n\
+  solvePressure(flags=flags, vel=vel, pressure=pressure, useResNorm=True)\n\
+  setWallBcs(flags=flags, vel=vel)\n\
+  #density.save('den%04d.uni' % t)\n\
   density.save('den%04d_temp.uni' % t) \n\
   os.rename('den%04d_temp.uni' % t, 'den%04d.uni' % t) \n\
-  s.step()\n";
+  s.step()";
+//"def sim_step(t):\n\
+//  density.save('den%04d_start.txt' % t) \n\
+//  forces.load('manta_forces.uni')\n\
+//  if (t>=0 and t<75):\n\
+//    if noise.valScale > 0.:\n\
+//      densityInflowMeshNoise( flags=flags, density=density, noise=noise, mesh=source, scale=3, sigma=0.5 )\n\
+//    else:\n\
+//      densityInflowMesh(flags=flags, density=density, mesh=source, value=1)\n\
+//    applyInflow=True\n\
+//  density.save('den%04d_1.txt' % t) \n\
+//  addForceField(flags=flags, vel=vel,force=forces)\n\
+//  density.save('den%04d_2.txt' % t) \n\
+//  advectSemiLagrange(flags=flags, vel=vel, grid=density, order=$ADVECT_ORDER$) \n\
+//  advectSemiLagrange(flags=flags, vel=vel, grid=vel, order=$ADVECT_ORDER$) \n\
+//  density.save('den%04d_3.txt' % t) \n\
+//  setWallBcs(flags=flags, vel=vel) \n\
+//  addBuoyancy(density=density, vel=vel, gravity=vec3($BUYO_X$,$BUYO_Y$,$BUYO_Z$), flags=flags) \n\
+//  solvePressure(flags=flags, vel=vel, pressure=pressure, useResNorm=True, openBound='xXyYzZ', cgMaxIterFac=1, cgAccuracy=0.01) \n\
+//  setWallBcs(flags=flags, vel=vel) \n\
+//  print(\"Writing Grid to \" + str($DENSITY_MEM$) + \" with size\" + str($DENSITY_SIZE$))\n\
+//  density.save('den%04d_end.txt' % t) \n\
+//  #density.writeGridToMemory(memLoc = \"$DENSITY_MEM$\",sizeAllowed = \"$DENSITY_SIZE$\") \n\
+//  density.save('den%04d_temp.uni' % t) \n\
+//  os.rename('den%04d_temp.uni' % t, 'den%04d.uni' % t) \n\
+//  s.step()\n";
 
 const string smoke_step_high = "  interpolateMACGrid( source=vel, target=xl_vel ) \n\
   sStr = 1.0 * wltStrength  \n\
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index 6fbc7aa..17c7534 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -609,12 +609,12 @@ static int  ptcache_smoke_write(PTCacheFile *pf, void *smoke_v)
 
 		ptcache_file_compressed_write(pf, (unsigned char *)sds->shadow, in_len, out, mode);
 		
-			writeArrToFile("sh.txt", sds->shadow, res);
-		
+		/*	writeArrToFile("sh.txt", sds->shadow, res);
+		*/
 		ptcache_file_compressed_write(pf, (unsigned char *)dens, in_len, out, mode);
 
-			writeArrToFile("dens.txt", dens, res);
-
+		/*	writeArrToFile("dens.txt", dens, res);
+*/
 		if (fluid_fields & SM_ACTIVE_HEAT) {
 			ptcache_file_compressed_write(pf, (unsigned char *)heat, in_len, out, mode);
 			ptcache_file_compressed_write(pf, (unsigned char *)heatold, in_len, out, mode);
@@ -631,16 +631,16 @@ static int  ptcache_smoke_write(PTCacheFile *pf, void *smoke_v)
 		}
 		ptcache_file_compressed_write(pf, (unsigned char *)vx, in_len, out, mode);
 
-			writeArrToFile("vx.txt", vx, res);
-
+/*			writeArrToFile("vx.txt", vx, res);
+*/
 		ptcache_file_compressed_write(pf, (unsigned char *)vy, in_len, out, mode);
 		
-			writeArrToFile("vy.txt", vx, res);
-
+/*			writeArrToFile("vy.txt", vx, res);
+*/
 		ptcache_file_compressed_write(pf, (unsigned char *)vz, in_len, out, mode);
 
-			writeArrToFile("vz.txt", vx, res);
-		
+/*			writeArrToFile("vz.txt", vx, res);
+*/		
 		ptcache_file_compressed_write(pf, (unsigned char *)obstacles, (unsigned int)res, out, mode);
 		ptcache_file_write(pf, &dt, 1, sizeof(float));
 		ptcache_file_write(pf, &dx, 1, sizeof(float));
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 1bf6b40..fe17f21 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -2798,38 +2798,35 @@ static void smokeModifier_process(SmokeModifierData *smd, Scene *scene, Object *
 
 		// simulate the actual smoke (c++ code in intern/smoke)
 		// DG: interesting commenting this line + deactivating loading of noise files
-		if (framenr != startframe)
-		{
-			if (sds->flags & MOD_SMOKE_DISSOLVE) {
-				/* low res dissolve */
-				smoke_dissolve(sds->fluid, sds->diss_speed, sds->flags & MOD_SMOKE_DISSOLVE_LOG);
-				/* high res dissolve */
-				if (sds->wt) {
-					smoke_dissolve_wavelet(sds->wt, sds->diss_speed, sds->flags & MOD_SMOKE_DISSOLVE_LOG);
-				}
-				
-			}
-			//Step itself
-			if(smd->domain->flags & MOD_SMOKE_USE_MANTA){	/*load manta sim data into fluid object*/
-			
+		if(framenr != startframe && smd->domain->flags & MOD_SMOKE_USE_MANTA)	/*load manta sim data into fluid object*/
+			{
 				/*PR: Uncomment when adding simulation from timeline*/
-//				smoke_mantaflow_sim_step(scene,smd);
+				/*smoke_mantaflow_sim_step(scene,smd);*/
 				const char *density_name_format = "./den%04d.uni";
 				const char *wavelets_name_format = "./densityXl_%04d.uni";
 				char buff[100];
 				sprintf(buff, density_name_format, scene->r.cfra);
 				bool read_density = smoke_mantaflow_read(smd->domain, buff, 0);
 				bool read_wavelets = 1;
-				if (smd->domain->flags & MOD_SMOKE_HIGHRES){
+				if (smd->domain->flags & MOD_SMOKE_HIGHRES)
+				{
 					/*highdres*/
 					sprintf(buff, wavelets_name_format, scene->r.cfra);
 					read_wavelets = smoke_mantaflow_read(smd->domain, buff, 1);	
 				}
+			}else{
+				if (framenr != startframe){
+					if (sds->flags & MOD_SMOKE_DISSOLVE) {
+						/* low res dissolve */
+						smoke_dissolve(sds->fluid, sds->diss_speed, sds->flags & MOD_SMOKE_DISSOLVE_LOG);
+						/* high res dissolve */
+						if (sds->wt) {
+							smoke_dissolve_wavelet(sds->wt, sds->diss_speed, sds->flags & MOD_SMOKE_DISSOLVE_LOG);
+						}
+					}
+					step(scene, ob, smd, dm, scene->r.frs_sec / scene->r.frs_sec_base, for_render);
+				}
 			}
-			else{
-				step(scene, ob, smd, dm, scene->r.frs_sec / scene->r.frs_sec_base, for_render);
-			}
-		}
 		// create shadows before writing cache so they get stored
 		smoke_calc_transparency(sds, scene);




More information about the Bf-blender-cvs mailing list