Zoltan2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Zoltan2_Model.hpp
Go to the documentation of this file.
1 // @HEADER
2 //
3 // ***********************************************************************
4 //
5 // Zoltan2: A package of combinatorial algorithms for scientific computing
6 // Copyright 2012 Sandia Corporation
7 //
8 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9 // the U.S. Government retains certain rights in this software.
10 //
11 // Redistribution and use in source and binary forms, with or without
12 // modification, are permitted provided that the following conditions are
13 // met:
14 //
15 // 1. Redistributions of source code must retain the above copyright
16 // notice, this list of conditions and the following disclaimer.
17 //
18 // 2. Redistributions in binary form must reproduce the above copyright
19 // notice, this list of conditions and the following disclaimer in the
20 // documentation and/or other materials provided with the distribution.
21 //
22 // 3. Neither the name of the Corporation nor the names of the
23 // contributors may be used to endorse or promote products derived from
24 // this software without specific prior written permission.
25 //
26 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 //
38 // Questions? Contact Karen Devine (kddevin@sandia.gov)
39 // Erik Boman (egboman@sandia.gov)
40 // Siva Rajamanickam (srajama@sandia.gov)
41 //
42 // ***********************************************************************
43 //
44 // @HEADER
45 
50 #ifndef _ZOLTAN2_MODEL_HPP_
51 #define _ZOLTAN2_MODEL_HPP_
52 
53 #include <Zoltan2_Standards.hpp>
54 #include <bitset>
55 
56 namespace Zoltan2 {
57 
60 enum ModelType
61 {
67 };
68 
69 
70 
75  // General flags
78  // Graph model flags
91 };
92 
93 typedef std::bitset<NUM_MODEL_FLAGS> modelFlag_t;
94 
109 template <typename Adapter>
110 class Model
111 {
112 public:
113 
114 #ifndef DOXYGEN_SHOULD_SKIP_THIS
115  typedef typename Adapter::lno_t lno_t;
116  typedef typename Adapter::gno_t gno_t;
117  typedef typename Adapter::scalar_t scalar_t;
118  typedef typename Adapter::user_t user_t;
119  typedef typename Adapter::userCoord_t userCoord_t;
120 #endif
121 
124  virtual ~Model() {};
125 
128  Model() {}
129 
136  virtual size_t getLocalNumObjects() const = 0;
137 
144  virtual global_size_t getGlobalNumObjects() const = 0;
145 
146 protected:
147 
148 private:
149 
150 };
151 
152 } // namespace Zoltan2
153 
154 #endif
use columns as graph vertices
ModelFlags
Flags are set by a Problem to tell a Model what transformations it may need to do on the user&#39;s input...
ignore invalid neighbors
use mesh nodes as vertices
ModelType
An identifier for the general type of model.
algorithm requires consecutive ids
std::bitset< NUM_MODEL_FLAGS > modelFlag_t
model must symmetrize input
model must symmetrize input
virtual global_size_t getGlobalNumObjects() const =0
Return the global number of objects.
use matrix rows as graph vertices
algorithm requires no self edges
use nonzeros as graph vertices
use mesh elements as vertices
Gathering definitions used in software development.
virtual size_t getLocalNumObjects() const =0
Return the local number of objects.
The base class for all model classes.
Tpetra::global_size_t global_size_t
model represents graph within only one rank
Zoltan2::BasicUserTypes< zscalar_t, zlno_t, zgno_t > user_t
Definition: Metric.cpp:74