4#include <boost/math/constants/constants.hpp>
9 static const double PI = boost::math::constants::pi<double>();
13 static std::function<double(
const Eigen::Vector2d&)>
15 return sin(
PI *
x(0)) * sin(
PI *
x(1));
18 static std::function<Eigen::Vector2d(
const Eigen::Vector2d&)>
20 return PI * Eigen::Vector2d(
21 cos(
PI *
x(0)) * sin(
PI *
x(1)),
22 sin(
PI *
x(0)) * cos(
PI *
x(1))
27 static std::function<double(
const Eigen::Vector2d&)>
32 static std::function<Eigen::Vector2d(
const Eigen::Vector2d&)>
34 return Eigen::Vector2d::Zero();
39 static std::function<double(
const Eigen::Vector2d&)>
41 return 1. +
x(0) + 2. *
x(1);
44 static std::function<Eigen::Vector2d(
const Eigen::Vector2d&)>
46 return Eigen::Vector2d(1., 2.);
51 static std::function<double(
const Eigen::Vector2d&)>
56 static std::function<Eigen::Vector2d(
const Eigen::Vector2d&)>
65 static std::function<Eigen::Vector2d(
const Eigen::Vector2d&)>
67 return Eigen::Vector2d(1., -1.);
70 static std::function<double(
const Eigen::Vector2d&)>
77 static std::function<Eigen::Vector2d(
const Eigen::Vector2d&)>
79 return Eigen::Vector2d(
85 static std::function<double(
const Eigen::Vector2d&)>
92 static std::function<Eigen::Vector2d(
const Eigen::Vector2d&)>
94 return Eigen::Vector2d(
95 sin(
PI *
x(0)) * sin(
PI *
x(1)),
96 sin(
PI *
x(0)) * sin(
PI *
x(1))
100 static std::function<double(
const Eigen::Vector2d&)>
102 = [](
const Eigen::Vector2d &
x) ->
double {
110 const std::function<
T(
const Eigen::Vector2d &)> & f,
111 const Eigen::VectorXd & fX,
112 const boost::multi_array<T, 2> & fX_basis_quad,
119 fX_basis_quad.shape()[0] == (
size_t)fX.size() &&
120 fX_basis_quad.shape()[1] == quad_X.size()
125 for (
size_t iqn = 0; iqn < quad_X.size(); iqn++) {
126 T f_iqn = f(quad_X[iqn].vector());
128 T fX_iqn = fX(0) * fX_basis_quad[0][iqn];
129 for (
size_t i = 1;
i < fX_basis_quad.shape()[0];
i++) {
130 fX_iqn += fX(
i) * fX_basis_quad[
i][iqn];
133 T diff_iqn = f_iqn - fX_iqn;
for i
Definition generate_cartesian_mesh.m:71
Create grid points x
Definition generate_cartesian_mesh.m:22
double scalar_product(const double &x, const double &y)
Scalar product between two reals.
Definition basis.cpp:163
static const double PI
Definition ddr-klplate.hpp:187
std::vector< QuadratureNode > QuadratureRule
Definition quadraturerule.hpp:55
if(strcmp(field, 'real')) % real valued entries T
Definition mmread.m:93
Definition ddr-klplate.hpp:27
static std::function< double(const Eigen::Vector2d &)> constant_scalar
Definition sxcurl-test.hpp:28
static std::function< Eigen::Vector2d(const Eigen::Vector2d &)> constant_vector
Definition excurl-test.hpp:16
static std::function< double(const Eigen::Vector2d &)> quadratic_scalar
Definition sxcurl-test.hpp:52
static std::function< Eigen::Vector2d(const Eigen::Vector2d &)> grad_quadratic_scalar
Definition sxcurl-test.hpp:57
static std::function< Eigen::Vector2d(const Eigen::Vector2d &)> trigonometric_vector
Definition excurl-test.hpp:102
static std::function< Eigen::Vector2d(const Eigen::Vector2d &)> grad_trigonometric_scalar
Definition sxcurl-test.hpp:19
static std::function< double(const Eigen::Vector2d &)> trigonometric_scalar
Definition sxcurl-test.hpp:14
static std::function< double(const Eigen::Vector2d &)> rot_linear_vector
Definition excurl-test.hpp:40
static std::function< Eigen::Vector2d(const Eigen::Vector2d &)> linear_vector
Definition excurl-test.hpp:32
static std::function< double(const Eigen::Vector2d &)> linear_scalar
Definition sxcurl-test.hpp:40
static std::function< Eigen::Vector2d(const Eigen::Vector2d &)> grad_linear_scalar
Definition sxcurl-test.hpp:45
static std::function< Eigen::Vector2d(const Eigen::Vector2d &)> grad_constant_scalar
Definition sxcurl-test.hpp:33
double squared_l2_error(const std::function< T(const Eigen::Vector2d &)> &f, const Eigen::VectorXd &fX, const boost::multi_array< T, 2 > &fX_basis_quad, const QuadratureRule &quad_X)
Definition excurl-test.hpp:140
static std::function< double(const Eigen::Vector2d &)> rot_constant_vector
Definition excurl-test.hpp:21
static std::function< double(const Eigen::Vector2d &)> rot_trigonometric_vector
Definition excurl-test.hpp:111