Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
Zoltan2_AlgSpectral.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
#ifndef _ZOLTAN2_ALGSPECTRAL_HPP_
46
#define _ZOLTAN2_ALGSPECTRAL_HPP_
47
48
#include <
Zoltan2_Algorithm.hpp
>
49
#include <
Zoltan2_GraphModel.hpp
>
50
#include <
Zoltan2_OrderingSolution.hpp
>
51
52
57
58
59
namespace
Zoltan2
{
60
61
template
<
typename
Adapter>
62
int
AlgSpectral
(
63
const
RCP<
GraphModel<Adapter>
> &model,
64
//const RCP<Adapter> &matrixadapter, // Hack: Use matrix adapter directly
65
66
// TO DO - update this algorithm to have the proper formatting like
67
// the others.
68
const
RCP<
LocalOrderingSolution<typename Adapter::lno_t>
>
69
&solution,
70
const
RCP<Teuchos::ParameterList> &pl,
71
const
RCP<
const
Teuchos::Comm<int> > &comm
72
)
73
{
74
#ifndef INCLUDE_ZOLTAN2_EXPERIMENTAL
75
76
Z2_THROW_EXPERIMENTAL
(
"Zoltan2 Spectral ordering is strictly "
77
"experimental software "
78
"while it is being developed and tested."
)
79
80
#else
//INCLUDE_ZOLTAN2_EXPERIMENTAL
81
82
typedef
typename
Adapter::lno_t
lno_t
;
83
typedef
typename
Adapter::gno_t
gno_t
;
84
typedef
typename
Adapter::offset_t
offset_t
;
85
typedef
typename
Adapter::scalar_t
scalar_t
;
86
87
int
ierr= 0;
88
89
HELLO
;
90
91
// TODO: Check params to do local or global ordering.
92
bool
localOrder =
true
;
93
94
const
size_t
nVtx = model->getLocalNumVertices();
95
lno_t
*perm = solution->getPermutationView();
96
for
(
lno_t
i=0; i<nVtx; i++){
97
perm[i] = -1;
98
}
99
100
// Get local graph.
101
ArrayView<const gno_t> edgeIds;
102
ArrayView<const offset_t> offsets;
103
ArrayView<StridedData<lno_t, scalar_t> > wgts;
104
105
model->getEdgeList(edgeIds, offsets, wgts);
106
107
//cout << "Debug: Local graph from getLocalEdgeList" << endl;
108
//cout << "edgeIds: " << edgeIds << endl;
109
//cout << "offsets: " << offsets << endl;
110
111
// Form the graph Laplacian: L = D-A
112
// Create a new Tpetra matrix, but use views of existing data when possible.
113
// TODO
114
115
// TODO: Find smallest eigenvalues using Anasazi
116
117
// TODO: Sort Fiedler vector.
118
119
solution->setHavePerm(
true
);
120
return
ierr;
121
#endif
// INCLUDE_ZOLTAN2_EXPERIMENTAL
122
}
123
124
}
125
#endif
Zoltan2_Algorithm.hpp
Z2_THROW_EXPERIMENTAL
#define Z2_THROW_EXPERIMENTAL(mystr)
Throw an error when experimental code is requested but not compiled.
Definition
Zoltan2_Exceptions.hpp:121
Zoltan2_GraphModel.hpp
Defines the GraphModel interface.
Zoltan2_OrderingSolution.hpp
Defines the OrderingSolution class.
HELLO
#define HELLO
Definition
Zoltan2_Standards.hpp:132
Zoltan2::GraphModel
GraphModel defines the interface required for graph models.
Definition
Zoltan2_GraphModel.hpp:81
Zoltan2::LocalOrderingSolution
Definition
Zoltan2_OrderingSolution.hpp:387
Zoltan2
Created by mbenlioglu on Aug 31, 2020.
Definition
Zoltan2_AlgHybrid2GL.hpp:38
Zoltan2::AlgSpectral
int AlgSpectral(const RCP< GraphModel< Adapter > > &model, const RCP< LocalOrderingSolution< typename Adapter::lno_t > > &solution, const RCP< Teuchos::ParameterList > &pl, const RCP< const Teuchos::Comm< int > > &comm)
Definition
Zoltan2_AlgSpectral.hpp:62
Zoltan2::lno_t
core
src
algorithms
order
Zoltan2_AlgSpectral.hpp
Generated by
1.17.0