Ifpack Package Browser (Single Doxygen Collection)
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
euclid
call_epetra.cpp
Go to the documentation of this file.
1
/*@HEADER
2
// ***********************************************************************
3
//
4
// Ifpack: Object-Oriented Algebraic Preconditioner Package
5
// Copyright (2002) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
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
43
#include "
call_epetra.h
"
44
#include "
Epetra_CrsMatrix.h
"
45
#include "
Epetra_Map.h
"
46
#include <vector>
47
48
49
int
ExtractIndicesView
(
void
* A,
int
GlobalRow,
int
*NumEntries,
int
**Indices){
50
int
ierr = 0;
51
Epetra_CrsMatrix
*mat = (
Epetra_CrsMatrix
*) A;
52
int
MyRow = mat->
LRID
(GlobalRow);
53
if
(MyRow == -1)
return
0;
54
int
& len = *NumEntries;
55
int
*& ind = *Indices;
56
ierr += mat->
Graph
().
ExtractMyRowView
(MyRow, len, ind);
57
return
ierr;
58
}
59
60
int
ExtractValuesView
(
void
*A,
int
GlobalRow,
int
*NumEntries,
double
** Values){
61
int
ierr = 0;
62
Epetra_CrsMatrix
*mat = (
Epetra_CrsMatrix
*) A;
63
int
MyRow = mat->
LRID
(GlobalRow);
64
if
(MyRow == -1)
return
0;
65
int
&len = *NumEntries;
66
double
*& val = *Values;
67
ierr += mat->
ExtractMyRowView
(MyRow, len, val);
68
return
ierr;
69
}
70
71
int
MinMaxMyGID
(
void
* A,
bool
Row,
bool
min
){
72
Epetra_CrsMatrix
* mat = (
Epetra_CrsMatrix
*) A;
73
if
(Row){
74
if
(
min
){
75
return
mat->
RowMap
().
MinMyGID
();
76
}
else
{
77
return
mat->
RowMap
().
MaxMyGID
();
78
}
79
}
else
{
80
if
(
min
){
81
return
mat->
ColMap
().
MinMyGID
();
82
}
else
{
83
return
mat->
ColMap
().
MaxMyGID
();
84
}
85
}
86
}
87
88
int
NumGlobalRowCol
(
void
* A,
bool
Row){
89
Epetra_CrsMatrix
*mat = (
Epetra_CrsMatrix
*) A;
90
if
(Row){
91
return
mat->
NumGlobalRows
();
92
}
else
{
93
return
mat->
NumGlobalCols
();
94
}
95
}
96
97
int
NumMyRowEntries
(
void
*A,
int
Row,
int
*numEntries){
98
Epetra_CrsMatrix
* mat = (
Epetra_CrsMatrix
*) A;
99
return
mat->
NumMyRowEntries
(mat->
LRID
(Row), *numEntries);
100
}
Epetra_CrsMatrix.h
Epetra_Map.h
min
#define min(x, y)
MinMaxMyGID
int MinMaxMyGID(void *A, bool Row, bool min)
Definition
call_epetra.cpp:71
NumMyRowEntries
int NumMyRowEntries(void *A, int Row, int *numEntries)
Definition
call_epetra.cpp:97
NumGlobalRowCol
int NumGlobalRowCol(void *A, bool Row)
Definition
call_epetra.cpp:88
ExtractIndicesView
int ExtractIndicesView(void *A, int GlobalRow, int *NumEntries, int **Indices)
Definition
call_epetra.cpp:49
ExtractValuesView
int ExtractValuesView(void *A, int GlobalRow, int *NumEntries, double **Values)
Definition
call_epetra.cpp:60
call_epetra.h
Epetra_BlockMap::MinMyGID
int MinMyGID() const
Epetra_BlockMap::MaxMyGID
int MaxMyGID() const
Epetra_CrsGraph::ExtractMyRowView
int ExtractMyRowView(int LocalRow, int &NumIndices, int *&Indices) const
Epetra_CrsMatrix
Epetra_CrsMatrix::RowMap
const Epetra_Map & RowMap() const
Epetra_CrsMatrix::ExtractMyRowView
int ExtractMyRowView(int MyRow, int &NumEntries, double *&Values, int *&Indices) const
Epetra_CrsMatrix::NumGlobalCols
int NumGlobalCols() const
Epetra_CrsMatrix::LRID
int LRID(int GRID_in) const
Epetra_CrsMatrix::Graph
const Epetra_CrsGraph & Graph() const
Epetra_CrsMatrix::NumGlobalRows
int NumGlobalRows() const
Epetra_CrsMatrix::ColMap
const Epetra_Map & ColMap() const
Epetra_CrsMatrix::NumMyRowEntries
int NumMyRowEntries(int MyRow, int &NumEntries) const
Generated by
1.17.0