Exemplo n.º 1
0
cont_integ()
{
  double tetemp;
  double *x;
  double dif;
  if(INFLAG==0||FFT!=0||HIST!=0)return;
  tetemp=TEND;
  wipe_rep();
  data_back();
  if(new_float("Continue until:",&tetemp)==-1)return;
  x=&MyData[0];
  tetemp=fabs(tetemp);
  if(fabs(MyTime)>=tetemp)return;
  dif=tetemp-fabs(MyTime);
  /* TEND=tetemp; */
  MyStart=1;  /*  I know it is wasteful to restart, but lets be safe.... */
  integrate(&MyTime,x,dif,DELTA_T,1,NJMP,&MyStart);
  ping();
  refresh_browser(storind);
}
Exemplo n.º 2
0
void find_bvp_com(int com) {
  int ishow = 0, iret;
  int iper = 0, ivar = 0, ipar = 0, pflag;
  double sect = 0.0;
  double oldpar;
  double ystart[MAXODE], oldtrans;
  double yend[MAXODE];
  /*  Window temp=main_win; */
  if (NMarkov > 0 || NKernel > 0) {
    err_msg("Can't do BVP with integral or markov eqns");
    return;
  }
  wipe_rep();
  data_back();
  compile_bvp();
  if (FFT || HIST || DelayFlag || BVP_FLAG == 0)
    return;
  STORFLAG = 0;
  RANGE_FLAG = 1;
  POIMAP = 0;
  oldtrans = TRANS;
  TRANS = 0.0;
  get_ic(1, ystart);
  switch (com) {
  case 0:
    do_sh_range(ystart, yend);
    return;
  case 4:
    set_up_homoclinic();
    return;
  case 3:
    if (NUPAR == 0)
      goto bye;
    pflag = set_up_periodic(&ipar, &ivar, &sect, &ishow);
    if (pflag == 0)
      goto bye;
    iper = 1;
    get_val(upar_names[ipar], &oldpar);
    break;

  case 2:
    ishow = 1;
    iper = 0;
    break;
  case 1:
  default:
    iper = 0;
    break;
  }
  if (iper)
    bvshoot(ystart, yend, BVP_TOL, BVP_EPS, BVP_MAXIT, &iret, NODE, ishow, iper,
            ipar, ivar, sect);
  else
    bvshoot(ystart, yend, BVP_TOL, BVP_EPS, BVP_MAXIT, &iret, NODE, ishow, 0, 0,
            0, 0.0);
  bad_shoot(iret);
  if (iret == GOODSHOT || iret == NOCHANGE) {
    get_ic(0, ystart);
    redraw_ics();
    if (ishow) {
      reset_graphics();
    }
    last_shot(1);
    INFLAG = 1;
    set_browser_data(storage, storind, NEQ + 1);
    auto_freeze_it();
    ping();
  } else if (iper)
    set_val(upar_names[ipar], oldpar);

bye:
  TRANS = oldtrans;
}