03-surface.mdl 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. /****************************************************************************
  2. * Test 03: All surface rxn types, simple test of equilibrium and reaction
  3. * rates.
  4. *
  5. * A quantitative test of the basic *-surface reaction types (uni, bi, tri)
  6. * in various combinations with surface (and some volume) molecules.
  7. *
  8. * Note that the bi-directional pathways are in here twice. This is
  9. * so that they can be tested via both the non-trimolecular and trimolecular
  10. * code pathways. The latter is accomplished by adding a bogus trimolecular
  11. * reaction involving the relevant molecules.
  12. *
  13. *
  14. * Author: Jed Wing <[email protected]>, Boris Kaminsky <[email protected]>
  15. * Date: 2008-12-05, 2012-06-20
  16. ****************************************************************************/
  17. WARNINGS
  18. {
  19. ALL_WARNINGS = WARNING
  20. }
  21. basename = "03-surface"
  22. countdir = "dat/" & basename & "/"
  23. vizdir = "./viz_dat/" & basename & "/"
  24. iterations = 10000
  25. timestep = 1.0e-6
  26. boxdims = 0.25
  27. voldiffconst = 2.0e-6
  28. surfdiffconst = 2.0e-6
  29. num_u = 1000
  30. num_b = 1000
  31. num_t = 1000
  32. num_vvs = num_t
  33. sa = 6*(2*boxdims)^2
  34. boxvol = 8*boxdims*boxdims*boxdims
  35. eq_t = num_t / 2
  36. eq_b = num_b / 2
  37. rf_ss = 0.1*1e6 * (sa / eq_b) / eq_b
  38. rf_vss = 0.1*1e6 * (sa / eq_t) * (boxvol / eq_t) / eq_t
  39. // Set reverse rates to expect approx 1 rxn every 10 timesteps
  40. rr_u = 2.0e2
  41. rr_b = 2.0e2
  42. rr_t = 2.0e2
  43. rf_sss = rr_t * (sa / eq_t) * (sa / eq_t)
  44. // Compute forward rates to give equilibrium of 50% reacted
  45. c_b = (num_b / 2. / boxvol) * 1e15 / 6.022e23
  46. c_t = (num_t / 2. / boxvol) * 1e15 / 6.022e23
  47. rf_u = rr_u
  48. rf_b = rr_b / c_b
  49. rf_t = rr_t / c_t / c_t
  50. /*printf("rf_t = %g\n", rf_t) */
  51. VACANCY_SEARCH_DISTANCE = 2
  52. ITERATIONS = iterations
  53. TIME_STEP = timestep
  54. TIME_STEP_MAX = 1.0
  55. INCLUDE_FILE = "volmols.mdl"
  56. INCLUDE_FILE = "surfmols.mdl"
  57. /* extra molecules for simultaneous multiple reactions */
  58. DEFINE_MOLECULES {
  59. D_t1 {DIFFUSION_CONSTANT_2D = surfdiffconst }
  60. D_t2 {DIFFUSION_CONSTANT_2D = surfdiffconst }
  61. D_t3 {DIFFUSION_CONSTANT_2D = surfdiffconst }
  62. E_t1 {DIFFUSION_CONSTANT_2D = 0 }
  63. D_t4 {DIFFUSION_CONSTANT_2D = surfdiffconst }
  64. D_t5 {DIFFUSION_CONSTANT_2D = surfdiffconst }
  65. D_t6 {DIFFUSION_CONSTANT_2D = surfdiffconst }
  66. E_t4 {DIFFUSION_CONSTANT_2D = 0 }
  67. }
  68. DEFINE_REACTIONS {
  69. /* 0 Volume reactants */
  70. S_u, -> B_u, [rf_u] : fwd_u /* unimol */
  71. S_b1, + S_b2, -> B_b, [rf_ss] : fwd_b /* bimol */
  72. S_bt1, + S_bt2, -> B_bt, [rf_ss] : fwd_bt /* bimol (via trimol code) */
  73. S_b3, + S_b4to, -> B_b2, [rf_ss] : fwd_b2 /* bimol (1 target only) */
  74. S_bt3, + S_bt4to, -> B_bt2, [rf_ss] : fwd_bt2 /* bimol (1 target only, via trimol code) */
  75. S_t1, + S_t2, + S_t3, -> B_t, [rf_sss] : fwd_t /* trimol */
  76. S_t4, + S_t5to, + S_t6, -> B_t2, [rf_sss] : fwd_t2 /* trimol (1 target only) */
  77. S_t7, + S_t8to, + S_t9to, -> B_t3, [rf_sss] : fwd_t3 /* trimol (2 target only) */
  78. B_u, -> S_u, [rr_u] : rev_u
  79. B_b, -> S_b1, + S_b2, [rr_b] : rev_b
  80. B_bt, -> S_bt1, + S_bt2, [rr_b] : rev_bt
  81. B_b2, -> S_b3, + S_b4to, [rr_b] : rev_b2
  82. B_bt2, -> S_bt3, + S_bt4to, [rr_b] : rev_bt2
  83. B_t, -> S_t1, + S_t2, + S_t3, [rr_t] : rev_t
  84. B_t2, -> S_t4, + S_t5to, + S_t6, [rr_t] : rev_t2
  85. B_t3, -> S_t7, + S_t8to, + S_t9to, [rr_t] : rev_t3
  86. /* 1 Volume reactant */
  87. V_b1, + S_vb2' -> B_vb' [rf_b] : fwd_vb /* bimol */
  88. V_bt1, + S_vbt2' -> B_vbt' [rf_b] : fwd_vbt /* bimol (via trimol code) */
  89. V_b3, + S_vb4to' -> B_vb2' [rf_b] : fwd_vb2 /* bimol (1 target only) */
  90. V_bt3, + S_vbt4to' -> B_vbt2' [rf_b] : fwd_vbt2 /* bimol (1 target only, via trimol code) */
  91. V_t1, + S_vt2' + S_vt3' -> B_vt' [rf_vss] : fwd_vt /* trimol */
  92. V_t4, + S_vt5to' + S_vt6' -> B_vt2' [rf_vss] : fwd_vt2 /* trimol (1 target only) */
  93. V_t7, + S_vt8to' + S_vt9to' -> B_vt3' [rf_vss] : fwd_vt3 /* trimol (2 target only) */
  94. B_vb' -> V_b1, + S_vb2' [rr_b] : rev_vb
  95. B_vbt' -> V_bt1, + S_vbt2' [rr_b] : rev_vbt
  96. B_vb2' -> V_b3, + S_vb4to' [rr_b] : rev_vb2
  97. B_vbt2' -> V_bt3, + S_vbt4to' [rr_b] : rev_vbt2
  98. B_vt' -> V_t1, + S_vt2' + S_vt3' [rr_t] : rev_vt
  99. B_vt2' -> V_t4, + S_vt5to' + S_vt6' [rr_t] : rev_vt2
  100. B_vt3' -> V_t7, + S_vt8to' + S_vt9to' [rr_t] : rev_vt3
  101. /* 2 Volume reactants */
  102. V_vt1, + V_vt2, + S_vvt3' -> B_vvt' [rf_t/10] : fwd_vvt /* trimol */
  103. V_vt4, + V_vt5to, + S_vvt6' -> B_vvt2' [rf_t/10] : fwd_vvt2 /* trimol (1 target only) */
  104. V_vt7, + V_vt8to, + S_vvt9to' -> B_vvt3' [rf_t/10] : fwd_vvt3 /* trimol (2 target only) */
  105. B_vvt' -> V_vt1, + V_vt2, + S_vvt3' [rr_t/10] : rev_vvt
  106. B_vvt2' -> V_vt4, + V_vt5to, + S_vvt6' [rr_t/10] : rev_vvt2
  107. B_vvt3' -> V_vt7, + V_vt8to, + S_vvt9to' [rr_t/10] : rev_vvt3
  108. /* Dummy reactions to trick mcell into using trimol. pathway for bimol rxn. */
  109. V_bt1 + V_a + V_a -> V_a [1e2]
  110. V_bt3 + V_a + V_a -> V_a [1e2]
  111. S_bt1; + S_a; + S_a; -> S_a; [1e2]
  112. S_bt3; + S_a; + S_a; -> S_a; [1e2]
  113. /* 3 surface reactants - trimol reaction */
  114. /* multiple simultaneous reactions */
  115. D_t1, + D_t2, + D_t3, -> E_t1, [rf_sss] : fwd_D_t1 /* (1) */
  116. D_t1, + D_t2, + D_t3; -> E_t1, [rf_sss] : fwd_D_t2 /* (2) */
  117. D_t1, + D_t2; + D_t3; -> E_t1, [rf_sss] : fwd_D_t3 /* (3) */
  118. D_t1; + D_t2; + D_t3; -> E_t1, [rf_sss] : fwd_D_t4 /* (4) */
  119. D_t4, + D_t5, + D_t6, -> E_t4, [rf_sss] : fwd_D_t5 /* (5) */
  120. D_t4, + D_t5, + D_t6; -> E_t4, [0.5*rf_sss] : fwd_D_t6 /* (6) */
  121. D_t4, + D_t5; + D_t6; -> E_t4, [0.5*rf_sss] : fwd_D_t7 /* (7) */
  122. D_t4; + D_t5; + D_t6; -> E_t4, [0.5*rf_sss] : fwd_D_t8 /* (8) */
  123. /* related reverse reactions */
  124. E_t1, -> D_t1, + D_t2, + D_t3, [rr_t] : rev_D_t1 /* (9) */
  125. E_t4, -> D_t4, + D_t5, + D_t6, [rr_t] : rev_D_t4 /* (10) */
  126. }
  127. little_box BOX
  128. {
  129. CORNERS = [-boxdims, -boxdims, -boxdims], [boxdims, boxdims, boxdims]
  130. }
  131. /* Starting X position for box placement */
  132. x = 0
  133. fuzz = 0.01
  134. xleft = x - boxdims - fuzz
  135. /* S_u <-> B_u */
  136. case1 OBJECT
  137. {
  138. kosmos OBJECT little_box {}
  139. release_site_r RELEASE_SITE { SHAPE = case1.kosmos MOLECULE = S_u' NUMBER_TO_RELEASE = num_u / 2 }
  140. release_site_p RELEASE_SITE { SHAPE = case1.kosmos MOLECULE = B_u' NUMBER_TO_RELEASE = num_u / 2 }
  141. TRANSLATE = [x, 0, 0]
  142. }
  143. x = x + 2*boxdims + fuzz
  144. /* S_b1 + S_b2 <-> B_b */
  145. case2 OBJECT
  146. {
  147. kosmos OBJECT little_box {}
  148. release_site_r1 RELEASE_SITE { SHAPE = case2.kosmos MOLECULE = S_b1' NUMBER_TO_RELEASE = num_b / 2 }
  149. release_site_r2 RELEASE_SITE { SHAPE = case2.kosmos MOLECULE = S_b2' NUMBER_TO_RELEASE = num_b / 2 }
  150. release_site_p RELEASE_SITE { SHAPE = case2.kosmos MOLECULE = B_b' NUMBER_TO_RELEASE = num_b / 2 }
  151. TRANSLATE = [x, 0, 0]
  152. }
  153. x = x + 2*boxdims + fuzz
  154. /* S_bt1 + S_bt2 <-> B_bt */
  155. case3 OBJECT
  156. {
  157. kosmos OBJECT little_box {}
  158. release_site_r1 RELEASE_SITE { SHAPE = case3.kosmos MOLECULE = S_bt1' NUMBER_TO_RELEASE = num_b / 2 }
  159. release_site_r2 RELEASE_SITE { SHAPE = case3.kosmos MOLECULE = S_bt2' NUMBER_TO_RELEASE = num_b / 2 }
  160. release_site_p RELEASE_SITE { SHAPE = case3.kosmos MOLECULE = B_bt' NUMBER_TO_RELEASE = num_b / 2 }
  161. TRANSLATE = [x, 0, 0]
  162. }
  163. x = x + 2*boxdims + fuzz
  164. /* S_b3 + S_b4to <-> B_b2 */
  165. case4 OBJECT
  166. {
  167. kosmos OBJECT little_box {}
  168. release_site_r1 RELEASE_SITE { SHAPE = case4.kosmos MOLECULE = S_b3' NUMBER_TO_RELEASE = num_b / 2 }
  169. release_site_r2 RELEASE_SITE { SHAPE = case4.kosmos MOLECULE = S_b4to' NUMBER_TO_RELEASE = num_b / 2 }
  170. release_site_p RELEASE_SITE { SHAPE = case4.kosmos MOLECULE = B_b2' NUMBER_TO_RELEASE = num_b / 2 }
  171. TRANSLATE = [x, 0, 0]
  172. }
  173. x = x + 2*boxdims + fuzz
  174. /* S_bt3 + S_bt4to <-> B_bt2 */
  175. case5 OBJECT
  176. {
  177. kosmos OBJECT little_box {}
  178. release_site_r1 RELEASE_SITE { SHAPE = case5.kosmos MOLECULE = S_bt3' NUMBER_TO_RELEASE = num_b / 2 }
  179. release_site_r2 RELEASE_SITE { SHAPE = case5.kosmos MOLECULE = S_bt4to' NUMBER_TO_RELEASE = num_b / 2 }
  180. release_site_p RELEASE_SITE { SHAPE = case5.kosmos MOLECULE = B_bt2' NUMBER_TO_RELEASE = num_b / 2 }
  181. TRANSLATE = [x, 0, 0]
  182. }
  183. x = x + 2*boxdims + fuzz
  184. /* S_t1 + S_t2 + S_t3 <-> B_t */
  185. case6 OBJECT
  186. {
  187. kosmos OBJECT little_box {}
  188. release_site_r1 RELEASE_SITE { SHAPE = case6.kosmos MOLECULE = S_t1' NUMBER_TO_RELEASE = num_t / 2 }
  189. release_site_r2 RELEASE_SITE { SHAPE = case6.kosmos MOLECULE = S_t2' NUMBER_TO_RELEASE = num_t / 2 }
  190. release_site_r3 RELEASE_SITE { SHAPE = case6.kosmos MOLECULE = S_t3' NUMBER_TO_RELEASE = num_t / 2 }
  191. release_site_p RELEASE_SITE { SHAPE = case6.kosmos MOLECULE = B_t' NUMBER_TO_RELEASE = num_t / 2 }
  192. TRANSLATE = [x, 0, 0]
  193. }
  194. x = x + 2*boxdims + fuzz
  195. /* S_t4 + S_t5to + S_t6 <-> B_t2 */
  196. case7 OBJECT
  197. {
  198. kosmos OBJECT little_box {}
  199. release_site_r1 RELEASE_SITE { SHAPE = case7.kosmos MOLECULE = S_t4' NUMBER_TO_RELEASE = num_t / 2 }
  200. release_site_r2 RELEASE_SITE { SHAPE = case7.kosmos MOLECULE = S_t5to' NUMBER_TO_RELEASE = num_t / 2 }
  201. release_site_r3 RELEASE_SITE { SHAPE = case7.kosmos MOLECULE = S_t6' NUMBER_TO_RELEASE = num_t / 2 }
  202. release_site_p RELEASE_SITE { SHAPE = case7.kosmos MOLECULE = B_t2' NUMBER_TO_RELEASE = num_t / 2 }
  203. TRANSLATE = [x, 0, 0]
  204. }
  205. x = x + 2*boxdims + fuzz
  206. /* S_t7 + S_t8to + S_t9to <-> B_t3 */
  207. case8 OBJECT
  208. {
  209. kosmos OBJECT little_box {}
  210. release_site_r1 RELEASE_SITE { SHAPE = case8.kosmos MOLECULE = S_t7' NUMBER_TO_RELEASE = num_t / 2 }
  211. release_site_r2 RELEASE_SITE { SHAPE = case8.kosmos MOLECULE = S_t8to' NUMBER_TO_RELEASE = num_t / 2 }
  212. release_site_r3 RELEASE_SITE { SHAPE = case8.kosmos MOLECULE = S_t9to' NUMBER_TO_RELEASE = num_t / 2 }
  213. release_site_p RELEASE_SITE { SHAPE = case8.kosmos MOLECULE = B_t3' NUMBER_TO_RELEASE = num_t / 2 }
  214. TRANSLATE = [x, 0, 0]
  215. }
  216. x = x + 2*boxdims + fuzz
  217. /* V_b1 + S_vb2 <-> B_vb */
  218. case9 OBJECT
  219. {
  220. kosmos OBJECT little_box {}
  221. release_site_r1 RELEASE_SITE { SHAPE = case9.kosmos MOLECULE = V_b1 NUMBER_TO_RELEASE = num_b / 2 }
  222. release_site_r2 RELEASE_SITE { SHAPE = case9.kosmos MOLECULE = S_vb2' NUMBER_TO_RELEASE = num_b / 2 }
  223. release_site_p RELEASE_SITE { SHAPE = case9.kosmos MOLECULE = B_vb' NUMBER_TO_RELEASE = num_b / 2 }
  224. TRANSLATE = [x, 0, 0]
  225. }
  226. x = x + 2*boxdims + fuzz
  227. /* V_bt1 + S_vbt2 <-> B_vbt */
  228. case10 OBJECT
  229. {
  230. kosmos OBJECT little_box {}
  231. release_site_r1 RELEASE_SITE { SHAPE = case10.kosmos MOLECULE = V_bt1 NUMBER_TO_RELEASE = num_b / 2 }
  232. release_site_r2 RELEASE_SITE { SHAPE = case10.kosmos MOLECULE = S_vbt2' NUMBER_TO_RELEASE = num_b / 2 }
  233. release_site_p RELEASE_SITE { SHAPE = case10.kosmos MOLECULE = B_vbt' NUMBER_TO_RELEASE = num_b / 2 }
  234. TRANSLATE = [x, 0, 0]
  235. }
  236. x = x + 2*boxdims + fuzz
  237. /* V_b3 + S_vb4to <-> B_vb2 */
  238. case11 OBJECT
  239. {
  240. kosmos OBJECT little_box {}
  241. release_site_r1 RELEASE_SITE { SHAPE = case11.kosmos MOLECULE = V_b3 NUMBER_TO_RELEASE = num_b / 2 }
  242. release_site_r2 RELEASE_SITE { SHAPE = case11.kosmos MOLECULE = S_vb4to' NUMBER_TO_RELEASE = num_b / 2 }
  243. release_site_p RELEASE_SITE { SHAPE = case11.kosmos MOLECULE = B_vb2' NUMBER_TO_RELEASE = num_b / 2 }
  244. TRANSLATE = [x, 0, 0]
  245. }
  246. x = x + 2*boxdims + fuzz
  247. /* V_bt3 + S_vbt4to <-> B_vbt2 */
  248. case12 OBJECT
  249. {
  250. kosmos OBJECT little_box {}
  251. release_site_r1 RELEASE_SITE { SHAPE = case12.kosmos MOLECULE = V_bt3 NUMBER_TO_RELEASE = num_b / 2 }
  252. release_site_r2 RELEASE_SITE { SHAPE = case12.kosmos MOLECULE = S_vbt4to' NUMBER_TO_RELEASE = num_b / 2 }
  253. release_site_p RELEASE_SITE { SHAPE = case12.kosmos MOLECULE = B_vbt2' NUMBER_TO_RELEASE = num_b / 2 }
  254. TRANSLATE = [x, 0, 0]
  255. }
  256. x = x + 2*boxdims + fuzz
  257. /* V_t1 + S_vt2 + S_vt3 <-> B_vt */
  258. case13 OBJECT
  259. {
  260. kosmos OBJECT little_box {}
  261. release_site_r1 RELEASE_SITE { SHAPE = case13.kosmos MOLECULE = V_t1 NUMBER_TO_RELEASE = num_t / 2 }
  262. release_site_r2 RELEASE_SITE { SHAPE = case13.kosmos MOLECULE = S_vt2' NUMBER_TO_RELEASE = num_t / 2 }
  263. release_site_r3 RELEASE_SITE { SHAPE = case13.kosmos MOLECULE = S_vt3' NUMBER_TO_RELEASE = num_t / 2 }
  264. release_site_p RELEASE_SITE { SHAPE = case13.kosmos MOLECULE = B_vt' NUMBER_TO_RELEASE = num_t / 2 }
  265. TRANSLATE = [x, 0, 0]
  266. }
  267. x = x + 2*boxdims + fuzz
  268. /* V_t4 + S_vt5to + S_vt6 <-> B_vt2 */
  269. case14 OBJECT
  270. {
  271. kosmos OBJECT little_box {}
  272. release_site_r1 RELEASE_SITE { SHAPE = case14.kosmos MOLECULE = V_t4 NUMBER_TO_RELEASE = num_t / 2 }
  273. release_site_r2 RELEASE_SITE { SHAPE = case14.kosmos MOLECULE = S_vt5to' NUMBER_TO_RELEASE = num_t / 2 }
  274. release_site_r3 RELEASE_SITE { SHAPE = case14.kosmos MOLECULE = S_vt6' NUMBER_TO_RELEASE = num_t / 2 }
  275. release_site_p RELEASE_SITE { SHAPE = case14.kosmos MOLECULE = B_vt2' NUMBER_TO_RELEASE = num_t / 2 }
  276. TRANSLATE = [x, 0, 0]
  277. }
  278. x = x + 2*boxdims + fuzz
  279. /* V_t7 + S_vt8to + S_vt9to <-> B_vt3 */
  280. case15 OBJECT
  281. {
  282. kosmos OBJECT little_box {}
  283. release_site_r1 RELEASE_SITE { SHAPE = case15.kosmos MOLECULE = V_t7 NUMBER_TO_RELEASE = num_t / 2 }
  284. release_site_r2 RELEASE_SITE { SHAPE = case15.kosmos MOLECULE = S_vt8to' NUMBER_TO_RELEASE = num_t / 2 }
  285. release_site_r3 RELEASE_SITE { SHAPE = case15.kosmos MOLECULE = S_vt9to' NUMBER_TO_RELEASE = num_t / 2 }
  286. release_site_p RELEASE_SITE { SHAPE = case15.kosmos MOLECULE = B_vt3' NUMBER_TO_RELEASE = num_t / 2 }
  287. TRANSLATE = [x, 0, 0]
  288. }
  289. x = x + 2*boxdims + fuzz
  290. /* V_vt1 + V_vt2 + S_vvt3 <-> B_vvt */
  291. case16 OBJECT
  292. {
  293. kosmos OBJECT little_box {}
  294. release_site_r1 RELEASE_SITE { SHAPE = case16.kosmos MOLECULE = V_vt1 NUMBER_TO_RELEASE = num_vvs / 2 }
  295. release_site_r2 RELEASE_SITE { SHAPE = case16.kosmos MOLECULE = V_vt2 NUMBER_TO_RELEASE = num_vvs / 2 }
  296. release_site_r3 RELEASE_SITE { SHAPE = case16.kosmos MOLECULE = S_vvt3' NUMBER_TO_RELEASE = num_t / 2 }
  297. release_site_p RELEASE_SITE { SHAPE = case16.kosmos MOLECULE = B_vvt' NUMBER_TO_RELEASE = num_t / 2 }
  298. TRANSLATE = [x, 0, 0]
  299. }
  300. x = x + 2*boxdims + fuzz
  301. /* V_vt4 + V_vt5to + S_vvt6 <-> B_vvt2 */
  302. case17 OBJECT
  303. {
  304. kosmos OBJECT little_box {}
  305. release_site_r1 RELEASE_SITE { SHAPE = case17.kosmos MOLECULE = V_vt4 NUMBER_TO_RELEASE = num_vvs / 2 }
  306. release_site_r2 RELEASE_SITE { SHAPE = case17.kosmos MOLECULE = V_vt5to NUMBER_TO_RELEASE = num_vvs / 2 }
  307. release_site_r3 RELEASE_SITE { SHAPE = case17.kosmos MOLECULE = S_vvt6' NUMBER_TO_RELEASE = num_t / 2 }
  308. release_site_p RELEASE_SITE { SHAPE = case17.kosmos MOLECULE = B_vvt2' NUMBER_TO_RELEASE = num_t / 2 }
  309. TRANSLATE = [x, 0, 0]
  310. }
  311. x = x + 2*boxdims + fuzz
  312. /* V_vt7 + V_vt8to + S_vvt9to <-> B_vvt3 */
  313. case18 OBJECT
  314. {
  315. kosmos OBJECT little_box {}
  316. release_site_r1 RELEASE_SITE { SHAPE = case18.kosmos MOLECULE = V_vt7 NUMBER_TO_RELEASE = num_vvs / 2 }
  317. release_site_r2 RELEASE_SITE { SHAPE = case18.kosmos MOLECULE = V_vt8to NUMBER_TO_RELEASE = num_vvs / 2 }
  318. release_site_r3 RELEASE_SITE { SHAPE = case18.kosmos MOLECULE = S_vvt9to' NUMBER_TO_RELEASE = num_t / 2 }
  319. release_site_p RELEASE_SITE { SHAPE = case18.kosmos MOLECULE = B_vvt3' NUMBER_TO_RELEASE = num_t / 2 }
  320. TRANSLATE = [x, 0, 0]
  321. }
  322. x = x + 2*boxdims + fuzz
  323. /* reactions (1) - (4) */
  324. case19 OBJECT
  325. {
  326. kosmos OBJECT little_box {}
  327. release_site_r1 RELEASE_SITE { SHAPE = case19.kosmos MOLECULE = D_t1, NUMBER_TO_RELEASE = num_t / 2 }
  328. release_site_r2 RELEASE_SITE { SHAPE = case19.kosmos MOLECULE = D_t2, NUMBER_TO_RELEASE = num_t / 2 }
  329. release_site_r3 RELEASE_SITE { SHAPE = case19.kosmos MOLECULE = D_t3, NUMBER_TO_RELEASE = num_t / 2 }
  330. release_site_p RELEASE_SITE { SHAPE = case19.kosmos MOLECULE = E_t1, NUMBER_TO_RELEASE = num_t / 2 }
  331. TRANSLATE = [x, 0, 0]
  332. }
  333. x = x + 2*boxdims + fuzz
  334. /* reactions (5) - (8) */
  335. case20 OBJECT
  336. {
  337. kosmos OBJECT little_box {}
  338. release_site_r1 RELEASE_SITE { SHAPE = case20.kosmos MOLECULE = D_t4, NUMBER_TO_RELEASE = num_t / 2 }
  339. release_site_r2 RELEASE_SITE { SHAPE = case20.kosmos MOLECULE = D_t5, NUMBER_TO_RELEASE = num_t / 2 }
  340. release_site_r3 RELEASE_SITE { SHAPE = case20.kosmos MOLECULE = D_t6, NUMBER_TO_RELEASE = num_t / 2 }
  341. release_site_p RELEASE_SITE { SHAPE = case20.kosmos MOLECULE = E_t4, NUMBER_TO_RELEASE = num_t / 2 }
  342. TRANSLATE = [x, 0, 0]
  343. }
  344. x = x + 2*boxdims + fuzz
  345. xright = x + boxdims
  346. PARTITION_X = [ [ xleft TO xright STEP 0.025 ] ]
  347. PARTITION_Y = [ [ -boxdims-fuzz TO boxdims+fuzz STEP 0.025 ] ]
  348. PARTITION_Z = [ [ -boxdims-fuzz TO boxdims+fuzz STEP 0.025 ] ]
  349. INSTANTIATE multiverse OBJECT {
  350. b1 OBJECT case1 {}
  351. b2 OBJECT case2 {}
  352. b3 OBJECT case3 {}
  353. b4 OBJECT case4 {}
  354. b5 OBJECT case5 {}
  355. b6 OBJECT case6 {}
  356. b7 OBJECT case7 {}
  357. b8 OBJECT case8 {}
  358. b9 OBJECT case9 {}
  359. b10 OBJECT case10 {}
  360. b11 OBJECT case11 {}
  361. b12 OBJECT case12 {}
  362. b13 OBJECT case13 {}
  363. b14 OBJECT case14 {}
  364. b15 OBJECT case15 {}
  365. b16 OBJECT case16 {}
  366. b17 OBJECT case17 {}
  367. b18 OBJECT case18 {}
  368. b19 OBJECT case19 {}
  369. b20 OBJECT case20 {}
  370. }
  371. REACTION_DATA_OUTPUT {
  372. OUTPUT_BUFFER_SIZE = 50
  373. STEP = timestep*10
  374. HEADER = "# "
  375. {
  376. COUNT[S_u,WORLD] : "S_u",
  377. COUNT[S_b1,WORLD] : "S_b1",
  378. COUNT[S_b2,WORLD] : "S_b2",
  379. COUNT[S_b3,WORLD] : "S_b3",
  380. COUNT[S_b4to,WORLD] : "S_b4",
  381. COUNT[S_bt1,WORLD] : "S_bt1",
  382. COUNT[S_bt2,WORLD] : "S_bt2",
  383. COUNT[S_bt3,WORLD] : "S_bt3",
  384. COUNT[S_bt4to,WORLD] : "S_bt4",
  385. COUNT[S_t1,WORLD] : "S_t1",
  386. COUNT[S_t2,WORLD] : "S_t2",
  387. COUNT[S_t3,WORLD] : "S_t3",
  388. COUNT[S_t4,WORLD] : "S_t4",
  389. COUNT[S_t5to,WORLD] : "S_t5",
  390. COUNT[S_t6,WORLD] : "S_t6",
  391. COUNT[S_t7,WORLD] : "S_t7",
  392. COUNT[S_t8to,WORLD] : "S_t8",
  393. COUNT[S_t9to,WORLD] : "S_t9",
  394. COUNT[V_b1,WORLD] : "V_b1",
  395. COUNT[S_vb2,WORLD] : "S_vb2",
  396. COUNT[V_bt1,WORLD] : "V_bt1",
  397. COUNT[S_vbt2,WORLD] : "S_vbt2",
  398. COUNT[V_b3,WORLD] : "V_b3",
  399. COUNT[S_vb4to,WORLD] : "S_vb4",
  400. COUNT[V_bt3,WORLD] : "V_bt3",
  401. COUNT[S_vbt4to,WORLD] : "S_vbt4",
  402. COUNT[V_t1,WORLD] : "V_t1",
  403. COUNT[S_vt2,WORLD] : "S_vt2",
  404. COUNT[S_vt3,WORLD] : "S_vt3",
  405. COUNT[V_t4,WORLD] : "V_t4",
  406. COUNT[S_vt5to,WORLD] : "S_vt5",
  407. COUNT[S_vt6,WORLD] : "S_vt6",
  408. COUNT[V_t7,WORLD] : "V_t7",
  409. COUNT[S_vt8to,WORLD] : "S_vt8",
  410. COUNT[S_vt9to,WORLD] : "S_vt9",
  411. COUNT[V_vt1,WORLD] : "V_vt1",
  412. COUNT[V_vt2,WORLD] : "V_vt2",
  413. COUNT[S_vvt3,WORLD] : "S_vvt3",
  414. COUNT[V_vt4,WORLD] : "V_vt4",
  415. COUNT[V_vt5to,WORLD] : "V_vt5",
  416. COUNT[S_vvt6,WORLD] : "S_vvt6",
  417. COUNT[V_vt7,WORLD] : "V_vt7",
  418. COUNT[V_vt8to,WORLD] : "V_vt8",
  419. COUNT[S_vvt9to,WORLD] : "S_vvt9",
  420. COUNT[B_u,WORLD] : "B_u",
  421. COUNT[B_b,WORLD] : "B_b",
  422. COUNT[B_b2,WORLD] : "B_b2",
  423. COUNT[B_bt,WORLD] : "B_bt",
  424. COUNT[B_bt2,WORLD] : "B_bt2",
  425. COUNT[B_t,WORLD] : "B_t",
  426. COUNT[B_t2,WORLD] : "B_t2",
  427. COUNT[B_t3,WORLD] : "B_t3",
  428. COUNT[B_vb,WORLD] : "B_vb",
  429. COUNT[B_vbt,WORLD] : "B_vbt",
  430. COUNT[B_vb2,WORLD] : "B_vb2",
  431. COUNT[B_vbt2,WORLD] : "B_vbt2",
  432. COUNT[B_vt,WORLD] : "B_vt",
  433. COUNT[B_vt2,WORLD] : "B_vt2",
  434. COUNT[B_vt3,WORLD] : "B_vt3",
  435. COUNT[B_vvt,WORLD] : "B_vvt",
  436. COUNT[B_vvt2,WORLD] : "B_vvt2",
  437. COUNT[B_vvt3,WORLD] : "B_vvt3"
  438. } => countdir & "V_out.dat"
  439. {
  440. COUNT[fwd_u,WORLD] : "fwd_u",
  441. COUNT[fwd_b,WORLD] : "fwd_b",
  442. COUNT[fwd_bt,WORLD] : "fwd_bt",
  443. COUNT[fwd_b2,WORLD] : "fwd_b2",
  444. COUNT[fwd_bt2,WORLD] : "fwd_bt2",
  445. COUNT[fwd_t,WORLD] : "fwd_t",
  446. COUNT[fwd_t2,WORLD] : "fwd_t2",
  447. COUNT[fwd_t3,WORLD] : "fwd_t3",
  448. COUNT[fwd_vb,WORLD] : "fwd_vb",
  449. COUNT[fwd_vbt,WORLD] : "fwd_vbt",
  450. COUNT[fwd_vb2,WORLD] : "fwd_vb2",
  451. COUNT[fwd_vbt2,WORLD] : "fwd_vbt2",
  452. COUNT[fwd_vt,WORLD] : "fwd_vt",
  453. COUNT[fwd_vt2,WORLD] : "fwd_vt2",
  454. COUNT[fwd_vt3,WORLD] : "fwd_vt3",
  455. COUNT[fwd_vvt,WORLD] : "fwd_vvt",
  456. COUNT[fwd_vvt2,WORLD] : "fwd_vvt2",
  457. COUNT[fwd_vvt3,WORLD] : "fwd_vvt3",
  458. COUNT[rev_u,WORLD] : "rev_u",
  459. COUNT[rev_b,WORLD] : "rev_b",
  460. COUNT[rev_bt,WORLD] : "rev_bt",
  461. COUNT[rev_b2,WORLD] : "rev_b2",
  462. COUNT[rev_bt2,WORLD] : "rev_bt2",
  463. COUNT[rev_t,WORLD] : "rev_t",
  464. COUNT[rev_t2,WORLD] : "rev_t2",
  465. COUNT[rev_t3,WORLD] : "rev_t3",
  466. COUNT[rev_vb,WORLD] : "rev_vb",
  467. COUNT[rev_vbt,WORLD] : "rev_vbt",
  468. COUNT[rev_vb2,WORLD] : "rev_vb2",
  469. COUNT[rev_vbt2,WORLD] : "rev_vbt2",
  470. COUNT[rev_vt,WORLD] : "rev_vt",
  471. COUNT[rev_vt2,WORLD] : "rev_vt2",
  472. COUNT[rev_vt3,WORLD] : "rev_vt3",
  473. COUNT[rev_vvt,WORLD] : "rev_vvt",
  474. COUNT[rev_vvt2,WORLD] : "rev_vvt2",
  475. COUNT[rev_vvt3,WORLD] : "rev_vvt3"
  476. } => countdir & "rxn_out.dat"
  477. {
  478. COUNT[fwd_D_t1,WORLD] : "fwd_D_t1",
  479. COUNT[fwd_D_t2,WORLD] : "fwd_D_t2",
  480. COUNT[fwd_D_t3,WORLD] : "fwd_D_t3",
  481. COUNT[fwd_D_t4,WORLD] : "fwd_D_t4"
  482. } => countdir & "b19_rxn_out.dat"
  483. {
  484. COUNT[fwd_D_t5,WORLD] : "fwd_D_t5",
  485. COUNT[fwd_D_t6,WORLD] : "fwd_D_t6",
  486. COUNT[fwd_D_t7,WORLD] : "fwd_D_t7",
  487. COUNT[fwd_D_t8,WORLD] : "fwd_D_t8"
  488. } => countdir & "b20_rxn_out.dat"
  489. }