Revision: 46620
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46620
Author:   genscher
Date:     2012-05-13 23:29:49 +0000 (Sun, 13 May 2012)
Log Message:
-----------
a) Remove file dependencies, doing all in memory now
b) Fix crashes on Smoke init because of missing folder

Now we can start bringing back functionality.

Modified Paths:
--------------
    branches/smoke2/intern/smoke/intern/source/fileio.cpp
    branches/smoke2/intern/smoke/intern/source/smoke.cpp
    branches/smoke2/intern/smoke/intern/source/solverinit.cpp
    branches/smoke2/intern/smoke/intern/source/solverinit.h

Modified: branches/smoke2/intern/smoke/intern/source/fileio.cpp
===================================================================
--- branches/smoke2/intern/smoke/intern/source/fileio.cpp       2012-05-13 
23:08:56 UTC (rev 46619)
+++ branches/smoke2/intern/smoke/intern/source/fileio.cpp       2012-05-13 
23:29:49 UTC (rev 46620)
@@ -283,7 +283,7 @@
                                        gI = mpPlParams->getGridInt(mGrid);
                                        head.bytesPerElement = sizeof(int);
                                        head.elementType = 0;
-                                       head.elements = 1;                      
                
+                                       head.elements = 1;      
                                }
                                else if (mpPlParams->haveGridReal(mGrid)) {
                                        gR = mpPlParams->getGridReal(mGrid);
@@ -394,6 +394,7 @@
                        mGrid = params.FindOneString("grid", "");
                        mSolver = params.FindOneString("solver", "" );
                        mFile = params.FindOneString("file", "" );
+                       mSrcGrid = params.FindOneString("srcgrid", "");
 
                        // interpolate, but keep #mInterpolBorder cells from 
each side unscaled
                        // -1 means off, 0 means scale everything
@@ -412,6 +413,19 @@
                        nVec3i gridSize = flags->getSize();
                        if (gDim==2) gridSize[2] = 1;
 
+
+                       /* DG: Only Int Grid supported for the moment */
+                       /* Used during solver creation "new SolverObject()" 
with existing flags grid */
+                       if(!mSrcGrid.empty())
+                       {
+                               // delete old grid
+                               delete param->mGridsInt[mGrid];
+                               // exchange grid pointer
+                               param->mGridsInt[mGrid] = 
param->mGridsInt[mSrcGrid];
+
+                               return true;
+                       }
+
                        // load file into byte array
                        UniversalHeader head;
                        gzFile gzf = gzopen(mFile.c_str(),"r");
@@ -456,7 +470,7 @@
                };
 
        protected:              
-               std::string mGrid, mFile, mSolver;
+               std::string mGrid, mFile, mSolver, mSrcGrid;
                bool onlyFluid;
                int mInterpolBorder;
 };

Modified: branches/smoke2/intern/smoke/intern/source/smoke.cpp
===================================================================
--- branches/smoke2/intern/smoke/intern/source/smoke.cpp        2012-05-13 
23:08:56 UTC (rev 46619)
+++ branches/smoke2/intern/smoke/intern/source/smoke.cpp        2012-05-13 
23:29:49 UTC (rev 46620)
@@ -43,27 +43,27 @@
        _dist = _solvers[0]->getParams().getGridReal("dist");
 
        freeAllSolvers();
-/*
+
        {
                Vec3 inflow (0.4, 0, 0);
                const int nFrames = 50;
                precompute("static", inflow, nFrames, false);
        }
-*/
+
        printf("-------------------- SMOKE INIT B-------------------------\n");
        {
                Vec3 inflow (0.4, 0, 0);
-               SolverObject* solverStep = new SolverObject( "run_static",    
_flags /* "scene/static-flags.gz" */ );
+               SolverObject* solverStep = new SolverObject( "run_static", 
_flags);
 
                solverStep->getParams().mU0 = inflow;
                solverStep->getParams().mTimestepAnim = 0.005;
                        
                // create grids
-               solverStep->createVec3Grid ( "mean-flow" );
+               solverStep->createVec3Grid ( "mean-flow", _meanVel );
                solverStep->createRealGrid ( "dist", _dist );
                solverStep->createVec3Grid ( "vorticity", DDF_GRID_NO_FREE );
                solverStep->createVec3Grid ( "ABL" );
-               solverStep->createVec3Grid ( "pre-ABL" );
+               solverStep->createVec3Grid ( "pre-ABL", _abl );
                solverStep->createVec3Grid ( "vort" );
                solverStep->createRealGrid ( "pdf" );
                solverStep->createRealGrid ( "density", DDF_GRID_NO_FREE );
@@ -72,8 +72,8 @@
 
                // program solverStep initialization process
                // solverStep->addInitPlugin ( "load-universal", 
StringArg("grid","dist") + StringArg("file","scene/static-dist.gz"));
-               solverStep->addInitPlugin ( "load-universal", 
StringArg("grid","mean-flow") + StringArg("file","scene/static-mean.gz"));
-               solverStep->addInitPlugin ( "load-universal", 
StringArg("grid","pre-ABL") + StringArg("file","scene/static-abl.gz"));
+               // solverStep->addInitPlugin ( "load-universal", 
StringArg("grid","mean-flow") + StringArg("file","scene/static-mean.gz"));
+               // solverStep->addInitPlugin ( "load-universal", 
StringArg("grid","pre-ABL") + StringArg("file","scene/static-abl.gz"));
                
                // program solver main loop
                solverStep->addPlugin ( "copy-grid", StringArg ( 
"src","mean-flow" ) + StringArg ( "dest","vel-curr") );
@@ -110,23 +110,25 @@
        SolverObject* solverPreCalc = new SolverObject( "precompute", _flags );
 
        // create grids
-       solverPreCalc->createVec3Grid ( "normal" );
-       solverPreCalc->createRealGrid ( "dist" );
-       solverPreCalc->createVec3Grid ( "mean-vel" );
-       solverPreCalc->createVec3Grid ( "abl" );
+       solverPreCalc->createVec3Grid ( "normal", _normal );
+       solverPreCalc->createRealGrid ( "dist", _dist );
+       solverPreCalc->createVec3Grid ( "mean-vel", DDF_GRID_NO_FREE );
+       solverPreCalc->createVec3Grid ( "abl", DDF_GRID_NO_FREE );
        solverPreCalc->addStandardSolverGrids();
        
        // additional grids for rot. precomputation
+#if 0
+       // DG: not supoprted yet: possible problems with "flags" grid loading 
into obstacle-flags?
        if (rotate) {
                solverPreCalc->createIntGrid ("obstacle-flags");
                solverPreCalc->createIntGrid ("empty-flags");
                solverPreCalc->addInitPlugin ( "load-universal", 
StringArg("grid","obstacle-flags") + StringArg("file","scene/" + name + 
"-flags.gz"));
                solverPreCalc->addInitPlugin ( "init-box-domain",  
StringArg("gridname","empty-flags") + IntArg ( "flag-inside",FFLUID ) + IntArg 
( "flag-border",FINFLOW ) );          
        }
-
+#endif
        // load grids, initialize fluid velocities
-       solverPreCalc->addInitPlugin ( "load-universal", 
StringArg("grid","dist") + StringArg("file","scene/" + name + "-dist.gz"));
-       solverPreCalc->addInitPlugin ( "load-universal", 
StringArg("grid","normal") + StringArg("file","scene/" + name + "-normal.gz"));
+       // solverPreCalc->addInitPlugin ( "load-universal", 
StringArg("grid","dist") + StringArg("file","scene/" + name + "-dist.gz"));
+       // solverPreCalc->addInitPlugin ( "load-universal", 
StringArg("grid","normal") + StringArg("file","scene/" + name + "-normal.gz"));
        solverPreCalc->addInitPlugin ( "set-conditional", StringArg ( 
"gridname","vel-curr" ) + VecArg ( "target-vec",inflow ) + IntArg ( "flag", 
FFLUID ) );
 
        // program solver main loop
@@ -146,13 +148,16 @@
        // program final steps
        solverPreCalc->addEndPlugin ( "calc-abl", StringArg 
("mean-vel","mean-vel") + StringArg ("dist","dist") + 
StringArg("normal","normal") + StringArg("abl","abl") + RealArg("d", 1.7));
        
+#if 0
+       // DG: dynamic not supported yet
        if (dynamic)
                solverPreCalc->addEndPlugin ( "add-database", 
StringArg("grid","abl") + StringArg("normal","normal") + VecArg("u0",rotate ? 
(rotSpeed*rotAxis):inflow));
        else {
                solverPreCalc->addEndPlugin ( "dump-universal", StringArg ( 
"grid","abl" ) + StringArg ( "override-name","scene/" + name + "-abl" )  + 
IntArg ( "single-dump", 1 ) );   
                solverPreCalc->addEndPlugin ( "dump-universal", StringArg ( 
"grid","mean-vel" ) + StringArg ( "override-name","scene/" + name + "-mean" ) + 
IntArg ( "single-dump", 1 ) );
        }
-               
+#endif 
+
        _solvers.push_back(solverPreCalc);
 
        initAllSolvers();
@@ -163,8 +168,8 @@
 
        finalizeAllSolvers();
 
-       // _abl = _solvers[0]->getParams().getGridVec3("abl");
-       // _meanVel = _solvers[0]->getParams().getGridVec3("mean-vel");
+       _abl = _solvers[0]->getParams().getGridVec3("abl");
+       _meanVel = _solvers[0]->getParams().getGridVec3("mean-vel");
 
        freeAllSolvers();
 }

Modified: branches/smoke2/intern/smoke/intern/source/solverinit.cpp
===================================================================
--- branches/smoke2/intern/smoke/intern/source/solverinit.cpp   2012-05-13 
23:08:56 UTC (rev 46619)
+++ branches/smoke2/intern/smoke/intern/source/solverinit.cpp   2012-05-13 
23:29:49 UTC (rev 46620)
@@ -80,7 +80,9 @@
 SolverObject::SolverObject(const string& name, Grid<int> *flags)
 {
        nVec3i size = flags->getSize();
-       init(name, size, flags);
+       init(name, size);
+       createIntGrid("srcflags", flags);
+       addInitPlugin ("load-universal", StringArg("grid","flags") + 
StringArg("srcgrid", "srcflags"));
 }
 
 SolverObject::~SolverObject()
@@ -124,42 +126,6 @@
        #endif
 }
 
-// initialize default solver params
-void SolverObject::init(const string& name, const nVec3i& size, Grid<int> 
*flagsGrid)
-{
-       ParamSet par;
-       par.AddInt("host-vorticity-system", 1);
-       par.AddFloat("timestep", 1.0);
-       par.AddVector("gridsize", vec2R(size));
-       par.AddFloat("cg-max-iter-fac", 0.30);
-       par.AddFloat("cg-accuracy", 0.001);
-               // setup plugin lists
-       mInitPlugins.clear();
-       mPlugins.clear();
-       mEndPlugins.clear();
-       mStarted = false;
-
-       // create solver
-       SolverParams* solverParam = new SolverParams("p_" + name);
-       solverParam->initFromParamSet(par);
-       mSolver = new FluidSolver("s_" + name);
-       mSolver->setParams(solverParam);
-
-       // create default grids
-       createIntGrid("flags", flagsGrid); 
-       createVec3Grid("vel-curr");
-       createRealGrid("pressure");
-
-       // globally register solver
-       gFluidSolvers[mSolver->getName()] = mSolver;
-       if (gpFsolver == NULL) gpFsolver = mSolver;
-
-       // setup GUI params
-        #if DDF_GLUTGUI == 1
-       gGlutGuiParams.AddString("solvername", gpFsolver->getName());
-       #endif
-}
-
 void SolverObject::forceInit() {
        if (!mStarted) {
                // start solver

Modified: branches/smoke2/intern/smoke/intern/source/solverinit.h
===================================================================
--- branches/smoke2/intern/smoke/intern/source/solverinit.h     2012-05-13 
23:08:56 UTC (rev 46619)
+++ branches/smoke2/intern/smoke/intern/source/solverinit.h     2012-05-13 
23:29:49 UTC (rev 46620)
@@ -72,7 +72,6 @@
 
                protected:
                void init(const std::string& name, const nVec3i& gridSize, int 
gridFlags = 0);
-               void init(const string& name, const nVec3i& size, Grid<int> 
*flagsGrid);
                SolverPlugin* createPlugin(const std::string& name, const 
PluginArgument&);
                
                FluidSolver* mSolver;

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

Reply via email to