module psb_base_linsolve_cbind_mod use iso_c_binding use psb_objhandle_mod type, bind(c) :: solveroptions integer(psb_c_ipk_) :: iter, itmax, itrace, irst, istop real(c_double) :: eps, err type(psb_c_object_type) :: s1, s2 end type solveroptions contains function psb_c_DefaultSolverOptions(options)& & bind(c,name='psb_c_DefaultSolverOptions') result(res) implicit none type(solveroptions) :: options integer(psb_c_ipk_) :: res options%itmax = 1000 options%itrace = 0 options%istop = 2 options%irst = 10 options%eps = 1.d-6 options%s1 = psb_c_get_new_object() options%s2 = psb_c_get_new_object() res = 0 end function psb_c_DefaultSolverOptions function psb_c_PrintSolverOptions(options)& & bind(c,name='psb_c_PrintSolverOptions') result(res) implicit none type(solveroptions), value :: options integer(psb_c_ipk_) :: res write(0,*) 'PSBLAS C Interface Solver Options ' write(0,*) ' Maximum number of iterations :', options%itmax write(0,*) ' Tracing :', options%itrace write(0,*) ' Stopping Criterion :', options%istop write(0,*) ' Restart :', options%irst write(0,*) ' EPS (tolerance) :', options%eps write(0,*) ' S1 scaling :', c_associated(options%s1%item) write(0,*) ' S2 scaling :', c_associated(options%s2%item) res = 0 end function psb_c_PrintSolverOptions end module psb_base_linsolve_cbind_mod