This file is indexed.

/usr/include/deal.II/fe/fe_bdm.h is in libdeal.ii-dev 8.5.1-3.

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
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// ---------------------------------------------------------------------
//
// Copyright (C) 2003 - 2017 by the deal.II authors
//
// This file is part of the deal.II library.
//
// The deal.II library is free software; you can use it, redistribute
// it, and/or modify it under the terms of the GNU Lesser General
// Public License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// The full text of the license can be found in the file LICENSE at
// the top level of the deal.II distribution.
//
// ---------------------------------------------------------------------

#ifndef dealii__fe_bdm_h
#define dealii__fe_bdm_h

#include <deal.II/base/config.h>
#include <deal.II/base/table.h>
#include <deal.II/base/polynomials_bdm.h>
#include <deal.II/base/polynomial.h>
#include <deal.II/base/tensor_product_polynomials.h>
#include <deal.II/base/geometry_info.h>
#include <deal.II/fe/fe.h>
#include <deal.II/fe/fe_poly_tensor.h>

#include <vector>

DEAL_II_NAMESPACE_OPEN

/**
 * The Brezzi-Douglas-Marini element.
 *
 * <h3>Degrees of freedom</h3>
 *
 * @todo The 3D version exhibits some numerical instabilities, in particular
 * for higher order
 *
 * @todo Restriction matrices are missing.
 *
 * The matching pressure space for FE_BDM of order <i>k</i> is the element
 * FE_DGP of order <i>k-1</i>.
 *
 * The BDM element of order @p p has <i>p+1</i> degrees of freedom on each
 * face. These are implemented as the function values in the <i>p+1</i> Gauss
 * points on each face.
 *
 * Additionally, for order greater or equal 2, we have additional
 * <i>p(p-1)</i>, the number of vector valued polynomials in
 * <i>P<sub>p</sub></i>, interior degrees of freedom. These are the vector
 * function values in the first <i>p(p-1)/2</i> of the <i>p<sup>2</sup></i>
 * Gauss points in the cell.
 */
template <int dim>
class FE_BDM
  :
  public FE_PolyTensor<PolynomialsBDM<dim>, dim>
{
public:
  /**
   * Constructor for the BDM element of degree @p p.
   */
  FE_BDM (const unsigned int p);

  /**
   * Return a string that uniquely identifies a finite element. This class
   * returns <tt>FE_BDM<dim>(degree)</tt>, with @p dim and @p degree replaced
   * by appropriate values.
   */
  virtual std::string get_name () const;

  virtual FiniteElement<dim> *clone () const;

  // documentation inherited from the base class
  virtual
  void
  convert_generalized_support_point_values_to_nodal_values (const std::vector<Vector<double> > &support_point_values,
                                                            std::vector<double>                &nodal_values) const;

  virtual void interpolate(std::vector<double>                &local_dofs,
                           const std::vector<double>          &values) const DEAL_II_DEPRECATED;

  virtual void interpolate(std::vector<double>                &local_dofs,
                           const std::vector<Vector<double> > &values,
                           const unsigned int                  offset = 0) const DEAL_II_DEPRECATED;

  virtual void interpolate(std::vector<double> &local_dofs,
                           const VectorSlice<const std::vector<std::vector<double> > > &values) const DEAL_II_DEPRECATED;

private:
  /**
   * Only for internal use. Its full name is @p get_dofs_per_object_vector
   * function and it creates the @p dofs_per_object vector that is needed
   * within the constructor to be passed to the constructor of @p
   * FiniteElementData.
   */
  static std::vector<unsigned int>
  get_dpo_vector (const unsigned int degree);

  /**
   * Compute the vector used for the @p restriction_is_additive field passed
   * to the base class's constructor.
   */
  static std::vector<bool>
  get_ria_vector (const unsigned int degree);
  /**
   * Initialize the FiniteElement<dim>::generalized_support_points and
   * FiniteElement<dim>::generalized_face_support_points fields. Called from
   * the constructor. See the
   * @ref GlossGeneralizedSupport "glossary entry on generalized support points"
   * for more information.
   */
  void initialize_support_points (const unsigned int bdm_degree);
  /**
   * The values in the face support points of the polynomials needed as test
   * functions. The outer vector is indexed by quadrature points, the inner by
   * the test function. The test function space is PolynomialsP<dim-1>.
   */
  std::vector<std::vector<double> > test_values_face;
  /**
   * The values in the interior support points of the polynomials needed as
   * test functions. The outer vector is indexed by quadrature points, the
   * inner by the test function. The test function space is PolynomialsP<dim>.
   */
  std::vector<std::vector<double> > test_values_cell;
};

DEAL_II_NAMESPACE_CLOSE

#endif