-
Notifications
You must be signed in to change notification settings - Fork 2
/
BergotBasis.h
41 lines (31 loc) · 1.07 KB
/
BergotBasis.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Gmsh - Copyright (C) 1997-2018 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// issues on https://gitlab.onelab.info/gmsh/gmsh/issues
#ifndef BERGOTBASIS_H
#define BERGOTBASIS_H
#include "nodalBasis.h"
#include "polynomialBasis.h"
// Basis functios for pyramidal elements: cf. M. Bergot, G. Cohen, M. Durufle,
// HIGHER-ORDER FINITE ELEMENTS FOR HYBRID MESHES USING NEW NODAL PYRAMIDAL
// ELEMENTS, J. Sci. Comput. 42, 3 (2010) 345-381", DOI:
// 10.1007/s10915-009-9334-9
class BergotBasis {
public:
BergotBasis(int p, bool incpl = false);
virtual ~BergotBasis();
int size() const
{
const int n = order + 1;
return n * (n + 1) * (2 * n + 1) / 6;
}
void f(double u, double v, double w, double *val) const;
void df(double u, double v, double w, double grads[][3]) const;
void initialize(){};
bool validIJ(int i, int j) const;
private:
int order; //!< maximal order of surrounding functional spaces (on triangle /
//!< quad)
bool incomplete; //!< serendipity interpolation
};
#endif