EpetraExt Package Browser (Single Doxygen Collection)
Development
src
coloring
EpetraExt_MapColoringIndex.cpp
Go to the documentation of this file.
1
//@HEADER
2
// ***********************************************************************
3
//
4
// EpetraExt: Epetra Extended - Linear Algebra Services Package
5
// Copyright (2011) Sandia Corporation
6
//
7
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8
// the U.S. Government retains certain rights in this software.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ***********************************************************************
40
//@HEADER
41
42
#include <
Epetra_ConfigDefs.h
>
43
#include <
EpetraExt_MapColoringIndex.h
>
44
45
#include <
Epetra_CrsGraph.h
>
46
#include <
Epetra_MapColoring.h
>
47
#include <
Epetra_GIDTypeVector.h
>
48
#include <
Epetra_Map.h
>
49
50
#include <vector>
51
#include <map>
52
53
using
std::vector;
54
using
std::map;
55
56
namespace
EpetraExt
{
57
58
// template<typename int_type>
59
// typename TCrsGraph_MapColoringIndex<int_type>::NewTypeRef
60
// TCrsGraph_MapColoringIndex<int_type>::
61
// operator()( OriginalTypeRef orig )
62
// {
63
// if(!orig.RowMap(). template GlobalIndicesIsType<int_type>())
64
// throw "EpetraExt::TCrsGraph_MapColoringIndex::operator(): Global indices mismatch.";
65
66
// Base::origObj_ = &orig;
67
68
// const Epetra_BlockMap & RowMap = orig.RowMap();
69
// int nRows = RowMap.NumMyElements();
70
71
// int NumColors = ColorMap_.NumColors();
72
// int * ListOfColors = ColorMap_.ListOfColors();
73
74
// map<int,int> MapOfColors;
75
// for( int i = 0; i < NumColors; ++i ) MapOfColors[ ListOfColors[i] ] = i;
76
77
// //initial setup of stl vector of IntVectors for indexing
78
// vector<int_type> dummy( nRows, -1 );
79
// typename Base::NewTypePtr IndexVec = new typename Base::NewType( NumColors, typename Epetra_GIDTypeVector<int_type>::impl( Copy, RowMap, &dummy[0] ) );
80
81
// int MaxNumIndices = orig.MaxNumIndices();
82
// int NumIndices;
83
// vector<int_type> Indices( MaxNumIndices );
84
85
// for( int i = 0; i < nRows; ++i )
86
// {
87
// orig.ExtractGlobalRowCopy( (int_type) orig.GRID64(i), MaxNumIndices, NumIndices, &Indices[0] );
88
89
// for( int j = 0; j < NumIndices; ++j )
90
// (*IndexVec)[ MapOfColors[ColorMap_(Indices[j])] ][i] = Indices[j];
91
// }
92
93
// Base::newObj_ = IndexVec;
94
95
// return *IndexVec;
96
// }
97
98
#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
99
100
std::vector<Epetra_IntVector>&
101
CrsGraph_MapColoringIndex::operator()
(
Epetra_CrsGraph
& orig )
102
{
103
return
TCrsGraph_MapColoringIndex<int>::operator()
(orig);
104
}
105
106
#endif
107
108
#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
109
110
std::vector<Epetra_LongLongVector>&
111
CrsGraph_MapColoringIndex64::operator()
(
Epetra_CrsGraph
& orig )
112
{
113
return
TCrsGraph_MapColoringIndex<long long>::operator()
(orig);
114
}
115
116
#endif
117
118
}
// namespace EpetraExt
119
Epetra_MapColoring.h
Epetra_CrsGraph.h
EpetraExt
EpetraExt::BlockCrsMatrix: A class for constructing a distributed block matrix.
Definition:
EpetraExt_BlockCrsMatrix.cpp:46
Epetra_GIDTypeVector.h
EpetraExt::CrsGraph_MapColoringIndex64::operator()
std::vector< Epetra_LongLongVector > & operator()(Epetra_CrsGraph &orig)
Definition:
EpetraExt_MapColoringIndex.cpp:111
EpetraExt::TCrsGraph_MapColoringIndex::operator()
NewTypeRef operator()(OriginalTypeRef orig)
Definition:
EpetraExt_TCrsGraph_MapColoringIndex.h:97
Epetra_Map.h
EpetraExt_MapColoringIndex.h
EpetraExt::CrsGraph_MapColoringIndex::operator()
std::vector< Epetra_IntVector > & operator()(Epetra_CrsGraph &orig)
Definition:
EpetraExt_MapColoringIndex.cpp:101
Epetra_ConfigDefs.h
Epetra_CrsGraph
Generated by
1.8.14