home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / biology / gsrc208a.zip / RATES.C < prev    next >
C/C++ Source or Header  |  1993-07-16  |  2KB  |  85 lines

  1. #include "copyleft.h"
  2.  
  3. /*
  4.     GEPASI - a simulator of metabolic pathways and other dynamical systems
  5.     Copyright (C) 1989, 1992  Pedro Mendes
  6. */
  7.  
  8. /*************************************/
  9. /*                                   */
  10. /*  net metabolite rates & jacobian  */
  11. /*                                   */
  12. /*        Zortech C/C++ 3.0 r4       */
  13. /*          MICROSOFT C 6.00         */
  14. /*          Visual C/C++ 1.0         */
  15. /*           QuickC/WIN 1.0          */
  16. /*             ULTRIX cc             */
  17. /*              GNU gcc              */
  18. /*                                   */
  19. /*   (include here compilers that    */
  20. /*   compiled GEPASI successfully)   */
  21. /*                                   */
  22. /*************************************/
  23.  
  24.  
  25. #include "globals.h"
  26. #include "globvar.h"
  27. #include "datab.h"
  28.  
  29. void calcfluxes( double s[] )
  30. {
  31.  register int j;
  32.  
  33.  for( j=0; j<nsteps; j++ )
  34.   flux[j] = rateq[j](s, j);
  35. }
  36.  
  37. void calcrates( double s[] )
  38. {
  39.  register int i, j;
  40.  
  41.  for(i=0;i<indmet;i++)
  42.  {
  43.   rate[i] = (double) 0;
  44.   for( j=0; j<nsteps; j++ )
  45.   {
  46.    if( stoiu[i][j] != 0 )
  47.     rate[i] += stoiu[i][j] * rateq[j](s, j);
  48.   }
  49.  }
  50.  for( i=indmet; i<nmetab; i++)
  51.  {
  52.   rate[i] = (double) 0;
  53.   for( j=0; j<indmet; j++)
  54.    rate[i] -= ld[i][j] * rate[j];
  55.  }
  56. }
  57.  
  58. void resetj( void )
  59. {
  60.  register int i,j;
  61.  
  62.  for(i=0;i<nmetab;i++)
  63.   for(j=0;j<nmetab;j++)
  64.    jacob[i][j] = (double) 0;
  65. }
  66.  
  67. void calcjacob( double s[] )
  68. {
  69.  register int i, j, k;
  70.  
  71.  resetj( );
  72.  for(i=0;i<indmet;i++)
  73.   for( k=0; k<nsteps; k++)
  74.    if ( stoiu[i][k] != 0 )
  75.     for( j=0; j<nmetab; j++ )
  76.      jacob[i][j] += stoiu[i][k] * partder[k][j]( s, k, j );
  77.  for( i=indmet; i<nmetab; i++)
  78.   for( k=0; k<nmetab; k++)
  79.   {
  80.    jacob[i][k] = (double) 0;
  81.    for( j=0; j<indmet; j++)
  82.     jacob[i][k] -= ld[i][j] * jacob[j][k];
  83.   }
  84. }
  85.