Loading...
Searching...
No Matches
moments.h
// Copyright (c) 2020 Chris Richardson & Matthew Scroggs
// FEniCS Project
// SPDX-License-Identifier: MIT
#pragma once
#include "cell.h"
#include "polyset.h"
#include <array>
#include <concepts>
#include <tuple>
#include <utility>
#include <vector>
namespace basix
{
template <std::floating_point T>
class FiniteElement;
namespace moments
{
template <std::floating_point T>
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);
template <std::floating_point T>
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);
template <std::floating_point T>
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);
template <std::floating_point T>
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);
} // namespace moments
} // namespace basix
basix::FiniteElement
A finite element.
Definition finite-element.h:137
basix::cell::type
type
Cell type.
Definition cell.h:21
basix::moments
Functions to create integral moment DOFs.
Definition moments.h:22
basix::moments::make_dot_integral_moments
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
basix::moments::make_normal_integral_moments
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
basix::moments::make_tangent_integral_moments
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
basix::moments::make_integral_moments
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
basix::polyset::type
type
Cell type.
Definition polyset.h:137
basix
Basix: FEniCS runtime basis evaluation library.
Definition cell.h:17