Stokhos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Stokhos_BasisInteractionGraph.hpp
Go to the documentation of this file.
1 // $Id$
2 // $Source$
3 // @HEADER
4 // ***********************************************************************
5 //
6 // Stokhos Package
7 // Copyright (2009) Sandia Corporation
8 //
9 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
10 // license for use of this work by or on behalf of the U.S. Government.
11 //
12 // Redistribution and use in source and binary forms, with or without
13 // modification, are permitted provided that the following conditions are
14 // met:
15 //
16 // 1. Redistributions of source code must retain the above copyright
17 // notice, this list of conditions and the following disclaimer.
18 //
19 // 2. Redistributions in binary form must reproduce the above copyright
20 // notice, this list of conditions and the following disclaimer in the
21 // documentation and/or other materials provided with the distribution.
22 //
23 // 3. Neither the name of the Corporation nor the names of the
24 // contributors may be used to endorse or promote products derived from
25 // this software without specific prior written permission.
26 //
27 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
28 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
31 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
34 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
35 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 //
39 // Questions? Contact Eric T. Phipps (etphipp@sandia.gov).
40 //
41 // ***********************************************************************
42 // @HEADER
43 
44 #ifndef STOKHOS_BASIS_INTERACTION_GRAPH_HPP
45 #define STOKHOS_BASIS_INTERACTION_GRAPH_HPP
46 
48 #include "Stokhos_ProductBasis.hpp"
49 #include "Teuchos_RCP.hpp"
50 
51 #include <vector>
52 
53 namespace Stokhos {
54 
56  public:
59  BasisInteractionGraph(const Stokhos::OrthogPolyBasis<int,double> & max_basis,bool onlyUseLinear=false,int porder=-1);
61  const Stokhos::ProductBasis<int,double> & rowBasis,
62  const Stokhos::ProductBasis<int,double> & colBasis,bool onlyUseLinear=false,int porder=-1);
63 
66  bool onlyUseLinear=false,int porder=-1);
67 
70  const Stokhos::ProductBasis<int,double> & rowBasis,
71  const Stokhos::ProductBasis<int,double> & colBasis,bool onlyUseLinear=false,int porder=-1);
72 
74  void initialize(const Stokhos::OrthogPolyBasis<int,double> & max_basis,
76  int porder=-1);
77 
79  void initialize(const Stokhos::ProductBasis<int,double> & max_basis,
81  const Stokhos::ProductBasis<int,double> & rowBasis,
82  const Stokhos::ProductBasis<int,double> & colBasis,int porder=-1);
83 
85  const std::vector<std::size_t> & activeIndices(std::size_t i) const
86  { return vecLookup_[i]; }
87 
89  bool operator()(std::size_t i,std::size_t j) const;
90 
92  std::size_t numNonZeros() const;
93 
95  std::size_t rowCount() const
96  { return vecLookup_.size(); }
97 
99  std::size_t colCount() const
100  { return numCols_; }
101 
102  void printGraph(std::ostream & os) const;
103 
104  protected:
105  std::size_t numCols_;
106 
107  std::vector<std::vector<std::size_t> > vecLookup_;
108 
110  };
111 
112 } // namespace Stokhos
113 
114 #endif // STOKHOS_BASIS_INTERACTION_GRAPH_HPP
std::size_t colCount() const
What is the number of columns.
std::size_t numNonZeros() const
How many non zeros are in this graph.
const std::vector< std::size_t > & activeIndices(std::size_t i) const
Grab active indicies in graph for row i.
void initialize(const Stokhos::OrthogPolyBasis< int, double > &max_basis, const Stokhos::Sparse3Tensor< int, double > &Cijk, int porder=-1)
Setup the lookup graph.
bool operator()(std::size_t i, std::size_t j) const
Is there an entry for (i,j) in the graph.
std::vector< std::vector< std::size_t > > vecLookup_
std::size_t rowCount() const
What is the number of rows.