This file is indexed.

/usr/include/libmesh/hp_coarsentest.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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
// $Id: hp_coarsentest.h 4278 2011-03-21 15:23:30Z 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 __hp_coarsentest_h__
#define __hp_coarsentest_h__

// C++ includes
#include <vector>

// Local Includes
#include "auto_ptr.h"
#include "dense_matrix.h"
#include "dense_vector.h"
#include "hp_selector.h"
#include "libmesh_common.h"

#include "fe.h"         // MipsPro requires fe.h and quadrature.h in order to
#include "quadrature.h" //  delete AutoPtrs<> upon destruction

#ifdef LIBMESH_ENABLE_AMR

namespace libMesh
{

// Forward Declarations
class Elem;
class Point;
class System;
template <typename T> class TensorValue;
template <typename T> class VectorValue;
typedef VectorValue<Real> RealVectorValue;
typedef TensorValue<Real> RealTensorValue;
typedef RealVectorValue RealGradient;
typedef RealTensorValue RealTensor;


/**
 * This class uses the error estimate given by different types of
 * derefinement (h coarsening or p reduction) to choose between h
 * refining and p elevation.
 * Currently we assume that a set of elements has already been flagged
 * for h refinement, and we may want to change some of those elements
 * to be flagged for p refinement.
 *
 * This code is currently experimental and will not produce optimal
 * hp meshes without significant improvement.
 *
 * @author Roy H. Stogner, 2006.
 */
class HPCoarsenTest : public HPSelector
{
public:

  /**
   * Constructor.
   */
  HPCoarsenTest() : p_weight(1.0) 
  {
    libmesh_experimental();
  }
  
  /**
   * Destructor.  
   */
  virtual ~HPCoarsenTest() {}


  /**
   * This pure virtual function must be redefined
   * in derived classes to take a mesh flagged for h
   * refinement and potentially change the desired
   * refinement type.
   */
  virtual void select_refinement (System& system);

  /**
   * Because the coarsening test seems to always choose p refinement, we're
   * providing an option to make h refinement more likely
   */
  Real p_weight;

protected:
  /**
   * The helper function which adds individual fine element data to
   * the coarse element projection
   */
  void add_projection(const System&, const Elem*, unsigned int var);

  /**
   * The coarse element on which a solution projection is cached
   */
  const Elem *coarse;

  /**
   * Global DOF indices for fine elements
   */
  std::vector<unsigned int> dof_indices;

  /**
   * The finite element objects for fine and coarse elements
   */
  AutoPtr<FEBase> fe, fe_coarse;

  /**
   * The shape functions and their derivatives
   */
  const std::vector<std::vector<Real> > *phi, *phi_coarse;
  const std::vector<std::vector<RealGradient> > *dphi, *dphi_coarse;
  const std::vector<std::vector<RealTensor> > *d2phi, *d2phi_coarse;

  /**
   * Mapping jacobians
   */
  const std::vector<Real> *JxW;

  /**
   * Quadrature locations
   */
  const std::vector<Point> *xyz_values;
  std::vector<Point> coarse_qpoints;

  /**
   * The quadrature rule for the fine element
   */
  AutoPtr<QBase> qrule;

  /**
   * Linear system for projections
   */
  DenseMatrix<Number> Ke;
  DenseVector<Number> Fe;
  /**
   * Coefficients for projected coarse and projected 
   * p-derefined solutions
   */
  DenseVector<Number> Uc;
  DenseVector<Number> Up;
};

} // namespace libMesh

#endif // #ifdef LIBMESH_ENABLE_AMR

#endif