home *** CD-ROM | disk | FTP | other *** search
- /*
- ### compute 1-d manifolds of saddles ###
- */
-
- /* fp_display_option: 0: manifolds of a single saddle */
- /* fp_display_option: 1: all copies of manifolds of a saddle*/
-
- #include "../modellib/class_kaos_def.h"
- fp_manifold()
- {
- int i,j,k,n,fp_type,t_period;
- double **t_eval,**t_evec,*t_x,*dvector(),**dmatrix();
- extern int n_stored_data1,segment_count1,n_stored_data_segment1[];
- extern int stop,var_dim,region_index,lock_count,model;
- extern int n_stored_fp, fp_display_option,ms,mu,msf,muf,iskip,mapping_on;
- extern double gp_delm;
- extern char string[];
- extern int *fp_period;
- extern double **fp_x,***fp_eval,***fp_evec,*fp_xerr;
-
-
- stop=0;
- n=var_dim;
-
- t_x = dvector(0,n-1);
- t_eval = dmatrix(0,n-1,0,1);
- t_evec = dmatrix(0,n-1,0,n-1);
- region_index = 1;
- lock_count=0;
- lock();
-
- segment_count1++;
- sprintf(string,"Computing manifold...");
- printf("%s\n",string);
- system_mess_proc(0,string);
-
- for(i=0;i<n_stored_fp;i++){
- /* compute only manifolds of saddles */
- t_period = fp_period[i];
- for(j=0;j<n;j++){
- t_x[j] = fp_x[j][i];
- for(k=0;k<2;k++)t_eval[j][k] = fp_eval[j][k][i];
- for(k=0;k<n;k++)t_evec[j][k] = fp_evec[j][k][i];
- }
- fp_get_type(&fp_type,t_eval,n);
- if(fp_type ==0){
- if(mapping_on){
- (void) trkman_map(t_evec,t_eval,t_x,t_period,ms,mu,msf,muf,iskip,gp_delm,n);
- }
- else if(t_period==0){
- (void) trkman_ode(t_evec,t_eval,t_x,t_period,ms,mu,msf,muf,iskip,gp_delm,n);
- }
- else {
- system_mess_proc(1,"The 1-d manifold of periodic orbits for a vector field is not implemented.");
- }
-
- }
- if(stop)
- goto done;
- }
- done:
- system_mess_proc(0,"Done!");
- unlock();
- n_stored_data_segment1[segment_count1] = n_stored_data1;
- printf("SegCnt1=%d,NData=%d\n",segment_count1,n_stored_data1);
-
- (void) free_dvector(t_x,0,n-1);
- (void) free_dmatrix(t_eval,0,n-1,0,1);
- (void) free_dmatrix(t_evec,0,n-1,0,n-1);
- }
-