Basix
basix.h
1 // Copyright (c) 2020 Chris Richardson
2 // FEniCS Project
3 // SPDX-License-Identifier: MIT
4 
5 #include <complex>
6 #include <utility>
7 #include <vector>
8 
9 namespace basix
10 {
11 
14 int register_element(const char* family_name, const char* cell_type,
15  int degree);
16 
19 void release_element(int handle);
20 
42 void tabulate(int handle, double* basis_values, int nd, const double* x,
43  int npoints);
44 
81 void map_push_forward_real(int handle, double* physical_data,
82  const double* reference_data, const double* J,
83  const double* detJ, const double* K,
84  const int physical_dim,
85  const int physical_value_size, const int nresults,
86  const int npoints);
87 
88 // FIXME: Currently pull_back's data is the transpose of push_forward's data.
89 // This should be made consistent. See
90 // https://github.com/FEniCS/basix/issues/120
91 //
128 void map_pull_back_real(int handle, double* reference_data,
129  const double* physical_data, const double* J,
130  const double* detJ, const double* K,
131  const int physical_dim, const int physical_value_size,
132  const int nresults, const int npoints);
133 
137 void map_push_forward_complex(int handle, std::complex<double>* physical_data,
138  const std::complex<double>* reference_data,
139  const double* J, const double* detJ,
140  const double* K, const int physical_dim,
141  const int physical_value_size, const int nresults,
142  const int npoints);
143 
147 void map_pull_back_complex(int handle, std::complex<double>* reference_data,
148  const std::complex<double>* physical_data,
149  const double* J, const double* detJ, const double* K,
150  const int physical_dim,
151  const int physical_value_size, const int nresults,
152  const int npoints);
153 
157 const char* cell_type(int handle);
158 
160 int degree(int handle);
161 
165 int value_rank(int handle);
166 
170 void value_shape(int handle, int* dimensions);
171 
174 int dim(int handle);
175 
178 const char* family_name(int handle);
179 
182 const char* mapping_name(int handle);
183 
188 void entity_dofs(int handle, int dim, int* num_dofs);
189 
192 int interpolation_num_points(int handle);
193 
197 void interpolation_points(int handle, double* points);
198 
202 void interpolation_matrix(int handle, double* matrix);
203 
207 int cell_geometry_num_points(const char* cell_type);
208 
212 int cell_geometry_dimension(const char* cell_type);
213 
222 void cell_geometry(const char* cell_type, double* points);
223 
225 std::vector<std::vector<std::vector<int>>> topology(const char* cell_type);
226 
227 } // namespace basix
Placeholder.
Definition: basix.h:10
void value_shape(int handle, int *dimensions)
Definition: basix.cpp:185
void map_pull_back_complex(int handle, std::complex< double > *reference_data, const std::complex< double > *physical_data, const double *J, const double *detJ, const double *K, const int physical_dim, const int physical_value_size, const int nresults, const int npoints)
Definition: basix.cpp:148
int cell_geometry_num_points(const char *cell_type)
Definition: basix.cpp:237
std::vector< std::vector< std::vector< int > > > topology(const char *cell_type)
Cell topology.
Definition: basix.cpp:257
void interpolation_matrix(int handle, double *matrix)
Definition: basix.cpp:208
void tabulate(int handle, double *basis_values, int nd, const double *x, int npoints)
Definition: basix.cpp:92
int cell_geometry_dimension(const char *cell_type)
Definition: basix.cpp:243
const char * cell_type(int handle)
Definition: basix.cpp:161
int register_element(const char *family_name, const char *cell_type, int degree)
Definition: basix.cpp:76
void map_push_forward_real(int handle, double *physical_data, const double *reference_data, const double *J, const double *detJ, const double *K, const int physical_dim, const int physical_value_size, const int nresults, const int npoints)
Definition: basix.cpp:112
int dim(int handle)
Definition: basix.cpp:173
int interpolation_num_points(int handle)
Definition: basix.cpp:192
void release_element(int handle)
Definition: basix.cpp:84
void map_pull_back_real(int handle, double *reference_data, const double *physical_data, const double *J, const double *detJ, const double *K, const int physical_dim, const int physical_value_size, const int nresults, const int npoints)
Definition: basix.cpp:124
int value_rank(int handle)
Definition: basix.cpp:179
void interpolation_points(int handle, double *points)
Definition: basix.cpp:198
void cell_geometry(const char *cell_type, double *points)
Definition: basix.cpp:249
void entity_dofs(int handle, int dim, int *num_dofs)
Definition: basix.cpp:218
const char * family_name(int handle)
Definition: basix.cpp:225
void map_push_forward_complex(int handle, std::complex< double > *physical_data, const std::complex< double > *reference_data, const double *J, const double *detJ, const double *K, const int physical_dim, const int physical_value_size, const int nresults, const int npoints)
Definition: basix.cpp:135
const char * mapping_name(int handle)
Definition: basix.cpp:231
int degree(int handle)
Degree.
Definition: basix.cpp:167