ParMooN
 All Classes Functions Variables Friends Pages
FreeSurface3D.h
1 #ifdef __3D__
2 
3 #ifndef __FREESURFACE3D__
4 #define __FREESURFACE3D__
5 
6 #include <Vertex.h>
7 #include <SquareMatrix3D.h>
8 #include <FEVectFunct3D.h>
9 
10 // ========================================================================
11 // declaration for grid handling
12 // ========================================================================
13 void GridBoundCondition(double x, double y, double z, BoundCond &cond);
14 
15 // ========================================================================
16 // auxiliary routines
17 // ========================================================================
18 void SortVertices(TVertex **Array, int length);
19 void SortVerticesXYZ(TVertex **Array, int length);
20 double GetVolume(TCollection *Coll);
21 
22 // ========================================================================
23 // calculate all parameters which are needed for calculation
24 // ========================================================================
25 void CalculateAllParameters();
26 
27 // ========================================================================
28 // calculate all field parameters
29 // ========================================================================
30 void CalculateFields();
31 
32 // ========================================================================
33 // find normal and tangential vectors for slip d.o.f.
34 // ========================================================================
35 void FindVectorsForSlipDOF(TFESpace3D *fespace,
36  int &N_FaceDOF, int &N_EdgeDOF,
37  int* &FaceDOF, int* &EdgeDOF,
38  double* &FaceVectors, double* &EdgeVectors);
39 
40 // ========================================================================
41 // manipulate square matrices due to u.n=0 constraint
42 // ========================================================================
43 void ManipulateSquareMatrices(TSquareStructure3D *sqstructure,
44  double *a11, double *a12, double *a13,
45  double *a21, double *a22, double *a23,
46  double *a31, double *a32, double *a33,
47  int N_FaceDOF, int N_EdgeDOF,
48  int *FaceDOF, int *EdgeDOF,
49  double* FaceVectors, double* EdgeVectors);
50 
51 // ========================================================================
52 // manipulate square matrices due to u.n=0 constraint
53 // ========================================================================
54 void ManipulateMatricesAndRhs(TStructure3D *structure,
55  double *b1t, double *b2t, double *b3t,
56  double *f1, double *f2, double *f3,
57  int N_FaceDOF, int N_EdgeDOF,
58  int *FaceDOF, int *EdgeDOF,
59  double* FaceVectors, double* EdgeVectors);
60 
61 // find all joints which form the free surface
62 void FindFreeSurface(TCollection *Coll,
63  int &N_SurfaceJoints, int* &CellNumbers,
64  int* &JointNumbers);
65 
66 void FindFreeSurfaceFromJointType(TCollection *Coll, JointType type,
67  int &N_SurfaceJoints, int* &CellNumbers,
68  int* &JointNumbers);
69 
70 // calculate normal vectors on free surface
71 void CalculateNormals(TCollection *Coll,
72  int N_SurfaceJoints, int *CellNumbers,
73  int *JointNumbers,
74  TFESpace3D *fespace,
75  double* &n1, double* &n2, double* &n3,
76  double* &len);
77 
78 // ========================================================================
79 // ATTENTION !!!
80 // the current implementation does not check the boundary condition
81 // it is assumed that all given faces are at the free boundary !!!
82 // ========================================================================
83 void FreeSurfInt(TCollection *Coll, int N_BoundFaces,
84  int *CellNumbers, int *JointNumbers,
85  TFEFunction3D *potential, double dt,
86  TSquareMatrix3D *Aii,
87  double *rhs1, double *rhs2, double *rhs3);
88 
89 void FreeSurfInt(TCollection *Coll, int N_BoundFaces,
90  int *CellNumbers, int *JointNumbers,
91  TAuxParam3D *aux, double dt,
92  TSquareMatrix3D **Aii,
93  double *rhs1, double *rhs2, double *rhs3);
94 
95 void FreeSurfInt_new(TCollection *Coll, int N_BoundFaces, int *CellNumbers, int *JointNumbers,
96  double dt, TSquareMatrix3D **Aii, double *rhs1, double *rhs2, double *rhs3);
97 
98 void FreeSurfInt_Sphere(TFESpace3D *fespace, double dt,
99  double *rhs1, double *rhs2, double *rhs3);
100 
101 #endif // __FREESURFACE3D__
102 
103 #endif // __3D__
Definition: Structure3D.h:23
Definition: SquareMatrix3D.h:20
Definition: AuxParam3D.h:21
Definition: FESpace3D.h:22
store cells in an array, used by cell iterators
Definition: Collection.h:18
Definition: Vertex.h:19
Definition: SquareStructure3D.h:20
Definition: FEFunction3D.h:25