This file is indexed.

/usr/include/dolfin/generation/UnitSquareMesh.h is in libdolfin-dev 2017.2.0.post0-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
157
158
// Copyright (C) 2005-2015 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/>.
//
// Modified by Mikael Mortensen, 2014
//
// First added:  2005-12-02
// Last changed: 2015-06-15

#ifndef __UNIT_SQUARE_MESH_H
#define __UNIT_SQUARE_MESH_H

#include <array>
#include <string>
#include <dolfin/mesh/CellType.h>
#include "RectangleMesh.h"

namespace dolfin
{

  /// Triangular/quadrilateral mesh of the 2D unit square [0,1] x [0,1].  Given the
  /// number of cells (nx, ny) in each direction, the total number of
  /// triangles will be 2*nx*ny and the total number of vertices will
  /// be (nx + 1)*(ny + 1).
  ///
  /// std::string diagonal ("left", "right", "right/left", "left/right",
  /// or "crossed") indicates the direction of the diagonals.

  class UnitSquareMesh : public RectangleMesh
  {
  public:

    /// Create a uniform finite element _Mesh_ over the unit square
    /// [0,1] x [0,1].
    ///
    /// @param    n (std:::array<std::size_t, 2>)
    ///         Number of cells in each direction.
    /// @param    cell_type
    ///         Triangle or quadrilateral
    /// @param    diagonal (std::string)
    ///         Optional argument: A std::string indicating
    ///         the direction of the diagonals.
    ///
    /// @code{.cpp}
    ///
    ///         auto mesh1 = UnitSquareMesh::create(32, 32);
    ///         auto mesh2 = UnitSquareMesh::create(32, 32, "crossed");
    /// @endcode
    static Mesh create(std::array<std::size_t, 2> n,
                       CellType::Type cell_type,
                       std::string diagonal="right")
    {
      return RectangleMesh::create({{Point(0.0, 0.0), Point(1.0, 1.0)}}, n,
                                   cell_type, diagonal);
    }

    // Temporary - part of pybind11 transition and will be
    // removed. Avoid using.
    static Mesh create(std::size_t nx, std::size_t ny, CellType::Type cell_type,
                       std::string diagonal="right")
    {
      return RectangleMesh::create({{Point(0.0, 0.0), Point(1.0, 1.0)}}, {nx, ny},
                                   cell_type, diagonal);
    }

    // Temporary - part of pybind11 transition and will be
    // removed. Avoid using.
    static Mesh create(MPI_Comm comm, std::size_t nx, std::size_t ny,
                       CellType::Type cell_type,
                       std::string diagonal="right")
    {
      return RectangleMesh::create(comm, {{Point(0.0, 0.0), Point(1.0, 1.0)}}, {nx, ny},
                                   cell_type, diagonal);
    }

    /// Create a uniform finite element _Mesh_ over the unit square
    /// [0,1] x [0,1].
    ///
    /// @param    comm (MPI_Comm)
    ///         MPI communicator
    /// @param    n (std:::array<std::size_t, 2>)
    ///         Number of cells in each direction.
    /// @param    cell_type
    ///         Triangle or quadrilateral.
    /// @param    diagonal (std::string)
    ///         Optional argument: A std::string indicating
    ///         the direction of the diagonals.
    ///
    /// @code{.cpp}
    ///
    ///         auto mesh1 = UnitSquareMesh::create(MPI_COMM_WORLD, 32, 32);
    ///         auto mesh2 = UnitSquareMesh::create(MPI_COMM_WORLD, 32, 32, "crossed");
    /// @endcode
    static Mesh create(MPI_Comm comm, std::array<std::size_t, 2> n,
                       CellType::Type cell_type,
                       std::string diagonal="right")
    { return RectangleMesh::create(comm, {{Point(0.0, 0.0), Point(1.0, 1.0)}}, n,
                                   cell_type, diagonal); }

    /// Create a uniform finite element _Mesh_ over the unit square
    /// [0,1] x [0,1].
    ///
    /// @param    nx (std::size_t)
    ///         Number of cells in horizontal direction.
    /// @param    ny (std::size_t)
    ///         Number of cells in vertical direction.
    /// @param    diagonal (std::string)
    ///         Optional argument: A std::string indicating
    ///         the direction of the diagonals.
    ///
    /// @code{.cpp}
    ///
    ///         UnitSquareMesh mesh1(32, 32);
    ///         UnitSquareMesh mesh2(32, 32, "crossed");
    /// @endcode
    UnitSquareMesh(std::size_t nx, std::size_t ny, std::string diagonal="right")
      : UnitSquareMesh(MPI_COMM_WORLD, nx, ny, diagonal) {}

    /// Create a uniform finite element _Mesh_ over the unit square
    /// [0,1] x [0,1].
    ///
    /// @param    comm (MPI_Comm)
    ///         MPI communicator
    /// @param    nx (std::size_t)
    ///         Number of cells in horizontal direction.
    /// @param    ny (std::size_t)
    ///         Number of cells in vertical direction.
    /// @param    diagonal (std::string)
    ///         Optional argument: A std::string indicating
    ///         the direction of the diagonals.
    ///
    /// @code{.cpp}
    ///
    ///         UnitSquareMesh mesh1(MPI_COMM_WORLD, 32, 32);
    ///         UnitSquareMesh mesh2(MPI_COMM_WORLD, 32, 32, "crossed");
    /// @endcode
    UnitSquareMesh(MPI_Comm comm, std::size_t nx, std::size_t ny,
                   std::string diagonal="right")
      : RectangleMesh(comm, Point(0.0, 0.0), Point(1.0, 1.0), nx, ny, diagonal) {}

  };

}

#endif