doxygen: intern/smoke tagged.
[blender.git] / intern / smoke / intern / LU_HELPER.h
1 /** \file smoke/intern/LU_HELPER.h
2  *  \ingroup smoke
3  */
4 //////////////////////////////////////////////////////////////////////
5 // This file is part of Wavelet Turbulence.
6 // 
7 // Wavelet Turbulence is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
11 // 
12 // Wavelet Turbulence is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 // GNU General Public License for more details.
16 // 
17 // You should have received a copy of the GNU General Public License
18 // along with Wavelet Turbulence.  If not, see <http://www.gnu.org/licenses/>.
19 // 
20 // Copyright 2008 Theodore Kim and Nils Thuerey
21 // 
22 //////////////////////////////////////////////////////////////////////
23 // Modified to not require TNT matrix library anymore. It was very slow
24 // when being run in parallel. Required TNT JAMA:LU libraries were
25 // converted into independent functions.
26 //              - MiikaH
27 //////////////////////////////////////////////////////////////////////
28
29 #ifndef LU_HELPER_H
30 #define LU_HELPER_H
31
32 #include <cmath>
33 #include <algorithm>
34
35 using namespace std;
36
37 //////////////////////////////////////////////////////////////////////
38 // Helper function, compute eigenvalues of 3x3 matrix
39 //////////////////////////////////////////////////////////////////////
40
41 struct sLU
42 {
43         float values[3][3];
44         int pivsign;
45         int piv[3];
46 };
47
48
49 int isNonsingular (sLU LU_);
50 sLU computeLU( float a[3][3]);
51 void solveLU3x3(sLU& A, float x[3], float b[3]);
52
53
54 #endif