This file is indexed.

/usr/include/trilinos/Stokhos_AdaptivityUtils.hpp is in libtrilinos-stokhos-dev 12.4.2-2.

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
// $Id$ 
// $Source$ 
// @HEADER
// ***********************************************************************
// 
//                           Stokhos Package
//                 Copyright (2009) Sandia Corporation
// 
// Under 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.
// 
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// 3. Neither the name of the Corporation nor the names of the
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact Eric T. Phipps (etphipp@sandia.gov).
// 
// ***********************************************************************
// @HEADER

#ifndef STOKHOS_AdaptivityUtils_HPP
#define STOKHOS_AdaptivityUtils_HPP

#include "Stokhos_OrthogPolyBasis.hpp"
#include "Stokhos_ProductBasis.hpp"

#include "Epetra_Map.h"
#include "Epetra_CrsGraph.h"

#include "Teuchos_RCP.hpp"
#include "Teuchos_Array.hpp"

#include <vector>

namespace Stokhos {
namespace adapt_utils {

  /** Builds and returns an adapted graph given a set of row basis functions.
    * This does all required global communication to construct this graph.
    */
  Teuchos::RCP<Epetra_CrsGraph> buildAdaptedGraph(
        const Epetra_CrsGraph & determGraph,
        const Teuchos::RCP<const Stokhos::ProductBasis<int,double> > & masterBasis,
        const std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > & per_dof_row_basis,
        bool onlyUseLinear = false,
        int kExpOrder = -1);

  /** Builds and returns an adapted graph given a set of row basis functions.
    * This does all required global communication to construct this graph.
    */
  Teuchos::RCP<Epetra_CrsGraph> buildAdaptedGraph(
        const Epetra_CrsGraph & determGraph,
        const Teuchos::RCP<const Stokhos::ProductBasis<int,double> > & masterBasis,
        const std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > & per_dof_row_basis,
        std::vector<int> & myRowGidOffsets,std::vector<int> & myColGidOffsets,
        bool onlyUseLinear = false,
        int kExpOrder=-1);

   /** Construct a row map that is appropriate for the set of adapted
     * basis functions.
     *
     * \param[in] determGraph Graph for the deterministic problem
     * \param[in] per_dof_row_basis Stochastic basis functions for each deterministic degree of freedom
     * \param[out] myRowGidOffsets Will be of length <code>per_dof_row_basis.size()</code> on exit. All data
     *                          will be overwritten. This contains the starting GID 
     *                          of each deterministic degree of freedom.
     *
     * \returns The adapted row map.
     */
   Teuchos::RCP<Epetra_Map> buildAdaptedRowMapAndOffsets(
        const Epetra_Comm & Comm,
        const std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > & per_dof_row_basis,
        std::vector<int> & myRowGidOffsets);

   /** Construct a row map that is appropriate for the set of adapted
     * basis functions.
     */
   Teuchos::RCP<Epetra_Map> buildAdaptedRowMap(
        const Epetra_Comm & Comm,
        const std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > & per_dof_row_basis);

   /** Build offsets mapping a local column id to a GID. Note that this function requires parallel
     * communication (for parallel code).
     *
     * \param[in] determGraph Graph for the deterministic problem
     * \param[in] myRowGidOffsets Computed by <code>buildAdaptedRowMapAndColOffsets</code>
     * \param[out] myRowGidOffsets Will be of length <code>determGraph.ColMap().NumMyElements()</code> on exit. All data
     *                             will be overwritten. This contains the starting GID of each deterministic degree of
     *                             freedom in the column map.
     */
   void buildAdaptedColOffsets(
           const Epetra_CrsGraph & determGraph,
           const std::vector<int> & myRowGidOffsets,
           std::vector<int> & myColGidOffsets);

   /** Use the deterministic graph and the basis function on this processor to determine the
     * basis functions for all the column entries on this processor. Note that this function requires
     * parallel communication (for parallel code).
     *
     * \param[in] determGraph Graph for the deterministic problem
     * \param[in] per_dof_row_basis Stochastic basis functions for each deterministic degree of freedom
     * \param[out] per_dof_col_basis Stochastic basis functions for each degree of freedom
     *                               in the deterministic column map.
     */
   void buildColBasisFunctions(
        const Epetra_CrsGraph & determGraph,
        const Teuchos::RCP<const Stokhos::ProductBasis<int,double> > & masterBasis,
        const std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > & per_dof_row_basis,
        std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > & per_dof_col_basis);
}
    
} // namespace Stokhos

#endif // STOKHOS_AdaptivityUtils_HPP