home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / fractal / kaos.lha / userlib / userds0_def.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-25  |  3.1 KB  |  149 lines

  1. /*
  2. Initialize all parameters for a given dynamical system to be installed
  3. Parameters are assigned to the default values before this program is called.
  4. -----------------------------------------------------------------------
  5. This is a GENERIC subroutine. If you want, you can change
  6. the name string "userds0" to a proper one globally in this program
  7. but then you need to change the same strings in the header file defining
  8. the current class of dynamical systems.
  9. */
  10.  
  11. /*
  12. Example 1: map with periodic variable
  13. */
  14.  
  15. #include "model.h"
  16.  
  17. int userds0_init()
  18. {
  19.     title_label = "AIDS Multi-group Model";
  20.     mapping_on = 0;
  21.     inverse_on = 1;
  22.     fderiv_on = 0;
  23.     enable_polar = 0;
  24.     enable_period = 0;
  25.  
  26.     var_dim = 4;
  27.     param_dim = 13;
  28.     func_dim = 2;
  29.  
  30.     (void) malloc_init();
  31.  
  32.     var_label[0] = "S1";
  33.     var_label[1] = "S2";
  34.     var_label[2] = "I1";
  35.     var_label[3] = "I2";
  36.     
  37.     param_label[0] = "c1";
  38.     param_label[1] = "c2";
  39.     param_label[2] = "n1";
  40.     param_label[3] = "n2";
  41.     param_label[4] = "l11";
  42.     param_label[5] = "l12";
  43.     param_label[6] = "l21";
  44.     param_label[7] = "l22";
  45.     param_label[8] = "l1";
  46.     param_label[9] = "l2";
  47.     param_label[10] = "g1";
  48.     param_label[11] = "g2";
  49.     param_label[12] = "m";
  50.  
  51.     func_label[0] = "B1";
  52.     func_label[1] = "B2";
  53.  
  54.     var_i[0] = 55000;
  55.     var_i[1] = 5500;
  56.     var_i[2] = 100;
  57.     var_i[3] = 100;
  58.  
  59.     param[12] = 1./30;
  60.  
  61.     param[0] = 430;
  62.     param[1] = 43;
  63.     param[2] = .9;
  64.     param[3] = .8;
  65.     param[4] = .1;
  66.     param[5] = .01;
  67.     param[6] = .15;
  68.     param[7] = .09;
  69.     param[8] = var_i[0]*param[12];
  70.     param[9] = var_i[1]*param[12];
  71.     param[10] = .1;
  72.     param[11] = .1;
  73.  
  74.     var_min[0]= 0; var_max[0]= 60000;
  75.     var_min[1]= 0; var_max[1]= 10000;
  76.     var_min[2]= 0; var_max[2]= 3000;
  77.     var_min[3]= 0; var_max[3]= 500;
  78.  
  79.     param_min[12]= 0; param_max[12]= .1;
  80.  
  81.     param_min[0]= 0; param_max[0]= 700;
  82.     param_min[1]= 0; param_max[1]= 100;
  83.     param_min[2]= 0; param_max[2]= 1;
  84.     param_min[3]= 0; param_max[3]= 1;
  85.     param_min[4]= 0; param_max[4]= 1;
  86.     param_min[5]= 0; param_max[5] = 1;
  87.     param_min[6]= 0; param_max[6]= 1;
  88.     param_min[7]= 0; param_max[7]= 1;
  89.     param_min[8]= 0; param_max[8]= 6000;
  90.     param_min[9]= 0; param_max[9]= 1000;
  91.     param_min[10]= 0; param_max[10]= 1;
  92.     param_min[11]= 0; param_max[11]= 1;
  93.  
  94.     /* dynamical system and function pointer assignments */
  95.     f_p = userds0_f;
  96.     func_p = userds0_func;
  97. }
  98. /*
  99. first user dynamical system
  100. */
  101.     
  102. double F1,F2;
  103. int userds0_f(f,index,x,p,t,dim)
  104. int index,dim;
  105. double f[],x[],p[],t;
  106. {
  107.     double s1,s2,i1,i2;
  108.     double c1,c2,n1,n2,l11,l12,l21,l22,l1,l2,g1,g2,m,D1;
  109.  
  110.     s1 = x[0];
  111.     s2 = x[1];
  112.     i1 = x[2];
  113.     i2 = x[3];
  114.     c1 = p[0];
  115.     c2 = p[1];
  116.     n1 = p[2];
  117.     n2 = p[3];
  118.     l11 = p[4];
  119.     l12 = p[5];
  120.     l21 = p[6];
  121.     l22 = p[7];
  122.     l1 = p[8];
  123.     l2 = p[9];
  124.     g1 = p[10];
  125.     g2 = p[11];
  126.     m = p[12];
  127.     D1 = (1-n1)*c1*(s1+i1)+(1-n2)*c2*(s2+i2);
  128.     F1 = c1*s1*(l11*(n1 + (1-n1)*(1-n1)*c1*(s1+i1)/D1)*i1/(s1+i1)
  129.         + l12*(1-n1)*(1-n2)*c2*(s2+i2)/D1*i2/(s2+i2));
  130.     F2 = c2*s2*(l22*(n2 + (1-n2)*(1-n2)*c2*(s2+i2)/D1)*i2/(s2+i2)
  131.         + l21*(1-n1)*(1-n2)*c1*(s1+i1)/D1*i1/(s1+i1));
  132.     f[0] = l1 - F1 - m*s1;
  133.     f[1] = l2 - F2 - m*s2;
  134.     f[2] = F1 - (m+g1)*i1;
  135.     f[3] = F2 - (m+g2)*i2;
  136. }
  137. /*
  138. first user function subroutine
  139. */
  140.  
  141. int userds0_func(f,x,p,t,dim)
  142. double f[],x[],p[],t;
  143. int dim;
  144. {
  145.     extern double F1,F2;
  146.     f[0] = F1;
  147.     f[1] = F2;
  148. }
  149.