aboutsummaryrefslogtreecommitdiff
path: root/src/elliptic/ilucg_wrapper.F77
blob: d1ab80369796ae18c3e51c436e9852929ce8fb9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
c ilucg_wrapper.F77 -- wrapper routines for [sd]ilucg()
c $Header$

c
c These subroutines are wrappers around the [sd]ilucg() functions.
c These subroutines take only integer/real/double precision arguments,
c avoiding problems with C/C++ --> Fortran handling of the logical
c result returned by [sd]ilucg().
c
c Arguments:
c istatus = (out) This is the "IE" return value from [sd]ilucg()
c ierror = (out) This is returned as 0 for a normal return,
c                nonzero for an error return.
c

#include "config.h"

#ifdef HAVE_ROW_SPARSE_JACOBIAN__ILUCG
	subroutine silucg_wrapper(n,
     $				  ia, ja, a,
     $				  b, x,
     $				  itemp, rtemp,
     $				  eps, iter,
     $				  istatus, ierror)
	integer n
	integer ia(*), ja(*)
	real a(*), b(*), x(*)
	integer itemp(*)
	real rtemp(*)
	real eps
	integer iter, istatus, ierror
c
	logical silucg
c
	ierror = 0
	if (silucg(n,
     $		   ia, ja, a,
     $		   b, x,
     $		   itemp, rtemp,
     $		   eps, iter,
     $		   istatus)) ierror = 1
	return
	end
#endif	// HAVE_ROW_SPARSE_JACOBIAN__ILUCG

#ifdef HAVE_ROW_SPARSE_JACOBIAN__ILUCG
	subroutine dilucg_wrapper(n,
     $				  ia, ja, a,
     $				  b, x,
     $				  itemp, rtemp,
     $				  eps, iter,
     $				  istatus, ierror)
	integer n
	integer ia(*), ja(*)
	double precision a(*), b(*), x(*)
	integer itemp(*)
	double precision rtemp(*)
	double precision eps
	integer iter, istatus, ierror
c
	logical dilucg
c
	ierror = 0
	if (dilucg(n,
     $		   ia, ja, a,
     $		   b, x,
     $		   itemp, rtemp,
     $		   eps, iter,
     $		   istatus)) ierror = 1
	return
	end
#endif	// HAVE_ROW_SPARSE_JACOBIAN__ILUCG