28#include <boost/multi_array.hpp>
79 template<
typename GeometricSupport>
88 static std::vector<VectorZd>
complete(
size_t degree)
90 std::vector<VectorZd> powers;
92 for (
size_t l = 0;
l <= degree;
l++)
94 for (
size_t i = 0;
i <=
l;
i++)
116 Eigen::Matrix<double, N, N>
diff_x,
117 Eigen::Matrix<double, N, N>
diff_y
149 Eigen::Matrix<double, N, N>
dx;
150 Eigen::Matrix<double, N, N>
dy;
198 return ( m_degree >= 0 ? (m_degree + 1) * (m_degree + 2) / 2 : 0);
229 return (
x - m_xT) / m_hT;
235 std::vector<VectorZd> m_powers;
236 Eigen::Matrix2d m_rot;
289 inline double _coordinate_transform(
const VectorRd &
x)
const
291 return (
x - m_xE).dot(m_tE) / m_hE;
313 template <
typename BasisType>
330 static const bool hasCurl = BasisType::hasCurl;
341 const Eigen::MatrixXd &
matrix
346 assert((
size_t)
matrix.cols() ==
basis.dimension() ||
"Inconsistent family initialization");
352 return m_matrix.rows();
358 static_assert(
hasFunction,
"Call to function() not available");
361 for (
auto j = 1;
j < m_matrix.cols();
j++)
363 f += m_matrix(
i,
j) * m_basis.function(
j,
x);
371 static_assert(
hasFunction,
"Call to function() not available");
374 for (
auto j = 1;
j < m_matrix.cols();
j++)
385 static_assert(
hasGradient,
"Call to gradient() not available");
388 for (
auto j = 1;
j < m_matrix.cols();
j++)
390 G += m_matrix(
i,
j) * m_basis.gradient(
j,
x);
398 static_assert(
hasGradient,
"Call to gradient() not available");
401 for (
auto j = 1;
j < m_matrix.cols();
j++)
411 static_assert(
hasCurl,
"Call to curl() not available");
414 for (
auto j = 1;
j < m_matrix.cols();
j++)
416 C += m_matrix(
i,
j) * m_basis.curl(
j,
x);
424 static_assert(
hasCurl,
"Call to curl() not available");
427 for (
auto j = 1;
j < m_matrix.cols();
j++)
437 static_assert(
hasDivergence,
"Call to divergence() not available");
440 for (
auto j = 1;
j < m_matrix.cols();
j++)
442 D += m_matrix(
i,
j) * m_basis.divergence(
j,
x);
450 static_assert(
hasDivergence,
"Call to divergence() not available");
453 for (
auto j = 1;
j < m_matrix.cols();
j++)
463 static_assert(
hasRotor,
"Call to rotor() not available");
466 for (
auto j = 1;
j < m_matrix.cols();
j++)
468 R += m_matrix(
i,
j) * m_basis.rotor(
j,
x);
476 static_assert(
hasRotor,
"Call to rotor() not available");
479 for (
auto j = 1;
j < m_matrix.cols();
j++)
489 static_assert(
hasHessian,
"Call to hessian() not available");
492 for (
auto j = 1;
j < m_matrix.cols();
j++)
494 H += m_matrix(
i,
j) * m_basis.hessian(
j,
x);
502 static_assert(
hasHessian,
"Call to hessian() not available");
505 for (
auto j = 1;
j < m_matrix.cols();
j++)
513 inline const Eigen::MatrixXd &
matrix()
const
527 return m_basis.max_degree();
532 Eigen::MatrixXd m_matrix;
562 template <
typename ScalarFamilyType,
size_t N>
594 static_assert(ScalarFamilyType::tensorRank ==
Scalar,
595 "Vector family can only be constructed from scalar families");
596 m_rot.row(0) << 0., 1.;
597 m_rot.row(1) << -1., 0.;
604 return m_scalar_family.dimension() *
N;
610 static_assert(
hasFunction,
"Call to function() not available");
613 ek(
i / m_scalar_family.dimension()) = 1.;
614 return ek * m_scalar_family.function(
i % m_scalar_family.dimension(),
x);
620 static_assert(
hasFunction,
"Call to function() not available");
623 ek(
i / m_scalar_family.dimension()) = 1.;
630 static_assert(
hasGradient,
"Call to gradient() not available");
632 GradientValue G = Eigen::Matrix<double, N, dimspace>::Zero();
633 G.row(
i / m_scalar_family.dimension()) = m_scalar_family.gradient(
i % m_scalar_family.dimension(),
x);
640 static_assert(
hasGradient,
"Call to gradient() not available");
642 GradientValue G = Eigen::Matrix<double, N, dimspace>::Zero();
650 static_assert(
hasCurl,
"Call to curl() not available");
658 static_assert(
hasCurl,
"Call to curl() not available");
666 static_assert(
hasDivergence,
"Call to divergence() not available");
668 return m_scalar_family.gradient(
i % m_scalar_family.dimension(),
x)(
i / m_scalar_family.dimension());
674 static_assert(
hasDivergence,
"Call to divergence() not available");
684 return curl(
i,
x).trace();
690 static_assert(
hasRotor,
"Call to rotor() not available");
698 static_assert(
hasCurlCurl,
"Call to curlcurl() not available");
701 int p =
i / m_scalar_family.dimension();
703 typename ScalarFamilyType::HessianValue
hess = m_scalar_family.hessian(
i % m_scalar_family.dimension(),
x);
710 static_assert(
hasCurlCurl,
"Call to curlcurl() not available");
713 int p =
i / m_scalar_family.dimension();
722 return m_scalar_family;
728 return m_scalar_family.max_degree();
733 Eigen::Matrix2d m_rot;
748 template<
typename ScalarFamilyType,
size_t N>
778 static_assert(ScalarFamilyType::tensorRank ==
Scalar,
779 "Vector family can only be constructed from scalar families");
782 for (
size_t j = 0;
j <
N;
j++){
783 for (
size_t i = 0;
i <
N;
i++){
784 m_E[
j*
N +
i] = Eigen::Matrix<double, N, N>::Zero();
785 m_E[
j*
N +
i](
i,
j) = 1.;
792 size_t r = m_scalar_family.dimension();
793 size_t j = ( ( (
i/
r)%
N )*
N + (
i/
r)/
N ) *
r + (
i%
r);
794 m_transposeOperator(
i,
j) = 1.;
801 return m_scalar_family.dimension() *
N *
N;
807 static_assert(
hasFunction,
"Call to function() not available");
809 return m_scalar_family.function(
i % m_scalar_family.dimension(),
x) * m_E[
i / m_scalar_family.dimension()];
815 static_assert(
hasFunction,
"Call to function() not available");
823 static_assert(
hasDivergence,
"Call to divergence() not available");
825 Eigen::Matrix<double, N, 1>
V = m_E[
i/m_scalar_family.dimension()].col( (
i/m_scalar_family.dimension()) /
N);
826 return m_scalar_family.gradient(
i % m_scalar_family.dimension(),
x)( (
i / m_scalar_family.dimension()) /
N) *
V;
832 static_assert(
hasDivergence,
"Call to divergence() not available");
834 Eigen::Matrix<double, N, 1>
V = m_E[
i/m_scalar_family.dimension()].col( (
i/m_scalar_family.dimension()) /
N);
841 static_assert(
hasGradient,
"Call to gradient() not available");
844 const Eigen::Matrix<double, N, N>
matrix_basis = m_E[
i / m_scalar_family.dimension()];
851 static_assert(
hasGradient,
"Call to gradient() not available");
854 const Eigen::Matrix<double, N, N>
matrix_basis = m_E[
i / m_scalar_family.dimension()];
861 return m_scalar_family;
873 return m_transposeOperator;
885 size_t dim_scalar = m_scalar_family.dimension();
894 for (
size_t i = 0;
i<
N;
i++){
910 size_t r = m_scalar_family.dimension();
912 Eigen::MatrixXd
Tr = Eigen::MatrixXd::Zero(
r,
dimension());
932 std::vector<Eigen::Matrix<double, N, N>> m_E;
933 Eigen::MatrixXd m_transposeOperator;
940 template <
typename ScalarFamilyType>
973 static_assert(ScalarFamilyType::hasFunction,
"Call to function() not available");
974 static_assert(std::is_same<typename ScalarFamilyType::GeometricSupport, Edge>::value,
975 "Tangent families can only be defined on edges");
981 return m_scalar_family.dimension();
987 return m_scalar_family.function(
i,
x) * m_generator;
993 return m_scalar_family;
999 return m_scalar_family.max_degree();
1018 template <
typename BasisType>
1057 return m_basis.dimension() - m_shift;
1069 return m_basis.max_degree();
1075 static_assert(
hasFunction,
"Call to function() not available");
1077 return m_basis.function(
i + m_shift,
x);
1083 static_assert(
hasGradient,
"Call to gradient() not available");
1085 return m_basis.gradient(
i + m_shift,
x);
1091 static_assert(
hasCurl,
"Call to curl() not available");
1093 return m_basis.curl(
i + m_shift,
x);
1099 static_assert(
hasDivergence,
"Call to divergence() not available");
1101 return m_basis.divergence(
i + m_shift,
x);
1107 static_assert(
hasRotor,
"Call to rotor() not available");
1109 return m_basis.rotor(
i + m_shift,
x);
1115 static_assert(
hasHessian,
"Call to hessian() not available");
1117 return m_basis.hessian(
i + m_shift,
x);
1129 template <
typename BasisType>
1193 static_assert(
hasFunction,
"Call to function() not available");
1195 return m_basis.function(
i,
x);
1201 static_assert(
hasGradient,
"Call to gradient() not available");
1203 return m_basis.gradient(
i,
x);
1209 static_assert(
hasCurl,
"Call to curl() not available");
1211 return m_basis.curl(
i,
x);
1217 static_assert(
hasDivergence,
"Call to divergence() not available");
1219 return m_basis.divergence(
i,
x);
1225 static_assert(
hasRotor,
"Call to rotor() not available");
1227 return m_basis.rotor(
i,
x);
1240 template <
typename BasisType>
1269 : m_scalar_basis(
basis)
1271 static_assert(BasisType::hasGradient,
1272 "Gradient basis requires gradient() for the original basis to be available");
1279 return m_scalar_basis.dimension();
1285 return m_scalar_basis.gradient(
i,
x);
1291 return m_scalar_basis;
1303 template <
typename BasisType>
1309 typedef Eigen::Matrix<double, dimspace, dimspace>
CurlValue;
1332 static_assert(BasisType::tensorRank ==
Scalar && std::is_same<typename BasisType::GeometricSupport, Cell>::value,
1333 "Curl basis can only be constructed starting from scalar bases on elements");
1334 static_assert(BasisType::hasCurl,
1335 "Curl basis requires curl() for the original basis to be available");
1341 return m_basis.dimension();
1347 return m_basis.curl(
i,
x);
1367 template <
typename BasisType>
1392 : m_vector_basis(
basis)
1394 static_assert(BasisType::tensorRank ==
Vector || BasisType::tensorRank ==
Matrix,
1395 "Divergence basis can only be constructed starting from vector bases");
1396 static_assert(BasisType::hasDivergence,
1397 "Divergence basis requires divergence() for the original basis to be available");
1404 return m_vector_basis.dimension();
1410 return m_vector_basis.divergence(
i,
x);
1416 return m_vector_basis;
1428 template <
typename BasisType>
1455 : m_vector_basis(
basis)
1457 static_assert(BasisType::tensorRank ==
Vector,
1458 "Rotor basis can only be constructed starting from vector bases");
1459 static_assert(BasisType::hasRotor,
1460 "Rotor basis requires rotor() for the original basis to be available");
1467 return m_vector_basis.dimension();
1473 return m_vector_basis.rotor(
i,
x);
1479 return m_vector_basis;
1492 template <
typename BasisType>
1521 : m_scalar_basis(
basis)
1523 static_assert(BasisType::tensorRank ==
Scalar,
1524 "Hessian basis can only be constructed starting from scalar bases");
1525 static_assert(BasisType::hasHessian,
1526 "Hessian basis requires hessian() for the original basis to be available");
1533 return m_scalar_basis.dimension();
1539 return m_scalar_basis.hessian(
i,
x);
1545 return m_scalar_basis;
1562 typedef Eigen::Matrix<double, dimspace, dimspace>
CurlValue;
1613 return (
x - m_xT) / m_hT;
1619 std::vector<VectorZd> m_powers;
1629 typedef Eigen::Matrix<double, dimspace, dimspace>
CurlValue;
1666 inline const std::shared_ptr<RolyComplBasisCell> &
rck()
const
1673 Eigen::Matrix2d m_rot;
1674 std::shared_ptr<RolyComplBasisCell> m_Rck_basis;
1725 return (
x - m_xT) / m_hT;
1731 Eigen::Matrix2d m_rot;
1753 template <
typename outValue,
typename inValue,
typename FunctionType>
1755 const boost::multi_array<inValue, 2> &
B_quad,
1756 const FunctionType &
F
1768 template <
typename ScalarBasisType,
size_t N>
1771 const std::vector<Eigen::VectorXd> &
v
1775 size_t k =
v.size();
1777 Eigen::MatrixXd
M = Eigen::MatrixXd::Zero(
r*
k,
r*
N);
1779 for (
size_t i=0;
i <
k;
i++){
1784 for (
size_t j=0;
j <
N;
j++){
1785 M.block(
i*
r,
j*
r,
r,
r) =
v[
i](
j) * Eigen::MatrixXd::Identity(
r,
r);
1802 inline static std::function<Eigen::MatrixXd(
const Eigen::MatrixXd &)>
1806 inline static std::function<Eigen::MatrixXd(
const Eigen::MatrixXd &)>
1811 template <
typename ScalarBasisType,
size_t N>
1817 Eigen::MatrixXd
M = Eigen::MatrixXd::Zero(
r,
r*
N*
N);
1819 for (
size_t k=0;
k <
N;
k++){
1820 M.block(0,
k*
r*(
N+1),
r,
r) = Eigen::MatrixXd::Identity(
r,
r);
1833 template<
typename BasisType, BasisFunctionE BasisFunction>
1838 template<
typename BasisType>
1841 static_assert(BasisType::hasFunction,
"Call to function not available");
1862 template<
typename BasisType>
1865 static_assert(BasisType::hasGradient,
"Call to gradient not available");
1886 template<
typename BasisType>
1889 static_assert(BasisType::hasGradient,
"Call to gradient not available");
1893 return 0.5 * (
basis.gradient(
i,
x) +
basis.gradient(
i,
x).transpose());
1910 template<
typename BasisType>
1913 static_assert(BasisType::hasGradient,
"Call to gradient not available");
1917 return 0.5 * (
basis.gradient(
i,
x) -
basis.gradient(
i,
x).transpose());
1933 template<
typename BasisType>
1936 static_assert(BasisType::hasCurl,
"Call to curl not available");
1956 template<
typename BasisType>
1959 static_assert(BasisType::hasDivergence,
"Call to divergence not available");
1963 return basis.divergence(
i,
x);
1979 template<
typename BasisType>
1982 static_assert(BasisType::hasRotor,
"Call to rotor not available");
2002 template<
typename BasisType>
2005 static_assert(BasisType::hasHessian,
"Call to Hessian not available");
2025 template <
typename BasisType>
2028 static_assert(BasisType::hasCurlCurl,
"Call to curl curl not available");
2050 template <
typename ScalarBasisType,
size_t N>
2082 template <
typename ScalarBasisType,
size_t N>
2115 template <
typename ScalarBasisType,
size_t N>
2131 return 0.5 * (
basis.gradient(
i,
x) +
basis.gradient(
i,
x).transpose()) ;
2148 template <
typename ScalarBasisType,
size_t N>
2164 return 0.5 * (
basis.gradient(
i,
x) -
basis.gradient(
i,
x).transpose()) ;
2180 template <
typename ScalarBasisType,
size_t N>
2213 template <
typename ScalarBasisType,
size_t N>
2229 return basis.divergence(
i,
x);
2246 template <
typename ScalarBasisType,
size_t N>
2279 template <
typename ScalarBasisType,
size_t N>
2316 template <
typename ScalarBasisType,
size_t N>
2348 template <
typename ScalarBasisType,
size_t N>
2364 return basis.divergence(
i,
x);
2382 template <
typename ScalarBasisType,
size_t N>
2420 template<BasisFunctionE BasisFunction>
2423 template<
typename BasisType>
2424 static boost::multi_array<typename detail::basis_evaluation_traits<BasisType, BasisFunction>::ReturnValue, 2>
2432 boost::multi_array<typename traits::ReturnValue, 2>
2435 for (
size_t i = 0;
i <
basis.dimension();
i++) {
2445 template<
typename BasisType>
2446 static boost::multi_array<typename detail::basis_evaluation_traits<Family<BasisType>,
BasisFunction>::ReturnValue, 2>
2454 boost::multi_array<typename traits::ReturnValue, 2>
2459 boost::multi_array<typename traits::ReturnValue, 2>
2462 Eigen::MatrixXd
M =
basis.matrix();
2463 for (
size_t i = 0;
i <
size_t(
M.rows());
i++) {
2467 for (
size_t j = 1;
j <
size_t(
M.cols());
j++) {
2478 template <
typename BasisType,
size_t N>
2479 static boost::multi_array<typename detail::basis_evaluation_traits<TensorizedVectorFamily<BasisType, N>,
BasisFunction>::ReturnValue, 2>
2487 boost::multi_array<typename traits::ReturnValue, 2>
2491 const boost::multi_array<typename traits::AncestorBasisFunctionValue, 2>
ancestor_basis_quad
2494 for (
size_t i = 0;
i <
basis.dimension();
i++){
2503 template <
typename BasisType,
size_t N>
2504 static boost::multi_array<typename detail::basis_evaluation_traits<MatrixFamily<BasisType, N>,
BasisFunction>::ReturnValue, 2>
2512 boost::multi_array<typename traits::ReturnValue, 2>
2516 const boost::multi_array<typename traits::AncestorBasisFunctionValue, 2>
ancestor_basis_quad
2519 for (
size_t i = 0;
i <
basis.dimension();
i++){
2540 template<
typename T>
2556 Eigen::MatrixXd B = Eigen::MatrixXd::Zero(
Nb,
Nb);
2565 for (
size_t ib = 1;
ib <
Nb;
ib++) {
2567 Eigen::RowVectorXd
coeffs = Eigen::RowVectorXd::Zero(
ib);
2568 for (
size_t pb = 0;
pb <
ib;
pb++) {
2573 for (
size_t pb = 0;
pb <
ib;
pb++) {
2605 double scalar_product(
const Eigen::Matrix<double, N, N> &
x,
const Eigen::Matrix<double, N, N> &
y)
2607 return (
x.transpose() *
y).trace();
2611 template <
typename Value>
2613 const boost::multi_array<Value, 2> &
basis_quad,
2624 template <
typename Value>
2626 const boost::multi_array<Value, 2> &
basis_quad,
2627 const std::vector<Value> &
v
2641 const boost::multi_array<MatrixRd, 2> &
basis_quad,
2642 const std::vector<VectorRd> &
v_quad
2647 const std::vector<MatrixRd> & m_quad,
2648 const boost::multi_array<VectorRd, 2> &
basis_quad
2653 const std::vector<VectorRd> &
v_quad,
2654 const boost::multi_array<MatrixRd, 2> &
basis_quad
2658 template<
typename BasisType>
2662 boost::multi_array<typename BasisType::FunctionValue, 2> &
basis_quad
2686 template <
typename BasisType>
2689 const Eigen::MatrixXd &
GM
2695 Eigen::MatrixXd
L =
GM.llt().matrixL();
2706 template<
typename FunctionValue>
2708 const boost::multi_array<FunctionValue, 2> &
B2,
2712 const std::string
sym =
"nonsym"
2716 assert (
qr.size() ==
B1.shape()[1] &&
qr.size() ==
B2.shape()[1] );
2721 Eigen::ArrayXd
qr_weights = Eigen::ArrayXd::Zero(
qr.size());
2726 Eigen::MatrixXd
M = Eigen::MatrixXd::Zero(
nrows,
ncols);
2727 for (
size_t i = 0;
i <
nrows;
i++) {
2730 for (
size_t j = 0;
j <
jcut;
j++){
2734 std::vector<double>
tmp(
B1.shape()[1]);
2736 auto B1i =
B1[ boost::indices[
i][boost::multi_array_types::index_range(0,
B1.shape()[1])] ];
2737 auto B2j =
B2[ boost::indices[
j][boost::multi_array_types::index_range(0,
B1.shape()[1])] ];
2739 std::transform(
B1i.begin(),
B1i.end(),
B2j.begin(),
tmp.begin(), [](FunctionValue a, FunctionValue b)->double { return scalar_product(a,b);});
2740 Eigen::ArrayXd
tmp_array = Eigen::Map<Eigen::ArrayXd, Eigen::Unaligned>(
tmp.data(),
tmp.size());
2758 template<
typename FunctionValue>
2760 const boost::multi_array<FunctionValue, 2> &
B2,
2762 const std::string
sym =
"nonsym"
2769 template<
typename FunctionValue>
2779 const boost::multi_array<double, 2> &
B2,
2785 const boost::multi_array<double, 2> &
B2,
2789 const std::string
sym =
"nonsym"
2794 const boost::multi_array<double, 2> &
B2,
2796 const std::string
sym =
"nonsym"
2801 const boost::multi_array<VectorRd, 2> &
B2,
2805 const std::string
sym =
"nonsym"
2810 const boost::multi_array<VectorRd, 2> &
B2,
2812 const std::string
sym =
"nonsym"
2816 template<
typename ScalarFamilyType,
size_t N>
2822 Eigen::MatrixXd
Gram = Eigen::MatrixXd::Zero(
MatFam.dimension(),
MatFam.dimension());
2836 template <
typename T>
2859 Eigen::VectorXd
V = Eigen::VectorXd::Zero(
n_rows);
2875 template <
typename T,
typename U>
2883 const std::string
sym =
"nonsym"
2911 for (
size_t j = 0;
j <
jcut;
j++)
2925 template <
typename T,
typename U>
2931 const std::string
sym
2959 template <
typename Value>
2961 const boost::multi_array<Value, 2> &
f_quad,
2962 const boost::multi_array<Value, 2> &
g_quad,
2969 Eigen::MatrixXd
M = Eigen::MatrixXd::Zero(
dimf,
dimg);
2972 for (
size_t i = 0;
i <
dimf;
i++){
2979 for (
size_t j = 0;
j <
dimg;
j++){
2987 for (
size_t i = 0;
i <
dimf;
i++){
2988 for (
size_t j = 0;
j <
dimg;
j++){
2997 template <
typename Value>
2999 const boost::multi_array<Value, 2> &
f_quad,
3000 const boost::multi_array<Value, 2> &
g_quad,
3008 template <
typename Value>
3010 const boost::multi_array<Value, 2> &
f_quad,
3022 template<
typename BasisType>
3024 const std::function<
typename BasisType::FunctionValue(
const VectorRd &)> &
f,
3027 const boost::multi_array<typename BasisType::FunctionValue, 2> &
basis_quad,
3028 const Eigen::MatrixXd &
mass_basis = Eigen::MatrixXd::Zero(1,1)
3032 if (
Mass.norm() < 1
e-13){
3037 Eigen::VectorXd b = Eigen::VectorXd::Zero(
basis.dimension());
3038 for (
size_t i = 0;
i <
basis.dimension();
i++) {
3057 template <
typename BasisType>
3083 double h = 1./std::max(1.,
double(
basis.max_degree()));
3085 VectorRd xi = E.vertex(0)->coords() +
double(
i) *
h * (E.vertex(1)->coords() - E.vertex(0)->coords());
3138 boost::multi_array<typename BasisType::FunctionValue, 2> &values
Basis for the space of curls (vectorial rot) of polynomials.
Definition basis.hpp:1305
Basis (or rather family) of divergence of an existing basis.
Definition basis.hpp:1369
Basis for the complement G^{c,k}(T) in P^k(F)^2 of the range of the gradient on a face.
Definition basis.hpp:1625
Basis for the space of gradients of polynomials.
Definition basis.hpp:1242
Basis for the space of Hessians of polynomials.
Definition basis.hpp:1494
Basis for the complement H^{c,k}(T) in P^k(T)^{2x2} of the range of the Hessian on a face.
Definition basis.hpp:1679
Matrix family obtained from a scalar family.
Definition basis.hpp:750
Scalar monomial basis on a cell.
Definition basis.hpp:168
Scalar monomial basis on an edge.
Definition basis.hpp:243
Generate a basis restricted to the first "dimension" functions.
Definition basis.hpp:1131
Basis for the complement R^{c,k}(T) in P^k(T)^2 of the range of the vectorial rotational on a face.
Definition basis.hpp:1558
Basis (or rather family) of scalar rotor of an existing basis.
Definition basis.hpp:1430
Generate a basis where the function indices are shifted.
Definition basis.hpp:1020
Vector family for polynomial functions that are tangent to an edge (determined by the generator)
Definition basis.hpp:942
Vector family obtained by tensorization of a scalar family.
Definition basis.hpp:564
end function h
Definition convergence_analysis.m:146
for i
Definition convergence_analysis.m:48
for j
Definition convergence_analysis.m:19
end Sort data by mesh size(finest to coarsest or vice versa) for i
y
Definition generate_cartesian_mesh.m:23
Create grid points x
Definition generate_cartesian_mesh.m:22
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2092
void RotorValue
Definition basis.hpp:1501
static constexpr const TensorRankE tensorRank
Definition basis.hpp:576
VectorRd CurlValue
Definition basis.hpp:1434
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1636
size_t dimension() const
Compute the dimension of the basis.
Definition basis.hpp:1277
TensorizedVectorFamily< ScalarBasisType, N >::GradientValue ReturnValue
Definition basis.hpp:2120
static const bool hasRotor
Definition basis.hpp:1575
Eigen::Matrix< double, N, dimspace > GradientValue
Definition basis.hpp:567
static const bool hasGradient
Definition basis.hpp:1572
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< MatrixRd, 2 > &ancestor_basis_quad)
Definition basis.hpp:2301
MatrixGradient(Eigen::Matrix< double, N, N > diff_x, Eigen::Matrix< double, N, N > diff_y)
Constructor.
Definition basis.hpp:115
GradientValue gradient(size_t i, const VectorRd &x) const
Evaluate the gradient of the i-th function at point x.
Definition basis.hpp:383
BasisType::GradientValue GradientValue
Definition basis.hpp:318
Cell GeometricSupport
Definition basis.hpp:1689
static const bool hasFunction
Definition basis.hpp:256
size_t max_degree() const
Returns the maximum degree of the basis functions.
Definition basis.hpp:283
BasisType AncestorType
Definition basis.hpp:1451
static boost::multi_array< typename detail::basis_evaluation_traits< TensorizedVectorFamily< BasisType, N >, BasisFunction >::ReturnValue, 2 > compute(const TensorizedVectorFamily< BasisType, N > &basis, const QuadratureRule &quad)
Evaluate a tensorized family at quadrature nodes (optimised compared the generic basis evaluation,...
Definition basis.hpp:2480
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_basis_quad)
Definition basis.hpp:2135
static const bool hasDivergence
Definition basis.hpp:1147
MatrixFamily< ScalarBasisType, N >::GradientValue ReturnValue
Definition basis.hpp:2387
VectorRd FunctionValue
Definition basis.hpp:1560
static const bool hasFunction
Definition basis.hpp:1033
static constexpr const bool hasAncestor
Definition basis.hpp:1692
size_t dimension() const
Return the dimension of the family.
Definition basis.hpp:979
double DivergenceValue
Definition basis.hpp:1374
VectorRd CurlValue
Definition basis.hpp:247
static const bool hasCurlCurl
Definition basis.hpp:587
BasisType::RotorValue ReturnValue
Definition basis.hpp:1983
HessianValue hessian(size_t i, const VectorRd &x) const
Evaluate the Hessian of the i-th basis function at point x.
Definition basis.hpp:487
static const bool hasGradient
Definition basis.hpp:579
static const bool hasFunction
Definition basis.hpp:578
const size_t matrixSize() const
Return the dimension of the matrices in the family.
Definition basis.hpp:865
static const bool hasCurlCurl
Definition basis.hpp:1150
DivergenceValue divergence(size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
Evaluate the divergence of the i-th basis function at a quadrature point iqn, knowing all the gradien...
Definition basis.hpp:672
BasisType m_basis
Definition basis.hpp:3153
static constexpr const bool hasAncestor
Definition basis.hpp:954
BasisType::FunctionValue FunctionValue
Definition basis.hpp:317
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1569
size_t dimension() const
Compute the dimension of the basis.
Definition basis.hpp:1531
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th function at point x.
Definition basis.hpp:356
static std::vector< VectorZd > complete(size_t degree)
Definition basis.hpp:88
static ReturnValue evaluate(const MatrixFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2358
BasisType::FunctionValue ReturnValue
Definition basis.hpp:1842
static constexpr const bool hasAncestor
Definition basis.hpp:762
static const bool hasHessian
Definition basis.hpp:1576
CurlValue curl(size_t i, const VectorRd &x) const
Evaluate the curl of the i-th basis function at point x.
Definition basis.hpp:648
static const bool hasDivergence
Definition basis.hpp:184
size_t dimension() const
Return the dimension of the family.
Definition basis.hpp:799
void RotorValue
Definition basis.hpp:1564
BasisType::GeometricSupport GeometricSupport
Definition basis.hpp:1314
Eigen::MatrixXd compute_closure_matrix(const boost::multi_array< Value, 2 > &f_quad, const boost::multi_array< Value, 2 > &g_quad, const QuadratureRule &qr_f, const QuadratureRule &qr_g)
Computes closure equation matrices, from evaluations at quadrature nodes. For two families of functio...
Definition basis.hpp:2960
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:1191
CurlBasis(const BasisType &basis)
Constructor.
Definition basis.hpp:1329
void HessianValue
Definition basis.hpp:572
BasisType::HessianValue HessianValue
Definition basis.hpp:322
MatrixGradient()
Default constructor.
Definition basis.hpp:125
static const bool hasCurlCurl
Definition basis.hpp:1263
VectorRd CurlValue
Definition basis.hpp:1373
BasisFunctionE
Definition basis.hpp:1740
double FunctionValue
Definition basis.hpp:1371
void RotorValue
Definition basis.hpp:174
static const bool hasHessian
Definition basis.hpp:1698
static const bool hasCurl
Definition basis.hpp:1512
static const bool hasFunction
Definition basis.hpp:1381
TensorizedVectorFamily< ScalarBasisType, N >::CurlCurlValue ReturnValue
Definition basis.hpp:2284
static ReturnValue evaluate(const BasisType &basis, size_t i, size_t iqn, const boost::multi_array< ReturnValue, 2 > &ancestor_hessian_quad)
Definition basis.hpp:2013
static const bool hasDivergence
Definition basis.hpp:958
BasisType::GeometricSupport GeometricSupport
Definition basis.hpp:324
static ReturnValue evaluate(const BasisType &basis, size_t i, size_t iqn, const boost::multi_array< ReturnValue, 2 > &ancestor_gradient_quad)
Definition basis.hpp:1921
static const bool hasRotor
Definition basis.hpp:1514
static constexpr const TensorRankE tensorRank
Definition basis.hpp:953
DivergenceBasis(const BasisType &basis)
Constructor.
Definition basis.hpp:1391
static constexpr const bool hasAncestor
Definition basis.hpp:1442
static constexpr const bool hasAncestor
Definition basis.hpp:1143
VectorRd CurlValue
Definition basis.hpp:946
static const bool hasGradient
Definition basis.hpp:1319
static ReturnValue evaluate(const BasisType &basis, size_t i, size_t iqn, const boost::multi_array< ReturnValue, 2 > &ancestor_divergence_quad)
Definition basis.hpp:1967
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1441
void HessianValue
Definition basis.hpp:949
Eigen::Vector2d VectorRd
Definition basis.hpp:55
Eigen::Vector2i VectorZd
Definition basis.hpp:56
BasisType::RotorValue RotorValue
Definition basis.hpp:1026
void DivergenceValue
Definition basis.hpp:1630
BasisType::GeometricSupport GeometricSupport
Definition basis.hpp:1439
Eigen::Matrix< double, dimspace, dimspace > CurlValue
Definition basis.hpp:1309
static const bool hasHessian
Definition basis.hpp:960
static const bool hasGradient
Definition basis.hpp:956
Eigen::Matrix< double, dimspace, dimspace > GradientValue
Definition basis.hpp:1308
boost::multi_array< VectorRd, 2 > matrix_vector_product(const boost::multi_array< MatrixRd, 2 > &basis_quad, const std::vector< VectorRd > &v_quad)
Take the product of a matrix-valued basis with a vector.
Definition basis.cpp:175
BasisType::DivergenceValue DivergenceValue
Definition basis.hpp:320
Family(const BasisType &basis, const Eigen::MatrixXd &matrix)
Constructor.
Definition basis.hpp:339
TensorizedVectorFamily< ScalarBasisType, N >::GradientValue ReturnValue
Definition basis.hpp:2087
BasisType::GradientValue GradientValue
Definition basis.hpp:1134
static ReturnValue evaluate(const MatrixFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2392
static ReturnValue evaluate(const BasisType &basis, size_t i, const VectorRd &x)
Definition basis.hpp:1915
static const bool hasRotor
Definition basis.hpp:1148
static const bool hasRotor
Definition basis.hpp:766
BasisType AncestorType
Definition basis.hpp:1517
static boost::multi_array< typename detail::basis_evaluation_traits< Family< BasisType >, BasisFunction >::ReturnValue, 2 > compute(const Family< BasisType > &basis, const QuadratureRule &quad)
Evaluate a 'Family' of functions at quadrature nodes (optimised compared the generic basis evaluation...
Definition basis.hpp:2447
void GradientValue
Definition basis.hpp:1683
static const bool hasFunction
Definition basis.hpp:1693
static ReturnValue evaluate(const BasisType &basis, size_t i, size_t iqn, const boost::multi_array< ReturnValue, 2 > &ancestor_curl_quad)
Definition basis.hpp:1944
GradientValue gradient(size_t i, const VectorRd &x) const
Evaluate the gradient of the i-th basis function at point x.
Definition basis.cpp:31
constexpr const ScalarFamilyType & ancestor() const
Return the ancestor (family that has been tensorized)
Definition basis.hpp:720
static const bool hasRotor
Definition basis.hpp:1322
BasisType AncestorType
Definition basis.hpp:336
static const bool hasDivergence
Definition basis.hpp:259
static const bool hasCurl
Definition basis.hpp:258
void HessianValue
Definition basis.hpp:1249
static const bool hasCurl
Definition basis.hpp:957
size_t dimension() const
Dimension of the family. This is actually the number of functions in the family, not necessarily line...
Definition basis.hpp:350
static const bool hasDivergence
Definition basis.hpp:1513
constexpr const BasisType & ancestor() const
Return the ancestor (basis that the gradient was taken of)
Definition basis.hpp:1289
static ReturnValue evaluate(const MatrixFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< double, 2 > &ancestor_basis_quad)
Definition basis.hpp:2336
static const bool hasCurl
Definition basis.hpp:1640
void GradientValue
Definition basis.hpp:1498
RotorValue rotor(size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
Evaluate the scalar rotor of the i-th basis function at a quadrature point iqn, knowing all the gradi...
Definition basis.hpp:688
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2289
void HessianValue
Definition basis.hpp:250
RestrictedBasis(const BasisType &basis, const size_t &dimension)
Constructor.
Definition basis.hpp:1155
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2256
BasisType::CurlValue CurlValue
Definition basis.hpp:1024
static const bool hasFunction
Definition basis.hpp:1255
static ReturnValue evaluate(const BasisType &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2030
BasisType::HessianValue HessianValue
Definition basis.hpp:1138
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:1345
Edge GeometricSupport
Definition basis.hpp:951
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2125
const Eigen::MatrixXd symmetriseOperator() const
Return the symmetrisation operator, the rN^2 square matrix that to a given vector of coefficients on ...
Definition basis.hpp:877
GradientBasis(const BasisType &basis)
Constructor.
Definition basis.hpp:1268
boost::multi_array< T, 2 > BasisQuad
type for a family of basis functions evaluated on quadrature nodes
Definition basis.hpp:61
DivergenceValue divergence(size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
Evaluate the divergence of the i-th basis function at a quadrature point iqn, knowing all the gradien...
Definition basis.hpp:830
VectorRd generator() const
Returns the generator of the basis functions.
Definition basis.hpp:1003
static const bool hasCurl
Definition basis.hpp:583
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1316
GradientValue gradient(size_t i, const VectorRd &x) const
Evaluate the gradient of the i-th basis function at point x.
Definition basis.hpp:628
GradientValue gradient(size_t i, const VectorRd &x) const
Evaluate the gradient of the i-th basis function at point x.
Definition basis.cpp:76
static const bool hasDivergence
Definition basis.hpp:331
size_t dimension() const
Compute the dimension of the basis.
Definition basis.hpp:1465
TensorizedVectorFamily< ScalarBasisType, N >::FunctionValue ReturnValue
Definition basis.hpp:2055
void DivergenceValue
Definition basis.hpp:248
static const bool hasHessian
Definition basis.hpp:1385
VectorRd FunctionValue
Definition basis.hpp:1627
static const bool hasHessian
Definition basis.hpp:1262
Cell GeometricSupport
Definition basis.hpp:1634
const Eigen::MatrixXd transposeOperator() const
Return the transpose operator, the rN^2 square matrix that to a given vector of coefficients on the M...
Definition basis.hpp:871
GradientValue gradient(size_t i, const VectorRd &x) const
Evaluate the gradient of the i-th basis function at point x.
Definition basis.hpp:839
MatrixGradient & operator+=(const MatrixGradient &G)
Increment.
Definition basis.hpp:137
void RotorValue
Definition basis.hpp:948
static const bool hasCurlCurl
Definition basis.hpp:1577
RotorBasis(const BasisType &basis)
Constructor.
Definition basis.hpp:1454
VectorRd GradientValue
Definition basis.hpp:1433
ScalarFamilyType AncestorType
Definition basis.hpp:771
size_t dimension() const
Return the dimension of the basis.
Definition basis.hpp:1168
VectorRd AncestorBasisFunctionValue
Definition basis.hpp:2389
GradientValue gradient(size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
Evaluate the gradient of the i-th basis function at a quadrature point iqn, knowing all the gradients...
Definition basis.hpp:638
Cell GeometricSupport
Definition basis.hpp:177
GradientValue gradient(size_t i, size_t iqn, const boost::multi_array< GradientValue, 2 > &ancestor_gradient_quad) const
Evaluate the gradient of the i-th function at a quadrature point iqn, knowing all the gradients of an...
Definition basis.hpp:396
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:608
MatrixGradient< N > GradientValue
Definition basis.hpp:753
double scalar_product(const double &x, const double &y)
Scalar product between two reals.
Definition basis.cpp:163
VectorRd CurlCurlValue
Definition basis.hpp:569
void HessianValue
Definition basis.hpp:1502
size_t dimension() const
Dimension of the basis.
Definition basis.hpp:1654
Eigen::Matrix< double, N, 1 > FunctionValue
Definition basis.hpp:566
void DivergenceValue
Definition basis.hpp:1685
FunctionValue function(size_t i, size_t iqn, const boost::multi_array< double, 2 > &ancestor_value_quad) const
Evaluate the i-th basis function at a quadrature point iqn, knowing all the values of ancestor basis ...
Definition basis.hpp:618
Eigen::MatrixXd compute_gram_matrix(const boost::multi_array< VectorRd, 2 > &B1, const boost::multi_array< double, 2 > &B2, const QuadratureRule &qr)
Compute the Gram-like matrix given a family of vector-valued and one of scalar-valued functions by te...
Definition basis.cpp:239
void DivergenceValue
Definition basis.hpp:173
BasisType::FunctionValue FunctionValue
Definition basis.hpp:1133
BasisType::GeometricSupport GeometricSupport
Definition basis.hpp:1504
static constexpr const bool hasAncestor
Definition basis.hpp:1254
QuadratureRule m_nodes
Nodes for the interpolation.
Definition basis.hpp:3157
Family< MatrixFamily< ScalarBasisType, N > > IsotropicMatrixFamily(const ScalarBasisType &B)
From a scalar family B, constructs a "Family" of "MatrixFamily" (built on B, of size NxN) that repres...
Definition basis.hpp:1812
BasisType AncestorType
Definition basis.hpp:1152
BasisType::GradientValue ReturnValue
Definition basis.hpp:1866
TensorizedVectorFamily< ScalarBasisType, N >::CurlValue ReturnValue
Definition basis.hpp:2185
static constexpr const bool hasAncestor
Definition basis.hpp:577
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1031
MatrixRd HessianValue
Definition basis.hpp:175
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:1283
Eigen::Matrix< double, dimspace, dimspace > GradientValue
Definition basis.hpp:1245
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_basis_quad)
Definition basis.hpp:2233
BasisType::RotorValue RotorValue
Definition basis.hpp:321
MatrixRd AncestorBasisFunctionValue
Definition basis.hpp:2286
static const bool hasGradient
Definition basis.hpp:1145
BasisType::DivergenceValue ReturnValue
Definition basis.hpp:1960
static const bool hasCurl
Definition basis.hpp:767
size_t max_degree() const
Returns the maximum degree of the basis functions.
Definition basis.hpp:726
static ReturnValue evaluate(const BasisType &basis, size_t i, size_t iqn, const boost::multi_array< ReturnValue, 2 > &ancestor_gradient_quad)
Definition basis.hpp:1897
static const bool hasHessian
Definition basis.hpp:333
static const std::vector< VectorRd > basisRd
Definition basis.hpp:58
BasisType::GeometricSupport GeometricSupport
Definition basis.hpp:1029
static const bool hasDivergence
Definition basis.hpp:581
static const bool hasDivergence
Definition basis.hpp:1446
static const bool hasHessian
Definition basis.hpp:768
static constexpr const bool hasAncestor
Definition basis.hpp:1507
void HessianValue
Definition basis.hpp:1312
static const bool hasHessian
Definition basis.hpp:1323
static const bool hasCurlCurl
Definition basis.hpp:1386
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1142
HessianValue hessian(size_t i, size_t iqn, const boost::multi_array< HessianValue, 2 > &ancestor_hessian_quad) const
Evaluate the hessian of the i-th function at a quadrature point iqn, knowing all the hessian of ances...
Definition basis.hpp:500
size_t max_degree() const
Returns the maximum degree of the basis functions.
Definition basis.hpp:1180
static const bool hasCurlCurl
Definition basis.hpp:262
TangentFamily(const ScalarFamilyType &scalar_family, const VectorRd &generator)
Constructor.
Definition basis.hpp:966
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:985
RotorValue rotor(size_t i, const VectorRd &x) const
Evaluate the scalar rotor of the i-th basis function at point x.
Definition basis.hpp:680
size_t dimension() const
Compute the dimension of the basis.
Definition basis.hpp:1707
DivergenceValue divergence(size_t i, const VectorRd &x) const
Evaluate the divergence of the i-th basis function at point x.
Definition basis.hpp:664
size_t dimension() const
Compute the dimension of the basis.
Definition basis.hpp:1586
MatrixFamily< ScalarBasisType, N >::DivergenceValue ReturnValue
Definition basis.hpp:2353
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_basis_quad)
Definition basis.hpp:2102
CurlCurlValue curlcurl(size_t i, size_t iqn, const boost::multi_array< typename ScalarFamilyType::HessianValue, 2 > &ancestor_hessian_quad) const
Evaluate the curl curl of the i-th basis function at a quadrature point iqn, knowing all the values o...
Definition basis.hpp:708
Eigen::MatrixXd compute_weighted_gram_matrix(const FType< VectorRd > &f, const BasisQuad< VectorRd > &B1, const BasisQuad< double > &B2, const QuadratureRule &qr, size_t n_rows, size_t n_cols)
Computes the Gram-like matrix of integrals (f dot phi_i, phi_j)
Definition basis.cpp:368
BasisType::FunctionValue FunctionValue
Definition basis.hpp:1022
void HessianValue
Definition basis.hpp:1565
static const bool hasHessian
Definition basis.hpp:1643
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1253
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:1073
static ReturnValue evaluate(const MatrixFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2326
boost::multi_array< outValue, 2 > transform_values_quad(const boost::multi_array< inValue, 2 > &B_quad, const FunctionType &F)
Takes an array B_quad of values at quadrature nodes and applies the function F to all of them....
Definition basis.hpp:1754
static const bool hasDivergence
Definition basis.hpp:1384
static constexpr const TensorRankE tensorRank
Definition basis.hpp:254
size_t dimension() const
Return the dimension of the basis.
Definition basis.hpp:1055
VectorRd FunctionValue
Definition basis.hpp:944
static const bool hasHessian
Definition basis.hpp:261
VectorRd AncestorBasisFunctionValue
Definition basis.hpp:2155
static boost::multi_array< typename detail::basis_evaluation_traits< MatrixFamily< BasisType, N >, BasisFunction >::ReturnValue, 2 > compute(const MatrixFamily< BasisType, N > &basis, const QuadratureRule &quad)
Evaluate a Matrix family at quadrature nodes (optimised compared the generic basis evaluation,...
Definition basis.hpp:2505
static const bool hasFunction
Definition basis.hpp:955
RotorValue rotor(size_t i, const VectorRd &x) const
Evaluate the scalar rotor of the i-th basis function at point x.
Definition basis.hpp:1105
static const bool hasFunction
Definition basis.hpp:763
size_t dimension() const
Compute the dimension of the basis.
Definition basis.hpp:196
size_t max_degree() const
Returns the maximum degree of the basis functions.
Definition basis.hpp:1067
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1691
static const bool hasCurlCurl
Definition basis.hpp:769
GradientValue gradient(size_t i, const VectorRd &x) const
Evaluate the gradient of the i-th basis function at point x.
Definition basis.hpp:1081
ScalarFamilyType::GeometricSupport GeometricSupport
Definition basis.hpp:759
CurlValue curl(size_t i, const VectorRd &x) const
Evaluate the curl of the i-th basis function at point x.
Definition basis.hpp:1089
static ReturnValue evaluate(const MatrixFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_basis_quad)
Definition basis.hpp:2402
double AncestorBasisFunctionValue
Definition basis.hpp:2323
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:1537
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:805
boost::multi_array< typename BasisType::FunctionValue, 2 > m_on_basis_nodes
Definition basis.hpp:3155
double RotorValue
Definition basis.hpp:1631
void RotorValue
Definition basis.hpp:1311
Eigen::Matrix2d MatrixRd
Definition basis.hpp:54
BasisType::DivergenceValue DivergenceValue
Definition basis.hpp:1025
GradientValue CurlValue
Definition basis.hpp:568
BasisType::CurlValue ReturnValue
Definition basis.hpp:1937
RotorValue rotor(size_t i, size_t iqn, const boost::multi_array< RotorValue, 2 > &ancestor_rotor_quad) const
Evaluate the scalar rotor of the i-th function at a quadrature point iqn, knowing all the scalar roto...
Definition basis.hpp:474
static const bool hasDivergence
Definition basis.hpp:765
TensorizedVectorFamily< ScalarBasisType, N >::RotorValue ReturnValue
Definition basis.hpp:2251
CurlCurlValue curlcurl(size_t i, const VectorRd &x) const
Evaluate the curl curl of the i-th basis function at point x. We use the formula curl curl = - Laplac...
Definition basis.hpp:696
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_basis_quad)
Definition basis.hpp:2200
CurlValue curl(size_t i, const VectorRd &x) const
Evaluate the curl of the i-th basis function at point x.
Definition basis.hpp:1207
static const bool hasRotor
Definition basis.hpp:1261
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2158
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2060
void RotorValue
Definition basis.hpp:1686
static std::function< Eigen::MatrixXd(const Eigen::MatrixXd &)> symmetrise_matrix
Function to symmetrise a matrix (useful together with transform_values_quad)
Definition basis.hpp:1803
DivergenceValue divergence(size_t i, const VectorRd &x) const
Evaluate the divergence of the i-th basis function at point x.
Definition basis.hpp:1097
VectorRd AncestorBasisFunctionValue
Definition basis.hpp:2089
VectorZd powers(size_t i) const
Returns the powers of the i-th basis function (its degree can be found using powers(i)....
Definition basis.hpp:220
DivergenceValue divergence(size_t i, const VectorRd &x) const
Evaluate the divergence of the i-th function at point x.
Definition basis.hpp:435
static constexpr const bool hasAncestor
Definition basis.hpp:1032
BasisType::GradientValue FunctionValue
Definition basis.hpp:1244
static const bool hasGradient
Definition basis.hpp:1639
Eigen::Matrix< double, dimspace, dimspace > CurlValue
Definition basis.hpp:1629
size_t max_degree() const
Returns the maximum degree of the basis functions.
Definition basis.hpp:214
VectorRd FunctionValue
Definition basis.hpp:1307
void DivergenceValue
Definition basis.hpp:1247
void DivergenceValue
Definition basis.hpp:947
constexpr const BasisType & ancestor() const
Return the underlying complete basis.
Definition basis.hpp:1061
BasisType::GradientValue GradientValue
Definition basis.hpp:1023
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_basis_quad)
Definition basis.hpp:2168
GradientValue gradient(size_t i, const VectorRd &x) const
Evaluate the gradient of the i-th basis function at point x.
Definition basis.hpp:1199
static const bool hasHessian
Definition basis.hpp:1448
VectorRd AncestorBasisFunctionValue
Definition basis.hpp:2220
double DivergenceValue
Definition basis.hpp:1563
static constexpr const bool hasAncestor
Definition basis.hpp:180
DivergenceValue rotor(size_t i, const VectorRd &x) const
Evaluate the scalar rotor of the i-th function at point x.
Definition basis.hpp:461
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_basis_quad)
Definition basis.hpp:2266
VectorRd GradientValue
Definition basis.hpp:945
constexpr const BasisType & ancestor() const
Return the underlying complete basis.
Definition basis.hpp:1174
Eigen::VectorXd l2_projection(const std::function< typename BasisType::FunctionValue(const VectorRd &)> &f, const BasisType &basis, QuadratureRule &quad, const boost::multi_array< typename BasisType::FunctionValue, 2 > &basis_quad, const Eigen::MatrixXd &mass_basis=Eigen::MatrixXd::Zero(1, 1))
Compute the L2-projection of a function.
Definition basis.hpp:3023
void CurlValue
Definition basis.hpp:1684
BasisType AncestorType
Definition basis.hpp:1326
static const bool hasCurlCurl
Definition basis.hpp:961
static const bool hasCurl
Definition basis.hpp:1146
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1506
static const bool hasCurl
Definition basis.hpp:1259
static const bool hasFunction
Definition basis.hpp:1571
CurlValue curl(size_t i, const VectorRd &x) const
Evaluate the curl (vector rot) of the i-th basis function at point x.
Definition basis.cpp:41
static const bool hasRotor
Definition basis.hpp:1447
void DivergenceValue
Definition basis.hpp:1500
FunctionValue function(size_t i, size_t iqn, const boost::multi_array< double, 2 > &ancestor_value_quad) const
Evaluate the i-th basis function at a quadrature point iqn, knowing all the values of ancestor basis ...
Definition basis.hpp:813
static const bool hasGradient
Definition basis.hpp:257
Eigen::MatrixXd PermuteTensorization(const size_t a, const size_t b)
Returns the matrix giving the permutation of the tensorization of a family of size a with a family of...
Definition basis.cpp:224
Cell GeometricSupport
Definition basis.hpp:1567
VectorRd AncestorBasisFunctionValue
Definition basis.hpp:2122
MatrixFamily(const ScalarFamilyType &scalar_family)
Definition basis.hpp:773
constexpr int dimspace
Dimension, and generic types for vector in correct dimension (makes it easier to translate a code bet...
Definition basis.hpp:53
TensorRankE
Definition basis.hpp:67
MatrixGradient< N > operator*(double scalar, MatrixGradient< N > const &G)
Multiplication of a MatrixGradient from the left (non-member function to be able to multiply from the...
Definition basis.hpp:156
RotorValue rotor(size_t i, const VectorRd &x) const
Evaluate the rotor of the i-th basis function at point x.
Definition basis.cpp:131
double FunctionValue
Definition basis.hpp:170
const Eigen::MatrixXd traceOperator() const
Returns the matrix corresponding to the trace, expressed as a linear operator between that MatrixFami...
Definition basis.hpp:908
Eigen::MatrixXd gram_schmidt(boost::multi_array< T, 2 > &basis_eval, const std::function< double(size_t, size_t)> &inner_product)
Definition basis.hpp:2541
CurlValue curl(size_t i, const VectorRd &x) const
Evaluate the curl of the i-th function at point x.
Definition basis.hpp:409
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2190
VectorRd CurlValue
Definition basis.hpp:754
VectorRd AncestorBasisFunctionValue
Definition basis.hpp:2187
static const bool hasRotor
Definition basis.hpp:185
BasisType::GradientValue ReturnValue
Definition basis.hpp:1890
static constexpr const bool hasAncestor
Definition basis.hpp:1637
DivergenceValue divergence(size_t i, const VectorRd &x) const
Evaluate the divergence of the i-th basis function at point x.
Definition basis.hpp:1215
void RotorValue
Definition basis.hpp:1248
MatrixGradient operator+(const MatrixGradient &G)
Addition.
Definition basis.hpp:132
constexpr const BasisType & ancestor() const
Return the ancestor (basis that the gradient was taken of)
Definition basis.hpp:1351
static const bool hasCurl
Definition basis.hpp:330
BasisType::CurlValue CurlValue
Definition basis.hpp:319
static ReturnValue evaluate(const BasisType &basis, size_t i, const VectorRd &x)
Definition basis.hpp:1938
static const bool hasGradient
Definition basis.hpp:1258
MatrixRd FunctionValue
Definition basis.hpp:1681
static const bool hasGradient
Definition basis.hpp:1382
Family< BasisType > m_on_basis
Definition basis.hpp:3154
static std::function< Eigen::MatrixXd(const Eigen::MatrixXd &)> skew_symmetrise_matrix
Function to skew-symmetrise a matrix (useful together with transform_values_quad)
Definition basis.hpp:1807
static const bool hasCurl
Definition basis.hpp:1573
void RotorValue
Definition basis.hpp:756
static constexpr const bool hasAncestor
Definition basis.hpp:255
BasisType::HessianValue HessianValue
Definition basis.hpp:1027
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2223
DivergenceValue divergence(size_t i, size_t iqn, const boost::multi_array< DivergenceValue, 2 > &ancestor_divergence_quad) const
Evaluate the divergence of the i-th function at a quadrature point iqn, knowing all the divergences o...
Definition basis.hpp:448
static const bool hasCurlCurl
Definition basis.hpp:334
double DivergenceValue
Definition basis.hpp:570
std::function< T(const VectorRd &)> FType
type for function of point. T is the type of value of the function
Definition basis.hpp:64
BasisType AncestorType
Definition basis.hpp:1265
static const bool hasHessian
Definition basis.hpp:186
DivergenceValue divergence(size_t i, const VectorRd &x) const
Evaluate the divergence of the i-th basis function at point x.
Definition basis.hpp:821
constexpr const BasisType & ancestor() const
Return the ancestor (basis that the gradient was taken of)
Definition basis.hpp:1414
RotorValue rotor(size_t i, const VectorRd &x) const
Evaluate the rotor of the i-th basis function at point x.
Definition basis.hpp:1223
CurlValue curl(size_t i, size_t iqn, const boost::multi_array< CurlValue, 2 > &ancestor_curl_quad) const
Evaluate the curl of the i-th function at a quadrature point iqn, knowing all the curls of ancestor b...
Definition basis.hpp:422
static constexpr const TensorRankE tensorRank
Definition basis.hpp:761
static const bool hasRotor
Definition basis.hpp:582
Eigen::Matrix< double, dimspace, dimspace > GradientValue
Definition basis.hpp:1561
Eigen::Matrix< double, N, N > dx
Definition basis.hpp:149
static const bool hasGradient
Definition basis.hpp:1444
Family< BasisType > l2_orthonormalize(const BasisType &basis, const QuadratureRule &qr, boost::multi_array< typename BasisType::FunctionValue, 2 > &basis_quad)
-orthonormalization: simply consists in using gram_schmidt() with the specific l2 inner product
Definition basis.hpp:2659
static const bool hasDivergence
Definition basis.hpp:1696
BasisType::GeometricSupport GeometricSupport
Definition basis.hpp:1377
static constexpr const TensorRankE tensorRank
Definition basis.hpp:179
constexpr const BasisType & ancestor() const
Return the ancestor.
Definition basis.hpp:519
static const bool hasDivergence
Definition basis.hpp:1321
static const bool hasCurl
Definition basis.hpp:1035
Eigen::Matrix< double, N, N > FunctionValue
Definition basis.hpp:752
VectorRd GradientValue
Definition basis.hpp:1372
Family< TensorizedVectorFamily< ScalarBasisType, N > > GenericTensorization(const ScalarBasisType &B, const std::vector< Eigen::VectorXd > &v)
From a scalar family B=(B_1..B_r) and vectors (v_1..v_k) in R^N, constructs a "Family" of "Tensorized...
Definition basis.hpp:1769
static ReturnValue evaluate(const BasisType &basis, size_t i, const VectorRd &x)
Definition basis.hpp:1984
Family< BasisType > family(boost::multi_array< typename BasisType::FunctionValue, 2 > &values)
Returns the decomposed polynomials as a Family of the provided basis.
Definition basis.hpp:3137
static const bool hasRotor
Definition basis.hpp:332
size_t dimension() const
Compute the dimension of the basis.
Definition basis.hpp:1339
static const bool hasFunction
Definition basis.hpp:1318
ScalarFamilyType AncestorType
Definition basis.hpp:963
size_t dimension() const
Return the dimension of the family.
Definition basis.hpp:602
static ReturnValue evaluate(const BasisType &basis, size_t i, const VectorRd &x)
Definition basis.hpp:2007
static const bool hasCurl
Definition basis.hpp:1320
const ScalarFamilyType & ancestor() const
Return the ancestor (family that has been tensorized)
Definition basis.hpp:859
size_t dimension() const
Compute the dimension of the basis.
Definition basis.hpp:1402
static const bool hasGradient
Definition basis.hpp:1511
static const bool hasFunction
Definition basis.hpp:181
DivergenceValue divergence(size_t i, const VectorRd &x) const
Evaluate the divergence of the i-th basis function at point x.
Definition basis.cpp:106
static ReturnValue evaluate(const BasisType &basis, size_t i, size_t iqn, const boost::multi_array< ReturnValue, 2 > &ancestor_rotor_quad)
Definition basis.hpp:1990
BasisType::GeometricSupport GeometricSupport
Definition basis.hpp:1140
VectorRd AncestorBasisFunctionValue
Definition basis.hpp:2253
VectorRd CurlValue
Definition basis.hpp:1246
BasisType AncestorType
Definition basis.hpp:1041
void HessianValue
Definition basis.hpp:1375
FunctionValue function(size_t i, size_t iqn, const boost::multi_array< FunctionValue, 2 > &ancestor_value_quad) const
Evaluate the i-th function at a quadrature point iqn, knowing all the values of ancestor basis functi...
Definition basis.hpp:369
GradientValue gradient(size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
Evaluate the gradient of the i-th basis function at a quadrature point iqn, knowing all the gradients...
Definition basis.hpp:849
size_t max_degree() const
Returns the maximum degree of the basis functions.
Definition basis.hpp:1598
MatrixRd FunctionValue
Definition basis.hpp:1496
Eigen::Matrix< double, dimspace, dimspace > GradientValue
Definition basis.hpp:1628
VectorRd GradientValue
Definition basis.hpp:246
size_t max_degree() const
Returns the maximum degree of the basis functions.
Definition basis.hpp:1716
DecomposePoly(const Cell &T, const BasisType &basis)
Constructor for cell.
Definition basis.hpp:3096
static const bool hasGradient
Definition basis.hpp:764
static const bool hasRotor
Definition basis.hpp:260
static const bool hasCurlCurl
Definition basis.hpp:1644
static const bool hasCurl
Definition basis.hpp:1445
static ReturnValue evaluate(const BasisType &basis, size_t i, const VectorRd &x)
Definition basis.hpp:1961
static const bool hasRotor
Definition basis.hpp:1697
void RotorValue
Definition basis.hpp:1436
TensorizedVectorFamily< ScalarBasisType, N >::GradientValue ReturnValue
Definition basis.hpp:2153
static const bool hasDivergence
Definition basis.hpp:1260
static const bool hasHessian
Definition basis.hpp:1038
void HessianValue
Definition basis.hpp:1632
static const bool hasFunction
Definition basis.hpp:1144
static ReturnValue evaluate(const BasisType &basis, size_t i, size_t iqn, const boost::multi_array< ReturnValue, 2 > &ancestor_gradient_quad)
Definition basis.hpp:1873
const Eigen::MatrixXd symmetricBasis() const
Returns the matrix that can be used, in a Family of this MatrixBasis, to create a basis of the subspa...
Definition basis.hpp:883
static const bool hasRotor
Definition basis.hpp:1642
size_t max_degree() const
Returns the maximum degree of the basis functions.
Definition basis.hpp:997
VectorRd GradientValue
Definition basis.hpp:171
HessianValue hessian(size_t i, const VectorRd &x) const
Evaluate the Hessian of the i-th basis function at point x.
Definition basis.cpp:46
double RotorValue
Definition basis.hpp:571
BasisType::DivergenceValue DivergenceValue
Definition basis.hpp:1136
BasisType::GradientValue ReturnValue
Definition basis.hpp:1914
static ReturnValue evaluate(const BasisType &basis, size_t i, const VectorRd &x)
Definition basis.hpp:1843
ScalarFamilyType::GeometricSupport GeometricSupport
Definition basis.hpp:574
Eigen::VectorXd integrate(const FType< T > &f, const BasisQuad< T > &B, const QuadratureRule &qr, size_t n_rows=0)
Compute the integral of a given function against all functions from a family.
Definition basis.hpp:2837
static ReturnValue evaluate(const BasisType &basis, size_t i, size_t iqn, const boost::multi_array< ReturnValue, 2 > &ancestor_value_quad)
Definition basis.hpp:1849
BasisType::CurlCurlValue ReturnValue
Definition basis.hpp:2029
VectorZd powers(size_t i) const
Returns the powers of the i-th basis function (not including the vector part)
Definition basis.hpp:1604
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:1471
static const bool hasHessian
Definition basis.hpp:586
size_t max_degree() const
Returns the maximum degree of the basis functions.
Definition basis.hpp:525
HessianBasis(const BasisType &basis)
Constructor.
Definition basis.hpp:1520
double AncestorBasisFunctionValue
Definition basis.hpp:2057
static const bool hasRotor
Definition basis.hpp:959
void HessianValue
Definition basis.hpp:757
Eigen::Matrix< double, N, N > dy
Definition basis.hpp:150
BasisType::GeometricSupport GeometricSupport
Definition basis.hpp:1251
static ReturnValue evaluate(const BasisType &basis, size_t i, const VectorRd &x)
Definition basis.hpp:1891
static const bool hasFunction
Definition basis.hpp:328
static const bool hasGradient
Definition basis.hpp:182
ShiftedBasis(const BasisType &basis, const int shift)
Constructor.
Definition basis.hpp:1044
static constexpr const bool hasAncestor
Definition basis.hpp:1570
FunctionValue function(size_t i, const VectorRd &x) const
Evaluate the i-th basis function at point x.
Definition basis.hpp:1408
HessianValue hessian(size_t i, const VectorRd &x) const
Evaluate the Hessian of the i-th basis function at point x.
Definition basis.hpp:1113
ScalarFamilyType AncestorType
Definition basis.hpp:589
void HessianValue
Definition basis.hpp:1687
const std::shared_ptr< RolyComplBasisCell > & rck() const
Return the Rck basis.
Definition basis.hpp:1666
void CurlValue
Definition basis.hpp:1499
static const bool hasHessian
Definition basis.hpp:1515
CurlValue curl(size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_gradient_quad) const
Evaluate the curl of the i-th basis function at a quadrature point iqn, knowing all the gradients of ...
Definition basis.hpp:656
constexpr const BasisType & ancestor() const
Return the ancestor (basis that the gradient was taken of)
Definition basis.hpp:1477
static const bool hasGradient
Definition basis.hpp:329
static const bool hasCurlCurl
Definition basis.hpp:1039
static constexpr const TensorRankE tensorRank
Definition basis.hpp:326
static constexpr const TensorRankE tensorRank
Definition basis.hpp:1379
size_t dimension() const
Dimension of the basis.
Definition basis.hpp:271
static constexpr const bool hasAncestor
Definition basis.hpp:1317
static const bool hasCurlCurl
Definition basis.hpp:1449
void DivergenceValue
Definition basis.hpp:1310
static const bool hasFunction
Definition basis.hpp:1508
BasisType AncestorType
Definition basis.hpp:1388
static const bool hasDivergence
Definition basis.hpp:1574
QuadratureRule get_nodes() const
Return the set of nodes (useful to compute value of polynomial to decompose via evaluate_quad)
Definition basis.hpp:3131
static const bool hasFunction
Definition basis.hpp:1638
DecomposePoly(const Edge &E, const BasisType &basis)
Constructor for edge.
Definition basis.hpp:3066
void HessianValue
Definition basis.hpp:1437
VectorRd AncestorBasisFunctionValue
Definition basis.hpp:2355
size_t m_dim
Definition basis.hpp:3152
static ReturnValue evaluate(const BasisType &basis, size_t i, size_t iqn, const boost::multi_array< ReturnValue, 2 > &ancestor_curlcurl_quad)
Definition basis.hpp:2036
static const bool hasCurlCurl
Definition basis.hpp:187
static const bool hasCurl
Definition basis.hpp:1695
static const bool hasCurl
Definition basis.hpp:183
Edge GeometricSupport
Definition basis.hpp:252
static const bool hasCurlCurl
Definition basis.hpp:1324
static ReturnValue evaluate(const TensorizedVectorFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< double, 2 > &ancestor_basis_quad)
Definition basis.hpp:2070
boost::multi_array< VectorRd, 2 > vector_matrix_product(const std::vector< VectorRd > &v_quad, const boost::multi_array< MatrixRd, 2 > &basis_quad)
Take the product of (the transposed of) a vector with a matrix-valued basis.
Definition basis.cpp:205
constexpr const ScalarFamilyType & ancestor() const
Return the ancestor (family used for the tangent)
Definition basis.hpp:991
static boost::multi_array< typename detail::basis_evaluation_traits< BasisType, BasisFunction >::ReturnValue, 2 > compute(const BasisType &basis, const QuadratureRule &quad)
Generic basis evaluation.
Definition basis.hpp:2425
double FunctionValue
Definition basis.hpp:1432
static ReturnValue evaluate(const MatrixFamily< ScalarBasisType, N > &basis, size_t i, size_t iqn, const boost::multi_array< VectorRd, 2 > &ancestor_basis_quad)
Definition basis.hpp:2368
BasisType::HessianValue ReturnValue
Definition basis.hpp:2006
Eigen::Matrix< double, N, 1 > DivergenceValue
Definition basis.hpp:755
static const bool hasDivergence
Definition basis.hpp:1036
const Eigen::MatrixXd & matrix() const
Return the coefficient matrix.
Definition basis.hpp:513
size_t m_nb_nodes
Definition basis.hpp:3156
constexpr const BasisType & ancestor() const
Return the ancestor (basis that the gradient was taken of)
Definition basis.hpp:1543
static const bool hasDivergence
Definition basis.hpp:1641
static const bool hasRotor
Definition basis.hpp:1037
static const bool hasGradient
Definition basis.hpp:1034
MatrixGradient operator-(const MatrixGradient &G)
Subtraction.
Definition basis.hpp:144
MatrixFamily< ScalarBasisType, N >::FunctionValue ReturnValue
Definition basis.hpp:2321
double FunctionValue
Definition basis.hpp:245
static const bool hasCurl
Definition basis.hpp:1383
static constexpr const bool hasAncestor
Definition basis.hpp:327
static constexpr const bool hasAncestor
Definition basis.hpp:1380
static const bool hasHessian
Definition basis.hpp:1149
static const bool hasGradient
Definition basis.hpp:1694
static ReturnValue evaluate(const BasisType &basis, size_t i, const VectorRd &x)
Definition basis.hpp:1867
TensorizedVectorFamily< ScalarBasisType, N >::DivergenceValue ReturnValue
Definition basis.hpp:2218
TensorizedVectorFamily(const ScalarFamilyType &scalar_family)
Definition basis.hpp:591
static const bool hasFunction
Definition basis.hpp:1443
BasisType::CurlValue CurlValue
Definition basis.hpp:1135
Eigen::Matrix< double, dimspace, dimspace > CurlValue
Definition basis.hpp:1562
void RotorValue
Definition basis.hpp:249
void DivergenceValue
Definition basis.hpp:1435
BasisType::RotorValue RotorValue
Definition basis.hpp:1137
VectorRd CurlValue
Definition basis.hpp:172
@ Curl
Definition basis.hpp:1745
@ Function
Definition basis.hpp:1741
@ CurlCurl
Definition basis.hpp:1749
@ Gradient
Definition basis.hpp:1742
@ SkewsymmetricGradient
Definition basis.hpp:1744
@ Rotor
Definition basis.hpp:1747
@ Divergence
Definition basis.hpp:1746
@ SymmetricGradient
Definition basis.hpp:1743
@ Hessian
Definition basis.hpp:1748
@ Scalar
Definition basis.hpp:68
@ Vector
Definition basis.hpp:69
@ Matrix
Definition basis.hpp:70
size_t L
Definition HHO_DiffAdvecReac.hpp:44
std::vector< QuadratureNode > QuadratureRule
Definition quadraturerule.hpp:55
depending on the Matrix Market format indicated by or array(dense array storage). The data will be duplicated % as appropriate if symmetry is indicated in the header. % % Optionally
if(strcmp(field, 'real')) % real valued entries T
Definition mmread.m:93
Definition PastixInterface.hpp:16
Definition mhd-solutions.hpp:9
static auto v
Definition ddrcore-test.hpp:32
Structure to decompose a set of polynomials on a basis on an edge or a cell.
Definition basis.hpp:3059
Structure to store the gradient of a matrix-valued function.
Definition basis.hpp:113
Compute vectors listing the powers of monomial basis functions (for a cell, only this specialization ...
Definition basis.hpp:81
Basis dimensions for various polynomial spaces on edges/faces/elements (when relevant): Pk,...
Definition polynomialspacedimension.hpp:55
Basis evaluation traits. Only specialization of 'BasisFunction' (=Function, Gradient,...
Definition basis.hpp:1834
Evaluate a basis at quadrature nodes. 'BasisFunction' (=Function, Gradient, Curl, Divergence,...
Definition basis.hpp:2421