[Bf-blender-cvs] [c181d0b] soc-2014-fluid: lowres: computing forces only once
Roman Pogribnyi
noreply at git.blender.org
Tue Nov 11 23:43:03 CET 2014
Commit: c181d0b9bee243c7288b3c59c2d7feab3216059a
Author: Roman Pogribnyi
Date: Mon Oct 27 13:38:45 2014 +0100
Branches: soc-2014-fluid
https://developer.blender.org/rBc181d0b9bee243c7288b3c59c2d7feab3216059a
lowres: computing forces only once
===================================================================
M intern/smoke/intern/MANTA.cpp
M intern/smoke/intern/MANTA.h
M intern/smoke/intern/smoke_API.cpp
M source/blender/blenkernel/intern/smoke.c
===================================================================
diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index ecae53d..c05ad5f 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -640,6 +640,7 @@ void Manta_API::updatePointers()
_density = (float* )gridPointer;
}
+
Manta_API::Manta_API(int *res, float dx, float dtdef, int init_heat, int init_fire, int init_colors): _xRes(res[0]), _yRes(res[1]), _zRes(res[2]), _res(0.0f)
{
/*Here, we assume Python script has initalized the solver and all fields*/
@@ -749,4 +750,51 @@ Manta_API::Manta_API(int *res, float dx, float dtdef, int init_heat, int init_fi
// _domainBcRight = _domainBcLeft;
//
// _colloPrev = 1; // default value
-}
\ No newline at end of file
+}
+
+Manta_API::~Manta_API()
+{
+ if (_xVelocity) delete[] _xVelocity;
+ if (_yVelocity) delete[] _yVelocity;
+ if (_zVelocity) delete[] _zVelocity;
+ if (_xVelocityOb) delete[] _xVelocityOb;
+ if (_yVelocityOb) delete[] _yVelocityOb;
+ if (_zVelocityOb) delete[] _zVelocityOb;
+// if (_xVelocityOld) delete[] _xVelocityOld;
+// if (_yVelocityOld) delete[] _yVelocityOld;
+// if (_zVelocityOld) delete[] _zVelocityOld;
+ if (_xForce) delete[] _xForce;
+ if (_yForce) delete[] _yForce;
+ if (_zForce) delete[] _zForce;
+ if (_density) delete[] _density;
+// if (_densityOld) delete[] _densityOld;
+// if (_heat) delete[] _heat;
+// if (_heatOld) delete[] _heatOld;
+ if (_obstacles) delete[] _obstacles;
+
+// if (_xVelocityTemp) delete[] _xVelocityTemp;
+// if (_yVelocityTemp) delete[] _yVelocityTemp;
+// if (_zVelocityTemp) delete[] _zVelocityTemp;
+// if (_densityTemp) delete[] _densityTemp;
+// if (_heatTemp) delete[] _heatTemp;
+
+// if (_flame) delete[] _flame;
+// if (_fuel) delete[] _fuel;
+// if (_fuelTemp) delete[] _fuelTemp;
+// if (_fuelOld) delete[] _fuelOld;
+// if (_react) delete[] _react;
+// if (_reactTemp) delete[] _reactTemp;
+// if (_reactOld) delete[] _reactOld;
+//
+// if (_color_r) delete[] _color_r;
+// if (_color_rOld) delete[] _color_rOld;
+// if (_color_rTemp) delete[] _color_rTemp;
+// if (_color_g) delete[] _color_g;
+// if (_color_gOld) delete[] _color_gOld;
+// if (_color_gTemp) delete[] _color_gTemp;
+// if (_color_b) delete[] _color_b;
+// if (_color_bOld) delete[] _color_bOld;
+// if (_color_bTemp) delete[] _color_bTemp;
+
+ // printf("deleted fluid\n");
+}
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index e38fbfd..fd8f55a 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -42,7 +42,7 @@ private:
Manta_API(const Manta_API &);
Manta_API & operator=(const Manta_API &);
public:
- ~Manta_API() {}
+ ~Manta_API();
Manta_API(int *res, float dx, float dtdef, int init_heat, int init_fire, int init_colors);
void initBlenderRNA(float *alpha, float *beta, float *dt_factor, float *vorticity, int *border_colli, float *burning_rate,
float *flame_smoke, float *flame_smoke_color, float *flame_vorticity, float *ignition_temp, float *max_temp);
diff --git a/intern/smoke/intern/smoke_API.cpp b/intern/smoke/intern/smoke_API.cpp
index 68544e6..6c7fcee 100644
--- a/intern/smoke/intern/smoke_API.cpp
+++ b/intern/smoke/intern/smoke_API.cpp
@@ -986,7 +986,6 @@ extern "C" void smoke_mantaflow_sim_step(Scene *scene, SmokeModifierData *smd)
extern "C" void manta_write_effectors(struct Scene *s, struct SmokeModifierData *smd)
{
assert(smd->domain->manta_obj != NULL);
- manta_update_effectors(s, smd->domain->manta_obj, smd->domain, 0.1f);
int size_x = smd->domain->fluid->_xRes;
int size_y = smd->domain->fluid->_yRes;
int size_z = smd->domain->fluid->_zRes;
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 9f4124b..1e962a5 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -168,6 +168,8 @@ void flame_get_spectrum(unsigned char *UNUSED(spec), int UNUSED(width), float UN
#ifdef WITH_SMOKE
+
+#define USE_MANTA
void smoke_reallocate_fluid(SmokeDomainSettings *sds, float dx, int res[3], int free_old)
{
int use_heat = (sds->active_fields & SM_ACTIVE_HEAT);
@@ -2449,9 +2451,10 @@ static void update_effectors(Scene *scene, Object *ob, SmokeDomainSettings *sds,
float voxelCenter[3] = {0, 0, 0}, vel[3] = {0, 0, 0}, retvel[3] = {0, 0, 0};
unsigned int index = smoke_get_index(x, sds->res[0], y, sds->res[1], z);
+#ifndef USE_MANTA
if (((fuel ? MAX2(density[index], fuel[index]) : density[index]) < FLT_EPSILON) || obstacle[index])
continue;
-
+#endif
vel[0] = velocity_x[index];
vel[1] = velocity_y[index];
vel[2] = velocity_z[index];
More information about the Bf-blender-cvs
mailing list