1 /******************************************************************************
2 * Copyright 1998-2019 Lawrence Livermore National Security, LLC and other
3 * HYPRE Project Developers. See the top-level COPYRIGHT file for details.
4 *
5 * SPDX-License-Identifier: (Apache-2.0 OR MIT)
6 ******************************************************************************/
7
8 #include "_hypre_parcsr_ls.h"
9
10 /*--------------------------------------------------------------------------
11 * HYPRE_ADSCreate
12 *--------------------------------------------------------------------------*/
13
HYPRE_ADSCreate(HYPRE_Solver * solver)14 HYPRE_Int HYPRE_ADSCreate(HYPRE_Solver *solver)
15 {
16 *solver = (HYPRE_Solver) hypre_ADSCreate();
17 return hypre_error_flag;
18 }
19
20 /*--------------------------------------------------------------------------
21 * HYPRE_ADSDestroy
22 *--------------------------------------------------------------------------*/
23
HYPRE_ADSDestroy(HYPRE_Solver solver)24 HYPRE_Int HYPRE_ADSDestroy(HYPRE_Solver solver)
25 {
26 return hypre_ADSDestroy((void *) solver);
27 }
28
29 /*--------------------------------------------------------------------------
30 * HYPRE_ADSSetup
31 *--------------------------------------------------------------------------*/
32
HYPRE_ADSSetup(HYPRE_Solver solver,HYPRE_ParCSRMatrix A,HYPRE_ParVector b,HYPRE_ParVector x)33 HYPRE_Int HYPRE_ADSSetup (HYPRE_Solver solver,
34 HYPRE_ParCSRMatrix A,
35 HYPRE_ParVector b,
36 HYPRE_ParVector x)
37 {
38 return hypre_ADSSetup((void *) solver,
39 (hypre_ParCSRMatrix *) A,
40 (hypre_ParVector *) b,
41 (hypre_ParVector *) x);
42 }
43
44 /*--------------------------------------------------------------------------
45 * HYPRE_ADSSolve
46 *--------------------------------------------------------------------------*/
47
HYPRE_ADSSolve(HYPRE_Solver solver,HYPRE_ParCSRMatrix A,HYPRE_ParVector b,HYPRE_ParVector x)48 HYPRE_Int HYPRE_ADSSolve (HYPRE_Solver solver,
49 HYPRE_ParCSRMatrix A,
50 HYPRE_ParVector b,
51 HYPRE_ParVector x)
52 {
53 return hypre_ADSSolve((void *) solver,
54 (hypre_ParCSRMatrix *) A,
55 (hypre_ParVector *) b,
56 (hypre_ParVector *) x);
57 }
58
59
60 /*--------------------------------------------------------------------------
61 * HYPRE_ADSSetDiscreteCurl
62 *--------------------------------------------------------------------------*/
63
HYPRE_ADSSetDiscreteCurl(HYPRE_Solver solver,HYPRE_ParCSRMatrix C)64 HYPRE_Int HYPRE_ADSSetDiscreteCurl(HYPRE_Solver solver,
65 HYPRE_ParCSRMatrix C)
66 {
67 return hypre_ADSSetDiscreteCurl((void *) solver,
68 (hypre_ParCSRMatrix *) C);
69 }
70
71 /*--------------------------------------------------------------------------
72 * HYPRE_ADSSetDiscreteGradient
73 *--------------------------------------------------------------------------*/
74
HYPRE_ADSSetDiscreteGradient(HYPRE_Solver solver,HYPRE_ParCSRMatrix G)75 HYPRE_Int HYPRE_ADSSetDiscreteGradient(HYPRE_Solver solver,
76 HYPRE_ParCSRMatrix G)
77 {
78 return hypre_ADSSetDiscreteGradient((void *) solver,
79 (hypre_ParCSRMatrix *) G);
80 }
81
82 /*--------------------------------------------------------------------------
83 * HYPRE_ADSSetCoordinateVectors
84 *--------------------------------------------------------------------------*/
85
HYPRE_ADSSetCoordinateVectors(HYPRE_Solver solver,HYPRE_ParVector x,HYPRE_ParVector y,HYPRE_ParVector z)86 HYPRE_Int HYPRE_ADSSetCoordinateVectors(HYPRE_Solver solver,
87 HYPRE_ParVector x,
88 HYPRE_ParVector y,
89 HYPRE_ParVector z)
90 {
91 return hypre_ADSSetCoordinateVectors((void *) solver,
92 (hypre_ParVector *) x,
93 (hypre_ParVector *) y,
94 (hypre_ParVector *) z);
95 }
96
97 /*--------------------------------------------------------------------------
98 * HYPRE_ADSSetInterpolations
99 *--------------------------------------------------------------------------*/
100
HYPRE_ADSSetInterpolations(HYPRE_Solver solver,HYPRE_ParCSRMatrix RT_Pi,HYPRE_ParCSRMatrix RT_Pix,HYPRE_ParCSRMatrix RT_Piy,HYPRE_ParCSRMatrix RT_Piz,HYPRE_ParCSRMatrix ND_Pi,HYPRE_ParCSRMatrix ND_Pix,HYPRE_ParCSRMatrix ND_Piy,HYPRE_ParCSRMatrix ND_Piz)101 HYPRE_Int HYPRE_ADSSetInterpolations(HYPRE_Solver solver,
102 HYPRE_ParCSRMatrix RT_Pi,
103 HYPRE_ParCSRMatrix RT_Pix,
104 HYPRE_ParCSRMatrix RT_Piy,
105 HYPRE_ParCSRMatrix RT_Piz,
106 HYPRE_ParCSRMatrix ND_Pi,
107 HYPRE_ParCSRMatrix ND_Pix,
108 HYPRE_ParCSRMatrix ND_Piy,
109 HYPRE_ParCSRMatrix ND_Piz)
110 {
111 return hypre_ADSSetInterpolations((void *) solver,
112 (hypre_ParCSRMatrix *) RT_Pi,
113 (hypre_ParCSRMatrix *) RT_Pix,
114 (hypre_ParCSRMatrix *) RT_Piy,
115 (hypre_ParCSRMatrix *) RT_Piz,
116 (hypre_ParCSRMatrix *) ND_Pi,
117 (hypre_ParCSRMatrix *) ND_Pix,
118 (hypre_ParCSRMatrix *) ND_Piy,
119 (hypre_ParCSRMatrix *) ND_Piz);
120
121 }
122
123 /*--------------------------------------------------------------------------
124 * HYPRE_ADSSetMaxIter
125 *--------------------------------------------------------------------------*/
126
HYPRE_ADSSetMaxIter(HYPRE_Solver solver,HYPRE_Int maxit)127 HYPRE_Int HYPRE_ADSSetMaxIter(HYPRE_Solver solver,
128 HYPRE_Int maxit)
129 {
130 return hypre_ADSSetMaxIter((void *) solver, maxit);
131 }
132
133 /*--------------------------------------------------------------------------
134 * HYPRE_ADSSetTol
135 *--------------------------------------------------------------------------*/
136
HYPRE_ADSSetTol(HYPRE_Solver solver,HYPRE_Real tol)137 HYPRE_Int HYPRE_ADSSetTol(HYPRE_Solver solver,
138 HYPRE_Real tol)
139 {
140 return hypre_ADSSetTol((void *) solver, tol);
141 }
142
143 /*--------------------------------------------------------------------------
144 * HYPRE_ADSSetCycleType
145 *--------------------------------------------------------------------------*/
146
HYPRE_ADSSetCycleType(HYPRE_Solver solver,HYPRE_Int cycle_type)147 HYPRE_Int HYPRE_ADSSetCycleType(HYPRE_Solver solver,
148 HYPRE_Int cycle_type)
149 {
150 return hypre_ADSSetCycleType((void *) solver, cycle_type);
151 }
152
153 /*--------------------------------------------------------------------------
154 * HYPRE_ADSSetPrintLevel
155 *--------------------------------------------------------------------------*/
156
HYPRE_ADSSetPrintLevel(HYPRE_Solver solver,HYPRE_Int print_level)157 HYPRE_Int HYPRE_ADSSetPrintLevel(HYPRE_Solver solver,
158 HYPRE_Int print_level)
159 {
160 return hypre_ADSSetPrintLevel((void *) solver, print_level);
161 }
162
163 /*--------------------------------------------------------------------------
164 * HYPRE_ADSSetSmoothingOptions
165 *--------------------------------------------------------------------------*/
166
HYPRE_ADSSetSmoothingOptions(HYPRE_Solver solver,HYPRE_Int relax_type,HYPRE_Int relax_times,HYPRE_Real relax_weight,HYPRE_Real omega)167 HYPRE_Int HYPRE_ADSSetSmoothingOptions(HYPRE_Solver solver,
168 HYPRE_Int relax_type,
169 HYPRE_Int relax_times,
170 HYPRE_Real relax_weight,
171 HYPRE_Real omega)
172 {
173 return hypre_ADSSetSmoothingOptions((void *) solver,
174 relax_type,
175 relax_times,
176 relax_weight,
177 omega);
178 }
179
180 /*--------------------------------------------------------------------------
181 * HYPRE_ADSSetChebyOptions
182 *--------------------------------------------------------------------------*/
183
HYPRE_ADSSetChebySmoothingOptions(HYPRE_Solver solver,HYPRE_Int cheby_order,HYPRE_Int cheby_fraction)184 HYPRE_Int HYPRE_ADSSetChebySmoothingOptions(HYPRE_Solver solver,
185 HYPRE_Int cheby_order,
186 HYPRE_Int cheby_fraction)
187 {
188 return hypre_ADSSetChebySmoothingOptions((void *) solver,
189 cheby_order,
190 cheby_fraction);
191 }
192
193 /*--------------------------------------------------------------------------
194 * HYPRE_ADSSetAMSOptions
195 *--------------------------------------------------------------------------*/
196
HYPRE_ADSSetAMSOptions(HYPRE_Solver solver,HYPRE_Int cycle_type,HYPRE_Int coarsen_type,HYPRE_Int agg_levels,HYPRE_Int relax_type,HYPRE_Real strength_threshold,HYPRE_Int interp_type,HYPRE_Int Pmax)197 HYPRE_Int HYPRE_ADSSetAMSOptions(HYPRE_Solver solver,
198 HYPRE_Int cycle_type,
199 HYPRE_Int coarsen_type,
200 HYPRE_Int agg_levels,
201 HYPRE_Int relax_type,
202 HYPRE_Real strength_threshold,
203 HYPRE_Int interp_type,
204 HYPRE_Int Pmax)
205 {
206 return hypre_ADSSetAMSOptions((void *) solver,
207 cycle_type,
208 coarsen_type,
209 agg_levels,
210 relax_type,
211 strength_threshold,
212 interp_type,
213 Pmax);
214 }
215
216 /*--------------------------------------------------------------------------
217 * HYPRE_ADSSetAlphaAMGOptions
218 *--------------------------------------------------------------------------*/
219
HYPRE_ADSSetAMGOptions(HYPRE_Solver solver,HYPRE_Int coarsen_type,HYPRE_Int agg_levels,HYPRE_Int relax_type,HYPRE_Real strength_threshold,HYPRE_Int interp_type,HYPRE_Int Pmax)220 HYPRE_Int HYPRE_ADSSetAMGOptions(HYPRE_Solver solver,
221 HYPRE_Int coarsen_type,
222 HYPRE_Int agg_levels,
223 HYPRE_Int relax_type,
224 HYPRE_Real strength_threshold,
225 HYPRE_Int interp_type,
226 HYPRE_Int Pmax)
227 {
228 return hypre_ADSSetAMGOptions((void *) solver,
229 coarsen_type,
230 agg_levels,
231 relax_type,
232 strength_threshold,
233 interp_type,
234 Pmax);
235 }
236
237 /*--------------------------------------------------------------------------
238 * HYPRE_ADSGetNumIterations
239 *--------------------------------------------------------------------------*/
240
HYPRE_ADSGetNumIterations(HYPRE_Solver solver,HYPRE_Int * num_iterations)241 HYPRE_Int HYPRE_ADSGetNumIterations(HYPRE_Solver solver,
242 HYPRE_Int *num_iterations)
243 {
244 return hypre_ADSGetNumIterations((void *) solver,
245 num_iterations);
246 }
247
248 /*--------------------------------------------------------------------------
249 * HYPRE_ADSGetFinalRelativeResidualNorm
250 *--------------------------------------------------------------------------*/
251
HYPRE_ADSGetFinalRelativeResidualNorm(HYPRE_Solver solver,HYPRE_Real * rel_resid_norm)252 HYPRE_Int HYPRE_ADSGetFinalRelativeResidualNorm(HYPRE_Solver solver,
253 HYPRE_Real *rel_resid_norm)
254 {
255 return hypre_ADSGetFinalRelativeResidualNorm((void *) solver,
256 rel_resid_norm);
257 }
258