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 /******************************************************************************
9 *
10 * HYPRE_BiCGSTAB interface
11 *
12 *****************************************************************************/
13 #include "krylov.h"
14
15 /*--------------------------------------------------------------------------
16 * HYPRE_BiCGSTABCreate does not exist. Call the appropriate function which
17 * also specifies the vector type, e.g. HYPRE_ParCSRBiCGSTABCreate
18 *--------------------------------------------------------------------------*/
19
20 /*--------------------------------------------------------------------------
21 * HYPRE_BiCGSTABDestroy
22 *--------------------------------------------------------------------------*/
23
24 HYPRE_Int
HYPRE_BiCGSTABDestroy(HYPRE_Solver solver)25 HYPRE_BiCGSTABDestroy( HYPRE_Solver solver )
26 {
27 return( hypre_BiCGSTABDestroy( (void *) solver ) );
28 }
29
30 /*--------------------------------------------------------------------------
31 * HYPRE_BiCGSTABSetup
32 *--------------------------------------------------------------------------*/
33
34 HYPRE_Int
HYPRE_BiCGSTABSetup(HYPRE_Solver solver,HYPRE_Matrix A,HYPRE_Vector b,HYPRE_Vector x)35 HYPRE_BiCGSTABSetup( HYPRE_Solver solver,
36 HYPRE_Matrix A,
37 HYPRE_Vector b,
38 HYPRE_Vector x )
39 {
40 return( hypre_BiCGSTABSetup( (void *) solver,
41 (void *) A,
42 (void *) b,
43 (void *) x ) );
44 }
45
46 /*--------------------------------------------------------------------------
47 * HYPRE_BiCGSTABSolve
48 *--------------------------------------------------------------------------*/
49
50 HYPRE_Int
HYPRE_BiCGSTABSolve(HYPRE_Solver solver,HYPRE_Matrix A,HYPRE_Vector b,HYPRE_Vector x)51 HYPRE_BiCGSTABSolve( HYPRE_Solver solver,
52 HYPRE_Matrix A,
53 HYPRE_Vector b,
54 HYPRE_Vector x )
55 {
56 return( hypre_BiCGSTABSolve( (void *) solver,
57 (void *) A,
58 (void *) b,
59 (void *) x ) );
60 }
61
62 /*--------------------------------------------------------------------------
63 * HYPRE_BiCGSTABSetTol
64 *--------------------------------------------------------------------------*/
65
66 HYPRE_Int
HYPRE_BiCGSTABSetTol(HYPRE_Solver solver,HYPRE_Real tol)67 HYPRE_BiCGSTABSetTol( HYPRE_Solver solver,
68 HYPRE_Real tol )
69 {
70 return( hypre_BiCGSTABSetTol( (void *) solver, tol ) );
71 }
72 /*--------------------------------------------------------------------------
73 * HYPRE_BiCGSTABSetAbsoluteTol
74 *--------------------------------------------------------------------------*/
75
76 HYPRE_Int
HYPRE_BiCGSTABSetAbsoluteTol(HYPRE_Solver solver,HYPRE_Real a_tol)77 HYPRE_BiCGSTABSetAbsoluteTol( HYPRE_Solver solver,
78 HYPRE_Real a_tol )
79 {
80 return( hypre_BiCGSTABSetAbsoluteTol( (void *) solver, a_tol ) );
81 }
82 /*--------------------------------------------------------------------------
83 * HYPRE_BiCGSTABSetConvergenceFactorTol
84 *--------------------------------------------------------------------------*/
85
86 HYPRE_Int
HYPRE_BiCGSTABSetConvergenceFactorTol(HYPRE_Solver solver,HYPRE_Real cf_tol)87 HYPRE_BiCGSTABSetConvergenceFactorTol( HYPRE_Solver solver,
88 HYPRE_Real cf_tol )
89 {
90 return( hypre_BiCGSTABSetConvergenceFactorTol( (void *) solver, cf_tol ) );
91 }
92
93 /*--------------------------------------------------------------------------
94 * HYPRE_BiCGSTABSetMinIter
95 *--------------------------------------------------------------------------*/
96
97 HYPRE_Int
HYPRE_BiCGSTABSetMinIter(HYPRE_Solver solver,HYPRE_Int min_iter)98 HYPRE_BiCGSTABSetMinIter( HYPRE_Solver solver,
99 HYPRE_Int min_iter )
100 {
101 return( hypre_BiCGSTABSetMinIter( (void *) solver, min_iter ) );
102 }
103
104 /*--------------------------------------------------------------------------
105 * HYPRE_BiCGSTABSetMaxIter
106 *--------------------------------------------------------------------------*/
107
108 HYPRE_Int
HYPRE_BiCGSTABSetMaxIter(HYPRE_Solver solver,HYPRE_Int max_iter)109 HYPRE_BiCGSTABSetMaxIter( HYPRE_Solver solver,
110 HYPRE_Int max_iter )
111 {
112 return( hypre_BiCGSTABSetMaxIter( (void *) solver, max_iter ) );
113 }
114
115 /*--------------------------------------------------------------------------
116 * HYPRE_BiCGSTABSetStopCrit
117 *--------------------------------------------------------------------------*/
118
119 HYPRE_Int
HYPRE_BiCGSTABSetStopCrit(HYPRE_Solver solver,HYPRE_Int stop_crit)120 HYPRE_BiCGSTABSetStopCrit( HYPRE_Solver solver,
121 HYPRE_Int stop_crit )
122 {
123 return( hypre_BiCGSTABSetStopCrit( (void *) solver, stop_crit ) );
124 }
125
126 /*--------------------------------------------------------------------------
127 * HYPRE_BiCGSTABSetPrecond
128 *--------------------------------------------------------------------------*/
129
130 HYPRE_Int
HYPRE_BiCGSTABSetPrecond(HYPRE_Solver solver,HYPRE_PtrToSolverFcn precond,HYPRE_PtrToSolverFcn precond_setup,HYPRE_Solver precond_solver)131 HYPRE_BiCGSTABSetPrecond( HYPRE_Solver solver,
132 HYPRE_PtrToSolverFcn precond,
133 HYPRE_PtrToSolverFcn precond_setup,
134 HYPRE_Solver precond_solver )
135 {
136 return( hypre_BiCGSTABSetPrecond( (void *) solver,
137 (HYPRE_Int (*)(void*, void*, void*, void*))precond,
138 (HYPRE_Int (*)(void*, void*, void*, void*))precond_setup,
139 (void *) precond_solver ) );
140 }
141
142 /*--------------------------------------------------------------------------
143 * HYPRE_BiCGSTABGetPrecond
144 *--------------------------------------------------------------------------*/
145
146 HYPRE_Int
HYPRE_BiCGSTABGetPrecond(HYPRE_Solver solver,HYPRE_Solver * precond_data_ptr)147 HYPRE_BiCGSTABGetPrecond( HYPRE_Solver solver,
148 HYPRE_Solver *precond_data_ptr )
149 {
150 return( hypre_BiCGSTABGetPrecond( (void *) solver,
151 (HYPRE_Solver *) precond_data_ptr ) );
152 }
153
154 /*--------------------------------------------------------------------------
155 * HYPRE_BiCGSTABSetLogging
156 *--------------------------------------------------------------------------*/
157
158 HYPRE_Int
HYPRE_BiCGSTABSetLogging(HYPRE_Solver solver,HYPRE_Int logging)159 HYPRE_BiCGSTABSetLogging( HYPRE_Solver solver,
160 HYPRE_Int logging)
161 {
162 return( hypre_BiCGSTABSetLogging( (void *) solver, logging ) );
163 }
164
165 /*--------------------------------------------------------------------------
166 * HYPRE_BiCGSTABSetPrintLevel
167 *--------------------------------------------------------------------------*/
168
169 HYPRE_Int
HYPRE_BiCGSTABSetPrintLevel(HYPRE_Solver solver,HYPRE_Int print_level)170 HYPRE_BiCGSTABSetPrintLevel( HYPRE_Solver solver,
171 HYPRE_Int print_level)
172 {
173 return( hypre_BiCGSTABSetPrintLevel( (void *) solver, print_level ) );
174 }
175
176 /*--------------------------------------------------------------------------
177 * HYPRE_BiCGSTABGetNumIterations
178 *--------------------------------------------------------------------------*/
179
180 HYPRE_Int
HYPRE_BiCGSTABGetNumIterations(HYPRE_Solver solver,HYPRE_Int * num_iterations)181 HYPRE_BiCGSTABGetNumIterations( HYPRE_Solver solver,
182 HYPRE_Int *num_iterations )
183 {
184 return( hypre_BiCGSTABGetNumIterations( (void *) solver, num_iterations ) );
185 }
186
187 /*--------------------------------------------------------------------------
188 * HYPRE_BiCGSTABGetFinalRelativeResidualNorm
189 *--------------------------------------------------------------------------*/
190
191 HYPRE_Int
HYPRE_BiCGSTABGetFinalRelativeResidualNorm(HYPRE_Solver solver,HYPRE_Real * norm)192 HYPRE_BiCGSTABGetFinalRelativeResidualNorm( HYPRE_Solver solver,
193 HYPRE_Real *norm )
194 {
195 return( hypre_BiCGSTABGetFinalRelativeResidualNorm( (void *) solver, norm ) );
196 }
197
198 /*--------------------------------------------------------------------------
199 * HYPRE_BiCGSTABGetResidual
200 *--------------------------------------------------------------------------*/
201
202 HYPRE_Int
HYPRE_BiCGSTABGetResidual(HYPRE_Solver solver,void * residual)203 HYPRE_BiCGSTABGetResidual( HYPRE_Solver solver,
204 void *residual )
205 {
206 return( hypre_BiCGSTABGetResidual( (void *) solver, (void **) residual ) );
207 }
208