File: basix.h

package info (click to toggle)
basix 0.0.1~git20210122.4f10ef2-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 696 kB
  • sloc: cpp: 3,987; python: 1,918; makefile: 33
file content (63 lines) | stat: -rw-r--r-- 1,536 bytes parent folder | download
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

#include <Eigen/Core>
#include <utility>
#include <vector>

namespace basix
{

/// Create element in global registry and return handle
int register_element(const char* family_name, const char* cell_type,
                     int degree);

/// Delete from global registry
void release_element(int handle);

/// Tabulate
std::vector<Eigen::ArrayXXd> tabulate(int handle, int nd,
                                      const Eigen::ArrayXXd& x);

/// Cell type
const char* cell_type(int handle);

/// Degree
int degree(int handle);

/// Value size
int value_size(int handle);

///  Value shape
const std::vector<int>& value_shape(int handle);

/// Finite Element dimension
int dim(int handle);

/// Family name
const char* family_name(int handle);

/// Mapping name (affine, piola etc.)
const char* mapping_name(int handle);

/// Number of dofs per entity, ordered from vertex, edge, facet, cell
const std::vector<std::vector<int>>& entity_dofs(int handle);

/// Base permutations
const std::vector<Eigen::MatrixXd>& base_permutations(int handle);

/// Interpolation points
const Eigen::ArrayXXd& points(int handle);

/// Interpolation matrix
const Eigen::MatrixXd& interpolation_matrix(int handle);

/// Cell geometry
Eigen::ArrayXXd geometry(const char* cell_type);

/// Cell topology
std::vector<std::vector<std::vector<int>>> topology(const char* cell_type);

/// Create quadrature points and weights
std::pair<Eigen::ArrayXXd, Eigen::ArrayXd>
make_quadrature(const char* rule, const char* cell_type, int order);

} // namespace basix