diff --git a/cbind/test/pargen/mldec.c b/cbind/test/pargen/mldec.c index 4e4775e8..9a2c42c0 100644 --- a/cbind/test/pargen/mldec.c +++ b/cbind/test/pargen/mldec.c @@ -80,10 +80,6 @@ #include "mld_cbind.h" -#define LINEBUFSIZE 1024 -#define NBMAX 20 -#define DUMPMATRIX 0 - double a1(double x, double y, double z) { return(1.0/80.0); @@ -122,8 +118,11 @@ double g(double x, double y, double z) } else { return(0.0); } + } +#define NBMAX 20 + psb_i_t matgen(psb_i_t ictxt, psb_i_t nl, psb_i_t idim, psb_l_t vl[], psb_c_dspmat *ah,psb_c_descriptor *cdh, psb_c_dvector *xh, psb_c_dvector *bh, psb_c_dvector *rh) @@ -224,11 +223,38 @@ psb_i_t matgen(psb_i_t ictxt, psb_i_t nl, psb_i_t idim, psb_l_t vl[], return(info); } - + +#define LINEBUFSIZE 1024 +static char buffer[LINEBUFSIZE+1]; +int get_buffer(FILE *fp) +{ + while(!feof(fp)) { + fgets(buffer,LINEBUFSIZE,fp); + if (buffer[0]!='%') break; + } +} +void get_iparm(FILE *fp, int *val) +{ + get_buffer(fp); + sscanf(buffer,"%d ",val); +} +void get_dparm(FILE *fp, double *val) +{ + get_buffer(fp); + sscanf(buffer,"%lf ",val); +} +void get_hparm(FILE *fp, char *val) +{ + get_buffer(fp); + sscanf(buffer,"%s ",val); +} + +#define DUMPMATRIX 0 + int main(int argc, char *argv[]) { psb_i_t ictxt, iam, np; - char methd[40], ptype[20], afmt[8], buffer[LINEBUFSIZE+1]; + char methd[40], ptype[40], afmt[8]; psb_i_t nparms; psb_i_t idim,info,istop,itmax,itrace,irst,iter,ret; mld_c_dprec *ph; @@ -250,24 +276,15 @@ int main(int argc, char *argv[]) fflush(stdout); psb_c_barrier(ictxt); if (iam == 0) { - fgets(buffer,LINEBUFSIZE,stdin); - sscanf(buffer,"%d ",&nparms); - fgets(buffer,LINEBUFSIZE,stdin); - sscanf(buffer,"%s",methd); - fgets(buffer,LINEBUFSIZE,stdin); - sscanf(buffer,"%s",ptype); - fgets(buffer,LINEBUFSIZE,stdin); - sscanf(buffer,"%s",afmt); - fgets(buffer,LINEBUFSIZE,stdin); - sscanf(buffer,"%d",&idim); - fgets(buffer,LINEBUFSIZE,stdin); - sscanf(buffer,"%d",&istop); - fgets(buffer,LINEBUFSIZE,stdin); - sscanf(buffer,"%d",&itmax); - fgets(buffer,LINEBUFSIZE,stdin); - sscanf(buffer,"%d",&itrace); - fgets(buffer,LINEBUFSIZE,stdin); - sscanf(buffer,"%d",&irst); + get_iparm(stdin,&nparms); + get_hparm(stdin,methd); + get_hparm(stdin,ptype); + get_hparm(stdin,afmt); + get_iparm(stdin,&idim); + get_iparm(stdin,&istop); + get_iparm(stdin,&itmax); + get_iparm(stdin,&itrace); + get_iparm(stdin,&irst); } /* Now broadcast the values, and check they're OK */ psb_c_ibcast(ictxt,1,&nparms,0); @@ -326,13 +343,13 @@ int main(int argc, char *argv[]) } psb_c_barrier(ictxt); /* Set up the preconditioner */ - ph = mld_c_new_dprec(); + ph = mld_c_dprec_new(); mld_c_dprecinit(ictxt,ph,ptype); mld_c_dprecseti(ph,"SMOOTHER_SWEEPS",2); mld_c_dprecseti(ph,"SUB_FILLIN",1); mld_c_dprecsetc(ph,"COARSE_SOLVE","BJAC"); mld_c_dprecsetc(ph,"COARSE_SUBSOLVE","ILU"); - mld_c_dprecseti(ph,"COARSE_FILLIN",1); + mld_c_dprecseti(ph,"COARSE_FILLIN",0); if ((ret=mld_c_dhierarchy_build(ah,cdh,ph))!=0) fprintf(stderr,"From hierarchy_build: %d\n",ret); if ((ret=mld_c_dsmoothers_build(ah,cdh,ph))!=0)