int set_up_periodic(int *ipar, int *ivar, double *sect, int *ishow) { static char *n[] = {"Freq. Par.", "*1Sect. Var", "Section", "Show(Y/N)"}; char values[4][MAX_LEN_SBOX]; int status, i; static char *yn[] = {"N", "Y"}; sprintf(values[0], "%s", upar_names[*ipar]); sprintf(values[1], "%s", uvar_names[*ivar]); sprintf(values[2], "%g", *sect); sprintf(values[3], "%s", yn[*ishow]); status = do_string_box(4, 4, 1, "Periodic BCs", n, values, 45); if (status != 0) { i = find_user_name(PARAMBOX, values[0]); if (i > -1) *ipar = i; else { err_msg("No such parameter"); return (0); } i = find_user_name(ICBOX, values[1]); if (i > -1) *ivar = i; else { err_msg("No such variable"); return (0); } *sect = atof(values[2]); if (values[3][0] == 'Y' || values[3][0] == 'y') *ishow = 1; else *ishow = 0; return (1); } return (0); }
int set_up_homoclinic(void) { static char *n[] = {"*1Left Eq.", "*1Right Eq.", "NUnstable", "NStable"}; char values[4][MAX_LEN_SBOX]; int status, i; sprintf(values[0], "%s", uvar_names[my_hom.eleft]); sprintf(values[1], "%s", uvar_names[my_hom.eright]); sprintf(values[2], "%d", my_hom.nunstab); sprintf(values[3], "%d", my_hom.nstab); status = do_string_box(4, 4, 1, "Homoclinic info", n, values, 45); HOMOCLINIC_FLAG = 0; if (status != 0) { i = find_user_name(ICBOX, values[0]); if (i > -1) my_hom.eleft = i; else { err_msg("No such variable"); return 0; } i = find_user_name(ICBOX, values[1]); if (i > -1) my_hom.eright = i; else { err_msg("No such variable"); return 0; } my_hom.nunstab = atoi(values[2]); my_hom.nstab = atoi(values[3]); my_hom.n = my_hom.nstab + my_hom.nunstab; Homo_n = my_hom.n; HOMOCLINIC_FLAG = 1; for (i = 0; i < 4; i++) my_hom.iflag[i] = 0; } return 1; }
set_up_range() { static char *n[]={"Range over","Steps","Start","End", "Reset storage (Y/N)", "Use old ic's (Y/N)","Cycle color (Y/N)","Movie(Y/N)"}; char values[8][MAX_LEN_SBOX]; int status,i; static char *yn[]={"N","Y"}; if(!Xup){ return(range_item()); } sprintf(values[0],"%s",range.item); sprintf(values[1],"%d",range.steps); sprintf(values[2],"%g",range.plow); sprintf(values[3],"%g",range.phigh); sprintf(values[4],"%s",yn[range.reset]); sprintf(values[5],"%s",yn[range.oldic]); sprintf(values[6],"%s",yn[range.cycle]); sprintf(values[7],"%s",yn[range.movie]); status=do_string_box(8,8,1,"Range Integrate",n,values,45); if(status!=0){ strcpy(range.item,values[0]); /* i=find_user_name(PARAM,range.item); if(i>-1){ range.type=PARAM; range.index=i; } else { i=find_user_name(IC,range.item); if(i<=-1){ err_msg("No such name!"); return(0); } range.type=IC; range.index=i; } */ if(range_item()==0)return 0; range.steps=atoi(values[1]); if(range.steps<=0)range.steps=10; range.plow=atof(values[2]); range.phigh=atof(values[3]); if(values[4][0]=='Y'||values[4][0]=='y')range.reset=1; else range.reset=0; if(values[5][0]=='Y'||values[5][0]=='y')range.oldic=1; else range.oldic=0; if(values[6][0]=='Y'||values[6][0]=='y')range.cycle=1; else range.cycle=0; if(values[7][0]=='Y'||values[7][0]=='y')range.movie=1; else range.movie=0; /* printf("%s %d %d %d (%d %d) %f %f ", range.item, range.steps, range.reset,range.oldic,range.type,range.index, range.plow,range.phigh);*/ RANGE_FLAG=1; return(1); } return(0); }
int set_up_sh_range(void) { static char *n[] = {"*2Range over", "Steps", "Start", "End", "Cycle color(Y/N)", "Side(0/1)", "Movie(Y/N)"}; char values[7][MAX_LEN_SBOX]; int status, i; static char *yn[] = {"N", "Y"}; sprintf(values[0], "%s", shoot_range.item); sprintf(values[1], "%d", shoot_range.steps); sprintf(values[2], "%g", shoot_range.plow); sprintf(values[3], "%g", shoot_range.phigh); sprintf(values[4], "%s", yn[shoot_range.cycle]); sprintf(values[5], "%d", shoot_range.side); sprintf(values[6], "%s", yn[shoot_range.movie]); status = do_string_box(7, 7, 1, "Range Shoot", n, values, 45); if (status != 0) { strcpy(shoot_range.item, values[0]); i = find_user_name(PARAMBOX, shoot_range.item); if (i < 0) { err_msg("No such parameter"); return (0); } shoot_range.steps = atoi(values[1]); if (shoot_range.steps <= 0) shoot_range.steps = 10; shoot_range.plow = atof(values[2]); shoot_range.phigh = atof(values[3]); if (values[4][0] == 'Y' || values[4][0] == 'y') shoot_range.cycle = 1; else shoot_range.cycle = 0; if (values[6][0] == 'Y' || values[6][0] == 'y') shoot_range.movie = 1; else shoot_range.movie = 0; shoot_range.side = atoi(values[5]); return (1); } return (0); }
void set_up_aplot_range() { static char *n[]={"Basename","Still(1/0)","Tag(0/1)"}; char values[3][MAX_LEN_SBOX]; int status; double *x; sprintf(values[0],"%s",aplot_range_stem); sprintf(values[1],"%d",aplot_still); sprintf(values[2],"%d",aplot_tag); status=do_string_box(3,3,1,"Array range saving",n,values,28); if(status!=0){ sprintf(aplot_range_stem,"%s",values[0]); aplot_still=atoi(values[1]); aplot_tag=atoi(values[2]); aplot_range=1; aplot_range_count=0; x=&MyData[0]; do_range(x,0); } }
set_up_eq_range() { static char *n[]={"Range over","Steps","Start","End", "Shoot (Y/N)", "Stability col","Movie (Y/N)"}; char values[7][MAX_LEN_SBOX]; int status,i; static char *yn[]={"N","Y"}; sprintf(values[0],"%s",eq_range.item); sprintf(values[1],"%d",eq_range.steps); sprintf(values[2],"%g",eq_range.plow); sprintf(values[3],"%g",eq_range.phigh); sprintf(values[4],"%s",yn[eq_range.shoot]); sprintf(values[5],"%d",eq_range.col); sprintf(values[6],"%s",yn[eq_range.movie]); status=do_string_box(7,7,1,"Range Equilibria",n,values,45); if(status!=0){ strcpy(eq_range.item,values[0]); i=find_user_name(PARAM,eq_range.item); if(i<0){ err_msg("No such parameter"); return(0); } eq_range.steps=atoi(values[1]); if(eq_range.steps<=0)eq_range.steps=10; eq_range.plow=atof(values[2]); eq_range.phigh=atof(values[3]); if(values[4][0]=='Y'||values[4][0]=='y')eq_range.shoot=1; else eq_range.shoot=0; if(values[6][0]=='Y'||values[6][0]=='y')eq_range.movie=1; else eq_range.movie=0; eq_range.col=atoi(values[5]); if(eq_range.col<=1||eq_range.col>(NEQ+1))eq_range.col=-1; return(1); } return(0); }
void do_range_clines() { static char *n[]={"*2Range parameter","Steps","Low","High"}; char values[4][MAX_LEN_SBOX]; int status,i; double z,dz,zold; float xmin,xmax,y_tp,y_bot; int col1=XNullColor,col2=YNullColor; int course=NMESH; /* if(PaperWhite){ col1=1; col2=9; } */ sprintf(values[0],"%s",ncrange.rv); sprintf(values[1],"%d",ncrange.nstep); sprintf(values[2],"%g",ncrange.xlo); sprintf(values[3],"%g",ncrange.xhi); status=do_string_box(4,4,1,"Range Clines",n,values,45); if(status!=0){ strcpy(ncrange.rv,values[0]); ncrange.nstep=atoi(values[1]); ncrange.xlo=atof(values[2]); ncrange.xhi=atof(values[3]); if(ncrange.nstep<=0)return; dz=(ncrange.xhi-ncrange.xlo)/(double)ncrange.nstep; if(dz<=0.0)return; get_val(ncrange.rv,&zold); for(i=NODE;i<NODE+NMarkov;i++)set_ivar(i+1+FIX_VAR,last_ic[i]); xmin=(float)MyGraph->xmin; xmax=(float)MyGraph->xmax; y_tp=(float)MyGraph->ymax; y_bot=(float)MyGraph->ymin; null_ix=MyGraph->xv[0]; null_iy=MyGraph->yv[0]; for(i=0;i<=ncrange.nstep;i++){ z=(double)i*dz+ncrange.xlo; set_val(ncrange.rv,z); if(NULL_HERE==0) { if((X_n=(float *)malloc(4*MAX_NULL*sizeof(float)))!=NULL && (Y_n=(float *)malloc(4*MAX_NULL*sizeof(float)))!=NULL) NULL_HERE=1; NTop=(float *)malloc((course+1)*sizeof(float)); NBot=(float *)malloc((course+1)*sizeof(float)); if(NTop==NULL||NBot==NULL)NULL_HERE=0; } else { free(NTop); free(NBot); NTop=(float *)malloc((course+1)*sizeof(float)); NBot=(float *)malloc((course+1)*sizeof(float)); if(NTop==NULL||NBot==NULL){NULL_HERE=0; return;} } WHICH_CRV=null_ix; set_linestyle(col1); new_nullcline(course,xmin,y_bot,xmax,y_tp,X_n,&num_x_n); WHICH_CRV=null_iy; set_linestyle(col2); new_nullcline(course,xmin,y_bot,xmax,y_tp,Y_n,&num_y_n); add_froz_cline(X_n,num_x_n,null_ix,Y_n,num_y_n,null_iy); } set_val(ncrange.rv,zold); } }