ParMooN
 All Classes Functions Variables Friends Pages
FEM_TVD_FCT.h
1 // =======================================================================
2 // FEM_TVD_FCT.h
3 //
4 // Purpose: fem-tvd and fem-fct methods for scalar cdr equations
5 //
6 // Authors: Volker John, 2008/02/07
7 //
8 // =======================================================================
9 
10 #ifndef __FEM_TVD_FCT__
11 #define __FEM_TVD_FCT__
12 
13 //**************************************************************
14 //compute the lumped matrix
15 //output is a vector
16 //**************************************************************
17 #ifdef __2D__
18 void LumpMassMatrixToVector(TSquareMatrix2D *M, double *lump_mass);
19 #endif
20 #ifdef __3D__
21 void LumpMassMatrixToVector(TSquareMatrix3D *M, double *lump_mass);
22 #endif
23 
24 /*******************************************************************************/
25 //
26 // FEM_TVD_ForConvDiff for steady-state cdr equations
27 // following D. Kuzmin (2007)
28 //
29 /*******************************************************************************/
30 #ifdef __2D__
31 void FEM_TVD_ForConvDiff(TSquareMatrix2D *sqmatrix, int N_U, int N_Active,
32 double *matrix_D_Entries, double *sol, double *rhs,
33  int N_neum_to_diri, int *neum_to_diri, int compute_matrix_D);
34 #endif
35 #ifdef __3D__
36 void FEM_TVD_ForConvDiff(TSquareMatrix3D *sqmatrix, int N_U, int N_Active,
37 double *matrix_D_Entries, double *sol, double *rhs,
38 int N_neum_to_diri, int *neum_to_diri, int compute_matrix_D);
39 #endif
40 
41 //**************************************************************
42 //compute system matrix for FEM-FCT
43 //output is a vector
44 //**************************************************************
45 #ifdef __2D__
46 void FEM_FCT_SystemMatrix(TSquareMatrix2D *M_C, TSquareMatrix2D *A,
47  double *lump_mass,int N_U);
48 #endif
49 #ifdef __3D__
50 void FEM_FCT_SystemMatrix(TSquareMatrix3D *M_C, TSquareMatrix3D *A,
51  double *lump_mass,int N_U);
52 #endif
53 
54 //**************************************************************
55 // MINMOD prelimiter
56 //**************************************************************
57 double MinMod(double a, double b);
58 
59 /*******************************************************************************/
60 //
61 // FCT-FEM algorithm
62 // following D. Kuzmin, M. M"oller (2005) (nonlinear scheme)
63 // D. Kuzmin (2008) (linear scheme)
64 //
65 /*******************************************************************************/
66 #ifdef __2D__
67 void FEM_FCT_ForConvDiff(TSquareMatrix2D *M_C,TSquareMatrix2D *A,
68  int N_U, int N_Active,
69  double *lump_mass, double *matrix_D_Entries,
70  double *sol, double *oldsol,
71  double *B, double *rhs, double *rhs_old,
72  double *tilde_u,
73  int N_neum_to_diri, int *neum_to_diri,
74  int *neum_to_diri_bdry,
75  double *neum_to_diri_param,
76  int compute_matrix_D, BoundValueFunct2D *BoundaryValue,
77  double *BoundaryValues);
78 #endif
79 #ifdef __3D__
80 void FEM_FCT_ForConvDiff(TSquareMatrix3D *M_C,TSquareMatrix3D *A,
81  int N_U, int N_Active,
82  double *lump_mass, double *matrix_D_Entries,
83  double *sol, double *oldsol,
84  double *B, double *rhs, double *rhs_old,
85  double *tilde_u,
86  int N_neum_to_diri, int *neum_to_diri,
87  double *neum_to_diri_x, double *neum_to_diri_y, double *neum_to_diri_z,
88  int compute_matrix_D, BoundValueFunct3D *BoundaryValue,
89  double *BoundaryValues);
90 #endif
91 
92 #endif
Definition: SquareMatrix2D.h:20
Definition: SquareMatrix3D.h:20