[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12656] branches/pynodes: -r 12621: 12655 https://svn.blender.org/svnroot/bf-blender/trunk/blender .
Nathan Letwory
jesterking at letwory.net
Thu Nov 22 23:04:46 CET 2007
Revision: 12656
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12656
Author: jesterking
Date: 2007-11-22 23:04:46 +0100 (Thu, 22 Nov 2007)
Log Message:
-----------
-r 12621:12655 https://svn.blender.org/svnroot/bf-blender/trunk/blender .
Modified Paths:
--------------
branches/pynodes/intern/elbeem/extern/elbeem.h
branches/pynodes/intern/elbeem/intern/attributes.cpp
branches/pynodes/intern/elbeem/intern/loop_tools.h
branches/pynodes/intern/elbeem/intern/ntl_vector3dim.h
branches/pynodes/intern/elbeem/intern/particletracer.cpp
branches/pynodes/intern/elbeem/intern/simulation_object.cpp
branches/pynodes/intern/elbeem/intern/solver_class.h
branches/pynodes/intern/elbeem/intern/solver_init.cpp
branches/pynodes/intern/elbeem/intern/solver_interface.cpp
branches/pynodes/intern/elbeem/intern/solver_interface.h
branches/pynodes/intern/elbeem/intern/solver_main.cpp
branches/pynodes/intern/elbeem/intern/solver_util.cpp
branches/pynodes/intern/elbeem/intern/utilities.cpp
branches/pynodes/intern/elbeem/intern/utilities.h
branches/pynodes/projectfiles_vc7/blender/blenlib/BLI_blenlib.vcproj
branches/pynodes/release/scripts/bpymodules/BPyMessages.py
branches/pynodes/release/scripts/flt_export.py
branches/pynodes/release/scripts/flt_filewalker.py
branches/pynodes/release/scripts/flt_import.py
branches/pynodes/release/scripts/import_dxf.py
branches/pynodes/release/scripts/mesh_skin.py
branches/pynodes/release/scripts/mesh_wire.py
branches/pynodes/release/scripts/wizard_curve2tree.py
branches/pynodes/source/blender/blenkernel/intern/action.c
branches/pynodes/source/blender/blenkernel/intern/armature.c
branches/pynodes/source/blender/blenkernel/intern/key.c
branches/pynodes/source/blender/blenkernel/intern/object.c
branches/pynodes/source/blender/blenlib/BLI_arithb.h
branches/pynodes/source/blender/blenlib/intern/arithb.c
branches/pynodes/source/blender/makesdna/DNA_armature_types.h
branches/pynodes/source/blender/makesdna/DNA_key_types.h
branches/pynodes/source/blender/python/api2_2x/Mesh.c
branches/pynodes/source/blender/python/api2_2x/Window.c
branches/pynodes/source/blender/python/api2_2x/doc/Curve.py
branches/pynodes/source/blender/python/api2_2x/doc/Text3d.py
branches/pynodes/source/blender/python/api2_2x/doc/Window.py
branches/pynodes/source/blender/src/buttons_editing.c
branches/pynodes/source/blender/src/buttons_shading.c
branches/pynodes/source/blender/src/drawarmature.c
branches/pynodes/source/blender/src/drawipo.c
branches/pynodes/source/blender/src/drawseq.c
branches/pynodes/source/blender/src/edit.c
branches/pynodes/source/blender/src/editarmature.c
branches/pynodes/source/blender/src/editimasel.c
branches/pynodes/source/blender/src/editseq.c
branches/pynodes/source/blender/src/filesel.c
branches/pynodes/source/blender/src/poseobject.c
branches/pynodes/source/blender/src/transform_conversions.c
Added Paths:
-----------
branches/pynodes/release/scripts/flt_defaultp.py
branches/pynodes/release/scripts/flt_palettemanager.py
branches/pynodes/release/scripts/flt_properties.py
branches/pynodes/release/scripts/flt_toolbar.py
branches/pynodes/source/blender/blenlib/BLI_fnmatch.h
branches/pynodes/source/blender/blenlib/intern/fnmatch.c
Modified: branches/pynodes/intern/elbeem/extern/elbeem.h
===================================================================
--- branches/pynodes/intern/elbeem/extern/elbeem.h 2007-11-22 20:28:24 UTC (rev 12655)
+++ branches/pynodes/intern/elbeem/extern/elbeem.h 2007-11-22 22:04:46 UTC (rev 12656)
@@ -154,7 +154,7 @@
short volumeInitType;
/* name of the mesh, mostly for debugging */
- char *name;
+ const char *name;
} elbeemMesh;
// API functions
Modified: branches/pynodes/intern/elbeem/intern/attributes.cpp
===================================================================
--- branches/pynodes/intern/elbeem/intern/attributes.cpp 2007-11-22 20:28:24 UTC (rev 12655)
+++ branches/pynodes/intern/elbeem/intern/attributes.cpp 2007-11-22 22:04:46 UTC (rev 12656)
@@ -103,7 +103,7 @@
// set that a parameter can be given, and will be ignored...
bool AttributeList::ignoreParameter(string name, string source) {
- name=source=(""); // remove warning
+ name = source = ("");
return false;
}
Modified: branches/pynodes/intern/elbeem/intern/loop_tools.h
===================================================================
--- branches/pynodes/intern/elbeem/intern/loop_tools.h 2007-11-22 20:28:24 UTC (rev 12655)
+++ branches/pynodes/intern/elbeem/intern/loop_tools.h 2007-11-22 22:04:46 UTC (rev 12656)
@@ -54,16 +54,85 @@
-#define unused_GRID_REGION_END() \
- } /* main_region */ \
- // end unusedGRID_REGION_END
-
// -----------------------------------------------------------------------------------
#else // PARALLEL==1
-#include "paraloop.h"
+//#include "paraloop.h"
+#define PERFORM_USQRMAXCHECK USQRMAXCHECK(usqr,ux,uy,uz, calcMaxVlen, calcMxvx,calcMxvy,calcMxvz);
+#define LIST_EMPTY(x) calcListEmpty.push_back( x );
+#define LIST_FULL(x) calcListFull.push_back( x );
+#define FSGR_ADDPART(x) calcListParts.push_back( x );
+
+// parallel region
+//was: # pragma omp parallel default(shared)
+#if COMPRESSGRIDS!=1
+ // requires compressed grids...!
+ ERROR!
+#endif
+
+// loop start
+#define GRID_REGION_START() \
+ { \
+ \
+ \
+ if(mSizez<2) { \
+ mPanic = 1; \
+ errFatal("ParaLoop::2D","Not valid...!", SIMWORLD_GENERICERROR); \
+ } \
+ \
+ \
+ vector<LbmPoint> calcListFull; \
+ vector<LbmPoint> calcListEmpty; \
+ vector<ParticleObject> calcListParts; \
+ LbmFloat calcMxvx, calcMxvy, calcMxvz, calcMaxVlen; \
+ calcMxvx = calcMxvy = calcMxvz = calcMaxVlen = 0.0; \
+ calcListEmpty.reserve(mListEmpty.capacity() / omp_get_num_threads() ); \
+ calcListFull.reserve( mListFull.capacity() / omp_get_num_threads() ); \
+ calcListParts.reserve(mSizex); \
+ \
+ \
+ const int id = omp_get_thread_num(); \
+ const int Nthrds = omp_get_num_threads(); \
+ \
+ \
+ \
+ \
+ \
+ int kdir = 1; \
+ \
+ int kstart=getForZMinBnd(), kend=getForZMaxBnd(mMaxRefine); \
+ if(gridLoopBound>0){ kstart=getForZMin1(); kend=getForZMax1(mMaxRefine); } \
+ LbmFloat *ccel = NULL, *tcel = NULL; \
+ CellFlagType *pFlagSrc=NULL, *pFlagDst=NULL; \
+ \
+ \
+ if(mLevel[mMaxRefine].setCurr==1) { \
+ kdir = -1; \
+ int temp = kend; \
+ kend = kstart-1; \
+ kstart = temp-1; \
+ } \
+ \
+ const int Nj = mLevel[mMaxRefine].lSizey; \
+ int jstart = 0+( id * (Nj / Nthrds) ); \
+ int jend = 0+( (id+1) * (Nj / Nthrds) ); \
+ if( ((Nj/Nthrds) *Nthrds) != Nj) { \
+ errMsg("LbmFsgrSolver","Invalid domain size Nj="<<Nj<<" Nthrds="<<Nthrds); \
+ } \
+ \
+ if(jstart<gridLoopBound) jstart = gridLoopBound; \
+ if(jend>mLevel[mMaxRefine].lSizey-gridLoopBound) jend = mLevel[mMaxRefine].lSizey-gridLoopBound; \
+ \
+ debMsgStd("ParaLoop::OMP",DM_MSG,"Thread:"<<id<<" i:"<<istart<<"-"<<iend<<" j:"<<jstart<<"-"<<jend<<", k:"<<kstart<<"-"<<kend<<" ", 1); \
+ \
+
+
+
+
+// para GRID LOOP END is parainc3
+
#endif // PARALLEL==1
@@ -101,9 +170,11 @@
+
// old loop for COMPRESSGRIDS==0
#define old__GRID_LOOP_START() \
for(int k=kstart;k<kend;++k) { \
for(int j=1;j<mLevel[lev].lSizey-1;++j) { \
for(int i=0;i<mLevel[lev].lSizex-2; ) {
+
Modified: branches/pynodes/intern/elbeem/intern/ntl_vector3dim.h
===================================================================
--- branches/pynodes/intern/elbeem/intern/ntl_vector3dim.h 2007-11-22 20:28:24 UTC (rev 12655)
+++ branches/pynodes/intern/elbeem/intern/ntl_vector3dim.h 2007-11-22 22:04:46 UTC (rev 12656)
@@ -22,6 +22,7 @@
#include <math.h>
#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
// hack for MSVC6.0 compiler
#ifdef _MSC_VER
Modified: branches/pynodes/intern/elbeem/intern/particletracer.cpp
===================================================================
--- branches/pynodes/intern/elbeem/intern/particletracer.cpp 2007-11-22 20:28:24 UTC (rev 12655)
+++ branches/pynodes/intern/elbeem/intern/particletracer.cpp 2007-11-22 22:04:46 UTC (rev 12656)
@@ -325,7 +325,7 @@
// suppress warnings...
vertices = NULL; triangles = NULL;
normals = NULL; objectId = 0;
- time = 0.0;
+ time = 0.;
#else // ELBEEM_PLUGIN
int pcnt = 0;
// currently not used in blender
Modified: branches/pynodes/intern/elbeem/intern/simulation_object.cpp
===================================================================
--- branches/pynodes/intern/elbeem/intern/simulation_object.cpp 2007-11-22 20:28:24 UTC (rev 12655)
+++ branches/pynodes/intern/elbeem/intern/simulation_object.cpp 2007-11-22 22:04:46 UTC (rev 12656)
@@ -15,7 +15,6 @@
#include "solver_interface.h"
#include "particletracer.h"
#include "elbeem.h"
-#include <stdlib.h> /* exit(3) - also in linux */
#ifdef _WIN32
#else
@@ -69,6 +68,7 @@
/*! init tree for certain geometry init */
/*****************************************************************************/
void SimulationObject::initGeoTree() {
+ // unused!! overriden by solver interface
if(mpGlob == NULL) {
errFatal("SimulationObject::initGeoTree error","Requires globals!", SIMWORLD_INITERROR);
return;
@@ -80,7 +80,7 @@
char treeFlag = (1<<(mGeoInitId+4));
mpGiTree = new ntlTree( 20, 4, // warning - fixed values for depth & maxtriangles here...
scene, treeFlag );
- exit(1); // unused!? overriden by solver interface
+ // unused!! overriden by solver interface
}
/*****************************************************************************/
@@ -310,7 +310,7 @@
// dont advance for stopped time
mpLbm->step();
mTime += mpParam->getTimestep();
-//if(mTime>0.001) { errMsg("DEBUG!!!!!!!!","quit mlsu..."); exit(1); } // PROFILE DEBUG TEST!
+ //if(mTime>0.001) { errMsg("DEBUG!!!!!!!!","quit mlsu..."); xit(1); } // PROFILE DEBUG TEST!
}
if(mpLbm->getPanic()) mPanic = true;
Modified: branches/pynodes/intern/elbeem/intern/solver_class.h
===================================================================
--- branches/pynodes/intern/elbeem/intern/solver_class.h 2007-11-22 20:28:24 UTC (rev 12655)
+++ branches/pynodes/intern/elbeem/intern/solver_class.h 2007-11-22 22:04:46 UTC (rev 12656)
@@ -101,7 +101,7 @@
// sirdude fix for solaris
#if !defined(linux) && defined(sun)
#ifndef expf
-#define expf(a) exp((double)(a))
+#define expf(x) exp((double)(x))
#endif
#endif
Modified: branches/pynodes/intern/elbeem/intern/solver_init.cpp
===================================================================
--- branches/pynodes/intern/elbeem/intern/solver_init.cpp 2007-11-22 20:28:24 UTC (rev 12655)
+++ branches/pynodes/intern/elbeem/intern/solver_init.cpp 2007-11-22 22:04:46 UTC (rev 12656)
@@ -655,6 +655,7 @@
int orgSz = mSizez;
double sizeReduction = 1.0;
double memEstFromFunc = -1.0;
+ double memEstFine = -1.0;
string memreqStr("");
bool firstMInit = true;
int minitTries=0;
@@ -672,7 +673,7 @@
firstMInit=false;
calculateMemreqEstimate( mSizex, mSizey, mSizez,
- mMaxRefine, mFarFieldSize, &memEstFromFunc, &memreqStr );
+ mMaxRefine, mFarFieldSize, &memEstFromFunc, &memEstFine, &memreqStr );
double memLimit;
string memLimStr("-");
@@ -685,13 +686,36 @@
memLimit = 16.0* 1024.0*1024.0*1024.0;
memLimStr = string("16GB");
}
- if(memEstFromFunc>memLimit) {
+
+ // restrict max. chunk of 1 mem block to 1GB for windos
+ bool memBlockAllocProblem = false;
+ double maxWinMemChunk = 1100.*1024.*1024.;
+ double maxMacMemChunk = 1200.*1024.*1024.;
+ double maxDefaultMemChunk = 2.*1024.*1024.*1024.;
+ //std::cerr<<" memEstFine "<< memEstFine <<" maxWin:" <<maxWinMemChunk <<" maxMac:" <<maxMacMemChunk ; // DEBUG
+#ifdef WIN32
+ if(memEstFine> maxWinMemChunk) {
+ memBlockAllocProblem = true;
+ }
+#endif // WIN32
+#ifdef __APPLE__
+ if(memEstFine> maxMacMemChunk) {
+ memBlockAllocProblem = true;
+ }
+#endif // Mac
+ if(sizeof(int)==4 && memEstFine>maxDefaultMemChunk) {
+ // max memory chunk for 32bit systems 2gig
+ memBlockAllocProblem = true;
+ }
+
+ if(memEstFromFunc>memLimit || memBlockAllocProblem) {
sizeReduction *= 0.9;
mSizex = (int)(orgSx * sizeReduction);
mSizey = (int)(orgSy * sizeReduction);
mSizez = (int)(orgSz * sizeReduction);
debMsgStd("LbmFsgrSolver::initialize",DM_WARNING,"initGridSizes: memory limit exceeded "<<
//memEstFromFunc<<"/"<<memLimit<<", "<<
+ //memEstFine<<"/"<<maxWinMemChunk<<", "<<
memreqStr<<"/"<<memLimStr<<", "<<
"retrying: "<<PRINT_VEC(mSizex,mSizey,mSizez)<<" org:"<<PRINT_VEC(orgSx,orgSy,orgSz)
, 3 );
@@ -778,10 +802,6 @@
mLevel[ mMaxRefine ].simCellSize = mpParam->getCellSize();
mLevel[ mMaxRefine ].lcellfactor = 1.0;
LONGINT rcellSize = ((mLevel[mMaxRefine].lSizex*mLevel[mMaxRefine].lSizey*mLevel[mMaxRefine].lSizez) *dTotalNum);
- // +4 for safety ?
- mLevel[ mMaxRefine ].mprsFlags[0] = new CellFlagType[ rcellSize/dTotalNum +4 ];
- mLevel[ mMaxRefine ].mprsFlags[1] = new CellFlagType[ rcellSize/dTotalNum +4 ];
- ownMemCheck += 2 * sizeof(CellFlagType) * (rcellSize/dTotalNum +4);
#if COMPRESSGRIDS==0
mLevel[ mMaxRefine ].mprsCells[0] = new LbmFloat[ rcellSize +4 ];
@@ -789,11 +809,34 @@
ownMemCheck += 2 * sizeof(LbmFloat) * (rcellSize+4);
#else // COMPRESSGRIDS==0
LONGINT compressOffset = (mLevel[mMaxRefine].lSizex*mLevel[mMaxRefine].lSizey*dTotalNum*2);
+ // D int tmp = ( (rcellSize +compressOffset +4)/(1024*1024) )*4;
+ // D printf("Debug MEMMMM excee: %d\n", tmp);
mLevel[ mMaxRefine ].mprsCells[1] = new LbmFloat[ rcellSize +compressOffset +4 ];
mLevel[ mMaxRefine ].mprsCells[0] = mLevel[ mMaxRefine ].mprsCells[1]+compressOffset;
ownMemCheck += sizeof(LbmFloat) * (rcellSize +compressOffset +4);
#endif // COMPRESSGRIDS==0
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list