Basix
/build/basix-FDoFaB/basix-0.0.1~git20210409.b980196/cpp/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 
41 void tabulate(int handle, double* basis_values, int nd, const double* x,
42  int npoints);
43 
80 void map_push_forward_real(int handle, double* physical_data,
81  const double* reference_data, const double* J,
82  const double* detJ, const double* K,
83  int physical_dim, int physical_value_size,
84  int nresults, int npoints);
85 
86 // FIXME: Currently pull_back's data is the transpose of push_forward's data.
87 // This should be made consistent. See
88 // https://github.com/FEniCS/basix/issues/120
89 //
126 void map_pull_back_real(int handle, double* reference_data,
127  const double* physical_data, const double* J,
128  const double* detJ, const double* K, int physical_dim,
129  int physical_value_size, int nresults, int npoints);
130 
134 void map_push_forward_complex(int handle, std::complex<double>* physical_data,
135  const std::complex<double>* reference_data,
136  const double* J, const double* detJ,
137  const double* K, int physical_dim,
138  int physical_value_size, int nresults,
139  int npoints);
140 
144 void map_pull_back_complex(int handle, std::complex<double>* reference_data,
145  const std::complex<double>* physical_data,
146  const double* J, const double* detJ, const double* K,
147  int physical_dim, int physical_value_size,
148  int nresults, int npoints);
149 
155 void permute_dofs(int handle, std::int32_t* dofs, std::uint32_t cell_info);
156 
162 void unpermute_dofs(int handle, std::int32_t* dofs, std::uint32_t cell_info);
163 
167 const char* cell_type(int handle);
168 
170 int degree(int handle);
171 
175 int value_rank(int handle);
176 
180 void value_shape(int handle, int* dimensions);
181 
184 int dim(int handle);
185 
188 const char* family_name(int handle);
189 
192 const char* mapping_name(int handle);
193 
196 bool dof_transformations_are_identity(int handle);
197 
202 void entity_dofs(int handle, int dim, int* num_dofs);
203 
206 int interpolation_num_points(int handle);
207 
211 void interpolation_points(int handle, double* points);
212 
216 void interpolation_matrix(int handle, double* matrix);
217 
221 int cell_geometry_num_points(const char* cell_type);
222 
226 int cell_geometry_dimension(const char* cell_type);
227 
236 void cell_geometry(const char* cell_type, double* points);
237 
239 std::vector<std::vector<std::vector<int>>> topology(const char* cell_type);
240 
241 } // namespace basix
Placeholder.
Definition: brezzi-douglas-marini.h:10
void value_shape(int handle, int *dimensions)
Definition: basix.cpp:213
int cell_geometry_num_points(const char *cell_type)
Definition: basix.cpp:272
std::vector< std::vector< std::vector< int > > > topology(const char *cell_type)
Cell topology.
Definition: basix.cpp:292
void map_push_forward_real(int handle, double *physical_data, const double *reference_data, const double *J, const double *detJ, const double *K, int physical_dim, int physical_value_size, int nresults, int npoints)
Definition: basix.cpp:126
void unpermute_dofs(int handle, std::int32_t *dofs, std::uint32_t cell_info)
Definition: basix.cpp:181
void interpolation_matrix(int handle, double *matrix)
Definition: basix.cpp:236
void map_pull_back_real(int handle, double *reference_data, const double *physical_data, const double *J, const double *detJ, const double *K, int physical_dim, int physical_value_size, int nresults, int npoints)
Definition: basix.cpp:137
void tabulate(int handle, double *basis_values, int nd, const double *x, int npoints)
Definition: basix.cpp:112
int cell_geometry_dimension(const char *cell_type)
Definition: basix.cpp:278
const char * cell_type(int handle)
Definition: basix.cpp:189
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, int physical_dim, int physical_value_size, int nresults, int npoints)
Definition: basix.cpp:147
int register_element(const char *family_name, const char *cell_type, int degree)
Definition: basix.cpp:96
void permute_dofs(int handle, std::int32_t *dofs, std::uint32_t cell_info)
Definition: basix.cpp:173
int dim(int handle)
Definition: basix.cpp:201
int interpolation_num_points(int handle)
Definition: basix.cpp:220
void release_element(int handle)
Definition: basix.cpp:104
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, int physical_dim, int physical_value_size, int nresults, int npoints)
Definition: basix.cpp:160
bool dof_transformations_are_identity(int handle)
Definition: basix.cpp:266
int value_rank(int handle)
Definition: basix.cpp:207
void interpolation_points(int handle, double *points)
Definition: basix.cpp:226
void cell_geometry(const char *cell_type, double *points)
Definition: basix.cpp:284
void entity_dofs(int handle, int dim, int *num_dofs)
Definition: basix.cpp:247
const char * family_name(int handle)
Definition: basix.cpp:254
const char * mapping_name(int handle)
Definition: basix.cpp:260
int degree(int handle)
Degree.
Definition: basix.cpp:195