class Functor {};
class TwoFunctor {};
inline Real zero(const Real &, const Real &) { return 0.0; }
std::array<Matrix<Real>, 3> basis_2d(const Mesh &, const std::size_t &, const std::array<Vector<Real>, 2> &);
Matrix<Real> lap_basis_2d(const Mesh &, const std::size_t &, const std::array<Vector<Real>, 2> &);
Vector<Real> legendre(const Vector<Real> &, const std::size_t &);
Vector<Real> grad_legendre(const Vector<Real> &, const std::size_t &);
Vector<Real> lap_legendre(const Vector<Real> &, const std::size_t &);
// Nodes.
std::array<Vector<Real>, 2> gauss_legendre(const Real &, const Real &, const std::size_t &);
// Reference nodes.
std::array<Vector<Real>, 2> quadrature_1d(const std::size_t &);
std::array<Vector<Real>, 3> quadrature_2d(const std::size_t &);
Vector<Real> modal(const Mesh &, const Functor &);
Vector<Real> penalty(const Mesh &, const std::size_t &);