kernel_fin.c 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. // #ifdef __cplusplus
  2. // extern "C" {
  3. // #endif
  4. //========================================================================================================================================================================================================200
  5. // DEFINE/INCLUDE
  6. //========================================================================================================================================================================================================200
  7. //======================================================================================================================================================150
  8. // COMMON
  9. //======================================================================================================================================================150
  10. #include "../common.h" // (in directory)
  11. //======================================================================================================================================================150
  12. // END
  13. //======================================================================================================================================================150
  14. //========================================================================================================================================================================================================200
  15. // KERNEL FIN
  16. //========================================================================================================================================================================================================200
  17. void
  18. kernel_fin( fp *initvalu,
  19. int initvalu_offset_ecc,
  20. int initvalu_offset_Dyad,
  21. int initvalu_offset_SL,
  22. int initvalu_offset_Cyt,
  23. fp *parameter,
  24. fp *finavalu,
  25. fp JCaDyad,
  26. fp JCaSL,
  27. fp JCaCyt){
  28. //=====================================================================
  29. // VARIABLES
  30. //=====================================================================
  31. // decoded input parameters
  32. fp BtotDyad; //
  33. fp CaMKIItotDyad; //
  34. // compute variables
  35. fp Vmyo; // [L]
  36. fp Vdyad; // [L]
  37. fp VSL; // [L]
  38. // fp kDyadSL; // [L/msec]
  39. fp kSLmyo; // [L/msec]
  40. fp k0Boff; // [s^-1]
  41. fp k0Bon; // [uM^-1 s^-1] kon = koff/Kd
  42. fp k2Boff; // [s^-1]
  43. fp k2Bon; // [uM^-1 s^-1]
  44. // fp k4Boff; // [s^-1]
  45. fp k4Bon; // [uM^-1 s^-1]
  46. fp CaMtotDyad;
  47. fp Bdyad; // [uM dyad]
  48. fp J_cam_dyadSL; // [uM/msec dyad]
  49. fp J_ca2cam_dyadSL; // [uM/msec dyad]
  50. fp J_ca4cam_dyadSL; // [uM/msec dyad]
  51. fp J_cam_SLmyo; // [umol/msec]
  52. fp J_ca2cam_SLmyo; // [umol/msec]
  53. fp J_ca4cam_SLmyo; // [umol/msec]
  54. //=====================================================================
  55. // COMPUTATION
  56. //=====================================================================
  57. // decoded input parameters
  58. BtotDyad = parameter[2]; //
  59. CaMKIItotDyad = parameter[3]; //
  60. // set variables
  61. Vmyo = 2.1454e-11; // [L]
  62. Vdyad = 1.7790e-14; // [L]
  63. VSL = 6.6013e-13; // [L]
  64. // kDyadSL = 3.6363e-16; // [L/msec]
  65. kSLmyo = 8.587e-15; // [L/msec]
  66. k0Boff = 0.0014; // [s^-1]
  67. k0Bon = k0Boff/0.2; // [uM^-1 s^-1] kon = koff/Kd
  68. k2Boff = k0Boff/100; // [s^-1]
  69. k2Bon = k0Bon; // [uM^-1 s^-1]
  70. // k4Boff = k2Boff; // [s^-1]
  71. k4Bon = k0Bon; // [uM^-1 s^-1]
  72. // ADJUST ECC incorporate Ca buffering from CaM, convert JCaCyt from uM/msec to mM/msec
  73. finavalu[initvalu_offset_ecc+35] = finavalu[initvalu_offset_ecc+35] + 1e-3*JCaDyad;
  74. finavalu[initvalu_offset_ecc+36] = finavalu[initvalu_offset_ecc+36] + 1e-3*JCaSL;
  75. finavalu[initvalu_offset_ecc+37] = finavalu[initvalu_offset_ecc+37] + 1e-3*JCaCyt;
  76. // incorporate CaM diffusion between compartments
  77. CaMtotDyad = initvalu[initvalu_offset_Dyad+0]
  78. + initvalu[initvalu_offset_Dyad+1]
  79. + initvalu[initvalu_offset_Dyad+2]
  80. + initvalu[initvalu_offset_Dyad+3]
  81. + initvalu[initvalu_offset_Dyad+4]
  82. + initvalu[initvalu_offset_Dyad+5]
  83. + CaMKIItotDyad * ( initvalu[initvalu_offset_Dyad+6]
  84. + initvalu[initvalu_offset_Dyad+7]
  85. + initvalu[initvalu_offset_Dyad+8]
  86. + initvalu[initvalu_offset_Dyad+9])
  87. + initvalu[initvalu_offset_Dyad+12]
  88. + initvalu[initvalu_offset_Dyad+13]
  89. + initvalu[initvalu_offset_Dyad+14];
  90. Bdyad = BtotDyad - CaMtotDyad; // [uM dyad]
  91. J_cam_dyadSL = 1e-3 * ( k0Boff*initvalu[initvalu_offset_Dyad+0] - k0Bon*Bdyad*initvalu[initvalu_offset_SL+0]); // [uM/msec dyad]
  92. J_ca2cam_dyadSL = 1e-3 * ( k2Boff*initvalu[initvalu_offset_Dyad+1] - k2Bon*Bdyad*initvalu[initvalu_offset_SL+1]); // [uM/msec dyad]
  93. J_ca4cam_dyadSL = 1e-3 * ( k2Boff*initvalu[initvalu_offset_Dyad+2] - k4Bon*Bdyad*initvalu[initvalu_offset_SL+2]); // [uM/msec dyad]
  94. J_cam_SLmyo = kSLmyo * ( initvalu[initvalu_offset_SL+0] - initvalu[initvalu_offset_Cyt+0]); // [umol/msec]
  95. J_ca2cam_SLmyo = kSLmyo * ( initvalu[initvalu_offset_SL+1] - initvalu[initvalu_offset_Cyt+1]); // [umol/msec]
  96. J_ca4cam_SLmyo = kSLmyo * ( initvalu[initvalu_offset_SL+2] - initvalu[initvalu_offset_Cyt+2]); // [umol/msec]
  97. // ADJUST CAM Dyad
  98. finavalu[initvalu_offset_Dyad+0] = finavalu[initvalu_offset_Dyad+0] - J_cam_dyadSL;
  99. finavalu[initvalu_offset_Dyad+1] = finavalu[initvalu_offset_Dyad+1] - J_ca2cam_dyadSL;
  100. finavalu[initvalu_offset_Dyad+2] = finavalu[initvalu_offset_Dyad+2] - J_ca4cam_dyadSL;
  101. // ADJUST CAM Sl
  102. finavalu[initvalu_offset_SL+0] = finavalu[initvalu_offset_SL+0] + J_cam_dyadSL*Vdyad/VSL - J_cam_SLmyo/VSL;
  103. finavalu[initvalu_offset_SL+1] = finavalu[initvalu_offset_SL+1] + J_ca2cam_dyadSL*Vdyad/VSL - J_ca2cam_SLmyo/VSL;
  104. finavalu[initvalu_offset_SL+2] = finavalu[initvalu_offset_SL+2] + J_ca4cam_dyadSL*Vdyad/VSL - J_ca4cam_SLmyo/VSL;
  105. // ADJUST CAM Cyt
  106. finavalu[initvalu_offset_Cyt+0] = finavalu[initvalu_offset_Cyt+0] + J_cam_SLmyo/Vmyo;
  107. finavalu[initvalu_offset_Cyt+1] = finavalu[initvalu_offset_Cyt+1] + J_ca2cam_SLmyo/Vmyo;
  108. finavalu[initvalu_offset_Cyt+2] = finavalu[initvalu_offset_Cyt+2] + J_ca4cam_SLmyo/Vmyo;
  109. }
  110. //========================================================================================================================================================================================================200
  111. // END
  112. //========================================================================================================================================================================================================200
  113. // #ifdef __cplusplus
  114. // }
  115. // #endif