This file is indexed.

/usr/include/trilinos/fei_VectorReducer.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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/*--------------------------------------------------------------------*/
/*    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_VectorReducer_hpp_
#define _fei_VectorReducer_hpp_

#include <fei_iosfwd.hpp>
#include <fei_VectorSpace.hpp>
#include <fei_Reducer.hpp>
#include <fei_Vector.hpp>

#undef fei_file
#define fei_file "fei_VectorReducer.hpp"

#include <fei_ErrMacros.hpp>

namespace fei {

  class VectorReducer : public fei::Vector {
  public:

    /** Constructor */
    VectorReducer(fei::SharedPtr<fei::Reducer> reducer,
                  fei::SharedPtr<fei::Vector> target,
	          bool isSolutionVector=false);

    /** Destructor */
    virtual ~VectorReducer();

    /** Query for underlying target vector. */
    fei::SharedPtr<fei::Vector> getTargetVector()
      { return(target_); }

    /** Return a name describing the run-time type
	of this object.
    */
    const char* typeName() const { return(target_->typeName()); }

    /** Update 'this' = b*'this' + a*x
     */
    int update(double a,
	       const fei::Vector* x,
	       double b);

    /** Use data in the underlying non-overlapping decomposition to update
	any shared data in the overlapping decomposition.

	If any data is already held for the shared positions, that data will
	be replaced by the data from the 'owning' processor.
    */
    int scatterToOverlap();

    /** Move any shared data from the overlapping decomposition to the
	underlying non-overlapping decomposition.
    */
    int gatherFromOverlap(bool accumulate = true);

    /** Set a specified scalar throughout the vector. */
    int putScalar(double scalar);

    /** Sum values into the vector, adding to any
	that may already exist at the specified indices.
    */
    int sumIn(int numValues, const int* indices, const double* values,
	      int vectorIndex=0);

    /** Copy values into the vector, overwriting any that may already exist
	at the specified indices.
    */
    int copyIn(int numValues, const int* indices, const double* values,
	       int vectorIndex=0);

    /** Obtain the VectorSpace associated with this vector.
     */
    fei::SharedPtr<fei::VectorSpace> getVectorSpace() const
      { return(target_->getVectorSpace()); }

    /** Set the VectorSpace associated with this vector.
     */
    void setVectorSpace(fei::SharedPtr<fei::VectorSpace> vecSpace)
    { target_->setVectorSpace( vecSpace ); }

    /** Sum field data into the vector, adding to any coefficients that may
	already exist at the specified locations.
        If the specified fieldID doesn't exist at one or more of the specified
        IDs, then the corresponding positions in the data array will simply
        not be used.
    */
    int sumInFieldData(int fieldID,
		       int idType,
		       int numIDs,
		       const int* IDs,
		       const double* data,
		       int vectorIndex=0);

    /** Copy field data into the vector, overwriting any coefficients that may
	already exist at the specified locations.
        If the specified fieldID doesn't exist at one or more of the specified
        IDs, then the corresponding positions in the data array will simply
        not be used.
    */
    int copyInFieldData(int fieldID,
			int idType,
			int numIDs,
			const int* IDs,
			const double* data,
			int vectorIndex=0);

    /** Copy field data out of the vector, into the caller-allocated data
	array.
        If the specified fieldID doesn't exist at one or more of the specified
        IDs, then the corresponding positions in the data array will simply
        not be referenced.
    */
    int copyOutFieldData(int fieldID,
			 int idType,
			 int numIDs,
			 const int* IDs,
			 double* data,
			 int vectorIndex=0);

    int writeToFile(const char* filename,
		    bool matrixMarketFormat=true);

    int writeToStream(FEI_OSTREAM& ostrm,
		      bool matrixMarketFormat=true);

    int copyOut(int numValues,
		const int* indices,
		double* values,
		int vectorIndex=0) const;

  private:
    /** please ignore
     */
    int copyOut_FE(int nodeNumber, int dofOffset, double& value);

    int giveToUnderlyingVector(int numValues,
			       const int* indices,
			       const double* values,
			       bool sumInto=true,
			       int vectorIndex=0);

    int sumIntoFEVector(int blockID,
			int connOffset,
			int numNodes,
			const int* nodeNumbers,
			const int* numIndicesPerNode,
			const double* values);

    fei::SharedPtr<fei::Reducer> reducer_;
    fei::SharedPtr<fei::Vector> target_;
    bool isSolution_;

    int localProc_;
    int numProcs_;
  };//class VectorReducer

} //namespace fei

#endif // _fei_VectorReducer_hpp_