[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46814] branches/smoke2/intern/smoke/ intern: Remove accidently commited files.
Daniel Genrich
daniel.genrich at gmx.net
Sun May 20 19:26:29 CEST 2012
Revision: 46814
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46814
Author: genscher
Date: 2012-05-20 17:26:29 +0000 (Sun, 20 May 2012)
Log Message:
-----------
Remove accidently commited files.
Removed Paths:
-------------
branches/smoke2/intern/smoke/intern/FLUID_3D_SOLVERS.cpp.bak
branches/smoke2/intern/smoke/intern/main.cpp_disabled
Deleted: branches/smoke2/intern/smoke/intern/FLUID_3D_SOLVERS.cpp.bak
===================================================================
--- branches/smoke2/intern/smoke/intern/FLUID_3D_SOLVERS.cpp.bak 2012-05-20 17:25:45 UTC (rev 46813)
+++ branches/smoke2/intern/smoke/intern/FLUID_3D_SOLVERS.cpp.bak 2012-05-20 17:26:29 UTC (rev 46814)
@@ -1,388 +0,0 @@
-/** \file smoke/intern/FLUID_3D_SOLVERS.cpp
- * \ingroup smoke
- */
-//////////////////////////////////////////////////////////////////////
-// This file is part of Wavelet Turbulence.
-//
-// Wavelet Turbulence is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Wavelet Turbulence is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Wavelet Turbulence. If not, see <http://www.gnu.org/licenses/>.
-//
-// Copyright 2008 Theodore Kim and Nils Thuerey
-//
-// FLUID_3D.cpp: implementation of the FLUID_3D class.
-//
-//////////////////////////////////////////////////////////////////////
-// Both solvers optimized by merging loops and precalculating
-// stuff used in iteration loop.
-// - MiikaH
-//////////////////////////////////////////////////////////////////////
-
-#include "FLUID_3D.h"
-#include <cstring>
-#define SOLVER_ACCURACY 1e-06
-
-//////////////////////////////////////////////////////////////////////
-// solve the heat equation with CG
-//////////////////////////////////////////////////////////////////////
-void FLUID_3D::solveHeat(float* field, float* b, unsigned char* skip)
-{
- int x, y, z;
- const int twoxr = 2 * _xRes;
- size_t index;
- const float heatConst = _dt * _heatDiffusion / (_dx * _dx);
- float *_q, *_residual, *_direction, *_Acenter;
-
- // i = 0
- int i = 0;
-
- _residual = new float[_totalCells]; // set 0
- _direction = new float[_totalCells]; // set 0
- _q = new float[_totalCells]; // set 0
- _Acenter = new float[_totalCells]; // set 0
-
- memset(_residual, 0, sizeof(float)*_totalCells);
- memset(_q, 0, sizeof(float)*_totalCells);
- memset(_direction, 0, sizeof(float)*_totalCells);
- memset(_Acenter, 0, sizeof(float)*_totalCells);
-
- float deltaNew = 0.0f;
-
- // r = b - Ax
- index = _slabSize + _xRes + 1;
- for (z = 1; z < _zRes - 1; z++, index += twoxr)
- for (y = 1; y < _yRes - 1; y++, index += 2)
- for (x = 1; x < _xRes - 1; x++, index++)
- {
- // if the cell is a variable
- _Acenter[index] = 1.0f;
- if (!skip[index])
- {
- // set the matrix to the Poisson stencil in order
- if (!skip[index + 1]) _Acenter[index] += heatConst;
- if (!skip[index - 1]) _Acenter[index] += heatConst;
- if (!skip[index + _xRes]) _Acenter[index] += heatConst;
- if (!skip[index - _xRes]) _Acenter[index] += heatConst;
- if (!skip[index + _slabSize]) _Acenter[index] += heatConst;
- if (!skip[index - _slabSize]) _Acenter[index] += heatConst;
-
- _residual[index] = b[index] - (_Acenter[index] * field[index] +
- field[index - 1] * (skip[index - 1] ? 0.0 : -heatConst) +
- field[index + 1] * (skip[index + 1] ? 0.0 : -heatConst) +
- field[index - _xRes] * (skip[index - _xRes] ? 0.0 : -heatConst) +
- field[index + _xRes] * (skip[index + _xRes] ? 0.0 : -heatConst) +
- field[index - _slabSize] * (skip[index - _slabSize] ? 0.0 : -heatConst) +
- field[index + _slabSize] * (skip[index + _slabSize] ? 0.0 : -heatConst));
- }
- else
- {
- _residual[index] = 0.0f;
- }
-
- _direction[index] = _residual[index];
- deltaNew += _residual[index] * _residual[index];
- }
-
-
- // While deltaNew > (eps^2) * delta0
- const float eps = SOLVER_ACCURACY;
- float maxR = 2.0f * eps;
- while ((i < _iterations) && (maxR > eps))
- {
- // q = Ad
- float alpha = 0.0f;
-
- index = _slabSize + _xRes + 1;
- for (z = 1; z < _zRes - 1; z++, index += twoxr)
- for (y = 1; y < _yRes - 1; y++, index += 2)
- for (x = 1; x < _xRes - 1; x++, index++)
- {
- // if the cell is a variable
- if (!skip[index])
- {
-
- _q[index] = (_Acenter[index] * _direction[index] +
- _direction[index - 1] * (skip[index - 1] ? 0.0 : -heatConst) +
- _direction[index + 1] * (skip[index + 1] ? 0.0 : -heatConst) +
- _direction[index - _xRes] * (skip[index - _xRes] ? 0.0 : -heatConst) +
- _direction[index + _xRes] * (skip[index + _xRes] ? 0.0 : -heatConst) +
- _direction[index - _slabSize] * (skip[index - _slabSize] ? 0.0 : -heatConst) +
- _direction[index + _slabSize] * (skip[index + _slabSize] ? 0.0 : -heatConst));
- }
- else
- {
- _q[index] = 0.0f;
- }
- alpha += _direction[index] * _q[index];
- }
-
- if (fabs(alpha) > 0.0f)
- alpha = deltaNew / alpha;
-
- float deltaOld = deltaNew;
- deltaNew = 0.0f;
-
- maxR = 0.0f;
-
- index = _slabSize + _xRes + 1;
- for (z = 1; z < _zRes - 1; z++, index += twoxr)
- for (y = 1; y < _yRes - 1; y++, index += 2)
- for (x = 1; x < _xRes - 1; x++, index++)
- {
- field[index] += alpha * _direction[index];
-
- _residual[index] -= alpha * _q[index];
- maxR = (_residual[index] > maxR) ? _residual[index] : maxR;
-
- deltaNew += _residual[index] * _residual[index];
- }
-
- float beta = deltaNew / deltaOld;
-
- index = _slabSize + _xRes + 1;
- for (z = 1; z < _zRes - 1; z++, index += twoxr)
- for (y = 1; y < _yRes - 1; y++, index += 2)
- for (x = 1; x < _xRes - 1; x++, index++)
- _direction[index] = _residual[index] + beta * _direction[index];
-
-
- i++;
- }
- // cout << i << " iterations converged to " << maxR << endl;
-
- if (_residual) delete[] _residual;
- if (_direction) delete[] _direction;
- if (_q) delete[] _q;
- if (_Acenter) delete[] _Acenter;
-}
-
-
-void FLUID_3D::solvePressurePre(float* field, float* b, unsigned char* skip)
-{
- int x, y, z;
- size_t index;
- float *_q, *_Precond, *_h, *_residual, *_direction;
-
- // i = 0
- int i = 0;
-
- _residual = new float[_totalCells]; // set 0
- _direction = new float[_totalCells]; // set 0
- _q = new float[_totalCells]; // set 0
- _h = new float[_totalCells]; // set 0
- _Precond = new float[_totalCells]; // set 0
-
- memset(_residual, 0, sizeof(float)*_xRes*_yRes*_zRes);
- memset(_q, 0, sizeof(float)*_xRes*_yRes*_zRes);
- memset(_direction, 0, sizeof(float)*_xRes*_yRes*_zRes);
- memset(_h, 0, sizeof(float)*_xRes*_yRes*_zRes);
- memset(_Precond, 0, sizeof(float)*_xRes*_yRes*_zRes);
-
- float deltaNew = 0.0f;
-
- // r = b - Ax
- index = _slabSize + _xRes + 1;
- for (z = 1; z < _zRes - 1; z++, index += 2 * _xRes)
- for (y = 1; y < _yRes - 1; y++, index += 2)
- for (x = 1; x < _xRes - 1; x++, index++)
- {
- // if the cell is a variable
- float Acenter = 0.0f;
- if (!skip[index])
- {
- // set the matrix to the Poisson stencil in order
- if (!skip[index + 1]) Acenter += 1.;
- if (!skip[index - 1]) Acenter += 1.;
- if (!skip[index + _xRes]) Acenter += 1.;
- if (!skip[index - _xRes]) Acenter += 1.;
- if (!skip[index + _slabSize]) Acenter += 1.;
- if (!skip[index - _slabSize]) Acenter += 1.;
-
- _residual[index] = b[index] - (Acenter * field[index] +
- field[index - 1] * (skip[index - 1] ? 0.0 : -1.0f)+
- field[index + 1] * (skip[index + 1] ? 0.0 : -1.0f)+
- field[index - _xRes] * (skip[index - _xRes] ? 0.0 : -1.0f)+
- field[index + _xRes] * (skip[index + _xRes] ? 0.0 : -1.0f)+
- field[index - _slabSize] * (skip[index - _slabSize] ? 0.0 : -1.0f)+
- field[index + _slabSize] * (skip[index + _slabSize] ? 0.0 : -1.0f) );
- }
- else
- {
- _residual[index] = 0.0f;
- }
-
- // P^-1
- if(Acenter < 1.0)
- _Precond[index] = 0.0;
- else
- _Precond[index] = 1.0 / Acenter;
-
- // p = P^-1 * r
- _direction[index] = _residual[index] * _Precond[index];
-
- deltaNew += _residual[index] * _direction[index];
- }
-
-
- // While deltaNew > (eps^2) * delta0
- const float eps = SOLVER_ACCURACY;
- //while ((i < _iterations) && (deltaNew > eps*delta0))
- float maxR = 2.0f * eps;
- // while (i < _iterations)
- while ((i < _iterations) && (maxR > 0.001*eps))
- {
-
- float alpha = 0.0f;
-
- index = _slabSize + _xRes + 1;
- for (z = 1; z < _zRes - 1; z++, index += 2 * _xRes)
- for (y = 1; y < _yRes - 1; y++, index += 2)
- for (x = 1; x < _xRes - 1; x++, index++)
- {
- // if the cell is a variable
- float Acenter = 0.0f;
- if (!skip[index])
- {
- // set the matrix to the Poisson stencil in order
- if (!skip[index + 1]) Acenter += 1.;
- if (!skip[index - 1]) Acenter += 1.;
- if (!skip[index + _xRes]) Acenter += 1.;
- if (!skip[index - _xRes]) Acenter += 1.;
- if (!skip[index + _slabSize]) Acenter += 1.;
- if (!skip[index - _slabSize]) Acenter += 1.;
-
- _q[index] = Acenter * _direction[index] +
- _direction[index - 1] * (skip[index - 1] ? 0.0 : -1.0f) +
- _direction[index + 1] * (skip[index + 1] ? 0.0 : -1.0f) +
- _direction[index - _xRes] * (skip[index - _xRes] ? 0.0 : -1.0f) +
- _direction[index + _xRes] * (skip[index + _xRes] ? 0.0 : -1.0f)+
- _direction[index - _slabSize] * (skip[index - _slabSize] ? 0.0 : -1.0f) +
- _direction[index + _slabSize] * (skip[index + _slabSize] ? 0.0 : -1.0f);
- }
- else
- {
- _q[index] = 0.0f;
- }
-
- alpha += _direction[index] * _q[index];
- }
-
-
- if (fabs(alpha) > 0.0f)
- alpha = deltaNew / alpha;
-
- float deltaOld = deltaNew;
- deltaNew = 0.0f;
-
- maxR = 0.0;
-
- float tmp;
-
- // x = x + alpha * d
- index = _slabSize + _xRes + 1;
- for (z = 1; z < _zRes - 1; z++, index += 2 * _xRes)
- for (y = 1; y < _yRes - 1; y++, index += 2)
- for (x = 1; x < _xRes - 1; x++, index++)
- {
- field[index] += alpha * _direction[index];
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list