include/dolfinx_access/function.h

Fri, 08 May 2026 17:16:34 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Fri, 08 May 2026 17:16:34 -0500
changeset 4
49b062acace9
parent 3
c3a4f4bb87f7
permissions
-rw-r--r--

Do not directly depend on ndarray, but through numpy

#pragma once
#include "dolfinx/geometry/BoundingBoxTree.h"
#pragma once
#include "dolfinx/mesh/Mesh.h"
#include <cmath>

#pragma once
#include "nanobind_helpers.h"

#pragma once
#include "rust/cxx.h"

namespace dolfinx_access {
    struct FunctionInfo;

    typedef dolfinx::geometry::BoundingBoxTree<double> BBTree_f64;

    extern void drop_Function_f64(Function_f64* f);

    extern int32_t cell_Mesh_f64(std::shared_ptr<const dolfinx::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);

    void scatter_fwd_Function_f64(Function_f64* f);
} // namespace dolfinx_access

mercurial