Cleanup: remove redundant doxygen \file argument
[blender.git] / intern / smoke / intern / EIGENVALUE_HELPER.h
1 /** \file \ingroup smoke
2  */
3 //////////////////////////////////////////////////////////////////////
4 // This file is part of Wavelet Turbulence.
5 // 
6 // Wavelet Turbulence is free software: you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation, either version 3 of the License, or
9 // (at your option) any later version.
10 // 
11 // Wavelet Turbulence is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 // GNU General Public License for more details.
15 // 
16 // You should have received a copy of the GNU General Public License
17 // along with Wavelet Turbulence.  If not, see <http://www.gnu.org/licenses/>.
18 // 
19 // Copyright 2008 Theodore Kim and Nils Thuerey
20 //
21 //////////////////////////////////////////////////////////////////////
22 // Modified to not require TNT matrix library anymore. It was very slow
23 // when being run in parallel. Required TNT JAMA::Eigenvalue libraries were
24 // converted into independent functions.
25 //              - MiikaH
26 //
27 //////////////////////////////////////////////////////////////////////
28 // Helper function, compute eigenvalues of 3x3 matrix
29 //////////////////////////////////////////////////////////////////////
30
31 #ifndef EIGENVAL_HELPER_H
32 #define EIGENVAL_HELPER_H
33
34 //#include "tnt/jama_eig.h"
35
36 #include <algorithm>
37 #include <cmath>
38
39 using namespace std;
40
41 //////////////////////////////////////////////////////////////////////
42 // eigenvalues of 3x3 non-symmetric matrix
43 //////////////////////////////////////////////////////////////////////
44
45
46 struct sEigenvalue
47 {
48         int n;
49         int issymmetric;
50         float d[3];         /* real part */
51         float e[3];         /* img part */
52         float V[3][3];          /* Eigenvectors */
53
54         float H[3][3];
55    
56
57     float ort[3];
58
59         float cdivr;
60         float cdivi;
61 };
62
63 void Eigentred2(sEigenvalue& eval);
64
65 void Eigencdiv(sEigenvalue& eval, float xr, float xi, float yr, float yi);
66
67 void Eigentql2 (sEigenvalue& eval);
68
69 void Eigenorthes (sEigenvalue& eval);
70
71 void Eigenhqr2 (sEigenvalue& eval);
72
73 int computeEigenvalues3x3(float dout[3], float a[3][3]);
74
75
76 #endif