Basix 0.9.0

Home     Installation     Demos     C++ docs     Python docs

moments.h
1 // Copyright (c) 2020 Chris Richardson & Matthew Scroggs
2 // FEniCS Project
3 // SPDX-License-Identifier: MIT
4 
5 #pragma once
6 
7 #include "cell.h"
8 #include "polyset.h"
9 #include <array>
10 #include <concepts>
11 #include <tuple>
12 #include <utility>
13 #include <vector>
14 
15 namespace basix
16 {
17 template <std::floating_point T>
18 class FiniteElement;
19 
21 namespace moments
22 {
23 
45 template <std::floating_point T>
46 std::tuple<std::vector<std::vector<T>>, std::array<std::size_t, 2>,
47  std::vector<std::vector<T>>, std::array<std::size_t, 4>>
48 make_integral_moments(const FiniteElement<T>& moment_space, cell::type celltype,
49  polyset::type ptype, std::size_t value_size, int q_deg);
50 
75 template <std::floating_point T>
76 std::tuple<std::vector<std::vector<T>>, std::array<std::size_t, 2>,
77  std::vector<std::vector<T>>, std::array<std::size_t, 4>>
79  polyset::type ptype, std::size_t value_size,
80  int q_deg);
81 
101 template <std::floating_point T>
102 std::tuple<std::vector<std::vector<T>>, std::array<std::size_t, 2>,
103  std::vector<std::vector<T>>, std::array<std::size_t, 4>>
105  polyset::type ptype, std::size_t value_size,
106  int q_deg);
107 
126 template <std::floating_point T>
127 std::tuple<std::vector<std::vector<T>>, std::array<std::size_t, 2>,
128  std::vector<std::vector<T>>, std::array<std::size_t, 4>>
130  polyset::type ptype, std::size_t value_size,
131  int q_deg);
132 
133 } // namespace moments
134 } // namespace basix
A finite element.
Definition: finite-element.h:139
type
Cell type.
Definition: cell.h:21
std::tuple< std::vector< std::vector< T > >, std::array< std::size_t, 2 >, std::vector< std::vector< T > >, std::array< std::size_t, 4 > > make_dot_integral_moments(const FiniteElement< T > &V, cell::type celltype, polyset::type ptype, std::size_t value_size, int q_deg)
Make interpolation points and weights for dot product integral moments.
Definition: moments.cpp:198
std::tuple< std::vector< std::vector< T > >, std::array< std::size_t, 2 >, std::vector< std::vector< T > >, std::array< std::size_t, 4 > > make_normal_integral_moments(const FiniteElement< T > &V, cell::type celltype, polyset::type ptype, std::size_t value_size, int q_deg)
Compute interpolation points and weights for normal integral moments.
Definition: moments.cpp:350
std::tuple< std::vector< std::vector< T > >, std::array< std::size_t, 2 >, std::vector< std::vector< T > >, std::array< std::size_t, 4 > > make_tangent_integral_moments(const FiniteElement< T > &V, cell::type celltype, polyset::type ptype, std::size_t value_size, int q_deg)
Make interpolation points and weights for tangent integral moments.
Definition: moments.cpp:275
std::tuple< std::vector< std::vector< T > >, std::array< std::size_t, 2 >, std::vector< std::vector< T > >, std::array< std::size_t, 4 > > make_integral_moments(const FiniteElement< T > &moment_space, cell::type celltype, polyset::type ptype, std::size_t value_size, int q_deg)
Make interpolation points and weights for simple integral moments.
Definition: moments.cpp:106
type
Cell type.
Definition: polyset.h:136
Basix: FEniCS runtime basis evaluation library.
Definition: cell.h:17