Ifpack Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
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
49int ExtractIndicesView(void* A, int GlobalRow, int *NumEntries, int **Indices){
50 int ierr = 0;
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
60int ExtractValuesView(void *A, int GlobalRow, int *NumEntries, double** Values){
61 int ierr = 0;
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
71int MinMaxMyGID(void* A, bool Row, bool min){
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
88int NumGlobalRowCol(void* A, bool Row){
90 if(Row){
91 return mat->NumGlobalRows();
92 } else {
93 return mat->NumGlobalCols();
94 }
95}
96
97int NumMyRowEntries(void *A, int Row, int *numEntries){
99 return mat->NumMyRowEntries(mat->LRID(Row), *numEntries);
100}
#define min(x, y)
int MinMaxMyGID(void *A, bool Row, bool min)
Definition: call_epetra.cpp:71
int NumMyRowEntries(void *A, int Row, int *numEntries)
Definition: call_epetra.cpp:97
int NumGlobalRowCol(void *A, bool Row)
Definition: call_epetra.cpp:88
int ExtractIndicesView(void *A, int GlobalRow, int *NumEntries, int **Indices)
Definition: call_epetra.cpp:49
int ExtractValuesView(void *A, int GlobalRow, int *NumEntries, double **Values)
Definition: call_epetra.cpp:60
int MinMyGID() const
int MaxMyGID() const
int ExtractMyRowView(int LocalRow, int &NumIndices, int *&Indices) const
const Epetra_Map & RowMap() const
int ExtractMyRowView(int MyRow, int &NumEntries, double *&Values, int *&Indices) const
int NumGlobalCols() const
int LRID(int GRID_in) const
const Epetra_CrsGraph & Graph() const
int NumGlobalRows() const
const Epetra_Map & ColMap() const
int NumMyRowEntries(int MyRow, int &NumEntries) const