1 /**@file
2  *
3  * General support routines for the basis-functions library.
4  *
5  *      author:  Claus-Justus Heine
6  *               Abteilung fuer Angewandte Mathematik
7  *               Albert-Ludwigs-Universitaet Freiburg
8  *               Hermann-Herder-Str. 10
9  *               79104 Freiburg i.Br.
10  *               Germany
11  *               claus@mathematik.uni-freiburg.de
12  *
13  * Copyright (C) by Claus-Justus Heine (2008).
14  *
15  */
16 #ifndef _ALBAS_H_
17 #define _ALBAS_H_
18 
19 #include <alberta/alberta.h>
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #elif 0
24 } /* some editors try to indent because of the brace above */
25 #endif
26 
27 typedef struct stokes_triple STOKES_TRIPLE;
28 typedef struct stokes_triple STOKES_PAIR;
29 struct stokes_triple
30 {
31   const BAS_FCTS *velocity;
32   const BAS_FCTS *pressure;
33   const BAS_FCTS *slip_stress;
34 };
35 extern STOKES_TRIPLE stokes_triple(const char *name,
36 				   unsigned dim, unsigned degree);
stokes_pair(const char * name,unsigned dim,unsigned degree)37 static inline STOKES_PAIR stokes_pair(const char *name,
38 				      unsigned dim, unsigned degree)
39 {
40   return stokes_triple(name, dim, degree);
41 }
42 
43 extern const BAS_FCTS *get_null_bfcts(unsigned dim);
44 extern const BAS_FCTS *get_bubble(unsigned dim, unsigned inter_deg);
45 extern const BAS_FCTS *get_wall_bubbles(unsigned dim, unsigned inter_deg);
46 extern const BAS_FCTS *get_trace_bubble(unsigned dim, unsigned inter_deg);
47 extern const BAS_FCTS *get_bulk_trace_bubble(unsigned int dim,
48 					     unsigned int inter_deg,
49 					     int trace_id);
50 extern const BAS_FCTS *get_tensor_wall_bubbles(unsigned int dim,
51 					       unsigned int tensor_deg,
52 					       unsigned int inter_deg);
53 extern const BAS_FCTS *get_trace_tensor_bubbles(unsigned int dim,
54 						unsigned int tensor_deg,
55 						unsigned int inter_deg);
56 extern const BAS_FCTS *get_bulk_trace_tensor_bubbles(unsigned int dim,
57 						     unsigned int tensor_deg,
58 						     unsigned int inter_deg,
59 						     int trace_id);
60 extern const BAS_FCTS *get_raviart_thomas(unsigned dim, unsigned inter_deg);
61 extern const BAS_FCTS *get_old_mini_element(unsigned dim);
62 
63 extern const BAS_FCTS *bas_fcts_init(int dim, int dow, const char *name);
64 
65 #ifdef __cplusplus
66 } /* extern "C" */
67 #endif
68 
69 #endif
70