home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / fractal / kaos.lha / fixptlib / fp_manifold.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-29  |  1.9 KB  |  71 lines

  1. /*
  2. ### compute 1-d manifolds of saddles ###
  3. */
  4.  
  5. /* fp_display_option: 0: manifolds of a single saddle */
  6. /* fp_display_option: 1: all copies of manifolds of a saddle*/
  7.  
  8. #include "../modellib/class_kaos_def.h"
  9. fp_manifold()
  10. {
  11.         int i,j,k,n,fp_type,t_period;
  12.     double **t_eval,**t_evec,*t_x,*dvector(),**dmatrix();
  13.         extern int n_stored_data1,segment_count1,n_stored_data_segment1[];
  14.     extern int stop,var_dim,region_index,lock_count,model;
  15.         extern int n_stored_fp, fp_display_option,ms,mu,msf,muf,iskip,mapping_on;
  16.         extern double gp_delm;
  17.     extern char string[];
  18.     extern int *fp_period;
  19.     extern double **fp_x,***fp_eval,***fp_evec,*fp_xerr;
  20.         
  21.  
  22.     stop=0;
  23.     n=var_dim;
  24.  
  25.     t_x = dvector(0,n-1);
  26.     t_eval = dmatrix(0,n-1,0,1);
  27.     t_evec = dmatrix(0,n-1,0,n-1);
  28.         region_index = 1;
  29.         lock_count=0;
  30.     lock();
  31.  
  32.     segment_count1++;
  33.     sprintf(string,"Computing manifold...");
  34.     printf("%s\n",string);
  35.     system_mess_proc(0,string);
  36.  
  37.         for(i=0;i<n_stored_fp;i++){
  38.         /* compute only manifolds of saddles */
  39.         t_period = fp_period[i];
  40.         for(j=0;j<n;j++){
  41.             t_x[j] = fp_x[j][i];
  42.             for(k=0;k<2;k++)t_eval[j][k] = fp_eval[j][k][i];
  43.             for(k=0;k<n;k++)t_evec[j][k] = fp_evec[j][k][i];
  44.         }
  45.         fp_get_type(&fp_type,t_eval,n);
  46.                 if(fp_type ==0){
  47.             if(mapping_on){
  48.                     (void) trkman_map(t_evec,t_eval,t_x,t_period,ms,mu,msf,muf,iskip,gp_delm,n);
  49.             }
  50.             else if(t_period==0){
  51.                     (void) trkman_ode(t_evec,t_eval,t_x,t_period,ms,mu,msf,muf,iskip,gp_delm,n);
  52.             }
  53.             else {
  54.                 system_mess_proc(1,"The 1-d manifold of periodic orbits for a vector field is not implemented.");
  55.             }
  56.             
  57.                 }
  58.         if(stop)
  59.             goto done;
  60.         }
  61. done:
  62.     system_mess_proc(0,"Done!");
  63.     unlock();
  64.     n_stored_data_segment1[segment_count1] = n_stored_data1;
  65.     printf("SegCnt1=%d,NData=%d\n",segment_count1,n_stored_data1);
  66.  
  67.     (void) free_dvector(t_x,0,n-1);
  68.     (void) free_dmatrix(t_eval,0,n-1,0,1);
  69.     (void) free_dmatrix(t_evec,0,n-1,0,n-1);
  70. }
  71.