[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