Fix krylov -> linsolve in CBIND

maint-3.9.0
sfilippone 5 months ago
parent 339efde796
commit 5885caaab9

@ -26,11 +26,11 @@ set(PSB_cbind_source_files
util/psb_util_cbind_mod.f90
util/psb_d_util_cbind_mod.f90
util/psb_z_util_cbind_mod.f90
krylov/psb_ckrylov_cbind_mod.f90
krylov/psb_base_krylov_cbind_mod.f90
krylov/psb_skrylov_cbind_mod.f90
krylov/psb_dkrylov_cbind_mod.f90
krylov/psb_zkrylov_cbind_mod.f90
linsolve/psb_clinsolve_cbind_mod.f90
linsolve/psb_base_linsolve_cbind_mod.f90
linsolve/psb_slinsolve_cbind_mod.f90
linsolve/psb_dlinsolve_cbind_mod.f90
linsolve/psb_zlinsolve_cbind_mod.f90
prec/psb_dprec_cbind_mod.f90
prec/psb_cprec_cbind_mod.f90
prec/psb_prec_cbind_mod.f90
@ -75,7 +75,7 @@ list(APPEND PSB_cbind_header_C_files
util/psb_c_sutil.h
util/psb_c_cutil.h
util/psb_util_cbind.h
krylov/psb_krylov_cbind.h
linsolve/psb_linsolve_cbind.h
prec/psb_c_sprec.h
prec/psb_c_cprec.h
prec/psb_prec_cbind.h

@ -6,13 +6,13 @@ INCDIR=../include
MODDIR=../modules/
LIBNAME=$(CBINDLIBNAME)
objs: based precd krylovd utild
objs: based precd linsolved utild
/bin/cp -p $(CPUPDFLAG) *.h $(INCDIR)
/bin/cp -p $(CPUPDFLAG) *$(.mod) $(MODDIR)
lib: objs
cd base && $(MAKE) lib LIBNAME=$(LIBNAME)
cd prec && $(MAKE) lib LIBNAME=$(LIBNAME)
cd krylov && $(MAKE) lib LIBNAME=$(LIBNAME)
cd linsolve && $(MAKE) lib LIBNAME=$(LIBNAME)
cd util && $(MAKE) lib LIBNAME=$(LIBNAME)
/bin/cp -p $(CPUPDFLAG) $(HERE)/$(LIBNAME) $(LIBDIR)
@ -21,15 +21,15 @@ based:
cd base && $(MAKE) objs LIBNAME=$(LIBNAME)
precd: based
cd prec && $(MAKE) objs LIBNAME=$(LIBNAME)
krylovd: based precd
cd krylov && $(MAKE) objs LIBNAME=$(LIBNAME)
linsolved: based precd
cd linsolve && $(MAKE) objs LIBNAME=$(LIBNAME)
utild: based
cd util && $(MAKE) objs LIBNAME=$(LIBNAME)
clean:
cd base && $(MAKE) clean
cd prec && $(MAKE) clean
cd krylov && $(MAKE) clean
cd linsolve && $(MAKE) clean
cd util && $(MAKE) clean
veryclean: clean

@ -8,12 +8,12 @@ HERE=..
FINCLUDES=$(FMFLAG). $(FMFLAG)$(HERE) $(FMFLAG)$(MODDIR)
CINCLUDES=-I. -I$(HERE) -I$(INCLUDEDIR)
OBJS=psb_base_krylov_cbind_mod.o \
psb_skrylov_cbind_mod.o psb_dkrylov_cbind_mod.o psb_ckrylov_cbind_mod.o psb_zkrylov_cbind_mod.o
CMOD=psb_krylov_cbind.h
OBJS=psb_base_linsolve_cbind_mod.o \
psb_slinsolve_cbind_mod.o psb_dlinsolve_cbind_mod.o psb_clinsolve_cbind_mod.o psb_zlinsolve_cbind_mod.o
CMOD=psb_linsolve_cbind.h
LIBNAME=$(CKRYLOVLIBNAME)
LIBNAME=$(CLINSOLVELIBNAME)
objs: $(OBJS) $(CMOD)
@ -23,7 +23,7 @@ lib: objs
$(RANLIB) $(HERE)/$(LIBNAME)
/bin/cp -p $(HERE)/$(LIBNAME) $(LIBDIR)
psb_skrylov_cbind_mod.o psb_dkrylov_cbind_mod.o psb_ckrylov_cbind_mod.o psb_zkrylov_cbind_mod.o: psb_base_krylov_cbind_mod.o
psb_slinsolve_cbind_mod.o psb_dlinsolve_cbind_mod.o psb_clinsolve_cbind_mod.o psb_zlinsolve_cbind_mod.o: psb_base_linsolve_cbind_mod.o
veryclean: clean
/bin/rm -f $(HERE)/$(LIBNAME)

@ -1,4 +1,4 @@
module psb_base_krylov_cbind_mod
module psb_base_linsolve_cbind_mod
use iso_c_binding
use psb_objhandle_mod
@ -26,4 +26,4 @@ contains
end function psb_c_DefaultSolverOptions
end module psb_base_krylov_cbind_mod
end module psb_base_linsolve_cbind_mod

@ -1,6 +1,6 @@
module psb_ckrylov_cbind_mod
module psb_clinsolve_cbind_mod
use psb_base_krylov_cbind_mod
use psb_base_linsolve_cbind_mod
contains
@ -102,4 +102,97 @@ contains
end function psb_c_ckrylov_opt
end module psb_ckrylov_cbind_mod
function psb_c_crichardson(ah,ph,bh,xh,cdh,options) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
implicit none
integer(psb_c_ipk_) :: res
type(psb_c_cspmat) :: ah
type(psb_c_descriptor) :: cdh
type(psb_c_cprec) :: ph
type(psb_c_cvector) :: bh,xh
type(solveroptions) :: options
res= psb_c_crichardson_opt(ah, ph, bh, xh, options%eps,cdh, &
& itmax=options%itmax, iter=options%iter,&
& itrace=options%itrace, istop=options%istop,&
& irst=options%irst, err=options%err)
end function psb_c_crichardson
function psb_c_crichardson_opt(ah,ph,bh,xh,eps,cdh,&
& itmax,iter,err,itrace,irst,istop) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
implicit none
integer(psb_c_ipk_) :: res
type(psb_c_cspmat) :: ah
type(psb_c_descriptor) :: cdh
type(psb_c_cprec) :: ph
type(psb_c_cvector) :: bh,xh
integer(psb_c_ipk_), value :: itmax,itrace,irst,istop
real(c_double), value :: eps
integer(psb_c_ipk_) :: iter
real(c_double) :: err
type(psb_desc_type), pointer :: descp
type(psb_cspmat_type), pointer :: ap
type(psb_cprec_type), pointer :: precp
type(psb_c_vect_type), pointer :: xp, bp
integer(psb_c_ipk_) :: info,fitmax,fitrace,first,fistop,fiter
character(len=20) :: fmethd
real(psb_spk_) :: feps,ferr
res = -1
if (c_associated(cdh%item)) then
call c_f_pointer(cdh%item,descp)
else
return
end if
if (c_associated(xh%item)) then
call c_f_pointer(xh%item,xp)
else
return
end if
if (c_associated(bh%item)) then
call c_f_pointer(bh%item,bp)
else
return
end if
if (c_associated(ah%item)) then
call c_f_pointer(ah%item,ap)
else
return
end if
if (c_associated(ph%item)) then
call c_f_pointer(ph%item,precp)
else
return
end if
feps = eps
fitmax = itmax
fitrace = itrace
first = irst
fistop = istop
call psb_crichardson_vect(ap, precp, bp, xp, feps, &
& descp, info,&
& itmax=fitmax,iter=fiter,itrace=fitrace,istop=fistop,&
& err=ferr)
iter = fiter
err = ferr
res = info
end function psb_c_crichardson_opt
end module psb_clinsolve_cbind_mod

@ -1,6 +1,6 @@
module psb_dkrylov_cbind_mod
module psb_dlinsolve_cbind_mod
use psb_base_krylov_cbind_mod
use psb_base_linsolve_cbind_mod
contains
@ -102,4 +102,97 @@ contains
end function psb_c_dkrylov_opt
end module psb_dkrylov_cbind_mod
function psb_c_drichardson(ah,ph,bh,xh,cdh,options) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
implicit none
integer(psb_c_ipk_) :: res
type(psb_c_dspmat) :: ah
type(psb_c_descriptor) :: cdh
type(psb_c_dprec) :: ph
type(psb_c_dvector) :: bh,xh
type(solveroptions) :: options
res= psb_c_drichardson_opt(ah, ph, bh, xh, options%eps,cdh, &
& itmax=options%itmax, iter=options%iter,&
& itrace=options%itrace, istop=options%istop,&
& irst=options%irst, err=options%err)
end function psb_c_drichardson
function psb_c_drichardson_opt(ah,ph,bh,xh,eps,cdh,&
& itmax,iter,err,itrace,irst,istop) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
implicit none
integer(psb_c_ipk_) :: res
type(psb_c_dspmat) :: ah
type(psb_c_descriptor) :: cdh
type(psb_c_dprec) :: ph
type(psb_c_dvector) :: bh,xh
integer(psb_c_ipk_), value :: itmax,itrace,irst,istop
real(c_double), value :: eps
integer(psb_c_ipk_) :: iter
real(c_double) :: err
type(psb_desc_type), pointer :: descp
type(psb_dspmat_type), pointer :: ap
type(psb_dprec_type), pointer :: precp
type(psb_d_vect_type), pointer :: xp, bp
integer(psb_c_ipk_) :: info,fitmax,fitrace,first,fistop,fiter
character(len=20) :: fmethd
real(psb_dpk_) :: feps,ferr
res = -1
if (c_associated(cdh%item)) then
call c_f_pointer(cdh%item,descp)
else
return
end if
if (c_associated(xh%item)) then
call c_f_pointer(xh%item,xp)
else
return
end if
if (c_associated(bh%item)) then
call c_f_pointer(bh%item,bp)
else
return
end if
if (c_associated(ah%item)) then
call c_f_pointer(ah%item,ap)
else
return
end if
if (c_associated(ph%item)) then
call c_f_pointer(ph%item,precp)
else
return
end if
feps = eps
fitmax = itmax
fitrace = itrace
first = irst
fistop = istop
call psb_drichardson_vect(ap, precp, bp, xp, feps, &
& descp, info,&
& itmax=fitmax,iter=fiter,itrace=fitrace,istop=fistop,&
& err=ferr)
iter = fiter
err = ferr
res = info
end function psb_c_drichardson_opt
end module psb_dlinsolve_cbind_mod

@ -1,5 +1,5 @@
#ifndef PSB_KRYL_CBIND_
#define PSB_KRYL_CBIND_
#ifndef PSB_LINSLV_CBIND_
#define PSB_LINSLV_CBIND_
#include "psb_base_cbind.h"
#include "psb_prec_cbind.h"
@ -42,6 +42,24 @@ int psb_c_zkrylov(const char *method, psb_c_zspmat *ah, psb_c_zprec *ph,
psb_c_zvector *bh, psb_c_zvector *xh,
psb_c_descriptor *cdh, psb_c_SolverOptions *opt);
int psb_c_srichardson(psb_c_sspmat *ah, psb_c_sprec *ph,
psb_c_svector *bh, psb_c_svector *xh,
psb_c_descriptor *cdh, psb_c_SolverOptions *opt);
int psb_c_drichardson(psb_c_dspmat *ah, psb_c_dprec *ph,
psb_c_dvector *bh, psb_c_dvector *xh,
psb_c_descriptor *cdh, psb_c_SolverOptions *opt);
int psb_c_crichardson(psb_c_cspmat *ah, psb_c_cprec *ph,
psb_c_cvector *bh, psb_c_cvector *xh,
psb_c_descriptor *cdh, psb_c_SolverOptions *opt);
int psb_c_zrichardson(psb_c_zspmat *ah, psb_c_zprec *ph,
psb_c_zvector *bh, psb_c_zvector *xh,
psb_c_descriptor *cdh, psb_c_SolverOptions *opt);
#define PSB_VALID_KRYLOV_METHODS_STRINGS "CG","CGS","BICG","BICGSTAB","RGMRES","BICGSTABL","FCG","GCR"
#define PSB_VALID_KRYLOV_METHODS_STRING "CG CGS BICG BICGSTAB RGMRES BICGSTABL FCG GCR"

@ -1,6 +1,6 @@
module psb_skrylov_cbind_mod
module psb_slinsolve_cbind_mod
use psb_base_krylov_cbind_mod
use psb_base_linsolve_cbind_mod
contains
@ -102,4 +102,97 @@ contains
end function psb_c_skrylov_opt
end module psb_skrylov_cbind_mod
function psb_c_srichardson(ah,ph,bh,xh,cdh,options) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
implicit none
integer(psb_c_ipk_) :: res
type(psb_c_sspmat) :: ah
type(psb_c_descriptor) :: cdh
type(psb_c_sprec) :: ph
type(psb_c_svector) :: bh,xh
type(solveroptions) :: options
res= psb_c_srichardson_opt(ah, ph, bh, xh, options%eps,cdh, &
& itmax=options%itmax, iter=options%iter,&
& itrace=options%itrace, istop=options%istop,&
& irst=options%irst, err=options%err)
end function psb_c_srichardson
function psb_c_srichardson_opt(ah,ph,bh,xh,eps,cdh,&
& itmax,iter,err,itrace,irst,istop) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
implicit none
integer(psb_c_ipk_) :: res
type(psb_c_sspmat) :: ah
type(psb_c_descriptor) :: cdh
type(psb_c_sprec) :: ph
type(psb_c_svector) :: bh,xh
integer(psb_c_ipk_), value :: itmax,itrace,irst,istop
real(c_double), value :: eps
integer(psb_c_ipk_) :: iter
real(c_double) :: err
type(psb_desc_type), pointer :: descp
type(psb_sspmat_type), pointer :: ap
type(psb_sprec_type), pointer :: precp
type(psb_s_vect_type), pointer :: xp, bp
integer(psb_c_ipk_) :: info,fitmax,fitrace,first,fistop,fiter
character(len=20) :: fmethd
real(psb_spk_) :: feps,ferr
res = -1
if (c_associated(cdh%item)) then
call c_f_pointer(cdh%item,descp)
else
return
end if
if (c_associated(xh%item)) then
call c_f_pointer(xh%item,xp)
else
return
end if
if (c_associated(bh%item)) then
call c_f_pointer(bh%item,bp)
else
return
end if
if (c_associated(ah%item)) then
call c_f_pointer(ah%item,ap)
else
return
end if
if (c_associated(ph%item)) then
call c_f_pointer(ph%item,precp)
else
return
end if
feps = eps
fitmax = itmax
fitrace = itrace
first = irst
fistop = istop
call psb_srichardson_vect(ap, precp, bp, xp, feps, &
& descp, info,&
& itmax=fitmax,iter=fiter,itrace=fitrace,istop=fistop,&
& err=ferr)
iter = fiter
err = ferr
res = info
end function psb_c_srichardson_opt
end module psb_slinsolve_cbind_mod

@ -1,6 +1,6 @@
module psb_zkrylov_cbind_mod
module psb_zlinsolve_cbind_mod
use psb_base_krylov_cbind_mod
use psb_base_linsolve_cbind_mod
contains
@ -102,4 +102,97 @@ contains
end function psb_c_zkrylov_opt
end module psb_zkrylov_cbind_mod
function psb_c_zrichardson(ah,ph,bh,xh,cdh,options) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
implicit none
integer(psb_c_ipk_) :: res
type(psb_c_zspmat) :: ah
type(psb_c_descriptor) :: cdh
type(psb_c_zprec) :: ph
type(psb_c_zvector) :: bh,xh
type(solveroptions) :: options
res= psb_c_zrichardson_opt(ah, ph, bh, xh, options%eps,cdh, &
& itmax=options%itmax, iter=options%iter,&
& itrace=options%itrace, istop=options%istop,&
& irst=options%irst, err=options%err)
end function psb_c_zrichardson
function psb_c_zrichardson_opt(ah,ph,bh,xh,eps,cdh,&
& itmax,iter,err,itrace,irst,istop) bind(c) result(res)
use psb_base_mod
use psb_prec_mod
use psb_linsolve_mod
use psb_objhandle_mod
use psb_prec_cbind_mod
use psb_base_string_cbind_mod
implicit none
integer(psb_c_ipk_) :: res
type(psb_c_zspmat) :: ah
type(psb_c_descriptor) :: cdh
type(psb_c_zprec) :: ph
type(psb_c_zvector) :: bh,xh
integer(psb_c_ipk_), value :: itmax,itrace,irst,istop
real(c_double), value :: eps
integer(psb_c_ipk_) :: iter
real(c_double) :: err
type(psb_desc_type), pointer :: descp
type(psb_zspmat_type), pointer :: ap
type(psb_zprec_type), pointer :: precp
type(psb_z_vect_type), pointer :: xp, bp
integer(psb_c_ipk_) :: info,fitmax,fitrace,first,fistop,fiter
character(len=20) :: fmethd
real(psb_dpk_) :: feps,ferr
res = -1
if (c_associated(cdh%item)) then
call c_f_pointer(cdh%item,descp)
else
return
end if
if (c_associated(xh%item)) then
call c_f_pointer(xh%item,xp)
else
return
end if
if (c_associated(bh%item)) then
call c_f_pointer(bh%item,bp)
else
return
end if
if (c_associated(ah%item)) then
call c_f_pointer(ah%item,ap)
else
return
end if
if (c_associated(ph%item)) then
call c_f_pointer(ph%item,precp)
else
return
end if
feps = eps
fitmax = itmax
fitrace = itrace
first = irst
fistop = istop
call psb_zrichardson_vect(ap, precp, bp, xp, feps, &
& descp, info,&
& itmax=fitmax,iter=fiter,itrace=fitrace,istop=fistop,&
& err=ferr)
iter = fiter
err = ferr
res = info
end function psb_c_zrichardson_opt
end module psb_zlinsolve_cbind_mod

@ -74,7 +74,7 @@
#include "psb_base_cbind.h"
#include "psb_prec_cbind.h"
#include "psb_krylov_cbind.h"
#include "psb_linsolve_cbind.h"
#define LINEBUFSIZE 1024
#define NBMAX 20

Loading…
Cancel
Save