This file is indexed.

/usr/include/dolfin/function/MultiMeshFunctionSpace.h is in libdolfin-dev 2016.2.0-2.

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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
// Copyright (C) 2013-2016 Anders Logg
//
// This file is part of DOLFIN.
//
// DOLFIN is free software: you can 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 3 of the License, or
// (at your option) any later version.
//
// DOLFIN is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with DOLFIN. If not, see <http://www.gnu.org/licenses/>.
//
// First added:  2013-08-05
// Last changed: 2016-03-02

#ifndef __MULTI_MESH_FUNCTION_SPACE_H
#define __MULTI_MESH_FUNCTION_SPACE_H

#include <vector>
#include <map>
#include <memory>

#include <dolfin/common/types.h>
#include <dolfin/common/Variable.h>
#include <dolfin/mesh/MultiMesh.h>

namespace dolfin
{

  // Forward declarations
  class FunctionSpace;
  class MultiMeshDofMap;

  /// This class represents a function space on a multimesh. It may
  /// may be created from a set of standard function spaces by
  /// repeatedly calling add(), followed by a call to build(). Note
  /// that a multimesh function space is not useful and its data
  /// structures are empty until build() has been called.

  class MultiMeshFunctionSpace : public Variable
  {
  public:

    /// Create multimesh function space on multimesh (shared pointer version)
    MultiMeshFunctionSpace(std::shared_ptr<const MultiMesh> multimesh);

    /// Destructor
    ~MultiMeshFunctionSpace();

    /// Return dimension of the multimesh function space
    ///
    /// *Returns*
    ///     std::size_t
    ///         The dimension of the multimesh function space.
    std::size_t dim() const;

    /// Return multimesh
    ///
    /// *Returns*
    ///     _MultiMesh_
    ///         The multimesh.
    std::shared_ptr<const MultiMesh> multimesh() const;

    /// Return multimesh dofmap
    ///
    /// *Returns*
    ///     _MultiMeshDofMap_
    ///         The dofmap.
    std::shared_ptr<const MultiMeshDofMap> dofmap() const;

    /// Return the number of function spaces (parts) of the multimesh function space
    ///
    /// *Returns*
    ///     std::size_t
    ///         The number of function spaces (parts) of the multimesh function space.
    std::size_t num_parts() const;

    /// Return function space (part) number i
    ///
    /// *Arguments*
    ///     i (std::size_t)
    ///         The part number
    ///
    /// *Returns*
    ///     _FunctionSpace_
    ///         Function space (part) number i
    std::shared_ptr<const FunctionSpace> part(std::size_t i) const;

    /// Return view of multimesh function space for part number i.
    /// This function differs from the part() function in that it does
    /// not return the original function space for a part, but rather
    /// a view of the common multimesh function space (dofs global to
    /// the collection of parts).
    ///
    /// *Arguments*
    ///     i (std::size_t)
    ///         The part number
    ///
    /// *Returns*
    ///     _FunctionSpace_
    ///         Function space (part) number i
    std::shared_ptr<const FunctionSpace> view(std::size_t i) const;

    /// Add function space
    ///
    /// *Arguments*
    ///     function_space (_FunctionSpace_)
    ///         The function space.
    void add(std::shared_ptr<const FunctionSpace> function_space);

    /// Build multimesh function space
    void build();

    /// Build multimesh function space. This function uses offsets
    /// computed from the full function spaces on each part.
    void build(const std::vector<dolfin::la_index>& offsets);

  private:

    // Friends
    friend class MultiMeshSubSpace;

    // List of function spaces
    std::vector<std::shared_ptr<const FunctionSpace> > _function_spaces;

    // List of function space views
    std::vector<std::shared_ptr<const FunctionSpace> > _function_space_views;

    // Multimesh
    std::shared_ptr<const MultiMesh> _multimesh;

    // Multimesh dofmap
    std::shared_ptr<MultiMeshDofMap> _dofmap;

    // Quadrature order
    std::size_t _quadrature_order;

    // Build multimesh
    void _build_multimesh();

    // Build dofmap
    void _build_dofmap(const std::vector<dolfin::la_index>& offsets);

    // Build views
    void _build_views();

  };

}

#endif