This file is indexed.

/usr/include/LLNL_FEI_Matrix.h is in libhypre-dev 2.4.0b-7.

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
/*BHEADER**********************************************************************
 * Copyright (c) 2008,  Lawrence Livermore National Security, LLC.
 * Produced at the Lawrence Livermore National Laboratory.
 * This file is part of HYPRE.  See file COPYRIGHT for details.
 *
 * HYPRE 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) version 2.1 dated February 1999.
 *
 * $Revision: 2.6 $
 ***********************************************************************EHEADER*/




/***************************************************************************
  Module:  LLNL_FEI_Matrix.h
  Purpose: custom implementation of the FEI/Matrix 
 ***************************************************************************/

#ifndef _LLNL_FEI_MATRIX_H_
#define _LLNL_FEI_MATRIX_H_

#include "_hypre_utilities.h"
#include "HYPRE.h"

/**************************************************************************
 definition of the class to capture the FEI matrix information 
---------------------------------------------------------------------------*/

class LLNL_FEI_Matrix
{
   MPI_Comm mpiComm_;
   int      mypid_;
   int      outputLevel_;

   int    localNRows_;
   int    nConstraints_;
   int    extNRows_;
   int    *constrEqns_;
   int    *globalEqnOffsets_;
   int    *globalCROffsets_;
   int    *extColMap_;

   int    *diagIA_;
   int    *diagJA_;
   double *diagAA_;
   int    *offdIA_;
   int    *offdJA_;
   double *offdAA_;
   double *diagonal_;

   int    nRecvs_;
   int    *recvLengs_;
   int    *recvProcs_;
   int    *recvProcIndices_;
   double *dRecvBufs_;
   double *dExtBufs_;

   int    nSends_;
   int    *sendLengs_;
   int    *sendProcs_;
   int    *sendProcIndices_;
   double *dSendBufs_;
   MPI_Request *mpiRequests_;

   int    FLAG_PrintMatrix_;
   int    FLAG_MatrixOverlap_;

public :

   LLNL_FEI_Matrix(MPI_Comm comm);
   ~LLNL_FEI_Matrix();

   int     parameters(int numParams, char **paramString);

   int     resetMatrix(double s);

   int     setMatrix(int nRows, int *diagIA, int *diagJA, double *diagAA, 
                     int nExtRows, int *colMap, int *offdIA, int *offdJA, 
                     double *offdAA, double *diagonal, int *eqnOffsets,
                     int *crOffsets);

   int     setCommPattern(int nRecvs, int *recvLengs, int *recvProcs, 
                          int *recvProcIndices, int nSends, int *sendLengs, 
                          int *sendProcs, int *sendProcIndices);

   int     setComplete();

   int     setConstraints(int nConstraints, int *constEqns);

   int     residualNorm(int whichNorm, double *solnVector, double *rhsVector, 
                        double* norms);

   int     getNumLocalRows() {return localNRows_;}
   int     getNumExtRows() {return extNRows_;}
   int     *getEqnOffsets() {return globalEqnOffsets_;}
   double *getMatrixDiagonal() {return diagonal_;}
   int     getLocalMatrix(int *nrows, int **ia, int **ja, double **aa) 
                         {(*nrows) = localNRows_; (*ia) = diagIA_;
                          (*ja) = diagJA_; (*aa) = diagAA_; return 0; }
   int     getExtMatrix(int *nrows, int **ia, int **ja, double **aa, int **map) 
                         {(*nrows) = extNRows_; (*ia) = offdIA_;
                          (*ja) = offdJA_; (*aa) = offdAA_; 
                          (*map) = extColMap_; return 0; }

   void    matvec(double *x, double *y);

private:
   void scatterDData(double *x);
   void gatherAddDData(double *x);
   void printMatrix();
   void matMult(int ANRows, int ANCols, int *AIA, int *AJA, double *AAA, 
                int BNRows, int BNCols, int *BIA, int *BJA, double *BAA, 
                int *DNRows, int *DNCols, int **DIA, int **DJA, double **DAA);
   void exchangeSubMatrices();
   int  BinarySearch2(int *list, int start, int lsize, int ind);
   void IntSort(int *list1, int start, int theEnd);
   void IntSort2(int *list1, int *list2, int start, int theEnd);
   void IntSort2a(int *list1, double *list2, int start, int theEnd);
};

#endif /* endif for _LLNL_FEI_MATRIX_H_ */