IFPACK
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
az_ifpack_solve.c
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 <stdio.h>
44
#include <stdlib.h>
45
#include <math.h>
46
#include <std::string.h>
47
#include "az_aztec.h"
48
#include "az_ifpack.h"
49
50
void
AZ_ifpack_solve(
double
x[],
double
b[],
int
options[],
double
params[],
51
int
indx[],
int
bindx[],
int
rpntr[],
int
cpntr[],
int
bpntr[],
52
double
val[],
int
data_org[],
double
status[],
int
proc_config[])
53
{
54
AZ_MATRIX *Amat;
55
56
Amat = AZ_matrix_create(data_org[AZ_N_internal]+data_org[AZ_N_border]);
57
58
options[AZ_output] = 1;
59
if
(data_org[AZ_matrix_type] == AZ_MSR_MATRIX)
60
AZ_set_MSR(Amat, bindx, val, data_org, 0, NULL, AZ_LOCAL);
61
else
if
(data_org[AZ_matrix_type] == AZ_VBR_MATRIX)
62
AZ_set_VBR(Amat, rpntr, cpntr, bpntr, indx, bindx, val,
63
data_org, 0, NULL, AZ_LOCAL);
64
else
{
65
fprintf(stderr,
"Unknown matrix type (%d)\n"
,data_org[AZ_matrix_type]);
66
fprintf(stderr,
"Matrix-free is now available via AZ_iterate()\n"
);
67
exit(1);
68
}
69
70
AZ_ifpack_iterate(x, b, options, params, status, proc_config, Amat);
71
72
AZ_matrix_destroy(&Amat);
73
74
}
75
/* AZ_ifpack_solve*/
Generated by
1.17.0