[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