[Bf-blender-cvs] [6ca148dad01] fluid-mantaflow: Mantaflow: Minor sanity checks
Sebastián Barschkis
noreply at git.blender.org
Thu Dec 12 22:35:04 CET 2019
Commit: 6ca148dad01aeb9a2275221bcc3291eff7461d34
Author: Sebastián Barschkis
Date: Thu Dec 12 22:34:52 2019 +0100
Branches: fluid-mantaflow
https://developer.blender.org/rB6ca148dad01aeb9a2275221bcc3291eff7461d34
Mantaflow: Minor sanity checks
===================================================================
M intern/mantaflow/intern/MANTA_main.cpp
M intern/mantaflow/intern/strings/smoke_script.h
M source/blender/blenkernel/intern/manta.c
===================================================================
diff --git a/intern/mantaflow/intern/MANTA_main.cpp b/intern/mantaflow/intern/MANTA_main.cpp
index bdec46f4661..458fbf0813c 100644
--- a/intern/mantaflow/intern/MANTA_main.cpp
+++ b/intern/mantaflow/intern/MANTA_main.cpp
@@ -60,23 +60,23 @@ MANTA::MANTA(int *res, FluidModifierData *mmd) : mCurrentID(++solverID)
mmd->domain->fluid = this;
- mUsingHeat = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_HEAT;
- mUsingFire = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_FIRE;
- mUsingColors = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_COLORS;
- mUsingObstacle = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_OBSTACLE;
- mUsingInvel = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_INVEL;
- mUsingOutflow = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_OUTFLOW;
- mUsingNoise = mmd->domain->flags & FLUID_DOMAIN_USE_NOISE;
- mUsingMesh = mmd->domain->flags & FLUID_DOMAIN_USE_MESH;
- mUsingMVel = mmd->domain->flags & FLUID_DOMAIN_USE_SPEED_VECTORS;
- mUsingGuiding = mmd->domain->flags & FLUID_DOMAIN_USE_GUIDING;
- mUsingFractions = mmd->domain->flags & FLUID_DOMAIN_USE_FRACTIONS;
- mUsingLiquid = mmd->domain->type == FLUID_DOMAIN_TYPE_LIQUID;
- mUsingSmoke = mmd->domain->type == FLUID_DOMAIN_TYPE_GAS;
- mUsingDrops = mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_SPRAY;
- mUsingBubbles = mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_BUBBLE;
- mUsingFloats = mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_FOAM;
- mUsingTracers = mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_TRACER;
+ mUsingLiquid = (mmd->domain->type == FLUID_DOMAIN_TYPE_LIQUID);
+ mUsingSmoke = (mmd->domain->type == FLUID_DOMAIN_TYPE_GAS);
+ mUsingHeat = (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_HEAT) && mUsingSmoke;
+ mUsingFire = (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_FIRE) && mUsingSmoke;
+ mUsingColors = (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_COLORS) && mUsingSmoke;
+ mUsingNoise = (mmd->domain->flags & FLUID_DOMAIN_USE_NOISE) && mUsingSmoke;
+ mUsingFractions = (mmd->domain->flags & FLUID_DOMAIN_USE_FRACTIONS) && mUsingLiquid;
+ mUsingDrops = (mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_SPRAY) && mUsingLiquid;
+ mUsingBubbles = (mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_BUBBLE) && mUsingLiquid;
+ mUsingFloats = (mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_FOAM) && mUsingLiquid;
+ mUsingTracers = (mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_TRACER) && mUsingLiquid;
+ mUsingMesh = (mmd->domain->flags & FLUID_DOMAIN_USE_MESH) && mUsingLiquid;
+ mUsingMVel = (mmd->domain->flags & FLUID_DOMAIN_USE_SPEED_VECTORS) && mUsingLiquid;
+ mUsingObstacle = (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_OBSTACLE);
+ mUsingInvel = (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_INVEL);
+ mUsingOutflow = (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_OUTFLOW);
+ mUsingGuiding = (mmd->domain->flags & FLUID_DOMAIN_USE_GUIDING);
// Simulation constants
mTempAmb = 0; // TODO: Maybe use this later for buoyancy calculation
diff --git a/intern/mantaflow/intern/strings/smoke_script.h b/intern/mantaflow/intern/strings/smoke_script.h
index 1c839fa6d52..ef300fc5c17 100644
--- a/intern/mantaflow/intern/strings/smoke_script.h
+++ b/intern/mantaflow/intern/strings/smoke_script.h
@@ -155,9 +155,9 @@ smoke_noise_dict_s$ID$ = dict(density_noise=density_sn$ID$, uv0_noise=uvGrid0_s$
const std::string smoke_alloc_colors =
"\n\
# Sanity check, clear grids first\n\
-del color_r_s$ID$\n\
-del color_g_s$ID$\n\
-del color_b_s$ID$\n\
+if 'color_r_s$ID$' in globals(): del color_r_s$ID$\n\
+if 'color_g_s$ID$' in globals(): del color_g_s$ID$\n\
+if 'color_b_s$ID$' in globals(): del color_b_s$ID$\n\
\n\
mantaMsg('Allocating colors')\n\
color_r_s$ID$ = s$ID$.create(RealGrid)\n\
@@ -175,9 +175,9 @@ if 'smoke_data_dict_s$ID$' in globals():\n\
const std::string smoke_alloc_colors_noise =
"\n\
# Sanity check, clear grids first\n\
-del color_r_sn$ID$\n\
-del color_g_sn$ID$\n\
-del color_b_sn$ID$\n\
+if 'color_r_sn$ID$' in globals(): del color_r_sn$ID$\n\
+if 'color_g_sn$ID$' in globals(): del color_g_sn$ID$\n\
+if 'color_b_sn$ID$' in globals(): del color_b_sn$ID$\n\
\n\
mantaMsg('Allocating colors noise')\n\
color_r_sn$ID$ = sn$ID$.create(RealGrid)\n\
@@ -211,8 +211,8 @@ color_b_sn$ID$.multConst($COLOR_B$)\n";
const std::string smoke_alloc_heat =
"\n\
# Sanity check, clear grids first\n\
-del heat_s$ID$\n\
-del heatIn_s$ID$\n\
+if 'heat_s$ID$' in globals(): del heat_s$ID$\n\
+if 'heatIn_s$ID$' in globals(): del heatIn_s$ID$\n\
\n\
mantaMsg('Allocating heat')\n\
heat_s$ID$ = s$ID$.create(RealGrid)\n\
@@ -225,11 +225,11 @@ if 'smoke_data_dict_s$ID$' in globals():\n\
const std::string smoke_alloc_fire =
"\n\
# Sanity check, clear grids first\n\
-del flame_s$ID$\n\
-del fuel_s$ID$\n\
-del react_s$ID$\n\
-del fuelIn_s$ID$\n\
-del reactIn_s$ID$\n\
+if 'flame_s$ID$' in globals(): del flame_s$ID$\n\
+if 'fuel_s$ID$' in globals(): del fuel_s$ID$\n\
+if 'react_s$ID$' in globals(): del react_s$ID$\n\
+if 'fuelIn_s$ID$' in globals(): del fuelIn_s$ID$\n\
+if 'reactIn_s$ID$' in globals(): del reactIn_s$ID$\n\
\n\
mantaMsg('Allocating fire')\n\
flame_s$ID$ = s$ID$.create(RealGrid)\n\
@@ -246,9 +246,9 @@ if 'smoke_data_dict_s$ID$' in globals():\n\
const std::string smoke_alloc_fire_noise =
"\n\
# Sanity check, clear grids first\n\
-del flame_sn$ID$\n\
-del fuel_sn$ID$\n\
-del react_sn$ID$\n\
+if 'flame_sn$ID$' in globals(): del flame_sn$ID$\n\
+if 'fuel_sn$ID$' in globals(): del fuel_sn$ID$\n\
+if 'react_sn$ID$' in globals(): del react_sn$ID$\n\
\n\
mantaMsg('Allocating fire noise')\n\
flame_sn$ID$ = sn$ID$.create(RealGrid)\n\
diff --git a/source/blender/blenkernel/intern/manta.c b/source/blender/blenkernel/intern/manta.c
index dedb6654397..ff07ed24454 100644
--- a/source/blender/blenkernel/intern/manta.c
+++ b/source/blender/blenkernel/intern/manta.c
@@ -1453,6 +1453,10 @@ static void update_obstacleflags(FluidDomainSettings *mds, Object **collobjs, in
int active_fields = mds->active_fields;
unsigned int collIndex;
+ /* First, remove all flags that we want to update. */
+ int prev_flags = (FLUID_DOMAIN_ACTIVE_OBSTACLE | FLUID_DOMAIN_ACTIVE_GUIDING);
+ active_fields &= ~prev_flags;
+
/* Monitor active fields based on flow settings */
for (collIndex = 0; collIndex < numcollobj; collIndex++) {
Object *collob = collobjs[collIndex];
@@ -3133,6 +3137,12 @@ static void update_flowsflags(FluidDomainSettings *mds, Object **flowobjs, int n
continue;
}
+ /* First, remove all flags that we want to update. */
+ int prev_flags = (FLUID_DOMAIN_ACTIVE_INVEL | FLUID_DOMAIN_ACTIVE_OUTFLOW |
+ FLUID_DOMAIN_ACTIVE_HEAT | FLUID_DOMAIN_ACTIVE_FIRE |
+ FLUID_DOMAIN_ACTIVE_COLOR_SET | FLUID_DOMAIN_ACTIVE_COLORS);
+ active_fields &= ~prev_flags;
+
if ((mmd2->type & MOD_MANTA_TYPE_FLOW) && mmd2->flow) {
FluidFlowSettings *mfs = mmd2->flow;
if (!mfs) {
More information about the Bf-blender-cvs
mailing list