ramp-stream 1.1.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 (168) hide show
  1. ramp_stream-1.1.2/.github/ISSUE_TEMPLATE/bug_report.md +30 -0
  2. ramp_stream-1.1.2/.github/ISSUE_TEMPLATE/documentation-improvement.md +20 -0
  3. ramp_stream-1.1.2/.github/ISSUE_TEMPLATE/feature_request.md +21 -0
  4. ramp_stream-1.1.2/.github/pull_request_template.md +26 -0
  5. ramp_stream-1.1.2/.github/workflows/docs.yml +57 -0
  6. ramp_stream-1.1.2/.github/workflows/test.yml +42 -0
  7. ramp_stream-1.1.2/.gitignore +20 -0
  8. ramp_stream-1.1.2/CODE_OF_CONDUCT.md +109 -0
  9. ramp_stream-1.1.2/CONTRIBUTING.md +47 -0
  10. ramp_stream-1.1.2/LICENSE +21 -0
  11. ramp_stream-1.1.2/PKG-INFO +72 -0
  12. ramp_stream-1.1.2/README.md +30 -0
  13. ramp_stream-1.1.2/allreq.yml +22 -0
  14. ramp_stream-1.1.2/docs/.gitignore +1 -0
  15. ramp_stream-1.1.2/docs/Makefile +27 -0
  16. ramp_stream-1.1.2/docs/make.bat +35 -0
  17. ramp_stream-1.1.2/docs/requirements.yml +27 -0
  18. ramp_stream-1.1.2/docs/source/Contributing.rst +17 -0
  19. ramp_stream-1.1.2/docs/source/CoupledSprings.ipynb +196 -0
  20. ramp_stream-1.1.2/docs/source/Examples.rst +35 -0
  21. ramp_stream-1.1.2/docs/source/Installation.rst +13 -0
  22. ramp_stream-1.1.2/docs/source/MultiplePlatesInRod.ipynb +596 -0
  23. ramp_stream-1.1.2/docs/source/PCSCoastdown.ipynb +321 -0
  24. ramp_stream-1.1.2/docs/source/Parallel thermosyphone driven flow.ipynb +347 -0
  25. ramp_stream-1.1.2/docs/source/PlanarPendulum.ipynb +190 -0
  26. ramp_stream-1.1.2/docs/source/SampleFuelPlateAndChannel.ipynb +355 -0
  27. ramp_stream-1.1.2/docs/source/SeriesRLCCircuit.ipynb +225 -0
  28. ramp_stream-1.1.2/docs/source/TheCubeProblem.ipynb +241 -0
  29. ramp_stream-1.1.2/docs/source/_static/style.css +3 -0
  30. ramp_stream-1.1.2/docs/source/_templates/layout.html +4 -0
  31. ramp_stream-1.1.2/docs/source/aggregator.rst +72 -0
  32. ramp_stream-1.1.2/docs/source/analysis.rst +26 -0
  33. ramp_stream-1.1.2/docs/source/calculation.rst +23 -0
  34. ramp_stream-1.1.2/docs/source/conf.py +111 -0
  35. ramp_stream-1.1.2/docs/source/decay_heat.rst +212 -0
  36. ramp_stream-1.1.2/docs/source/heat_transfer_coefficient.rst +129 -0
  37. ramp_stream-1.1.2/docs/source/index.rst +25 -0
  38. ramp_stream-1.1.2/docs/source/pressure_drop.rst +66 -0
  39. ramp_stream-1.1.2/docs/source/quickstart.rst +150 -0
  40. ramp_stream-1.1.2/docs/source/stream.calculations.rst +171 -0
  41. ramp_stream-1.1.2/docs/source/stream.composition.rst +50 -0
  42. ramp_stream-1.1.2/docs/source/stream.physical_models.rst +23 -0
  43. ramp_stream-1.1.2/docs/source/stream.rst +22 -0
  44. ramp_stream-1.1.2/docs/source/tests.integration.rst +29 -0
  45. ramp_stream-1.1.2/docs/source/tests.rst +37 -0
  46. ramp_stream-1.1.2/docs/source/tests.test_calculations.rst +147 -0
  47. ramp_stream-1.1.2/docs/source/tests.test_composition.rst +96 -0
  48. ramp_stream-1.1.2/docs/source/tests.test_general.rst +108 -0
  49. ramp_stream-1.1.2/docs/source/tests.test_libraries.rst +71 -0
  50. ramp_stream-1.1.2/docs/source/thresholds.rst +8 -0
  51. ramp_stream-1.1.2/docs/source/utility_packages.rst +58 -0
  52. ramp_stream-1.1.2/pyproject.toml +62 -0
  53. ramp_stream-1.1.2/ramp_stream.egg-info/PKG-INFO +72 -0
  54. ramp_stream-1.1.2/ramp_stream.egg-info/SOURCES.txt +166 -0
  55. ramp_stream-1.1.2/ramp_stream.egg-info/dependency_links.txt +1 -0
  56. ramp_stream-1.1.2/ramp_stream.egg-info/requires.txt +21 -0
  57. ramp_stream-1.1.2/ramp_stream.egg-info/top_level.txt +1 -0
  58. ramp_stream-1.1.2/requirements.yml +17 -0
  59. ramp_stream-1.1.2/ruff.toml +9 -0
  60. ramp_stream-1.1.2/setup.cfg +4 -0
  61. ramp_stream-1.1.2/stream/__init__.py +29 -0
  62. ramp_stream-1.1.2/stream/aggregator/__init__.py +31 -0
  63. ramp_stream-1.1.2/stream/aggregator/aggregator.py +692 -0
  64. ramp_stream-1.1.2/stream/aggregator/constraints.py +76 -0
  65. ramp_stream-1.1.2/stream/aggregator/solution.py +36 -0
  66. ramp_stream-1.1.2/stream/aggregator/utils.py +182 -0
  67. ramp_stream-1.1.2/stream/analysis/UQ/__init__.py +7 -0
  68. ramp_stream-1.1.2/stream/analysis/UQ/models.py +513 -0
  69. ramp_stream-1.1.2/stream/analysis/UQ/power_perturbations.py +50 -0
  70. ramp_stream-1.1.2/stream/analysis/UQ/uncertainty.py +70 -0
  71. ramp_stream-1.1.2/stream/analysis/__init__.py +0 -0
  72. ramp_stream-1.1.2/stream/analysis/debugging.py +70 -0
  73. ramp_stream-1.1.2/stream/analysis/report.py +150 -0
  74. ramp_stream-1.1.2/stream/analysis/thresholds.py +442 -0
  75. ramp_stream-1.1.2/stream/calculation.py +272 -0
  76. ramp_stream-1.1.2/stream/calculations/__init__.py +15 -0
  77. ramp_stream-1.1.2/stream/calculations/channel.py +715 -0
  78. ramp_stream-1.1.2/stream/calculations/flapper.py +161 -0
  79. ramp_stream-1.1.2/stream/calculations/heat_diffusion.py +851 -0
  80. ramp_stream-1.1.2/stream/calculations/ideal/__init__.py +4 -0
  81. ramp_stream-1.1.2/stream/calculations/ideal/heat_exchangers.py +18 -0
  82. ramp_stream-1.1.2/stream/calculations/ideal/ideal.py +130 -0
  83. ramp_stream-1.1.2/stream/calculations/ideal/inertia.py +98 -0
  84. ramp_stream-1.1.2/stream/calculations/ideal/pumps.py +73 -0
  85. ramp_stream-1.1.2/stream/calculations/ideal/resistors.py +552 -0
  86. ramp_stream-1.1.2/stream/calculations/kirchhoff.py +575 -0
  87. ramp_stream-1.1.2/stream/calculations/point_kinetics.py +413 -0
  88. ramp_stream-1.1.2/stream/composition/__init__.py +5 -0
  89. ramp_stream-1.1.2/stream/composition/constructors.py +124 -0
  90. ramp_stream-1.1.2/stream/composition/cycle.py +444 -0
  91. ramp_stream-1.1.2/stream/composition/maximal_coupling.py +68 -0
  92. ramp_stream-1.1.2/stream/composition/mtr_geometry.py +335 -0
  93. ramp_stream-1.1.2/stream/composition/subsystems.py +283 -0
  94. ramp_stream-1.1.2/stream/jacobians.py +131 -0
  95. ramp_stream-1.1.2/stream/physical_models/__init__.py +15 -0
  96. ramp_stream-1.1.2/stream/physical_models/decay_heat/__init__.py +20 -0
  97. ramp_stream-1.1.2/stream/physical_models/decay_heat/actinides.py +54 -0
  98. ramp_stream-1.1.2/stream/physical_models/decay_heat/activation.py +72 -0
  99. ramp_stream-1.1.2/stream/physical_models/decay_heat/fission_products.py +118 -0
  100. ramp_stream-1.1.2/stream/physical_models/decay_heat/fissions.py +99 -0
  101. ramp_stream-1.1.2/stream/physical_models/decay_heat/standards/U235_ans14.csv +0 -0
  102. ramp_stream-1.1.2/stream/physical_models/decay_heat/standards/U235_ans73.csv +0 -0
  103. ramp_stream-1.1.2/stream/physical_models/decay_heat/standards/U235_beta_jaeri91.csv +0 -0
  104. ramp_stream-1.1.2/stream/physical_models/decay_heat/standards/U235_gamma_jaeri91.csv +0 -0
  105. ramp_stream-1.1.2/stream/physical_models/decay_heat/standards/U235_jaeri91.csv +0 -0
  106. ramp_stream-1.1.2/stream/physical_models/decay_heat/standards/U238_ans14.csv +0 -0
  107. ramp_stream-1.1.2/stream/physical_models/decay_heat/standards/U238_gamma_jaeri91.csv +0 -0
  108. ramp_stream-1.1.2/stream/physical_models/dimensionless.py +319 -0
  109. ramp_stream-1.1.2/stream/physical_models/heat_transfer_coefficient/__init__.py +237 -0
  110. ramp_stream-1.1.2/stream/physical_models/heat_transfer_coefficient/laminar.py +384 -0
  111. ramp_stream-1.1.2/stream/physical_models/heat_transfer_coefficient/natural_convection.py +80 -0
  112. ramp_stream-1.1.2/stream/physical_models/heat_transfer_coefficient/single_phase.py +274 -0
  113. ramp_stream-1.1.2/stream/physical_models/heat_transfer_coefficient/subcooled_boiling.py +190 -0
  114. ramp_stream-1.1.2/stream/physical_models/heat_transfer_coefficient/temperatures.py +130 -0
  115. ramp_stream-1.1.2/stream/physical_models/heat_transfer_coefficient/turbulent.py +67 -0
  116. ramp_stream-1.1.2/stream/physical_models/pressure_drop/__init__.py +203 -0
  117. ramp_stream-1.1.2/stream/physical_models/pressure_drop/friction.py +388 -0
  118. ramp_stream-1.1.2/stream/physical_models/pressure_drop/local.py +456 -0
  119. ramp_stream-1.1.2/stream/physical_models/thresholds.py +497 -0
  120. ramp_stream-1.1.2/stream/pipe_geometry.py +157 -0
  121. ramp_stream-1.1.2/stream/solvers.py +256 -0
  122. ramp_stream-1.1.2/stream/state.py +314 -0
  123. ramp_stream-1.1.2/stream/substances/__init__.py +22 -0
  124. ramp_stream-1.1.2/stream/substances/heavy_water.py +299 -0
  125. ramp_stream-1.1.2/stream/substances/light_water.py +295 -0
  126. ramp_stream-1.1.2/stream/substances/liquid.py +140 -0
  127. ramp_stream-1.1.2/stream/substances/mocks.py +55 -0
  128. ramp_stream-1.1.2/stream/units.py +105 -0
  129. ramp_stream-1.1.2/stream/utilities.py +724 -0
  130. ramp_stream-1.1.2/tests/__init__.py +7 -0
  131. ramp_stream-1.1.2/tests/conftest.py +4 -0
  132. ramp_stream-1.1.2/tests/pytest.ini +11 -0
  133. ramp_stream-1.1.2/tests/requirements.yml +6 -0
  134. ramp_stream-1.1.2/tests/test_analysis/test_power_perturbation.py +52 -0
  135. ramp_stream-1.1.2/tests/test_analysis/test_uq.py +230 -0
  136. ramp_stream-1.1.2/tests/test_calculations/__init__.py +0 -0
  137. ramp_stream-1.1.2/tests/test_calculations/conftest.py +17 -0
  138. ramp_stream-1.1.2/tests/test_calculations/test_channel.py +235 -0
  139. ramp_stream-1.1.2/tests/test_calculations/test_flapper.py +53 -0
  140. ramp_stream-1.1.2/tests/test_calculations/test_heat.py +472 -0
  141. ramp_stream-1.1.2/tests/test_calculations/test_ideal.py +188 -0
  142. ramp_stream-1.1.2/tests/test_calculations/test_kirchhoff.py +210 -0
  143. ramp_stream-1.1.2/tests/test_calculations/test_point_kinetics.py +148 -0
  144. ramp_stream-1.1.2/tests/test_calculations/test_serializability.py +142 -0
  145. ramp_stream-1.1.2/tests/test_composition/__init__.py +0 -0
  146. ramp_stream-1.1.2/tests/test_composition/conftest.py +54 -0
  147. ramp_stream-1.1.2/tests/test_composition/test_constructors.py +86 -0
  148. ramp_stream-1.1.2/tests/test_composition/test_cycle.py +151 -0
  149. ramp_stream-1.1.2/tests/test_composition/test_gravity_checker.py +50 -0
  150. ramp_stream-1.1.2/tests/test_composition/test_maximal_coupling.py +31 -0
  151. ramp_stream-1.1.2/tests/test_composition/test_mtr_geometry.py +98 -0
  152. ramp_stream-1.1.2/tests/test_composition/test_partial_states.py +100 -0
  153. ramp_stream-1.1.2/tests/test_composition/test_subsystems.py +182 -0
  154. ramp_stream-1.1.2/tests/test_general/__init__.py +0 -0
  155. ramp_stream-1.1.2/tests/test_general/conftest.py +53 -0
  156. ramp_stream-1.1.2/tests/test_general/test_aggregator.py +269 -0
  157. ramp_stream-1.1.2/tests/test_general/test_calculation.py +126 -0
  158. ramp_stream-1.1.2/tests/test_general/test_dataframes.py +115 -0
  159. ramp_stream-1.1.2/tests/test_general/test_integrations.py +973 -0
  160. ramp_stream-1.1.2/tests/test_general/test_pipe_geometry.py +19 -0
  161. ramp_stream-1.1.2/tests/test_general/test_solvers.py +81 -0
  162. ramp_stream-1.1.2/tests/test_general/test_utilities.py +170 -0
  163. ramp_stream-1.1.2/tests/test_libraries/__init__.py +0 -0
  164. ramp_stream-1.1.2/tests/test_libraries/conftest.py +22 -0
  165. ramp_stream-1.1.2/tests/test_libraries/test_decay_heat.py +98 -0
  166. ramp_stream-1.1.2/tests/test_libraries/test_htc.py +182 -0
  167. ramp_stream-1.1.2/tests/test_libraries/test_pressure_drop.py +261 -0
  168. ramp_stream-1.1.2/tests/test_libraries/test_thresholds.py +102 -0
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: "[Bug]"
5
+ labels: bug
6
+ assignees: ''
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. Go to '...'
16
+ 2. Run '...'
17
+ 3. See error
18
+
19
+ **Expected behavior**
20
+ A clear and concise description of what you expected to happen.
21
+
22
+ **Screenshots**
23
+ If applicable, add screenshots to help explain your problem.
24
+
25
+ **System configuration (please complete the following information):**
26
+ - OS: [e.g. Ubuntu]
27
+ - Package Version [e.g. 0.0.0]
28
+
29
+ **Additional context**
30
+ Add any other context about the problem here.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Documentation Improvement
3
+ about: Proposed changes to the documentation
4
+ title: "[Doc]"
5
+ labels: documentation
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ # Is anything incorrect?
11
+ Usually, when a change is proposed to the documentation it is because we forgot to update it, and documentation rot took hold.
12
+ Please let us know what you found to be incorrect, if applicable.
13
+
14
+ # Is anything missing?
15
+ Sometimes, you want an explanation for a particular piece of code, or an example for how to use something, that is simply not there.
16
+ Please let us know what you'd like to see, and we can try to write it!
17
+
18
+ # Can something be improved?
19
+ It isn't very often that someone takes the time to help us improve our documentation when something is there and presented correctly, but could be better.
20
+ Thank you for taking the time to let us know! Please give us a suggestion for what we could improve next, or even better, open a pull request with your changes! We'd love for you to help out with either of these methods.
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: "[Feature]"
5
+ labels: enhancement
6
+ assignees: ''
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 things to look like.
15
+
16
+ **Describe proposed solutions you've considered**
17
+ A clear and concise description of proposed solutions you considered.
18
+ If you can argue for and against them so we can pick the best one, please do.
19
+
20
+ **Additional context**
21
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,26 @@
1
+ # Description
2
+ Describe the purpose of this pull request.
3
+ What is the problem that we're trying to fix, and what is the solution about.
4
+
5
+ For example:
6
+ > There is a bug where deserializing a Calculation creates a new entity separate from the original serialized object. This pull request fixes that.
7
+
8
+ If this discussion already appears on an issue that this pull request is meant to solve, that's even better! In that case, a short sentence such as the following suffices:
9
+ > This pull request solves issue #5 as decided in that discussion. See the discussion therein.
10
+
11
+ # Tests
12
+ Please describe tests that you added or changed to ensure that things behave correctly. This will ensure that we don't regress on this issue in the future.
13
+
14
+ For example:
15
+ > I added a test called `test_serialize_deserialize` that takes a specific `Calculation`, serializes and deserializes it with `pickle`, and ensures the result is the same object with an `is` assertion.
16
+
17
+ # Additional information
18
+ If there is some important detail about your changes that you think the reviewer should know about, please list it here.
19
+
20
+ # Checklist before your pull request is ready
21
+ - [ ] I tested the code locally, and it passes without new warnings that weren't there before
22
+ - [ ] I reviewed my own code
23
+ - [ ] My new code is documented and the documentation to code that I changed code is still applicable
24
+ - [ ] Any changes I made to public API that may break downstream packages was accepted by the community in the discussion in the Issue Tracker
25
+
26
+ Please do these things yourself before you post this pull request to save you and others some time.
@@ -0,0 +1,57 @@
1
+ name: Build and Deploy Sphinx Docs
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+ pages: write
12
+ id-token: write
13
+
14
+ jobs:
15
+ build-docs:
16
+ runs-on: ubuntu-latest
17
+
18
+ steps:
19
+ - name: Checkout repository
20
+ uses: actions/checkout@v4
21
+
22
+ - name: Setup micromamba
23
+ uses: mamba-org/setup-micromamba@v2.0.6
24
+ with:
25
+ environment-file: docs/requirements.yml
26
+ environment-name: stream-${{ github.run_id }}-${{ github.run_attempt }}
27
+ post-cleanup: 'all'
28
+
29
+ - name: Install local
30
+ run: |
31
+ pip install -e .
32
+ shell: micromamba-shell {0}
33
+
34
+ - name: Build Sphinx documentation
35
+ run: |
36
+ cd docs
37
+ make html
38
+ cd ../
39
+ shell: micromamba-shell {0}
40
+
41
+ - name: Upload Pages artifact
42
+ uses: actions/upload-pages-artifact@v3
43
+ with:
44
+ path: docs/build/html
45
+
46
+ deploy:
47
+ needs: build-docs
48
+ runs-on: ubuntu-latest
49
+ environment:
50
+ name: github-pages
51
+ url: ${{ steps.deployment.outputs.page_url }}
52
+
53
+ steps:
54
+ - name: Deploy to GitHub Pages
55
+ id: deployment
56
+ uses: actions/deploy-pages@v4
57
+
@@ -0,0 +1,42 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
3
+
4
+ name: Python package
5
+
6
+ on:
7
+ push:
8
+ branches: [ "main" ]
9
+ pull_request:
10
+ branches: [ "dev" ]
11
+
12
+ jobs:
13
+ lint:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - name: Ruff check
18
+ uses: astral-sh/ruff-action@v3
19
+
20
+ build:
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+ - name: setup-micromamba
25
+ uses: mamba-org/setup-micromamba@v2.0.6
26
+ with:
27
+ environment-file: allreq.yml
28
+ environment-name: stream-${{ github.run_id }}-${{ github.run_attempt }}
29
+ post-cleanup: 'all'
30
+ - name: Install local
31
+ run: |
32
+ pip install .
33
+ shell: micromamba-shell {0}
34
+ - name: Test doctests
35
+ run: |
36
+ pytest -v --doctest-modules stream
37
+ shell: micromamba-shell {0}
38
+ - name: Test with pytest
39
+ run: |
40
+ cd tests
41
+ pytest -v -m "not graphs"
42
+ shell: micromamba-shell {0}
@@ -0,0 +1,20 @@
1
+ .cache
2
+ .idea
3
+ __pycache__
4
+ *.pyc
5
+ .ipynb_checkpoints
6
+ .hypothesis
7
+ *.egg-info
8
+ /docs/build/
9
+ build
10
+ /.pytest_cache/
11
+ *.swp
12
+ *regression*
13
+ CLAUDE.md
14
+ .vscode/
15
+ dist/
16
+ .coverage
17
+ coverage.xml
18
+ htmlcov/
19
+ .env
20
+ *.log
@@ -0,0 +1,109 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of any personal characteristics or identity.
7
+ We pledge to treat everyone with civility, to act and interact in ways that contribute to an open,
8
+ welcoming and healthy community.
9
+
10
+ ## Our Standards
11
+
12
+ Examples of behavior that contributes to a positive environment for our
13
+ community include:
14
+
15
+ * Demonstrating empathy and kindness toward other people
16
+ * Being respectful of differing opinions, viewpoints, and experiences
17
+ * Giving and gracefully accepting constructive feedback
18
+ * Accepting responsibility and apologizing to those affected by our mistakes,
19
+ and learning from the experience
20
+ * Focusing on what is best not just for us as individuals, but for the
21
+ overall community
22
+
23
+ Examples of unacceptable behavior include:
24
+
25
+ * The use of sexualized language or imagery, and sexual attention or
26
+ advances of any kind
27
+ * Trolling, insulting or derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or email
30
+ address, without their explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Enforcement Responsibilities
35
+
36
+ Community leaders are responsible for clarifying and enforcing our standards of
37
+ acceptable behavior and will take appropriate and fair corrective action in
38
+ response to any behavior that they deem inappropriate, threatening, offensive,
39
+ or harmful.
40
+
41
+ Community leaders have the right and responsibility to remove, edit, or reject
42
+ comments, commits, code, wiki edits, issues, and other contributions that are
43
+ not aligned to this Code of Conduct, and will communicate reasons for moderation
44
+ decisions when appropriate.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies within all community spaces, and also applies when
49
+ an individual is officially representing the community in public spaces.
50
+ Examples of representing our community include using an official e-mail address,
51
+ or acting as an appointed representative at an online or offline event.
52
+
53
+ ## Enforcement
54
+
55
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
56
+ reported to the community leaders responsible for enforcement at
57
+ nuclear.ramp.dev@gmail.com.
58
+ All complaints will be reviewed and investigated promptly and fairly.
59
+
60
+ All community leaders are obligated to respect the privacy and security of the
61
+ reporter of any incident.
62
+
63
+ ## Enforcement Guidelines
64
+
65
+ Community leaders should consult these enforcement methods for any action they
66
+ deem in violation of this Code of Conduct:
67
+
68
+ ### 1. Correction
69
+ A private, written warning from community leaders, providing
70
+ clarity around the nature of the violation and an explanation of why the
71
+ behavior was inappropriate. A public apology may be requested.
72
+
73
+ ### 2. Warning
74
+ A privately written warning with explicit consequences for continued behavior.
75
+ The warning should include the information as in a Correction, but also include
76
+ a demand that the offending party will avoid interaction with the affected party
77
+ for a specified period of time. This includes interaction in community events,
78
+ on this project or outside these spaces such as on social media.
79
+ Violating these terms may lead to a temporary or permanent ban.
80
+
81
+ ### 3. Temporary Ban
82
+ A temporary ban from any sort of interaction or public
83
+ communication with the community for a specified period of time. No public or
84
+ private interaction with the people involved, including unsolicited interaction
85
+ with those enforcing the Code of Conduct, is allowed during this period.
86
+ Violating these terms may lead to a permanent ban.
87
+ This step should only be taken if a warning was previously given to the
88
+ offending party or for more serious violations that require a public and immediate
89
+ action.
90
+
91
+ ### 4. Permanent Ban
92
+ A permanent ban from any sort of public interaction within the community.
93
+ A permanent ban should only result from continued violations or a pattern
94
+ of behavior that is incompatible with this Code of Conduct.
95
+
96
+ ## Attribution
97
+
98
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
99
+ version 2.0, available at
100
+ https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
101
+
102
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct
103
+ enforcement ladder](https://github.com/mozilla/diversity).
104
+
105
+ [homepage]: https://www.contributor-covenant.org
106
+
107
+ For answers to common questions about this code of conduct, see the FAQ at
108
+ https://www.contributor-covenant.org/faq. Translations are available at
109
+ https://www.contributor-covenant.org/translations.
@@ -0,0 +1,47 @@
1
+ # Contributing
2
+
3
+ Thank you for considering a contribution to our project.
4
+ We welcome new members to the community and this guide is meant to help you make your
5
+ first steps with our community.
6
+
7
+ ## Code of Conduct
8
+
9
+ Participants in the this project are expected to follow and uphold the [Code
10
+ of Conduct](CODE_OF_CONDUCT.md).
11
+ Please report any unacceptable behavior to the email described therein.
12
+
13
+ ## How to report bugs
14
+ We have a template for bugs in our issue tracker.
15
+ All bugs are tracked through the issue tracker, so please use that!
16
+
17
+ ## How to ask for improvements or new features
18
+
19
+ We welcome constant improvement, and we have a template for new features in our issues tracker.
20
+ You should notice that our team is small, and it may take some time for us to deal with any
21
+ specific request, or we may find that the request creates too heavy a burden for us to maintain.
22
+ If you are interested in contributing yourself, please say so in your issue. It is much easier
23
+ for us to accept new features when the community is willing to work alongside the core team on them.
24
+
25
+ ## How to submit changes
26
+
27
+ All changes to the `dev` and `main` branches happen through pull requests.
28
+ Feature branches should target the `dev` branch for their pull request, where the code will be reviewed
29
+ and any appropriate checks will run.
30
+ The code will be reviewed by the community, and such a review should ensure that the committed code is
31
+ correct as well as that its quality meets our standards.
32
+ The reviewers may ask you for some changes before they are willing to merge your changes in, or they
33
+ may change some things themselves in a collaborative effort. Please remember that while your contribution
34
+ is welcome, it is always part of a group effort, and the group has the right to edit or even reject parts
35
+ of your contribution to meet the community's needs.
36
+ Such changes, suggestions and requests should always follow the Code of Conduct, as well as your own
37
+ contribution. Please report any unacceptable behavior during the review process if you encounter it.
38
+
39
+ ## Code Style
40
+
41
+ We currently don't have a written-down style guide, and we should get around to it.
42
+ This may cause some friction, since style is a matter of preference, but if both you and your reviewers
43
+ apply a positive mindset that we're all trying to get the project to be at its best, we will likely
44
+ find a suitable solution.
45
+
46
+ If you find that much of your time is taken on discussions about a style guide that isn't there,
47
+ please let us know and we'll make this a higher priority.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Aviv Barnea
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,72 @@
1
+ Metadata-Version: 2.4
2
+ Name: ramp-stream
3
+ Version: 1.1.2
4
+ Summary: System-level Thermohydraulics Code for reactor analysis using modular DAE coupling of components
5
+ Author-email: Nuclear RAMP team <nuclear.ramp.dev@gmail.com>
6
+ License-Expression: MIT
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: Intended Audience :: End Users/Desktop
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: Natural Language :: English
12
+ Classifier: Topic :: Scientific/Engineering
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Requires-Python: >=3.11
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Requires-Dist: cachetools
22
+ Requires-Dist: cytoolz
23
+ Requires-Dist: ipython
24
+ Requires-Dist: matplotlib
25
+ Requires-Dist: more-itertools
26
+ Requires-Dist: networkx
27
+ Requires-Dist: numba
28
+ Requires-Dist: numpy
29
+ Requires-Dist: pandas
30
+ Requires-Dist: rich
31
+ Requires-Dist: scikits.odes
32
+ Requires-Dist: scipy
33
+ Requires-Dist: dask
34
+ Requires-Dist: pyyaml
35
+ Provides-Extra: test
36
+ Requires-Dist: cloudpickle; extra == "test"
37
+ Requires-Dist: hypothesis; extra == "test"
38
+ Requires-Dist: pytest; extra == "test"
39
+ Requires-Dist: pytest-regressions; extra == "test"
40
+ Requires-Dist: graphviz; extra == "test"
41
+ Dynamic: license-file
42
+
43
+ # **S**ystem **T**hermohydraulics for **R**eactor **E**valuation, **A**nalysis & **M**odeling
44
+
45
+ In a sentence: ***STREAM is a versatile, easily extensible, modern nuclear reactor system code***.
46
+
47
+ A `System Code` is a tool enabling the simulation of nuclear reactor heat evacuation during normal operation and postulated accidents,
48
+ which is done approximately without employing very expensive higher fidelity tools as CFD (computational fluid dynamics) codes and neutron transport.
49
+
50
+ In a few more words, STREAM is:
51
+ #### 1. A general purpose graph-based solver for large systems of coupled differential and algebraic equations:
52
+ ```math
53
+ M\frac{d\vec{y}}{dt} = \vec{F}(\vec{y}, t)
54
+ ```
55
+ This equation is described by designating subsections as separate (coupled but independent) calculations.
56
+ Those calucaltions are viewed as nodes in a directed graph whose edges are the coupled variables.
57
+
58
+ #### 2. A library of thermal-hydraulic components and correlations
59
+ STREAM supports the following capabilities:
60
+
61
+ * Single phase, one dimensional coolant channels.
62
+ * Point Neutronics and decay heat computation.
63
+ * Reactor Protection System events and triggers.
64
+ * Support for a general incompressible flow graph through Kirchhoff's Laws:
65
+ ```math
66
+ \sum_{\text{loop}}\Delta p = 0; \sum_{\text{junction}}\dot{m}=0
67
+ ```
68
+ * Cartesian and cylindrical heat structures with 2D heat diffusion.
69
+ * Subcooled Boiling heat transfer support.
70
+ * Flow regime support (**turbulent, laminar, and free convection**)
71
+ * Many other thermohydraulic components: Ideal pump, heat exchanger, friction and local regime dependent pressure drops, flapper
72
+ * Uncertainty Quantification through Uncertainty Propagation (which can be computed in a distributed fashion through DASK)
@@ -0,0 +1,30 @@
1
+ # **S**ystem **T**hermohydraulics for **R**eactor **E**valuation, **A**nalysis & **M**odeling
2
+
3
+ In a sentence: ***STREAM is a versatile, easily extensible, modern nuclear reactor system code***.
4
+
5
+ A `System Code` is a tool enabling the simulation of nuclear reactor heat evacuation during normal operation and postulated accidents,
6
+ which is done approximately without employing very expensive higher fidelity tools as CFD (computational fluid dynamics) codes and neutron transport.
7
+
8
+ In a few more words, STREAM is:
9
+ #### 1. A general purpose graph-based solver for large systems of coupled differential and algebraic equations:
10
+ ```math
11
+ M\frac{d\vec{y}}{dt} = \vec{F}(\vec{y}, t)
12
+ ```
13
+ This equation is described by designating subsections as separate (coupled but independent) calculations.
14
+ Those calucaltions are viewed as nodes in a directed graph whose edges are the coupled variables.
15
+
16
+ #### 2. A library of thermal-hydraulic components and correlations
17
+ STREAM supports the following capabilities:
18
+
19
+ * Single phase, one dimensional coolant channels.
20
+ * Point Neutronics and decay heat computation.
21
+ * Reactor Protection System events and triggers.
22
+ * Support for a general incompressible flow graph through Kirchhoff's Laws:
23
+ ```math
24
+ \sum_{\text{loop}}\Delta p = 0; \sum_{\text{junction}}\dot{m}=0
25
+ ```
26
+ * Cartesian and cylindrical heat structures with 2D heat diffusion.
27
+ * Subcooled Boiling heat transfer support.
28
+ * Flow regime support (**turbulent, laminar, and free convection**)
29
+ * Many other thermohydraulic components: Ideal pump, heat exchanger, friction and local regime dependent pressure drops, flapper
30
+ * Uncertainty Quantification through Uncertainty Propagation (which can be computed in a distributed fashion through DASK)
@@ -0,0 +1,22 @@
1
+ dependencies:
2
+ - cachetools
3
+ - cytoolz
4
+ - ipython
5
+ - matplotlib
6
+ - more-itertools
7
+ - networkx
8
+ - numba
9
+ - numpy
10
+ - pandas
11
+ - python
12
+ - rich
13
+ - scikits.odes
14
+ - scipy
15
+ - sundials
16
+ - dask
17
+ - yaml
18
+ - pytest
19
+ - hypothesis
20
+ - cloudpickle
21
+ - pytest-regressions
22
+ - python-graphviz
@@ -0,0 +1 @@
1
+ source/_static/mathjax
@@ -0,0 +1,27 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = source
9
+ BUILDDIR = build
10
+ MATHJAX = lib/mathjax
11
+
12
+ # Put it first so that "make" without argument is like "make help".
13
+ help:
14
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
15
+
16
+ .PHONY: help Makefile clean
17
+
18
+ clean:
19
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
20
+ @echo "Removing mathjax static library..."
21
+ @rm -fr $(SOURCEDIR)/_static/mathjax
22
+
23
+ # Catch-all target: route all unknown targets to Sphinx using the new
24
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
25
+ %: Makefile
26
+ @cp -r $(CONDA_PREFIX)/$(MATHJAX) $(SOURCEDIR)/_static/
27
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,35 @@
1
+ @ECHO OFF
2
+
3
+ pushd %~dp0
4
+
5
+ REM Command file for Sphinx documentation
6
+
7
+ if "%SPHINXBUILD%" == "" (
8
+ set SPHINXBUILD=sphinx-build
9
+ )
10
+ set SOURCEDIR=source
11
+ set BUILDDIR=build
12
+
13
+ if "%1" == "" goto help
14
+
15
+ %SPHINXBUILD% >NUL 2>NUL
16
+ if errorlevel 9009 (
17
+ echo.
18
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
19
+ echo.installed, then set the SPHINXBUILD environment variable to point
20
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
21
+ echo.may add the Sphinx directory to PATH.
22
+ echo.
23
+ echo.If you don't have Sphinx installed, grab it from
24
+ echo.http://sphinx-doc.org/
25
+ exit /b 1
26
+ )
27
+
28
+ %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29
+ goto end
30
+
31
+ :help
32
+ %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33
+
34
+ :end
35
+ popd
@@ -0,0 +1,27 @@
1
+ dependencies:
2
+ - cachetools
3
+ - cytoolz
4
+ - graphviz
5
+ - ipython
6
+ - matplotlib
7
+ - more-itertools
8
+ - numba
9
+ - numpy
10
+ - pandas
11
+ - python
12
+ - rich
13
+ - scikits.odes
14
+ - scipy
15
+ - sundials
16
+ - dask
17
+ - yaml
18
+ - jupyter
19
+ - mathjax
20
+ - matplotlib
21
+ - nbsphinx
22
+ - networkx
23
+ - numpydoc
24
+ - sphinx
25
+ - sphinx_rtd_theme
26
+ - hypothesis
27
+ - pytest
@@ -0,0 +1,17 @@
1
+ Contributing
2
+ ============
3
+ **Your contribution is welcome!**
4
+ The best way to contribute is through the Issues section on our page.
5
+ Otherwise, there are several places throughout the code where :ref:`TODOS` are still present,
6
+ which may be easier to tackle, presented below. If you feel this is a bit much, starting with
7
+ reading, proofing and improving the :ref:`Documentation` might be easier, and it will be much appreciated.
8
+
9
+ TODOS
10
+ -----
11
+ .. todolist::
12
+
13
+
14
+
15
+ Style Guide
16
+ -----------
17
+ We try to adhere to :pep:`8` as much as possible.