home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / fractal / kaos.lha / modellib / d4symmbrgen_def.c < prev    next >
Encoding:
Text File  |  1990-01-16  |  2.8 KB  |  128 lines

  1.  
  2. int d4symmbrgen_init()
  3. {
  4.     title_label = "D4 Symmetry Broken Oscillator - General";
  5.  
  6.     mapping_on = 0;
  7.     inverse_on = 1;
  8.     fderiv_on = 0;
  9.     enable_polar = 1;
  10.     enable_period = 0;
  11.     
  12.     var_dim = 4;
  13.     param_dim = 10;
  14.     func_dim = 2;
  15.     (void) malloc_init();
  16.  
  17.     var_label[0] = "x";
  18.     var_label[1] = "y";
  19.     var_label[2] = "z";
  20.     var_label[3] = "w";
  21.     var_polar_label[0] = "r";
  22.     var_polar_label[1] = "rp";
  23.     var_polar_label[2] = "theta";
  24.     var_polar_label[3] = "thetap";
  25.     param_label[0] = "damp";
  26.     param_label[1] = "force";
  27.     param_label[2] = "freq";
  28.     param_label[3] = "split";
  29.     param_label[4] = "mode1";
  30.     param_label[5] = "mode2";
  31.     param_label[6] = "cross";
  32.     param_label[7] = "mode1p";
  33.     param_label[8] = "mode2p";
  34.     param_label[9] = "crossp";
  35.     func_label[0] = "Energy";
  36.     func_label[1] = "AngMom";
  37.  
  38.     param[0] = 2;
  39.     param[1] = 0;
  40.     param[2] = 0;
  41.     param[3] = 0;
  42.     param[4] = 0;
  43.     param[5] = 0;
  44.     param[6] = 0;
  45.     param[7] = 0;
  46.     param[8] = 0;
  47.     param[9] = 0;
  48.  
  49.     var_i[0] = 0;
  50.     var_i[1] = 0;
  51.     var_i[2] = 0;
  52.     var_i[3] = 0;
  53.     var_polar_i[0] = 0;
  54.     var_polar_i[1] = 0;
  55.     var_polar_i[2] = 0;
  56.     var_polar_i[3] = 0;
  57.  
  58.     param_min[0]= -5; param_max[0]= 5;
  59.     param_min[1]= -5; param_max[1]= 5;
  60.     param_min[2]= -5; param_max[2]= 5;
  61.     param_min[3]= -5; param_max[3]= 5;
  62.     param_min[4]= -5; param_max[4]= 5;
  63.     param_min[5]= -5; param_max[5]= 5;
  64.     param_min[6]= -5; param_max[6]= 5;
  65.     param_min[7]= -5; param_max[7]= 5;
  66.     param_min[8]= -5; param_max[8]= 5;
  67.     param_min[9]= -5; param_max[9]= 5;
  68.  
  69.     var_min[0]= -5; var_max[0]= 5;
  70.     var_min[1]= -5; var_max[1]= 5;
  71.     var_min[2]= -5; var_max[2]= 5;
  72.     var_min[3]= -5; var_max[3]= 5;
  73.  
  74.     var_polar_min[0]= -5; var_polar_max[0]= 5;
  75.     var_polar_min[1]= -5; var_polar_max[1]= 5;
  76.     var_polar_min[2]= -pi; var_polar_max[2]= pi;
  77.     var_polar_min[3]= -5; var_polar_max[3]= 5;
  78.  
  79.     f_p = d4symmbrgen_f;
  80.     func_p = d4symmbrgen_func;
  81. }
  82. int d4symmbrgen_f(f,index,x,p,t,dim)
  83. int index,dim;
  84. double f[],x[],p[],t;
  85. {
  86.     double da,am,sp,m1,m2,cr,rs,ss,zw1,zw2,xy1,xy2,xt,y,z,w,off;
  87.     double m1p,m2p,crp;
  88.     da = p[0];
  89.     am = p[1];
  90.     off = p[2];
  91.     sp = p[3];
  92.     m1 = p[4];
  93.     m2 = p[5];
  94.     cr = p[6];
  95.     m1p = p[7];
  96.     m2p = p[8];
  97.     crp = p[9];
  98.     xt = x[0];
  99.     y = x[1];
  100.     z = x[2];
  101.     w = x[3];
  102.     rs = xt*xt+y*y;
  103.     ss = z*z+w*w;
  104.     zw1 = cr*(z*z-w*w);
  105.     zw2 = 2.0*cr*z*w;
  106.     xy1 = crp*(xt*xt-y*y);
  107.     xy2 = 2.0*crp*xt*y;
  108.     f[0] = (-da - zw2)*xt + ( off + am - sp - m1*rs - m2*ss + zw1)*y;
  109.     f[1] = (-da + zw2)*y + (-off + am + sp + m1*rs + m2*ss + zw1)*xt;
  110.     f[2] = (-da - xy2)*z + ( off + am + sp - m1p*ss - m2p*rs + xy1)*w;
  111.     f[3] = (-da + xy2)*w + (-off + am - sp + m1p*ss + m2p*rs + xy1)*z;
  112. }
  113. int d4symmbrgen_func(f,x,p,t,dim)
  114. double f[],x[],p[],t;
  115. int dim;
  116. {
  117.         double v0sq,v1sq,v2sq,v3sq;
  118.  
  119.     /* energy and angular momentum are defined in euclidean
  120.     coordinates */
  121.     v0sq = x[0] * x[0];
  122.     v2sq = x[2] * x[2];
  123.     f[0] = 0.5 * ((x[1] * x[1] + x[3] * x[3]) - p[0] * (v0sq+v2sq)
  124.         + 0.5 * (v0sq+v2sq) * (v0sq+v2sq) - p[1] * v0sq * v2sq);
  125.     f[1] =  x[1] * x[2] - x[0] * x[3];
  126.     
  127. }
  128.