ParMooN
Main Page
Related Pages
Classes
Files
File List
All
Classes
Functions
Variables
Friends
Pages
include
FE
DirectSolver.h
1
// =======================================================================
2
// @(#)DirectSolver.h
3
//
4
// Purpose: solve equation system by direct solver
5
//
6
// Author: Gunar Matthies (06.09.05)
7
//
8
// History: start of implementation 06.09.05 (Gunar Matthies)
9
//
10
// =======================================================================
11
12
#ifndef __DIRECTSOLVER__
13
#define __DIRECTSOLVER__
14
15
#include <SquareMatrix2D.h>
16
#include <Matrix2D.h>
17
18
#ifdef __3D__
19
#include <SquareMatrix3D.h>
20
#include <Matrix3D.h>
21
#endif
22
23
class
TDirectSolver
24
{
25
public
:
26
TDirectSolver
() {};
27
28
virtual
~
TDirectSolver
() {};
29
30
#ifdef __3D__
31
32
virtual
void
SetMatrix
(
TSquareMatrix3D
*sqmatrixA,
33
TMatrix3D
*matrixB1T,
TMatrix3D
*matrixB2T,
TMatrix3D
*matrixB3T,
34
TMatrix3D
*matrixB1,
TMatrix3D
*matrixB2,
TMatrix3D
*matrixB3) = 0;
35
37
virtual
void
SetMatrix
(
TSquareMatrix3D
*sqmatrixA11,
TSquareMatrix3D
*sqmatrixA12,
38
TSquareMatrix3D
*sqmatrixA13,
TSquareMatrix3D
*sqmatrixA21,
39
TSquareMatrix3D
*sqmatrixA22,
TSquareMatrix3D
*sqmatrixA23,
40
TSquareMatrix3D
*sqmatrixA31,
TSquareMatrix3D
*sqmatrixA32,
41
TSquareMatrix3D
*sqmatrixA33,
42
TMatrix3D
*matrixB1T,
TMatrix3D
*matrixB2T,
TMatrix3D
*matrixB3T,
43
TMatrix3D
*matrixB1,
TMatrix3D
*matrixB2,
TMatrix3D
*matrixB3) = 0;
44
#endif
45
46
virtual
void
Analyse() = 0;
47
virtual
void
Factorize() = 0;
48
virtual
void
Solve(
double
*sol,
double
*rhs) = 0;
49
virtual
void
FactorizeSolve(
double
*sol,
double
*rhs) = 0;
50
51
};
52
55
void
DirectSolver(
TSquareMatrix
*matrix,
double
*rhs,
double
*sol);
56
void
DirectSolver(
TSquareMatrix
*matrix,
double
*rhs,
double
*sol,
double
*&Values,
57
int
*&KCol,
int
*&Row,
void
*&Symbolic,
void
*&Numeric,
int
rb_flag);
58
59
void
DirectSolver(
TSquareMatrix
*matrix,
double
*rhs,
double
*sol,
int
N_Rhs,
int
N_Rhs_Disp);
60
void
DirectSolver(
TSquareMatrix
*matrix,
double
*rhs,
double
*sol,
int
N_Rhs,
int
N_Rhs_Disp,
double
*&Values,
61
int
*&KCol,
int
*&Row,
void
*&Symbolic,
void
*&Numeric,
int
rb_flag);
62
63
void
DirectSolverLong(
TSquareMatrix
*matrix,
double
*rhs,
double
*sol);
64
65
void
DirectSolver(
TSquareMatrix2D
*sqmatrixA,
66
TMatrix2D
*matrixB1T,
TMatrix2D
*matrixB2T,
67
TMatrix2D
*matrixB1,
TMatrix2D
*matrixB2,
68
double
*rhs,
double
*sol);
69
70
void
DirectSolver(
TSquareMatrix2D
*sqmatrixA11,
TSquareMatrix2D
*sqmatrixA12,
71
TSquareMatrix2D
*sqmatrixA21,
TSquareMatrix2D
*sqmatrixA22,
72
double
*rhs1,
double
*rhs2,
double
*sol1,
double
*sol2,
int
rb_flag=3);
73
74
/*void DirectSolver(TSquareMatrix2D *sqmatrixA11, TSquareMatrix2D *sqmatrixA12,
75
TSquareMatrix2D *sqmatrixA21, TSquareMatrix2D *sqmatrixA22,
76
TMatrix2D *matrixB1T, TMatrix2D *matrixB2T,
77
TMatrix2D *matrixB1, TMatrix2D *matrixB2,
78
double *rhs, double *sol, int rb_flag=3);*/
79
80
void
DirectSolver(
TSquareMatrix2D
*sqmatrixA11,
TSquareMatrix2D
*sqmatrixA12,
81
TSquareMatrix2D
*sqmatrixA21,
TSquareMatrix2D
*sqmatrixA22,
82
TMatrix2D
*matrixB1T,
TMatrix2D
*matrixB2T,
83
TMatrix2D
*matrixB1,
TMatrix2D
*matrixB2,
84
double
*rhs,
double
*sol,
int
rb_flag);
85
86
//****************************************************************************/
87
// for NSTYPE == 1
88
//****************************************************************************/
89
void
DirectSolver(
TSquareMatrix2D
*sqmatrixA,
90
TMatrix2D
*matrixB1,
TMatrix2D
*matrixB2,
91
double
*rhs,
double
*sol);
92
93
void
DirectSolver(
TSquareMatrix2D
*sqmatrixA,
94
TMatrix2D
*matrixB1,
TMatrix2D
*matrixB2,
95
double
*rhs,
double
*sol,
int
rb_flag);
96
97
//****************************************************************************/
98
// for NSTYPE == 2
99
//****************************************************************************/
100
void
DirectSolver(
TSquareMatrix2D
*sqmatrixA,
101
TMatrix2D
*matrixB1T,
TMatrix2D
*matrixB2T,
102
TMatrix2D
*matrixB1,
TMatrix2D
*matrixB2,
103
TMatrix2D
*matrixC,
104
double
*rhs,
double
*sol);
105
106
//****************************************************************************/
107
// for NSTYPE == 4
108
//****************************************************************************/
109
void
DirectSolver(
TSquareMatrix2D
*sqmatrixA11,
TSquareMatrix2D
*sqmatrixA12,
110
TSquareMatrix2D
*sqmatrixA21,
TSquareMatrix2D
*sqmatrixA22,
111
TMatrix2D
*matrixB1T,
TMatrix2D
*matrixB2T,
112
TMatrix2D
*matrixB1,
TMatrix2D
*matrixB2,
113
double
*rhs,
double
*sol);
114
115
//****************************************************************************/
116
// for NSTYPE == 14
117
//****************************************************************************/
118
void
DirectSolver(
TSquareMatrix2D
*sqmatrixA11,
TSquareMatrix2D
*sqmatrixA12,
119
TSquareMatrix2D
*sqmatrixA21,
TSquareMatrix2D
*sqmatrixA22,
120
TSquareMatrix2D
*sqmatrixC,
121
TMatrix2D
*matrixB1T,
TMatrix2D
*matrixB2T,
122
TMatrix2D
*matrixB1,
TMatrix2D
*matrixB2,
123
double
*rhs,
double
*sol);
124
125
//****************************************************************************/
126
// for Darcy
127
//****************************************************************************/
128
void
DirectSolver(
TSquareMatrix2D
*sqmatrixA,
TSquareMatrix2D
*sqmatrixC,
129
TMatrix2D
*matrixBT,
TMatrix2D
*matrixB,
130
double
*rhs,
double
*sol);
131
132
//****************************************************************************/
133
// for Conformation stress tensor
134
//****************************************************************************/
135
136
void
DirectSolver(
TSquareMatrix2D
*sqmatrixS11,
TSquareMatrix2D
*sqmatrixS12,
137
TSquareMatrix2D
*sqmatrixS21,
TSquareMatrix2D
*sqmatrixS22,
TSquareMatrix2D
*sqmatrixS23,
138
TSquareMatrix2D
*sqmatrixS32,
TSquareMatrix2D
*sqmatrixS33,
139
double
*rhs,
double
*sol);
140
141
//****************************************************************************/
142
// for Deformation tensor in DEVSS
143
//****************************************************************************/
144
void
DirectSolver(
TSquareMatrix2D
*sqmatrixS11,
TSquareMatrix2D
*sqmatrixS22,
145
TSquareMatrix2D
*sqmatrixS33,
double
*rhs,
double
*sol);
146
147
148
#ifdef __3D__
149
//****************************************************************************/
150
// for NSTYPE == 2
151
//****************************************************************************/
152
void
DirectSolver(
TSquareMatrix3D
*sqmatrixA,
153
TMatrix3D
*matrixB1T,
TMatrix3D
*matrixB2T,
154
TMatrix3D
*matrixB3T,
155
TMatrix3D
*matrixB1,
TMatrix3D
*matrixB2,
156
TMatrix3D
*matrixB3,
157
double
*rhs,
double
*sol);
158
//****************************************************************************/
159
// for NSTYPE == 4
160
//****************************************************************************/
161
void
DirectSolver(
TSquareMatrix3D
*sqmatrixA11,
TSquareMatrix3D
*sqmatrixA12,
162
TSquareMatrix3D
*sqmatrixA13,
163
TSquareMatrix3D
*sqmatrixA21,
TSquareMatrix3D
*sqmatrixA22,
164
TSquareMatrix3D
*sqmatrixA23,
165
TSquareMatrix3D
*sqmatrixA31,
TSquareMatrix3D
*sqmatrixA32,
166
TSquareMatrix3D
*sqmatrixA33,
167
TMatrix3D
*matrixB1T,
TMatrix3D
*matrixB2T,
TMatrix3D
*matrixB3T,
168
TMatrix3D
*matrixB1,
TMatrix3D
*matrixB2,
TMatrix3D
*matrixB3,
169
double
*rhs,
double
*sol,
int
flag);
170
171
172
void
DirectSolver(
TSquareMatrix3D
**sqmatrices,
int
n_row,
int
n_column,
173
double
*sol,
double
*rhs);
174
175
#endif
176
#endif
TSquareMatrix2D
Definition:
SquareMatrix2D.h:20
TSquareMatrix3D
Definition:
SquareMatrix3D.h:20
TSquareMatrix
Definition:
SquareMatrix.h:20
TMatrix3D
Definition:
Matrix3D.h:20
TMatrix2D
Definition:
Matrix2D.h:20
TDirectSolver::SetMatrix
virtual void SetMatrix(TSquareMatrix3D *sqmatrixA, TMatrix3D *matrixB1T, TMatrix3D *matrixB2T, TMatrix3D *matrixB3T, TMatrix3D *matrixB1, TMatrix3D *matrixB2, TMatrix3D *matrixB3)=0
TDirectSolver
Definition:
DirectSolver.h:23
Generated on Tue May 10 2016 09:07:57 for ParMooN by
1.8.5