Advanced Multi-Physics (AMP)
On-Line Documentation
CSRMatrixDataHelpers.h
Go to the documentation of this file.
1#ifndef included_AMP_CSRMatrixDataHelpers_h
2#define included_AMP_CSRMatrixDataHelpers_h
3
4namespace AMP {
5namespace LinearAlgebra {
6
7template<typename Config>
9 using mask_t = unsigned char;
10 using gidx_t = typename Config::gidx_t;
11 using lidx_t = typename Config::lidx_t;
12 using scalar_t = typename Config::scalar_t;
13
14 static void SortColumnsDiag(
15 lidx_t *row_starts, gidx_t *cols, scalar_t *coeffs, lidx_t num_rows, gidx_t first_col );
16 static void
17 SortColumnsOffd( lidx_t *row_starts, gidx_t *cols, scalar_t *coeffs, lidx_t num_rows );
18
19 static void GlobalToLocalDiag( gidx_t *cols, lidx_t nnz, gidx_t first_col, lidx_t *cols_loc );
20 static void GlobalToLocalOffd(
21 gidx_t *cols, lidx_t nnz, gidx_t *cols_unq, lidx_t ncols_unq, lidx_t *cols_loc );
22
23 static void TransposeDiag( const lidx_t *in_row_starts,
24 const lidx_t *in_cols_loc,
25 const scalar_t *in_coeffs,
26 const lidx_t in_num_rows,
27 const lidx_t out_num_rows,
28 const gidx_t out_first_col,
29 const lidx_t tot_nnz,
30 lidx_t *out_row_starts,
31 lidx_t *out_cols_loc,
32 gidx_t *out_cols,
33 scalar_t *out_coeffs,
34 lidx_t *counters,
35 lidx_t *reduce_space );
36
37 static void TransposeOffd( const lidx_t *in_row_starts,
38 const gidx_t *in_cols,
39 const scalar_t *in_coeffs,
40 const lidx_t in_num_rows,
41 const gidx_t in_first_col,
42 const lidx_t out_num_rows,
43 const gidx_t out_first_col,
44 const lidx_t tot_nnz,
45 lidx_t *out_row_starts,
46 lidx_t *out_cols_loc,
47 gidx_t *out_cols,
48 scalar_t *out_coeffs,
49 lidx_t *counters,
50 lidx_t *reduce_space );
51
52 static void RowSubsetCountNNZ( const gidx_t *rows,
53 const lidx_t num_rows,
54 const gidx_t first_row,
55 const lidx_t *diag_row_starts,
56 const lidx_t *offd_row_starts,
57 lidx_t *counts );
58
59 static void RowSubsetFill( const gidx_t *rows,
60 const lidx_t num_rows,
61 const gidx_t first_row,
62 const gidx_t first_col,
63 const lidx_t *diag_row_starts,
64 const lidx_t *offd_row_starts,
65 const lidx_t *diag_cols_loc,
66 const lidx_t *offd_cols_loc,
67 const scalar_t *diag_coeffs,
68 const scalar_t *offd_coeffs,
69 const gidx_t *offd_colmap,
70 const lidx_t *out_row_starts,
71 gidx_t *out_cols,
72 scalar_t *out_coeffs );
73
74 static void ColSubsetCountNNZ( const gidx_t idx_lo,
75 const gidx_t idx_up,
76 const gidx_t first_col,
77 const lidx_t *diag_row_starts,
78 const lidx_t *diag_cols_loc,
79 const lidx_t *offd_row_starts,
80 const lidx_t *offd_cols_loc,
81 const gidx_t *offd_cols_unq,
82 const lidx_t num_rows,
83 lidx_t *out_row_starts );
84
85 static void ColSubsetFill( const gidx_t idx_lo,
86 const gidx_t idx_up,
87 const gidx_t first_col,
88 const lidx_t *diag_row_starts,
89 const lidx_t *diag_cols_loc,
90 const scalar_t *diag_coeffs,
91 const lidx_t *offd_row_starts,
92 const lidx_t *offd_cols_loc,
93 const gidx_t *offd_cols_unq,
94 const scalar_t *offd_coeffs,
95 const lidx_t num_rows,
96 lidx_t *out_row_starts,
97 gidx_t *out_cols,
98 scalar_t *out_coeffs );
99
100 static void ConcatHorizontalCountNNZ( const lidx_t *in_row_starts,
101 const lidx_t num_rows,
102 lidx_t *out_row_starts );
103
104 static void ConcatHorizontalFill( const lidx_t *in_row_starts,
105 const gidx_t *in_cols,
106 const scalar_t *in_coeffs,
107 const lidx_t num_rows,
108 const lidx_t *out_row_starts,
109 lidx_t *row_nnz_ctrs,
110 gidx_t *out_cols,
111 scalar_t *out_coeffs );
112
113 static void ConcatVerticalCountNNZ( const lidx_t *row_starts,
114 const gidx_t *cols,
115 const lidx_t num_rows,
116 const gidx_t first_col,
117 const gidx_t last_col,
118 const bool keep_inside,
119 lidx_t *counts );
120 static void ConcatVerticalFill( const lidx_t *in_row_starts,
121 const gidx_t *in_cols,
122 const scalar_t *in_coeffs,
123 const lidx_t num_rows,
124 const gidx_t first_col,
125 const gidx_t last_col,
126 const bool keep_inside,
127 const lidx_t row_offset,
128 const lidx_t *out_row_starts,
129 gidx_t *out_cols,
130 scalar_t *out_coeffs );
131
132 static void MaskCountNNZ( const lidx_t *in_row_starts,
133 const mask_t *mask,
134 const bool keep_first,
135 const lidx_t num_rows,
136 lidx_t *out_row_starts );
137
138 static void MaskFillDiag( const lidx_t *in_row_starts,
139 const lidx_t *in_cols_loc,
140 const scalar_t *in_coeffs,
141 const mask_t *mask,
142 const bool keep_first,
143 const lidx_t num_rows,
144 const lidx_t *out_row_starts,
145 lidx_t *out_cols_loc,
146 scalar_t *out_coeffs );
147
148 static lidx_t RemoveRangeCountDel( const lidx_t *row_starts,
149 const scalar_t *coeffs,
150 const lidx_t num_rows,
151 const scalar_t bnd_lo,
152 const scalar_t bnd_up,
153 lidx_t *del_per_row );
154
155 static void RemoveRangeUpdateRowStart( const lidx_t *in_row_starts,
156 const lidx_t *del_per_row,
157 const lidx_t num_rows,
158 lidx_t *out_row_starts );
159
160 static void RemoveRangeFillDiag( const lidx_t *old_row_starts,
161 const lidx_t *old_cols_loc,
162 const scalar_t *old_coeffs,
163 const lidx_t num_rows,
164 const scalar_t bnd_lo,
165 const scalar_t bnd_up,
166 [[maybe_unused]] const lidx_t *new_row_starts,
167 lidx_t *new_cols_loc,
168 scalar_t *new_coeffs );
169
170 static void RemoveRangeFillOffd( const lidx_t *old_row_starts,
171 const lidx_t *old_cols_loc,
172 const gidx_t *old_cols_unq,
173 const scalar_t *old_coeffs,
174 const lidx_t num_rows,
175 const scalar_t bnd_lo,
176 const scalar_t bnd_up,
177 [[maybe_unused]] const lidx_t *new_row_starts,
178 gidx_t *new_cols,
179 scalar_t *new_coeffs );
180};
181
182} // namespace LinearAlgebra
183} // namespace AMP
184
185#endif
static void RemoveRangeFillOffd(const lidx_t *old_row_starts, const lidx_t *old_cols_loc, const gidx_t *old_cols_unq, const scalar_t *old_coeffs, const lidx_t num_rows, const scalar_t bnd_lo, const scalar_t bnd_up, const lidx_t *new_row_starts, gidx_t *new_cols, scalar_t *new_coeffs)
static void ConcatVerticalCountNNZ(const lidx_t *row_starts, const gidx_t *cols, const lidx_t num_rows, const gidx_t first_col, const gidx_t last_col, const bool keep_inside, lidx_t *counts)
static void GlobalToLocalDiag(gidx_t *cols, lidx_t nnz, gidx_t first_col, lidx_t *cols_loc)
static void TransposeOffd(const lidx_t *in_row_starts, const gidx_t *in_cols, const scalar_t *in_coeffs, const lidx_t in_num_rows, const gidx_t in_first_col, const lidx_t out_num_rows, const gidx_t out_first_col, const lidx_t tot_nnz, lidx_t *out_row_starts, lidx_t *out_cols_loc, gidx_t *out_cols, scalar_t *out_coeffs, lidx_t *counters, lidx_t *reduce_space)
static void ConcatVerticalFill(const lidx_t *in_row_starts, const gidx_t *in_cols, const scalar_t *in_coeffs, const lidx_t num_rows, const gidx_t first_col, const gidx_t last_col, const bool keep_inside, const lidx_t row_offset, const lidx_t *out_row_starts, gidx_t *out_cols, scalar_t *out_coeffs)
static void ConcatHorizontalCountNNZ(const lidx_t *in_row_starts, const lidx_t num_rows, lidx_t *out_row_starts)
static void ColSubsetCountNNZ(const gidx_t idx_lo, const gidx_t idx_up, const gidx_t first_col, const lidx_t *diag_row_starts, const lidx_t *diag_cols_loc, const lidx_t *offd_row_starts, const lidx_t *offd_cols_loc, const gidx_t *offd_cols_unq, const lidx_t num_rows, lidx_t *out_row_starts)
static void RemoveRangeFillDiag(const lidx_t *old_row_starts, const lidx_t *old_cols_loc, const scalar_t *old_coeffs, const lidx_t num_rows, const scalar_t bnd_lo, const scalar_t bnd_up, const lidx_t *new_row_starts, lidx_t *new_cols_loc, scalar_t *new_coeffs)
static void RowSubsetCountNNZ(const gidx_t *rows, const lidx_t num_rows, const gidx_t first_row, const lidx_t *diag_row_starts, const lidx_t *offd_row_starts, lidx_t *counts)
static void GlobalToLocalOffd(gidx_t *cols, lidx_t nnz, gidx_t *cols_unq, lidx_t ncols_unq, lidx_t *cols_loc)
static void MaskCountNNZ(const lidx_t *in_row_starts, const mask_t *mask, const bool keep_first, const lidx_t num_rows, lidx_t *out_row_starts)
static void ColSubsetFill(const gidx_t idx_lo, const gidx_t idx_up, const gidx_t first_col, const lidx_t *diag_row_starts, const lidx_t *diag_cols_loc, const scalar_t *diag_coeffs, const lidx_t *offd_row_starts, const lidx_t *offd_cols_loc, const gidx_t *offd_cols_unq, const scalar_t *offd_coeffs, const lidx_t num_rows, lidx_t *out_row_starts, gidx_t *out_cols, scalar_t *out_coeffs)
static void SortColumnsDiag(lidx_t *row_starts, gidx_t *cols, scalar_t *coeffs, lidx_t num_rows, gidx_t first_col)
static void SortColumnsOffd(lidx_t *row_starts, gidx_t *cols, scalar_t *coeffs, lidx_t num_rows)
static void RemoveRangeUpdateRowStart(const lidx_t *in_row_starts, const lidx_t *del_per_row, const lidx_t num_rows, lidx_t *out_row_starts)
static void ConcatHorizontalFill(const lidx_t *in_row_starts, const gidx_t *in_cols, const scalar_t *in_coeffs, const lidx_t num_rows, const lidx_t *out_row_starts, lidx_t *row_nnz_ctrs, gidx_t *out_cols, scalar_t *out_coeffs)
static void TransposeDiag(const lidx_t *in_row_starts, const lidx_t *in_cols_loc, const scalar_t *in_coeffs, const lidx_t in_num_rows, const lidx_t out_num_rows, const gidx_t out_first_col, const lidx_t tot_nnz, lidx_t *out_row_starts, lidx_t *out_cols_loc, gidx_t *out_cols, scalar_t *out_coeffs, lidx_t *counters, lidx_t *reduce_space)
static void MaskFillDiag(const lidx_t *in_row_starts, const lidx_t *in_cols_loc, const scalar_t *in_coeffs, const mask_t *mask, const bool keep_first, const lidx_t num_rows, const lidx_t *out_row_starts, lidx_t *out_cols_loc, scalar_t *out_coeffs)
static lidx_t RemoveRangeCountDel(const lidx_t *row_starts, const scalar_t *coeffs, const lidx_t num_rows, const scalar_t bnd_lo, const scalar_t bnd_up, lidx_t *del_per_row)
static void RowSubsetFill(const gidx_t *rows, const lidx_t num_rows, const gidx_t first_row, const gidx_t first_col, const lidx_t *diag_row_starts, const lidx_t *offd_row_starts, const lidx_t *diag_cols_loc, const lidx_t *offd_cols_loc, const scalar_t *diag_coeffs, const scalar_t *offd_coeffs, const gidx_t *offd_colmap, const lidx_t *out_row_starts, gidx_t *out_cols, scalar_t *out_coeffs)



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:40.
Comments on this page