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); }
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, §, &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; }