Revision: 14462
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14462
Author:   genscher
Date:     2008-04-18 20:25:11 +0200 (Fri, 18 Apr 2008)

Log Message:
-----------
Fluid: got to the real problem of the issue --> wrong float epsilon resulted in 
normalizing a vector to fail, reverted other change from today

Modified Paths:
--------------
    trunk/blender/intern/elbeem/intern/ntl_vector3dim.h
    trunk/blender/intern/elbeem/intern/solver_util.cpp

Modified: trunk/blender/intern/elbeem/intern/ntl_vector3dim.h
===================================================================
--- trunk/blender/intern/elbeem/intern/ntl_vector3dim.h 2008-04-18 14:25:36 UTC 
(rev 14461)
+++ trunk/blender/intern/elbeem/intern/ntl_vector3dim.h 2008-04-18 18:25:11 UTC 
(rev 14462)
@@ -825,7 +825,7 @@
 #endif
 #endif
 #endif
-
+               
 #if GFX_PRECISION==1
 typedef float gfxReal;
 #define GFX_REAL_MAX __FLT_MAX__
@@ -833,7 +833,7 @@
 //#define vecGfx2F(x) (x)
 //#define vecD2Gfx(x) vecD2F(x)
 //#define vecGfx2D(x) vecF2D(x)
-#define VECTOR_EPSILON (1e-5f)
+#define VECTOR_EPSILON (1.192092896e-07F)
 #else
 typedef double gfxReal;
 #define GFX_REAL_MAX __DBL_MAX__
@@ -841,7 +841,7 @@
 //#define vecGfx2F(x) vecF2D(x)
 //#define vecD2Gfx(x) (x)
 //#define vecGfx2D(x) (x)
-#define VECTOR_EPSILON (1e-10)
+#define VECTOR_EPSILON (2.2204460492503131e-016)
 #endif
 
 /* fixed double prec. type, for epxlicitly double values */

Modified: trunk/blender/intern/elbeem/intern/solver_util.cpp
===================================================================
--- trunk/blender/intern/elbeem/intern/solver_util.cpp  2008-04-18 14:25:36 UTC 
(rev 14461)
+++ trunk/blender/intern/elbeem/intern/solver_util.cpp  2008-04-18 18:25:11 UTC 
(rev 14462)
@@ -37,10 +37,10 @@
        int lev = mMaxRefine;
        int workSet = mLevel[lev].setCurr;
 
-       int mainGravDir=0;
+       int mainGravDir=6; // if normalizing fails, we asume z-direction gravity
        LbmFloat mainGravLen = 0.;
        FORDF1{
-               LbmFloat thisGravLen = 
dot(LbmVec(dfVecX[l],dfVecY[l],dfVecZ[l]), 
getNormalized(mLevel[mMaxRefine].gravity) );
+               LbmFloat thisGravLen = 
dot(LbmVec(dfVecX[l],dfVecY[l],dfVecZ[l]), 
getNormalized(mLevel[mMaxRefine].gravity) );  
                if(thisGravLen>mainGravLen) {
                        mainGravLen = thisGravLen;
                        mainGravDir = l;
@@ -113,7 +113,7 @@
                                        if(nbflag&CFInter){ intercnt++; }
 
                                        // check all directions otherwise we 
get bugs with splashes on obstacles
-                                       // if(l!=mainGravDir) continue; // only 
check bnd along main grav. dir
+                                       if(l!=mainGravDir) continue; // only 
check bnd along main grav. dir
                                        
//if((nbflag&CFBnd)&&(nbflag&CFBndNoslip)){ noslipbnd=1; }
                                        if((nbflag&CFBnd)){ noslipbnd=1; }
                                }


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

Reply via email to