This file is indexed.

/usr/include/libmesh/mesh_modification.h is in libmesh-dev 0.7.1-2ubuntu1.

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
// $Id: mesh_modification.h 3874 2010-07-02 21:57:26Z roystgnr $

// The libMesh Finite Element Library.
// Copyright (C) 2002-2008 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
  
// This library 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 2.1 of the License, or (at your option) any later version.
  
// This library 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 this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA



#ifndef __mesh_modification_h__
#define __mesh_modification_h__



// C++ Includes   -----------------------------------

// Local Includes -----------------------------------
#include "libmesh_common.h"

namespace libMesh
{

// forward declarations
class MeshBase;



// ------------------------------------------------------------
// MeshTools::Modification namespace
namespace MeshTools
{
  /**
   * Tools for \p Mesh modification.
   *
   * \author Benjamin S. Kirk
   * \date 2004
   * \version $Revision: 3874 $
   */  
  namespace Modification
  {
    /**
     * Randomly perturb the nodal locations.  This function will
     * move each node \p factor fraction of its minimum neighboring
     * node separation distance.  Nodes on the boundary are not moved
     * by default, however they may be by setting the flag
     * \p perturb_boundary true.
     */
    void distort (MeshBase& mesh,
		  const Real factor, const bool perturb_boundary=false);
    
    /**
     * Translates the mesh.  The grid points are translated in the
     * \p x direction by \p xt, in the \p y direction by \p yt,
     * etc...
     */
    void translate (MeshBase& mesh,
		    const Real xt=0., const Real yt=0., const Real zt=0.); 

//     /**
//      * Rotates the mesh in the xy plane. The rotation is
//      * counter-clock-wise (mathematical definition).
//      * The angle is in degrees (360 make a full circle)
//      */
//     void rotate2D (MeshBase& mesh,
//                    const Real alpha=0.); 

    /**
     * Rotates the mesh in 3D space. 
     * Here the standard Euler angles are adopted
     * (http://mathworld.wolfram.com/EulerAngles.html)
     * The angles are in degrees (360 make a full circle)
     */
    void rotate (MeshBase& mesh,
		 const Real phi, const Real theta=0., const Real psi=0.); 

    /**
     * Scales the mesh.  The grid points are scaled in the
     * \p x direction by \p xs, in the \p y direction by \p ys,
     * etc...  If only \p xs is specified then the scaling is
     * assumed uniform in all directions.
     */
    void scale (MeshBase& mesh,
		const Real xs, const Real ys=0., const Real zs=0.);

    /**
     * Converts the 2D quadrilateral elements of a Mesh into
     * triangular elements.
     * Note: Only works for 2D elements!  3D elements are ignored.
     * Note: Probably won't do the right thing for meshes which
     * have been refined previously.
     */
    void all_tri (MeshBase& mesh);

    /**
     * Smooth the mesh with a simple Laplace smoothing algorithm.  The mesh is
     * smoothed \p n_iterations times.  If the parameter \p power is 0, each
     * node is moved to the average postition of the neighboring connected
     * nodes. If \p power > 0, the node positions are weighted by their
     * distance.  The positions of higher order nodes, and nodes living in
     * refined elements, are calculated from the vertex positions of their
     * parent nodes.  Only works in 2D.
     *
     * \author Martin Lüthi (luthi@gi.alaska.edu)
     * \date 2005
     */ 
    void smooth(MeshBase&, unsigned int, Real);

#ifdef LIBMESH_ENABLE_AMR
    /**
     * Removes all the refinement tree structure of Mesh, leaving
     * only the highest-level (most-refined) elements.  This is useful
     * when you want to write out a uniformly-refined grid to be treated later
     * as an initial mesh.  Note that many functions in LibMesh assume a
     * conforming (with no hanging nodes) grid exists at some level, so
     * you probably only want to do this on meshes which have been uniformly
     * refined.
     */
    void flatten(MeshBase& mesh);
#endif // #ifdef LIBMESH_ENABLE_AMR
    
    /**
     * Finds any boundary ids that are currently old_id,
     * changes them to new_id
     */
    void change_boundary_id (MeshBase &mesh,
			     const short int old_id,
			     const short int new_id);

  } // end namespace Meshtools::Modification
} // end namespace MeshTools

} // namespace libMesh


#endif // #define __mesh_modification_h__