--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/dolfinx_access/function.h Thu Feb 26 09:32:12 2026 -0500 @@ -0,0 +1,49 @@ +#pragma once +#include "dolfinx/geometry/BoundingBoxTree.h" +#include <cmath> + +#pragma once +#include "nanobind_helpers.h" + +#pragma once +#include "rust/cxx.h" + +namespace dolfinx_access { + struct FunctionInfo; + + typedef geometry::BoundingBoxTree<double> BBTree_f64; + extern void drop_Function_f64(Function_f64* f); + + extern int32_t cell_Mesh_f64(std::shared_ptr<const mesh::Mesh<double>> mesh, + const std::array<double, 3>& x); + + extern int32_t cell_FunctionSpace_f64(FunctionSpace<double> const* v, + const std::array<double, 3>& x); + + extern int32_t cell_Function_f64(Function_f64 const* f, const std::array<double, 3>& x); + + extern double eval_Function_f64_cell(Function_f64 const* f, const std::array<double, 3>& x, + int32_t cell); + + extern double eval_Function_f64(Function_f64 const* f, const std::array<double, 3>& x); + + extern std::array<double, 6> eval_Function_f64_cell_6(Function_f64 const* f, + const std::array<double, 3 * 6>& x, + int32_t cell_index); + + FunctionInfo info_Function_f64(Function_f64 const* f); + + std::array<double, 3 * 3> cell_coords_Function_f64_triangle(Function_f64 const* f, + int32_t cell); + + rust::Slice<const double> data_Function_f64(Function_f64 const* f); + + rust::Slice<double> data_mut_Function_f64(Function_f64* f); + + void check_compat_Function_f64(Function_f64 const* f, Function_f64 const* g); + + Function_f64* similar_Function_f64(Function_f64 const* f); + + Function_f64* clone_Function_f64(Function_f64 const* f); + +} // namespace dolfinx_access