Basix 0.12.0.dev0
Loading...
Searching...
No Matches
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
15namespace basix
16{
17template <std::floating_point T>
18class FiniteElement;
19
21namespace moments
22{
23
46template <std::floating_point T>
47std::tuple<std::vector<std::vector<T>>, std::array<std::size_t, 2>,
48 std::vector<std::vector<T>>, std::array<std::size_t, 4>>
50 polyset::type ptype, std::size_t value_size, int q_deg);
51
76template <std::floating_point T>
77std::tuple<std::vector<std::vector<T>>, std::array<std::size_t, 2>,
78 std::vector<std::vector<T>>, std::array<std::size_t, 4>>
80 polyset::type ptype, std::size_t value_size,
81 int q_deg);
82
101template <std::floating_point T>
102std::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
126template <std::floating_point T>
127std::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:138
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:194
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:346
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:271
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:102
type
Polyset (polynomial set) type.
Definition polyset.h:137
Basix: FEniCS runtime basis evaluation library.
Definition cell.h:17