52 struct c_solver solver;
53 Clock t0, t3, refine_clk;
59 float eps, normb, normr;
60 float berr, last_berr;
64 memset( &solver, 0,
sizeof(
struct c_solver) );
67 if ( !(pastix_data->
steps & STEP_NUMFACT) ) {
68 fprintf(stderr,
"pastix_task_refine: Simple refinement cannot be applied without preconditionner\n" );
72 n = pastix_data->
bcsc->n;
78 fprintf(stdout, OUT_ITERREFINE_PIVOT);
83 clockInit(refine_clk);
84 clockStart(refine_clk);
86 normb = solver.norm( pastix_data, n, b );
101 solver.copy( pastix_data, n, b, r );
110 normr = solver.norm( pastix_data, n, r );
111 berr = normr / normb;
115 last_berr = 3 * berr;
120 ( pastix_data->
procnum == 0 ) ) {
121 solver.output_oneiter( t0, t3, berr, iter );
126 if ( (iter < itermax) &&
128 (berr <= (last_berr / 2.)) )
133 solver.copy( pastix_data, n, r, dx );
134 solver.spsv( pastix_data, dx, sb );
137 solver.axpy( pastix_data, n, 1.0, dx, x );
148 clockStop(refine_clk);
150 solver.output_final( pastix_data, berr, iter, refine_clk, x, x );