/usr/include/deal.II/base/polynomials_bernstein.h is in libdeal.ii-dev 8.4.2-2+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <deal.II/base/polynomial.h>
#include <fstream>
#include <iostream>
#ifndef dealii__polynomials_bernstein_h
#define dealii__polynomials_bernstein_h
DEAL_II_NAMESPACE_OPEN
/**
* This class implements Bernstein basis polynomials of desire degree as
* described in http://www.idav.ucdavis.edu/education/CAGDNotes/Bernstein-
* Polynomials.pdf in the paragraph "Converting from the Bernstein Basis to
* the Power Basis".
*
* They are used to create the Bernstein finite element FE_Bernstein.
*
* @ingroup Polynomials
* @author Luca Heltai, Marco Tezzele
* @date 2013, 2015
*/
template <typename number>
class PolynomialsBernstein : public Polynomials::Polynomial<number>
{
public:
/**
* Construct the @p index -th Bernstein Polynomial of degree @p degree.
*
* @f{align*}{
* B_{\text{index}, \text{degree}} (t)
* &= \text{binom}(\text{degree}, \text{index})
* \cdot t^{\text{index}}
* \cdot (1 - t)^{\text{degree} - \text{index}} \\
* &= \sum_{i = \text{index}}^\text{degree}
* \cdot (-1)^{i - \text{index}}
* \cdot \text{binom}(\text{degree}, i)
* \cdot \text{binom}(i, \text{index})
* \cdot t^i
* @f}
*
* @param index
* @param degree
*/
PolynomialsBernstein (
const unsigned int index,
const unsigned int degree);
};
template <typename number>
std::vector<Polynomials::Polynomial<number> >
generate_complete_bernstein_basis (
const unsigned int degree)
{
std::vector<Polynomials::Polynomial<number> > v;
for (unsigned int i = 0; i < degree + 1; ++i)
v.push_back(PolynomialsBernstein<number>(i, degree));
return v;
}
DEAL_II_NAMESPACE_CLOSE
#endif
|