[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