This file is indexed.

/usr/include/libmesh/variable.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
// $Id: variable.h 4161 2011-01-12 17:07:58Z 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 __variable_h__
#define __variable_h__

// C++ includes
#include <set>
#include <string>

// Local Includes
#include "fe_type.h"
#include "id_types.h"

namespace libMesh {

/**
 * This class defines the notion of a variable in the system.
 * A variable is one of potentially several unknowns in the 
 * problem at hand.  A variable is described by a unique 
 * name, a finite element approximation family, and 
 * (optionally) a list of subdomains to which the 
 * variable is restricted.
 */  
class Variable
{
public:
  
  /**
   * Constructor.  Omits the subdomain mapping, hence this
   * constructor creates a variable which is active on 
   * all subdomains.
   */
  Variable (const std::string &var_name,
	    const unsigned int var_number,
	    const FEType &var_type) :
    _name(var_name),
    _number(var_number),
    _type(var_type),
    _active_subdomains()
  {}
  
  /**
   * Constructor.  Takes a set which contains the subdomain
   * indices for which this variable is active.
   */ 
  Variable (const std::string &var_name,
	    const unsigned int var_number,
	    const FEType &var_type,
	    const std::set<subdomain_id_type> &var_active_subdomains) :
    _name(var_name),
    _number(var_number),
    _type(var_type),
    _active_subdomains(var_active_subdomains)
  {}
  
  /**
   * Arbitrary, user-specified name of the variable.
   */
  const std::string & name() const 
  { return _name; }

  /**
   * The rank of this variable in the system.
   */
  unsigned int number() const 
  { return _number; }

  /**
   * The \p FEType for this variable.
   */
  const FEType & type() const 
  { return _type; }

  /**
   * \p returns \p true if this variable is active on subdomain \p sid,
   * \p false otherwise.  Note that we interperet the special case of an 
   * empty \p _active_subdomains container as active everywhere, i.e. 
   * for all subdomains.
   */
  bool active_on_subdomain (const subdomain_id_type sid) const
  { return (_active_subdomains.empty() || _active_subdomains.count(sid));  }

  /**
   * \p returns \p true if this variable is active on all subdomains
   * because it has no specified activity map.  This can be used
   * to perform more efficient computations in some places.
   */
  bool implicitly_active () const
  { return _active_subdomains.empty(); }
  
private:
  std::string             _name; 
  unsigned int            _number;
  FEType                  _type;
  std::set<subdomain_id_type> _active_subdomains;
};

} // namespace libMesh

#endif // #define __variable_h__