This file is indexed.

/usr/include/trilinos/fei_ConnectivityBlock.hpp is in libtrilinos-dev 10.4.0.dfsg-1ubuntu2.

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
/*--------------------------------------------------------------------*/
/*    Copyright 2005 Sandia Corporation.                              */
/*    Under the terms of Contract DE-AC04-94AL85000, there is a       */
/*    non-exclusive license for use of this work by or on behalf      */
/*    of the U.S. Government.  Export of this program may require     */
/*    a license from the United States Government.                    */
/*--------------------------------------------------------------------*/

#ifndef _fei_ConnectivityBlock_hpp_
#define _fei_ConnectivityBlock_hpp_

#include <fei_macros.hpp>

#include <map>
#include <vector>

namespace fei {
  class Pattern;

  /**
   class to hold attributes of a connectivity-block (for example,
   an element-block). This class can handle
   connectivities for any kind of mesh-objects, not just elements,
   though elements are of course the most common.
  */
  class ConnectivityBlock {
  public:
    /** constructor */
    ConnectivityBlock(int blockID,
                      fei::Pattern* pattern,
                      int numConnectivities);
    /** constructor */
    ConnectivityBlock(int blockID,
                      fei::Pattern* rowpattern, fei::Pattern* colpattern,
                      int numConnectivities);
    /** constructor */
    ConnectivityBlock(int numRowIDs,
                      const int* rowIDs,
                      const int* rowOffsets,
                      bool offsets_are_lengths = false);

    /** constructor */
    ConnectivityBlock(int fieldID,
                      int numRowIDs,
                      const int* rowIDs,
                      const int* rowOffsets,
                      bool offsets_are_lengths = false);

    /** destructor */
    virtual ~ConnectivityBlock();

    /** get block-identifier */
    int getBlockID() const { return(blockID_); }

    /** get pattern that defines the layout of dofs in the
      row-dimension for block's contributions */
    const fei::Pattern* getRowPattern() const { return(pattern_); }

    /** get pattern that defines the layout of dofs in the
      row-dimension for block's contributions */
    fei::Pattern* getRowPattern() { return(pattern_); }

    /** get pattern that defines the layout of dofs in the
      column-dimension for block's contributions. probably null
     if this block is made up of symmetric contributions. */
    const fei::Pattern* getColPattern() const { return(colPattern_); }

    /** get pattern that defines the layout of dofs in the
      column-dimension for block's contributions. probably null
     if this block is made up of symmetric contributions. */
    fei::Pattern* getColPattern() { return(colPattern_); }

    /** get map of connectivity-ids with associated offsets
    */
    const std::map<int,int>& getConnectivityIDs() const { return( connIDsOffsetMap_ ); }

    /** get map of connectivity-ids with associated offsets
    */
    std::map<int,int>& getConnectivityIDs() { return( connIDsOffsetMap_ ); }

    /** get vector of connectivity-offsets. Only available if this
      object was constructed using constructor 3 or 4. Power users only.
    */
    std::vector<int>& getConnectivityOffsets()
      { return(connectivityOffsets_); }

    /** get array of row-connectivities */
    std::vector<Record<int>*>& getRowConnectivities()
      { return(connectivities_); }

    /** get array of column-connectivities */
    std::vector<Record<int>*>& getColConnectivities()
      { return(colConnectivities_); }

    /** get row-connectivity for a specified ID */
    const Record<int>*const* getRowConnectivity(int ID) const;
    /** get column-connectivity for a specified ID */
    const Record<int>*const* getColConnectivity(int ID) const;
    /** get row-connectivity for a specified ID */
    Record<int>** getRowConnectivity(int ID);
    /** get column-connectivity for a specified ID */
    Record<int>** getColConnectivity(int ID);

    /** query whether block is symmetric */
    bool isSymmetric() const { return( isSymmetric_ ); }

    /** implementation detail for power-users */
    void setIsDiagonal(bool flag) { isDiagonal_ = flag; }
    /** implementation detail for power-users */
    bool isDiagonal() const { return( isDiagonal_ ); }

    /** query whether block has a field-id */
    bool haveFieldID()
      { return( haveFieldID_ ); }

    /** return block's field-id */
    int fieldID()
      { return( fieldID_ ); }

  private:
    int blockID_;
    fei::Pattern* pattern_;
    fei::Pattern* colPattern_;
    bool isSymmetric_;
    bool isDiagonal_;

    std::map<int,int> connIDsOffsetMap_;

    std::vector<int> connectivityOffsets_;

    int numRecordsPerConnectivity_;
    std::vector<Record<int>*> connectivities_;
    int numRecordsPerColConnectivity_;
    std::vector<Record<int>*> colConnectivities_;

    int fieldID_;
    bool haveFieldID_;

  };//class ConnectivityBlock
} //namespace fei

#endif // _fei_ConnectivityBlock_hpp_