pycfast 0.2.0__tar.gz → 0.2.2__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 (567) hide show
  1. pycfast-0.2.2/.dockerignore +18 -0
  2. pycfast-0.2.2/.github/ISSUE_TEMPLATE/bug_report.md +51 -0
  3. pycfast-0.2.2/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  4. pycfast-0.2.2/.github/copilot-commit-message-instructions.md +44 -0
  5. pycfast-0.2.2/.github/copilot-instructions.md +29 -0
  6. pycfast-0.2.2/.github/dependabot.yml +27 -0
  7. pycfast-0.2.2/.github/workflows/docker-image.yml +110 -0
  8. pycfast-0.2.2/.github/workflows/docs.yml +115 -0
  9. pycfast-0.2.2/.github/workflows/joss.yml +38 -0
  10. pycfast-0.2.2/.github/workflows/python-publish.yml +67 -0
  11. pycfast-0.2.2/.github/workflows/sync-cfast-inputs.yml +100 -0
  12. pycfast-0.2.2/.github/workflows/sync-cfast-ref-doc.yml +109 -0
  13. pycfast-0.2.2/.github/workflows/test.yml +278 -0
  14. pycfast-0.2.2/.github/workflows/typing.yml +27 -0
  15. pycfast-0.2.2/.github/workflows/validation.yml +81 -0
  16. pycfast-0.2.2/.gitignore +216 -0
  17. pycfast-0.2.2/.pre-commit-config.yaml +8 -0
  18. pycfast-0.2.2/CHANGELOG.md +91 -0
  19. pycfast-0.2.2/CITATION.cff +40 -0
  20. pycfast-0.2.2/CLAUDE.md +103 -0
  21. pycfast-0.2.2/CODE_OF_CONDUCT.md +128 -0
  22. pycfast-0.2.2/CONTRIBUTING.md +195 -0
  23. pycfast-0.2.2/Dockerfile +75 -0
  24. pycfast-0.2.2/Makefile +95 -0
  25. {pycfast-0.2.0/src/pycfast.egg-info → pycfast-0.2.2}/PKG-INFO +118 -51
  26. {pycfast-0.2.0 → pycfast-0.2.2}/README.md +35 -3
  27. pycfast-0.2.2/conftest.py +122 -0
  28. pycfast-0.2.2/docs/Makefile +20 -0
  29. pycfast-0.2.2/docs/cfast-reference/.cfast_version +1 -0
  30. pycfast-0.2.2/docs/cfast-reference/Appendix_CFAST_Keywords.tex +1051 -0
  31. pycfast-0.2.2/docs/cfast-reference/CFAST_Users_Guide.tex +154 -0
  32. pycfast-0.2.2/docs/cfast-reference/Getting_Started_Chapter.tex +59 -0
  33. pycfast-0.2.2/docs/cfast-reference/Input_File_Chapter.tex +765 -0
  34. pycfast-0.2.2/docs/cfast-reference/Limits_Chapter.tex +28 -0
  35. pycfast-0.2.2/docs/cfast-reference/Output_Chapter.tex +599 -0
  36. pycfast-0.2.2/docs/cfast-reference/make_guide.bat +20 -0
  37. pycfast-0.2.2/docs/cfast-reference/make_guide.sh +50 -0
  38. pycfast-0.2.2/docs/make.bat +35 -0
  39. pycfast-0.2.2/docs/source/_static/custom.css +7 -0
  40. pycfast-0.2.2/docs/source/_static/images/cedit-ceiling-floor-vents-tab.png +0 -0
  41. pycfast-0.2.2/docs/source/_static/images/cedit-compartments-tab.png +0 -0
  42. pycfast-0.2.2/docs/source/_static/images/cedit-fires-tab.png +0 -0
  43. pycfast-0.2.2/docs/source/_static/images/cedit-material-properties-tab.png +0 -0
  44. pycfast-0.2.2/docs/source/_static/images/cedit-mechanical-ventilation-tab.png +0 -0
  45. pycfast-0.2.2/docs/source/_static/images/cedit-simulation-tab.png +0 -0
  46. pycfast-0.2.2/docs/source/_static/images/cedit-surface-connections-tab.png +0 -0
  47. pycfast-0.2.2/docs/source/_static/images/cedit-targets-tab.png +0 -0
  48. pycfast-0.2.2/docs/source/_static/images/cedit-wall-vents-tab.png +0 -0
  49. pycfast-0.2.2/docs/source/_static/images/cfast-cmd-win.png +0 -0
  50. pycfast-0.2.2/docs/source/_static/images/pycfast-workflow.svg +67 -0
  51. pycfast-0.2.2/docs/source/_static/orano-logo-dark.svg +167 -0
  52. pycfast-0.2.2/docs/source/_static/orano-logo.svg +167 -0
  53. pycfast-0.2.2/docs/source/_templates/autosummary/class.rst +7 -0
  54. pycfast-0.2.2/docs/source/_templates/pycfast_footer.html +3 -0
  55. pycfast-0.2.2/docs/source/acknowledgments.rst +30 -0
  56. pycfast-0.2.2/docs/source/api/cfastmodel.rst +13 -0
  57. pycfast-0.2.2/docs/source/api/components.rst +24 -0
  58. pycfast-0.2.2/docs/source/api/datasets.rst +14 -0
  59. pycfast-0.2.2/docs/source/api/index.rst +13 -0
  60. pycfast-0.2.2/docs/source/api/parser.rst +15 -0
  61. pycfast-0.2.2/docs/source/changelog.rst +2 -0
  62. pycfast-0.2.2/docs/source/citation.rst +15 -0
  63. pycfast-0.2.2/docs/source/conf.py +153 -0
  64. pycfast-0.2.2/docs/source/contributing.rst +2 -0
  65. pycfast-0.2.2/docs/source/examples.rst +5 -0
  66. pycfast-0.2.2/docs/source/getting_started.rst +244 -0
  67. pycfast-0.2.2/docs/source/index.rst +113 -0
  68. pycfast-0.2.2/docs/source/installation.rst +195 -0
  69. pycfast-0.2.2/docs/source/license.rst +5 -0
  70. pycfast-0.2.2/docs/update_cfast_ref.sh +56 -0
  71. pycfast-0.2.2/examples/GALLERY_HEADER.rst +6 -0
  72. pycfast-0.2.2/examples/data/PRS_D1.in +190 -0
  73. pycfast-0.2.2/examples/data/SP_AST_Diesel_1p1.in +51 -0
  74. pycfast-0.2.2/examples/data/USN_Hawaii_Test_03.in +32 -0
  75. pycfast-0.2.2/examples/plot_01_basic_usage.py +462 -0
  76. pycfast-0.2.2/examples/plot_02_parsing_cfast_input_files.py +109 -0
  77. pycfast-0.2.2/examples/plot_03_generating_data.py +145 -0
  78. pycfast-0.2.2/examples/plot_04_sensitivity_analysis.py +285 -0
  79. pycfast-0.2.2/examples/plot_05_optimization.py +471 -0
  80. pycfast-0.2.2/examples/plot_06_surrogate_models.py +509 -0
  81. pycfast-0.2.2/examples/plot_07_parallel_computing.py +265 -0
  82. pycfast-0.2.2/paper/images/cedit-compartments-tab.png +0 -0
  83. pycfast-0.2.2/paper/literature_review.md +58 -0
  84. pycfast-0.2.2/paper/paper.bib +431 -0
  85. pycfast-0.2.2/paper/paper.md +272 -0
  86. {pycfast-0.2.0 → pycfast-0.2.2}/pyproject.toml +11 -10
  87. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/__init__.py +6 -1
  88. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/_base_component.py +6 -1
  89. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/ceiling_floor_vent.py +16 -12
  90. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/compartment.py +131 -38
  91. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/datasets/_sp_ast_diesel.py +2 -4
  92. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/device.py +70 -53
  93. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/fire.py +637 -259
  94. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/material.py +3 -1
  95. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/mechanical_vent.py +31 -27
  96. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/model.py +102 -20
  97. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/parsers/cfast_parser.py +89 -38
  98. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/surface_connection.py +10 -2
  99. pycfast-0.2.2/src/pycfast/visualization.py +329 -0
  100. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/wall_vent.py +9 -6
  101. pycfast-0.2.2/tests/csv_comparison.py +118 -0
  102. pycfast-0.2.2/tests/generate_reference_data.py +98 -0
  103. pycfast-0.2.2/tests/sync_cfast_inputs.sh +63 -0
  104. pycfast-0.2.2/tests/units/test__sp_ast_diesel.py +62 -0
  105. pycfast-0.2.2/tests/units/test_ceiling_floor_vent.py +547 -0
  106. pycfast-0.2.2/tests/units/test_cfast_parser.py +1206 -0
  107. pycfast-0.2.2/tests/units/test_compartment.py +628 -0
  108. pycfast-0.2.2/tests/units/test_device.py +926 -0
  109. pycfast-0.2.2/tests/units/test_fire.py +986 -0
  110. pycfast-0.2.2/tests/units/test_material.py +249 -0
  111. pycfast-0.2.2/tests/units/test_mechanical_vent.py +576 -0
  112. pycfast-0.2.2/tests/units/test_model.py +2019 -0
  113. pycfast-0.2.2/tests/units/test_simulation_environment.py +368 -0
  114. pycfast-0.2.2/tests/units/test_surface_connection.py +248 -0
  115. pycfast-0.2.2/tests/units/test_visualization.py +208 -0
  116. pycfast-0.2.2/tests/units/test_wall_vent.py +517 -0
  117. pycfast-0.2.2/tests/validation_tests/Validation/1RFURN/1RFURN1.in +42 -0
  118. pycfast-0.2.2/tests/validation_tests/Validation/1RFURN/1RFURN6.in +41 -0
  119. pycfast-0.2.2/tests/validation_tests/Validation/1RWALL/1RWALL1.in +45 -0
  120. pycfast-0.2.2/tests/validation_tests/Validation/1RWALL/1RWALL2.in +42 -0
  121. pycfast-0.2.2/tests/validation_tests/Validation/ATF_Corridors/ATF_Corridors_050_kW.in +63 -0
  122. pycfast-0.2.2/tests/validation_tests/Validation/ATF_Corridors/ATF_Corridors_100_kW.in +63 -0
  123. pycfast-0.2.2/tests/validation_tests/Validation/ATF_Corridors/ATF_Corridors_240_kW.in +63 -0
  124. pycfast-0.2.2/tests/validation_tests/Validation/ATF_Corridors/ATF_Corridors_250_kW.in +63 -0
  125. pycfast-0.2.2/tests/validation_tests/Validation/ATF_Corridors/ATF_Corridors_500_kW.in +63 -0
  126. pycfast-0.2.2/tests/validation_tests/Validation/ATF_Corridors/ATF_Corridors_Mix_kW.in +74 -0
  127. pycfast-0.2.2/tests/validation_tests/Validation/DelCo_Trainers/Test_02.in +84 -0
  128. pycfast-0.2.2/tests/validation_tests/Validation/DelCo_Trainers/Test_03.in +84 -0
  129. pycfast-0.2.2/tests/validation_tests/Validation/DelCo_Trainers/Test_04.in +84 -0
  130. pycfast-0.2.2/tests/validation_tests/Validation/DelCo_Trainers/Test_05.in +110 -0
  131. pycfast-0.2.2/tests/validation_tests/Validation/DelCo_Trainers/Test_06.in +109 -0
  132. pycfast-0.2.2/tests/validation_tests/Validation/DelCo_Trainers/Test_22.in +130 -0
  133. pycfast-0.2.2/tests/validation_tests/Validation/DelCo_Trainers/Test_23.in +130 -0
  134. pycfast-0.2.2/tests/validation_tests/Validation/DelCo_Trainers/Test_24.in +130 -0
  135. pycfast-0.2.2/tests/validation_tests/Validation/DelCo_Trainers/Test_25.in +130 -0
  136. pycfast-0.2.2/tests/validation_tests/Validation/FM_NBS/FM19.in +59 -0
  137. pycfast-0.2.2/tests/validation_tests/Validation/FM_NBS/FM21.in +59 -0
  138. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_1.in +44 -0
  139. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_10.in +47 -0
  140. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_11.in +46 -0
  141. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_12.in +53 -0
  142. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_13.in +46 -0
  143. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_14.in +46 -0
  144. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_15.in +46 -0
  145. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_16.in +46 -0
  146. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_17.in +46 -0
  147. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_2.in +44 -0
  148. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_21.in +48 -0
  149. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_22.in +48 -0
  150. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_3.in +45 -0
  151. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_4.in +48 -0
  152. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_5.in +49 -0
  153. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_6.in +46 -0
  154. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_7.in +46 -0
  155. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_8.in +49 -0
  156. pycfast-0.2.2/tests/validation_tests/Validation/FM_SNL/FMSNL_9.in +49 -0
  157. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_1t1_100_kW.in +533 -0
  158. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_1t1_150_kW.in +533 -0
  159. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_1t1_200_kW.in +533 -0
  160. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_1t1_250_kW.in +533 -0
  161. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_1t1_300_kW.in +533 -0
  162. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_2t1_100_kW.in +533 -0
  163. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_2t1_150_kW.in +533 -0
  164. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_2t1_200_kW.in +533 -0
  165. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_2t1_250_kW.in +533 -0
  166. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_2t1_300_kW.in +533 -0
  167. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_3t1_100_kW.in +533 -0
  168. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_3t1_150_kW.in +533 -0
  169. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_3t1_200_kW.in +533 -0
  170. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_3t1_250_kW.in +533 -0
  171. pycfast-0.2.2/tests/validation_tests/Validation/Fleury_Heat_Flux/Fleury_3t1_300_kW.in +533 -0
  172. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Hawaii_Test_01.in +32 -0
  173. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Hawaii_Test_02.in +32 -0
  174. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Hawaii_Test_03.in +32 -0
  175. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Hawaii_Test_04.in +32 -0
  176. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Hawaii_Test_05.in +32 -0
  177. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Hawaii_Test_06.in +32 -0
  178. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Hawaii_Test_07.in +32 -0
  179. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Hawaii_Test_11.in +32 -0
  180. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_01.in +82 -0
  181. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_02.in +82 -0
  182. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_03.in +82 -0
  183. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_04.in +82 -0
  184. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_05.in +82 -0
  185. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_06.in +82 -0
  186. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_07.in +82 -0
  187. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_09.in +82 -0
  188. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_10.in +82 -0
  189. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_11.in +82 -0
  190. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_12.in +82 -0
  191. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_13.in +82 -0
  192. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_14.in +82 -0
  193. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_15.in +82 -0
  194. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_17.in +82 -0
  195. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_18.in +82 -0
  196. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_19.in +82 -0
  197. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_20.in +82 -0
  198. pycfast-0.2.2/tests/validation_tests/Validation/High_Bay/USN_Iceland_Test_21.in +103 -0
  199. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_01.in +34 -0
  200. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_02.in +34 -0
  201. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_03.in +34 -0
  202. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_04.in +34 -0
  203. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_05.in +34 -0
  204. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_06.in +34 -0
  205. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_07.in +34 -0
  206. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_08.in +34 -0
  207. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_09.in +36 -0
  208. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_10.in +36 -0
  209. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_11.in +36 -0
  210. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_12.in +36 -0
  211. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_13.in +36 -0
  212. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_14.in +36 -0
  213. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_15.in +36 -0
  214. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_16.in +36 -0
  215. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_17.in +48 -0
  216. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_18.in +48 -0
  217. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_19.in +48 -0
  218. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_20.in +48 -0
  219. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_21.in +48 -0
  220. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_22.in +48 -0
  221. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_23.in +48 -0
  222. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_24.in +48 -0
  223. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_25.in +48 -0
  224. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_26.in +48 -0
  225. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_27.in +48 -0
  226. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_28.in +48 -0
  227. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_29.in +48 -0
  228. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_30.in +53 -0
  229. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_31.in +53 -0
  230. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_32.in +48 -0
  231. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_33.in +48 -0
  232. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_34.in +48 -0
  233. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_35.in +48 -0
  234. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_36.in +48 -0
  235. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_37.in +48 -0
  236. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_38.in +48 -0
  237. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_39.in +48 -0
  238. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_40.in +48 -0
  239. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_41.in +50 -0
  240. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_42.in +48 -0
  241. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_43.in +44 -0
  242. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_44.in +48 -0
  243. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_45.in +44 -0
  244. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_46.in +48 -0
  245. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_47.in +44 -0
  246. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_48.in +44 -0
  247. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_49.in +48 -0
  248. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_50.in +48 -0
  249. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_51.in +48 -0
  250. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_52.in +48 -0
  251. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_53.in +48 -0
  252. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_54.in +48 -0
  253. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_55.in +48 -0
  254. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_56.in +48 -0
  255. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_57.in +48 -0
  256. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_58.in +48 -0
  257. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_59.in +48 -0
  258. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_60.in +44 -0
  259. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_61.in +32 -0
  260. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_62.in +32 -0
  261. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_63.in +32 -0
  262. pycfast-0.2.2/tests/validation_tests/Validation/LLNL_Enclosure/LLNL_64.in +32 -0
  263. pycfast-0.2.2/tests/validation_tests/Validation/Multi/Multi.in +85 -0
  264. pycfast-0.2.2/tests/validation_tests/Validation/NBS/MV100A.in +62 -0
  265. pycfast-0.2.2/tests/validation_tests/Validation/NBS/MV100O.in +62 -0
  266. pycfast-0.2.2/tests/validation_tests/Validation/NBS/MV100Z.in +62 -0
  267. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Dunes_2000/NIST_Dunes_2000_SDC02.in +149 -0
  268. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Dunes_2000/NIST_Dunes_2000_SDC05.in +151 -0
  269. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Dunes_2000/NIST_Dunes_2000_SDC07.in +149 -0
  270. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Dunes_2000/NIST_Dunes_2000_SDC09.in +122 -0
  271. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Dunes_2000/NIST_Dunes_2000_SDC10.in +149 -0
  272. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Dunes_2000/NIST_Dunes_2000_SDC33.in +149 -0
  273. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Dunes_2000/NIST_Dunes_2000_SDC35.in +149 -0
  274. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Dunes_2000/NIST_Dunes_2000_SDC38.in +149 -0
  275. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Dunes_2000/NIST_Dunes_2000_SDC39.in +149 -0
  276. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T1.in +90 -0
  277. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T10.in +96 -0
  278. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T13.in +90 -0
  279. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T14.in +90 -0
  280. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T15.in +90 -0
  281. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T16.in +96 -0
  282. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T17.in +90 -0
  283. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T18.in +90 -0
  284. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T2.in +90 -0
  285. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T3.in +90 -0
  286. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T4.in +94 -0
  287. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T5.in +96 -0
  288. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T7.in +90 -0
  289. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T8.in +90 -0
  290. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC/NIST_NRC_T9.in +90 -0
  291. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_01.in +394 -0
  292. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_02.in +402 -0
  293. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_03.in +388 -0
  294. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_04.in +390 -0
  295. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_05.in +392 -0
  296. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_06.in +400 -0
  297. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_07.in +388 -0
  298. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_08.in +388 -0
  299. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_09.in +390 -0
  300. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_10.in +388 -0
  301. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_11.in +379 -0
  302. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/cabinet_12.in +379 -0
  303. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/corner_200_kW.in +92 -0
  304. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/corner_300_kW.in +92 -0
  305. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/corner_400_kW.in +92 -0
  306. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/wall_200_kW.in +92 -0
  307. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/wall_300_kW.in +92 -0
  308. pycfast-0.2.2/tests/validation_tests/Validation/NIST_NRC_Corner_Effects/wall_400_kW.in +92 -0
  309. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_1.in +49 -0
  310. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_10.in +49 -0
  311. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_11.in +49 -0
  312. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_12.in +49 -0
  313. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_13.in +52 -0
  314. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_14.in +53 -0
  315. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_15.in +53 -0
  316. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_2.in +49 -0
  317. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_3.in +49 -0
  318. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_4.in +49 -0
  319. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_5.in +49 -0
  320. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_6.in +49 -0
  321. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_7.in +51 -0
  322. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_8.in +51 -0
  323. pycfast-0.2.2/tests/validation_tests/Validation/NIST_Vent_Study/Test_9.in +51 -0
  324. pycfast-0.2.2/tests/validation_tests/Validation/PRISME/PRS_D1.in +190 -0
  325. pycfast-0.2.2/tests/validation_tests/Validation/PRISME/PRS_D2.in +186 -0
  326. pycfast-0.2.2/tests/validation_tests/Validation/PRISME/PRS_D3.in +183 -0
  327. pycfast-0.2.2/tests/validation_tests/Validation/PRISME/PRS_D4.in +184 -0
  328. pycfast-0.2.2/tests/validation_tests/Validation/PRISME/PRS_D5.in +187 -0
  329. pycfast-0.2.2/tests/validation_tests/Validation/PRISME/PRS_D6.in +196 -0
  330. pycfast-0.2.2/tests/validation_tests/Validation/SP_AST/SP_AST_Diesel_1p1.in +51 -0
  331. pycfast-0.2.2/tests/validation_tests/Validation/SP_AST/SP_AST_Diesel_1p9.in +49 -0
  332. pycfast-0.2.2/tests/validation_tests/Validation/SP_AST/SP_AST_Heptane_1p1.in +49 -0
  333. pycfast-0.2.2/tests/validation_tests/Validation/SP_AST/SP_AST_Test_1.in +116 -0
  334. pycfast-0.2.2/tests/validation_tests/Validation/SP_AST/SP_AST_Test_2.in +116 -0
  335. pycfast-0.2.2/tests/validation_tests/Validation/SP_AST/SP_AST_Test_3.in +116 -0
  336. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_010.in +28 -0
  337. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_011.in +28 -0
  338. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_012.in +28 -0
  339. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_013.in +28 -0
  340. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_014.in +28 -0
  341. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_016.in +28 -0
  342. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_017.in +28 -0
  343. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_018.in +28 -0
  344. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_019.in +28 -0
  345. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_020.in +28 -0
  346. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_021.in +28 -0
  347. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_022.in +28 -0
  348. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_023.in +28 -0
  349. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_030.in +28 -0
  350. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_041.in +28 -0
  351. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_114.in +28 -0
  352. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_116.in +28 -0
  353. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_122.in +28 -0
  354. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_144.in +28 -0
  355. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_160.in +28 -0
  356. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_161.in +28 -0
  357. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_162.in +28 -0
  358. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_163.in +28 -0
  359. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_164.in +28 -0
  360. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_165.in +28 -0
  361. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_166.in +28 -0
  362. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_167.in +28 -0
  363. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_210.in +28 -0
  364. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_212.in +28 -0
  365. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_220.in +28 -0
  366. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_221.in +28 -0
  367. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_224.in +28 -0
  368. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_240.in +28 -0
  369. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_242.in +28 -0
  370. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_310.in +28 -0
  371. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_324.in +28 -0
  372. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_410.in +28 -0
  373. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_510.in +28 -0
  374. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_512.in +28 -0
  375. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_513.in +28 -0
  376. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_514.in +28 -0
  377. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_517.in +28 -0
  378. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_520.in +28 -0
  379. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_521.in +28 -0
  380. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_522.in +28 -0
  381. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_524.in +28 -0
  382. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_540.in +28 -0
  383. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_541.in +28 -0
  384. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_542.in +28 -0
  385. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_544.in +28 -0
  386. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_610.in +28 -0
  387. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_612.in +28 -0
  388. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_622.in +28 -0
  389. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_710.in +28 -0
  390. pycfast-0.2.2/tests/validation_tests/Validation/Steckler_Compartment/Steckler_810.in +28 -0
  391. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_01.in +106 -0
  392. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_02.in +110 -0
  393. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_03.in +110 -0
  394. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_04.in +106 -0
  395. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_05.in +110 -0
  396. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_06.in +110 -0
  397. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_07.in +106 -0
  398. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_08.in +110 -0
  399. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_09.in +106 -0
  400. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_10.in +110 -0
  401. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_11.in +110 -0
  402. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_12.in +106 -0
  403. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_13.in +110 -0
  404. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_14.in +110 -0
  405. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_15.in +110 -0
  406. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_16.in +110 -0
  407. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_17.in +116 -0
  408. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_18.in +116 -0
  409. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_19.in +120 -0
  410. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_20.in +120 -0
  411. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_21.in +120 -0
  412. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_1_22.in +116 -0
  413. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_01.in +117 -0
  414. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_02.in +120 -0
  415. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_03.in +121 -0
  416. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_04.in +121 -0
  417. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_05.in +117 -0
  418. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_06.in +120 -0
  419. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_07.in +117 -0
  420. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_08.in +121 -0
  421. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_09.in +117 -0
  422. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_10.in +121 -0
  423. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_11.in +117 -0
  424. pycfast-0.2.2/tests/validation_tests/Validation/UL_NFPRF/UL_NFPRF_2_12.in +120 -0
  425. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIJ_Houses/Single_Story_Gas_1.in +98 -0
  426. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIJ_Houses/Single_Story_Gas_2.in +98 -0
  427. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIJ_Houses/Single_Story_Gas_5.in +100 -0
  428. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIJ_Houses/Two_Story_Gas_1.in +174 -0
  429. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIJ_Houses/Two_Story_Gas_4.in +174 -0
  430. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIJ_Houses/Two_Story_Gas_6.in +174 -0
  431. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIST_Vents/UL_NIST_Vents_Test_1.in +50 -0
  432. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIST_Vents/UL_NIST_Vents_Test_2.in +46 -0
  433. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIST_Vents/UL_NIST_Vents_Test_3.in +48 -0
  434. pycfast-0.2.2/tests/validation_tests/Validation/UL_NIST_Vents/UL_NIST_Vents_Test_4.in +50 -0
  435. pycfast-0.2.2/tests/validation_tests/Validation/VTT/VTT_C1.in +51 -0
  436. pycfast-0.2.2/tests/validation_tests/Validation/VTT/VTT_C2.in +53 -0
  437. pycfast-0.2.2/tests/validation_tests/Validation/VTT/VTT_C3.in +60 -0
  438. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_1.in +60 -0
  439. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_10.in +116 -0
  440. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_11.in +114 -0
  441. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_12.in +114 -0
  442. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_13.in +114 -0
  443. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_14.in +116 -0
  444. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_15.in +116 -0
  445. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_16.in +60 -0
  446. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_17.in +60 -0
  447. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_18.in +60 -0
  448. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_19.in +62 -0
  449. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_2.in +60 -0
  450. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_20.in +62 -0
  451. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_21.in +114 -0
  452. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_22.in +114 -0
  453. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_23.in +114 -0
  454. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_24.in +116 -0
  455. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_25.in +116 -0
  456. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_26.in +114 -0
  457. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_27.in +114 -0
  458. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_28.in +114 -0
  459. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_29.in +116 -0
  460. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_3.in +60 -0
  461. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_30.in +116 -0
  462. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_31.in +60 -0
  463. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_32.in +60 -0
  464. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_33.in +60 -0
  465. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_34.in +62 -0
  466. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_35.in +62 -0
  467. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_36.in +114 -0
  468. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_37.in +114 -0
  469. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_38.in +114 -0
  470. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_39.in +116 -0
  471. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_4.in +62 -0
  472. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_40.in +116 -0
  473. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_41.in +114 -0
  474. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_42.in +114 -0
  475. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_43.in +114 -0
  476. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_44.in +116 -0
  477. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_45.in +116 -0
  478. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_5.in +62 -0
  479. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_6.in +114 -0
  480. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_7.in +114 -0
  481. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_8.in +114 -0
  482. pycfast-0.2.2/tests/validation_tests/Validation/Vettori_Flat/Test_9.in +116 -0
  483. pycfast-0.2.2/tests/validation_tests/Validation/WTC/WTC_01.in +229 -0
  484. pycfast-0.2.2/tests/validation_tests/Validation/WTC/WTC_02.in +229 -0
  485. pycfast-0.2.2/tests/validation_tests/Validation/WTC/WTC_03.in +229 -0
  486. pycfast-0.2.2/tests/validation_tests/Validation/WTC/WTC_04.in +235 -0
  487. pycfast-0.2.2/tests/validation_tests/Validation/WTC/WTC_05.in +235 -0
  488. pycfast-0.2.2/tests/validation_tests/Validation/WTC/WTC_06.in +235 -0
  489. pycfast-0.2.2/tests/validation_tests/Validation/iBMB_4/iBMB_4_T1.in +61 -0
  490. pycfast-0.2.2/tests/validation_tests/Validation/iBMB_5/iBMB_5_T4.in +116 -0
  491. pycfast-0.2.2/tests/validation_tests/__init__.py +1 -0
  492. pycfast-0.2.2/tests/validation_tests/test_parser_validation.py +143 -0
  493. pycfast-0.2.2/tests/verification_tests/Verification/Energy_Balance/sealed_test.in +21 -0
  494. pycfast-0.2.2/tests/verification_tests/Verification/Energy_Balance/sealed_test_2_layers.in +21 -0
  495. pycfast-0.2.2/tests/verification_tests/Verification/Fires/Ignition_Test.in +65 -0
  496. pycfast-0.2.2/tests/verification_tests/Verification/Mass_Balance/species_mass_1.in +22 -0
  497. pycfast-0.2.2/tests/verification_tests/Verification/Mass_Balance/species_mass_2.in +30 -0
  498. pycfast-0.2.2/tests/verification_tests/Verification/Mass_Balance/species_mass_3.in +29 -0
  499. pycfast-0.2.2/tests/verification_tests/Verification/Mass_Balance/species_mass_4.in +47 -0
  500. pycfast-0.2.2/tests/verification_tests/Verification/NRC_Users_Guide/A_Cabinet_Fire_in_MCR/Cabinet_fire_in_MCR.in +76 -0
  501. pycfast-0.2.2/tests/verification_tests/Verification/NRC_Users_Guide/A_Cabinet_Fire_in_MCR/Cabinet_fire_in_MCR_no_ventilation.in +50 -0
  502. pycfast-0.2.2/tests/verification_tests/Verification/NRC_Users_Guide/B_Cabinet_Fire_in_Switchgear/Cabinet_fire_in_switchgear.in +98 -0
  503. pycfast-0.2.2/tests/verification_tests/Verification/NRC_Users_Guide/B_Cabinet_Fire_in_Switchgear/Initial_fire_only.in +70 -0
  504. pycfast-0.2.2/tests/verification_tests/Verification/NRC_Users_Guide/D_MCC_Fire_in_Switchgear/MCC_in_switchgear.in +68 -0
  505. pycfast-0.2.2/tests/verification_tests/Verification/NRC_Users_Guide/D_MCC_Fire_in_Switchgear/MCC_in_switchgear_one_compartment.in +64 -0
  506. pycfast-0.2.2/tests/verification_tests/Verification/NRC_Users_Guide/E_Trash_Fire_in_Cable_Spreading_Room/Trash_fire_in_cable_spreading_room.in +87 -0
  507. pycfast-0.2.2/tests/verification_tests/Verification/NRC_Users_Guide/G_Transient_Fire_in_Corridor/Transient in Corridor.in +107 -0
  508. pycfast-0.2.2/tests/verification_tests/Verification/Radiation/radiation_1.in +31 -0
  509. pycfast-0.2.2/tests/verification_tests/Verification/Radiation/radiation_2.in +32 -0
  510. pycfast-0.2.2/tests/verification_tests/Verification/Radiation/radiation_3.in +74 -0
  511. pycfast-0.2.2/tests/verification_tests/Verification/Radiation/radiation_4.in +74 -0
  512. pycfast-0.2.2/tests/verification_tests/Verification/Radiation/radiation_5.in +74 -0
  513. pycfast-0.2.2/tests/verification_tests/Verification/Species/Trace_Species_1.in +23 -0
  514. pycfast-0.2.2/tests/verification_tests/Verification/Species/Trace_Species_2.in +35 -0
  515. pycfast-0.2.2/tests/verification_tests/Verification/Species/Trace_Species_3.in +35 -0
  516. pycfast-0.2.2/tests/verification_tests/Verification/Species/gas_tenability.in +31 -0
  517. pycfast-0.2.2/tests/verification_tests/Verification/Species/heat_tenability.in +22 -0
  518. pycfast-0.2.2/tests/verification_tests/Verification/Species/methane_flame_simple.in +23 -0
  519. pycfast-0.2.2/tests/verification_tests/Verification/Species/species_test.in +24 -0
  520. pycfast-0.2.2/tests/verification_tests/Verification/Sprinkler/sprinkler_1.in +24 -0
  521. pycfast-0.2.2/tests/verification_tests/Verification/Target/target_1.in +24 -0
  522. pycfast-0.2.2/tests/verification_tests/Verification/Target/target_2.in +43 -0
  523. pycfast-0.2.2/tests/verification_tests/Verification/Thermal_Equilibrium/basic_tempequilib.in +17 -0
  524. pycfast-0.2.2/tests/verification_tests/Verification/Thermal_Equilibrium/basic_tempequilib_window.in +21 -0
  525. pycfast-0.2.2/tests/verification_tests/Verification/Thermal_Equilibrium/basic_tempequilib_window_elevation.in +21 -0
  526. pycfast-0.2.2/tests/verification_tests/Verification/Ventilation/Leakage_1.in +19 -0
  527. pycfast-0.2.2/tests/verification_tests/Verification/Ventilation/Leakage_2.in +19 -0
  528. pycfast-0.2.2/tests/verification_tests/Verification/Ventilation/VVent_Tests.in +85 -0
  529. pycfast-0.2.2/tests/verification_tests/Verification/Ventilation/surface_opened_fraction_1.in +62 -0
  530. pycfast-0.2.2/tests/verification_tests/Verification/Ventilation/ventilation_1.in +24 -0
  531. pycfast-0.2.2/tests/verification_tests/Verification/Ventilation/ventilation_2.in +43 -0
  532. pycfast-0.2.2/tests/verification_tests/Verification/Ventilation/ventilation_3.in +46 -0
  533. pycfast-0.2.2/tests/verification_tests/Verification/Ventilation/ventilation_4.in +30 -0
  534. pycfast-0.2.2/tests/verification_tests/__init__.py +1 -0
  535. pycfast-0.2.2/tests/verification_tests/test_DOE_Guidance_Report.py +229 -0
  536. pycfast-0.2.2/tests/verification_tests/test_NRC_A_cabinet_fire_in_mcr.py +462 -0
  537. pycfast-0.2.2/tests/verification_tests/test_NRC_B_cabinet_fire_in_switchgear.py +593 -0
  538. pycfast-0.2.2/tests/verification_tests/test_NRC_D_mcc_fire_in_switchgear.py +475 -0
  539. pycfast-0.2.2/tests/verification_tests/test_NRC_E_trash_fire_in_cable_spreading_room.py +400 -0
  540. pycfast-0.2.2/tests/verification_tests/test_NRC_G_transient_fire_in_corridor.py +445 -0
  541. pycfast-0.2.2/tests/verification_tests/test_energy_balance.py +174 -0
  542. pycfast-0.2.2/tests/verification_tests/test_error.py +210 -0
  543. pycfast-0.2.2/tests/verification_tests/test_fires.py +209 -0
  544. pycfast-0.2.2/tests/verification_tests/test_mass_balance.py +472 -0
  545. pycfast-0.2.2/tests/verification_tests/test_model.py +188 -0
  546. pycfast-0.2.2/tests/verification_tests/test_parser_verification.py +147 -0
  547. pycfast-0.2.2/tests/verification_tests/test_radiation.py +1318 -0
  548. pycfast-0.2.2/tests/verification_tests/test_species.py +707 -0
  549. pycfast-0.2.2/tests/verification_tests/test_sprinkler.py +112 -0
  550. pycfast-0.2.2/tests/verification_tests/test_target.py +303 -0
  551. pycfast-0.2.2/tests/verification_tests/test_thermal_equilibrium.py +257 -0
  552. pycfast-0.2.2/tests/verification_tests/test_ventilation.py +1282 -0
  553. pycfast-0.2.2/uv.lock +4166 -0
  554. pycfast-0.2.0/PKG-INFO +0 -310
  555. pycfast-0.2.0/setup.cfg +0 -4
  556. pycfast-0.2.0/src/pycfast.egg-info/SOURCES.txt +0 -28
  557. pycfast-0.2.0/src/pycfast.egg-info/dependency_links.txt +0 -1
  558. pycfast-0.2.0/src/pycfast.egg-info/requires.txt +0 -41
  559. pycfast-0.2.0/src/pycfast.egg-info/top_level.txt +0 -1
  560. {pycfast-0.2.0 → pycfast-0.2.2}/LICENSE +0 -0
  561. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/datasets/__init__.py +0 -0
  562. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/datasets/data/sp_ast_diesel_1p1.csv.gz +0 -0
  563. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/parsers/__init__.py +0 -0
  564. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/simulation_environment.py +0 -0
  565. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/utils/__init__.py +0 -0
  566. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/utils/csv_config.py +0 -0
  567. {pycfast-0.2.0 → pycfast-0.2.2}/src/pycfast/utils/namelist.py +0 -0
@@ -0,0 +1,18 @@
1
+ # Keep .git — hatch-vcs needs it to resolve the package version during the
2
+ # Docker build (see the sdist-builder stage in the Dockerfile).
3
+
4
+ .venv
5
+ .mypy_cache/
6
+ .ruff_cache/
7
+ .pytest_cache/
8
+ __pycache__/
9
+ *.py[codz]
10
+ htmlcov/
11
+ .coverage
12
+ docs/build/
13
+ docs/_build/
14
+ tests/verification_tests/verification_data_local/
15
+ tests/validation_tests/validation_data_local/
16
+ dist/
17
+ build/
18
+ *.egg-info/
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: 'BUG: <Please write a comprehensive title after the ''BUG: '' prefix>'
5
+ labels: bug
6
+ assignees: bewygs
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. Create a model with '...'
16
+ 2. Run simulation with '...'
17
+ 3. Parse results using '...'
18
+ 4. See error
19
+
20
+ **Minimal Code Example**
21
+ Please provide a minimal code example that reproduces the issue:
22
+
23
+ ```python
24
+ # Your code here
25
+ ```
26
+
27
+ **Expected behavior**
28
+ A clear and concise description of what you expected to happen.
29
+
30
+ **Error message**
31
+ If applicable, paste the full error message/traceback:
32
+
33
+ ```
34
+ Error traceback here
35
+ ```
36
+
37
+ **Environment (please complete the following information):**
38
+ - OS: [e.g., Ubuntu 22.04, Windows 11]
39
+ - Python version: [e.g., 3.10, 3.11, 3.12, 3.13]
40
+ - PyCFAST version: [e.g., 0.1.0]
41
+ - CFAST version: [e.g., 7.7.7]
42
+ - Installation method: [e.g., pip, uv, from source]
43
+
44
+ **CFAST Input File**
45
+ If the issue is related to a specific CFAST model, please attach or include the `.in` file:
46
+ ```
47
+ Attach or paste file content here
48
+ ```
49
+
50
+ **Additional context**
51
+ Add any other context about the problem here (e.g., specific building configuration, fire scenario details, convergence issues, etc.).
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea or enhancement for PyCFAST
4
+ title: 'FEAT: <Please write a comprehensive title after the FEAT: prefix>'
5
+ labels: enhancement
6
+ assignees: bewygs
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+ A clear and concise description of what you want to happen.
15
+
16
+ **Describe alternatives you've considered**
17
+ A clear and concise description of any alternative solutions or features you've considered.
18
+
19
+ **Additional context**
20
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,44 @@
1
+ # Commit Message Instructions for PyCFAST
2
+
3
+ Follow conventional commit format: `<type>: <description>`
4
+
5
+ ## Types
6
+ - **DEV**: development tool or utility
7
+ - **FIX**: Bug fix
8
+ - **DOC**: Documentation changes
9
+ - **BLD**: Dependencies/build system (Makefile, pyproject.toml, ...)
10
+ - **STY**: Code formatting
11
+ - **TST**: addition or modification of tests
12
+ - **MAINT**: maintenance commit (refactoring, typos, etc.)
13
+ - **FEAT**: new feature or enhancement
14
+ - **CI**: CI/CD workflows
15
+ - **REL**: release commit (version bump, changelog update, etc.)
16
+ - **chore**: Other maintenance
17
+
18
+ ## Rules
19
+ - Use imperative mood ("Add" not "Added")
20
+ - Start with capital letter
21
+ - No period at end
22
+ - Keep under 50 characters
23
+ - Reference issues when relevant
24
+
25
+ ## Examples
26
+ ```
27
+ FEAT: add CFAST 7.8 ventilation support
28
+ FIX: handle missing executable gracefully
29
+ DOC: update installation guide for uv
30
+ TST: add compartment validation tests
31
+ CI: migrate workflows to use uv
32
+ BLD: bump pandas minimum to 2.1.0
33
+ DEV: add mypy type checking to Makefile
34
+ MAINT: refactor simulation environment module
35
+ STY: apply ruff formatting rules
36
+ ```
37
+
38
+ ## Breaking Changes
39
+ Add `!` and footer:
40
+ ```
41
+ FEAT!: redesign Model class interface
42
+
43
+ BREAKING CHANGE: Model.run() returns SimulationResult object
44
+ ```
@@ -0,0 +1,29 @@
1
+ # PyCFAST Overview
2
+
3
+ PyCFAST is a Python interface for building, running, and analyzing CFAST fire simulation models. It allows you to programmatically create CFAST input files, execute simulations, and process results directly in Python. It's a pure Python library that does not require any CFAST-specific dependencies.
4
+
5
+ CFAST is a computer program that fire investigators, safety officials, researchers, and engineers can use to simulate the impact of past or potential fires and smoke in a specific building environment. CFAST is a two-zone fire model used to calculate the evolving distribution of smoke, fire gases and temperature throughout compartments of a building during a fire.
6
+
7
+ ## Folder Structure
8
+
9
+ - `/src/pycfast`: Contains the source code for the library.
10
+ - `/examples`: Contains examples scripts showing how to use the library.
11
+ - `/docs`: Contains documentation for the project, a user guides and some script to keep the documentation up to date with CFAST official documentation.
12
+ - `/tests`: Contains tests that validate the functionality of the library.
13
+
14
+ ## Libraries and Frameworks
15
+ - python
16
+ - pandas
17
+ - f90nml
18
+
19
+ ## Coding Standards
20
+
21
+ - Use ruff coding standard including formatting, linting, and best practices.
22
+ - Follow mypy for type checking.
23
+ - Use numpy docstring style for documentation.
24
+ - Stay Pythonic
25
+ - Follow SOLID and DRY principles where applicable.
26
+
27
+ ## Environment Setup
28
+
29
+ When running command you can use the makefile commands to have the right environment with the right dependencies installed.
@@ -0,0 +1,27 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: "uv"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ open-pull-requests-limit: 5
9
+ groups:
10
+ python-minor-patch:
11
+ patterns:
12
+ - "*"
13
+ update-types:
14
+ - "minor"
15
+ - "patch"
16
+
17
+ - package-ecosystem: "github-actions"
18
+ directory: "/"
19
+ schedule:
20
+ interval: "weekly"
21
+ groups:
22
+ github-actions-minor-patch:
23
+ patterns:
24
+ - "*"
25
+ update-types:
26
+ - "minor"
27
+ - "patch"
@@ -0,0 +1,110 @@
1
+ name: Docker Image CI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches: [ "main" ]
7
+ paths:
8
+ - 'Dockerfile'
9
+ - 'src/**'
10
+ - 'pyproject.toml'
11
+ - 'README.md'
12
+ - '.github/workflows/docker-image.yml'
13
+
14
+ pull_request:
15
+ branches: [ "main" ]
16
+ paths:
17
+ - 'Dockerfile'
18
+ - 'src/**'
19
+ - 'pyproject.toml'
20
+ - 'README.md'
21
+ - '.github/workflows/docker-image.yml'
22
+
23
+ # Triggers the `publish` job below once the PyPI release is available
24
+ workflow_run:
25
+ workflows: ["Upload Python Package"]
26
+ types: [completed]
27
+
28
+ permissions:
29
+ contents: read
30
+
31
+ jobs:
32
+ build:
33
+ if: github.event_name != 'workflow_run'
34
+ runs-on: ubuntu-latest
35
+
36
+ steps:
37
+ - uses: actions/checkout@v7
38
+ with:
39
+ # hatch-vcs needs the full history and tags to resolve the package
40
+ # version in the sdist-builder stage (see Dockerfile).
41
+ fetch-depth: 0
42
+ fetch-tags: true
43
+
44
+ - name: Set up Docker Buildx
45
+ uses: docker/setup-buildx-action@v4
46
+
47
+ - name: Build image
48
+ uses: docker/build-push-action@v7
49
+ with:
50
+ context: .
51
+ target: local
52
+ load: true
53
+ tags: pycfast:ci
54
+ cache-from: type=gha
55
+ cache-to: type=gha,mode=max
56
+
57
+ - name: test image
58
+ run: |
59
+ docker run --rm pycfast:ci python -c "import pycfast; print(pycfast.__version__)"
60
+ output=$(docker run --rm pycfast:ci sh -c "cfast 2>&1 || true")
61
+ echo "$output"
62
+ echo "$output" | grep -qi "cfast"
63
+
64
+ publish:
65
+ if: github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success'
66
+ runs-on: ubuntu-latest
67
+ permissions:
68
+ contents: read
69
+ packages: write
70
+
71
+ steps:
72
+ - uses: actions/checkout@v7
73
+ with:
74
+ # workflow_run defaults to the default branch; check out the exact
75
+ # commit that python-publish.yml actually released instead.
76
+ ref: ${{ github.event.workflow_run.head_sha }}
77
+
78
+ - name: Set up Docker Buildx
79
+ uses: docker/setup-buildx-action@v4
80
+
81
+ - name: Log in to GitHub Container Registry
82
+ uses: docker/login-action@v4
83
+ with:
84
+ registry: ghcr.io
85
+ username: ${{ github.actor }}
86
+ password: ${{ secrets.GITHUB_TOKEN }}
87
+
88
+ - name: Extract image metadata
89
+ id: meta
90
+ uses: docker/metadata-action@v6
91
+ with:
92
+ images: ghcr.io/${{ github.repository }}
93
+ # workflow_run doesn't carry the triggering tag in `github.ref`, so
94
+ # the tag/version has to be given explicitly. `head_branch` holds
95
+ # the tag name here despite the field name (GitHub Actions quirk).
96
+ tags: |
97
+ type=semver,pattern={{version}},value=${{ github.event.workflow_run.head_branch }}
98
+ type=semver,pattern={{major}}.{{minor}},value=${{ github.event.workflow_run.head_branch }}
99
+
100
+ - name: Push image to GitHub Container Registry
101
+ uses: docker/build-push-action@v7
102
+ with:
103
+ context: .
104
+ target: pypi
105
+ build-args: |
106
+ PYCFAST_VERSION=${{ steps.meta.outputs.version }}
107
+ push: true
108
+ tags: ${{ steps.meta.outputs.tags }}
109
+ labels: ${{ steps.meta.outputs.labels }}
110
+ cache-from: type=gha
@@ -0,0 +1,115 @@
1
+ name: Documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - 'src/**'
8
+ - 'docs/**'
9
+ - 'examples/**'
10
+ - 'CONTRIBUTING.md'
11
+ - 'pyproject.toml'
12
+ - 'uv.lock'
13
+ - '.github/workflows/docs.yml'
14
+
15
+ pull_request:
16
+ branches: [main]
17
+ paths:
18
+ - 'src/**'
19
+ - 'docs/**'
20
+ - 'examples/**'
21
+ - 'CONTRIBUTING.md'
22
+ - 'pyproject.toml'
23
+ - 'uv.lock'
24
+ - '.github/workflows/docs.yml'
25
+
26
+ permissions:
27
+ contents: read
28
+ pages: write
29
+ id-token: write
30
+
31
+ concurrency:
32
+ group: "pages"
33
+ cancel-in-progress: false
34
+
35
+ jobs:
36
+ build:
37
+ runs-on: ubuntu-latest
38
+ env:
39
+ CFAST_VERSION: "7.7.7"
40
+ CFAST_TAG: "CFAST-7.7.7"
41
+ steps:
42
+ - name: Checkout
43
+ uses: actions/checkout@v7
44
+
45
+ - name: Install uv
46
+ uses: astral-sh/setup-uv@v7
47
+ with:
48
+ enable-cache: true
49
+ cache-dependency-glob: "uv.lock"
50
+
51
+ - name: Set up Python
52
+ run: uv python install 3.10
53
+
54
+ - name: Install pandoc
55
+ run: sudo apt-get update && sudo apt-get install -y pandoc
56
+
57
+ - name: Cache CFAST binary
58
+ id: cache-cfast
59
+ uses: actions/cache@v6
60
+ with:
61
+ path: ~/cfast-cache/cfast-${{ env.CFAST_VERSION }}-ubuntu-latest
62
+ key: cfast-binary-${{ env.CFAST_VERSION }}-Linux-X64-${{ hashFiles('.github/workflows/docs.yml') }}
63
+ restore-keys: |
64
+ cfast-binary-${{ env.CFAST_VERSION }}-Linux-X64-
65
+
66
+ - name: Install build dependencies for CFAST
67
+ if: steps.cache-cfast.outputs.cache-hit != 'true'
68
+ run: sudo apt-get update && sudo apt-get install -y gfortran make
69
+
70
+ - name: Download and build CFAST ${{ env.CFAST_VERSION }}
71
+ if: steps.cache-cfast.outputs.cache-hit != 'true'
72
+ run: |
73
+ git clone --depth 1 --branch ${{ env.CFAST_TAG }} https://github.com/firemodels/cfast.git cfast-${{ env.CFAST_VERSION }}
74
+ cd cfast-${{ env.CFAST_VERSION }}/Build/CFAST/gnu_linux
75
+ chmod +x make_cfast.sh
76
+ ./make_cfast.sh
77
+ mkdir -p ~/cfast-cache
78
+ cp cfast7_linux ~/cfast-cache/cfast-${{ env.CFAST_VERSION }}-ubuntu-latest
79
+ chmod +x ~/cfast-cache/cfast-${{ env.CFAST_VERSION }}-ubuntu-latest
80
+
81
+ - name: Install CFAST to system path
82
+ run: |
83
+ sudo cp ~/cfast-cache/cfast-${{ env.CFAST_VERSION }}-ubuntu-latest /usr/bin/cfast
84
+ sudo chmod +x /usr/bin/cfast
85
+
86
+ - name: Verify CFAST installation
87
+ run: |
88
+ which cfast
89
+ cfast
90
+
91
+ - name: Install dependencies
92
+ run: uv sync --extra docs
93
+
94
+ - name: Build documentation
95
+ run: |
96
+ cd docs
97
+ uv run sphinx-build -b html source build/html -W --keep-going
98
+ echo "pycfast.org" > build/html/CNAME
99
+
100
+ - name: Upload pages artifact
101
+ uses: actions/upload-pages-artifact@v5
102
+ with:
103
+ path: docs/build/html
104
+
105
+ deploy:
106
+ if: github.ref == 'refs/heads/main'
107
+ environment:
108
+ name: github-pages
109
+ url: ${{ steps.deployment.outputs.page_url }}
110
+ runs-on: ubuntu-latest
111
+ needs: build
112
+ steps:
113
+ - name: Deploy to GitHub Pages
114
+ id: deployment
115
+ uses: actions/deploy-pages@v5
@@ -0,0 +1,38 @@
1
+ name: JOSS Paper
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches:
7
+ - main
8
+ paths:
9
+ - .github/workflows/joss.yml
10
+ - 'paper/paper.md'
11
+ - 'paper/paper.bib'
12
+ pull_request:
13
+ paths:
14
+ - .github/workflows/joss.yml
15
+ - 'paper/paper.md'
16
+ - 'paper/paper.bib'
17
+
18
+ jobs:
19
+ paper:
20
+ runs-on: ubuntu-latest
21
+ name: Paper Draft
22
+ steps:
23
+ - name: Checkout
24
+ uses: actions/checkout@v7
25
+ - name: Build draft PDF
26
+ uses: openjournals/openjournals-draft-action@master
27
+ with:
28
+ journal: joss
29
+ # This should be the path to the paper within your repo.
30
+ paper-path: paper/paper.md
31
+ - name: Upload
32
+ uses: actions/upload-artifact@v7
33
+ with:
34
+ name: paper
35
+ # This is the output path where Pandoc will write the compiled
36
+ # PDF. Note, this should be the same directory as the input
37
+ # paper.md
38
+ path: paper/paper.pdf
@@ -0,0 +1,67 @@
1
+ # This workflow will upload a Python Package to PyPI when a release is created
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
3
+
4
+ # This workflow uses actions that are not certified by GitHub.
5
+ # They are provided by a third-party and are governed by
6
+ # separate terms of service, privacy policy, and support
7
+ # documentation.
8
+
9
+ name: Upload Python Package
10
+
11
+ on:
12
+ release:
13
+ types: [published]
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ release-build:
20
+ runs-on: ubuntu-latest
21
+
22
+ steps:
23
+ - uses: actions/checkout@v7
24
+ with:
25
+ # hatch-vcs needs the full history and tags to resolve the package
26
+ # version from the release tag.
27
+ fetch-depth: 0
28
+ fetch-tags: true
29
+
30
+ - uses: actions/setup-python@v6
31
+ with:
32
+ python-version: "3.x"
33
+
34
+ - name: Build release distributions
35
+ run: |
36
+ # NOTE: put your own distribution build steps here.
37
+ python -m pip install build
38
+ python -m build
39
+
40
+ - name: Upload distributions
41
+ uses: actions/upload-artifact@v7
42
+ with:
43
+ name: release-dists
44
+ path: dist/
45
+
46
+ pypi-publish:
47
+ runs-on: ubuntu-latest
48
+ needs:
49
+ - release-build
50
+ permissions:
51
+ id-token: write
52
+
53
+ environment:
54
+ name: pypi
55
+ url: https://pypi.org/project/pycfast/
56
+
57
+ steps:
58
+ - name: Retrieve release distributions
59
+ uses: actions/download-artifact@v8
60
+ with:
61
+ name: release-dists
62
+ path: dist/
63
+
64
+ - name: Publish release distributions to PyPI
65
+ uses: pypa/gh-action-pypi-publish@release/v1
66
+ with:
67
+ packages-dir: dist/
@@ -0,0 +1,100 @@
1
+ name: Sync CFAST Input Files
2
+
3
+ on:
4
+ schedule:
5
+ # Run every Sunday at 2 AM UTC
6
+ - cron: '0 2 * * 0'
7
+ workflow_dispatch:
8
+ inputs:
9
+ suite:
10
+ description: 'Which suite to sync'
11
+ required: false
12
+ default: 'all'
13
+ type: choice
14
+ options: [all, verification, validation]
15
+
16
+ permissions:
17
+ contents: write
18
+ pull-requests: write
19
+
20
+ jobs:
21
+ sync-input-files:
22
+ runs-on: ubuntu-latest
23
+
24
+ steps:
25
+ - name: Checkout repository
26
+ uses: actions/checkout@v7
27
+ with:
28
+ fetch-depth: 0
29
+ token: ${{ secrets.GITHUB_TOKEN }}
30
+
31
+ - name: Configure Git
32
+ run: |
33
+ git config --global user.name 'github-actions[bot]'
34
+ git config --global user.email 'github-actions[bot]@users.noreply.github.com'
35
+
36
+ - name: Install required tools
37
+ run: sudo apt-get update && sudo apt-get install -y rsync curl
38
+
39
+ - name: Sync CFAST input files
40
+ id: sync
41
+ run: |
42
+ SUITE="${{ github.event.inputs.suite || 'all' }}"
43
+ chmod +x tests/sync_cfast_inputs.sh
44
+ tests/sync_cfast_inputs.sh --suite "$SUITE"
45
+
46
+ if git diff --quiet && git diff --cached --quiet; then
47
+ echo "changes_detected=false" >> $GITHUB_OUTPUT
48
+ else
49
+ echo "changes_detected=true" >> $GITHUB_OUTPUT
50
+ changed=$(git diff --name-only | wc -l)
51
+ new=$(git ls-files --others --exclude-standard tests/verification_tests/Verification/ tests/validation_tests/Validation/ | wc -l)
52
+ echo "changed_files=$changed" >> $GITHUB_OUTPUT
53
+ echo "new_files=$new" >> $GITHUB_OUTPUT
54
+ echo "total_changes=$((changed + new))" >> $GITHUB_OUTPUT
55
+ echo "suite=$SUITE" >> $GITHUB_OUTPUT
56
+ fi
57
+
58
+ - name: Create Pull Request
59
+ if: steps.sync.outputs.changes_detected == 'true'
60
+ uses: peter-evans/create-pull-request@v8
61
+ with:
62
+ token: ${{ secrets.GITHUB_TOKEN }}
63
+ commit-message: |
64
+ chore: sync CFAST ${{ steps.sync.outputs.suite }} input files
65
+
66
+ - Modified: ${{ steps.sync.outputs.changed_files }} files
67
+ - Added: ${{ steps.sync.outputs.new_files }} files
68
+ - Total: ${{ steps.sync.outputs.total_changes }} files
69
+
70
+ Auto-generated by sync-cfast-inputs workflow
71
+ title: 'chore: sync CFAST ${{ steps.sync.outputs.suite }} input files'
72
+ body: |
73
+ ## Automated CFAST Input Files Sync
74
+
75
+ **Suite:** `${{ steps.sync.outputs.suite }}`
76
+
77
+ | | Count |
78
+ |---|---|
79
+ | Modified files | ${{ steps.sync.outputs.changed_files }} |
80
+ | New files | ${{ steps.sync.outputs.new_files }} |
81
+ | Total | ${{ steps.sync.outputs.total_changes }} |
82
+
83
+ Please review the changes and merge if everything looks correct.
84
+ branch: sync-cfast-input-files
85
+ delete-branch: true
86
+ labels: |
87
+ automated
88
+ maintenance
89
+
90
+ - name: Summary
91
+ run: |
92
+ if [ "${{ steps.sync.outputs.changes_detected }}" == "true" ]; then
93
+ echo "Changes detected — PR created"
94
+ echo " Suite: ${{ steps.sync.outputs.suite }}"
95
+ echo " Modified: ${{ steps.sync.outputs.changed_files }}"
96
+ echo " New: ${{ steps.sync.outputs.new_files }}"
97
+ echo " Total: ${{ steps.sync.outputs.total_changes }}"
98
+ else
99
+ echo "No changes — input files are up to date"
100
+ fi