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];

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to