Added UMFPACK for complex numbers.

psblas3-type-indexed
Salvatore Filippone 19 years ago
parent 60f02d3b49
commit ea36fcdf0f

@ -51,7 +51,7 @@ subroutine psb_zslu_bld(a,desc_a,p,info)
character(len=5) :: fmt character(len=5) :: fmt
character :: upd='F' character :: upd='F'
integer :: i,j,nza,nzb,nzt,icontxt, me,mycol,nprow,npcol,err_act integer :: i,j,nza,nzb,nzt,icontxt, me,mycol,nprow,npcol,err_act
logical, parameter :: debug=.true. logical, parameter :: debug=.false.
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
interface psb_asmatbld interface psb_asmatbld

@ -90,7 +90,6 @@ Availability:
#include <stdio.h> #include <stdio.h>
#ifdef Have_UMF_ #ifdef Have_UMF_
#include "umfpack.h" #include "umfpack.h"
#undef Have_UMF_
#endif #endif
#ifdef LargeFptr #ifdef LargeFptr
@ -120,11 +119,11 @@ psb_zumf_factor_(int *n, int *nnz,
int i; int i;
umfpack_di_defaults(Control); umfpack_zi_defaults(Control);
for (i = 0; i <= *n; ++i) --colptr[i]; for (i = 0; i <= *n; ++i) --colptr[i];
for (i = 0; i < *nnz; ++i) --rowind[i]; for (i = 0; i < *nnz; ++i) --rowind[i];
*info = umfpack_di_symbolic (*n, *n, colptr, rowind, values, &Symbolic, *info = umfpack_zi_symbolic (*n, *n, colptr, rowind, values, NULL, &Symbolic,
Control, Info); Control, Info);
@ -136,7 +135,7 @@ psb_zumf_factor_(int *n, int *nnz,
*symptr = (fptr) Symbolic; *symptr = (fptr) Symbolic;
*info = umfpack_di_numeric (colptr, rowind, values, Symbolic, &Numeric, *info = umfpack_zi_numeric (colptr, rowind, values, NULL, Symbolic, &Numeric,
Control, Info) ; Control, Info) ;
@ -186,8 +185,8 @@ psb_zumf_solve_(int *itrans, int *n,
trans = UMFPACK_A; trans = UMFPACK_A;
} }
*info = umfpack_di_solve(trans,NULL,NULL,NULL, *info = umfpack_zi_solve(trans,NULL,NULL,NULL,NULL,
x,b,(void *) *numptr,Control,Info); x,NULL,b,NULL,(void *) *numptr,Control,Info);
#else #else
fprintf(stderr," UMF Not Configured, fix make.inc and recompile\n"); fprintf(stderr," UMF Not Configured, fix make.inc and recompile\n");
@ -215,8 +214,8 @@ psb_zumf_free_(
Symbolic = (void *) *symptr; Symbolic = (void *) *symptr;
Numeric = (void *) *numptr; Numeric = (void *) *numptr;
umfpack_di_free_numeric(&Numeric); umfpack_zi_free_numeric(&Numeric);
umfpack_di_free_symbolic(&Symbolic); umfpack_zi_free_symbolic(&Symbolic);
*info=0; *info=0;
#else #else
fprintf(stderr," UMF Not Configured, fix make.inc and recompile\n"); fprintf(stderr," UMF Not Configured, fix make.inc and recompile\n");

@ -67,7 +67,7 @@ subroutine psb_zcsdp(a, b,info,ifc,check,trans,unitd,upd,dupl)
& ipc, i, count, err_act, ierrv(5), i1, i2, ia & ipc, i, count, err_act, ierrv(5), i1, i2, ia
character :: check_,trans_,unitd_, up character :: check_,trans_,unitd_, up
Integer, Parameter :: maxtry=8 Integer, Parameter :: maxtry=8
logical, parameter :: debug=.true. logical, parameter :: debug=.false.
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
interface psb_cest interface psb_cest

Loading…
Cancel
Save