Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
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
49
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
{
62
HypergraphModelType
,
63
GraphModelType
,
64
CoordinateModelType
,
65
IdentifierModelType
,
66
MAX_NUM_MODEL_TYPES
67
};
68
69
70
74
enum
ModelFlags
{
75
// General flags
76
GENERATE_CONSECUTIVE_IDS
,
77
78
// Graph model flags
79
BUILD_LOCAL_GRAPH
,
80
SYMMETRIZE_INPUT_TRANSPOSE
,
81
SYMMETRIZE_INPUT_BIPARTITE
,
82
VERTICES_ARE_MATRIX_ROWS
,
83
VERTICES_ARE_MATRIX_COLUMNS
,
84
VERTICES_ARE_MATRIX_NONZEROS
,
85
VERTICES_ARE_MESH_NODES
,
86
VERTICES_ARE_MESH_ELEMENTS
,
87
REMOVE_SELF_EDGES
,
88
BUILD_SUBSET_GRAPH
,
89
90
NUM_MODEL_FLAGS
91
};
92
93
typedef
std::bitset<NUM_MODEL_FLAGS>
modelFlag_t
;
94
108
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
user_t
Zoltan2::BasicUserTypes< zscalar_t, zlno_t, zgno_t > user_t
Definition
Metric.cpp:74
Zoltan2_Standards.hpp
Gathering definitions used in software development.
Zoltan2::Model::~Model
virtual ~Model()
Definition
Zoltan2_Model.hpp:124
Zoltan2::Model::getLocalNumObjects
virtual size_t getLocalNumObjects() const =0
Return the local number of objects.
Zoltan2::Model::Model
Model()
Definition
Zoltan2_Model.hpp:128
Zoltan2::Model::getGlobalNumObjects
virtual global_size_t getGlobalNumObjects() const =0
Return the global number of objects.
Zoltan2
Created by mbenlioglu on Aug 31, 2020.
Definition
Zoltan2_AlgHybrid2GL.hpp:38
Zoltan2::global_size_t
Tpetra::global_size_t global_size_t
Definition
Zoltan2_Standards.hpp:119
Zoltan2::modelFlag_t
std::bitset< NUM_MODEL_FLAGS > modelFlag_t
Definition
Zoltan2_Model.hpp:93
Zoltan2::ModelType
ModelType
An identifier for the general type of model.
Definition
Zoltan2_Model.hpp:61
Zoltan2::IdentifierModelType
@ IdentifierModelType
Definition
Zoltan2_Model.hpp:65
Zoltan2::MAX_NUM_MODEL_TYPES
@ MAX_NUM_MODEL_TYPES
Definition
Zoltan2_Model.hpp:66
Zoltan2::HypergraphModelType
@ HypergraphModelType
Definition
Zoltan2_Model.hpp:62
Zoltan2::GraphModelType
@ GraphModelType
Definition
Zoltan2_Model.hpp:63
Zoltan2::CoordinateModelType
@ CoordinateModelType
Definition
Zoltan2_Model.hpp:64
Zoltan2::ModelFlags
ModelFlags
Flags are set by a Problem to tell a Model what transformations it may need to do on the user's input...
Definition
Zoltan2_Model.hpp:74
Zoltan2::VERTICES_ARE_MATRIX_ROWS
@ VERTICES_ARE_MATRIX_ROWS
use matrix rows as graph vertices
Definition
Zoltan2_Model.hpp:82
Zoltan2::VERTICES_ARE_MESH_ELEMENTS
@ VERTICES_ARE_MESH_ELEMENTS
use mesh elements as vertices
Definition
Zoltan2_Model.hpp:86
Zoltan2::BUILD_SUBSET_GRAPH
@ BUILD_SUBSET_GRAPH
ignore invalid neighbors
Definition
Zoltan2_Model.hpp:88
Zoltan2::GENERATE_CONSECUTIVE_IDS
@ GENERATE_CONSECUTIVE_IDS
algorithm requires consecutive ids
Definition
Zoltan2_Model.hpp:76
Zoltan2::SYMMETRIZE_INPUT_TRANSPOSE
@ SYMMETRIZE_INPUT_TRANSPOSE
model must symmetrize input
Definition
Zoltan2_Model.hpp:80
Zoltan2::SYMMETRIZE_INPUT_BIPARTITE
@ SYMMETRIZE_INPUT_BIPARTITE
model must symmetrize input
Definition
Zoltan2_Model.hpp:81
Zoltan2::NUM_MODEL_FLAGS
@ NUM_MODEL_FLAGS
Definition
Zoltan2_Model.hpp:90
Zoltan2::REMOVE_SELF_EDGES
@ REMOVE_SELF_EDGES
algorithm requires no self edges
Definition
Zoltan2_Model.hpp:87
Zoltan2::VERTICES_ARE_MESH_NODES
@ VERTICES_ARE_MESH_NODES
use mesh nodes as vertices
Definition
Zoltan2_Model.hpp:85
Zoltan2::VERTICES_ARE_MATRIX_COLUMNS
@ VERTICES_ARE_MATRIX_COLUMNS
use columns as graph vertices
Definition
Zoltan2_Model.hpp:83
Zoltan2::VERTICES_ARE_MATRIX_NONZEROS
@ VERTICES_ARE_MATRIX_NONZEROS
use nonzeros as graph vertices
Definition
Zoltan2_Model.hpp:84
Zoltan2::BUILD_LOCAL_GRAPH
@ BUILD_LOCAL_GRAPH
model represents graph within only one rank
Definition
Zoltan2_Model.hpp:79
Zoltan2::lno_t
core
src
models
Zoltan2_Model.hpp
Generated by
1.17.0