pyfds-evac 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. pyfds_evac-0.2.1/.gitignore +256 -0
  2. pyfds_evac-0.2.1/CHANGELOG.md +639 -0
  3. pyfds_evac-0.2.1/CITATION.cff +36 -0
  4. pyfds_evac-0.2.1/CODE_OF_CONDUCT.md +83 -0
  5. pyfds_evac-0.2.1/CONTRIBUTING.md +119 -0
  6. pyfds_evac-0.2.1/LICENSE +21 -0
  7. pyfds_evac-0.2.1/PKG-INFO +228 -0
  8. pyfds_evac-0.2.1/README.md +193 -0
  9. pyfds_evac-0.2.1/SECURITY.md +26 -0
  10. pyfds_evac-0.2.1/app.py +10 -0
  11. pyfds_evac-0.2.1/assets/Haspel/BUW_Geometrie_EG.wkt +1 -0
  12. pyfds_evac-0.2.1/assets/Haspel/README.md +76 -0
  13. pyfds_evac-0.2.1/assets/Haspel/config.json +370 -0
  14. pyfds_evac-0.2.1/assets/Haspel/haspel.fds +3448 -0
  15. pyfds_evac-0.2.1/assets/Haspel/inifile_template.json +164 -0
  16. pyfds_evac-0.2.1/assets/ISO-table21/ISO-table21.fds +26 -0
  17. pyfds_evac-0.2.1/assets/ISO-table21/README.md +91 -0
  18. pyfds_evac-0.2.1/assets/ISO-table21/config.json +112 -0
  19. pyfds_evac-0.2.1/assets/ISO-table21/geometry.wkt +1 -0
  20. pyfds_evac-0.2.1/assets/ISO-table22/README.md +93 -0
  21. pyfds_evac-0.2.1/assets/ISO-table22/config.json +112 -0
  22. pyfds_evac-0.2.1/assets/ISO-table22/geometry.wkt +1 -0
  23. pyfds_evac-0.2.1/assets/README.md +78 -0
  24. pyfds_evac-0.2.1/assets/blind_spawn_discovery/README.md +218 -0
  25. pyfds_evac-0.2.1/assets/blind_spawn_discovery/blind_spawn_discovery.fds +22 -0
  26. pyfds_evac-0.2.1/assets/blind_spawn_discovery/build_geometry.py +342 -0
  27. pyfds_evac-0.2.1/assets/blind_spawn_discovery/config_discovery.json +215 -0
  28. pyfds_evac-0.2.1/assets/blind_spawn_discovery/config_entrance.json +216 -0
  29. pyfds_evac-0.2.1/assets/blind_spawn_discovery/config_full.json +215 -0
  30. pyfds_evac-0.2.1/assets/blind_spawn_discovery/config_mixed.json +215 -0
  31. pyfds_evac-0.2.1/assets/blind_spawn_discovery/geometry.wkt +1 -0
  32. pyfds_evac-0.2.1/assets/blind_spawn_discovery/trajectories_discovery.png +0 -0
  33. pyfds_evac-0.2.1/assets/cognitive_map_memory/README.md +184 -0
  34. pyfds_evac-0.2.1/assets/cognitive_map_memory/build_geometry.py +248 -0
  35. pyfds_evac-0.2.1/assets/cognitive_map_memory/cognitive_map_memory.fds +24 -0
  36. pyfds_evac-0.2.1/assets/cognitive_map_memory/cognitive_map_states.png +0 -0
  37. pyfds_evac-0.2.1/assets/cognitive_map_memory/config.json +141 -0
  38. pyfds_evac-0.2.1/assets/cognitive_map_memory/geometry.wkt +1 -0
  39. pyfds_evac-0.2.1/assets/cognitive_map_memory/trajectories.png +0 -0
  40. pyfds_evac-0.2.1/assets/exit_visibility_alpha/README.md +309 -0
  41. pyfds_evac-0.2.1/assets/exit_visibility_alpha/build_geometry.py +222 -0
  42. pyfds_evac-0.2.1/assets/exit_visibility_alpha/config_hidden.json +141 -0
  43. pyfds_evac-0.2.1/assets/exit_visibility_alpha/config_visible.json +141 -0
  44. pyfds_evac-0.2.1/assets/exit_visibility_alpha/exit_choice_map.png +0 -0
  45. pyfds_evac-0.2.1/assets/exit_visibility_alpha/exit_visibility_alpha.fds +22 -0
  46. pyfds_evac-0.2.1/assets/exit_visibility_alpha/geometry.wkt +1 -0
  47. pyfds_evac-0.2.1/assets/exit_visibility_alpha/trajectories_hidden.png +0 -0
  48. pyfds_evac-0.2.1/assets/exit_visibility_alpha/trajectories_visible.png +0 -0
  49. pyfds_evac-0.2.1/assets/familiarity_test_discovery/build_geometry.py +188 -0
  50. pyfds_evac-0.2.1/assets/familiarity_test_discovery/config.json +280 -0
  51. pyfds_evac-0.2.1/assets/familiarity_test_discovery/familiarity_test.fds +77 -0
  52. pyfds_evac-0.2.1/assets/familiarity_test_discovery/geometry.wkt +1 -0
  53. pyfds_evac-0.2.1/assets/familiarity_test_discovery/layout_preview.png +0 -0
  54. pyfds_evac-0.2.1/assets/familiarity_test_full/build_geometry.py +188 -0
  55. pyfds_evac-0.2.1/assets/familiarity_test_full/config.json +280 -0
  56. pyfds_evac-0.2.1/assets/familiarity_test_full/familiarity_test.fds +77 -0
  57. pyfds_evac-0.2.1/assets/familiarity_test_full/geometry.wkt +1 -0
  58. pyfds_evac-0.2.1/assets/familiarity_test_full/layout_preview.png +0 -0
  59. pyfds_evac-0.2.1/assets/familiarity_test_no_journey/config.json +280 -0
  60. pyfds_evac-0.2.1/assets/familiarity_test_no_journey/familiarity_test.fds +77 -0
  61. pyfds_evac-0.2.1/assets/familiarity_test_no_journey/geometry.wkt +1 -0
  62. pyfds_evac-0.2.1/assets/fed_incap_co_2000ppm/config.json +164 -0
  63. pyfds_evac-0.2.1/assets/fed_incap_co_2000ppm/fed_incap_co_2000ppm.fds +96 -0
  64. pyfds_evac-0.2.1/assets/fed_incap_co_2000ppm/geometry.wkt +1 -0
  65. pyfds_evac-0.2.1/assets/fed_incap_co_4000ppm/config.json +162 -0
  66. pyfds_evac-0.2.1/assets/fed_incap_co_4000ppm/fed_incap_co_4000ppm.fds +88 -0
  67. pyfds_evac-0.2.1/assets/fed_incap_co_4000ppm/geometry.wkt +1 -0
  68. pyfds_evac-0.2.1/assets/fed_incap_co_8000ppm/config.json +162 -0
  69. pyfds_evac-0.2.1/assets/fed_incap_co_8000ppm/fed_incap_co_8000ppm.fds +88 -0
  70. pyfds_evac-0.2.1/assets/fed_incap_co_8000ppm/geometry.wkt +1 -0
  71. pyfds_evac-0.2.1/assets/fed_incap_heat_100c/config.json +164 -0
  72. pyfds_evac-0.2.1/assets/fed_incap_heat_100c/fed_incap_heat_100c.fds +56 -0
  73. pyfds_evac-0.2.1/assets/fed_incap_heat_100c/geometry.wkt +1 -0
  74. pyfds_evac-0.2.1/assets/fed_incap_heat_150c/config.json +164 -0
  75. pyfds_evac-0.2.1/assets/fed_incap_heat_150c/fed_incap_heat_150c.fds +56 -0
  76. pyfds_evac-0.2.1/assets/fed_incap_heat_150c/geometry.wkt +1 -0
  77. pyfds_evac-0.2.1/assets/fed_incap_heat_200c/config.json +164 -0
  78. pyfds_evac-0.2.1/assets/fed_incap_heat_200c/fed_incap_heat_200c.fds +56 -0
  79. pyfds_evac-0.2.1/assets/fed_incap_heat_200c/geometry.wkt +1 -0
  80. pyfds_evac-0.2.1/assets/fed_slice_height/fed_slice_height.fds +41 -0
  81. pyfds_evac-0.2.1/assets/fic_vs_fed_speed/README.md +132 -0
  82. pyfds_evac-0.2.1/assets/fic_vs_fed_speed/build_geometry.py +264 -0
  83. pyfds_evac-0.2.1/assets/fic_vs_fed_speed/config.json +108 -0
  84. pyfds_evac-0.2.1/assets/fic_vs_fed_speed/fic_vs_fed_speed.fds +54 -0
  85. pyfds_evac-0.2.1/assets/fic_vs_fed_speed/geometry.wkt +1 -0
  86. pyfds_evac-0.2.1/assets/heat_integrated_intensity/heat_integrated_intensity.fds +45 -0
  87. pyfds_evac-0.2.1/assets/heat_only_no_soot/heat_only_no_soot.fds +27 -0
  88. pyfds_evac-0.2.1/assets/heat_radiometer/heat_radiometer_burner.fds +87 -0
  89. pyfds_evac-0.2.1/assets/heat_radiometer/heat_radiometer_layer.fds +94 -0
  90. pyfds_evac-0.2.1/assets/heat_radiometer/heat_radiometer_uniform.fds +93 -0
  91. pyfds_evac-0.2.1/assets/iso_table21_coupled/README.md +134 -0
  92. pyfds_evac-0.2.1/assets/iso_table21_coupled/build_geometry.py +233 -0
  93. pyfds_evac-0.2.1/assets/iso_table21_coupled/config.json +102 -0
  94. pyfds_evac-0.2.1/assets/iso_table21_coupled/geometry.wkt +1 -0
  95. pyfds_evac-0.2.1/assets/iso_table21_coupled/iso_table21_coupled.fds +34 -0
  96. pyfds_evac-0.2.1/assets/iso_table22_coupled/README.md +122 -0
  97. pyfds_evac-0.2.1/assets/iso_table22_coupled/build_geometry.py +282 -0
  98. pyfds_evac-0.2.1/assets/iso_table22_coupled/config_a.json +106 -0
  99. pyfds_evac-0.2.1/assets/iso_table22_coupled/config_b.json +106 -0
  100. pyfds_evac-0.2.1/assets/iso_table22_coupled/config_c.json +106 -0
  101. pyfds_evac-0.2.1/assets/iso_table22_coupled/config_d.json +106 -0
  102. pyfds_evac-0.2.1/assets/iso_table22_coupled/geometry.wkt +1 -0
  103. pyfds_evac-0.2.1/assets/iso_table22_coupled/iso_table22_a.fds +40 -0
  104. pyfds_evac-0.2.1/assets/iso_table22_coupled/iso_table22_b.fds +40 -0
  105. pyfds_evac-0.2.1/assets/iso_table22_coupled/iso_table22_c.fds +40 -0
  106. pyfds_evac-0.2.1/assets/iso_table22_coupled/iso_table22_d.fds +40 -0
  107. pyfds_evac-0.2.1/assets/l_corridor/README.md +190 -0
  108. pyfds_evac-0.2.1/assets/l_corridor/config.json +305 -0
  109. pyfds_evac-0.2.1/assets/l_corridor/geometry.wkt +1 -0
  110. pyfds_evac-0.2.1/assets/l_corridor/l_corridor.fds +86 -0
  111. pyfds_evac-0.2.1/assets/l_corridor/measure_contrast.py +146 -0
  112. pyfds_evac-0.2.1/assets/schroeder2015_route/README.md +65 -0
  113. pyfds_evac-0.2.1/assets/schroeder2015_route/a012_pvc_h30/a012_pvc_h30.fds +93 -0
  114. pyfds_evac-0.2.1/assets/schroeder2015_route/a047_pvc_h35/a047_pvc_h35.fds +93 -0
  115. pyfds_evac-0.2.1/assets/schroeder2015_route/a047_pvc_h40/a047_pvc_h40.fds +93 -0
  116. pyfds_evac-0.2.1/assets/schroeder2015_route/evac/config_additive.json +324 -0
  117. pyfds_evac-0.2.1/assets/schroeder2015_route/evac/config_gate.json +324 -0
  118. pyfds_evac-0.2.1/assets/schroeder2015_route/evac/geometry.wkt +1 -0
  119. pyfds_evac-0.2.1/assets/schroeder2015_route/geometry.py +102 -0
  120. pyfds_evac-0.2.1/assets/schroeder2015_route/make_configs.py +183 -0
  121. pyfds_evac-0.2.1/assets/schroeder2015_route/make_decks.py +247 -0
  122. pyfds_evac-0.2.1/assets/schroeder2015_route/run_p1.sh +53 -0
  123. pyfds_evac-0.2.1/assets/schroeder2020_room/README.md +85 -0
  124. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door/config.json +141 -0
  125. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door/config_pre0.json +141 -0
  126. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door/config_pre30.json +143 -0
  127. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door/config_pre60.json +143 -0
  128. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door/config_pre_default.json +140 -0
  129. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door/geometry.wkt +1 -0
  130. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door/hrr060_1door.fds +73 -0
  131. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door_dx010/config.json +141 -0
  132. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door_dx010/config_pre0.json +141 -0
  133. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door_dx010/config_pre30.json +143 -0
  134. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door_dx010/config_pre60.json +143 -0
  135. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door_dx010/config_pre_default.json +140 -0
  136. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door_dx010/geometry.wkt +1 -0
  137. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door_dx010/hrr060_1door_dx010.fds +73 -0
  138. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_1door_pert/hrr060_1door_pert.fds +73 -0
  139. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/config.json +243 -0
  140. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/config_N200.json +243 -0
  141. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/config_pre0.json +243 -0
  142. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/config_pre30.json +247 -0
  143. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/config_pre60.json +247 -0
  144. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/config_pre_default.json +241 -0
  145. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/geometry.wkt +1 -0
  146. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/hrr060_2door.fds +74 -0
  147. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed01.json +243 -0
  148. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed02.json +243 -0
  149. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed03.json +243 -0
  150. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed04.json +243 -0
  151. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed05.json +243 -0
  152. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed06.json +243 -0
  153. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed07.json +243 -0
  154. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed08.json +243 -0
  155. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed09.json +243 -0
  156. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_N200_seed10.json +243 -0
  157. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed01.json +243 -0
  158. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed02.json +243 -0
  159. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed03.json +243 -0
  160. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed04.json +243 -0
  161. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed05.json +243 -0
  162. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed06.json +243 -0
  163. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed07.json +243 -0
  164. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed08.json +243 -0
  165. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed09.json +243 -0
  166. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre0_seed10.json +243 -0
  167. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed01.json +247 -0
  168. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed02.json +247 -0
  169. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed03.json +247 -0
  170. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed04.json +247 -0
  171. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed05.json +247 -0
  172. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed06.json +247 -0
  173. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed07.json +247 -0
  174. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed08.json +247 -0
  175. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed09.json +247 -0
  176. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre30_seed10.json +247 -0
  177. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed01.json +247 -0
  178. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed02.json +247 -0
  179. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed03.json +247 -0
  180. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed04.json +247 -0
  181. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed05.json +247 -0
  182. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed06.json +247 -0
  183. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed07.json +247 -0
  184. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed08.json +247 -0
  185. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed09.json +247 -0
  186. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre60_seed10.json +247 -0
  187. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed01.json +241 -0
  188. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed02.json +241 -0
  189. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed03.json +241 -0
  190. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed04.json +241 -0
  191. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed05.json +241 -0
  192. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed06.json +241 -0
  193. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed07.json +241 -0
  194. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed08.json +241 -0
  195. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed09.json +241 -0
  196. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/config_pre_default_seed10.json +241 -0
  197. pyfds_evac-0.2.1/assets/schroeder2020_room/hrr060_2door/seeds/geometry.wkt +1 -0
  198. pyfds_evac-0.2.1/assets/schroeder2020_room/make_configs.py +241 -0
  199. pyfds_evac-0.2.1/assets/schroeder2020_room/make_configs_rel.py +235 -0
  200. pyfds_evac-0.2.1/assets/schroeder2020_room/make_decks.py +122 -0
  201. pyfds_evac-0.2.1/assets/schroeder2020_room/make_decks_rel.py +131 -0
  202. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door/config.json +166 -0
  203. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door/config_pre0.json +166 -0
  204. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door/config_pre30.json +168 -0
  205. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door/config_pre60.json +168 -0
  206. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door/config_pre_default.json +165 -0
  207. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door/geometry.wkt +1 -0
  208. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door/rel_1door.fds +69 -0
  209. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door_dx010/config.json +166 -0
  210. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door_dx010/config_pre0.json +166 -0
  211. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door_dx010/config_pre30.json +168 -0
  212. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door_dx010/config_pre60.json +168 -0
  213. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door_dx010/config_pre_default.json +165 -0
  214. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door_dx010/geometry.wkt +1 -0
  215. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_1door_dx010/rel_1door_dx010.fds +69 -0
  216. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/rel_2door.fds +70 -0
  217. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed01.json +293 -0
  218. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed02.json +293 -0
  219. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed03.json +293 -0
  220. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed04.json +293 -0
  221. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed05.json +293 -0
  222. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed06.json +293 -0
  223. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed07.json +293 -0
  224. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed08.json +293 -0
  225. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed09.json +293 -0
  226. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_N200_seed10.json +293 -0
  227. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed01.json +293 -0
  228. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed02.json +293 -0
  229. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed03.json +293 -0
  230. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed04.json +293 -0
  231. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed05.json +293 -0
  232. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed06.json +293 -0
  233. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed07.json +293 -0
  234. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed08.json +293 -0
  235. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed09.json +293 -0
  236. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre0_seed10.json +293 -0
  237. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed01.json +297 -0
  238. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed02.json +297 -0
  239. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed03.json +297 -0
  240. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed04.json +297 -0
  241. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed05.json +297 -0
  242. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed06.json +297 -0
  243. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed07.json +297 -0
  244. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed08.json +297 -0
  245. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed09.json +297 -0
  246. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre30_seed10.json +297 -0
  247. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed01.json +297 -0
  248. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed02.json +297 -0
  249. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed03.json +297 -0
  250. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed04.json +297 -0
  251. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed05.json +297 -0
  252. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed06.json +297 -0
  253. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed07.json +297 -0
  254. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed08.json +297 -0
  255. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed09.json +297 -0
  256. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre60_seed10.json +297 -0
  257. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed01.json +291 -0
  258. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed02.json +291 -0
  259. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed03.json +291 -0
  260. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed04.json +291 -0
  261. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed05.json +291 -0
  262. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed06.json +291 -0
  263. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed07.json +291 -0
  264. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed08.json +291 -0
  265. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed09.json +291 -0
  266. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/config_pre_default_seed10.json +291 -0
  267. pyfds_evac-0.2.1/assets/schroeder2020_room/rel_2door/seeds/geometry.wkt +1 -0
  268. pyfds_evac-0.2.1/assets/station_fahy/areas.py +128 -0
  269. pyfds_evac-0.2.1/assets/station_fahy/build_scenario.py +230 -0
  270. pyfds_evac-0.2.1/assets/station_fahy/config.json +19514 -0
  271. pyfds_evac-0.2.1/assets/station_fahy/fahy_table2.py +135 -0
  272. pyfds_evac-0.2.1/assets/station_fahy/geometry.wkt +1 -0
  273. pyfds_evac-0.2.1/assets/station_fahy/simplify_doors.py +217 -0
  274. pyfds_evac-0.2.1/assets/station_fahy/source/config.json +1751 -0
  275. pyfds_evac-0.2.1/assets/station_fahy/source/geometry.wkt +1 -0
  276. pyfds_evac-0.2.1/assets/station_fahy/validate.py +543 -0
  277. pyfds_evac-0.2.1/assets/t_junction/README.md +145 -0
  278. pyfds_evac-0.2.1/assets/t_junction/config.json +172 -0
  279. pyfds_evac-0.2.1/assets/t_junction/config_discovery.json +247 -0
  280. pyfds_evac-0.2.1/assets/t_junction/config_full.json +247 -0
  281. pyfds_evac-0.2.1/assets/t_junction/config_initial_pre0.json +247 -0
  282. pyfds_evac-0.2.1/assets/t_junction/config_initial_pre30.json +247 -0
  283. pyfds_evac-0.2.1/assets/t_junction/config_initial_pre60.json +247 -0
  284. pyfds_evac-0.2.1/assets/t_junction/geometry.wkt +1 -0
  285. pyfds_evac-0.2.1/assets/t_junction/smoke_weight_sweep.png +0 -0
  286. pyfds_evac-0.2.1/assets/t_junction/t_junction.fds +94 -0
  287. pyfds_evac-0.2.1/assets/t_junction/vis.py +8 -0
  288. pyfds_evac-0.2.1/assets/vis_slice_height/vis_slice_height.fds +29 -0
  289. pyfds_evac-0.2.1/assets/world_100/config.json +6477 -0
  290. pyfds_evac-0.2.1/assets/world_100/geometry.wkt +1 -0
  291. pyfds_evac-0.2.1/assets/world_100/world_100_fire.fds +328 -0
  292. pyfds_evac-0.2.1/assets/world_77/config.json +1301 -0
  293. pyfds_evac-0.2.1/assets/world_77/geometry.wkt +1 -0
  294. pyfds_evac-0.2.1/assets/world_77/world_77_fire.fds +90 -0
  295. pyfds_evac-0.2.1/codecov.yml +16 -0
  296. pyfds_evac-0.2.1/docs/archive/superpowers/plans/2026-06-07-agent-scalars-writer.md +361 -0
  297. pyfds_evac-0.2.1/docs/archive/superpowers/plans/2026-08-05-stage-graph-and-signs.md +698 -0
  298. pyfds_evac-0.2.1/docs/archive/superpowers/specs/2026-06-06-fasthtml-gui-design.md +189 -0
  299. pyfds_evac-0.2.1/docs/archive/superpowers/specs/2026-08-03-stage-graph-and-signs-design.md +242 -0
  300. pyfds_evac-0.2.1/docs/archive/superpowers/specs/2026-08-05-station-validation-design.md +208 -0
  301. pyfds_evac-0.2.1/docs/archive/superpowers/specs/2026-08-06-blind-spawn-discovery-design.md +206 -0
  302. pyfds_evac-0.2.1/docs/assets.md +156 -0
  303. pyfds_evac-0.2.1/docs/coming-from-fds-evac.md +292 -0
  304. pyfds_evac-0.2.1/docs/concepts.md +384 -0
  305. pyfds_evac-0.2.1/docs/fds-case-requirements.md +133 -0
  306. pyfds_evac-0.2.1/docs/fds-sampling.md +311 -0
  307. pyfds_evac-0.2.1/docs/first-fds-case.md +669 -0
  308. pyfds_evac-0.2.1/docs/gate-model-review-notes.md +558 -0
  309. pyfds_evac-0.2.1/docs/howto-rset-ensemble.md +315 -0
  310. pyfds_evac-0.2.1/docs/howto-with-without-fire.md +708 -0
  311. pyfds_evac-0.2.1/docs/install.md +122 -0
  312. pyfds_evac-0.2.1/docs/limitations.md +294 -0
  313. pyfds_evac-0.2.1/docs/model-comparison.md +711 -0
  314. pyfds_evac-0.2.1/docs/outputs.md +230 -0
  315. pyfds_evac-0.2.1/docs/quickstart.md +285 -0
  316. pyfds_evac-0.2.1/docs/rerouting-oscillation-notes.md +365 -0
  317. pyfds_evac-0.2.1/docs/route-cost-gate.md +850 -0
  318. pyfds_evac-0.2.1/docs/routing-and-signs-notes.md +346 -0
  319. pyfds_evac-0.2.1/docs/routing.md +631 -0
  320. pyfds_evac-0.2.1/docs/scenario-json.md +163 -0
  321. pyfds_evac-0.2.1/docs/smoke-speed-model.md +213 -0
  322. pyfds_evac-0.2.1/docs/study-schroeder2015.md +676 -0
  323. pyfds_evac-0.2.1/docs/study-schroeder2020.md +1056 -0
  324. pyfds_evac-0.2.1/docs/superpowers/specs/2026-08-10-cognitive-map-test-strategy-design.md +97 -0
  325. pyfds_evac-0.2.1/docs/testing-familiarity.md +332 -0
  326. pyfds_evac-0.2.1/docs/testing-heat-radiometer.md +246 -0
  327. pyfds_evac-0.2.1/docs/testing-heat.md +393 -0
  328. pyfds_evac-0.2.1/docs/testing-homogeneous.md +183 -0
  329. pyfds_evac-0.2.1/docs/troubleshooting.md +65 -0
  330. pyfds_evac-0.2.1/docs/usage.md +617 -0
  331. pyfds_evac-0.2.1/docs/walkthrough.md +371 -0
  332. pyfds_evac-0.2.1/docs/wayfinding.md +436 -0
  333. pyfds_evac-0.2.1/docs/web-gui.md +523 -0
  334. pyfds_evac-0.2.1/examples/first_fds_case.py +53 -0
  335. pyfds_evac-0.2.1/examples/quickstart.py +67 -0
  336. pyfds_evac-0.2.1/examples/rset_ensemble.py +155 -0
  337. pyfds_evac-0.2.1/examples/walkthrough.py +145 -0
  338. pyfds_evac-0.2.1/pyfds_evac/__init__.py +91 -0
  339. pyfds_evac-0.2.1/pyfds_evac/__main__.py +6 -0
  340. pyfds_evac-0.2.1/pyfds_evac/cli.py +725 -0
  341. pyfds_evac-0.2.1/pyfds_evac/core/__init__.py +78 -0
  342. pyfds_evac-0.2.1/pyfds_evac/core/agent_scalars.py +76 -0
  343. pyfds_evac-0.2.1/pyfds_evac/core/agent_seed.py +178 -0
  344. pyfds_evac-0.2.1/pyfds_evac/core/cognitive_map.py +429 -0
  345. pyfds_evac-0.2.1/pyfds_evac/core/direct_steering_runtime.py +459 -0
  346. pyfds_evac-0.2.1/pyfds_evac/core/fds_coverage.py +234 -0
  347. pyfds_evac-0.2.1/pyfds_evac/core/fds_inventory.py +87 -0
  348. pyfds_evac-0.2.1/pyfds_evac/core/fds_sampling.py +400 -0
  349. pyfds_evac-0.2.1/pyfds_evac/core/fed.py +1583 -0
  350. pyfds_evac-0.2.1/pyfds_evac/core/geometry.py +60 -0
  351. pyfds_evac-0.2.1/pyfds_evac/core/manifest.py +242 -0
  352. pyfds_evac-0.2.1/pyfds_evac/core/premovement_distributions.py +126 -0
  353. pyfds_evac-0.2.1/pyfds_evac/core/route_graph.py +2904 -0
  354. pyfds_evac-0.2.1/pyfds_evac/core/run_config.py +613 -0
  355. pyfds_evac-0.2.1/pyfds_evac/core/scenario.py +3177 -0
  356. pyfds_evac-0.2.1/pyfds_evac/core/simulation_init.py +2754 -0
  357. pyfds_evac-0.2.1/pyfds_evac/core/smoke_speed.py +407 -0
  358. pyfds_evac-0.2.1/pyfds_evac/core/visibility.py +885 -0
  359. pyfds_evac-0.2.1/pyfds_evac/core/wkt_to_fds.py +421 -0
  360. pyfds_evac-0.2.1/pyfds_evac/webapp/__init__.py +5 -0
  361. pyfds_evac-0.2.1/pyfds_evac/webapp/app.py +2467 -0
  362. pyfds_evac-0.2.1/pyfds_evac/webapp/docs.py +398 -0
  363. pyfds_evac-0.2.1/pyfds_evac/webapp/launch.py +63 -0
  364. pyfds_evac-0.2.1/pyfds_evac/webapp/params.py +1025 -0
  365. pyfds_evac-0.2.1/pyfds_evac/webapp/plots.py +172 -0
  366. pyfds_evac-0.2.1/pyfds_evac/webapp/pyexport.py +316 -0
  367. pyfds_evac-0.2.1/pyfds_evac/webapp/runner.py +487 -0
  368. pyfds_evac-0.2.1/pyfds_evac/webapp/theme.py +1036 -0
  369. pyfds_evac-0.2.1/pyfds_evac/webapp/trajviz.py +981 -0
  370. pyfds_evac-0.2.1/pyproject.toml +111 -0
  371. pyfds_evac-0.2.1/run.py +17 -0
  372. pyfds_evac-0.2.1/scripts/ab_trajectories.py +179 -0
  373. pyfds_evac-0.2.1/scripts/animate_agents_smoke.py +463 -0
  374. pyfds_evac-0.2.1/scripts/animate_cognitive_map.py +500 -0
  375. pyfds_evac-0.2.1/scripts/brand/make_logo.py +189 -0
  376. pyfds_evac-0.2.1/scripts/docs/bundle_examples.py +283 -0
  377. pyfds_evac-0.2.1/scripts/docs/fire_blind_vs_coupled.py +1358 -0
  378. pyfds_evac-0.2.1/scripts/docs/first_fds_case_aset.py +833 -0
  379. pyfds_evac-0.2.1/scripts/docs/first_fds_case_figures.py +648 -0
  380. pyfds_evac-0.2.1/scripts/docs/schroeder2015_fire_figures.py +903 -0
  381. pyfds_evac-0.2.1/scripts/docs/schroeder2015_route.py +1469 -0
  382. pyfds_evac-0.2.1/scripts/docs/schroeder2020_reproduce.py +564 -0
  383. pyfds_evac-0.2.1/scripts/docs/schroeder_grid_figures.py +482 -0
  384. pyfds_evac-0.2.1/scripts/docs/schroeder_room_maps.py +2295 -0
  385. pyfds_evac-0.2.1/scripts/docs/smoke_speed_widget_data.py +43 -0
  386. pyfds_evac-0.2.1/scripts/docs/study_animations.py +777 -0
  387. pyfds_evac-0.2.1/scripts/fed_heat_hand_calc.py +65 -0
  388. pyfds_evac-0.2.1/scripts/figures/_cognitive_map_probe.py +142 -0
  389. pyfds_evac-0.2.1/scripts/figures/cognitive_map.py +297 -0
  390. pyfds_evac-0.2.1/scripts/figures/coming_from_premovement_presets.py +204 -0
  391. pyfds_evac-0.2.1/scripts/figures/empty_map_routes.py +435 -0
  392. pyfds_evac-0.2.1/scripts/figures/exposure_gate.py +385 -0
  393. pyfds_evac-0.2.1/scripts/figures/full_vs_discovery_paths.py +324 -0
  394. pyfds_evac-0.2.1/scripts/figures/fundamentals_aset_rset_timeline.py +196 -0
  395. pyfds_evac-0.2.1/scripts/figures/fundamentals_design_fires.py +286 -0
  396. pyfds_evac-0.2.1/scripts/figures/fundamentals_fed_co.py +143 -0
  397. pyfds_evac-0.2.1/scripts/figures/fundamentals_fed_co2.py +149 -0
  398. pyfds_evac-0.2.1/scripts/figures/fundamentals_fed_hcn.py +142 -0
  399. pyfds_evac-0.2.1/scripts/figures/fundamentals_fed_o2.py +142 -0
  400. pyfds_evac-0.2.1/scripts/figures/fundamentals_fic_denominators.py +114 -0
  401. pyfds_evac-0.2.1/scripts/figures/fundamentals_heat_iso.py +260 -0
  402. pyfds_evac-0.2.1/scripts/figures/fundamentals_irritant_speed.py +128 -0
  403. pyfds_evac-0.2.1/scripts/figures/fundamentals_speed_extinction.py +321 -0
  404. pyfds_evac-0.2.1/scripts/figures/fundamentals_speed_fractional.py +194 -0
  405. pyfds_evac-0.2.1/scripts/figures/fundamentals_speed_visibility.py +246 -0
  406. pyfds_evac-0.2.1/scripts/figures/fundamentals_visibility_constant.py +266 -0
  407. pyfds_evac-0.2.1/scripts/figures/fundamentals_visibility_irritant.py +190 -0
  408. pyfds_evac-0.2.1/scripts/figures/heat_radiant_threshold.py +228 -0
  409. pyfds_evac-0.2.1/scripts/figures/map_memory.py +248 -0
  410. pyfds_evac-0.2.1/scripts/figures/models_fic_combination.py +178 -0
  411. pyfds_evac-0.2.1/scripts/figures/sign_bearing.py +338 -0
  412. pyfds_evac-0.2.1/scripts/figures/sign_range_fds_evac.py +325 -0
  413. pyfds_evac-0.2.1/scripts/figures/sign_rotation.py +335 -0
  414. pyfds_evac-0.2.1/scripts/figures/speed_laws.py +130 -0
  415. pyfds_evac-0.2.1/scripts/figures/stage_graph.py +337 -0
  416. pyfds_evac-0.2.1/scripts/generate_cognitive_map_states.py +206 -0
  417. pyfds_evac-0.2.1/scripts/generate_discovery_world.py +411 -0
  418. pyfds_evac-0.2.1/scripts/generate_exit_visibility_map.py +241 -0
  419. pyfds_evac-0.2.1/scripts/generate_fed_guide_plot.py +99 -0
  420. pyfds_evac-0.2.1/scripts/generate_iso_table21_sweep.py +266 -0
  421. pyfds_evac-0.2.1/scripts/generate_iso_table22_stationary_plot.py +211 -0
  422. pyfds_evac-0.2.1/scripts/generate_routing_diagram.py +285 -0
  423. pyfds_evac-0.2.1/scripts/generate_smoke_density_speed_plot.py +108 -0
  424. pyfds_evac-0.2.1/scripts/generate_smoke_weight_sweep.py +105 -0
  425. pyfds_evac-0.2.1/scripts/generate_tenability_curves.py +184 -0
  426. pyfds_evac-0.2.1/scripts/generate_walkable_from_fds.py +366 -0
  427. pyfds_evac-0.2.1/scripts/golden_rerouting.py +765 -0
  428. pyfds_evac-0.2.1/scripts/inspect_fds.py +371 -0
  429. pyfds_evac-0.2.1/scripts/plot_fed_history.py +608 -0
  430. pyfds_evac-0.2.1/scripts/plot_route_costs.py +102 -0
  431. pyfds_evac-0.2.1/scripts/plot_smoke_history.py +170 -0
  432. pyfds_evac-0.2.1/scripts/plot_trajectories.py +293 -0
  433. pyfds_evac-0.2.1/scripts/plot_trajectories_by_speed.py +294 -0
  434. pyfds_evac-0.2.1/scripts/probe_fed.py +257 -0
  435. pyfds_evac-0.2.1/scripts/release_check.py +545 -0
  436. pyfds_evac-0.2.1/scripts/release_check.sh +154 -0
  437. pyfds_evac-0.2.1/scripts/release_check.toml +572 -0
  438. pyfds_evac-0.2.1/scripts/run_and_plot.sh +84 -0
  439. pyfds_evac-0.2.1/scripts/run_familiarity_comparison.py +374 -0
  440. pyfds_evac-0.2.1/scripts/sweep_queue_weight.py +334 -0
  441. pyfds_evac-0.2.1/scripts/verification/co_room_figures.py +684 -0
  442. pyfds_evac-0.2.1/scripts/verification/familiarity_figures.py +1311 -0
  443. pyfds_evac-0.2.1/scripts/verification/familiarity_run.py +70 -0
  444. pyfds_evac-0.2.1/scripts/verification/heat_radiometer.py +123 -0
  445. pyfds_evac-0.2.1/scripts/verification/heat_radiometer_figures.py +133 -0
  446. pyfds_evac-0.2.1/scripts/verification/heat_room_figures.py +997 -0
  447. pyfds_evac-0.2.1/scripts/verification/iso_test19_figures.py +775 -0
  448. pyfds_evac-0.2.1/scripts/verification/iso_test_18_figures.py +864 -0
  449. pyfds_evac-0.2.1/scripts/vis.py +8 -0
  450. pyfds_evac-0.2.1/tests/_legacy_routing.py +878 -0
  451. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/additive_anchor_allows.json +33 -0
  452. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/additive_anchor_refuses.json +18 -0
  453. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/additive_mild_nonvisible_anchor.json +15 -0
  454. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/agent_position_gate.json +33 -0
  455. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/better_path_additive.json +46 -0
  456. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/better_path_leaves_rejected.json +46 -0
  457. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/better_path_ten_percent.json +46 -0
  458. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/cognitive_map_known_exit.json +33 -0
  459. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/explore_already_committed.json +25 -0
  460. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/explore_frontier.json +33 -0
  461. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/gate_anchor_clean_bypass.json +33 -0
  462. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/gate_anchor_clean_over_dirty.json +33 -0
  463. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/gate_anchor_cleaner.json +33 -0
  464. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/gate_anchor_deadband_quicker.json +33 -0
  465. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/gate_anchor_deadband_slower.json +15 -0
  466. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/gate_fallback_slower_refused.json +15 -0
  467. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/gate_fallback_switch.json +33 -0
  468. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/gate_scan_lands_on_rejected.json +15 -0
  469. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/gate_scan_skips_to_second.json +33 -0
  470. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/initial_additive.json +26 -0
  471. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/initial_gate.json +26 -0
  472. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/must_flee_fed.json +33 -0
  473. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/must_flee_fed_additive.json +33 -0
  474. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/must_flee_impassable_additive.json +33 -0
  475. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/no_route_without_map.json +15 -0
  476. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/old_exit_unpriced.json +26 -0
  477. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/same_exit_committed_unknown.json +19 -0
  478. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/same_exit_idle.json +33 -0
  479. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/same_exit_no_change.json +32 -0
  480. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/source_is_exit.json +17 -0
  481. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/source_is_exit_initial.json +15 -0
  482. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/source_not_in_graph.json +15 -0
  483. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/wander_nowhere.json +15 -0
  484. pyfds_evac-0.2.1/tests/golden/evaluate_and_reroute/wander_patrol.json +33 -0
  485. pyfds_evac-0.2.1/tests/golden/rank_routes/additive_all_nonvisible.json +40 -0
  486. pyfds_evac-0.2.1/tests/golden/rank_routes/additive_clear.json +40 -0
  487. pyfds_evac-0.2.1/tests/golden/rank_routes/additive_fed_fallback.json +40 -0
  488. pyfds_evac-0.2.1/tests/golden/rank_routes/additive_fed_refuses.json +40 -0
  489. pyfds_evac-0.2.1/tests/golden/rank_routes/additive_nonvisible.json +40 -0
  490. pyfds_evac-0.2.1/tests/golden/rank_routes/additive_queue.json +40 -0
  491. pyfds_evac-0.2.1/tests/golden/rank_routes/additive_smoke_toll.json +40 -0
  492. pyfds_evac-0.2.1/tests/golden/rank_routes/additive_twin_paths_smoke.json +23 -0
  493. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_agent_position.json +40 -0
  494. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_anticipate_off.json +23 -0
  495. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_anticipate_on.json +23 -0
  496. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_clean_tier.json +40 -0
  497. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_clean_tier_current_margin.json +40 -0
  498. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_clear.json +40 -0
  499. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_cognitive_map.json +22 -0
  500. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_current_exit_discount.json +40 -0
  501. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_fallback_margin_keeps_current.json +40 -0
  502. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_fallback_no_current.json +40 -0
  503. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_fallback_rival_beats_margin.json +40 -0
  504. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_fed_and_tau.json +40 -0
  505. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_fed_refuses.json +40 -0
  506. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_fed_return_margin_current.json +40 -0
  507. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_fed_return_margin_rival.json +40 -0
  508. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_foresight_horizon.json +23 -0
  509. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_no_current_exit_same_field.json +40 -0
  510. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_no_route.json +3 -0
  511. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_queue.json +40 -0
  512. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_rival_return_margin.json +40 -0
  513. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_rival_without_current.json +40 -0
  514. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_source_is_exit.json +21 -0
  515. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_tau_length_relative.json +40 -0
  516. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_tau_orders_feasible.json +40 -0
  517. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_tau_refuses_near.json +40 -0
  518. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_three_exits.json +58 -0
  519. pyfds_evac-0.2.1/tests/golden/rank_routes/gate_twin_paths_smoke.json +23 -0
  520. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/bs_discovery_gate_fog.json +527 -0
  521. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/bs_discovery_gate_west.json +472 -0
  522. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/cm_memory_gate_side.json +212 -0
  523. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/eva_hidden_additive_near.json +102 -0
  524. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/eva_visible_gate_near.json +228 -0
  525. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/ft_discovery_additive_room.json +339 -0
  526. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/ft_discovery_gate_room.json +353 -0
  527. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/ft_full_additive_detour.json +578 -0
  528. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/ft_full_gate_detour.json +1050 -0
  529. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/tj_discovery_additive_ramp.json +832 -0
  530. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/tj_discovery_gate_ramp.json +866 -0
  531. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/tj_full_additive_ramp.json +1034 -0
  532. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/tj_full_gate_fallback.json +981 -0
  533. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/tj_full_gate_ramp.json +1209 -0
  534. pyfds_evac-0.2.1/tests/golden/scenarios/darwin-arm64/tj_mixed_additive_ramp.json +957 -0
  535. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/bs_discovery_gate_fog.json +527 -0
  536. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/bs_discovery_gate_west.json +472 -0
  537. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/cm_memory_gate_side.json +212 -0
  538. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/eva_hidden_additive_near.json +102 -0
  539. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/eva_visible_gate_near.json +228 -0
  540. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/ft_discovery_additive_room.json +339 -0
  541. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/ft_discovery_gate_room.json +353 -0
  542. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/ft_full_additive_detour.json +578 -0
  543. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/ft_full_gate_detour.json +1050 -0
  544. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/tj_discovery_additive_ramp.json +832 -0
  545. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/tj_discovery_gate_ramp.json +866 -0
  546. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/tj_full_additive_ramp.json +1034 -0
  547. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/tj_full_gate_fallback.json +981 -0
  548. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/tj_full_gate_ramp.json +1209 -0
  549. pyfds_evac-0.2.1/tests/golden/scenarios/linux-x86_64/tj_mixed_additive_ramp.json +957 -0
  550. pyfds_evac-0.2.1/tests/test_agent_path_state.py +176 -0
  551. pyfds_evac-0.2.1/tests/test_agent_scalars.py +217 -0
  552. pyfds_evac-0.2.1/tests/test_agent_seed.py +137 -0
  553. pyfds_evac-0.2.1/tests/test_blind_spawn_discovery.py +592 -0
  554. pyfds_evac-0.2.1/tests/test_cli_packaging.py +346 -0
  555. pyfds_evac-0.2.1/tests/test_cognitive_map_history.py +128 -0
  556. pyfds_evac-0.2.1/tests/test_cognitive_map_memory.py +276 -0
  557. pyfds_evac-0.2.1/tests/test_direct_steering_fallbacks.py +458 -0
  558. pyfds_evac-0.2.1/tests/test_direct_steering_runtime.py +133 -0
  559. pyfds_evac-0.2.1/tests/test_distribution_entrance.py +169 -0
  560. pyfds_evac-0.2.1/tests/test_distribution_seed.py +149 -0
  561. pyfds_evac-0.2.1/tests/test_docs_defaults.py +349 -0
  562. pyfds_evac-0.2.1/tests/test_example_downloads.py +214 -0
  563. pyfds_evac-0.2.1/tests/test_examples.py +79 -0
  564. pyfds_evac-0.2.1/tests/test_exit_door_width.py +202 -0
  565. pyfds_evac-0.2.1/tests/test_exit_visibility_alpha.py +238 -0
  566. pyfds_evac-0.2.1/tests/test_familiarity_no_journey.py +93 -0
  567. pyfds_evac-0.2.1/tests/test_familiarity_routing.py +619 -0
  568. pyfds_evac-0.2.1/tests/test_fds_domain.py +276 -0
  569. pyfds_evac-0.2.1/tests/test_fds_domain_defects.py +180 -0
  570. pyfds_evac-0.2.1/tests/test_fds_horizon.py +241 -0
  571. pyfds_evac-0.2.1/tests/test_fds_sampling.py +242 -0
  572. pyfds_evac-0.2.1/tests/test_fdsvismap_adapter.py +86 -0
  573. pyfds_evac-0.2.1/tests/test_fed.py +825 -0
  574. pyfds_evac-0.2.1/tests/test_fic_vs_fed_speed.py +161 -0
  575. pyfds_evac-0.2.1/tests/test_gate_exit_pricing.py +458 -0
  576. pyfds_evac-0.2.1/tests/test_generated_worlds.py +203 -0
  577. pyfds_evac-0.2.1/tests/test_golden_rerouting_script.py +459 -0
  578. pyfds_evac-0.2.1/tests/test_heat_endpoint.py +473 -0
  579. pyfds_evac-0.2.1/tests/test_heat_endpoint_docs.py +430 -0
  580. pyfds_evac-0.2.1/tests/test_heat_integrated_intensity.py +812 -0
  581. pyfds_evac-0.2.1/tests/test_heat_iso_clothing.py +390 -0
  582. pyfds_evac-0.2.1/tests/test_heat_layer_flux.py +616 -0
  583. pyfds_evac-0.2.1/tests/test_heat_only_case.py +195 -0
  584. pyfds_evac-0.2.1/tests/test_heat_radiant_threshold.py +268 -0
  585. pyfds_evac-0.2.1/tests/test_heat_sigma_225.py +118 -0
  586. pyfds_evac-0.2.1/tests/test_heat_total_flux.py +546 -0
  587. pyfds_evac-0.2.1/tests/test_incapacitation.py +74 -0
  588. pyfds_evac-0.2.1/tests/test_initial_exit_from_cognitive_map.py +212 -0
  589. pyfds_evac-0.2.1/tests/test_initial_exit_per_agent.py +144 -0
  590. pyfds_evac-0.2.1/tests/test_iso_table21_coupled.py +220 -0
  591. pyfds_evac-0.2.1/tests/test_iso_table22_coupled.py +244 -0
  592. pyfds_evac-0.2.1/tests/test_manifest.py +184 -0
  593. pyfds_evac-0.2.1/tests/test_model_speed_attrs.py +100 -0
  594. pyfds_evac-0.2.1/tests/test_no_journey_routing_origin.py +206 -0
  595. pyfds_evac-0.2.1/tests/test_premovement_default.py +138 -0
  596. pyfds_evac-0.2.1/tests/test_progress_callback.py +27 -0
  597. pyfds_evac-0.2.1/tests/test_public_api.py +48 -0
  598. pyfds_evac-0.2.1/tests/test_rerouting_golden.py +1363 -0
  599. pyfds_evac-0.2.1/tests/test_rerouting_smoke_sweep.py +191 -0
  600. pyfds_evac-0.2.1/tests/test_route_assessment.py +270 -0
  601. pyfds_evac-0.2.1/tests/test_route_gate.py +344 -0
  602. pyfds_evac-0.2.1/tests/test_route_graph.py +2974 -0
  603. pyfds_evac-0.2.1/tests/test_route_smoke_integral.py +507 -0
  604. pyfds_evac-0.2.1/tests/test_routing_refactor_equivalence.py +1526 -0
  605. pyfds_evac-0.2.1/tests/test_run_config.py +190 -0
  606. pyfds_evac-0.2.1/tests/test_run_outcome.py +217 -0
  607. pyfds_evac-0.2.1/tests/test_scalar_familiarity.py +169 -0
  608. pyfds_evac-0.2.1/tests/test_scenario_loading.py +839 -0
  609. pyfds_evac-0.2.1/tests/test_scheduled_exits.py +297 -0
  610. pyfds_evac-0.2.1/tests/test_skimage_line_contract.py +63 -0
  611. pyfds_evac-0.2.1/tests/test_slice_node_index.py +170 -0
  612. pyfds_evac-0.2.1/tests/test_smoke_blind.py +273 -0
  613. pyfds_evac-0.2.1/tests/test_smoke_speed.py +426 -0
  614. pyfds_evac-0.2.1/tests/test_smoke_speed_widget.py +76 -0
  615. pyfds_evac-0.2.1/tests/test_spawn_key_seeding.py +425 -0
  616. pyfds_evac-0.2.1/tests/test_spawn_placement.py +499 -0
  617. pyfds_evac-0.2.1/tests/test_speed_update_pin.py +608 -0
  618. pyfds_evac-0.2.1/tests/test_speed_update_skip.py +146 -0
  619. pyfds_evac-0.2.1/tests/test_station_validate.py +273 -0
  620. pyfds_evac-0.2.1/tests/test_thin_exit.py +178 -0
  621. pyfds_evac-0.2.1/tests/test_throttled_exit_without_journey.py +190 -0
  622. pyfds_evac-0.2.1/tests/test_v0_default.py +22 -0
  623. pyfds_evac-0.2.1/tests/test_visibility.py +412 -0
  624. pyfds_evac-0.2.1/tests/test_webapp.py +2345 -0
  625. pyfds_evac-0.2.1/tests/test_wkt_to_fds.py +194 -0
  626. pyfds_evac-0.2.1/tests/verification/README.md +65 -0
  627. pyfds_evac-0.2.1/tests/verification/conftest.py +15 -0
  628. pyfds_evac-0.2.1/tests/verification/fields.py +84 -0
  629. pyfds_evac-0.2.1/tests/verification/golden/heat_default/README.md +33 -0
  630. pyfds_evac-0.2.1/tests/verification/golden/heat_default/fed_history.csv +61 -0
  631. pyfds_evac-0.2.1/tests/verification/golden/heat_default/make_baseline.py +92 -0
  632. pyfds_evac-0.2.1/tests/verification/golden/heat_default/manifest.json +12 -0
  633. pyfds_evac-0.2.1/tests/verification/golden/heat_default/reseed_baseline.py +75 -0
  634. pyfds_evac-0.2.1/tests/verification/harness.py +548 -0
  635. pyfds_evac-0.2.1/tests/verification/test_cognitive_map_verif.py +203 -0
  636. pyfds_evac-0.2.1/tests/verification/test_fed_fic_all_zones.py +104 -0
  637. pyfds_evac-0.2.1/tests/verification/test_fed_slice_height.py +62 -0
  638. pyfds_evac-0.2.1/tests/verification/test_fed_verif.py +220 -0
  639. pyfds_evac-0.2.1/tests/verification/test_heat_endpoint_coupled.py +364 -0
  640. pyfds_evac-0.2.1/tests/verification/test_heat_endpoint_outputs.py +153 -0
  641. pyfds_evac-0.2.1/tests/verification/test_heat_fed_verif.py +509 -0
  642. pyfds_evac-0.2.1/tests/verification/test_heat_flame_pass_reference.py +169 -0
  643. pyfds_evac-0.2.1/tests/verification/test_heat_integrated_intensity_coupled.py +360 -0
  644. pyfds_evac-0.2.1/tests/verification/test_heat_layer_flux_coupled.py +214 -0
  645. pyfds_evac-0.2.1/tests/verification/test_heat_radiometer.py +610 -0
  646. pyfds_evac-0.2.1/tests/verification/test_heat_room_decks.py +163 -0
  647. pyfds_evac-0.2.1/tests/verification/test_heat_total_flux_coupled.py +230 -0
  648. pyfds_evac-0.2.1/tests/verification/test_premovement_verif.py +195 -0
  649. pyfds_evac-0.2.1/tests/verification/test_s1_corridor_fed.py +237 -0
  650. pyfds_evac-0.2.1/tests/verification/test_s2_corridor_speed.py +298 -0
  651. pyfds_evac-0.2.1/tests/verification/test_s4_tjunction_reroute.py +226 -0
  652. pyfds_evac-0.2.1/tests/verification/test_s6_heat_fed.py +198 -0
  653. pyfds_evac-0.2.1/tests/verification/test_smoke_speed_verif.py +100 -0
  654. pyfds_evac-0.2.1/tests/verification/test_speed_update_coupling.py +270 -0
  655. pyfds_evac-0.2.1/tests/verification/test_vis_slice_height.py +81 -0
  656. pyfds_evac-0.2.1/uv.lock +2216 -0
@@ -0,0 +1,256 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *~
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/#use-with-ide
110
+ .pdm.toml
111
+
112
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113
+ __pypackages__/
114
+
115
+ # Celery stuff
116
+ celerybeat-schedule
117
+ celerybeat.pid
118
+
119
+ # SageMath parsed files
120
+ *.sage.py
121
+
122
+ # FastHTML session signing key (web GUI)
123
+ .sesskey
124
+
125
+ # Web GUI default output directory (scenario run artifacts)
126
+ /results/
127
+
128
+ # Web GUI scenario uploads (user-supplied config.json + geometry.wkt)
129
+ /uploads/
130
+
131
+ # Environments
132
+ .env
133
+ .venv
134
+ env/
135
+ venv/
136
+ ENV/
137
+ env.bak/
138
+ venv.bak/
139
+
140
+ # Spyder project settings
141
+ .spyderproject
142
+ .spyproject
143
+
144
+ # Rope project settings
145
+ .ropeproject
146
+
147
+
148
+ # mypy
149
+ .mypy_cache/
150
+ .dmypy.json
151
+ dmypy.json
152
+
153
+ # Pyre type checker
154
+ .pyre/
155
+
156
+ # pytype static type analyzer
157
+ .pytype/
158
+
159
+ # Cython debug symbols
160
+ cython_debug/
161
+
162
+ # PyCharm
163
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
164
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
165
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
166
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
167
+ .idea/
168
+
169
+ # Data
170
+ processed_data
171
+
172
+ # Legacy: local FDS run output from before decks moved into assets/.
173
+ # Nothing here is tracked any more; safe to delete once the runs are archived.
174
+ fds_directory
175
+
176
+ # FDS run output inside assets/<scenario>/. The deck, config.json, geometry.wkt
177
+ # and preview images stay tracked; everything FDS generates beside them does
178
+ # not. A single run drops well over a hundred of these files.
179
+ assets/**/*.out
180
+ assets/**/*.smv
181
+ assets/**/*.s3d
182
+ assets/**/*.s3d.sz
183
+ assets/**/*.sf
184
+ assets/**/*.sf.bnd
185
+ assets/**/*.sf.gbnd
186
+ assets/**/*.bf
187
+ assets/**/*.bf.bnd
188
+ assets/**/*.q
189
+ assets/**/*.iso
190
+ assets/**/*.prt5
191
+ assets/**/*.prt5.bnd
192
+ assets/**/*.prt5.sz
193
+ assets/**/*.pickle
194
+ assets/**/*.end
195
+ assets/**/*.restart
196
+ assets/**/*_cpu.csv
197
+ assets/**/*_devc.csv
198
+ assets/**/*_hrr.csv
199
+ assets/**/*_steps.csv
200
+ assets/**/*_git.txt
201
+ assets/**/vismap_cache.npz
202
+
203
+ # Local working artifacts
204
+ .worktrees/
205
+ results/
206
+ *.zip
207
+ *.s3d.sz
208
+ *.~undo-tree~
209
+ *vismap_cache.pkl
210
+ *.smoke.json.gz
211
+
212
+ # Top-level CSV outputs from demo runs
213
+ /fed.csv
214
+ /probe.csv
215
+ /smoke.csv
216
+ /routes.csv
217
+ /route_costs.csv
218
+ .gstack/
219
+
220
+ # Reference materials and PDFs (kept locally, not tracked)
221
+ *.pdf
222
+ materials/
223
+
224
+ # Retired scenarios. Kept on disk for local reference, no longer tracked.
225
+ # assets/demo2 was a near-duplicate of the T-junction case (now assets/t_junction);
226
+ # the beam detectors are bare FDS decks with no scenario config; fed_incap_co_v1/v2
227
+ # and _smol are superseded by the 2000/4000/8000 ppm ladder.
228
+ /assets/demo2/
229
+ /assets/beam_detector_no_mesh/
230
+ /assets/beam_detector_w_mesh/
231
+ /assets/fed_incap_co_v1/
232
+ /assets/fed_incap_co_v2/
233
+ /assets/fed_incap_co_smol/
234
+
235
+ # Model-level fixtures, retired with the same treatment. These exercised the
236
+ # JuPedSim layer with no fire: basic (flow spawning), social_force (alternate
237
+ # model plus checkpoint journeys) and haspel (config only, never had a geometry
238
+ # or a deck). All three remain in git history.
239
+ /assets/basic/
240
+ /assets/social_force/
241
+ /assets/haspel/
242
+
243
+ # assets/Haspel (capital H) is a different, live scenario -- the real BUW HC
244
+ # building -- but git's default case-insensitive matching makes the retired
245
+ # lowercase rule above swallow it too. Carve it back out explicitly.
246
+ !/assets/Haspel/
247
+ !/assets/Haspel/**
248
+
249
+ # The 50x50 m corn maze pair. Never had an FDS deck, so it could only ever test
250
+ # pure-distance wayfinding; the familiarity_test_* pair covers the same
251
+ # full-vs-discovery question on a smaller plan that does have a fire.
252
+ /assets/maze_test_full/
253
+ /assets/maze_test_discovery/
254
+
255
+ # Generated by scripts/docs/bundle_examples.py
256
+ site/data/example_bundles.json