示例#1
0
文件: pp_shoot.c 项目: tommie/xppaut
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);
}
示例#2
0
文件: pp_shoot.c 项目: tommie/xppaut
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;
}
示例#3
0
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);
}
示例#4
0
文件: pp_shoot.c 项目: tommie/xppaut
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);
}
示例#5
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);
 }
}
示例#6
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);
}
示例#7
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);
  }
  
}