Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/elbeem/intern')
-rw-r--r--intern/elbeem/intern/attributes.h25
-rw-r--r--intern/elbeem/intern/controlparticles.h23
-rw-r--r--intern/elbeem/intern/isosurface.h9
-rw-r--r--intern/elbeem/intern/mvmcoords.h18
-rw-r--r--intern/elbeem/intern/ntl_blenderdumper.h8
-rw-r--r--intern/elbeem/intern/ntl_bsptree.h7
-rw-r--r--intern/elbeem/intern/ntl_geometryclass.h8
-rw-r--r--intern/elbeem/intern/ntl_geometrymodel.h9
-rw-r--r--intern/elbeem/intern/ntl_geometryobject.h9
-rw-r--r--intern/elbeem/intern/ntl_geometryshader.h10
-rw-r--r--intern/elbeem/intern/ntl_lighting.h13
-rw-r--r--intern/elbeem/intern/ntl_matrices.h7
-rw-r--r--intern/elbeem/intern/ntl_ray.h21
-rw-r--r--intern/elbeem/intern/ntl_vector3dim.h9
-rw-r--r--intern/elbeem/intern/ntl_world.h15
-rw-r--r--intern/elbeem/intern/parametrizer.h9
-rw-r--r--intern/elbeem/intern/particletracer.cpp1
-rw-r--r--intern/elbeem/intern/particletracer.h15
-rw-r--r--intern/elbeem/intern/simulation_object.cpp12
-rw-r--r--intern/elbeem/intern/simulation_object.h9
-rw-r--r--intern/elbeem/intern/solver_class.h18
-rw-r--r--intern/elbeem/intern/solver_control.cpp9
-rw-r--r--intern/elbeem/intern/solver_control.h14
-rw-r--r--intern/elbeem/intern/solver_interface.cpp9
-rw-r--r--intern/elbeem/intern/solver_interface.h27
-rw-r--r--intern/elbeem/intern/solver_main.cpp6
26 files changed, 303 insertions, 17 deletions
diff --git a/intern/elbeem/intern/attributes.h b/intern/elbeem/intern/attributes.h
index b2fbd7fd910..f5617313f69 100644
--- a/intern/elbeem/intern/attributes.h
+++ b/intern/elbeem/intern/attributes.h
@@ -14,6 +14,11 @@
#ifndef NTL_ATTRIBUTES_H
#include "utilities.h"
+
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
template<class T> class ntlMatrix4x4;
class ntlSetVec3f;
std::ostream& operator<<( std::ostream& os, const ntlSetVec3f& i );
@@ -110,6 +115,11 @@ class AnimChannel
vector<Scalar> mValue;
/*! anim channel attr times */
vector<double> mTimes;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:AnimChannel")
+#endif
};
@@ -127,6 +137,11 @@ class ntlSetVec3f {
ntlSetVec3f& operator*=( const ntlSetVec3f &v );
vector<ntlVec3f> mVerts;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlSetVec3f")
+#endif
};
@@ -163,6 +178,11 @@ class Attribute
protected:
bool initChannel(int elemSize);
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:Attribute")
+#endif
};
@@ -195,6 +215,11 @@ class AttributeList
bool ignoreParameter(string name, string source);
void print();
protected:
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:AttributeList")
+#endif
};
ntlVec3f channelFindMaxVf (AnimChannel<ntlVec3f> channel);
diff --git a/intern/elbeem/intern/controlparticles.h b/intern/elbeem/intern/controlparticles.h
index 6b4b77881cc..915ede66fe6 100644
--- a/intern/elbeem/intern/controlparticles.h
+++ b/intern/elbeem/intern/controlparticles.h
@@ -18,6 +18,10 @@
#include "ntl_geometrymodel.h"
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
// indicator for LBM inclusion
//#ifndef LBMDIM
@@ -80,6 +84,11 @@ public:
forceAtt = forceVel = forceMaxd = LbmVec(0.,0.,0.);
compAvWeight=0.; compAv=LbmVec(0.);
};
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlForces")
+#endif
};
@@ -115,6 +124,11 @@ public:
// init all zero / defaults
void reset();
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlParticle")
+#endif
};
@@ -128,6 +142,10 @@ public:
// particle positions
std::vector<ControlParticle> particles;
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlParticleSet")
+#endif
};
@@ -296,6 +314,11 @@ protected:
void initTimeArray(LbmFloat t, std::vector<ControlParticle> &parts);
bool checkPointInside(ntlTree *tree, ntlVec3Gfx org, gfxReal &distance);
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlParticles")
+#endif
};
diff --git a/intern/elbeem/intern/isosurface.h b/intern/elbeem/intern/isosurface.h
index be78db9b293..15b923866d3 100644
--- a/intern/elbeem/intern/isosurface.h
+++ b/intern/elbeem/intern/isosurface.h
@@ -15,6 +15,10 @@
#include "ntl_geometryobject.h"
#include "ntl_bsptree.h"
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
#define ISO_STRICT_DEBUG 0
#define ISOSTRICT_EXIT *((int *)0)=0;
@@ -224,6 +228,11 @@ class IsoSurface :
vector<int> mDboundary;
float mSCrad1, mSCrad2;
ntlVec3Gfx mSCcenter;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:IsoSurface")
+#endif
};
diff --git a/intern/elbeem/intern/mvmcoords.h b/intern/elbeem/intern/mvmcoords.h
index cb51e91d467..56d991aac6e 100644
--- a/intern/elbeem/intern/mvmcoords.h
+++ b/intern/elbeem/intern/mvmcoords.h
@@ -34,6 +34,10 @@
#include "ieeefp.h"
#endif
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
// weight and triangle index
class mvmIndexWeight {
public:
@@ -49,6 +53,11 @@ class mvmIndexWeight {
mvmFloat weight;
int index;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:mvmIndexWeight")
+#endif
};
// transfer point with weights
@@ -58,6 +67,11 @@ class mvmTransferPoint {
ntlVec3Gfx lastpos;
//! triangle weights
std::vector<mvmIndexWeight> weights;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:mvmTransferPoint")
+#endif
};
@@ -86,6 +100,10 @@ class MeanValueMeshCoords {
std::vector<mvmTransferPoint> mVertices;
int mNumVerts;
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:MeanValueMeshCoords")
+#endif
};
#endif
diff --git a/intern/elbeem/intern/ntl_blenderdumper.h b/intern/elbeem/intern/ntl_blenderdumper.h
index cd1331afa83..473e746463c 100644
--- a/intern/elbeem/intern/ntl_blenderdumper.h
+++ b/intern/elbeem/intern/ntl_blenderdumper.h
@@ -12,6 +12,10 @@
#ifndef NTL_BLENDERDUMPER_H
#include "ntl_world.h"
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
class ntlBlenderDumper :
public ntlWorld
{
@@ -27,6 +31,10 @@ public:
protected:
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlBlenderDumper")
+#endif
};
#define NTL_BLENDERDUMPER_H
diff --git a/intern/elbeem/intern/ntl_bsptree.h b/intern/elbeem/intern/ntl_bsptree.h
index 775a216fba8..9c6bf37c591 100644
--- a/intern/elbeem/intern/ntl_bsptree.h
+++ b/intern/elbeem/intern/ntl_bsptree.h
@@ -22,6 +22,9 @@
#define BSP_STACK_SIZE 50
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
//! bsp tree stack classes, defined in ntl_bsptree.cpp,
// detailed definition unnecesseary here
@@ -120,6 +123,10 @@ class ntlTree
//! duplicated triangles, inited during subdivide
int mTriDoubles;
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlTree")
+#endif
};
diff --git a/intern/elbeem/intern/ntl_geometryclass.h b/intern/elbeem/intern/ntl_geometryclass.h
index 5b7ff1492db..9d8f1ee23d5 100644
--- a/intern/elbeem/intern/ntl_geometryclass.h
+++ b/intern/elbeem/intern/ntl_geometryclass.h
@@ -16,6 +16,10 @@
#include "attributes.h"
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
//! geometry class type ids
#define GEOCLASSTID_OBJECT 1
#define GEOCLASSTID_SHADER 2
@@ -111,6 +115,10 @@ class ntlGeometryClass
private:
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryClass")
+#endif
};
diff --git a/intern/elbeem/intern/ntl_geometrymodel.h b/intern/elbeem/intern/ntl_geometrymodel.h
index 93fe2076811..08d3bcb16a3 100644
--- a/intern/elbeem/intern/ntl_geometrymodel.h
+++ b/intern/elbeem/intern/ntl_geometrymodel.h
@@ -14,6 +14,10 @@
#include "ntl_geometryobject.h"
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
/*! A simple box object generatedd by 12 triangles */
class ntlGeometryObjModel : public ntlGeometryObject
{
@@ -89,6 +93,11 @@ class ntlGeometryObjModel : public ntlGeometryObject
/*! set data file name */
inline void setFilename(string set) { mFilename = set; }
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryObjModel")
+#endif
};
#endif
diff --git a/intern/elbeem/intern/ntl_geometryobject.h b/intern/elbeem/intern/ntl_geometryobject.h
index 677f132f4c3..2c229193358 100644
--- a/intern/elbeem/intern/ntl_geometryobject.h
+++ b/intern/elbeem/intern/ntl_geometryobject.h
@@ -16,6 +16,11 @@
#include "ntl_geometryclass.h"
#include "ntl_lighting.h"
#include "ntl_ray.h"
+
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
class ntlRenderGlobals;
class ntlTriangle;
@@ -240,6 +245,10 @@ class ntlGeometryObject : public ntlGeometryClass
public:
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryObject")
+#endif
};
#endif
diff --git a/intern/elbeem/intern/ntl_geometryshader.h b/intern/elbeem/intern/ntl_geometryshader.h
index f43df6539e6..7e0d61f453e 100644
--- a/intern/elbeem/intern/ntl_geometryshader.h
+++ b/intern/elbeem/intern/ntl_geometryshader.h
@@ -13,6 +13,11 @@
#define NTL_GEOMETRYSHADER_H
#include "ntl_geometryclass.h"
+
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
class ntlGeometryObject;
class ntlRenderGlobals;
@@ -57,6 +62,11 @@ class ntlGeometryShader :
/*! surface output name for this simulation */
string mOutFilename;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryShader")
+#endif
};
#endif
diff --git a/intern/elbeem/intern/ntl_lighting.h b/intern/elbeem/intern/ntl_lighting.h
index 88fcaef90e6..0cae32f40ad 100644
--- a/intern/elbeem/intern/ntl_lighting.h
+++ b/intern/elbeem/intern/ntl_lighting.h
@@ -14,6 +14,11 @@
#define NTL_LIGHTING_H
#include "ntl_vector3dim.h"
+
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
class ntlMaterial;
class ntlRay;
class ntlRenderGlobals;
@@ -88,6 +93,10 @@ protected:
private:
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlLightObject")
+#endif
};
@@ -195,6 +204,10 @@ public:
//! Set Fresnel on/off
inline void setFresnel(int set) { mFresnel = set; }
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlMaterial")
+#endif
};
diff --git a/intern/elbeem/intern/ntl_matrices.h b/intern/elbeem/intern/ntl_matrices.h
index ab2a30b49f2..597fcf1c64e 100644
--- a/intern/elbeem/intern/ntl_matrices.h
+++ b/intern/elbeem/intern/ntl_matrices.h
@@ -14,6 +14,9 @@
#include "ntl_vector3dim.h"
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
// The basic vector class
template<class Scalar>
@@ -96,6 +99,10 @@ public:
protected:
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlMatrix4x4")
+#endif
};
diff --git a/intern/elbeem/intern/ntl_ray.h b/intern/elbeem/intern/ntl_ray.h
index 5f6d34e3020..6384edcb1b1 100644
--- a/intern/elbeem/intern/ntl_ray.h
+++ b/intern/elbeem/intern/ntl_ray.h
@@ -18,6 +18,10 @@
#include "ntl_geometryobject.h"
#include "ntl_bsptree.h"
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
class ntlTriangle;
class ntlRay;
class ntlTree;
@@ -39,6 +43,11 @@ class ntlIntersection {
ntlRay *ray;
ntlTriangle *tri;
char flags;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlIntersection")
+#endif
};
//! the main ray class
@@ -138,6 +147,10 @@ private:
/*! ID of this ray (from renderglobals */
int mID;
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlRay")
+#endif
};
@@ -225,6 +238,10 @@ private:
/*! ID of last ray that an intersection was calculated for */
int mLastRay;
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlTriangle")
+#endif
};
@@ -410,6 +427,10 @@ private:
/*! shader/obj initializations are only done on first init */
bool mFirstInitDone;
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlScene")
+#endif
};
diff --git a/intern/elbeem/intern/ntl_vector3dim.h b/intern/elbeem/intern/ntl_vector3dim.h
index e3e492c396e..38a6d2da80b 100644
--- a/intern/elbeem/intern/ntl_vector3dim.h
+++ b/intern/elbeem/intern/ntl_vector3dim.h
@@ -32,6 +32,10 @@
#include <stdio.h>
#include <stdlib.h>
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
/* absolute value */
template < class T >
inline T
@@ -205,6 +209,11 @@ protected:
private:
Scalar value[3]; //< Storage of vector values
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlVector3Dim")
+#endif
};
diff --git a/intern/elbeem/intern/ntl_world.h b/intern/elbeem/intern/ntl_world.h
index 6cec098132b..30b7cbf4d92 100644
--- a/intern/elbeem/intern/ntl_world.h
+++ b/intern/elbeem/intern/ntl_world.h
@@ -18,6 +18,11 @@
#include "ntl_geometryobject.h"
#include "simulation_object.h"
#include "elbeem.h"
+
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
class ntlOpenGLRenderer;
class ntlScene;
class SimulationObject;
@@ -119,6 +124,11 @@ class ntlWorld
/*! count no. of frame for correct sim time */
int mSimFrameCnt;
vector<int> mSimFrameValue;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlWorld")
+#endif
};
@@ -389,6 +399,11 @@ private:
bool mSingleFrameMode;
//! filename for single frame mode
string mSingleFrameFilename;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlRenderGlobals")
+#endif
};
diff --git a/intern/elbeem/intern/parametrizer.h b/intern/elbeem/intern/parametrizer.h
index f3ea3186654..2d96b5b039f 100644
--- a/intern/elbeem/intern/parametrizer.h
+++ b/intern/elbeem/intern/parametrizer.h
@@ -17,6 +17,10 @@
#include "utilities.h"
#include "attributes.h"
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
/* parametrizer accuracy */
typedef double ParamFloat;
typedef ntlVec3d ParamVec;
@@ -306,6 +310,11 @@ class Parametrizer {
/*! pointer to the attribute list */
AttributeList *mpAttrs;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:Parametrizer")
+#endif
};
diff --git a/intern/elbeem/intern/particletracer.cpp b/intern/elbeem/intern/particletracer.cpp
index d6bc450198f..593b582d91f 100644
--- a/intern/elbeem/intern/particletracer.cpp
+++ b/intern/elbeem/intern/particletracer.cpp
@@ -53,6 +53,7 @@ ParticleTracer::ParticleTracer() :
ParticleTracer::~ParticleTracer() {
debMsgStd("ParticleTracer::~ParticleTracer",DM_MSG,"destroyed",10);
+ if(mpTrafo) delete mpTrafo;
}
/*****************************************************************************/
diff --git a/intern/elbeem/intern/particletracer.h b/intern/elbeem/intern/particletracer.h
index 5d328907e71..c14c8e2f0cb 100644
--- a/intern/elbeem/intern/particletracer.h
+++ b/intern/elbeem/intern/particletracer.h
@@ -12,6 +12,11 @@
#ifndef NTL_PARTICLETRACER_H
#include "ntl_geometryobject.h"
+
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
template<class Scalar> class ntlMatrix4x4;
// particle types
@@ -131,6 +136,11 @@ class ParticleObject
/* for list constructions */
ParticleObject *mpNext;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ParticleObject")
+#endif
};
@@ -274,6 +284,11 @@ class ParticleTracer :
/* prev pos save interval */
float mTrailTimeLast, mTrailInterval;
int mTrailLength;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ParticleTracer")
+#endif
};
#define NTL_PARTICLETRACER_H
diff --git a/intern/elbeem/intern/simulation_object.cpp b/intern/elbeem/intern/simulation_object.cpp
index 9e98adfc734..99c3b170634 100644
--- a/intern/elbeem/intern/simulation_object.cpp
+++ b/intern/elbeem/intern/simulation_object.cpp
@@ -32,10 +32,6 @@
//! lbm factory functions
LbmSolverInterface* createSolver();
-#if PARALLEL==1
-static int omp_threadcache;
-#endif
-
/******************************************************************************
* Constructor
*****************************************************************************/
@@ -71,10 +67,6 @@ SimulationObject::~SimulationObject()
if(mpParam) delete mpParam;
if(mpParts) delete mpParts;
debMsgStd("SimulationObject",DM_MSG,"El'Beem Done!\n",10);
-#if (PARALLEL == 1)
- omp_set_num_threads(omp_threadcache);
- printf("Resetting omp_threads to cached value %d \n", omp_threadcache);
-#endif
}
@@ -185,9 +177,7 @@ int SimulationObject::initializeLbmSimulation(ntlRenderGlobals *glob)
mpLbm->setSmoothing(1.0 * mpElbeemSettings->surfaceSmoothing, 1.0 * mpElbeemSettings->surfaceSmoothing);
mpLbm->setIsoSubdivs(mpElbeemSettings->surfaceSubdivs);
#if PARALLEL==1
- omp_threadcache = omp_get_max_threads();
- omp_set_num_threads(mpElbeemSettings->threads);
- printf("Setting omp_threads to usersetting %d \n", mpElbeemSettings->threads);
+ mpLbm->setNumOMPThreads(mpElbeemSettings->threads);
#endif
mpLbm->setSizeX(mpElbeemSettings->resolutionxyz);
mpLbm->setSizeY(mpElbeemSettings->resolutionxyz);
diff --git a/intern/elbeem/intern/simulation_object.h b/intern/elbeem/intern/simulation_object.h
index 76684fa6f83..4a89d1510a9 100644
--- a/intern/elbeem/intern/simulation_object.h
+++ b/intern/elbeem/intern/simulation_object.h
@@ -18,6 +18,10 @@
#include "ntl_geometryshader.h"
#include "parametrizer.h"
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
class LbmSolverInterface;
class CellIdentifierInterface;
class ntlTree;
@@ -188,6 +192,11 @@ class SimulationObject :
virtual inline ntlVec3Gfx *getBBStart() { return &mGeoStart; }
virtual inline ntlVec3Gfx *getBBEnd() { return &mGeoEnd; }
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:SimulationObject")
+#endif
};
diff --git a/intern/elbeem/intern/solver_class.h b/intern/elbeem/intern/solver_class.h
index 1962e801a4e..593fea1b998 100644
--- a/intern/elbeem/intern/solver_class.h
+++ b/intern/elbeem/intern/solver_class.h
@@ -21,6 +21,10 @@
#include "ntl_ray.h"
#include <stdio.h>
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
#if PARALLEL==1
#include <omp.h>
#endif // PARALLEL=1
@@ -145,6 +149,11 @@ class UniformFsgrCellIdentifier :
if( x==cid->x && y==cid->y && z==cid->z && level==cid->level ) return true;
return false;
}
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:UniformFsgrCellIdentifier")
+#endif
};
//! information needed for each level in the simulation
@@ -193,6 +202,10 @@ public:
int lSizex, lSizey, lSizez;
int lOffsx, lOffsy, lOffsz;
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:FsgrLevelData")
+#endif
};
@@ -740,6 +753,11 @@ class LbmFsgrSolver :
static LbmFloat lesCoeffOffdiag[ 2 ][ 9 ];
# endif // LBMDIM==2
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmFsgrSolver")
+#endif
};
#undef STCON
diff --git a/intern/elbeem/intern/solver_control.cpp b/intern/elbeem/intern/solver_control.cpp
index 75134804f13..c3015b82f0a 100644
--- a/intern/elbeem/intern/solver_control.cpp
+++ b/intern/elbeem/intern/solver_control.cpp
@@ -225,7 +225,10 @@ LbmFsgrSolver::initCpdata()
// manually switch on! if this is zero, nothing is done...
mpControl->mSetForceStrength = this->mTForceStrength = 1.;
- mpControl->mCons.clear();
+ while (!mpControl->mCons.empty()) {
+ delete mpControl->mCons.back(); mpControl->mCons.pop_back();
+ }
+
// init all control fluid objects
int numobjs = (int)(mpGiObjects->size());
@@ -264,7 +267,9 @@ LbmFsgrSolver::initCpdata()
if(0) {
// manually switch on! if this is zero, nothing is done...
mpControl->mSetForceStrength = this->mTForceStrength = 1.;
- mpControl->mCons.clear();
+ while (!mpControl->mCons.empty()) {
+ delete mpControl->mCons.back(); mpControl->mCons.pop_back();
+ }
// add new set
LbmControlSet *cset;
diff --git a/intern/elbeem/intern/solver_control.h b/intern/elbeem/intern/solver_control.h
index afbe5394918..d20823d1827 100644
--- a/intern/elbeem/intern/solver_control.h
+++ b/intern/elbeem/intern/solver_control.h
@@ -16,6 +16,10 @@
#ifndef LBM_TESTCLASS_H
#define LBM_TESTCLASS_H
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
//class IsoSurface;
class ParticleObject;
class ControlParticles;
@@ -147,6 +151,11 @@ class LbmControlSet {
AnimChannel<ntlVec3f> mcCpScale;
AnimChannel<ntlVec3f> mcCpOffset;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmControlSet")
+#endif
};
@@ -180,6 +189,11 @@ class LbmControlData
// cp debug displau
LbmFloat mDebugCpscale, mDebugVelScale, mDebugCompavScale, mDebugAttScale, mDebugMaxdScale, mDebugAvgVelScale;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmControlData ")
+#endif
};
#endif // LBM_TESTCLASS_H
diff --git a/intern/elbeem/intern/solver_interface.cpp b/intern/elbeem/intern/solver_interface.cpp
index c3421fe1968..d5221048020 100644
--- a/intern/elbeem/intern/solver_interface.cpp
+++ b/intern/elbeem/intern/solver_interface.cpp
@@ -65,6 +65,9 @@ LbmSolverInterface::LbmSolverInterface() :
mDumpRawText(false),
mDumpRawBinary(false),
mDumpRawBinaryZip(true)
+#if PARALLEL==1
+ , mNumOMPThreads(1)
+#endif // PARALLEL==1
{
#if ELBEEM_PLUGIN==1
if(gDebugLevel<=1) setSilent(true);
@@ -670,6 +673,12 @@ void LbmSolverInterface::markedClearList() {
mMarkedCells.clear();
}
+#if PARALLEL==1
+void LbmSolverInterface::setNumOMPThreads(int num_threads) {
+ mNumOMPThreads = num_threads;
+}
+#endif // PARALLEL==1
+
/*******************************************************************************/
/*! string helper functions */
/*******************************************************************************/
diff --git a/intern/elbeem/intern/solver_interface.h b/intern/elbeem/intern/solver_interface.h
index 8f3181a307d..e4720df307b 100644
--- a/intern/elbeem/intern/solver_interface.h
+++ b/intern/elbeem/intern/solver_interface.h
@@ -35,6 +35,11 @@
#include "parametrizer.h"
#include "attributes.h"
#include "isosurface.h"
+
+#ifdef WITH_CXX_GUARDEDALLOC
+# include "MEM_guardedalloc.h"
+#endif
+
class ParticleTracer;
class ParticleObject;
@@ -171,6 +176,11 @@ class LbmCellContents {
CellFlagType flag;
BubbleId bubble;
LbmFloat ffrac;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmCellContents")
+#endif
};
/* struct for the coordinates of a cell in the grid */
@@ -224,6 +234,10 @@ class CellIdentifierInterface {
//! has the grid been traversed?
bool mEnd;
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:CellIdentifierInterface")
+#endif
};
@@ -452,7 +466,9 @@ class LbmSolverInterface
CellIdentifierInterface* markedAdvanceCell();
void markedClearList();
-
+#if PARALLEL==1
+ void setNumOMPThreads(int num_threads);
+#endif // PARALLEL==1
protected:
/*! abort simulation on error... */
@@ -595,6 +611,15 @@ class LbmSolverInterface
bool mDumpRawText;
bool mDumpRawBinary;
bool mDumpRawBinaryZip;
+
+#if PARALLEL==1
+ int mNumOMPThreads;
+#endif // PARALLEL==1
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+ MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmSolverInterface")
+#endif
};
diff --git a/intern/elbeem/intern/solver_main.cpp b/intern/elbeem/intern/solver_main.cpp
index 99278657fd9..46af6740cf1 100644
--- a/intern/elbeem/intern/solver_main.cpp
+++ b/intern/elbeem/intern/solver_main.cpp
@@ -378,7 +378,7 @@ LbmFsgrSolver::mainLoop(int lev)
const int gridLoopBound=1;
GRID_REGION_INIT();
#if PARALLEL==1
-#pragma omp parallel default(shared) \
+#pragma omp parallel default(shared) num_threads(mNumOMPThreads) \
reduction(+: \
calcCurrentMass,calcCurrentVolume, \
calcCellsFilled,calcCellsEmptied, \
@@ -1119,7 +1119,7 @@ LbmFsgrSolver::preinitGrids()
GRID_REGION_INIT();
#if PARALLEL==1
-#pragma omp parallel default(shared) \
+#pragma omp parallel default(shared) num_threads(mNumOMPThreads) \
reduction(+: \
calcCurrentMass,calcCurrentVolume, \
calcCellsFilled,calcCellsEmptied, \
@@ -1156,7 +1156,7 @@ LbmFsgrSolver::standingFluidPreinit()
GRID_REGION_INIT();
#if PARALLEL==1
-#pragma omp parallel default(shared) \
+#pragma omp parallel default(shared) num_threads(mNumOMPThreads) \
reduction(+: \
calcCurrentMass,calcCurrentVolume, \
calcCellsFilled,calcCellsEmptied, \