Ifpack Package Browser (Single Doxygen Collection)
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
euclid
SortedList_dh.h
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
#ifndef SORTEDLIST_DH_H
44
#define SORTEDLIST_DH_H
45
46
/* for private use by mpi factorization algorithms */
47
48
#include "
euclid_common.h
"
49
#ifdef __cplusplus
50
extern
"C"
51
{
52
#endif
53
54
typedef
struct
_srecord
55
{
56
int
col
;
57
int
level
;
58
double
val
;
59
int
next
;
60
}
SRecord
;
61
62
63
extern
void
SortedList_dhCreate
(
SortedList_dh
* sList);
64
extern
void
SortedList_dhDestroy
(
SortedList_dh
sList);
65
extern
void
SortedList_dhInit
(
SortedList_dh
sList,
SubdomainGraph_dh
sg);
66
extern
void
SortedList_dhEnforceConstraint
(
SortedList_dh
sList,
67
SubdomainGraph_dh
sg);
68
69
extern
void
SortedList_dhReset
(
SortedList_dh
sList,
int
row);
70
71
extern
int
SortedList_dhReadCount
(
SortedList_dh
sList);
72
/* returns number of records inserted since last reset */
73
74
extern
void
SortedList_dhResetGetSmallest
(
SortedList_dh
sList);
75
/* resets index used for SortedList_dhGetSmallestLowerTri().
76
*/
77
78
extern
SRecord
*
SortedList_dhGetSmallest
(
SortedList_dh
sList);
79
/* returns record with smallest column value that hasn't been
80
retrieved via this method since last call to SortedList_dhReset()
81
or SortedList_dhResetGetSmallest().
82
If all records have been retrieved, returns NULL.
83
*/
84
85
extern
SRecord
*
SortedList_dhGetSmallestLowerTri
(
SortedList_dh
sList);
86
/* returns record with smallest column value that hasn't been
87
retrieved via this method since last call to reset.
88
Only returns records where SRecord sr.col < row (per Init).
89
If all records have been retrieved, returns NULL.
90
*/
91
92
extern
void
SortedList_dhInsert
(
SortedList_dh
sList,
SRecord
* sr);
93
/* unilateral insert (does not check to see if item is already
94
in list); does not permute sr->col; used in numeric
95
factorization routines.
96
*/
97
98
extern
void
SortedList_dhInsertOrUpdateVal
(
SortedList_dh
sList,
99
SRecord
* sr);
100
/* unilateral insert: does not check to see if already
101
inserted; does not permute sr->col; used in numeric
102
factorization routines.
103
*/
104
105
extern
bool
SortedList_dhPermuteAndInsert
(
SortedList_dh
sList,
106
SRecord
* sr,
double
thresh);
107
/* permutes sr->col, and inserts record in sorted list.
108
Note: the contents of the passed variable "sr" may be changed.
109
Note: this performs sparsification
110
*/
111
112
113
extern
void
SortedList_dhInsertOrUpdate
(
SortedList_dh
sList,
SRecord
* sr);
114
/* if a record with identical sr->col was inserted, updates sr->level
115
to smallest of the two values; otherwise, inserts the record.
116
Unlike SortedList_dhPermuteAndInsert, does not permute sr->col.
117
Note: the contents of the passed variable "sr" may be changed.
118
Warning: do not call SortedList_dhGetSmallestLowerTri() again
119
until reset is called.
120
*/
121
122
extern
SRecord
*
SortedList_dhFind
(
SortedList_dh
sList,
SRecord
* sr);
123
/* returns NULL if no record is found containing sr->col
124
*/
125
126
extern
void
SortedList_dhUpdateVal
(
SortedList_dh
sList,
SRecord
* sr);
127
#ifdef __cplusplus
128
}
129
#endif
130
#endif
SortedList_dhInit
void SortedList_dhInit(SortedList_dh sList, SubdomainGraph_dh sg)
Definition
SortedList_dh.c:120
SortedList_dhReadCount
int SortedList_dhReadCount(SortedList_dh sList)
Definition
SortedList_dh.c:155
SortedList_dhInsertOrUpdateVal
void SortedList_dhInsertOrUpdateVal(SortedList_dh sList, SRecord *sr)
SortedList_dhEnforceConstraint
void SortedList_dhEnforceConstraint(SortedList_dh sList, SubdomainGraph_dh sg)
Definition
SortedList_dh.c:394
SortedList_dhInsertOrUpdate
void SortedList_dhInsertOrUpdate(SortedList_dh sList, SRecord *sr)
Definition
SortedList_dh.c:284
SortedList_dhFind
SRecord * SortedList_dhFind(SortedList_dh sList, SRecord *sr)
Definition
SortedList_dh.c:344
SortedList_dhUpdateVal
void SortedList_dhUpdateVal(SortedList_dh sList, SRecord *sr)
SortedList_dhReset
void SortedList_dhReset(SortedList_dh sList, int row)
Definition
SortedList_dh.c:141
SortedList_dhPermuteAndInsert
bool SortedList_dhPermuteAndInsert(SortedList_dh sList, SRecord *sr, double thresh)
Definition
SortedList_dh.c:209
SortedList_dhCreate
void SortedList_dhCreate(SortedList_dh *sList)
Definition
SortedList_dh.c:79
SRecord
struct _srecord SRecord
SortedList_dhDestroy
void SortedList_dhDestroy(SortedList_dh sList)
Definition
SortedList_dh.c:105
SortedList_dhResetGetSmallest
void SortedList_dhResetGetSmallest(SortedList_dh sList)
Definition
SortedList_dh.c:162
SortedList_dhGetSmallestLowerTri
SRecord * SortedList_dhGetSmallestLowerTri(SortedList_dh sList)
Definition
SortedList_dh.c:189
SortedList_dhGetSmallest
SRecord * SortedList_dhGetSmallest(SortedList_dh sList)
Definition
SortedList_dh.c:171
SortedList_dhInsert
void SortedList_dhInsert(SortedList_dh sList, SRecord *sr)
Definition
SortedList_dh.c:305
euclid_common.h
SortedList_dh
struct _sortedList_dh * SortedList_dh
Definition
euclid_common.h:92
SubdomainGraph_dh
struct _subdomain_dh * SubdomainGraph_dh
Definition
euclid_common.h:80
_srecord
Definition
SortedList_dh.h:55
_srecord::level
int level
Definition
SortedList_dh.h:57
_srecord::val
double val
Definition
SortedList_dh.h:58
_srecord::next
int next
Definition
SortedList_dh.h:59
_srecord::col
int col
Definition
SortedList_dh.h:56
Generated by
1.17.0