06-surface.mdl 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. /****************************************************************************
  2. * Test 06: All surface rxn types (vol surf, surf surf, vol vol surf, etc.)
  3. *
  4. * An untargetted test aiming to flush out any gross errors introduced into
  5. * the reaction machinery. No numeric results were generated to compare the
  6. * results against, so we're mainly looking for crashes or other obvious
  7. * defects, such as complete absence of reaction.
  8. *
  9. * Author: Jed Wing <[email protected]>
  10. * Date: 2008-04-04
  11. ****************************************************************************/
  12. basename = "06-surface"
  13. countdir = "dat/" & basename & "/"
  14. vizdir = "./viz_dat/" & basename & "/"
  15. sprintf(seed, "%04g", SEED)
  16. iterations = 100
  17. timestep = 1e-6
  18. boxdims = 0.25
  19. voldiffconst = 2.0e-6
  20. surfdiffconst = 1.0e-7
  21. /* ACCURATE_3D_REACTIONS = FALSE */
  22. VACANCY_SEARCH_DISTANCE = 2.0
  23. PARTITION_X = [ [ -3.51 TO -2.99 STEP 0.09 ],
  24. [ -2.51 TO -1.99 STEP 0.09 ] ]
  25. PARTITION_Y = [ [ -3.51 TO -2.99 STEP 0.09 ],
  26. [ -2.51 TO -1.99 STEP 0.09 ] ]
  27. PARTITION_Z = [ [ -3.51 TO -2.99 STEP 0.09 ],
  28. [ -2.51 TO -1.99 STEP 0.09 ] ]
  29. ITERATIONS = iterations
  30. TIME_STEP = timestep
  31. TIME_STEP_MAX = 1.0
  32. DEFINE_MOLECULES
  33. {
  34. /* Vol-Grid, old pathway */
  35. V_t1 {DIFFUSION_CONSTANT_3D = voldiffconst}
  36. S_t1a {DIFFUSION_CONSTANT_2D = surfdiffconst}
  37. S_t1b {DIFFUSION_CONSTANT_2D = 0}
  38. S_t1ia {DIFFUSION_CONSTANT_2D = 0}
  39. S_t1ib {DIFFUSION_CONSTANT_2D = 0}
  40. /* Vol-Grid, new pathway */
  41. V_t2 {DIFFUSION_CONSTANT_3D = voldiffconst}
  42. S_t2a {DIFFUSION_CONSTANT_2D = surfdiffconst}
  43. S_t2b {DIFFUSION_CONSTANT_2D = 0}
  44. S_t2ia {DIFFUSION_CONSTANT_2D = 0}
  45. S_t2ib {DIFFUSION_CONSTANT_2D = 0}
  46. /* Grid-Grid, old pathway */
  47. S_t3a {DIFFUSION_CONSTANT_2D = surfdiffconst}
  48. S_t3b {DIFFUSION_CONSTANT_2D = surfdiffconst}
  49. S_t3c {DIFFUSION_CONSTANT_2D = 0}
  50. S_t3ia {DIFFUSION_CONSTANT_2D = 0}
  51. S_t3ib {DIFFUSION_CONSTANT_2D = 0}
  52. /* Grid-Grid, new pathway */
  53. S_t4a {DIFFUSION_CONSTANT_2D = surfdiffconst}
  54. S_t4b {DIFFUSION_CONSTANT_2D = surfdiffconst}
  55. S_t4c {DIFFUSION_CONSTANT_2D = 0}
  56. S_t4ia {DIFFUSION_CONSTANT_2D = 0}
  57. S_t4ib {DIFFUSION_CONSTANT_2D = 0}
  58. /* Vol-Vol-Grid */
  59. V_t5a {DIFFUSION_CONSTANT_3D = voldiffconst CUSTOM_TIME_STEP=timestep/10}
  60. V_t5b {DIFFUSION_CONSTANT_3D = voldiffconst CUSTOM_TIME_STEP=timestep/10}
  61. S_t5a {DIFFUSION_CONSTANT_2D = surfdiffconst CUSTOM_TIME_STEP=timestep/10}
  62. S_t5b {DIFFUSION_CONSTANT_2D = 0 CUSTOM_TIME_STEP=timestep/10}
  63. S_t5ia {DIFFUSION_CONSTANT_2D = 0}
  64. S_t5ib {DIFFUSION_CONSTANT_2D = 0}
  65. /* Vol-Grid-Grid */
  66. V_t6 {DIFFUSION_CONSTANT_3D = voldiffconst}
  67. S_t6a {DIFFUSION_CONSTANT_2D = surfdiffconst}
  68. S_t6b {DIFFUSION_CONSTANT_2D = surfdiffconst}
  69. S_t6c {DIFFUSION_CONSTANT_2D = surfdiffconst}
  70. S_t6d {DIFFUSION_CONSTANT_2D = 0}
  71. S_t6e {DIFFUSION_CONSTANT_2D = 0}
  72. S_t6f {DIFFUSION_CONSTANT_2D = 0}
  73. S_t6ia {DIFFUSION_CONSTANT_2D = 0}
  74. S_t6ib {DIFFUSION_CONSTANT_2D = 0}
  75. S_t6ic {DIFFUSION_CONSTANT_2D = 0}
  76. /* Grid-Grid-Grid */
  77. S_t7a {DIFFUSION_CONSTANT_2D = surfdiffconst}
  78. S_t7b {DIFFUSION_CONSTANT_2D = surfdiffconst}
  79. S_t7c {DIFFUSION_CONSTANT_2D = surfdiffconst}
  80. S_t7i {DIFFUSION_CONSTANT_2D = surfdiffconst}
  81. /* Dummy molecules to trick diffusion into using new pathway */
  82. V_a {DIFFUSION_CONSTANT_3D = voldiffconst}
  83. V_b {DIFFUSION_CONSTANT_3D = voldiffconst}
  84. S_a {DIFFUSION_CONSTANT_2D = voldiffconst}
  85. S_b {DIFFUSION_CONSTANT_2D = voldiffconst}
  86. }
  87. DEFINE_REACTIONS {
  88. V_t1' + S_t1a' <-> S_t1ia' [>3.0e7, <400]
  89. V_t1' + S_t1b' <-> S_t1ib' [>3.0e7, <400]
  90. V_t2' + S_t2a' <-> S_t2ia' [>3.0e7, <400]
  91. V_t2' + S_t2b' <-> S_t2ib' [>3.0e7, <400]
  92. V_t2 + V_a + V_b -> V_b [3.0] /* DUMMY */
  93. S_t3a' + S_t3b' <-> S_t3ia' [>1.0e1, <800]
  94. S_t3a' + S_t3c' <-> S_t3ib' [>1.0e1, <800]
  95. S_t4a' + S_t4b' <-> S_t4ia' [>1.0e1, <800]
  96. S_t4a' + S_t4c' <-> S_t4ib' [>1.0e1, <800]
  97. S_t4a' + S_a; + S_b; -> S_b' [3.0] /* DUMMY */
  98. S_t4b' + S_a; + S_b; -> S_b' [3.0] /* DUMMY */
  99. V_t5a' + V_t5b' + S_t5a' <-> S_t5ia' [>3.0e11, <400]
  100. V_t5a' + V_t5b' + S_t5b' <-> S_t5ib' [>3.0e11, <400]
  101. V_t6' + S_t6a' + S_t6b' <-> S_t6ia' [>3.0e-4, <400]
  102. V_t6' + S_t6c' + S_t6d' <-> S_t6ib' [>3.0e-4, <400]
  103. V_t6' + S_t6e' + S_t6f' <-> S_t6ic' [>3.0e-4, <400]
  104. S_t7a' + S_t7b' + S_t7c' <-> S_t7i' [>1.0e-2, <400]
  105. }
  106. outer_box BOX
  107. {
  108. CORNERS = [-4,-4,-4], [4,4,4]
  109. }
  110. INSTANTIATE world OBJECT
  111. {
  112. box1 BOX {
  113. CORNERS = [-3.5, -3.5, -3.5], [-3, -3, -3]
  114. DEFINE_SURFACE_REGIONS {
  115. all {
  116. ELEMENT_LIST = [ ALL_ELEMENTS ]
  117. MOLECULE_NUMBER {
  118. S_t1a, = 1000
  119. S_t1b, = 1000
  120. }
  121. }
  122. }
  123. }
  124. release_site_1 RELEASE_SITE {
  125. SHAPE = world.box1
  126. MOLECULE = V_t1
  127. NUMBER_TO_RELEASE = 1000
  128. }
  129. box2 BOX {
  130. CORNERS = [-2.5, -3.5, -3.5], [-2, -3, -3]
  131. DEFINE_SURFACE_REGIONS {
  132. all {
  133. ELEMENT_LIST = [ ALL_ELEMENTS ]
  134. MOLECULE_NUMBER {
  135. S_t2a, = 1000
  136. S_t2b, = 1000
  137. }
  138. }
  139. }
  140. }
  141. release_site_2 RELEASE_SITE {
  142. SHAPE = world.box2
  143. MOLECULE = V_t2
  144. NUMBER_TO_RELEASE = 1000
  145. }
  146. box3 BOX {
  147. CORNERS = [-3.5, -2.5, -3.5], [-3, -2, -3]
  148. DEFINE_SURFACE_REGIONS {
  149. all {
  150. ELEMENT_LIST = [ ALL_ELEMENTS ]
  151. MOLECULE_NUMBER {
  152. S_t3a, = 1000
  153. S_t3b, = 1000
  154. S_t3c, = 1000
  155. }
  156. }
  157. }
  158. }
  159. box4 BOX {
  160. CORNERS = [-2.5, -2.5, -3.5], [-2, -2, -3]
  161. DEFINE_SURFACE_REGIONS {
  162. all {
  163. ELEMENT_LIST = [ ALL_ELEMENTS ]
  164. MOLECULE_NUMBER {
  165. S_t4a, = 1000
  166. S_t4b, = 1000
  167. S_t4c, = 1000
  168. }
  169. }
  170. }
  171. }
  172. box5 BOX {
  173. CORNERS = [-3.5, -3.5, -2.5], [-3, -3, -2]
  174. DEFINE_SURFACE_REGIONS {
  175. all {
  176. ELEMENT_LIST = [ ALL_ELEMENTS ]
  177. MOLECULE_NUMBER {
  178. S_t5a, = 4000
  179. S_t5b, = 4000
  180. }
  181. }
  182. }
  183. }
  184. release_site_5a RELEASE_SITE {
  185. SHAPE = world.box5
  186. MOLECULE = V_t5a
  187. NUMBER_TO_RELEASE = 1000
  188. }
  189. release_site_5b RELEASE_SITE {
  190. SHAPE = world.box5
  191. MOLECULE = V_t5b
  192. NUMBER_TO_RELEASE = 1000
  193. }
  194. box6 BOX {
  195. CORNERS = [-2.5, -3.5, -2.5], [-2, -3, -2]
  196. DEFINE_SURFACE_REGIONS {
  197. all {
  198. ELEMENT_LIST = [ ALL_ELEMENTS ]
  199. MOLECULE_NUMBER {
  200. S_t6a, = 1000
  201. S_t6b, = 1000
  202. S_t6c, = 1000
  203. S_t6d, = 1000
  204. S_t6e, = 1000
  205. S_t6f, = 1000
  206. }
  207. }
  208. }
  209. }
  210. release_site_6 RELEASE_SITE {
  211. SHAPE = world.box6
  212. MOLECULE = V_t6
  213. NUMBER_TO_RELEASE = 1000
  214. }
  215. box7 BOX {
  216. CORNERS = [-3.5, -2.5, -2.5], [-3, -2, -2]
  217. DEFINE_SURFACE_REGIONS {
  218. all {
  219. ELEMENT_LIST = [ ALL_ELEMENTS ]
  220. MOLECULE_NUMBER {
  221. S_t7a, = 1000
  222. S_t7b, = 1000
  223. S_t7c, = 1000
  224. }
  225. }
  226. }
  227. }
  228. }
  229. REACTION_DATA_OUTPUT {
  230. STEP = timestep
  231. {COUNT[V_t1,WORLD]} => countdir & "V_t1." & seed & ".dat"
  232. {COUNT[S_t1a,WORLD]} => countdir & "S_t1a." & seed & ".dat"
  233. {COUNT[S_t1b,WORLD]} => countdir & "S_t1b." & seed & ".dat"
  234. {COUNT[S_t1ia,WORLD]} => countdir & "S_t1ia." & seed & ".dat"
  235. {COUNT[S_t1ib,WORLD]} => countdir & "S_t1ib." & seed & ".dat"
  236. {COUNT[V_t1,world.box1]} => countdir & "w_V_t1." & seed & ".dat"
  237. {COUNT[S_t1a,world.box1]} => countdir & "w_S_t1a." & seed & ".dat"
  238. {COUNT[S_t1b,world.box1]} => countdir & "w_S_t1b." & seed & ".dat"
  239. {COUNT[S_t1ia,world.box1]} => countdir & "w_S_t1ia." & seed & ".dat"
  240. {COUNT[S_t1ib,world.box1]} => countdir & "w_S_t1ib." & seed & ".dat"
  241. {COUNT[V_t2,WORLD]} => countdir & "V_t2." & seed & ".dat"
  242. {COUNT[S_t2a,WORLD]} => countdir & "S_t2a." & seed & ".dat"
  243. {COUNT[S_t2b,WORLD]} => countdir & "S_t2b." & seed & ".dat"
  244. {COUNT[S_t2ia,WORLD]} => countdir & "S_t2ia." & seed & ".dat"
  245. {COUNT[S_t2ib,WORLD]} => countdir & "S_t2ib." & seed & ".dat"
  246. {COUNT[V_t2,world.box2]} => countdir & "w_V_t2." & seed & ".dat"
  247. {COUNT[S_t2a,world.box2]} => countdir & "w_S_t2a." & seed & ".dat"
  248. {COUNT[S_t2b,world.box2]} => countdir & "w_S_t2b." & seed & ".dat"
  249. {COUNT[S_t2ia,world.box2]} => countdir & "w_S_t2ia." & seed & ".dat"
  250. {COUNT[S_t2ib,world.box2]} => countdir & "w_S_t2ib." & seed & ".dat"
  251. {COUNT[S_t3a,WORLD]} => countdir & "S_t3a." & seed & ".dat"
  252. {COUNT[S_t3b,WORLD]} => countdir & "S_t3b." & seed & ".dat"
  253. {COUNT[S_t3c,WORLD]} => countdir & "S_t3c." & seed & ".dat"
  254. {COUNT[S_t3ia,WORLD]} => countdir & "S_t3ia." & seed & ".dat"
  255. {COUNT[S_t3ib,WORLD]} => countdir & "S_t3ib." & seed & ".dat"
  256. {COUNT[S_t3a,world.box3]} => countdir & "w_S_t3a." & seed & ".dat"
  257. {COUNT[S_t3b,world.box3]} => countdir & "w_S_t3b." & seed & ".dat"
  258. {COUNT[S_t3c,world.box3]} => countdir & "w_S_t3c." & seed & ".dat"
  259. {COUNT[S_t3ia,world.box3]} => countdir & "w_S_t3ia." & seed & ".dat"
  260. {COUNT[S_t3ib,world.box3]} => countdir & "w_S_t3ib." & seed & ".dat"
  261. {COUNT[S_t4a,WORLD]} => countdir & "S_t4a." & seed & ".dat"
  262. {COUNT[S_t4b,WORLD]} => countdir & "S_t4b." & seed & ".dat"
  263. {COUNT[S_t4c,WORLD]} => countdir & "S_t4c." & seed & ".dat"
  264. {COUNT[S_t4ia,WORLD]} => countdir & "S_t4ia." & seed & ".dat"
  265. {COUNT[S_t4ib,WORLD]} => countdir & "S_t4ib." & seed & ".dat"
  266. {COUNT[S_t4a,world.box4]} => countdir & "w_S_t4a." & seed & ".dat"
  267. {COUNT[S_t4b,world.box4]} => countdir & "w_S_t4b." & seed & ".dat"
  268. {COUNT[S_t4c,world.box4]} => countdir & "w_S_t4c." & seed & ".dat"
  269. {COUNT[S_t4ia,world.box4]} => countdir & "w_S_t4ia." & seed & ".dat"
  270. {COUNT[S_t4ib,world.box4]} => countdir & "w_S_t4ib." & seed & ".dat"
  271. {COUNT[V_t5a,WORLD]} => countdir & "V_t5a." & seed & ".dat"
  272. {COUNT[V_t5b,WORLD]} => countdir & "V_t5b." & seed & ".dat"
  273. {COUNT[S_t5a,WORLD]} => countdir & "S_t5a." & seed & ".dat"
  274. {COUNT[S_t5b,WORLD]} => countdir & "S_t5b." & seed & ".dat"
  275. {COUNT[S_t5ia,WORLD]} => countdir & "S_t5ia." & seed & ".dat"
  276. {COUNT[S_t5ib,WORLD]} => countdir & "S_t5ib." & seed & ".dat"
  277. {COUNT[V_t5a,world.box5]} => countdir & "w_V_t5a." & seed & ".dat"
  278. {COUNT[V_t5b,world.box5]} => countdir & "w_V_t5b." & seed & ".dat"
  279. {COUNT[S_t5a,world.box5]} => countdir & "w_S_t5a." & seed & ".dat"
  280. {COUNT[S_t5b,world.box5]} => countdir & "w_S_t5b." & seed & ".dat"
  281. {COUNT[S_t5ia,world.box5]} => countdir & "w_S_t5ia." & seed & ".dat"
  282. {COUNT[S_t5ib,world.box5]} => countdir & "w_S_t5ib." & seed & ".dat"
  283. {COUNT[V_t6,WORLD]} => countdir & "V_t6." & seed & ".dat"
  284. {COUNT[S_t6a,WORLD]} => countdir & "S_t6a." & seed & ".dat"
  285. {COUNT[S_t6b,WORLD]} => countdir & "S_t6b." & seed & ".dat"
  286. {COUNT[S_t6c,WORLD]} => countdir & "S_t6c." & seed & ".dat"
  287. {COUNT[S_t6d,WORLD]} => countdir & "S_t6d." & seed & ".dat"
  288. {COUNT[S_t6e,WORLD]} => countdir & "S_t6e." & seed & ".dat"
  289. {COUNT[S_t6f,WORLD]} => countdir & "S_t6f." & seed & ".dat"
  290. {COUNT[S_t6ia,WORLD]} => countdir & "S_t6ia." & seed & ".dat"
  291. {COUNT[S_t6ib,WORLD]} => countdir & "S_t6ib." & seed & ".dat"
  292. {COUNT[S_t6ic,WORLD]} => countdir & "S_t6ic." & seed & ".dat"
  293. {COUNT[V_t6,world.box6]} => countdir & "w_V_t6." & seed & ".dat"
  294. {COUNT[S_t6a,world.box6]} => countdir & "w_S_t6a." & seed & ".dat"
  295. {COUNT[S_t6b,world.box6]} => countdir & "w_S_t6b." & seed & ".dat"
  296. {COUNT[S_t6c,world.box6]} => countdir & "w_S_t6c." & seed & ".dat"
  297. {COUNT[S_t6d,world.box6]} => countdir & "w_S_t6d." & seed & ".dat"
  298. {COUNT[S_t6e,world.box6]} => countdir & "w_S_t6e." & seed & ".dat"
  299. {COUNT[S_t6f,world.box6]} => countdir & "w_S_t6f." & seed & ".dat"
  300. {COUNT[S_t6ia,world.box6]} => countdir & "w_S_t6ia." & seed & ".dat"
  301. {COUNT[S_t6ib,world.box6]} => countdir & "w_S_t6ib." & seed & ".dat"
  302. {COUNT[S_t6ic,world.box6]} => countdir & "w_S_t6ic." & seed & ".dat"
  303. {COUNT[S_t7a,WORLD]} => countdir & "S_t7a." & seed & ".dat"
  304. {COUNT[S_t7b,WORLD]} => countdir & "S_t7b." & seed & ".dat"
  305. {COUNT[S_t7c,WORLD]} => countdir & "S_t7c." & seed & ".dat"
  306. {COUNT[S_t7i,WORLD]} => countdir & "S_t7i." & seed & ".dat"
  307. {COUNT[S_t7a,world.box7]} => countdir & "w_S_t7a." & seed & ".dat"
  308. {COUNT[S_t7b,world.box7]} => countdir & "w_S_t7b." & seed & ".dat"
  309. {COUNT[S_t7c,world.box7]} => countdir & "w_S_t7c." & seed & ".dat"
  310. {COUNT[S_t7i,world.box7]} => countdir & "w_S_t7i." & seed & ".dat"
  311. }
  312. INCLUDE_FILE = "vizoutput.mdl"